diff --git a/src/main/java/com/algorand/sdkutils/generators/OpenApiParser.java b/src/main/java/com/algorand/sdkutils/generators/OpenApiParser.java index d6aad3c..c1e35f9 100644 --- a/src/main/java/com/algorand/sdkutils/generators/OpenApiParser.java +++ b/src/main/java/com/algorand/sdkutils/generators/OpenApiParser.java @@ -524,13 +524,19 @@ public void generateAlgodIndexerObjects (JsonNode root) throws IOException { null ? root.get("components").get("schemas") : root.get("definitions"); for (Map.Entry cls : getSortedSchema(schemas).entrySet()) { String desc = null; + if (cls.getValue().get("description") != null) { + desc = cls.getValue().get("description").asText(); + } + + TypeDef clsType = getType(cls.getValue(), true, cls.getKey(), false, false); + if (clsType.isOfType("enum")) { + publisher.publish(Events.ENUM_DEFINITION, clsType); + } + if (!hasProperties(cls.getValue())) { // If it has no properties, no class is needed for this type. continue; } - if (cls.getValue().get("description") != null) { - desc = cls.getValue().get("description").asText(); - } String className = Tools.getCamelCase(cls.getKey(), true); if (!filterList.isEmpty() && filterList.contains(className)) { continue; diff --git a/src/main/java/com/algorand/sdkutils/listeners/JavaGenerator.java b/src/main/java/com/algorand/sdkutils/listeners/JavaGenerator.java index a8daf4d..c1be954 100644 --- a/src/main/java/com/algorand/sdkutils/listeners/JavaGenerator.java +++ b/src/main/java/com/algorand/sdkutils/listeners/JavaGenerator.java @@ -118,6 +118,9 @@ public void onEvent(Events event, TypeDef type) { case BODY_CONTENT: javaQueryWriter.addQueryProperty(type, false, false, true); break; + case ENUM_DEFINITION: + this.storeEnumDefinition(type); + break; default: throw new RuntimeException("Unimplemented event for TypeDef! " + event); } diff --git a/src/main/java/com/algorand/sdkutils/listeners/Publisher.java b/src/main/java/com/algorand/sdkutils/listeners/Publisher.java index 5615136..e06d926 100644 --- a/src/main/java/com/algorand/sdkutils/listeners/Publisher.java +++ b/src/main/java/com/algorand/sdkutils/listeners/Publisher.java @@ -14,6 +14,9 @@ public class Publisher { public enum Events { ALL, + // Store an enum definition--some languages will just treat enums as strings. + ENUM_DEFINITION, + // Define a model object. NEW_MODEL, NEW_PROPERTY, diff --git a/src/main/java/com/algorand/sdkutils/listeners/TemplateGenerator.java b/src/main/java/com/algorand/sdkutils/listeners/TemplateGenerator.java index 130b3b5..a59a607 100644 --- a/src/main/java/com/algorand/sdkutils/listeners/TemplateGenerator.java +++ b/src/main/java/com/algorand/sdkutils/listeners/TemplateGenerator.java @@ -303,6 +303,9 @@ public void onEvent(Publisher.Events event, TypeDef type) { case BODY_CONTENT: activeQuery.bodyParameters.add(type); break; + case ENUM_DEFINITION: + // do nothing for enum definitions + break; default: logger.info("unhandled event (Events, TypeDef): {}", event); }