Add option to exclude an enum possible value's fields from docs

This commit is contained in:
2024-01-16 10:58:20 -06:00
parent 3ebc567299
commit a845ead466
2 changed files with 45 additions and 7 deletions

View File

@ -1477,15 +1477,21 @@ public class GenerateOpenApiSpecAction extends AbstractQActionFunction<GenerateO
QPossibleValueSource possibleValueSource = QContext.getQInstance().getPossibleValueSource(field.getPossibleValueSourceName());
if(QPossibleValueSourceType.ENUM.equals(possibleValueSource.getType()))
{
List<String> enumValues = new ArrayList<>();
List<String> 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<String> enumValues = new ArrayList<>();
List<String> 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()))
{

View File

@ -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);
}
}