Skip to content

Commit 36b1a61

Browse files
authored
[all] Move feature set setter (#5460)
When I originally implemented the feature set code, I added the getter/setter on DefaultCodegen and CodegenConfig as well as on GeneratorMetadata. GeneratorMetadata also includes the library variation features. When I went to add library-specific features, I realized the discrepancy. This removes the public setter from DefaultCodegen/CodegenConfig, and adds a protected modifyFeatureSet which accepts a lambda and hides the builder logic away in the method. This will be a breaking change for anyone who's created a custom generator in 4.2.3, so the impact is very limited.
1 parent ca94454 commit 36b1a61

File tree

115 files changed

+216
-258
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

115 files changed

+216
-258
lines changed

modules/openapi-generator-cli/src/main/java/org/openapitools/codegen/cmd/ConfigHelp.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -268,7 +268,7 @@ private void generateMarkdownHelp(StringBuilder sb, CodegenConfig config) {
268268
if (Boolean.TRUE.equals(featureSets)) {
269269
sb.append(newline).append("## FEATURE SET").append(newline).append(newline);
270270

271-
List<FeatureSet.FeatureSetFlattened> flattened = config.getFeatureSet().flatten();
271+
List<FeatureSet.FeatureSetFlattened> flattened = config.getGeneratorMetadata().getFeatureSet().flatten();
272272
flattened.sort(Comparator.comparing(FeatureSet.FeatureSetFlattened::getFeatureCategory));
273273

274274
AtomicReference<String> lastCategory = new AtomicReference<>();
@@ -385,7 +385,7 @@ private void generatePlainTextHelp(StringBuilder sb, CodegenConfig config) {
385385
if (Boolean.TRUE.equals(featureSets)) {
386386
sb.append(newline).append("FEATURE SET").append(newline);
387387

388-
List<FeatureSet.FeatureSetFlattened> flattened = config.getFeatureSet().flatten();
388+
List<FeatureSet.FeatureSetFlattened> flattened = config.getGeneratorMetadata().getFeatureSet().flatten();
389389
flattened.sort(Comparator.comparing(FeatureSet.FeatureSetFlattened::getFeatureCategory));
390390

391391
AtomicReference<String> lastCategory = new AtomicReference<>();

modules/openapi-generator/src/main/java/org/openapitools/codegen/CodegenConfig.java

-2
Original file line numberDiff line numberDiff line change
@@ -287,8 +287,6 @@ public interface CodegenConfig {
287287

288288
FeatureSet getFeatureSet();
289289

290-
void setFeatureSet(FeatureSet featureSet);
291-
292290
boolean isRemoveEnumValuePrefix();
293291

294292
void setRemoveEnumValuePrefix(boolean removeEnumValuePrefix);

modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java

+10-9
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@
6767
import java.io.File;
6868
import java.util.*;
6969
import java.util.Map.Entry;
70+
import java.util.function.Consumer;
7071
import java.util.regex.Matcher;
7172
import java.util.regex.Pattern;
7273
import java.util.stream.Collectors;
@@ -124,7 +125,6 @@ public class DefaultCodegen implements CodegenConfig {
124125
.build();
125126
}
126127

127-
protected FeatureSet featureSet;
128128
protected GeneratorMetadata generatorMetadata;
129129
protected String inputSpec;
130130
protected String outputFolder = "";
@@ -1289,10 +1289,9 @@ public DefaultCodegen() {
12891289
codegenType = CodegenType.OTHER;
12901290
}
12911291

1292-
featureSet = DefaultFeatureSet;
1293-
12941292
generatorMetadata = GeneratorMetadata.newBuilder()
12951293
.stability(Stability.STABLE)
1294+
.featureSet(DefaultFeatureSet)
12961295
.generationMessage(String.format(Locale.ROOT, "OpenAPI Generator: %s (%s)", getName(), codegenType.toValue()))
12971296
.build();
12981297

@@ -5676,12 +5675,7 @@ public void setStrictSpecBehavior(final boolean strictSpecBehavior) {
56765675

56775676
@Override
56785677
public FeatureSet getFeatureSet() {
5679-
return this.featureSet;
5680-
}
5681-
5682-
@Override
5683-
public void setFeatureSet(final FeatureSet featureSet) {
5684-
this.featureSet = featureSet == null ? DefaultFeatureSet : featureSet;
5678+
return this.generatorMetadata.getFeatureSet();
56855679
}
56865680

56875681
/**
@@ -5746,4 +5740,11 @@ public void addOneOfInterfaceModel(ComposedSchema cs, String type) {
57465740

57475741
public void addImportsToOneOfInterface(List<Map<String, String>> imports) {}
57485742
//// End of methods related to the "useOneOfInterfaces" feature
5743+
5744+
protected void modifyFeatureSet(Consumer<FeatureSet.Builder> processor) {
5745+
FeatureSet.Builder builder = getFeatureSet().modify();
5746+
processor.accept(builder);
5747+
this.generatorMetadata = GeneratorMetadata.newBuilder(generatorMetadata)
5748+
.featureSet(builder.build()).build();
5749+
}
57495750
}

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractJavaCodegen.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ public abstract class AbstractJavaCodegen extends DefaultCodegen implements Code
101101
public AbstractJavaCodegen() {
102102
super();
103103

104-
featureSet = getFeatureSet().modify()
104+
modifyFeatureSet(features -> features
105105
.includeDocumentationFeatures(DocumentationFeature.Readme)
106106
.wireFormatFeatures(EnumSet.of(WireFormatFeature.JSON, WireFormatFeature.XML))
107107
.securityFeatures(EnumSet.noneOf(
@@ -119,7 +119,7 @@ public AbstractJavaCodegen() {
119119
.includeClientModificationFeatures(
120120
ClientModificationFeature.BasePath
121121
)
122-
.build();
122+
);
123123

124124
supportsInheritance = true;
125125
modelTemplateFiles.put("model.mustache", ".java");

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ public abstract class AbstractTypeScriptClientCodegen extends DefaultCodegen imp
8282
public AbstractTypeScriptClientCodegen() {
8383
super();
8484

85-
featureSet = getFeatureSet().modify()
85+
modifyFeatureSet(features -> features
8686
.includeDocumentationFeatures(DocumentationFeature.Readme)
8787
.wireFormatFeatures(EnumSet.of(WireFormatFeature.JSON, WireFormatFeature.XML))
8888
.securityFeatures(EnumSet.noneOf(
@@ -100,7 +100,7 @@ public AbstractTypeScriptClientCodegen() {
100100
.includeClientModificationFeatures(
101101
ClientModificationFeature.BasePath
102102
)
103-
.build();
103+
);
104104

105105
// clear import mapping (from default generator) as TS does not use it
106106
// at the moment

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AdaCodegen.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ public void processOpts() {
5757
super.processOpts();
5858

5959
// TODO: Ada maintainer review.
60-
featureSet = getFeatureSet().modify()
60+
modifyFeatureSet(features -> features
6161
.excludeDocumentationFeatures(DocumentationFeature.Readme)
6262
.excludeWireFormatFeatures(
6363
WireFormatFeature.XML,
@@ -86,7 +86,7 @@ public void processOpts() {
8686
ParameterFeature.Cookie
8787
)
8888
.includeClientModificationFeatures(ClientModificationFeature.BasePath)
89-
.build();
89+
);
9090

9191
if (additionalProperties.containsKey(CodegenConstants.PACKAGE_NAME)) {
9292
packageName = (String) additionalProperties.get(CodegenConstants.PACKAGE_NAME);

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AdaServerCodegen.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public AdaServerCodegen() {
3636
super();
3737

3838
// TODO: Ada maintainer review.
39-
featureSet = getFeatureSet().modify()
39+
modifyFeatureSet(features -> features
4040
.includeDocumentationFeatures(DocumentationFeature.Readme)
4141
.excludeWireFormatFeatures(
4242
WireFormatFeature.XML,
@@ -64,7 +64,7 @@ public AdaServerCodegen() {
6464
ParameterFeature.Cookie
6565
)
6666
.includeClientModificationFeatures(ClientModificationFeature.BasePath)
67-
.build();
67+
);
6868
}
6969

7070
@Override

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AndroidClientCodegen.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ public AndroidClientCodegen() {
6161
super();
6262

6363
// TODO: Android client maintainer review.
64-
featureSet = getFeatureSet().modify()
64+
modifyFeatureSet(features -> features
6565
.includeDocumentationFeatures(DocumentationFeature.Readme)
6666
.excludeWireFormatFeatures(
6767
WireFormatFeature.PROTOBUF
@@ -87,7 +87,7 @@ public AndroidClientCodegen() {
8787
ParameterFeature.Cookie
8888
)
8989
.includeClientModificationFeatures(ClientModificationFeature.BasePath)
90-
.build();
90+
);
9191

9292
outputFolder = "generated-code/android";
9393
modelTemplateFiles.put("model.mustache", ".java");

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/Apache2ConfigCodegen.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ public Apache2ConfigCodegen() {
5252
super();
5353

5454
// TODO: Apache2 maintainer review.
55-
featureSet = getFeatureSet().modify()
55+
modifyFeatureSet(features -> features
5656
.parameterFeatures(EnumSet.of(ParameterFeature.Path))
5757
.securityFeatures(EnumSet.of(SecurityFeature.BasicAuth))
5858
.dataTypeFeatures(EnumSet.noneOf(DataTypeFeature.class))
@@ -61,7 +61,7 @@ public Apache2ConfigCodegen() {
6161
.globalFeatures(EnumSet.noneOf(GlobalFeature.class))
6262
.schemaSupportFeatures(EnumSet.noneOf(SchemaSupportFeature.class))
6363
.clientModificationFeatures(EnumSet.noneOf(ClientModificationFeature.class))
64-
.build();
64+
);
6565

6666
apiTemplateFiles.put("apache-config.mustache", ".conf");
6767

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AsciidocDocumentationCodegen.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -187,13 +187,13 @@ public AsciidocDocumentationCodegen() {
187187
super();
188188

189189
// TODO: Asciidoc maintainer review.
190-
featureSet = getFeatureSet().modify()
190+
modifyFeatureSet(features -> features
191191
.securityFeatures(EnumSet.noneOf(SecurityFeature.class))
192192
.documentationFeatures(EnumSet.noneOf(DocumentationFeature.class))
193193
.globalFeatures(EnumSet.noneOf(GlobalFeature.class))
194194
.schemaSupportFeatures(EnumSet.noneOf(SchemaSupportFeature.class))
195195
.clientModificationFeatures(EnumSet.noneOf(ClientModificationFeature.class))
196-
.build();
196+
);
197197

198198
LOGGER.trace("start asciidoc codegen");
199199

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AspNetCoreServerCodegen.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ public AspNetCoreServerCodegen() {
8989
super();
9090

9191
// TODO: AspnetCore community review
92-
featureSet = getFeatureSet().modify()
92+
modifyFeatureSet(features -> features
9393
.includeDocumentationFeatures(DocumentationFeature.Readme)
9494
.excludeWireFormatFeatures(WireFormatFeature.PROTOBUF)
9595
.includeSecurityFeatures(
@@ -117,7 +117,7 @@ public AspNetCoreServerCodegen() {
117117
.includeParameterFeatures(
118118
ParameterFeature.Cookie
119119
)
120-
.build();
120+
);
121121

122122
outputFolder = "generated-code" + File.separator + getName();
123123

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AvroSchemaCodegen.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public AvroSchemaCodegen() {
4444
.build();
4545

4646
// TODO: Avro maintainer review.
47-
featureSet = getFeatureSet().modify()
47+
modifyFeatureSet(features -> features
4848
.parameterFeatures(EnumSet.noneOf(ParameterFeature.class))
4949
.securityFeatures(EnumSet.noneOf(SecurityFeature.class))
5050
.wireFormatFeatures(EnumSet.noneOf(WireFormatFeature.class))
@@ -55,7 +55,7 @@ public AvroSchemaCodegen() {
5555
SchemaSupportFeature.Union
5656
)
5757
.clientModificationFeatures(EnumSet.noneOf(ClientModificationFeature.class))
58-
.build();
58+
);
5959

6060
outputFolder = "generated-code/avro-schema";
6161
modelTemplateFiles.put("model.mustache", ".avsc");

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/BashClientCodegen.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ public BashClientCodegen() {
103103
super();
104104

105105
// TODO: Bash maintainer review
106-
featureSet = getFeatureSet().modify()
106+
modifyFeatureSet(features -> features
107107
.documentationFeatures(EnumSet.of(
108108
DocumentationFeature.Readme
109109
))
@@ -125,7 +125,7 @@ public BashClientCodegen() {
125125
SchemaSupportFeature.Polymorphism,
126126
SchemaSupportFeature.Union
127127
)
128-
.build();
128+
);
129129

130130
setReservedWordsLowerCase(
131131
Arrays.asList(

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CLibcurlClientCodegen.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ public CLibcurlClientCodegen() {
5353
// TODO: c maintainer review
5454
// Assumes that C community considers api/model header files as documentation.
5555
// Generator supports Basic, OAuth, and API key explicitly. Bearer is excluded although clients are able to set headers directly.
56-
featureSet = getFeatureSet().modify()
56+
modifyFeatureSet(features -> features
5757
.includeDocumentationFeatures(
5858
DocumentationFeature.Readme
5959
)
@@ -73,7 +73,7 @@ public CLibcurlClientCodegen() {
7373
SchemaSupportFeature.Polymorphism,
7474
SchemaSupportFeature.Union
7575
)
76-
.build();
76+
);
7777

7878
modelPackage = "models";
7979
apiPackage = "api";

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpClientCodegen.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ public class CSharpClientCodegen extends AbstractCSharpCodegen {
8080
public CSharpClientCodegen() {
8181
super();
8282

83-
featureSet = getFeatureSet().modify()
83+
modifyFeatureSet(features -> features
8484
.includeDocumentationFeatures(DocumentationFeature.Readme)
8585
.securityFeatures(EnumSet.of(
8686
SecurityFeature.OAuth2_Implicit,
@@ -103,7 +103,7 @@ public CSharpClientCodegen() {
103103
ClientModificationFeature.BasePath,
104104
ClientModificationFeature.UserAgent
105105
)
106-
.build();
106+
);
107107

108108
supportsInheritance = true;
109109
modelTemplateFiles.put("model.mustache", ".cs");

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpDotNet2ClientCodegen.java

+1-3
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,7 @@ public class CSharpDotNet2ClientCodegen extends AbstractCSharpCodegen {
4141
public CSharpDotNet2ClientCodegen() {
4242
super();
4343

44-
featureSet = getFeatureSet().modify()
45-
.includeDocumentationFeatures(DocumentationFeature.Readme)
46-
.build();
44+
modifyFeatureSet(features -> features.includeDocumentationFeatures(DocumentationFeature.Readme));
4745

4846
generatorMetadata = GeneratorMetadata.newBuilder(generatorMetadata)
4947
.stability(Stability.DEPRECATED)

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpNancyFXServerCodegen.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ public class CSharpNancyFXServerCodegen extends AbstractCSharpCodegen {
6969
public CSharpNancyFXServerCodegen() {
7070
super();
7171

72-
featureSet = getFeatureSet().modify()
72+
modifyFeatureSet(features -> features
7373
.excludeDocumentationFeatures(DocumentationFeature.Readme)
7474
.securityFeatures(EnumSet.noneOf(SecurityFeature.class))
7575
.excludeGlobalFeatures(
@@ -84,7 +84,7 @@ public CSharpNancyFXServerCodegen() {
8484
.excludeParameterFeatures(
8585
ParameterFeature.Cookie
8686
)
87-
.build();
87+
);
8888

8989
outputFolder = "generated-code" + File.separator + getName();
9090
apiTemplateFiles.put("api.mustache", ".cs");

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CSharpNetCoreClientCodegen.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ public class CSharpNetCoreClientCodegen extends AbstractCSharpCodegen {
9292
public CSharpNetCoreClientCodegen() {
9393
super();
9494

95-
featureSet = getFeatureSet().modify()
95+
modifyFeatureSet(features -> features
9696
.includeDocumentationFeatures(DocumentationFeature.Readme)
9797
.securityFeatures(EnumSet.of(
9898
SecurityFeature.OAuth2_Implicit,
@@ -115,7 +115,7 @@ public CSharpNetCoreClientCodegen() {
115115
ClientModificationFeature.BasePath,
116116
ClientModificationFeature.UserAgent
117117
)
118-
.build();
118+
);
119119

120120
// mapped non-nullable type without ?
121121
typeMapping = new HashMap<String, String>();

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ClojureClientCodegen.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ public ClojureClientCodegen() {
6464
super();
6565

6666
// TODO: Clojure maintainer review
67-
featureSet = getFeatureSet().modify()
67+
modifyFeatureSet(features -> features
6868
.excludeDocumentationFeatures(
6969
DocumentationFeature.Readme
7070
)
@@ -80,7 +80,7 @@ public ClojureClientCodegen() {
8080
SchemaSupportFeature.Polymorphism,
8181
SchemaSupportFeature.Union
8282
)
83-
.build();
83+
);
8484

8585
outputFolder = "generated-code" + File.separator + "clojure";
8686
modelTemplateFiles.put("spec.mustache", ".clj");

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/ConfluenceWikiCodegen.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public ConfluenceWikiCodegen() {
3636
super();
3737

3838
// TODO: ConfluenceWiki maintainer review
39-
featureSet = getFeatureSet().modify()
39+
modifyFeatureSet(features -> features
4040
.documentationFeatures(EnumSet.noneOf(DocumentationFeature.class))
4141
.securityFeatures(EnumSet.noneOf(SecurityFeature.class))
4242
.excludeParameterFeatures(ParameterFeature.Cookie)
@@ -49,7 +49,7 @@ public ConfluenceWikiCodegen() {
4949
SchemaSupportFeature.Polymorphism,
5050
SchemaSupportFeature.Union
5151
)
52-
.build();
52+
);
5353

5454
outputFolder = "docs";
5555
embeddedTemplateDir = templateDir = "confluenceWikiDocs";

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppPistacheServerCodegen.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ public CppPistacheServerCodegen() {
6969
super();
7070

7171
// TODO: cpp-pistache-server maintainer review
72-
featureSet = getFeatureSet().modify()
72+
modifyFeatureSet(features -> features
7373
.includeDocumentationFeatures(DocumentationFeature.Readme)
7474
.securityFeatures(EnumSet.noneOf(SecurityFeature.class))
7575
.excludeGlobalFeatures(
@@ -85,7 +85,7 @@ public CppPistacheServerCodegen() {
8585
.excludeParameterFeatures(
8686
ParameterFeature.Cookie
8787
)
88-
.build();
88+
);
8989

9090
if (StringUtils.isEmpty(modelNamePrefix)) {
9191
modelNamePrefix = PREFIX;

0 commit comments

Comments
 (0)