Skip to content

Commit 5d89b72

Browse files
committed
Merge branch '3.0.0' into kotlin
2 parents 3992702 + b23d72c commit 5d89b72

File tree

11 files changed

+144
-5
lines changed

11 files changed

+144
-5
lines changed

bin/jaxrs-jersey1-petstore-server.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ fi
2626

2727
# if you've executed sbt assembly previously it will use that instead.
2828
export JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties"
29-
ags="$@ generate -t modules/swagger-codegen/src/main/resources/JavaJaxRS -i modules/swagger-codegen/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing.yaml -l jaxrs -o samples/server/petstore/jaxrs/jersey1 -DhideGenerationTimestamp=true,serverPort=8080 --library=jersey1 --artifact-id=swagger-jaxrs-jersey1-server"
29+
ags="$@ generate -t modules/swagger-codegen/src/main/resources/JavaJaxRS -i modules/swagger-codegen/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing.yaml -l jaxrs-jersey -o samples/server/petstore/jaxrs/jersey1 -DhideGenerationTimestamp=true,serverPort=8080 --library=jersey1 --artifact-id=swagger-jaxrs-jersey1-server"
3030

3131
echo "Removing files and folders under samples/server/petstore/jaxrs/jersey1/src/main"
3232
rm -rf samples/server/petstore/jaxrs/jersey1/src/main

bin/jaxrs-petstore-server.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ fi
2626

2727
# if you've executed sbt assembly previously it will use that instead.
2828
export JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties"
29-
ags="$@ generate -t modules/swagger-codegen/src/main/resources/JavaJaxRS -i modules/swagger-codegen/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing.yaml -l jaxrs -o samples/server/petstore/jaxrs/jersey2 -DhideGenerationTimestamp=true,serverPort=8080"
29+
ags="$@ generate -t modules/swagger-codegen/src/main/resources/JavaJaxRS -i modules/swagger-codegen/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing.yaml -l jaxrs-jersey -o samples/server/petstore/jaxrs/jersey2 -DhideGenerationTimestamp=true,serverPort=8080"
3030

3131
echo "Removing files and folders under samples/server/petstore/jaxrs/jersey2/src/main"
3232
rm -rf samples/server/petstore/jaxrs/jersey2/src/main

bin/jaxrs-usetags-petstore-server.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ fi
2626

2727
# if you've executed sbt assembly previously it will use that instead.
2828
export JAVA_OPTS="${JAVA_OPTS} -XX:MaxPermSize=256M -Xmx1024M -DloggerPath=conf/log4j.properties"
29-
ags="$@ generate -t modules/swagger-codegen/src/main/resources/JavaJaxRS -i modules/swagger-codegen/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing.yaml -l jaxrs -o samples/server/petstore/jaxrs/jersey2-useTags -DhideGenerationTimestamp=true,serverPort=8080 --artifact-id=swagger-jaxrs-jersey2-useTags --additional-properties useTags=true"
29+
ags="$@ generate -t modules/swagger-codegen/src/main/resources/JavaJaxRS -i modules/swagger-codegen/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing.yaml -l jaxrs-jersey -o samples/server/petstore/jaxrs/jersey2-useTags -DhideGenerationTimestamp=true,serverPort=8080 --artifact-id=swagger-jaxrs-jersey2-useTags --additional-properties useTags=true"
3030

3131
echo "Removing files and folders under samples/server/petstore/jaxrs/jersey2-useTags/src/main"
3232
rm -rf samples/server/petstore/jaxrs/jersey2-useTags/src/main

modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/CLIHelper.java

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import java.net.URL;
1919
import java.util.ArrayList;
2020
import java.util.Arrays;
21+
import java.util.Collections;
2122
import java.util.HashMap;
2223
import java.util.Iterator;
2324
import java.util.List;
@@ -61,6 +62,17 @@ static String[] getArguments(Map<String, Object> extensions) {
6162
return new String[] {extensions.get("x-option").toString()};
6263
}
6364

