Skip to content

Commit a39095a

Browse files
authored
Merge pull request #4 from ChetanBhasin/drop-null-values
Drop Null Values In Json Outputs To HTTP Requests
2 parents 3bfe499 + 40ca476 commit a39095a

File tree

6 files changed

+43
-43
lines changed

6 files changed

+43
-43
lines changed

openapi-http4s-lib/src/main/scala/com/enfore/apis/http4s/ErrorHandler.scala

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -50,28 +50,28 @@ class ErrorHandlerImplementation(convertThrowableToServiceExceptionFn: Throwable
5050
err match {
5151
case e: ServiceError =>
5252
logger.error("ServiceError", err)
53-
InternalServerError(e.asJson)
53+
InternalServerError(e.asJson.dropNullValues)
5454
case e: ItemAlreadyExists =>
5555
logger.info("ItemAlreadyExists", err)
56-
Conflict(e.asJson)
56+
Conflict(e.asJson.dropNullValues)
5757
case e: ServiceObjectLocked =>
5858
logger.info("ObjectLocked", err)
59-
Locked(e.asJson)
59+
Locked(e.asJson.dropNullValues)
6060
case e: ItemDoesNotExist =>
6161
logger.info("ItemDoesNotExist", err)
62-
NotFound(e.asJson)
62+
NotFound(e.asJson.dropNullValues)
6363
case e: RequestConflict =>
6464
logger.warn("RequestConflict", err)
65-
Conflict(e.asJson)
65+
Conflict(e.asJson.dropNullValues)
6666
case e: PermissionRequired =>
6767
logger.info("PermissionRequired", err)
68-
Forbidden(e.asJson)
68+
Forbidden(e.asJson.dropNullValues)
6969
case e: WrongRequestContent =>
7070
logger.info("WrongRequestContent", err)
71-
BadRequest(e.asJson)
71+
BadRequest(e.asJson.dropNullValues)
7272
case e: UnprocessableContent =>
7373
logger.info("UnprocessableContent", err)
74-
UnprocessableEntity(e.asJson)
74+
UnprocessableEntity(e.asJson.dropNullValues)
7575
}
7676

7777
}

openapi-scala/src/main/scala/com/enfore/apis/generator/ScalaGenerator.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ object ScalaGenerator {
196196
.map(_.typeName)
197197
.map(
198198
member =>
199-
s"""implicit def case${member} = at[$member](_.asJson.deepMerge(Json.obj("$discriminator" -> Json.fromString("$member"))))"""
199+
s"""implicit def case${member} = at[$member](_.asJson.dropNullValues.deepMerge(Json.obj("$discriminator" -> Json.fromString("$member"))))"""
200200
)
201201
.mkString(s"\n$margin")
202202

openapi-scala/src/main/scala/com/enfore/apis/generator/http4s/RouteGenerator.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -315,7 +315,7 @@ object RouteGenerator {
315315
if (response.isEmpty) {
316316
s"(_: ${firstResponseType(response)}) => EmptyGenerator($status)()"
317317
} else {
318-
s"(x: ${firstResponseType(response)}) => EntityGenerator($status)(x.asJson)"
318+
s"(x: ${firstResponseType(response)}) => EntityGenerator($status)(x.asJson.dropNullValues)"
319319
}
320320

321321
private def getResponseStatus(route: RouteDefinition): String =

openapi-scala/src/test/scala/com/enfore/apis/generator/ComponentsTypeReprSpec.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -425,8 +425,8 @@ class ComponentsTypeReprSpec extends AnyFlatSpec with Matchers {
425425
| type Union = IndividualCustomer :+: OrganizationCustomer :+: CNil
426426
|
427427
| object jsonConversions extends Poly1 {
428-
| implicit def caseIndividualCustomer = at[IndividualCustomer](_.asJson.deepMerge(Json.obj("@type" -> Json.fromString("IndividualCustomer"))))
429-
| implicit def caseOrganizationCustomer = at[OrganizationCustomer](_.asJson.deepMerge(Json.obj("@type" -> Json.fromString("OrganizationCustomer"))))
428+
| implicit def caseIndividualCustomer = at[IndividualCustomer](_.asJson.dropNullValues.deepMerge(Json.obj("@type" -> Json.fromString("IndividualCustomer"))))
429+
| implicit def caseOrganizationCustomer = at[OrganizationCustomer](_.asJson.dropNullValues.deepMerge(Json.obj("@type" -> Json.fromString("OrganizationCustomer"))))
430430
| }
431431
|
432432
| implicit val customEncoders: Encoder[Customer] = new Encoder[Customer] {

openapi-scala/src/test/scala/com/enfore/apis/generator/http4s/Http4sGeneratorSpec.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ class Http4sGeneratorSpec extends AnyFreeSpec with Matchers {
8989
|
9090
| HttpRoutes.of[F] {
9191
| case request @ GET -> Root / "contacts" / "individual" =>
92-
| errorHandler.resolve(impl.`dummyFunction`(request), (x: IndividualContact) => EntityGenerator(200)(x.asJson))
92+
| errorHandler.resolve(impl.`dummyFunction`(request), (x: IndividualContact) => EntityGenerator(200)(x.asJson.dropNullValues))
9393
| }
9494
| }
9595
|}

0 commit comments

Comments
 (0)