Skip to content

Commit f9cf78e

Browse files
authored
Merge pull request #3133 from cbornet/spring_unite
[Spring] put spring-mvc and spring-boot under the same language gen
2 parents 7b51522 + 426cc6b commit f9cf78e

File tree

136 files changed

+3592
-3295
lines changed

Some content is hidden

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

136 files changed

+3592
-3295
lines changed

bin/spring-mvc-petstore-j8-async-server.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,6 @@ 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/JavaSpringMVC -i modules/swagger-codegen/src/test/resources/2_0/petstore.yaml -l spring-mvc -o samples/server/petstore/spring-mvc-j8-async -c bin/spring-mvc-petstore-j8-async.json"
29+
ags="$@ generate -t modules/swagger-codegen/src/main/resources/JavaSpring -i modules/swagger-codegen/src/test/resources/2_0/petstore.yaml -l spring --library spring-mvc -o samples/server/petstore/spring-mvc-j8-async -c bin/spring-mvc-petstore-j8-async.json -DhideGenerationTimestamp=true,java8=true,async=true"
3030

3131
java $JAVA_OPTS -jar $executable $ags

bin/spring-mvc-petstore-server.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,6 @@ 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/JavaSpringMVC -i modules/swagger-codegen/src/test/resources/2_0/petstore.yaml -l spring-mvc -o samples/server/petstore/spring-mvc"
29+
ags="$@ generate -t modules/swagger-codegen/src/main/resources/JavaSpring -i modules/swagger-codegen/src/test/resources/2_0/petstore.yaml -l spring --library spring-mvc -o samples/server/petstore/spring-mvc -DhideGenerationTimestamp=true"
3030

3131
java $JAVA_OPTS -jar $executable $ags

bin/spring-stubs.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,6 @@ 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 -i modules/swagger-codegen/src/test/resources/2_0/petstore.yaml -l springboot -o samples/client/petstore/spring-stubs -DinterfaceOnly=true,singleContentTypes=true"
29+
ags="$@ generate -i modules/swagger-codegen/src/test/resources/2_0/petstore.yaml -l spring -o samples/client/petstore/spring-stubs -DinterfaceOnly=true,singleContentTypes=true,hideGenerationTimestamp=true"
3030

3131
java $JAVA_OPTS -jar $executable $ags

bin/springboot-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/JavaSpringBoot -i modules/swagger-codegen/src/test/resources/2_0/petstore.yaml -l springboot -o samples/server/petstore/springboot -DhideGenerationTimestamp=true"
29+
ags="$@ generate -t modules/swagger-codegen/src/main/resources/JavaSpring -i modules/swagger-codegen/src/test/resources/2_0/petstore.yaml -l spring -o samples/server/petstore/springboot -DhideGenerationTimestamp=true"
3030

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

modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaClientCodegen.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@ public JavaClientCodegen() {
4040
supportedLibraries.put(RETROFIT_2, "HTTP client: OkHttp 3.2.0. JSON processing: Gson 2.6.1 (Retrofit 2.0.2). Enable the RxJava adapter using '-DuseRxJava=true'. (RxJava 1.1.3)");
4141

4242
CliOption library = new CliOption(CodegenConstants.LIBRARY, "library template (sub-template) to use");
43-
library.setDefault(DEFAULT_LIBRARY);
4443
library.setEnum(supportedLibraries);
4544
library.setDefault(DEFAULT_LIBRARY);
4645
cliOptions.add(library);
Lines changed: 32 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@
99
import java.io.File;
1010
import java.util.*;
1111

12-
public class SpringBootServerCodegen extends AbstractJavaCodegen {
12+
public class SpringCodegen extends AbstractJavaCodegen {
13+
public static final String DEFAULT_LIBRARY = "spring-boot";
1314
public static final String CONFIG_PACKAGE = "configPackage";
1415
public static final String BASE_PACKAGE = "basePackage";
1516
public static final String INTERFACE_ONLY = "interfaceOnly";
@@ -24,15 +25,15 @@ public class SpringBootServerCodegen extends AbstractJavaCodegen {
2425
protected boolean java8 = false;
2526
protected boolean async = false;
2627

27-
public SpringBootServerCodegen() {
28+
public SpringCodegen() {
2829
super();
29-
outputFolder = "generated-code/javaSpringBoot";
30+
outputFolder = "generated-code/javaSpring";
3031
apiTestTemplateFiles.clear(); // TODO: add test template
31-
embeddedTemplateDir = templateDir = "JavaSpringBoot";
32+
embeddedTemplateDir = templateDir = "JavaSpring";
3233
apiPackage = "io.swagger.api";
3334
modelPackage = "io.swagger.model";
3435
invokerPackage = "io.swagger.api";
35-
artifactId = "swagger-springboot-server";
36+
artifactId = "swagger-spring-server";
3637

3738
additionalProperties.put("title", title);
3839
additionalProperties.put(CONFIG_PACKAGE, configPackage);
@@ -45,17 +46,15 @@ public SpringBootServerCodegen() {
4546
cliOptions.add(CliOption.newBoolean(JAVA_8, "use java8 default interface"));
4647
cliOptions.add(CliOption.newBoolean(ASYNC, "use async Callable controllers"));
4748

48-
supportedLibraries.put(DEFAULT_LIBRARY, "Default Spring Boot server stub.");
49-
supportedLibraries.put("j8-async", "Use async servlet feature and Java 8's default interface. Generating interface with service " +
50-
"declaration is useful when using Maven plugin. Just provide a implementation with @Controller to instantiate service." +
51-
"(DEPRECATED: use -Djava8=true,async=true instead)");
49+
supportedLibraries.put(DEFAULT_LIBRARY, "Spring-boot Server application using the SpringFox integration.");
50+
supportedLibraries.put("spring-mvc", "Spring-MVC Server application using the SpringFox integration.");
51+
setLibrary(DEFAULT_LIBRARY);
5252

5353
CliOption library = new CliOption(CodegenConstants.LIBRARY, "library template (sub-template) to use");
5454
library.setDefault(DEFAULT_LIBRARY);
5555
library.setEnum(supportedLibraries);
5656
library.setDefault(DEFAULT_LIBRARY);
5757
cliOptions.add(library);
58-
5958
}
6059

6160
@Override
@@ -65,7 +64,7 @@ public CodegenType getTag() {
6564

6665
@Override
6766
public String getName() {
68-
return "springboot";
67+
return "spring";
6968
}
7069

7170
@Override
@@ -122,17 +121,24 @@ public void processOpts() {
122121
(sourceFolder + File.separator + apiPackage).replace(".", java.io.File.separator), "NotFoundException.java"));
123122
supportingFiles.add(new SupportingFile("swaggerDocumentationConfig.mustache",
124123
(sourceFolder + File.separator + configPackage).replace(".", java.io.File.separator), "SwaggerDocumentationConfig.java"));
125-
supportingFiles.add(new SupportingFile("homeController.mustache",
126-
(sourceFolder + File.separator + configPackage).replace(".", java.io.File.separator), "HomeController.java"));
127-
supportingFiles.add(new SupportingFile("swagger2SpringBoot.mustache",
128-
(sourceFolder + File.separator + basePackage).replace(".", java.io.File.separator), "Swagger2SpringBoot.java"));
129-
supportingFiles.add(new SupportingFile("application.properties",
130-
("src.main.resources").replace(".", java.io.File.separator), "application.properties"));
131-
}
132-
133-
if ("j8-async".equals(getLibrary())) {
134-
setJava8(true);
135-
setAsync(true);
124+
if (library.equals(DEFAULT_LIBRARY)) {
125+
supportingFiles.add(new SupportingFile("homeController.mustache",
126+
(sourceFolder + File.separator + configPackage).replace(".", java.io.File.separator), "HomeController.java"));
127+
supportingFiles.add(new SupportingFile("swagger2SpringBoot.mustache",
128+
(sourceFolder + File.separator + basePackage).replace(".", java.io.File.separator), "Swagger2SpringBoot.java"));
129+
supportingFiles.add(new SupportingFile("application.properties",
130+
("src.main.resources").replace(".", java.io.File.separator), "application.properties"));
131+
}
132+
if (library.equals("spring-mvc")) {
133+
supportingFiles.add(new SupportingFile("webApplication.mustache",
134+
(sourceFolder + File.separator + configPackage).replace(".", java.io.File.separator), "WebApplication.java"));
135+
supportingFiles.add(new SupportingFile("webMvcConfiguration.mustache",
136+
(sourceFolder + File.separator + configPackage).replace(".", java.io.File.separator), "WebMvcConfiguration.java"));
137+
supportingFiles.add(new SupportingFile("swaggerUiConfiguration.mustache",
138+
(sourceFolder + File.separator + configPackage).replace(".", java.io.File.separator), "SwaggerUiConfiguration.java"));
139+
supportingFiles.add(new SupportingFile("application.properties",
140+
("src.main.resources").replace(".", java.io.File.separator), "swagger.properties"));
141+
}
136142
}
137143

138144
if (this.java8) {
@@ -285,34 +291,15 @@ public void setSingleContentTypes(boolean singleContentTypes) {
285291
public void setJava8(boolean java8) { this.java8 = java8; }
286292

287293
public void setAsync(boolean async) { this.async = async; }
288-
289-
@Override
290-
public Map<String, Object> postProcessModels(Map<String, Object> objs) {
291-
// remove the import of "Object" to avoid compilation error
292-
List<Map<String, String>> imports = (List<Map<String, String>>) objs.get("imports");
293-
Iterator<Map<String, String>> iterator = imports.iterator();
294-
while (iterator.hasNext()) {
295-
String _import = iterator.next().get("import");
296-
if (_import.endsWith(".Object")) iterator.remove();
297-
}
298-
List<Object> models = (List<Object>) objs.get("models");
299-
for (Object _mo : models) {
300-
Map<String, Object> mo = (Map<String, Object>) _mo;
301-
CodegenModel cm = (CodegenModel) mo.get("model");
302-
for (CodegenProperty var : cm.vars) {
303-
// handle default value for enum, e.g. available => StatusEnum.available
304-
if (var.isEnum && var.defaultValue != null && !"null".equals(var.defaultValue)) {
305-
var.defaultValue = var.datatypeWithEnum + "." + var.defaultValue;
306-
}
307-
}
308-
}
309-
return objs;
310-
}
311294

312295
@Override
313296
public void postProcessModelProperty(CodegenModel model, CodegenProperty property) {
314297
super.postProcessModelProperty(model, property);
315298

299+
if("null".equals(property.example)) {
300+
property.example = null;
301+
}
302+
316303
//Add imports for Jackson
317304
if(!BooleanUtils.toBoolean(model.isEnum)) {
318305
model.imports.add("JsonProperty");

0 commit comments

Comments
 (0)