Skip to content

Commit 5358d44

Browse files
authored
Merge pull request #9120 from unmerge/issue-9118_Enable_code_generation_for_openfeign_with_spring-boot_2
Enable code generation for OpenFeign with Spring-Boot 2 (#9118)
2 parents c67ffd5 + 6133b9d commit 5358d44

File tree

3 files changed

+27
-5
lines changed

3 files changed

+27
-5
lines changed

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

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ public class SpringCodegen extends AbstractJavaCodegen
3333
public static final String SPRING_CLOUD_LIBRARY = "spring-cloud";
3434
public static final String IMPLICIT_HEADERS = "implicitHeaders";
3535
public static final String SWAGGER_DOCKET_CONFIG = "swaggerDocketConfig";
36+
public static final String TARGET_OPENFEIGN = "generateForOpenFeign";
3637

3738
protected String title = "swagger-petstore";
3839
protected String configPackage = "io.swagger.configuration";
@@ -49,6 +50,7 @@ public class SpringCodegen extends AbstractJavaCodegen
4950
protected boolean implicitHeaders = false;
5051
protected boolean swaggerDocketConfig = false;
5152
protected boolean useOptional = false;
53+
protected boolean openFeign = false;
5254

5355
public SpringCodegen() {
5456
super();
@@ -81,6 +83,7 @@ public SpringCodegen() {
8183
cliOptions.add(CliOption.newBoolean(SWAGGER_DOCKET_CONFIG, "Generate Spring Swagger Docket configuration class."));
8284
cliOptions.add(CliOption.newBoolean(USE_OPTIONAL,
8385
"Use Optional container for optional parameters"));
86+
cliOptions.add(CliOption.newBoolean(TARGET_OPENFEIGN,"Generate for usage with OpenFeign (instead of feign)"));
8487

8588
supportedLibraries.put(DEFAULT_LIBRARY, "Spring-boot Server application using the SpringFox integration.");
8689
supportedLibraries.put(SPRING_MVC_LIBRARY, "Spring-MVC Server application using the SpringFox integration.");
@@ -178,7 +181,7 @@ public void processOpts() {
178181
if (additionalProperties.containsKey(USE_TAGS)) {
179182
this.setUseTags(Boolean.valueOf(additionalProperties.get(USE_TAGS).toString()));
180183
}
181-
184+
182185
if (additionalProperties.containsKey(USE_BEANVALIDATION)) {
183186
this.setUseBeanValidation(convertPropertyToBoolean(USE_BEANVALIDATION));
184187
}
@@ -187,6 +190,10 @@ public void processOpts() {
187190
this.setUseOptional(convertPropertyToBoolean(USE_OPTIONAL));
188191
}
189192

193+
if (additionalProperties.containsKey(TARGET_OPENFEIGN)) {
194+
this.setOpenFeign(convertPropertyToBoolean(TARGET_OPENFEIGN));
195+
}
196+
190197
if (useBeanValidation) {
191198
writePropertyBack(USE_BEANVALIDATION, useBeanValidation);
192199
}
@@ -201,7 +208,7 @@ public void processOpts() {
201208

202209
typeMapping.put("file", "Resource");
203210
importMapping.put("Resource", "org.springframework.core.io.Resource");
204-
211+
205212
if (useOptional) {
206213
writePropertyBack(USE_OPTIONAL, useOptional);
207214
}
@@ -280,7 +287,7 @@ public void processOpts() {
280287
(sourceFolder + File.separator + configPackage).replace(".", java.io.File.separator), "JacksonConfiguration.java"));
281288
}
282289
}
283-
290+
284291
if ((!this.delegatePattern && this.java8) || this.delegateMethod) {
285292
additionalProperties.put("jdk8-no-delegate", true);
286293
}
@@ -301,6 +308,10 @@ public void processOpts() {
301308
additionalProperties.put(RESPONSE_WRAPPER, "Callable");
302309
}
303310

311+
if(this.openFeign){
312+
additionalProperties.put("isOpenFeign", "true");
313+
}
314+
304315
// Some well-known Spring or Spring-Cloud response wrappers
305316
switch (this.responseWrapper) {
306317
case "Future":
@@ -673,7 +684,7 @@ public Map<String, Object> postProcessModelsEnum(Map<String, Object> objs) {
673684

674685
return objs;
675686
}
676-
687+
677688
public void setUseBeanValidation(boolean useBeanValidation) {
678689
this.useBeanValidation = useBeanValidation;
679690
}
@@ -682,4 +693,8 @@ public void setUseBeanValidation(boolean useBeanValidation) {
682693
public void setUseOptional(boolean useOptional) {
683694
this.useOptional = useOptional;
684695
}
696+
697+
public void setOpenFeign(boolean openFeign) {
698+
this.openFeign = openFeign;
699+
}
685700
}

modules/swagger-codegen/src/main/resources/JavaSpring/libraries/spring-cloud/apiClient.mustache

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
package {{package}};
22

3-
import org.springframework.cloud.netflix.feign.FeignClient;
3+
{{^isOpenFeign}}
4+
import org.springframework.cloud.netflix.feign.FeignClient;
5+
{{/isOpenFeign}}
6+
{{#isOpenFeign}}
7+
import org.springframework.cloud.openfeign.FeignClient;
8+
{{/isOpenFeign}}
49
import {{configPackage}}.ClientConfiguration;
510

611
{{=<% %>=}}

modules/swagger-codegen/src/test/java/io/swagger/codegen/options/SpringOptionsProvider.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ public class SpringOptionsProvider extends JavaOptionsProvider {
2222
public static final String IMPLICIT_HEADERS = "false";
2323
public static final String SWAGGER_DOCKET_CONFIG = "false";
2424
public static final String USE_OPTIONAL = "false";
25+
public static final String TARGET_OPENFEIGN = "false";
2526

2627
@Override
2728
public String getLanguage() {
@@ -46,6 +47,7 @@ public Map<String, String> createOptions() {
4647
options.put(SpringCodegen.IMPLICIT_HEADERS, IMPLICIT_HEADERS);
4748
options.put(SpringCodegen.SWAGGER_DOCKET_CONFIG, SWAGGER_DOCKET_CONFIG);
4849
options.put(SpringCodegen.USE_OPTIONAL, USE_OPTIONAL);
50+
options.put(SpringCodegen.TARGET_OPENFEIGN, TARGET_OPENFEIGN);
4951

5052
return options;
5153
}

0 commit comments

Comments
 (0)