From fea7a34a68004fb27214c1ef1c0b1ab7f6d32c12 Mon Sep 17 00:00:00 2001 From: jiachen1120 Date: Thu, 17 Jan 2019 16:55:37 -0500 Subject: [PATCH 1/2] Fixed unexpected model generation bug. - Added schema type check - Added properties number check --- .../main/java/com/networknt/codegen/rest/OpenApiGenerator.java | 3 +++ .../src/main/resources/templates/rest/pojo.rocker.raw | 3 +++ 2 files changed, 6 insertions(+) diff --git a/light-rest-4j/src/main/java/com/networknt/codegen/rest/OpenApiGenerator.java b/light-rest-4j/src/main/java/com/networknt/codegen/rest/OpenApiGenerator.java index 2b36ae1ee..60c0207e9 100644 --- a/light-rest-4j/src/main/java/com/networknt/codegen/rest/OpenApiGenerator.java +++ b/light-rest-4j/src/main/java/com/networknt/codegen/rest/OpenApiGenerator.java @@ -233,6 +233,9 @@ public void generate(String targetPath, Object model, Any config) throws IOExcep String classVarName = key; String modelFileName = key.substring(0, 1).toUpperCase() + key.substring(1); //System.out.println("props = " + Any.wrap(props)); + if (!"object".equals(type)) { + continue; + } if(!overwriteModel && checkExist(targetPath, ("src.main.java." + modelPackage).replace(".", separator), modelFileName + ".java")) { continue; } diff --git a/light-rest-4j/src/main/resources/templates/rest/pojo.rocker.raw b/light-rest-4j/src/main/resources/templates/rest/pojo.rocker.raw index 7bf185bb0..b5d423760 100644 --- a/light-rest-4j/src/main/resources/templates/rest/pojo.rocker.raw +++ b/light-rest-4j/src/main/resources/templates/rest/pojo.rocker.raw @@ -1,6 +1,7 @@ @import com.jsoniter.any.Any @import java.util.Map @import java.util.List +@option discardLogicWhitespace=true @args (String modelPackage, String className, String classVarName, List> props) package @modelPackage; @@ -37,6 +38,7 @@ public class @className { } } } + @if(props.size() > 0) { @@Override public boolean equals(Object o) { @@ -57,6 +59,7 @@ public class @className { return Objects.hash(@for((i, prop): props) {@if(i.index() < props.size() - 1) {@prop.get("name"),} @if(i.index() == props.size() - 1) {@prop.get("name"));}} } + } @@Override public String toString() { StringBuilder sb = new StringBuilder(); From adfe402a641d9e4471390d8f4e2b02eb7fa61445 Mon Sep 17 00:00:00 2001 From: jiachen1120 Date: Mon, 21 Jan 2019 10:53:35 -0500 Subject: [PATCH 2/2] - Added a comment to type check explaining why it's necessary --- .../java/com/networknt/codegen/rest/OpenApiGenerator.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/light-rest-4j/src/main/java/com/networknt/codegen/rest/OpenApiGenerator.java b/light-rest-4j/src/main/java/com/networknt/codegen/rest/OpenApiGenerator.java index 60c0207e9..e5286ea13 100644 --- a/light-rest-4j/src/main/java/com/networknt/codegen/rest/OpenApiGenerator.java +++ b/light-rest-4j/src/main/java/com/networknt/codegen/rest/OpenApiGenerator.java @@ -233,6 +233,10 @@ public void generate(String targetPath, Object model, Any config) throws IOExcep String classVarName = key; String modelFileName = key.substring(0, 1).toUpperCase() + key.substring(1); //System.out.println("props = " + Any.wrap(props)); + + // Check the type of current schema. Generation will be executed only if the type of the schema equals to object. + // Since generate a model for primitive types and arrays do not make sense, and an error class would be generated + // due to lack of properties if force to generate. if (!"object".equals(type)) { continue; }