[JOHNZON-387] basic support of enums in PojoGenerator
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 8835b45..45022f8 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 @@
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 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 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 @@
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 @@
"") +
beforeEnumEnd() +
"}\n");
- return className;
}
protected String enumName(final String javaName, final JsonObject schema) {