From dc707d0ef7df2c85f3c729cab2f37258223fdbcf Mon Sep 17 00:00:00 2001 From: Eric Warehime Date: Thu, 19 May 2022 16:34:51 -0700 Subject: [PATCH 1/3] Allow definition-level enum creation --- .../algorand/sdkutils/generators/OpenApiParser.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/algorand/sdkutils/generators/OpenApiParser.java b/src/main/java/com/algorand/sdkutils/generators/OpenApiParser.java index d6aad3c..4aa9f87 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.NEW_PROPERTY, 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; From 57be9e47f3fdf1021c44f4d9184ada4928c8c5be Mon Sep 17 00:00:00 2001 From: Eric Warehime Date: Thu, 19 May 2022 22:15:17 -0700 Subject: [PATCH 2/3] Update template generator to ignore enums --- .../com/algorand/sdkutils/listeners/TemplateGenerator.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/com/algorand/sdkutils/listeners/TemplateGenerator.java b/src/main/java/com/algorand/sdkutils/listeners/TemplateGenerator.java index 130b3b5..393f3df 100644 --- a/src/main/java/com/algorand/sdkutils/listeners/TemplateGenerator.java +++ b/src/main/java/com/algorand/sdkutils/listeners/TemplateGenerator.java @@ -291,6 +291,9 @@ public void terminate() { public void onEvent(Publisher.Events event, TypeDef type) { switch(event) { case NEW_PROPERTY: + if (type.isOfType("enum")) { + break; + } activeList.add(type); //javaModelWriter.newProperty(type); break; From e3e8f10712d463c661c165e31234a6ac53aa6793 Mon Sep 17 00:00:00 2001 From: Eric Warehime Date: Fri, 20 May 2022 09:47:29 -0700 Subject: [PATCH 3/3] Emit enum event type --- .../com/algorand/sdkutils/generators/OpenApiParser.java | 2 +- .../java/com/algorand/sdkutils/listeners/JavaGenerator.java | 3 +++ .../java/com/algorand/sdkutils/listeners/Publisher.java | 3 +++ .../com/algorand/sdkutils/listeners/TemplateGenerator.java | 6 +++--- 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/algorand/sdkutils/generators/OpenApiParser.java b/src/main/java/com/algorand/sdkutils/generators/OpenApiParser.java index 4aa9f87..c1e35f9 100644 --- a/src/main/java/com/algorand/sdkutils/generators/OpenApiParser.java +++ b/src/main/java/com/algorand/sdkutils/generators/OpenApiParser.java @@ -530,7 +530,7 @@ public void generateAlgodIndexerObjects (JsonNode root) throws IOException { TypeDef clsType = getType(cls.getValue(), true, cls.getKey(), false, false); if (clsType.isOfType("enum")) { - publisher.publish(Events.NEW_PROPERTY, clsType); + publisher.publish(Events.ENUM_DEFINITION, clsType); } if (!hasProperties(cls.getValue())) { 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 393f3df..a59a607 100644 --- a/src/main/java/com/algorand/sdkutils/listeners/TemplateGenerator.java +++ b/src/main/java/com/algorand/sdkutils/listeners/TemplateGenerator.java @@ -291,9 +291,6 @@ public void terminate() { public void onEvent(Publisher.Events event, TypeDef type) { switch(event) { case NEW_PROPERTY: - if (type.isOfType("enum")) { - break; - } activeList.add(type); //javaModelWriter.newProperty(type); break; @@ -306,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); }