This is an automated email from the ASF dual-hosted git repository.

rmannibucau pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/johnzon.git


The following commit(s) were added to refs/heads/master by this push:
     new 10444f1f [JOHNZON-387] basic support of enums in PojoGenerator
10444f1f is described below

commit 10444f1f338d430dadbad430b5b029c4ad38fefa
Author: Romain Manni-Bucau <rmannibu...@gmail.com>
AuthorDate: Wed Aug 17 10:22:38 2022 +0200

    [JOHNZON-387] basic support of enums in PojoGenerator
---
 .../johnzon/jsonschema/generator/PojoGenerator.java     | 17 ++++++++++++++++-
 1 file changed, 16 insertions(+), 1 deletion(-)

diff --git 
a/johnzon-jsonschema/src/main/java/org/apache/johnzon/jsonschema/generator/PojoGenerator.java
 
b/johnzon-jsonschema/src/main/java/org/apache/johnzon/jsonschema/generator/PojoGenerator.java
index 8835b45f..45022f85 100644
--- 
a/johnzon-jsonschema/src/main/java/org/apache/johnzon/jsonschema/generator/PojoGenerator.java
+++ 
b/johnzon-jsonschema/src/main/java/org/apache/johnzon/jsonschema/generator/PojoGenerator.java
@@ -53,6 +53,7 @@ public class PojoGenerator {
     protected final Set<String> imports = new TreeSet<>(String::compareTo);
     protected final List<Attribute> attributes = new ArrayList<>();
     protected final Map<String, String> nested = new 
TreeMap<>(String::compareTo);
+    private boolean isEnum;
 
     public PojoGenerator(final PojoConfiguration configuration) {
         this.configuration = configuration;
@@ -64,6 +65,10 @@ public class PojoGenerator {
     }
 
     public Map<String, String> generate() {
+        if (isEnum) {
+            return nested;
+        }
+
         final String name = configuration.getPackageName() + '.' + 
configuration.getClassName();
         final String path = name.replace('.', '/') + ".java";
         attributes.sort(comparing(a -> a.javaName));
@@ -169,6 +174,12 @@ public class PojoGenerator {
 
     public PojoGenerator visitSchema(final JsonObject schema) {
         if (!schema.containsKey("properties")) {
+            if (schema.containsKey("enum")) {
+                isEnum = true;
+                doEnum(schema.getJsonArray("enum"), 
configuration.getClassName());
+                return this;
+            }
+
             throw new IllegalArgumentException("Unsupported schema since it 
does not contain any properties: " + schema);
         }
 
@@ -334,6 +345,11 @@ public class PojoGenerator {
 
     protected String onEnum(final String javaName, final JsonValue enumList, 
final JsonObject schema) {
         final String className = enumName(javaName, schema);
+        doEnum(enumList, className);
+        return className;
+    }
+
+    private void doEnum(final JsonValue enumList, final String className) {
         final Map<String, String> values = enumList.asJsonArray().stream()
                 .map(JsonString.class::cast)
                 .map(JsonString::getString)
@@ -370,7 +386,6 @@ public class PojoGenerator {
                                 "") +
                         beforeEnumEnd() +
                         "}\n");
-        return className;
     }
 
     protected String enumName(final String javaName, final JsonObject schema) {

Reply via email to