From a845ead466b2e60ff86b727d863c1451fe5dde4a Mon Sep 17 00:00:00 2001 From: Darin Kelkhoff Date: Tue, 16 Jan 2024 10:58:20 -0600 Subject: [PATCH] Add option to exclude an enum possible value's fields from docs --- .../actions/GenerateOpenApiSpecAction.java | 20 ++++++++---- .../metadata/fields/ApiFieldMetaData.java | 32 +++++++++++++++++++ 2 files changed, 45 insertions(+), 7 deletions(-) diff --git a/qqq-middleware-api/src/main/java/com/kingsrook/qqq/api/actions/GenerateOpenApiSpecAction.java b/qqq-middleware-api/src/main/java/com/kingsrook/qqq/api/actions/GenerateOpenApiSpecAction.java index 53617063..303ffeff 100644 --- a/qqq-middleware-api/src/main/java/com/kingsrook/qqq/api/actions/GenerateOpenApiSpecAction.java +++ b/qqq-middleware-api/src/main/java/com/kingsrook/qqq/api/actions/GenerateOpenApiSpecAction.java @@ -1477,15 +1477,21 @@ public class GenerateOpenApiSpecAction extends AbstractQActionFunction enumValues = new ArrayList<>(); - List enumMapping = new ArrayList<>(); - for(QPossibleValue enumValue : possibleValueSource.getEnumValues()) + ///////////////////////////////////////////////////////////////////////////////////////////////////////////// + // by default, we will list all enum values in the docs - but - a field's api-meta-data object can opt out // + ///////////////////////////////////////////////////////////////////////////////////////////////////////////// + if(apiFieldMetaData == null || apiFieldMetaData.getListEnumPossibleValues()) { - enumValues.add(String.valueOf(enumValue.getId())); - enumMapping.add(enumValue.getId() + "=" + enumValue.getLabel()); + List enumValues = new ArrayList<>(); + List enumMapping = new ArrayList<>(); + for(QPossibleValue enumValue : possibleValueSource.getEnumValues()) + { + enumValues.add(String.valueOf(enumValue.getId())); + enumMapping.add(enumValue.getId() + "=" + enumValue.getLabel()); + } + fieldSchema.setEnumValues(enumValues); + fieldSchema.setDescription(fieldSchema.getDescription() + " Value definitions are: " + StringUtils.joinWithCommasAndAnd(enumMapping)); } - fieldSchema.setEnumValues(enumValues); - fieldSchema.setDescription(fieldSchema.getDescription() + " Value definitions are: " + StringUtils.joinWithCommasAndAnd(enumMapping)); } else if(QPossibleValueSourceType.TABLE.equals(possibleValueSource.getType())) { diff --git a/qqq-middleware-api/src/main/java/com/kingsrook/qqq/api/model/metadata/fields/ApiFieldMetaData.java b/qqq-middleware-api/src/main/java/com/kingsrook/qqq/api/model/metadata/fields/ApiFieldMetaData.java index 3d479445..78415898 100644 --- a/qqq-middleware-api/src/main/java/com/kingsrook/qqq/api/model/metadata/fields/ApiFieldMetaData.java +++ b/qqq-middleware-api/src/main/java/com/kingsrook/qqq/api/model/metadata/fields/ApiFieldMetaData.java @@ -39,6 +39,7 @@ public class ApiFieldMetaData private String apiFieldName; private String description; + private boolean listEnumPossibleValues = true; private Boolean isExcluded; private String replacedByFieldName; @@ -346,4 +347,35 @@ public class ApiFieldMetaData return (this); } + + + /******************************************************************************* + ** Getter for listEnumPossibleValues + *******************************************************************************/ + public boolean getListEnumPossibleValues() + { + return (this.listEnumPossibleValues); + } + + + + /******************************************************************************* + ** Setter for listEnumPossibleValues + *******************************************************************************/ + public void setListEnumPossibleValues(boolean listEnumPossibleValues) + { + this.listEnumPossibleValues = listEnumPossibleValues; + } + + + + /******************************************************************************* + ** Fluent setter for listEnumPossibleValues + *******************************************************************************/ + public ApiFieldMetaData withListEnumPossibleValues(boolean listEnumPossibleValues) + { + this.listEnumPossibleValues = listEnumPossibleValues; + return (this); + } + }