Skip to content

Commit 219cb45

Browse files
authored
Merge pull request #480 from babltiga/open-feign-support
Open Feign Support
2 parents 202de30 + c88cafd commit 219cb45

File tree

10 files changed

+82
-12
lines changed

10 files changed

+82
-12
lines changed

src/main/java/io/swagger/codegen/v3/generators/java/Spring2Codegen.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ public class Spring2Codegen extends AbstractJavaCodegen implements BeanValidatio
4242
public static final String SPRING_CLOUD_LIBRARY = "spring-cloud";
4343
public static final String IMPLICIT_HEADERS = "implicitHeaders";
4444
public static final String SWAGGER_DOCKET_CONFIG = "swaggerDocketConfig";
45+
public static final String TARGET_OPENFEIGN = "generateForOpenFeign";
4546

4647
protected String title = "swagger-petstore";
4748
protected String configPackage = "io.swagger.configuration";
@@ -58,6 +59,7 @@ public class Spring2Codegen extends AbstractJavaCodegen implements BeanValidatio
5859
protected boolean implicitHeaders = false;
5960
protected boolean swaggerDocketConfig = false;
6061
protected boolean useOptional = false;
62+
protected boolean openFeign = false;
6163

6264
public Spring2Codegen() {
6365
super();
@@ -88,6 +90,7 @@ public Spring2Codegen() {
8890
cliOptions.add(CliOption.newBoolean(SWAGGER_DOCKET_CONFIG, "Generate Spring Swagger Docket configuration class."));
8991
cliOptions.add(CliOption.newBoolean(USE_OPTIONAL,
9092
"Use Optional container for optional parameters"));
93+
cliOptions.add(CliOption.newBoolean(TARGET_OPENFEIGN,"Generate for usage with OpenFeign (instead of feign)"));
9194

9295
supportedLibraries.put(DEFAULT_LIBRARY, "Spring-boot Server application using the SpringFox integration.");
9396
supportedLibraries.put(SPRING_MVC_LIBRARY, "Spring-MVC Server application using the SpringFox integration.");
@@ -200,6 +203,10 @@ public void processOpts() {
200203
this.setUseOptional(convertPropertyToBoolean(USE_OPTIONAL));
201204
}
202205

206+
if (additionalProperties.containsKey(TARGET_OPENFEIGN)) {
207+
this.setOpenFeign(convertPropertyToBoolean(TARGET_OPENFEIGN));
208+
}
209+
203210
if (useBeanValidation) {
204211
writePropertyBack(USE_BEANVALIDATION, useBeanValidation);
205212
}
@@ -316,6 +323,10 @@ public void processOpts() {
316323
additionalProperties.put(RESPONSE_WRAPPER, "Callable");
317324
}
318325

326+
if(this.openFeign){
327+
additionalProperties.put("isOpenFeign", "true");
328+
}
329+
319330
// Some well-known Spring or Spring-Cloud response wrappers
320331
switch (this.responseWrapper) {
321332
case "Future":
@@ -745,4 +756,8 @@ public void setUseBeanValidation(boolean useBeanValidation) {
745756
public void setUseOptional(boolean useOptional) {
746757
this.useOptional = useOptional;
747758
}
759+
760+
public void setOpenFeign(boolean openFeign) {
761+
this.openFeign = openFeign;
762+
}
748763
}

src/main/java/io/swagger/codegen/v3/generators/java/SpringCodegen.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ public class SpringCodegen extends AbstractJavaCodegen implements BeanValidation
6161
public static final String SPRING_CLOUD_LIBRARY = "spring-cloud";
6262
public static final String IMPLICIT_HEADERS = "implicitHeaders";
6363
public static final String SWAGGER_DOCKET_CONFIG = "swaggerDocketConfig";
64+
public static final String TARGET_OPENFEIGN = "generateForOpenFeign";
6465

6566
protected String title = "swagger-petstore";
6667
protected String configPackage = "io.swagger.configuration";
@@ -77,6 +78,7 @@ public class SpringCodegen extends AbstractJavaCodegen implements BeanValidation
7778
protected boolean implicitHeaders = false;
7879
protected boolean swaggerDocketConfig = false;
7980
protected boolean useOptional = false;
81+
protected boolean openFeign = false;
8082

8183
public SpringCodegen() {
8284
super();
@@ -107,6 +109,7 @@ public SpringCodegen() {
107109
cliOptions.add(CliOption.newBoolean(SWAGGER_DOCKET_CONFIG, "Generate Spring Swagger Docket configuration class."));
108110
cliOptions.add(CliOption.newBoolean(USE_OPTIONAL,
109111
"Use Optional container for optional parameters"));
112+
cliOptions.add(CliOption.newBoolean(TARGET_OPENFEIGN,"Generate for usage with OpenFeign (instead of feign)"));
110113

111114
supportedLibraries.put(DEFAULT_LIBRARY, "Spring-boot Server application using the SpringFox integration.");
112115
supportedLibraries.put(SPRING_MVC_LIBRARY, "Spring-MVC Server application using the SpringFox integration.");
@@ -219,6 +222,10 @@ public void processOpts() {
219222
this.setUseOptional(convertPropertyToBoolean(USE_OPTIONAL));
220223
}
221224

225+
if (additionalProperties.containsKey(TARGET_OPENFEIGN)) {
226+
this.setOpenFeign(convertPropertyToBoolean(TARGET_OPENFEIGN));
227+
}
228+
222229
if (useBeanValidation) {
223230
writePropertyBack(USE_BEANVALIDATION, useBeanValidation);
224231
}
@@ -335,6 +342,10 @@ public void processOpts() {
335342
additionalProperties.put(RESPONSE_WRAPPER, "Callable");
336343
}
337344

345+
if(this.openFeign){
346+
additionalProperties.put("isOpenFeign", "true");
347+
}
348+
338349
// Some well-known Spring or Spring-Cloud response wrappers
339350
switch (this.responseWrapper) {
340351
case "Future":
@@ -764,4 +775,8 @@ public void setUseBeanValidation(boolean useBeanValidation) {
764775
public void setUseOptional(boolean useOptional) {
765776
this.useOptional = useOptional;
766777
}
778+
779+
public void setOpenFeign(boolean openFeign) {
780+
this.openFeign = openFeign;
781+
}
767782
}

src/main/resources/handlebars/JavaSpring/libraries/spring-cloud/Application.mustache

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,12 @@ package io.swagger;
33
import feign.Logger;
44
import org.springframework.boot.autoconfigure.SpringBootApplication;
55
import org.springframework.boot.builder.SpringApplicationBuilder;
6-
import org.springframework.cloud.netflix.feign.EnableFeignClients;
6+
{{^isOpenFeign}}
7+
import org.springframework.cloud.netflix.feign.EnableFeignClients;
8+
{{/isOpenFeign}}
9+
{{#isOpenFeign}}
10+
import org.springframework.cloud.openfeign.EnableFeignClients;
11+
{{/isOpenFeign}}
712
import org.springframework.context.annotation.Bean;
813

914
@SpringBootApplication
Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
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
{{=<% %>=}}
712
@FeignClient(name="${<%title%>.name:<%title%>}", url="${<%title%>.url:<%basePath%>}", configuration = ClientConfiguration.class)
813
<%={{ }}=%>
914
public interface {{classname}}Client extends {{classname}} {
10-
}
15+
}

src/main/resources/handlebars/JavaSpring2/libraries/spring-cloud/Application.mustache

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,12 @@ package io.swagger;
33
import feign.Logger;
44
import org.springframework.boot.autoconfigure.SpringBootApplication;
55
import org.springframework.boot.builder.SpringApplicationBuilder;
6-
import org.springframework.cloud.netflix.feign.EnableFeignClients;
6+
{{^isOpenFeign}}
7+
import org.springframework.cloud.netflix.feign.EnableFeignClients;
8+
{{/isOpenFeign}}
9+
{{#isOpenFeign}}
10+
import org.springframework.cloud.openfeign.EnableFeignClients;
11+
{{/isOpenFeign}}
712
import org.springframework.context.annotation.Bean;
813

914
@SpringBootApplication
Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
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
{{=<% %>=}}
712
@FeignClient(name="${<%title%>.name:<%title%>}", url="${<%title%>.url:<%basePath%>}", configuration = ClientConfiguration.class)
813
<%={{ }}=%>
914
public interface {{classname}}Client extends {{classname}} {
10-
}
15+
}

src/main/resources/mustache/JavaSpring/libraries/spring-cloud/Application.mustache

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,12 @@ package io.swagger;
33
import feign.Logger;
44
import org.springframework.boot.autoconfigure.SpringBootApplication;
55
import org.springframework.boot.builder.SpringApplicationBuilder;
6-
import org.springframework.cloud.netflix.feign.EnableFeignClients;
6+
{{^isOpenFeign}}
7+
import org.springframework.cloud.netflix.feign.EnableFeignClients;
8+
{{/isOpenFeign}}
9+
{{#isOpenFeign}}
10+
import org.springframework.cloud.openfeign.EnableFeignClients;
11+
{{/isOpenFeign}}
712
import org.springframework.context.annotation.Bean;
813

914
@SpringBootApplication
Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
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
{{=<% %>=}}
712
@FeignClient(name="${<%title%>.name:<%title%>}", url="${<%title%>.url:<%basePath%>}", configuration = ClientConfiguration.class)
813
<%={{ }}=%>
914
public interface {{classname}}Client extends {{classname}} {
10-
}
15+
}

src/main/resources/mustache/JavaSpring2/libraries/spring-cloud/Application.mustache

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,12 @@ package io.swagger;
33
import feign.Logger;
44
import org.springframework.boot.autoconfigure.SpringBootApplication;
55
import org.springframework.boot.builder.SpringApplicationBuilder;
6-
import org.springframework.cloud.netflix.feign.EnableFeignClients;
6+
{{^isOpenFeign}}
7+
import org.springframework.cloud.netflix.feign.EnableFeignClients;
8+
{{/isOpenFeign}}
9+
{{#isOpenFeign}}
10+
import org.springframework.cloud.openfeign.EnableFeignClients;
11+
{{/isOpenFeign}}
712
import org.springframework.context.annotation.Bean;
813

914
@SpringBootApplication
Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
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
{{=<% %>=}}
712
@FeignClient(name="${<%title%>.name:<%title%>}", url="${<%title%>.url:<%basePath%>}", configuration = ClientConfiguration.class)
813
<%={{ }}=%>
914
public interface {{classname}}Client extends {{classname}} {
10-
}
15+
}

0 commit comments

Comments
 (0)