From 9e1de34acc6c87d531c0b71380aaffe785225ad2 Mon Sep 17 00:00:00 2001 From: Jan Oopkaup Date: Mon, 17 Sep 2018 11:48:10 +0200 Subject: [PATCH] Add JsonNode `parent` to rules. This is required in order to implement context-aware rules, e.g. such as gh-910. --- .../org/jsonschema2pojo/SchemaMapper.java | 8 +- .../rules/AdditionalPropertiesRule.java | 6 +- .../org/jsonschema2pojo/rules/ArrayRule.java | 6 +- .../jsonschema2pojo/rules/DefaultRule.java | 3 +- .../rules/DescriptionRule.java | 4 +- .../rules/DynamicPropertiesRule.java | 4 +- .../org/jsonschema2pojo/rules/EnumRule.java | 24 +++--- .../org/jsonschema2pojo/rules/FormatRule.java | 5 +- .../jsonschema2pojo/rules/JavaNameRule.java | 2 +- .../org/jsonschema2pojo/rules/MediaRule.java | 4 +- .../rules/MinItemsMaxItemsRule.java | 3 +- .../rules/MinLengthMaxLengthRule.java | 3 +- .../rules/MinimumMaximumRule.java | 3 +- .../rules/NotRequiredRule.java | 4 +- .../org/jsonschema2pojo/rules/ObjectRule.java | 16 ++-- .../jsonschema2pojo/rules/PatternRule.java | 3 +- .../jsonschema2pojo/rules/PropertiesRule.java | 4 +- .../jsonschema2pojo/rules/PropertyRule.java | 27 +++---- .../rules/RequiredArrayRule.java | 2 +- .../jsonschema2pojo/rules/RequiredRule.java | 4 +- .../java/org/jsonschema2pojo/rules/Rule.java | 4 +- .../org/jsonschema2pojo/rules/SchemaRule.java | 8 +- .../org/jsonschema2pojo/rules/TitleRule.java | 4 +- .../org/jsonschema2pojo/rules/TypeRule.java | 12 +-- .../org/jsonschema2pojo/rules/ValidRule.java | 3 +- .../org/jsonschema2pojo/SchemaMapperTest.java | 8 +- .../jsonschema2pojo/rules/ArrayRuleTest.java | 8 +- .../rules/DescriptionRuleTest.java | 2 +- .../jsonschema2pojo/rules/EnumRuleTest.java | 6 +- .../rules/FormatRuleJodaTest.java | 2 +- .../jsonschema2pojo/rules/FormatRuleTest.java | 9 ++- .../rules/RequiredArrayRuleTest.java | 4 +- .../rules/RequiredRuleTest.java | 4 +- .../jsonschema2pojo/rules/SchemaRuleTest.java | 12 +-- .../jsonschema2pojo/rules/TitleRuleTest.java | 2 +- .../jsonschema2pojo/rules/TypeRuleTest.java | 78 +++++++++---------- .../jsonschema2pojo/integration/FormatIT.java | 1 + .../config/CustomRuleFactoryIT.java | 4 +- .../integration/ref/FragmentRefIT.java | 6 +- .../util/Jsonschema2PojoRuleTest.java | 4 +- .../schema/format/formattedProperties.json | 2 +- 41 files changed, 177 insertions(+), 141 deletions(-) diff --git a/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/SchemaMapper.java b/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/SchemaMapper.java index f0603edcc..9aa9b1906 100644 --- a/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/SchemaMapper.java +++ b/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/SchemaMapper.java @@ -89,7 +89,7 @@ public JType generate(JCodeModel codeModel, String className, String packageName ObjectNode schemaNode = readSchema(schemaUrl); - return ruleFactory.getSchemaRule().apply(className, schemaNode, jpackage, new Schema(null, schemaNode, schemaNode)); + return ruleFactory.getSchemaRule().apply(className, schemaNode, null, jpackage, new Schema(null, schemaNode, schemaNode)); } @@ -117,7 +117,7 @@ public JType generate(JCodeModel codeModel, String className, String packageName JsonNode schemaNode = objectMapper().readTree(json); - return ruleFactory.getSchemaRule().apply(className, schemaNode, jpackage, + return ruleFactory.getSchemaRule().apply(className, schemaNode, null, jpackage, new Schema(schemaLocation, schemaNode, schemaNode)); } @@ -133,7 +133,7 @@ public JType generate(JCodeModel codeModel, String className, String packageName schemaNode = objectMapper().readTree(json); } - return ruleFactory.getSchemaRule().apply(className, schemaNode, jpackage, new Schema(null, schemaNode, schemaNode)); + return ruleFactory.getSchemaRule().apply(className, schemaNode, null, jpackage, new Schema(null, schemaNode, schemaNode)); } private ObjectMapper objectMapper() { @@ -142,4 +142,4 @@ private ObjectMapper objectMapper() { .enable(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS); } -} \ No newline at end of file +} diff --git a/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/AdditionalPropertiesRule.java b/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/AdditionalPropertiesRule.java index b66ea214c..3225252d0 100644 --- a/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/AdditionalPropertiesRule.java +++ b/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/AdditionalPropertiesRule.java @@ -81,7 +81,7 @@ protected AdditionalPropertiesRule(RuleFactory ruleFactory) { * @return the given Java type jclass */ @Override - public JDefinedClass apply(String nodeName, JsonNode node, JDefinedClass jclass, Schema schema) { + public JDefinedClass apply(String nodeName, JsonNode node, JsonNode parent, JDefinedClass jclass, Schema schema) { if (node != null && node.isBoolean() && node.asBoolean() == false) { // no additional properties allowed @@ -100,7 +100,7 @@ public JDefinedClass apply(String nodeName, JsonNode node, JDefinedClass jclass, JType propertyType; if (node != null && node.size() != 0) { - propertyType = ruleFactory.getSchemaRule().apply(nodeName + "Property", node, jclass, schema); + propertyType = ruleFactory.getSchemaRule().apply(nodeName + "Property", node, parent, jclass, schema); } else { propertyType = jclass.owner().ref(Object.class); } @@ -112,7 +112,7 @@ public JDefinedClass apply(String nodeName, JsonNode node, JDefinedClass jclass, addSetter(jclass, propertyType, field); if (ruleFactory.getGenerationConfig().isIncludeJsr303Annotations()) { - ruleFactory.getValidRule().apply(nodeName, node, field, schema); + ruleFactory.getValidRule().apply(nodeName, node, parent, field, schema); } if (ruleFactory.getGenerationConfig().isGenerateBuilders()) { diff --git a/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/ArrayRule.java b/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/ArrayRule.java index f55c006d2..e2990dbfb 100644 --- a/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/ArrayRule.java +++ b/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/ArrayRule.java @@ -65,20 +65,22 @@ protected ArrayRule(RuleFactory ruleFactory) { * the name of the property which has type "array" * @param node * the schema "type" node + * @param parent + * the parent node * @param jpackage * the package into which newly generated types should be added * @return the Java type associated with this array rule, either {@link Set} * or {@link List}, narrowed by the "items" type */ @Override - public JClass apply(String nodeName, JsonNode node, JPackage jpackage, Schema schema) { + public JClass apply(String nodeName, JsonNode node, JsonNode parent, JPackage jpackage, Schema schema) { boolean uniqueItems = node.has("uniqueItems") && node.get("uniqueItems").asBoolean(); boolean rootSchemaIsArray = !schema.isGenerated(); JType itemType; if (node.has("items")) { - itemType = ruleFactory.getSchemaRule().apply(makeSingular(nodeName), node.get("items"), jpackage, schema); + itemType = ruleFactory.getSchemaRule().apply(makeSingular(nodeName), node.get("items"), node, jpackage, schema); } else { itemType = jpackage.owner().ref(Object.class); } diff --git a/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/DefaultRule.java b/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/DefaultRule.java index 631fde00a..8364126b1 100644 --- a/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/DefaultRule.java +++ b/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/DefaultRule.java @@ -45,6 +45,7 @@ import com.sun.codemodel.JFieldVar; import com.sun.codemodel.JInvocation; import com.sun.codemodel.JType; +import scala.annotation.meta.field; /** * Applies the "default" schema rule. @@ -81,7 +82,7 @@ public DefaultRule(RuleFactory ruleFactory) { * @return field, which will have an init expression is appropriate */ @Override - public JFieldVar apply(String nodeName, JsonNode node, JFieldVar field, Schema currentSchema) { + public JFieldVar apply(String nodeName, JsonNode node, JsonNode parent, JFieldVar field, Schema currentSchema) { boolean defaultPresent = node != null && isNotEmpty(node.asText()); diff --git a/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/DescriptionRule.java b/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/DescriptionRule.java index 4298087c9..289822d49 100644 --- a/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/DescriptionRule.java +++ b/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/DescriptionRule.java @@ -42,13 +42,15 @@ protected DescriptionRule() { * the name of the object to which this description applies * @param node * the "description" schema node + * @param parent + * the parent node * @param generatableType * comment-able code generation construct, usually a java class, * which should have this description applied * @return the JavaDoc comment created to contain the description */ @Override - public JDocComment apply(String nodeName, JsonNode node, JDocCommentable generatableType, Schema schema) { + public JDocComment apply(String nodeName, JsonNode node, JsonNode parent, JDocCommentable generatableType, Schema schema) { JDocComment javadoc = generatableType.javadoc(); javadoc.append(node.asText()); diff --git a/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/DynamicPropertiesRule.java b/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/DynamicPropertiesRule.java index e3e500e7d..f3c7d8ca3 100644 --- a/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/DynamicPropertiesRule.java +++ b/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/DynamicPropertiesRule.java @@ -83,6 +83,8 @@ public DynamicPropertiesRule(RuleFactory ruleFactory) { * @param node * the properties node, containing property names and their * definition + * @param parent + * the parent node * @param jclass * the Java type which will have the given properties added * @param currentSchema @@ -90,7 +92,7 @@ public DynamicPropertiesRule(RuleFactory ruleFactory) { * @return the given jclass */ @Override - public JDefinedClass apply(String nodeName, JsonNode node, JDefinedClass jclass, Schema currentSchema) { + public JDefinedClass apply(String nodeName, JsonNode node, JsonNode parent, JDefinedClass jclass, Schema currentSchema) { if (!ruleFactory.getGenerationConfig().isIncludeDynamicAccessors() || (!ruleFactory.getGenerationConfig().isIncludeDynamicSetters() && !ruleFactory.getGenerationConfig().isIncludeDynamicGetters() && diff --git a/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/EnumRule.java b/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/EnumRule.java index df0a4b270..a5dcc9e10 100644 --- a/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/EnumRule.java +++ b/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/EnumRule.java @@ -88,6 +88,8 @@ protected EnumRule(RuleFactory ruleFactory) { * the name of the property which is an "enum" * @param node * the enum node + * @param parent + * the parent node * @param container * the class container (class or package) to which this enum * should be added @@ -95,7 +97,7 @@ protected EnumRule(RuleFactory ruleFactory) { * given enum */ @Override - public JType apply(String nodeName, JsonNode node, JClassContainer container, Schema schema) { + public JType apply(String nodeName, JsonNode node, JsonNode parent, JClassContainer container, Schema schema) { JDefinedClass _enum; try { @@ -117,22 +119,22 @@ public JType apply(String nodeName, JsonNode node, JClassContainer container, Sc // If type is specified on the enum, get a type rule for it. Otherwise, we're a string. // (This is different from the default of Object, which is why we don't do this for every case.) JType backingType = node.has("type") ? - ruleFactory.getTypeRule().apply(nodeName, typeNode, container, schema) : + ruleFactory.getTypeRule().apply(nodeName, typeNode, parent, container, schema) : container.owner().ref(String.class); - JFieldVar valueField = addValueField(_enum, backingType); + JFieldVar valueField = addValueField(_enum, backingType); - // override toString only if we have a sensible string to return - if(isString(backingType)){ - addToString(_enum, valueField); - } + // override toString only if we have a sensible string to return + if(isString(backingType)){ + addToString(_enum, valueField); + } - addValueMethod(_enum, valueField); + addValueMethod(_enum, valueField); - addEnumConstants(node.path("enum"), _enum, node.path("javaEnumNames"), backingType); - addFactoryMethod(_enum, backingType); + addEnumConstants(node.path("enum"), _enum, node.path("javaEnumNames"), backingType); + addFactoryMethod(_enum, backingType); - return _enum; + return _enum; } private JDefinedClass createEnum(JsonNode node, String nodeName, JClassContainer container) throws ClassAlreadyExistsException { diff --git a/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/FormatRule.java b/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/FormatRule.java index 338b0c8a9..a6db88b70 100644 --- a/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/FormatRule.java +++ b/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/FormatRule.java @@ -20,6 +20,7 @@ import static org.apache.commons.lang.StringUtils.*; import java.net.URI; +import java.net.URL; import java.util.Date; import java.util.UUID; import java.util.regex.Pattern; @@ -78,6 +79,8 @@ protected FormatRule(RuleFactory ruleFactory) { * the name of the node to which this format is applied * @param node * the format node + * @param parent + * the parent node * @param baseType * the type which which is being formatted e.g. for * { "type" : "string", "format" : "uri" } the @@ -85,7 +88,7 @@ protected FormatRule(RuleFactory ruleFactory) { * @return the Java type that is appropriate for the format value */ @Override - public JType apply(String nodeName, JsonNode node, JType baseType, Schema schema) { + public JType apply(String nodeName, JsonNode node, JsonNode parent, JType baseType, Schema schema) { if (node.asText().equals("date-time")) { return baseType.owner().ref(getDateTimeType()); diff --git a/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/JavaNameRule.java b/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/JavaNameRule.java index aa21d27a9..f254a26a9 100644 --- a/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/JavaNameRule.java +++ b/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/JavaNameRule.java @@ -25,7 +25,7 @@ public class JavaNameRule implements Rule { @Override - public JDocComment apply(String nodeName, JsonNode node, JDocCommentable generatableType, Schema currentSchema) { + public JDocComment apply(String nodeName, JsonNode node, JsonNode parent, JDocCommentable generatableType, Schema currentSchema) { JDocComment javaDoc = generatableType.javadoc(); javaDoc.append(String.format("%nCorresponds to the \"%s\" property.", nodeName)); diff --git a/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/MediaRule.java b/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/MediaRule.java index d6ae656bb..3516fd3cc 100644 --- a/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/MediaRule.java +++ b/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/MediaRule.java @@ -55,6 +55,8 @@ protected MediaRule() { * the name of the property. * @param mediaNode * the media node + * @param parent + * the parent node * @param baseType * the type with the media node. This must be java.lang.String. * @param schema @@ -63,7 +65,7 @@ protected MediaRule() { * @since 0.4.2 */ @Override - public JType apply(String nodeName, JsonNode mediaNode, JType baseType, Schema schema) { + public JType apply(String nodeName, JsonNode mediaNode, JsonNode parent, JType baseType, Schema schema) { if (!mediaNode.has(BINARY_ENCODING)) { return baseType; } diff --git a/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/MinItemsMaxItemsRule.java b/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/MinItemsMaxItemsRule.java index b9d7a0089..a297e72e9 100644 --- a/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/MinItemsMaxItemsRule.java +++ b/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/MinItemsMaxItemsRule.java @@ -22,6 +22,7 @@ import org.jsonschema2pojo.Schema; import com.sun.codemodel.JAnnotationUse; import com.sun.codemodel.JFieldVar; +import scala.annotation.meta.field; public class MinItemsMaxItemsRule implements Rule { @@ -32,7 +33,7 @@ protected MinItemsMaxItemsRule(RuleFactory ruleFactory) { } @Override - public JFieldVar apply(String nodeName, JsonNode node, JFieldVar field, Schema currentSchema) { + public JFieldVar apply(String nodeName, JsonNode node, JsonNode parent, JFieldVar field, Schema currentSchema) { if (ruleFactory.getGenerationConfig().isIncludeJsr303Annotations() && (node.has("minItems") || node.has("maxItems"))) { diff --git a/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/MinLengthMaxLengthRule.java b/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/MinLengthMaxLengthRule.java index 6385b5c4a..4de9176ec 100644 --- a/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/MinLengthMaxLengthRule.java +++ b/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/MinLengthMaxLengthRule.java @@ -22,6 +22,7 @@ import org.jsonschema2pojo.Schema; import com.sun.codemodel.JAnnotationUse; import com.sun.codemodel.JFieldVar; +import scala.annotation.meta.field; public class MinLengthMaxLengthRule implements Rule { @@ -32,7 +33,7 @@ protected MinLengthMaxLengthRule(RuleFactory ruleFactory) { } @Override - public JFieldVar apply(String nodeName, JsonNode node, JFieldVar field, Schema currentSchema) { + public JFieldVar apply(String nodeName, JsonNode node, JsonNode parent, JFieldVar field, Schema currentSchema) { if (ruleFactory.getGenerationConfig().isIncludeJsr303Annotations() && (node.has("minLength") || node.has("maxLength"))) { diff --git a/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/MinimumMaximumRule.java b/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/MinimumMaximumRule.java index e999c8bd3..a338dfa52 100644 --- a/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/MinimumMaximumRule.java +++ b/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/MinimumMaximumRule.java @@ -23,6 +23,7 @@ import org.jsonschema2pojo.Schema; import com.sun.codemodel.JAnnotationUse; import com.sun.codemodel.JFieldVar; +import scala.annotation.meta.field; public class MinimumMaximumRule implements Rule { @@ -33,7 +34,7 @@ protected MinimumMaximumRule(RuleFactory ruleFactory) { } @Override - public JFieldVar apply(String nodeName, JsonNode node, JFieldVar field, Schema currentSchema) { + public JFieldVar apply(String nodeName, JsonNode node, JsonNode parent, JFieldVar field, Schema currentSchema) { if (ruleFactory.getGenerationConfig().isIncludeJsr303Annotations()) { diff --git a/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/NotRequiredRule.java b/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/NotRequiredRule.java index 2b4334bab..6a9b3773d 100644 --- a/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/NotRequiredRule.java +++ b/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/NotRequiredRule.java @@ -56,6 +56,8 @@ protected NotRequiredRule(RuleFactory ruleFactory) { * @param node * the "not required" node, having a value false or * no value + * @param parent + * the parent node * @param generatableType * the class or method which may be marked as "not required" * @return the JavaDoc comment attached to the generatableType, which @@ -63,7 +65,7 @@ protected NotRequiredRule(RuleFactory ruleFactory) { * not required. */ @Override - public JDocCommentable apply(String nodeName, JsonNode node, JDocCommentable generatableType, Schema schema) { + public JDocCommentable apply(String nodeName, JsonNode node, JsonNode parent, JDocCommentable generatableType, Schema schema) { // Since NotRequiredRule is executed for all fields that do not have "required" present, // we need to recognize whether the field is part of the RequiredArrayRule. diff --git a/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/ObjectRule.java b/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/ObjectRule.java index 0ed1db4df..86488218e 100644 --- a/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/ObjectRule.java +++ b/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/ObjectRule.java @@ -89,7 +89,7 @@ protected ObjectRule(RuleFactory ruleFactory, ParcelableHelper parcelableHelper) * characteristics. See other implementers of {@link Rule} for details. */ @Override - public JType apply(String nodeName, JsonNode node, JPackage _package, Schema schema) { + public JType apply(String nodeName, JsonNode node, JsonNode parent, JPackage _package, Schema schema) { JType superType = getSuperType(nodeName, node, _package, schema); @@ -113,25 +113,25 @@ public JType apply(String nodeName, JsonNode node, JPackage _package, Schema sch } if (node.has("title")) { - ruleFactory.getTitleRule().apply(nodeName, node.get("title"), jclass, schema); + ruleFactory.getTitleRule().apply(nodeName, node.get("title"), node, jclass, schema); } if (node.has("description")) { - ruleFactory.getDescriptionRule().apply(nodeName, node.get("description"), jclass, schema); + ruleFactory.getDescriptionRule().apply(nodeName, node.get("description"), node, jclass, schema); } - ruleFactory.getPropertiesRule().apply(nodeName, node.get("properties"), jclass, schema); + ruleFactory.getPropertiesRule().apply(nodeName, node.get("properties"), node, jclass, schema); if (node.has("javaInterfaces")) { addInterfaces(jclass, node.get("javaInterfaces")); } - ruleFactory.getAdditionalPropertiesRule().apply(nodeName, node.get("additionalProperties"), jclass, schema); + ruleFactory.getAdditionalPropertiesRule().apply(nodeName, node.get("additionalProperties"), node, jclass, schema); - ruleFactory.getDynamicPropertiesRule().apply(nodeName, node.get("properties"), jclass, schema); + ruleFactory.getDynamicPropertiesRule().apply(nodeName, node.get("properties"), node, jclass, schema); if (node.has("required")) { - ruleFactory.getRequiredArrayRule().apply(nodeName, node.get("required"), jclass, schema); + ruleFactory.getRequiredArrayRule().apply(nodeName, node.get("required"), node, jclass, schema); } if (ruleFactory.getGenerationConfig().isIncludeToString()) { @@ -333,7 +333,7 @@ private JType getSuperType(String nodeName, JsonNode node, JPackage jPackage, Sc JType superType = jPackage.owner().ref(Object.class); Schema superTypeSchema = getSuperSchema(node, schema, false); if (superTypeSchema != null) { - superType = ruleFactory.getSchemaRule().apply(nodeName + "Parent", node.get("extends"), jPackage, superTypeSchema); + superType = ruleFactory.getSchemaRule().apply(nodeName + "Parent", node.get("extends"), node, jPackage, superTypeSchema); } else if (node.has("extendsJavaClass")) { superType = resolveType(jPackage, node.get("extendsJavaClass").asText()); } diff --git a/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/PatternRule.java b/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/PatternRule.java index eec156535..2bbd39f9a 100644 --- a/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/PatternRule.java +++ b/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/PatternRule.java @@ -22,6 +22,7 @@ import org.jsonschema2pojo.Schema; import com.sun.codemodel.JAnnotationUse; import com.sun.codemodel.JFieldVar; +import scala.annotation.meta.field; public class PatternRule implements Rule { @@ -32,7 +33,7 @@ public PatternRule(RuleFactory ruleFactory) { } @Override - public JFieldVar apply(String nodeName, JsonNode node, JFieldVar field, Schema currentSchema) { + public JFieldVar apply(String nodeName, JsonNode node, JsonNode parent, JFieldVar field, Schema currentSchema) { if (ruleFactory.getGenerationConfig().isIncludeJsr303Annotations()) { JAnnotationUse annotation = field.annotate(Pattern.class); diff --git a/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/PropertiesRule.java b/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/PropertiesRule.java index bec6b47a5..38f817ef2 100644 --- a/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/PropertiesRule.java +++ b/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/PropertiesRule.java @@ -59,7 +59,7 @@ protected PropertiesRule(RuleFactory ruleFactory) { * @return the given jclass */ @Override - public JDefinedClass apply(String nodeName, JsonNode node, JDefinedClass jclass, Schema schema) { + public JDefinedClass apply(String nodeName, JsonNode node, JsonNode parent, JDefinedClass jclass, Schema schema) { if (node == null) { node = JsonNodeFactory.instance.objectNode(); } @@ -67,7 +67,7 @@ public JDefinedClass apply(String nodeName, JsonNode node, JDefinedClass jclass, for (Iterator properties = node.fieldNames(); properties.hasNext(); ) { String property = properties.next(); - ruleFactory.getPropertyRule().apply(property, node.get(property), jclass, schema); + ruleFactory.getPropertyRule().apply(property, node.get(property), node, jclass, schema); } if (ruleFactory.getGenerationConfig().isGenerateBuilders() && !jclass._extends().name().equals("Object")) { diff --git a/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/PropertyRule.java b/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/PropertyRule.java index 33a3e8698..0e7b61ca6 100644 --- a/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/PropertyRule.java +++ b/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/PropertyRule.java @@ -53,14 +53,15 @@ protected PropertyRule(RuleFactory ruleFactory) { * * @param nodeName the name of the property to be applied * @param node the node describing the characteristics of this property + * @param parent the parent node * @param jclass the Java class which should have this property added * @return the given jclass */ @Override - public JDefinedClass apply(String nodeName, JsonNode node, JDefinedClass jclass, Schema schema) { + public JDefinedClass apply(String nodeName, JsonNode node, JsonNode parent, JDefinedClass jclass, Schema schema) { String propertyName = ruleFactory.getNameHelper().getPropertyName(nodeName, node); - JType propertyType = ruleFactory.getSchemaRule().apply(nodeName, node, jclass, schema); + JType propertyType = ruleFactory.getSchemaRule().apply(nodeName, node, parent, jclass, schema); boolean isIncludeGetters = ruleFactory.getGenerationConfig().isIncludeGetters(); boolean isIncludeSetters = ruleFactory.getGenerationConfig().isIncludeSetters(); @@ -93,19 +94,19 @@ public JDefinedClass apply(String nodeName, JsonNode node, JDefinedClass jclass, } if (node.has("pattern")) { - ruleFactory.getPatternRule().apply(nodeName, node.get("pattern"), field, schema); + ruleFactory.getPatternRule().apply(nodeName, node.get("pattern"), node, field, schema); } - ruleFactory.getDefaultRule().apply(nodeName, node.get("default"), field, schema); + ruleFactory.getDefaultRule().apply(nodeName, node.get("default"), node, field, schema); - ruleFactory.getMinimumMaximumRule().apply(nodeName, node, field, schema); + ruleFactory.getMinimumMaximumRule().apply(nodeName, node, parent, field, schema); - ruleFactory.getMinItemsMaxItemsRule().apply(nodeName, node, field, schema); + ruleFactory.getMinItemsMaxItemsRule().apply(nodeName, node, parent, field, schema); - ruleFactory.getMinLengthMaxLengthRule().apply(nodeName, node, field, schema); + ruleFactory.getMinLengthMaxLengthRule().apply(nodeName, node, parent, field, schema); if (isObject(node) || isArray(node)) { - ruleFactory.getValidRule().apply(nodeName, node, field, schema); + ruleFactory.getValidRule().apply(nodeName, node, parent, field, schema); } return jclass; @@ -149,21 +150,21 @@ private boolean useOptional(String nodeName, JsonNode node, Schema schema) { private void propertyAnnotations(String nodeName, JsonNode node, Schema schema, JDocCommentable generatedJavaConstruct) { if (node.has("title")) { - ruleFactory.getTitleRule().apply(nodeName, node.get("title"), generatedJavaConstruct, schema); + ruleFactory.getTitleRule().apply(nodeName, node.get("title"), node, generatedJavaConstruct, schema); } if (node.has("javaName")) { - ruleFactory.getJavaNameRule().apply(nodeName, node.get("javaName"), generatedJavaConstruct, schema); + ruleFactory.getJavaNameRule().apply(nodeName, node.get("javaName"), node, generatedJavaConstruct, schema); } if (node.has("description")) { - ruleFactory.getDescriptionRule().apply(nodeName, node.get("description"), generatedJavaConstruct, schema); + ruleFactory.getDescriptionRule().apply(nodeName, node.get("description"), node, generatedJavaConstruct, schema); } if (node.has("required")) { - ruleFactory.getRequiredRule().apply(nodeName, node.get("required"), generatedJavaConstruct, schema); + ruleFactory.getRequiredRule().apply(nodeName, node.get("required"), node, generatedJavaConstruct, schema); } else { - ruleFactory.getNotRequiredRule().apply(nodeName, node.get("required"), generatedJavaConstruct, schema); + ruleFactory.getNotRequiredRule().apply(nodeName, node.get("required"), node, generatedJavaConstruct, schema); } } diff --git a/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/RequiredArrayRule.java b/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/RequiredArrayRule.java index a479d6c29..65fd19b15 100644 --- a/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/RequiredArrayRule.java +++ b/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/RequiredArrayRule.java @@ -50,7 +50,7 @@ protected RequiredArrayRule(RuleFactory ruleFactory) { } @Override - public JDefinedClass apply(String nodeName, JsonNode node, JDefinedClass jclass, Schema schema) { + public JDefinedClass apply(String nodeName, JsonNode node, JsonNode parent, JDefinedClass jclass, Schema schema) { List requiredFieldMethods = new ArrayList<>(); JsonNode properties = schema.getContent().get("properties"); diff --git a/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/RequiredRule.java b/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/RequiredRule.java index 742ef37de..04613a704 100644 --- a/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/RequiredRule.java +++ b/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/RequiredRule.java @@ -52,6 +52,8 @@ protected RequiredRule(RuleFactory ruleFactory) { * @param node * the "required" node, having a value true or * false + * @param parent + * the parent node * @param generatableType * the class or method which may be marked as "required" * @return the JavaDoc comment attached to the generatableType, which @@ -59,7 +61,7 @@ protected RequiredRule(RuleFactory ruleFactory) { * required. */ @Override - public JDocCommentable apply(String nodeName, JsonNode node, JDocCommentable generatableType, Schema schema) { + public JDocCommentable apply(String nodeName, JsonNode node, JsonNode parent, JDocCommentable generatableType, Schema schema) { if (node.asBoolean()) { generatableType.javadoc().append("\n(Required)"); diff --git a/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/Rule.java b/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/Rule.java index 7d9858bd8..16a8002aa 100644 --- a/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/Rule.java +++ b/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/Rule.java @@ -39,6 +39,8 @@ public interface Rule { * the name of the JSON schema node * @param node * the JSON schema node that has caused this rule to be applied + * @param parent + * the JSON parent of {@code node} * @param generatableType * A code generation construct to which this rule should be * applied @@ -48,6 +50,6 @@ public interface Rule { * @return the newly generated source code item that was added/created as a * result of executing this rule */ - R apply(String nodeName, JsonNode node, T generatableType, Schema currentSchema); + R apply(String nodeName, JsonNode node, JsonNode parent, T generatableType, Schema currentSchema); } diff --git a/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/SchemaRule.java b/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/SchemaRule.java index 1aefb8e9f..d87d8fcb6 100644 --- a/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/SchemaRule.java +++ b/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/SchemaRule.java @@ -61,7 +61,7 @@ protected SchemaRule(RuleFactory ruleFactory) { * the schema within which this schema rule is being applied */ @Override - public JType apply(String nodeName, JsonNode schemaNode, JClassContainer generatableType, Schema schema) { + public JType apply(String nodeName, JsonNode schemaNode, JsonNode parent, JClassContainer generatableType, Schema schema) { if (schemaNode.has("$ref")) { final String nameFromRef = nameFromRef(schemaNode.get("$ref").asText()); @@ -73,14 +73,14 @@ public JType apply(String nodeName, JsonNode schemaNode, JClassContainer generat return schema.getJavaType(); } - return apply(nameFromRef != null ? nameFromRef : nodeName, schemaNode, generatableType, schema); + return apply(nameFromRef != null ? nameFromRef : nodeName, schemaNode, parent, generatableType, schema); } JType javaType; if (schemaNode.has("enum")) { - javaType = ruleFactory.getEnumRule().apply(nodeName, schemaNode, generatableType, schema); + javaType = ruleFactory.getEnumRule().apply(nodeName, schemaNode, parent, generatableType, schema); } else { - javaType = ruleFactory.getTypeRule().apply(nodeName, schemaNode, generatableType.getPackage(), schema); + javaType = ruleFactory.getTypeRule().apply(nodeName, schemaNode, parent, generatableType.getPackage(), schema); } schema.setJavaTypeIfEmpty(javaType); diff --git a/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/TitleRule.java b/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/TitleRule.java index bf7a67ccf..6ef7260f5 100644 --- a/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/TitleRule.java +++ b/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/TitleRule.java @@ -46,13 +46,15 @@ protected TitleRule() { * the name of the property to which this title applies * @param node * the "title" schema node + * @param parent + * the parent node * @param generatableType * comment-able code generation construct, usually a field or * method, which should have this title applied * @return the JavaDoc comment created to contain the title */ @Override - public JDocComment apply(String nodeName, JsonNode node, JDocCommentable generatableType, Schema schema) { + public JDocComment apply(String nodeName, JsonNode node, JsonNode parent, JDocCommentable generatableType, Schema schema) { JDocComment javadoc = generatableType.javadoc(); javadoc.add(0, node.asText() + "\n

\n"); diff --git a/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/TypeRule.java b/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/TypeRule.java index 9b437f192..6a7c9c5a0 100644 --- a/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/TypeRule.java +++ b/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/TypeRule.java @@ -73,13 +73,15 @@ protected TypeRule(RuleFactory ruleFactory) { * the name of the node for which this "type" rule applies * @param node * the node for which this "type" rule applies + * @param parent + * the parent node * @param jClassContainer * the package into which any newly generated type may be placed * @return the Java type which, after reading the details of the given * schema node, most appropriately matches the "type" specified */ @Override - public JType apply(String nodeName, JsonNode node, JClassContainer jClassContainer, Schema schema) { + public JType apply(String nodeName, JsonNode node, JsonNode parent, JClassContainer jClassContainer, Schema schema) { String propertyTypeName = getTypeName(node); @@ -87,7 +89,7 @@ public JType apply(String nodeName, JsonNode node, JClassContainer jClassContain if (propertyTypeName.equals("object") || node.has("properties") && node.path("properties").size() > 0) { - type = ruleFactory.getObjectRule().apply(nodeName, node, jClassContainer.getPackage(), schema); + type = ruleFactory.getObjectRule().apply(nodeName, node, parent, jClassContainer.getPackage(), schema); } else if (node.has("existingJavaType")) { String typeName = node.path("existingJavaType").asText(); @@ -110,16 +112,16 @@ public JType apply(String nodeName, JsonNode node, JClassContainer jClassContain type = unboxIfNecessary(jClassContainer.owner().ref(Boolean.class), ruleFactory.getGenerationConfig()); } else if (propertyTypeName.equals("array")) { - type = ruleFactory.getArrayRule().apply(nodeName, node, jClassContainer.getPackage(), schema); + type = ruleFactory.getArrayRule().apply(nodeName, node, parent, jClassContainer.getPackage(), schema); } else { type = jClassContainer.owner().ref(Object.class); } if (!node.has("javaType") && !node.has("existingJavaType") && node.has("format")) { - type = ruleFactory.getFormatRule().apply(nodeName, node.get("format"), type, schema); + type = ruleFactory.getFormatRule().apply(nodeName, node.get("format"), node, type, schema); } else if (!node.has("javaType") && !node.has("existingJavaType") && propertyTypeName.equals("string") && node.has("media")) { - type = ruleFactory.getMediaRule().apply(nodeName, node.get("media"), type, schema); + type = ruleFactory.getMediaRule().apply(nodeName, node.get("media"), node, type, schema); } return type; diff --git a/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/ValidRule.java b/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/ValidRule.java index 01219eac3..ffc009604 100644 --- a/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/ValidRule.java +++ b/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/ValidRule.java @@ -21,6 +21,7 @@ import com.fasterxml.jackson.databind.JsonNode; import org.jsonschema2pojo.Schema; import com.sun.codemodel.JFieldVar; +import scala.annotation.meta.field; public class ValidRule implements Rule { @@ -31,7 +32,7 @@ public ValidRule(RuleFactory ruleFactory) { } @Override - public JFieldVar apply(String nodeName, JsonNode node, JFieldVar field, Schema currentSchema) { + public JFieldVar apply(String nodeName, JsonNode node, JsonNode parent, JFieldVar field, Schema currentSchema) { if (ruleFactory.getGenerationConfig().isIncludeJsr303Annotations()) { field.annotate(Valid.class); diff --git a/jsonschema2pojo-core/src/test/java/org/jsonschema2pojo/SchemaMapperTest.java b/jsonschema2pojo-core/src/test/java/org/jsonschema2pojo/SchemaMapperTest.java index e0752713f..e09d85d68 100644 --- a/jsonschema2pojo-core/src/test/java/org/jsonschema2pojo/SchemaMapperTest.java +++ b/jsonschema2pojo-core/src/test/java/org/jsonschema2pojo/SchemaMapperTest.java @@ -55,7 +55,7 @@ public void generateReadsSchemaAsObject() throws IOException { ArgumentCaptor capturePackage = ArgumentCaptor.forClass(JPackage.class); ArgumentCaptor captureNode = ArgumentCaptor.forClass(JsonNode.class); - verify(mockSchemaRule).apply(eq("Address"), captureNode.capture(), capturePackage.capture(), Mockito.isA(Schema.class)); + verify(mockSchemaRule).apply(eq("Address"), captureNode.capture(), eq(null), capturePackage.capture(), Mockito.isA(Schema.class)); assertThat(capturePackage.getValue().name(), is("com.example.package")); assertThat(captureNode.getValue(), is(notNullValue())); @@ -85,7 +85,7 @@ public void generateCreatesSchemaFromExampleJsonWhenInJsonMode() throws IOExcept ArgumentCaptor capturePackage = ArgumentCaptor.forClass(JPackage.class); - verify(mockSchemaRule).apply(eq("Address"), eq(schemaNode), capturePackage.capture(), Mockito.isA(Schema.class)); + verify(mockSchemaRule).apply(eq("Address"), eq(schemaNode), eq(null), capturePackage.capture(), Mockito.isA(Schema.class)); assertThat(capturePackage.getValue().name(), is("com.example.package")); @@ -114,7 +114,7 @@ public void generateCreatesSchemaFromExampleJSONAsStringInput() throws IOExcepti ArgumentCaptor capturePackage = ArgumentCaptor.forClass(JPackage.class); - verify(mockSchemaRule).apply(eq("User"), eq(schemaNode), capturePackage.capture(), Mockito.isA(Schema.class)); + verify(mockSchemaRule).apply(eq("User"), eq(schemaNode), eq(null), capturePackage.capture(), Mockito.isA(Schema.class)); assertThat(capturePackage.getValue().name(), is("com.example.package")); } @@ -135,7 +135,7 @@ public void generateCreatesSchemaFromSchemaAsStringInput() throws IOException { ArgumentCaptor capturePackage = ArgumentCaptor.forClass(JPackage.class); ArgumentCaptor captureNode = ArgumentCaptor.forClass(JsonNode.class); - verify(mockSchemaRule).apply(eq("Address"), captureNode.capture(), capturePackage.capture(), Mockito.isA(Schema.class)); + verify(mockSchemaRule).apply(eq("Address"), captureNode.capture(), eq(null), capturePackage.capture(), Mockito.isA(Schema.class)); assertThat(capturePackage.getValue().name(), is("com.example.package")); assertThat(captureNode.getValue(), is(notNullValue())); diff --git a/jsonschema2pojo-core/src/test/java/org/jsonschema2pojo/rules/ArrayRuleTest.java b/jsonschema2pojo-core/src/test/java/org/jsonschema2pojo/rules/ArrayRuleTest.java index 40d52a47e..d828f8a80 100644 --- a/jsonschema2pojo-core/src/test/java/org/jsonschema2pojo/rules/ArrayRuleTest.java +++ b/jsonschema2pojo-core/src/test/java/org/jsonschema2pojo/rules/ArrayRuleTest.java @@ -56,7 +56,7 @@ public void arrayWithUniqueItemsProducesSet() { propertyNode.set("uniqueItems", BooleanNode.TRUE); propertyNode.set("items", itemsNode); - JClass propertyType = rule.apply("fooBars", propertyNode, jpackage, mock(Schema.class)); + JClass propertyType = rule.apply("fooBars", propertyNode, null, jpackage, mock(Schema.class)); assertThat(propertyType, notNullValue()); assertThat(propertyType.erasure(), is(codeModel.ref(Set.class))); @@ -81,7 +81,7 @@ public void arrayWithNonUniqueItemsProducesList() { when(schema.getId()).thenReturn(URI.create("http://example/nonUniqueArray")); when(config.isUseDoubleNumbers()).thenReturn(true); - JClass propertyType = rule.apply("fooBars", propertyNode, jpackage, schema); + JClass propertyType = rule.apply("fooBars", propertyNode, null, jpackage, schema); assertThat(propertyType, notNullValue()); assertThat(propertyType.erasure(), is(codeModel.ref(List.class))); @@ -107,7 +107,7 @@ public void arrayOfPrimitivesProducesCollectionOfWrapperTypes() { when(config.isUsePrimitives()).thenReturn(true); when(config.isUseDoubleNumbers()).thenReturn(true); - JClass propertyType = rule.apply("fooBars", propertyNode, jpackage, schema); + JClass propertyType = rule.apply("fooBars", propertyNode, null, jpackage, schema); assertThat(propertyType, notNullValue()); assertThat(propertyType.erasure(), is(codeModel.ref(List.class))); @@ -131,7 +131,7 @@ public void arrayDefaultsToNonUnique() { Schema schema = mock(Schema.class); when(schema.getId()).thenReturn(URI.create("http://example/defaultArray")); - JClass propertyType = rule.apply("fooBars", propertyNode, jpackage, schema); + JClass propertyType = rule.apply("fooBars", propertyNode, null, jpackage, schema); assertThat(propertyType.erasure(), is(codeModel.ref(List.class))); } diff --git a/jsonschema2pojo-core/src/test/java/org/jsonschema2pojo/rules/DescriptionRuleTest.java b/jsonschema2pojo-core/src/test/java/org/jsonschema2pojo/rules/DescriptionRuleTest.java index 9fd3dd6c9..6e0ba375e 100644 --- a/jsonschema2pojo-core/src/test/java/org/jsonschema2pojo/rules/DescriptionRuleTest.java +++ b/jsonschema2pojo-core/src/test/java/org/jsonschema2pojo/rules/DescriptionRuleTest.java @@ -42,7 +42,7 @@ public void applyAddsDescriptionToJavadoc() throws JClassAlreadyExistsException ObjectMapper mapper = new ObjectMapper(); TextNode descriptionNode = mapper.createObjectNode().textNode("some description"); - JDocComment result = rule.apply("fooBar", descriptionNode, jclass, null); + JDocComment result = rule.apply("fooBar", descriptionNode, null, jclass, null); assertThat(result, sameInstance(jclass.javadoc())); assertThat(result.size(), is(1)); diff --git a/jsonschema2pojo-core/src/test/java/org/jsonschema2pojo/rules/EnumRuleTest.java b/jsonschema2pojo-core/src/test/java/org/jsonschema2pojo/rules/EnumRuleTest.java index 64634cb2a..98b79d230 100644 --- a/jsonschema2pojo-core/src/test/java/org/jsonschema2pojo/rules/EnumRuleTest.java +++ b/jsonschema2pojo-core/src/test/java/org/jsonschema2pojo/rules/EnumRuleTest.java @@ -73,11 +73,11 @@ public void applyGeneratesUniqueEnumNamesForMultipleEnumNodesWithSameName() { enumNode.set("enum", arrayNode); // We're always a string for the purposes of this test - when(typeRule.apply("status", enumNode, jpackage, schema)) + when(typeRule.apply("status", enumNode, null, jpackage, schema)) .thenReturn(jpackage.owner()._ref(String.class)); - JType result1 = rule.apply("status", enumNode, jpackage, schema); - JType result2 = rule.apply("status", enumNode, jpackage, schema); + JType result1 = rule.apply("status", enumNode, null, jpackage, schema); + JType result2 = rule.apply("status", enumNode, null, jpackage, schema); assertThat(result1.fullName(), is("org.jsonschema2pojo.rules.Status")); assertThat(result2.fullName(), is("org.jsonschema2pojo.rules.Status_")); diff --git a/jsonschema2pojo-core/src/test/java/org/jsonschema2pojo/rules/FormatRuleJodaTest.java b/jsonschema2pojo-core/src/test/java/org/jsonschema2pojo/rules/FormatRuleJodaTest.java index bd8fa0dc0..52b588a23 100644 --- a/jsonschema2pojo-core/src/test/java/org/jsonschema2pojo/rules/FormatRuleJodaTest.java +++ b/jsonschema2pojo-core/src/test/java/org/jsonschema2pojo/rules/FormatRuleJodaTest.java @@ -72,7 +72,7 @@ public void setupConfig() { public void applyGeneratesTypeFromFormatValue() { TextNode formatNode = TextNode.valueOf(formatValue); - JType result = rule.apply("fooBar", formatNode, new JCodeModel().ref(String.class), null); + JType result = rule.apply("fooBar", formatNode, null, new JCodeModel().ref(String.class), null); assertThat(result.fullName(), equalTo(expectedType.getName())); } diff --git a/jsonschema2pojo-core/src/test/java/org/jsonschema2pojo/rules/FormatRuleTest.java b/jsonschema2pojo-core/src/test/java/org/jsonschema2pojo/rules/FormatRuleTest.java index 32bbe255e..85e4aeefb 100644 --- a/jsonschema2pojo-core/src/test/java/org/jsonschema2pojo/rules/FormatRuleTest.java +++ b/jsonschema2pojo-core/src/test/java/org/jsonschema2pojo/rules/FormatRuleTest.java @@ -22,10 +22,15 @@ import static org.mockito.Mockito.*; import java.net.URI; +import java.net.URL; import java.util.Collection; import java.util.Date; import java.util.regex.Pattern; import java.util.UUID; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.node.JsonNodeFactory; +import com.fasterxml.jackson.databind.node.ObjectNode; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; @@ -75,7 +80,7 @@ public FormatRuleTest(String formatValue, Class expectedType) { public void applyGeneratesTypeFromFormatValue() { TextNode formatNode = TextNode.valueOf(formatValue); - JType result = rule.apply("fooBar", formatNode, new JCodeModel().ref(String.class), null); + JType result = rule.apply("fooBar", formatNode, null, new JCodeModel().ref(String.class), null); assertThat(result.fullName(), equalTo(expectedType.getName())); } @@ -86,7 +91,7 @@ public void applyDefaultsToBaseType() { JType baseType = new JCodeModel().ref(Long.class); - JType result = rule.apply("fooBar", formatNode, baseType, null); + JType result = rule.apply("fooBar", formatNode, null, baseType, null); assertThat(result, equalTo(baseType)); } diff --git a/jsonschema2pojo-core/src/test/java/org/jsonschema2pojo/rules/RequiredArrayRuleTest.java b/jsonschema2pojo-core/src/test/java/org/jsonschema2pojo/rules/RequiredArrayRuleTest.java index b6513f49a..5af4b55ef 100644 --- a/jsonschema2pojo-core/src/test/java/org/jsonschema2pojo/rules/RequiredArrayRuleTest.java +++ b/jsonschema2pojo-core/src/test/java/org/jsonschema2pojo/rules/RequiredArrayRuleTest.java @@ -54,7 +54,7 @@ public void shouldUpdateJavaDoc() throws JClassAlreadyExistsException { ObjectMapper mapper = new ObjectMapper(); ArrayNode requiredNode = mapper.createArrayNode().add("fooBar"); - rule.apply("Class", requiredNode, jclass, new Schema(null, requiredNode, requiredNode)); + rule.apply("Class", requiredNode, null, jclass, new Schema(null, requiredNode, requiredNode)); JDocComment fooBarJavaDoc = jclass.fields().get("fooBar").javadoc(); JDocComment fooJavaDoc = jclass.fields().get("foo").javadoc(); @@ -79,7 +79,7 @@ public void shouldUpdateAnnotations() throws JClassAlreadyExistsException { ObjectMapper mapper = new ObjectMapper(); ArrayNode requiredNode = mapper.createArrayNode().add("foo_bar"); - rule.apply("Class", requiredNode, jclass, new Schema(null, requiredNode, requiredNode)); + rule.apply("Class", requiredNode, null, jclass, new Schema(null, requiredNode, requiredNode)); Collection fooBarAnnotations = jclass.fields().get("fooBar").annotations(); Collection fooAnnotations = jclass.fields().get("foo").annotations(); diff --git a/jsonschema2pojo-core/src/test/java/org/jsonschema2pojo/rules/RequiredRuleTest.java b/jsonschema2pojo-core/src/test/java/org/jsonschema2pojo/rules/RequiredRuleTest.java index 672da61a2..4c5e22fdb 100644 --- a/jsonschema2pojo-core/src/test/java/org/jsonschema2pojo/rules/RequiredRuleTest.java +++ b/jsonschema2pojo-core/src/test/java/org/jsonschema2pojo/rules/RequiredRuleTest.java @@ -42,7 +42,7 @@ public void applyAddsTextWhenRequired() throws JClassAlreadyExistsException { ObjectMapper mapper = new ObjectMapper(); BooleanNode descriptionNode = mapper.createObjectNode().booleanNode(true); - JDocCommentable result = rule.apply("fooBar", descriptionNode, jclass, null); + JDocCommentable result = rule.apply("fooBar", descriptionNode, null, jclass, null); assertThat(result.javadoc(), sameInstance(jclass.javadoc())); assertThat(result.javadoc().size(), is(1)); @@ -58,7 +58,7 @@ public void applySkipsTextWhenNotRequired() throws JClassAlreadyExistsException ObjectMapper mapper = new ObjectMapper(); BooleanNode descriptionNode = mapper.createObjectNode().booleanNode(false); - JDocCommentable result = rule.apply("fooBar", descriptionNode, jclass, null); + JDocCommentable result = rule.apply("fooBar", descriptionNode, null, jclass, null); assertThat(result.javadoc(), sameInstance(jclass.javadoc())); assertThat(result.javadoc().size(), is(0)); diff --git a/jsonschema2pojo-core/src/test/java/org/jsonschema2pojo/rules/SchemaRuleTest.java b/jsonschema2pojo-core/src/test/java/org/jsonschema2pojo/rules/SchemaRuleTest.java index 8d0310033..09980525e 100644 --- a/jsonschema2pojo-core/src/test/java/org/jsonschema2pojo/rules/SchemaRuleTest.java +++ b/jsonschema2pojo-core/src/test/java/org/jsonschema2pojo/rules/SchemaRuleTest.java @@ -66,9 +66,9 @@ public void refsToOtherSchemasAreLoaded() throws URISyntaxException, JClassAlrea ArgumentCaptor captureJsonNode = ArgumentCaptor.forClass(JsonNode.class); ArgumentCaptor captureSchema = ArgumentCaptor.forClass(Schema.class); - rule.apply(NODE_NAME, schemaWithRef, jclass, null); + rule.apply(NODE_NAME, schemaWithRef, null, jclass, null); - verify(mockTypeRule).apply(eq("address"), captureJsonNode.capture(), eq(jclass.getPackage()), captureSchema.capture()); + verify(mockTypeRule).apply(eq("address"), captureJsonNode.capture(), any(), eq(jclass.getPackage()), captureSchema.capture()); assertThat(captureSchema.getValue().getId(), is(equalTo(schemaUri))); assertThat(captureSchema.getValue().getContent(), is(equalTo(captureJsonNode.getValue()))); @@ -93,11 +93,11 @@ public void enumAsRootIsGeneratedCorrectly() throws JClassAlreadyExistsException EnumRule enumRule = mock(EnumRule.class); when(mockRuleFactory.getEnumRule()).thenReturn(enumRule); - when(enumRule.apply(NODE_NAME, enumNode, jclass, schema)).thenReturn(jclass); + when(enumRule.apply(NODE_NAME, enumNode, null, jclass, schema)).thenReturn(jclass); - rule.apply(NODE_NAME, schemaContent, jclass, schema); + rule.apply(NODE_NAME, schemaContent, null, jclass, schema); - verify(enumRule).apply(NODE_NAME, schemaContent, jclass, schema); + verify(enumRule).apply(NODE_NAME, schemaContent, null, jclass, schema); verify(schema, atLeastOnce()).setJavaTypeIfEmpty(jclass); } @@ -122,7 +122,7 @@ public void existingTypeIsUsedWhenTypeIsAlreadyGenerated() throws URISyntaxExcep ObjectNode schemaNode = new ObjectMapper().createObjectNode(); schemaNode.put("$ref", schemaUri.toString()); - JType result = rule.apply(NODE_NAME, schemaNode, null, schema); + JType result = rule.apply(NODE_NAME, schemaNode, null,null, schema); assertThat(result, is(sameInstance(previouslyGeneratedType))); diff --git a/jsonschema2pojo-core/src/test/java/org/jsonschema2pojo/rules/TitleRuleTest.java b/jsonschema2pojo-core/src/test/java/org/jsonschema2pojo/rules/TitleRuleTest.java index 9fa6678e6..2c81d0441 100644 --- a/jsonschema2pojo-core/src/test/java/org/jsonschema2pojo/rules/TitleRuleTest.java +++ b/jsonschema2pojo-core/src/test/java/org/jsonschema2pojo/rules/TitleRuleTest.java @@ -42,7 +42,7 @@ public void applyAddsDescriptionToJavadoc() throws JClassAlreadyExistsException ObjectMapper mapper = new ObjectMapper(); TextNode titleNode = mapper.createObjectNode().textNode("some title"); - JDocComment result = rule.apply("fooBar", titleNode, jclass, null); + JDocComment result = rule.apply("fooBar", titleNode, null, jclass, null); assertThat(result, sameInstance(jclass.javadoc())); assertThat(result.size(), is(1)); diff --git a/jsonschema2pojo-core/src/test/java/org/jsonschema2pojo/rules/TypeRuleTest.java b/jsonschema2pojo-core/src/test/java/org/jsonschema2pojo/rules/TypeRuleTest.java index 0c2ddf451..bc5951717 100755 --- a/jsonschema2pojo-core/src/test/java/org/jsonschema2pojo/rules/TypeRuleTest.java +++ b/jsonschema2pojo-core/src/test/java/org/jsonschema2pojo/rules/TypeRuleTest.java @@ -58,7 +58,7 @@ public void applyGeneratesString() { ObjectNode objectNode = new ObjectMapper().createObjectNode(); objectNode.put("type", "string"); - JType result = rule.apply("fooBar", objectNode, jpackage, null); + JType result = rule.apply("fooBar", objectNode, null, jpackage, null); assertThat(result.fullName(), is(String.class.getName())); } @@ -76,10 +76,10 @@ public void applyGeneratesDate() { JType mockDateType = mock(JType.class); FormatRule mockFormatRule = mock(FormatRule.class); - when(mockFormatRule.apply(eq("fooBar"), eq(formatNode), Mockito.isA(JType.class), isNull(Schema.class))).thenReturn(mockDateType); + when(mockFormatRule.apply(eq("fooBar"), eq(formatNode), any(), Mockito.isA(JType.class), isNull(Schema.class))).thenReturn(mockDateType); when(ruleFactory.getFormatRule()).thenReturn(mockFormatRule); - JType result = rule.apply("fooBar", objectNode, jpackage, null); + JType result = rule.apply("fooBar", objectNode, null, jpackage, null); assertThat(result, equalTo(mockDateType)); } @@ -92,7 +92,7 @@ public void applyGeneratesInteger() { ObjectNode objectNode = new ObjectMapper().createObjectNode(); objectNode.put("type", "integer"); - JType result = rule.apply("fooBar", objectNode, jpackage, null); + JType result = rule.apply("fooBar", objectNode, null, jpackage, null); assertThat(result.fullName(), is(Integer.class.getName())); } @@ -107,7 +107,7 @@ public void applyGeneratesIntegerPrimitive() { when(config.isUsePrimitives()).thenReturn(true); - JType result = rule.apply("fooBar", objectNode, jpackage, null); + JType result = rule.apply("fooBar", objectNode, null, jpackage, null); assertThat(result.fullName(), is("int")); } @@ -123,7 +123,7 @@ public void applyGeneratesIntegerUsingJavaTypeIntegerPrimitive() { when(config.isUsePrimitives()).thenReturn(false); - JType result = rule.apply("fooBar", objectNode, jpackage, null); + JType result = rule.apply("fooBar", objectNode, null, jpackage, null); assertThat(result.fullName(), is("int")); } @@ -138,7 +138,7 @@ public void applyGeneratesBigInteger() { when(config.isUseBigIntegers()).thenReturn(true); - JType result = rule.apply("fooBar", objectNode, jpackage, null); + JType result = rule.apply("fooBar", objectNode, null, jpackage, null); assertThat(result.fullName(), is(BigInteger.class.getName())); } @@ -155,7 +155,7 @@ public void applyGeneratesBigIntegerOverridingLong() { when(config.isUseBigIntegers()).thenReturn(true); when(config.isUseLongIntegers()).thenReturn(true); - JType result = rule.apply("fooBar", objectNode, jpackage, null); + JType result = rule.apply("fooBar", objectNode, null, jpackage, null); assertThat(result.fullName(), is(BigInteger.class.getName())); } @@ -170,7 +170,7 @@ public void applyGeneratesBigDecimal() { when(config.isUseBigDecimals()).thenReturn(true); - JType result = rule.apply("fooBar", objectNode, jpackage, null); + JType result = rule.apply("fooBar", objectNode, null, jpackage, null); assertThat(result.fullName(), is(BigDecimal.class.getName())); } @@ -187,7 +187,7 @@ public void applyGeneratesBigDecimalOverridingDouble() { when(config.isUseDoubleNumbers()).thenReturn(true); when(config.isUseBigDecimals()).thenReturn(true); - JType result = rule.apply("fooBar", objectNode, jpackage, null); + JType result = rule.apply("fooBar", objectNode, null, jpackage, null); assertThat(result.fullName(), is(BigDecimal.class.getName())); } @@ -204,7 +204,7 @@ public void applyGeneratesIntegerUsingJavaTypeInteger() { when(config.isUsePrimitives()).thenReturn(true); - JType result = rule.apply("fooBar", objectNode, jpackage, null); + JType result = rule.apply("fooBar", objectNode, null, jpackage, null); assertThat(result.fullName(), is("java.lang.Integer")); } @@ -220,7 +220,7 @@ public void applyGeneratesIntegerUsingJavaTypeLongPrimitive() { when(config.isUsePrimitives()).thenReturn(false); - JType result = rule.apply("fooBar", objectNode, jpackage, null); + JType result = rule.apply("fooBar", objectNode, null, jpackage, null); assertThat(result.fullName(), is("long")); } @@ -236,7 +236,7 @@ public void applyGeneratesIntegerUsingJavaTypeLong() { when(config.isUsePrimitives()).thenReturn(true); - JType result = rule.apply("fooBar", objectNode, jpackage, null); + JType result = rule.apply("fooBar", objectNode, null, jpackage, null); assertThat(result.fullName(), is("java.lang.Long")); } @@ -252,7 +252,7 @@ public void applyGeneratesIntegerUsingJavaTypeLongPrimitiveWhenMaximumGreaterTha when(config.isUsePrimitives()).thenReturn(true); - JType result = rule.apply("fooBar", objectNode, jpackage, null); + JType result = rule.apply("fooBar", objectNode, null, jpackage, null); assertThat(result.fullName(), is("long")); } @@ -268,7 +268,7 @@ public void applyGeneratesIntegerUsingJavaTypeLongWhenMaximumGreaterThanIntegerM when(config.isUsePrimitives()).thenReturn(false); - JType result = rule.apply("fooBar", objectNode, jpackage, null); + JType result = rule.apply("fooBar", objectNode, null, jpackage, null); assertThat(result.fullName(), is(Long.class.getName())); } @@ -284,7 +284,7 @@ public void applyGeneratesIntegerUsingJavaTypeLongPrimitiveWhenMaximumLessThanIn when(config.isUsePrimitives()).thenReturn(true); - JType result = rule.apply("fooBar", objectNode, jpackage, null); + JType result = rule.apply("fooBar", objectNode, null, jpackage, null); assertThat(result.fullName(), is("long")); } @@ -300,7 +300,7 @@ public void applyGeneratesIntegerUsingJavaTypeLongWhenMaximumLessThanIntegerMin( when(config.isUsePrimitives()).thenReturn(false); - JType result = rule.apply("fooBar", objectNode, jpackage, null); + JType result = rule.apply("fooBar", objectNode, null, jpackage, null); assertThat(result.fullName(), is(Long.class.getName())); } @@ -316,7 +316,7 @@ public void applyGeneratesIntegerUsingJavaTypeLongPrimitiveWhenMinimumLessThanIn when(config.isUsePrimitives()).thenReturn(true); - JType result = rule.apply("fooBar", objectNode, jpackage, null); + JType result = rule.apply("fooBar", objectNode, null, jpackage, null); assertThat(result.fullName(), is("long")); } @@ -332,7 +332,7 @@ public void applyGeneratesIntegerUsingJavaTypeLongWhenMinimumLessThanIntegerMin( when(config.isUsePrimitives()).thenReturn(false); - JType result = rule.apply("fooBar", objectNode, jpackage, null); + JType result = rule.apply("fooBar", objectNode, null, jpackage, null); assertThat(result.fullName(), is(Long.class.getName())); } @@ -348,7 +348,7 @@ public void applyGeneratesIntegerUsingJavaTypeLongPrimitiveWhenMinimumGreaterTha when(config.isUsePrimitives()).thenReturn(true); - JType result = rule.apply("fooBar", objectNode, jpackage, null); + JType result = rule.apply("fooBar", objectNode, null, jpackage, null); assertThat(result.fullName(), is("long")); } @@ -364,7 +364,7 @@ public void applyGeneratesIntegerUsingJavaTypeLongWhenMinimumGreaterThanIntegerM when(config.isUsePrimitives()).thenReturn(false); - JType result = rule.apply("fooBar", objectNode, jpackage, null); + JType result = rule.apply("fooBar", objectNode, null, jpackage, null); assertThat(result.fullName(), is(Long.class.getName())); } @@ -378,7 +378,7 @@ public void applyGeneratesIntegerUsingJavaTypeBigInteger() { objectNode.put("type", "integer"); objectNode.put("existingJavaType", "java.math.BigInteger"); - JType result = rule.apply("fooBar", objectNode, jpackage, null); + JType result = rule.apply("fooBar", objectNode, null, jpackage, null); assertThat(result.fullName(), is("java.math.BigInteger")); } @@ -393,7 +393,7 @@ public void applyGeneratesNumber() { when(config.isUseDoubleNumbers()).thenReturn(true); - JType result = rule.apply("fooBar", objectNode, jpackage, null); + JType result = rule.apply("fooBar", objectNode, null, jpackage, null); assertThat(result.fullName(), is(Double.class.getName())); } @@ -409,7 +409,7 @@ public void applyGeneratesNumberPrimitive() { when(config.isUsePrimitives()).thenReturn(true); when(config.isUseDoubleNumbers()).thenReturn(true); - JType result = rule.apply("fooBar", objectNode, jpackage, null); + JType result = rule.apply("fooBar", objectNode, null, jpackage, null); assertThat(result.fullName(), is("double")); } @@ -425,7 +425,7 @@ public void applyGeneratesNumberUsingJavaTypeFloatPrimitive() { when(config.isUsePrimitives()).thenReturn(false); - JType result = rule.apply("fooBar", objectNode, jpackage, null); + JType result = rule.apply("fooBar", objectNode, null, jpackage, null); assertThat(result.fullName(), is("float")); } @@ -441,7 +441,7 @@ public void applyGeneratesNumberUsingJavaTypeFloat() { when(config.isUsePrimitives()).thenReturn(true); - JType result = rule.apply("fooBar", objectNode, jpackage, null); + JType result = rule.apply("fooBar", objectNode, null, jpackage, null); assertThat(result.fullName(), is("java.lang.Float")); } @@ -457,7 +457,7 @@ public void applyGeneratesNumberUsingJavaTypeDoublePrimitive() { when(config.isUsePrimitives()).thenReturn(false); - JType result = rule.apply("fooBar", objectNode, jpackage, null); + JType result = rule.apply("fooBar", objectNode, null, jpackage, null); assertThat(result.fullName(), is("double")); } @@ -473,7 +473,7 @@ public void applyGeneratesNumberUsingJavaTypeDouble() { when(config.isUsePrimitives()).thenReturn(true); - JType result = rule.apply("fooBar", objectNode, jpackage, null); + JType result = rule.apply("fooBar", objectNode, null, jpackage, null); assertThat(result.fullName(), is("java.lang.Double")); } @@ -487,7 +487,7 @@ public void applyGeneratesNumberUsingJavaTypeBigDecimal() { objectNode.put("type", "number"); objectNode.put("existingJavaType", "java.math.BigDecimal"); - JType result = rule.apply("fooBar", objectNode, jpackage, null); + JType result = rule.apply("fooBar", objectNode, null, jpackage, null); assertThat(result.fullName(), is("java.math.BigDecimal")); } @@ -500,7 +500,7 @@ public void applyGeneratesBoolean() { ObjectNode objectNode = new ObjectMapper().createObjectNode(); objectNode.put("type", "boolean"); - JType result = rule.apply("fooBar", objectNode, jpackage, null); + JType result = rule.apply("fooBar", objectNode, null, jpackage, null); assertThat(result.fullName(), is(Boolean.class.getName())); } @@ -515,7 +515,7 @@ public void applyGeneratesBooleanPrimitive() { when(config.isUsePrimitives()).thenReturn(true); - JType result = rule.apply("fooBar", objectNode, jpackage, null); + JType result = rule.apply("fooBar", objectNode, null, jpackage, null); assertThat(result.fullName(), is("boolean")); } @@ -528,7 +528,7 @@ public void applyGeneratesAnyAsObject() { ObjectNode objectNode = new ObjectMapper().createObjectNode(); objectNode.put("type", "any"); - JType result = rule.apply("fooBar", objectNode, jpackage, null); + JType result = rule.apply("fooBar", objectNode, null, jpackage, null); assertThat(result.fullName(), is(Object.class.getName())); } @@ -541,7 +541,7 @@ public void applyGeneratesNullAsObject() { ObjectNode objectNode = new ObjectMapper().createObjectNode(); objectNode.put("type", "null"); - JType result = rule.apply("fooBar", objectNode, jpackage, null); + JType result = rule.apply("fooBar", objectNode, null, jpackage, null); assertThat(result.fullName(), is(Object.class.getName())); } @@ -556,10 +556,10 @@ public void applyGeneratesArray() { JClass mockArrayType = mock(JClass.class); ArrayRule mockArrayRule = mock(ArrayRule.class); - when(mockArrayRule.apply("fooBar", objectNode, jpackage, null)).thenReturn(mockArrayType); + when(mockArrayRule.apply("fooBar", objectNode, null, jpackage, null)).thenReturn(mockArrayType); when(ruleFactory.getArrayRule()).thenReturn(mockArrayRule); - JType result = rule.apply("fooBar", objectNode, jpackage, null); + JType result = rule.apply("fooBar", objectNode, null, jpackage, null); assertThat(result, is((JType) mockArrayType)); } @@ -574,10 +574,10 @@ public void applyGeneratesCustomObject() { JDefinedClass mockObjectType = mock(JDefinedClass.class); ObjectRule mockObjectRule = mock(ObjectRule.class); - when(mockObjectRule.apply("fooBar", objectNode, jpackage, null)).thenReturn(mockObjectType); + when(mockObjectRule.apply("fooBar", objectNode, null, jpackage, null)).thenReturn(mockObjectType); when(ruleFactory.getObjectRule()).thenReturn(mockObjectRule); - JType result = rule.apply("fooBar", objectNode, jpackage, null); + JType result = rule.apply("fooBar", objectNode, null, jpackage, null); assertThat(result, is((JType) mockObjectType)); } @@ -590,7 +590,7 @@ public void applyChoosesObjectOnUnrecognizedType() { ObjectNode objectNode = new ObjectMapper().createObjectNode(); objectNode.put("type", "unknown"); - JType result = rule.apply("fooBar", objectNode, jpackage, null); + JType result = rule.apply("fooBar", objectNode, null, jpackage, null); assertThat(result.fullName(), is(Object.class.getName())); @@ -603,7 +603,7 @@ public void applyDefaultsToTypeAnyObject() { ObjectNode objectNode = new ObjectMapper().createObjectNode(); - JType result = rule.apply("fooBar", objectNode, jpackage, null); + JType result = rule.apply("fooBar", objectNode, null, jpackage, null); assertThat(result.fullName(), is(Object.class.getName())); } diff --git a/jsonschema2pojo-integration-tests/src/test/java/org/jsonschema2pojo/integration/FormatIT.java b/jsonschema2pojo-integration-tests/src/test/java/org/jsonschema2pojo/integration/FormatIT.java index 5bd3003d6..12f6768e1 100644 --- a/jsonschema2pojo-integration-tests/src/test/java/org/jsonschema2pojo/integration/FormatIT.java +++ b/jsonschema2pojo-integration-tests/src/test/java/org/jsonschema2pojo/integration/FormatIT.java @@ -26,6 +26,7 @@ import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.net.URI; +import java.net.URL; import java.util.Date; import java.util.List; import java.util.UUID; diff --git a/jsonschema2pojo-integration-tests/src/test/java/org/jsonschema2pojo/integration/config/CustomRuleFactoryIT.java b/jsonschema2pojo-integration-tests/src/test/java/org/jsonschema2pojo/integration/config/CustomRuleFactoryIT.java index 4a9553985..c10145aa2 100644 --- a/jsonschema2pojo-integration-tests/src/test/java/org/jsonschema2pojo/integration/config/CustomRuleFactoryIT.java +++ b/jsonschema2pojo-integration-tests/src/test/java/org/jsonschema2pojo/integration/config/CustomRuleFactoryIT.java @@ -56,12 +56,12 @@ public static class TestRuleFactory extends RuleFactory { public Rule getFormatRule() { return new FormatRule(this) { @Override - public JType apply(String nodeName, JsonNode node, JType baseType, Schema schema) { + public JType apply(String nodeName, JsonNode node, JsonNode parent, JType baseType, Schema schema) { if (node.asText().equals("date")) { return baseType.owner().ref(LocalDate.class); } - return super.apply(nodeName, node, baseType, schema); + return super.apply(nodeName, node, parent, baseType, schema); } }; } diff --git a/jsonschema2pojo-integration-tests/src/test/java/org/jsonschema2pojo/integration/ref/FragmentRefIT.java b/jsonschema2pojo-integration-tests/src/test/java/org/jsonschema2pojo/integration/ref/FragmentRefIT.java index 84d6f233d..acb61f059 100644 --- a/jsonschema2pojo-integration-tests/src/test/java/org/jsonschema2pojo/integration/ref/FragmentRefIT.java +++ b/jsonschema2pojo-integration-tests/src/test/java/org/jsonschema2pojo/integration/ref/FragmentRefIT.java @@ -72,7 +72,7 @@ public void selfRefWithoutParentFile() throws IOException { JsonNode schema = new ObjectMapper().readTree("{\"type\":\"object\", \"properties\":{\"a\":{\"$ref\":\"#/b\"}}, \"b\":\"string\"}"); JPackage p = codeModel._package("com.example"); - new RuleFactory().getSchemaRule().apply("Example", schema, p, new Schema(null, schema, schema)); + new RuleFactory().getSchemaRule().apply("Example", schema, null, p, new Schema(null, schema, schema)); } @Test @@ -101,7 +101,7 @@ public void refToInnerFragmentThatHasRefToOuterFragmentWithoutParentFile() throw "}"); JPackage p = codeModel._package("com.example"); - new RuleFactory().getSchemaRule().apply("Example", schema, p, new Schema(null, schema, schema)); + new RuleFactory().getSchemaRule().apply("Example", schema, null, p, new Schema(null, schema, schema)); } -} \ No newline at end of file +} diff --git a/jsonschema2pojo-integration-tests/src/test/java/org/jsonschema2pojo/integration/util/Jsonschema2PojoRuleTest.java b/jsonschema2pojo-integration-tests/src/test/java/org/jsonschema2pojo/integration/util/Jsonschema2PojoRuleTest.java index f07564dbe..54d56688a 100644 --- a/jsonschema2pojo-integration-tests/src/test/java/org/jsonschema2pojo/integration/util/Jsonschema2PojoRuleTest.java +++ b/jsonschema2pojo-integration-tests/src/test/java/org/jsonschema2pojo/integration/util/Jsonschema2PojoRuleTest.java @@ -71,8 +71,8 @@ public org.jsonschema2pojo.rules.Rule getObjectRule() { return new org.jsonschema2pojo.rules.Rule() { @Override - public JType apply(String nodeName, JsonNode node, JPackage generatableType, Schema currentSchema) { - JType objectType = workingRule.apply(nodeName, node, generatableType, currentSchema); + public JType apply(String nodeName, JsonNode node, JsonNode parent, JPackage generatableType, Schema currentSchema) { + JType objectType = workingRule.apply(nodeName, node, null, generatableType, currentSchema); if( objectType instanceof JDefinedClass ) { JDefinedClass jclass = (JDefinedClass)objectType; jclass.method(JMod.PUBLIC, jclass.owner().BOOLEAN, "brokenMethod").body(); diff --git a/jsonschema2pojo-integration-tests/src/test/resources/schema/format/formattedProperties.json b/jsonschema2pojo-integration-tests/src/test/resources/schema/format/formattedProperties.json index c4985c125..1421cd9b6 100644 --- a/jsonschema2pojo-integration-tests/src/test/resources/schema/format/formattedProperties.json +++ b/jsonschema2pojo-integration-tests/src/test/resources/schema/format/formattedProperties.json @@ -70,4 +70,4 @@ "format" : "uuid" } } -} \ No newline at end of file +}