You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@johnzon.apache.org by rm...@apache.org on 2022/08/17 08:22:42 UTC
[johnzon] branch master updated: [JOHNZON-387] basic support of enums in PojoGenerator
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 <rm...@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) {