Loading src/main/scala/com/kjetland/jackson/jsonSchema/JsonSchemaGenerator.scala +22 −1 Original line number Diff line number Diff line Loading @@ -744,7 +744,7 @@ class JsonSchemaGenerator } def generateJsonSchema[T <: Any](clazz: Class[T]): JsonNode = { def generateJsonSchema[T <: Any](clazz: Class[T], title:Option[String] = None, description:Option[String] = None): JsonNode = { val rootNode = JsonNodeFactory.instance.objectNode() Loading @@ -752,6 +752,27 @@ class JsonSchemaGenerator rootNode.put("$schema", JsonSchemaGenerator.JSON_SCHEMA_DRAFT_4_URL) //rootNode.put("id", "http://my.site/myschema#") // Add schema title title.orElse { Some(generateTitleFromPropertyName(clazz.getSimpleName)) }.flatMap { title => // Skip it if specified to empty string if ( title.isEmpty) None else Some(title) }.map { title => rootNode.put("title", title) // If root class is annotated with @JsonSchemaTitle, it will later override this title } // Maybe set schema description description.map { d => rootNode.put("description", d) // If root class is annotated with @JsonSchemaDescription, it will later override this description } val definitionsHandler = new DefinitionsHandler val rootVisitor = new MyJsonFormatVisitorWrapper(rootObjectMapper, node = rootNode, definitionsHandler = definitionsHandler, currentProperty = None) rootObjectMapper.acceptJsonFormatVisitor(clazz, rootVisitor) Loading src/test/scala/com/kjetland/jackson/jsonSchema/JsonSchemaGeneratorTest.scala +1 −1 Original line number Diff line number Diff line Loading @@ -388,7 +388,7 @@ class JsonSchemaGeneratorTest extends FunSuite with Matchers { val jsonNode = assertToFromJson(jsonSchemaGenerator, testData.pojoWithCustomSerializer) val schema = generateAndValidateSchema(jsonSchemaGenerator, testData.pojoWithCustomSerializer.getClass, Some(jsonNode)) assert( schema.asInstanceOf[ObjectNode].fieldNames().toList == List("$schema")) // Empyt schema due to custom serializer assert( schema.asInstanceOf[ObjectNode].fieldNames().toList == List("$schema", "title")) // Emptyt schema due to custom serializer } test("object with property using custom serializer not overriding JsonSerializer.acceptJsonFormatVisitor") { Loading Loading
src/main/scala/com/kjetland/jackson/jsonSchema/JsonSchemaGenerator.scala +22 −1 Original line number Diff line number Diff line Loading @@ -744,7 +744,7 @@ class JsonSchemaGenerator } def generateJsonSchema[T <: Any](clazz: Class[T]): JsonNode = { def generateJsonSchema[T <: Any](clazz: Class[T], title:Option[String] = None, description:Option[String] = None): JsonNode = { val rootNode = JsonNodeFactory.instance.objectNode() Loading @@ -752,6 +752,27 @@ class JsonSchemaGenerator rootNode.put("$schema", JsonSchemaGenerator.JSON_SCHEMA_DRAFT_4_URL) //rootNode.put("id", "http://my.site/myschema#") // Add schema title title.orElse { Some(generateTitleFromPropertyName(clazz.getSimpleName)) }.flatMap { title => // Skip it if specified to empty string if ( title.isEmpty) None else Some(title) }.map { title => rootNode.put("title", title) // If root class is annotated with @JsonSchemaTitle, it will later override this title } // Maybe set schema description description.map { d => rootNode.put("description", d) // If root class is annotated with @JsonSchemaDescription, it will later override this description } val definitionsHandler = new DefinitionsHandler val rootVisitor = new MyJsonFormatVisitorWrapper(rootObjectMapper, node = rootNode, definitionsHandler = definitionsHandler, currentProperty = None) rootObjectMapper.acceptJsonFormatVisitor(clazz, rootVisitor) Loading
src/test/scala/com/kjetland/jackson/jsonSchema/JsonSchemaGeneratorTest.scala +1 −1 Original line number Diff line number Diff line Loading @@ -388,7 +388,7 @@ class JsonSchemaGeneratorTest extends FunSuite with Matchers { val jsonNode = assertToFromJson(jsonSchemaGenerator, testData.pojoWithCustomSerializer) val schema = generateAndValidateSchema(jsonSchemaGenerator, testData.pojoWithCustomSerializer.getClass, Some(jsonNode)) assert( schema.asInstanceOf[ObjectNode].fieldNames().toList == List("$schema")) // Empyt schema due to custom serializer assert( schema.asInstanceOf[ObjectNode].fieldNames().toList == List("$schema", "title")) // Emptyt schema due to custom serializer } test("object with property using custom serializer not overriding JsonSerializer.acceptJsonFormatVisitor") { Loading