Commit e7c20d94 authored by mokj's avatar mokj
Browse files

Fixing enums

parent 21dd47ff
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -2,7 +2,7 @@
lazy val commonSettings = Seq(
  organization := "com.kjetland",
  organizationName := "mbknor",
  version := "1.0.0-build-3-SNAPSHOT",
  version := "1.0.0-build-5-SNAPSHOT",
  scalaVersion := "2.11.8",
  publishMavenStyle := true,
  publishArtifact in Test := false,
+11 −2
Original line number Diff line number Diff line
@@ -7,7 +7,7 @@ import com.fasterxml.jackson.core.JsonParser.NumberType
import com.fasterxml.jackson.databind.jsonFormatVisitors._
import com.fasterxml.jackson.databind.ser.BeanPropertyWriter
import com.fasterxml.jackson.databind._
import com.fasterxml.jackson.databind.node.{JsonNodeFactory, ObjectNode}
import com.fasterxml.jackson.databind.node.{ArrayNode, JsonNodeFactory, ObjectNode}
import org.slf4j.LoggerFactory

class JsonSchemaGenerator(rootObjectMapper: ObjectMapper) {
@@ -186,11 +186,20 @@ class JsonSchemaGenerator(rootObjectMapper: ObjectMapper) {
            enumValuesNode.add(subType.subTypeName)

            val enumObjectNode = JsonNodeFactory.instance.objectNode()
            enumObjectNode.put("type", "string")
            enumObjectNode.set("enum", enumValuesNode)
            enumObjectNode.put("default", subType.subTypeName)


            propertiesNode.set(subTypeSpecifierPropertyName, enumObjectNode)

            val requiredNode:ArrayNode = Option(propertiesNode.get("required")).map(_.asInstanceOf[ArrayNode]).getOrElse {
              val rn = JsonNodeFactory.instance.arrayNode()
              thisOneOfNode.set("required", rn)
              rn
            }

            requiredNode.add(subTypeSpecifierPropertyName)

        }

        null // Returning null to stop jackson from visiting this object since we have done it manually