Skip to content

Commit 070ab62

Browse files
committed
Merge pull request #19 from rpdai/master
Support enriching schema objects with property-specific information of a bean
2 parents 2f5c6b7 + f7dc308 commit 070ab62

File tree

3 files changed

+24
-2
lines changed

3 files changed

+24
-2
lines changed

src/main/java/com/fasterxml/jackson/module/jsonSchema/JsonSchema.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import com.fasterxml.jackson.annotation.JsonTypeInfo;
1010
import com.fasterxml.jackson.annotation.JsonTypeInfo.As;
1111
import com.fasterxml.jackson.annotation.JsonTypeInfo.Id;
12+
import com.fasterxml.jackson.databind.BeanProperty;
1213
import com.fasterxml.jackson.databind.JavaType;
1314
import com.fasterxml.jackson.databind.annotation.JsonTypeIdResolver;
1415
import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatTypes;
@@ -461,6 +462,15 @@ public void setRequired(Boolean required) {
461462
this.required = required;
462463
}
463464

465+
/**
466+
* Override this to add information specific to the property of bean
467+
* For example, bean validation annotations could be used to specify
468+
* value constraints in the schema
469+
* @param beanProperty
470+
*/
471+
public void enrichWithBeanProperty(BeanProperty beanProperty) {
472+
}
473+
464474
/**
465475
* Create a schema which verifies only that an object is of the given format.
466476
* @param format the format to expect

src/main/java/com/fasterxml/jackson/module/jsonSchema/factories/ObjectVisitor.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ public void setWrapperFactory(WrapperFactory wrapperFactory) {
5757

5858
@Override
5959
public void optionalProperty(BeanProperty prop) throws JsonMappingException {
60-
schema.putOptionalProperty(prop.getName(), propertySchema(prop));
60+
schema.putOptionalProperty(prop, propertySchema(prop));
6161
}
6262

6363
@Override
@@ -68,7 +68,7 @@ public void optionalProperty(String name, JsonFormatVisitable handler, JavaType
6868

6969
@Override
7070
public void property(BeanProperty prop) throws JsonMappingException {
71-
schema.putProperty(prop.getName(), propertySchema(prop));
71+
schema.putProperty(prop, propertySchema(prop));
7272
}
7373

7474
@Override

src/main/java/com/fasterxml/jackson/module/jsonSchema/types/ObjectSchema.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import com.fasterxml.jackson.annotation.JsonIgnore;
1010
import com.fasterxml.jackson.annotation.JsonProperty;
1111
import com.fasterxml.jackson.annotation.JsonValue;
12+
import com.fasterxml.jackson.databind.BeanProperty;
1213
import com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatTypes;
1314
import com.fasterxml.jackson.module.jsonSchema.JsonSchema;
1415

@@ -140,13 +141,24 @@ public boolean isObjectSchema() {
140141
return true;
141142
}
142143

144+
public void putOptionalProperty(BeanProperty property, JsonSchema jsonSchema) {
145+
jsonSchema.enrichWithBeanProperty(property);
146+
properties.put(property.getName(), jsonSchema);
147+
}
148+
143149
public void putOptionalProperty(String name, JsonSchema jsonSchema) {
144150
properties.put(name, jsonSchema);
145151
}
146152

147153
public JsonSchema putPatternProperty(String regex, JsonSchema value) {
148154
return patternProperties.put(regex, value);
149155
}
156+
157+
public JsonSchema putProperty(BeanProperty property, JsonSchema value) {
158+
value.setRequired(true);
159+
value.enrichWithBeanProperty(property);
160+
return properties.put(property.getName(), value);
161+
}
150162

151163
public JsonSchema putProperty(String name, JsonSchema value) {
152164
value.setRequired(true);

0 commit comments

Comments
 (0)