diff --git a/jsonschema2pojo-ant/src/main/java/org/jsonschema2pojo/ant/Jsonschema2PojoTask.java b/jsonschema2pojo-ant/src/main/java/org/jsonschema2pojo/ant/Jsonschema2PojoTask.java index 4b3fe021e..ffab5c938 100644 --- a/jsonschema2pojo-ant/src/main/java/org/jsonschema2pojo/ant/Jsonschema2PojoTask.java +++ b/jsonschema2pojo-ant/src/main/java/org/jsonschema2pojo/ant/Jsonschema2PojoTask.java @@ -96,6 +96,8 @@ public class Jsonschema2PojoTask extends Task implements GenerationConfig { private boolean useCommonsLang3 = false; + private boolean initializeEmptyCollections = true; + /** * Execute this task (it's expected that all relevant setters will have been * called by Ant to provide task configuration before this method @@ -405,7 +407,18 @@ public void setUseJodaDates(boolean useJodaDates) { public void setUseCommonsLang3(boolean useCommonsLang3) { this.useCommonsLang3 = useCommonsLang3; } - + + + /** + * Sets the 'initializeEmptyCollections' property of this class + * + * @param initializeEmptyCollections + * Whether to initialize collections with empty instance or null. + */ + public void setInitializeEmptyCollections(boolean initializeEmptyCollections) { + this.initializeEmptyCollections = initializeEmptyCollections; + } + @Override public boolean isGenerateBuilders() { return generateBuilders; @@ -533,4 +546,9 @@ public FileFilter getFileFilter() { return new AllFileFilter(); } + @Override + public boolean isInitializeEmptyCollections() { + return initializeEmptyCollections; + } + } diff --git a/jsonschema2pojo-ant/src/site/Jsonschema2PojoTask.html b/jsonschema2pojo-ant/src/site/Jsonschema2PojoTask.html index a90f97269..015522ff8 100644 --- a/jsonschema2pojo-ant/src/site/Jsonschema2PojoTask.html +++ b/jsonschema2pojo-ant/src/site/Jsonschema2PojoTask.html @@ -170,6 +170,11 @@
long
, double
, boolean
) instead of wrapper types where possible when generating bean properties (has the side-effect of making those.false
)null
.true
)true
+ */
+ @Override
+ public boolean isInitializeEmptyCollections() {
+ return true;
+ }
+}
\ No newline at end of file
diff --git a/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/GenerationConfig.java b/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/GenerationConfig.java
index fbb8514e9..547f69deb 100644
--- a/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/GenerationConfig.java
+++ b/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/GenerationConfig.java
@@ -213,5 +213,11 @@ public interface GenerationConfig {
* @return the file filter use when scanning for schema files.
*/
FileFilter getFileFilter();
-
+
+ /**
+ * Gets the 'initializeEmptyCollections' configuration option.
+ *
+ * @return Whether to initialize collections with empty instance or null.
+ */
+ boolean isInitializeEmptyCollections();
}
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 52c378ad7..32108f296 100644
--- a/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/DefaultRule.java
+++ b/jsonschema2pojo-core/src/main/java/org/jsonschema2pojo/rules/DefaultRule.java
@@ -172,6 +172,8 @@ private JExpression getDefaultList(JType fieldType, JsonNode node) {
invokeAsList.arg(getDefaultValue(listGenericType, defaultValue));
}
newListImpl.arg(invokeAsList);
+ } else if (!ruleFactory.getGenerationConfig().isInitializeEmptyCollections()) {
+ return JExpr._null();
}
return newListImpl;
@@ -209,6 +211,8 @@ private JExpression getDefaultSet(JType fieldType, JsonNode node) {
invokeAsList.arg(getDefaultValue(setGenericType, defaultValue));
}
newSetImpl.arg(invokeAsList);
+ } else if (!ruleFactory.getGenerationConfig().isInitializeEmptyCollections()) {
+ return JExpr._null();
}
return newSetImpl;
diff --git a/jsonschema2pojo-gradle-plugin/src/main/groovy/org/jsonschema2pojo/gradle/JsonSchemaExtension.groovy b/jsonschema2pojo-gradle-plugin/src/main/groovy/org/jsonschema2pojo/gradle/JsonSchemaExtension.groovy
index bee7c038f..a1accdcdb 100644
--- a/jsonschema2pojo-gradle-plugin/src/main/groovy/org/jsonschema2pojo/gradle/JsonSchemaExtension.groovy
+++ b/jsonschema2pojo-gradle-plugin/src/main/groovy/org/jsonschema2pojo/gradle/JsonSchemaExtension.groovy
@@ -49,6 +49,7 @@ public class JsonSchemaExtension implements GenerationConfig {
boolean useJodaDates
boolean useCommonsLang3
FileFilter fileFilter
+ boolean initializeEmptyCollections
public JsonSchemaExtension() {
// See DefaultGenerationConfig
@@ -69,6 +70,7 @@ public class JsonSchemaExtension implements GenerationConfig {
useJodaDates = false
useCommonsLang3 = false
fileFilter = new AllFileFilter()
+ initializeEmptyCollections = true
}
@Override
diff --git a/jsonschema2pojo-maven-plugin/src/main/java/org/jsonschema2pojo/maven/Jsonschema2PojoMojo.java b/jsonschema2pojo-maven-plugin/src/main/java/org/jsonschema2pojo/maven/Jsonschema2PojoMojo.java
index 55071a08b..8af5dd0bb 100644
--- a/jsonschema2pojo-maven-plugin/src/main/java/org/jsonschema2pojo/maven/Jsonschema2PojoMojo.java
+++ b/jsonschema2pojo-maven-plugin/src/main/java/org/jsonschema2pojo/maven/Jsonschema2PojoMojo.java
@@ -309,6 +309,14 @@ public class Jsonschema2PojoMojo extends AbstractMojo implements GenerationConfi
*/
private boolean useCommonsLang3 = false;
+ /**
+ * Whether to initialize collections with empty instance or null.
+ *
+ * @parameter expression="${jsonschema2pojo.initializeEmptyCollections}" default="true"
+ * @since
+ */
+ private boolean initializeEmptyCollections = true;
+
/**
* List of file patterns to include.
*
@@ -513,6 +521,11 @@ public FileFilter getFileFilter() {
return fileFilter;
}
+ @Override
+ public boolean isInitializeEmptyCollections() {
+ return initializeEmptyCollections;
+ }
+
boolean filteringEnabled() {
return !((includes == null || includes.length == 0) && (excludes == null || excludes.length == 0));
}