65+
static String[] getArguments(CodegenArgument codegenArgument) {
66+
List<String> options = new ArrayList<>();
67+
if (StringUtils.isNotBlank(codegenArgument.getOption())) {
68+
options.add(codegenArgument.getOption());
69+
}
70+
if (StringUtils.isNotBlank(codegenArgument.getShortOption())) {
71+
options.add(codegenArgument.getShortOption());
72+
}
73+
return options.toArray(new String[options.size()]);
74+
}
75+
6476
static String detectCommand(String[] args) {
6577
if(args == null || args.length == 0) {
6678
return null;
@@ -72,6 +84,32 @@ static String detectCommand(String[] args) {
7284
return command;
7385
}
7486

87+
static String detectlanguage(String[] args) {
88+
if(args == null || args.length == 0) {
89+
return null;
90+
}
91+
boolean langFlatFound = false;
92+
String language = null;
93+
for (String argument : args) {
94+
argument = argument.trim();
95+
if (langFlatFound) {
96+
if (argument.startsWith("-")) {
97+
return null;
98+
}
99+
return argument;
100+
}
101+
if ("-l".equalsIgnoreCase(argument)
102+
|| "--lang".equalsIgnoreCase(argument)) {
103+
langFlatFound = true;
104+
continue;
105+
}
106+
if (argument.startsWith("-l") && argument.length() > 2) {
107+
return argument.substring(2);
108+
}
109+
}
110+
return language;
111+
}
112+
75113
static Class getClass(Schema property) {
76114
if(property instanceof BooleanSchema) {
77115
return Boolean.class;
@@ -180,7 +218,7 @@ else if (valueNode.isArray()) {
180218
return optionValueMap;
181219
}
182220

183-
private static String fixOptionName(String option) {
221+
static String fixOptionName(String option) {
184222
option = option.substring(countDashes(option));
185223
return option.replace("-", "_");
186224
}

modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/SwaggerCodegen.java

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package io.swagger.codegen;
22

3+
import io.swagger.codegen.cmd.Generate;
34
import io.swagger.v3.oas.models.OpenAPI;
45
import io.swagger.v3.oas.models.media.ArraySchema;
56
import io.swagger.v3.oas.models.media.BooleanSchema;
@@ -18,8 +19,10 @@
1819

1920
import java.lang.reflect.InvocationTargetException;
2021
import java.util.HashMap;
22+
import java.util.List;
2123
import java.util.Map;
2224
import java.util.Set;
25+
import java.util.stream.Collectors;
2326

2427
/**
2528
* User: lanwen Date: 24.03.15 Time: 17:56
@@ -32,6 +35,7 @@ public class SwaggerCodegen {
3235

3336

3437
private static Logger LOGGER = LoggerFactory.getLogger(SwaggerCodegen.class);
38+
private static String GENERATE_COMMAND_NAME = "Generate";
3539

3640
public static void main(String[] args) {
3741
final String oas3 = CLIHelper.loadResourceOAS3File();
@@ -50,6 +54,7 @@ public static void main(String[] args) {
5054
.metavar("Command");
5155

5256
final Map<String, Schema> commandMap = new HashMap<>();
57+
List<CodegenArgument> codegenArguments = null;
5358

5459
for(String schemaName : schemaNames) {
5560
final Schema schema = schemaMap.get(schemaName);
@@ -82,6 +87,28 @@ public static void main(String[] args) {
8287
argument.nargs("*");
8388
}
8489
}
90+
if (command.equalsIgnoreCase(GENERATE_COMMAND_NAME)) {
91+
String language = CLIHelper.detectlanguage(args);
92+
if (StringUtils.isNotBlank(language)) {
93+
CodegenConfig config = CodegenConfigLoader.forName(language);
94+
codegenArguments = config.getLanguageArguments();
95+
if (codegenArguments != null && !codegenArguments.isEmpty()) {
96+
for (CodegenArgument codegenArgument : codegenArguments) {
97+
String[] arguments = CLIHelper.getArguments(codegenArgument);
98+
Class clazz = "boolean".equalsIgnoreCase(codegenArgument.getType()) ? Boolean.class : String.class;
99+
final Argument argument = parser.addArgument(arguments)
100+
.type(clazz)
101+
.help(codegenArgument.getDescription())
102+
.metavar(StringUtils.EMPTY);
103+
if (codegenArgument.getType().equalsIgnoreCase("boolean")) {
104+
argument.nargs("?").setConst(true);
105+
} else if(codegenArgument.getArray() != null && codegenArgument.getArray()) {
106+
argument.nargs("*");
107+
}
108+
}
109+
}
110+
}
111+
}
85112
}
86113
final Map<String, Object> inputArgs = new HashMap<>();
87114
try {
@@ -112,6 +139,26 @@ public static void main(String[] args) {
112139
final Map<String, Object> optionValueMap = CLIHelper.createOptionValueMap(commandSchema, inputArgs);
113140

114141
BeanUtils.populate(commandObject, optionValueMap);
142+
143+
if (codegenArguments != null && !codegenArguments.isEmpty() && commandObject instanceof Generate) {
144+
codegenArguments = codegenArguments.stream()
145+
.filter(codegenArgument -> {
146+
final String option = CLIHelper.fixOptionName(codegenArgument.getOption());
147+
final String optionValue = String.valueOf(inputArgs.get(option));
148+
149+
if (StringUtils.isNotBlank(optionValue) && !"null".equalsIgnoreCase(optionValue)) {
150+
codegenArgument.setValue(optionValue);
151+
return true;
152+
} else {
153+
return false;
154+
}
155+
})
156+
.collect(Collectors.toList());
157+
158+
Generate generateCommand = (Generate) commandObject;
159+
generateCommand.setCodegenArguments(codegenArguments);
160+
}
161+
115162
if(commandObject instanceof Runnable) {
116163
new Thread(((Runnable) commandObject)).start();
117164
}

modules/swagger-codegen-cli/src/main/java/io/swagger/codegen/cmd/Generate.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.fasterxml.jackson.databind.JsonNode;
44
import io.swagger.codegen.CLIHelper;
55
import io.swagger.codegen.ClientOptInput;
6+
import io.swagger.codegen.CodegenArgument;
67
import io.swagger.codegen.DefaultGenerator;
78
import io.swagger.codegen.config.CodegenConfigurator;
89
import io.swagger.v3.core.util.Json;
@@ -73,6 +74,7 @@ public class Generate implements Runnable {
7374
protected String ignoreFileOverride;
7475
protected Boolean removeOperationIdPrefix;
7576
private String url;
77+
private List<CodegenArgument> codegenArguments;
7678

7779
public void setVerbose(Boolean verbose) {
7880
this.verbose = verbose;
@@ -202,6 +204,10 @@ public void setUrl(String url) {
202204
this.url = url;
203205
}
204206

207+
public void setCodegenArguments(List<CodegenArgument> codegenArguments) {
208+
this.codegenArguments = codegenArguments;
209+
}
210+
205211
@Override
206212
public void run() {
207213

@@ -309,6 +315,10 @@ public void run() {
309315
configurator.setRemoveOperationIdPrefix(removeOperationIdPrefix);
310316
}
311317

318+
if (codegenArguments != null && !codegenArguments.isEmpty()) {
319+
configurator.setCodegenArguments(codegenArguments);
320+
}
321+
312322
applySystemPropertiesKvpList(systemProperties, configurator);
313323
applyInstantiationTypesKvpList(instantiationTypes, configurator);
314324
applyImportMappingsKvpList(importMappings, configurator);

modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenArgument.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ public class CodegenArgument {
66
private String shortOption;
77
private String description;
88
private String type;
9+
private String value;
10+
private Boolean isArray = Boolean.FALSE;
911

1012
public String getOption() {
1113
return option;
@@ -58,4 +60,30 @@ public CodegenArgument type(String type) {
5860
this.type = type;
5961
return this;
6062
}
63+
64+
public String getValue() {
65+
return value;
66+
}
67+
68+
public void setValue(String value) {
69+
this.value = value;
70+
}
71+
72+
public CodegenArgument value(String value) {
73+
this.value = value;
74+
return this;
75+
}
76+
77+
public Boolean getArray() {
78+
return isArray;
79+
}
80+
81+
public void setArray(Boolean array) {
82+
isArray = array;
83+
}
84+
85+
public CodegenArgument isArray(Boolean isArray) {
86+
this.isArray = isArray;
87+
return this;
88+
}
6189
}

modules/swagger-codegen/src/main/java/io/swagger/codegen/CodegenConfig.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,4 +221,6 @@ public interface CodegenConfig {
221221
void addHandlebarHelpers(Handlebars handlebars);
222222

223223
List<CodegenArgument> getLanguageArguments();
224+
225+
void processArgumentsValiues(List<CodegenArgument> codegenArguments);
224226
}

modules/swagger-codegen/src/main/java/io/swagger/codegen/DefaultCodegen.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3169,6 +3169,10 @@ public List<CodegenArgument> getLanguageArguments() {
31693169
return null;
31703170
}
31713171

3172+
@Override
3173+
public void processArgumentsValiues(List<CodegenArgument> codegenArguments){
3174+
}
3175+
31723176
/**
31733177
* Only write if the file doesn't exist
31743178
*

modules/swagger-codegen/src/main/java/io/swagger/codegen/config/CodegenConfigurator.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import io.swagger.codegen.CliOption;
66
import io.swagger.codegen.ClientOptInput;
77
import io.swagger.codegen.ClientOpts;
8+
import io.swagger.codegen.CodegenArgument;
89
import io.swagger.codegen.CodegenConfig;
910
import io.swagger.codegen.CodegenConfigLoader;
1011
import io.swagger.codegen.CodegenConstants;
@@ -61,6 +62,7 @@ public class CodegenConfigurator implements Serializable {
6162
private String artifactVersion;
6263
private String library;
6364
private String ignoreFileOverride;
65+
private List<CodegenArgument> codegenArguments;
6466
private Map<String, String> systemProperties = new HashMap<String, String>();
6567
private Map<String, String> instantiationTypes = new HashMap<String, String>();
6668
private Map<String, String> typeMappings = new HashMap<String, String>();
@@ -414,6 +416,8 @@ public ClientOptInput toClientOptInput() {
414416
config.languageSpecificPrimitives().addAll(languageSpecificPrimitives);
415417
config.reservedWordsMappings().putAll(reservedWordMappings);
416418

419+
config.processArgumentsValiues(codegenArguments);
420+
417421
checkAndSetAdditionalProperty(apiPackage, CodegenConstants.API_PACKAGE);
418422
checkAndSetAdditionalProperty(modelPackage, CodegenConstants.MODEL_PACKAGE);
419423
checkAndSetAdditionalProperty(invokerPackage, CodegenConstants.INVOKER_PACKAGE);
@@ -474,6 +478,8 @@ public ClientOptInput toClientOptInput(String content) {
474478
config.languageSpecificPrimitives().addAll(languageSpecificPrimitives);
475479
config.reservedWordsMappings().putAll(reservedWordMappings);
476480

481+
config.processArgumentsValiues(codegenArguments);
482+
477483
checkAndSetAdditionalProperty(apiPackage, CodegenConstants.API_PACKAGE);
478484
checkAndSetAdditionalProperty(modelPackage, CodegenConstants.MODEL_PACKAGE);
479485
checkAndSetAdditionalProperty(invokerPackage, CodegenConstants.INVOKER_PACKAGE);
@@ -550,6 +556,10 @@ private void setVerboseFlags() {
550556
System.setProperty("debugSupportingFiles", "");
551557
}
552558

559+
public void setCodegenArguments(List<CodegenArgument> codegenArguments) {
560+
this.codegenArguments = codegenArguments;
561+
}
562+
553563
private void setSystemProperties() {
554564
for (Map.Entry<String, String> entry : systemProperties.entrySet()) {
555565
System.setProperty(entry.getKey(), entry.getValue());

0 commit comments

Comments
 (0)