Loading README.md +1 −1 Original line number Diff line number Diff line Loading @@ -12,7 +12,7 @@ Current version: *1.0.10* * JSON Schema Draft v4 * Supports polymorphism (**@JsonTypeInfo**, **MixIn**, and **registerSubtypes()**) using JsonSchema's **oneOf**-feature. * Supports schema customization using: - **@JsonSchemaDescription** - **@JsonSchemaDescription**/**@JsonPropertyDescription** - **@JsonSchemaFormat** - **@JsonSchemaTitle** - **@JsonSchemaDefault** Loading src/main/java/com/kjetland/jackson/jsonSchema/annotations/JsonSchemaDescription.java +3 −0 Original line number Diff line number Diff line Loading @@ -6,6 +6,9 @@ import java.lang.annotation.Target; import static java.lang.annotation.ElementType.*; import static java.lang.annotation.RetentionPolicy.RUNTIME; /** * Same as com.fasterxml.jackson.annotation.JsonPropertyDescription */ @Target({ METHOD, FIELD, PARAMETER, TYPE }) @Retention(RUNTIME) public @interface JsonSchemaDescription { Loading src/main/scala/com/kjetland/jackson/jsonSchema/JsonSchemaGenerator.scala +12 −9 Original line number Diff line number Diff line Loading @@ -6,7 +6,7 @@ import java.util import java.util.Optional import javax.validation.constraints.{Max, Min, NotNull, Pattern, Size} import com.fasterxml.jackson.annotation.{JsonSubTypes, JsonTypeInfo} import com.fasterxml.jackson.annotation.{JsonPropertyDescription, JsonSubTypes, JsonTypeInfo} import com.fasterxml.jackson.core.JsonParser.NumberType import com.fasterxml.jackson.databind.jsonFormatVisitors._ import com.fasterxml.jackson.databind.ser.BeanPropertyWriter Loading Loading @@ -562,8 +562,10 @@ class JsonSchemaGenerator } // If class is annotated with JsonSchemaDescription, we should add it Option(ac.getAnnotations.get(classOf[JsonSchemaDescription])).map(_.value()).foreach { description => Option(ac.getAnnotations.get(classOf[JsonSchemaDescription])).map(_.value()) .orElse(Option(ac.getAnnotations.get(classOf[JsonPropertyDescription])).map(_.value)) .foreach { description: String => thisObjectNode.put("description", description) } Loading Loading @@ -710,10 +712,11 @@ class JsonSchemaGenerator // Optionally add description prop.flatMap { p: BeanProperty => Option(p.getAnnotation(classOf[JsonSchemaDescription])) Option(p.getAnnotation(classOf[JsonSchemaDescription])).map(_.value()) .orElse(Option(p.getAnnotation(classOf[JsonPropertyDescription])).map(_.value())) }.map { jsonSchemaDescription => thisPropertyNode.meta.put("description", jsonSchemaDescription.value()) description => thisPropertyNode.meta.put("description", description) } // Optionally add title Loading src/test/scala/com/kjetland/jackson/jsonSchema/JsonSchemaGeneratorTest.scala +1 −0 Original line number Diff line number Diff line Loading @@ -525,6 +525,7 @@ class JsonSchemaGeneratorTest extends FunSuite with Matchers { assert( schema.at("/properties/dateTime/type").asText() == "string") assert( schema.at("/properties/dateTime/format").asText() == "date-time") assert( schema.at("/properties/dateTime/description").asText() == "This is description from @JsonPropertyDescription") assert( schemaHTML5Date.at("/properties/dateTime/format").asText() == "datetime") Loading src/test/scala/com/kjetland/jackson/jsonSchema/testData/PojoUsingFormat.java +2 −0 Original line number Diff line number Diff line package com.kjetland.jackson.jsonSchema.testData; import com.fasterxml.jackson.annotation.JsonPropertyDescription; import com.kjetland.jackson.jsonSchema.annotations.JsonSchemaDescription; import com.kjetland.jackson.jsonSchema.annotations.JsonSchemaFormat; import com.kjetland.jackson.jsonSchema.annotations.JsonSchemaTitle; Loading @@ -19,6 +20,7 @@ public class PojoUsingFormat { @JsonSchemaFormat("checkbox") public Boolean choice; @JsonPropertyDescription("This is description from @JsonPropertyDescription") public OffsetDateTime dateTime; @JsonSchemaFormat("text") Loading Loading
README.md +1 −1 Original line number Diff line number Diff line Loading @@ -12,7 +12,7 @@ Current version: *1.0.10* * JSON Schema Draft v4 * Supports polymorphism (**@JsonTypeInfo**, **MixIn**, and **registerSubtypes()**) using JsonSchema's **oneOf**-feature. * Supports schema customization using: - **@JsonSchemaDescription** - **@JsonSchemaDescription**/**@JsonPropertyDescription** - **@JsonSchemaFormat** - **@JsonSchemaTitle** - **@JsonSchemaDefault** Loading
src/main/java/com/kjetland/jackson/jsonSchema/annotations/JsonSchemaDescription.java +3 −0 Original line number Diff line number Diff line Loading @@ -6,6 +6,9 @@ import java.lang.annotation.Target; import static java.lang.annotation.ElementType.*; import static java.lang.annotation.RetentionPolicy.RUNTIME; /** * Same as com.fasterxml.jackson.annotation.JsonPropertyDescription */ @Target({ METHOD, FIELD, PARAMETER, TYPE }) @Retention(RUNTIME) public @interface JsonSchemaDescription { Loading
src/main/scala/com/kjetland/jackson/jsonSchema/JsonSchemaGenerator.scala +12 −9 Original line number Diff line number Diff line Loading @@ -6,7 +6,7 @@ import java.util import java.util.Optional import javax.validation.constraints.{Max, Min, NotNull, Pattern, Size} import com.fasterxml.jackson.annotation.{JsonSubTypes, JsonTypeInfo} import com.fasterxml.jackson.annotation.{JsonPropertyDescription, JsonSubTypes, JsonTypeInfo} import com.fasterxml.jackson.core.JsonParser.NumberType import com.fasterxml.jackson.databind.jsonFormatVisitors._ import com.fasterxml.jackson.databind.ser.BeanPropertyWriter Loading Loading @@ -562,8 +562,10 @@ class JsonSchemaGenerator } // If class is annotated with JsonSchemaDescription, we should add it Option(ac.getAnnotations.get(classOf[JsonSchemaDescription])).map(_.value()).foreach { description => Option(ac.getAnnotations.get(classOf[JsonSchemaDescription])).map(_.value()) .orElse(Option(ac.getAnnotations.get(classOf[JsonPropertyDescription])).map(_.value)) .foreach { description: String => thisObjectNode.put("description", description) } Loading Loading @@ -710,10 +712,11 @@ class JsonSchemaGenerator // Optionally add description prop.flatMap { p: BeanProperty => Option(p.getAnnotation(classOf[JsonSchemaDescription])) Option(p.getAnnotation(classOf[JsonSchemaDescription])).map(_.value()) .orElse(Option(p.getAnnotation(classOf[JsonPropertyDescription])).map(_.value())) }.map { jsonSchemaDescription => thisPropertyNode.meta.put("description", jsonSchemaDescription.value()) description => thisPropertyNode.meta.put("description", description) } // Optionally add title Loading
src/test/scala/com/kjetland/jackson/jsonSchema/JsonSchemaGeneratorTest.scala +1 −0 Original line number Diff line number Diff line Loading @@ -525,6 +525,7 @@ class JsonSchemaGeneratorTest extends FunSuite with Matchers { assert( schema.at("/properties/dateTime/type").asText() == "string") assert( schema.at("/properties/dateTime/format").asText() == "date-time") assert( schema.at("/properties/dateTime/description").asText() == "This is description from @JsonPropertyDescription") assert( schemaHTML5Date.at("/properties/dateTime/format").asText() == "datetime") Loading
src/test/scala/com/kjetland/jackson/jsonSchema/testData/PojoUsingFormat.java +2 −0 Original line number Diff line number Diff line package com.kjetland.jackson.jsonSchema.testData; import com.fasterxml.jackson.annotation.JsonPropertyDescription; import com.kjetland.jackson.jsonSchema.annotations.JsonSchemaDescription; import com.kjetland.jackson.jsonSchema.annotations.JsonSchemaFormat; import com.kjetland.jackson.jsonSchema.annotations.JsonSchemaTitle; Loading @@ -19,6 +20,7 @@ public class PojoUsingFormat { @JsonSchemaFormat("checkbox") public Boolean choice; @JsonPropertyDescription("This is description from @JsonPropertyDescription") public OffsetDateTime dateTime; @JsonSchemaFormat("text") Loading