Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Java] Refine CXF Add Spring Annotation-Config, Jboss flag for CXF/Resteasy, fix OuterEnum #4164

Merged
merged 43 commits into from Nov 19, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
b6eb0eb
add json annotations
jfiala Nov 3, 2016
9bd521e
add cli flag to check for jaxb annotations
jfiala Nov 6, 2016
f91ebdf
add CLI-flag for switching Spring-XML or annotation config #4088
jfiala Nov 6, 2016
15f740e
add cli flag for generating jboss depl. descriptor #4088
jfiala Nov 6, 2016
821c54a
add JbossFeature CLI flag to Resteasy #4088
jfiala Nov 6, 2016
460257e
update/add tests #4088
jfiala Nov 6, 2016
b35a525
cleanup tabs #4088
jfiala Nov 9, 2016
3376486
improve api formatting #4088
jfiala Nov 9, 2016
89f2274
refine formatting #4088
jfiala Nov 9, 2016
3870586
refine formatting again #4088
jfiala Nov 9, 2016
012c48f
add separate CLI-flags for controlling junit test features #4088
jfiala Nov 9, 2016
469a9d9
add json annotations
jfiala Nov 3, 2016
1696630
add cli flag to check for jaxb annotations
jfiala Nov 6, 2016
4a5eb8e
add CLI-flag for switching Spring-XML or annotation config #4088
jfiala Nov 6, 2016
b1e762e
add cli flag for generating jboss depl. descriptor #4088
jfiala Nov 6, 2016
733c887
add JbossFeature CLI flag to Resteasy #4088
jfiala Nov 6, 2016
9691509
update/add tests #4088
jfiala Nov 6, 2016
4422045
cleanup tabs #4088
jfiala Nov 9, 2016
becd52e
improve api formatting #4088
jfiala Nov 9, 2016
7790178
refine formatting #4088
jfiala Nov 9, 2016
b3b54f1
refine formatting again #4088
jfiala Nov 9, 2016
50efff3
add separate CLI-flags for controlling junit test features #4088
jfiala Nov 9, 2016
7566685
Merge branch 'cxf_refine' of https://github.com/jfiala/swagger-codege…
jfiala Nov 9, 2016
04fdc10
add check for void methods + assertNotNull(response) #4088
jfiala Nov 9, 2016
9c4a1f3
add spaces for @Produces #4088
jfiala Nov 9, 2016
80beec0
allow build with no web.xml config #4088
jfiala Nov 9, 2016
06b60dc
comment invocations of tests #4088
jfiala Nov 9, 2016
1142007
update petstore sample jaxrs-cxf server with gen/java first #4088
jfiala Nov 9, 2016
4e28bd9
re-generate jaxrs-cxf with src/gen/java #4088
jfiala Nov 9, 2016
6497bb2
add client jaxrs-cxf #4088
jfiala Nov 9, 2016
828419f
add switch to load SwaggerUI automatically #4088
jfiala Nov 11, 2016
35c81b7
update to CXF 3.1.8 including supportSwaggerUi flag #4088
jfiala Nov 11, 2016
a664d5d
update to cxf 3.1.8 and swagger-core 1.5.10 #4088
jfiala Nov 11, 2016
7e4b960
update generated petstore for jaxrs-cxf #4088
jfiala Nov 11, 2016
4d4b63f
change Spring Boot urls to root #4088
jfiala Nov 11, 2016
021bf08
fix spring xml config #4088
jfiala Nov 11, 2016
c1e87ae
fix external enum usage for jaxrs-cxf #4160
jfiala Nov 11, 2016
ecfd1c0
cleanup jaxrs-annotations in impl class
jfiala Nov 12, 2016
2df0565
fix handling of multiparts #4088
jfiala Nov 12, 2016
786d465
fix @Min/@Max comments in beanValidationQueryParams #4088
jfiala Nov 12, 2016
a57ea02
add swagger-codegen-ignore file+add src/test/resources #4088
jfiala Nov 18, 2016
e86b6c3
add cli-flag for produces/consumes json in api #4088
jfiala Nov 18, 2016
54b07f6
add test case for outerEnum #4160
jfiala Nov 18, 2016
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Expand Up @@ -17,6 +17,7 @@ public abstract class AbstractJavaJAXRSServerCodegen extends AbstractJavaCodegen
*/
protected static final String JAXRS_TEMPLATE_DIRECTORY_NAME = "JavaJaxRS";
protected String implFolder = "src/main/java";
protected String testResourcesFolder = "src/test/resources";
protected String title = "Swagger Server";
static Logger LOGGER = LoggerFactory.getLogger(AbstractJavaJAXRSServerCodegen.class);

Expand Down
Expand Up @@ -14,11 +14,14 @@
import io.swagger.codegen.CodegenProperty;
import io.swagger.codegen.CodegenType;
import io.swagger.codegen.SupportingFile;
import io.swagger.codegen.languages.features.CXFFeatures;
import io.swagger.codegen.languages.features.LoggingFeatures;
import io.swagger.codegen.languages.features.BeanValidationFeatures;
import io.swagger.codegen.languages.features.GzipTestFeatures;
import io.swagger.codegen.languages.features.JaxbFeatures;
import io.swagger.codegen.languages.features.LoggingTestFeatures;
import io.swagger.models.Operation;

public class JavaCXFClientCodegen extends AbstractJavaCodegen implements CXFFeatures
public class JavaCXFClientCodegen extends AbstractJavaCodegen
implements BeanValidationFeatures, JaxbFeatures, GzipTestFeatures, LoggingTestFeatures
{
private static final Logger LOGGER = LoggerFactory.getLogger(JavaCXFClientCodegen.class);

Expand All @@ -28,14 +31,13 @@ public class JavaCXFClientCodegen extends AbstractJavaCodegen implements CXFFeat
*/
protected static final String JAXRS_TEMPLATE_DIRECTORY_NAME = "JavaJaxRS";

protected boolean useJaxbAnnotations = true;

protected boolean useBeanValidation = false;

protected boolean useGzipFeature = false;

protected boolean useLoggingFeature = false;

protected boolean useBeanValidationFeature = false;
protected boolean useGzipFeatureForTests = false;

protected boolean useLoggingFeatureForTests = false;

public JavaCXFClientCodegen()
{
Expand Down Expand Up @@ -67,11 +69,12 @@ public JavaCXFClientCodegen()

embeddedTemplateDir = templateDir = JAXRS_TEMPLATE_DIRECTORY_NAME + File.separator + "cxf";

cliOptions.add(CliOption.newBoolean(USE_JAXB_ANNOTATIONS, "Use JAXB annotations for XML"));

cliOptions.add(CliOption.newBoolean(USE_BEANVALIDATION, "Use BeanValidation API annotations"));

cliOptions.add(CliOption.newBoolean(USE_GZIP_FEATURE, "Use Gzip Feature"));
cliOptions.add(CliOption.newBoolean(USE_BEANVALIDATION_FEATURE, "Use BeanValidation Feature"));
cliOptions.add(CliOption.newBoolean(USE_LOGGING_FEATURE, "Use Logging Feature"));
cliOptions.add(CliOption.newBoolean(USE_GZIP_FEATURE_FOR_TESTS, "Use Gzip Feature for tests"));
cliOptions.add(CliOption.newBoolean(USE_LOGGING_FEATURE_FOR_TESTS, "Use Logging Feature for tests"));


}
Expand All @@ -82,19 +85,19 @@ public void processOpts()
{
super.processOpts();

if (additionalProperties.containsKey(USE_JAXB_ANNOTATIONS)) {
boolean useJaxbAnnotationsProp = convertPropertyToBooleanAndWriteBack(USE_JAXB_ANNOTATIONS);
this.setUseJaxbAnnotations(useJaxbAnnotationsProp);
}

if (additionalProperties.containsKey(USE_BEANVALIDATION)) {
boolean useBeanValidationProp = convertPropertyToBooleanAndWriteBack(USE_BEANVALIDATION);
this.setUseBeanValidation(useBeanValidationProp);
}

this.setUseGzipFeature(convertPropertyToBooleanAndWriteBack(USE_GZIP_FEATURE));
this.setUseLoggingFeature(convertPropertyToBooleanAndWriteBack(USE_LOGGING_FEATURE));
this.setUseGzipFeatureForTests(convertPropertyToBooleanAndWriteBack(USE_GZIP_FEATURE_FOR_TESTS));
this.setUseLoggingFeatureForTests(convertPropertyToBooleanAndWriteBack(USE_LOGGING_FEATURE_FOR_TESTS));

boolean useBeanValidationFeature = convertPropertyToBooleanAndWriteBack(USE_BEANVALIDATION_FEATURE);
this.setUseBeanValidationFeature(useBeanValidationFeature);
if (useBeanValidationFeature) {
LOGGER.info("make sure your client supports Bean Validation 1.1");
}

supportingFiles.clear(); // Don't need extra files provided by AbstractJAX-RS & Java Codegen

Expand Down Expand Up @@ -141,18 +144,16 @@ public void setUseBeanValidation(boolean useBeanValidation) {
}


public void setUseGzipFeature(boolean useGzipFeature) {
this.useGzipFeature = useGzipFeature;
public void setUseJaxbAnnotations(boolean useJaxbAnnotations) {
this.useJaxbAnnotations = useJaxbAnnotations;
}


public void setUseLoggingFeature(boolean useLoggingFeature) {
this.useLoggingFeature = useLoggingFeature;
public void setUseGzipFeatureForTests(boolean useGzipFeatureForTests) {
this.useGzipFeatureForTests = useGzipFeatureForTests;
}


public void setUseBeanValidationFeature(boolean useBeanValidationFeature) {
this.useBeanValidationFeature = useBeanValidationFeature;
public void setUseLoggingFeatureForTests(boolean useLoggingFeatureForTests) {
this.useLoggingFeatureForTests = useLoggingFeatureForTests;
}

}
Expand Up @@ -14,30 +14,48 @@
import io.swagger.codegen.CodegenProperty;
import io.swagger.codegen.SupportingFile;
import io.swagger.codegen.languages.features.CXFServerFeatures;
import io.swagger.codegen.languages.features.GzipTestFeatures;
import io.swagger.codegen.languages.features.JaxbFeatures;
import io.swagger.codegen.languages.features.LoggingTestFeatures;
import io.swagger.models.Operation;

public class JavaCXFServerCodegen extends AbstractJavaJAXRSServerCodegen implements CXFServerFeatures
public class JavaCXFServerCodegen extends AbstractJavaJAXRSServerCodegen
implements CXFServerFeatures, GzipTestFeatures, LoggingTestFeatures, JaxbFeatures
{
private static final Logger LOGGER = LoggerFactory.getLogger(JavaCXFServerCodegen.class);

protected boolean addConsumesProducesJson = true;

protected boolean useJaxbAnnotations = true;

protected boolean useBeanValidation = false;

protected boolean generateSpringApplication = false;

protected boolean useSpringAnnotationConfig = false;

protected boolean useSwaggerFeature = false;

protected boolean useSwaggerUI = false;

protected boolean useWadlFeature = false;

protected boolean useMultipartFeature = false;

protected boolean useGzipFeature = false;

protected boolean useLoggingFeature = false;

protected boolean useBeanValidationFeature = false;

protected boolean generateSpringBootApplication= false;

protected boolean generateJbossDeploymentDescriptor = false;

protected boolean useGzipFeature = false;

protected boolean useGzipFeatureForTests = false;

protected boolean useLoggingFeature = false;

protected boolean useLoggingFeatureForTests = false;

public JavaCXFServerCodegen()
{
super();
Expand All @@ -64,18 +82,31 @@ public JavaCXFServerCodegen()

embeddedTemplateDir = templateDir = JAXRS_TEMPLATE_DIRECTORY_NAME + File.separator + "cxf";

cliOptions.add(CliOption.newBoolean(USE_JAXB_ANNOTATIONS, "Use JAXB annotations for XML"));

cliOptions.add(CliOption.newBoolean(USE_BEANVALIDATION, "Use BeanValidation API annotations"));
cliOptions.add(CliOption.newBoolean(GENERATE_SPRING_APPLICATION, "Generate Spring application"));
cliOptions.add(CliOption.newBoolean(USE_SPRING_ANNOTATION_CONFIG, "Use Spring Annotation Config"));

cliOptions.add(CliOption.newBoolean(USE_SWAGGER_FEATURE, "Use Swagger Feature"));
cliOptions.add(CliOption.newBoolean(USE_SWAGGER_UI, "Use Swagger UI"));

cliOptions.add(CliOption.newBoolean(USE_WADL_FEATURE, "Use WADL Feature"));
cliOptions.add(CliOption.newBoolean(USE_MULTIPART_FEATURE, "Use Multipart Feature"));

cliOptions.add(CliOption.newBoolean(USE_GZIP_FEATURE, "Use Gzip Feature"));
cliOptions.add(CliOption.newBoolean(USE_GZIP_FEATURE_FOR_TESTS, "Use Gzip Feature for tests"));

cliOptions.add(CliOption.newBoolean(USE_BEANVALIDATION_FEATURE, "Use BeanValidation Feature"));
cliOptions.add(CliOption.newBoolean(USE_LOGGING_FEATURE, "Use Logging Feature"));
cliOptions.add(CliOption.newBoolean(USE_LOGGING_FEATURE_FOR_TESTS, "Use Logging Feature for tests"));

cliOptions.add(CliOption.newBoolean(GENERATE_SPRING_BOOT_APPLICATION, "Generate Spring Boot application"));
cliOptions.add(
CliOption.newBoolean(GENERATE_JBOSS_DEPLOYMENT_DESCRIPTOR, "Generate Jboss Deployment Descriptor"));

cliOptions
.add(CliOption.newBoolean(ADD_CONSUMES_PRODUCES_JSON, "Add @Consumes/@Produces Json to API interface"));

}

Expand All @@ -85,19 +116,33 @@ public void processOpts()
{
super.processOpts();

if (additionalProperties.containsKey(USE_JAXB_ANNOTATIONS)) {
boolean useJaxbAnnotationsProp = convertPropertyToBooleanAndWriteBack(USE_JAXB_ANNOTATIONS);
this.setUseJaxbAnnotations(useJaxbAnnotationsProp);
}

if (additionalProperties.containsKey(USE_BEANVALIDATION)) {
boolean useBeanValidationProp = convertPropertyToBooleanAndWriteBack(USE_BEANVALIDATION);
this.setUseBeanValidation(useBeanValidationProp);
}

if (additionalProperties.containsKey(ADD_CONSUMES_PRODUCES_JSON)) {
this.setAddConsumesProducesJson(convertPropertyToBooleanAndWriteBack(ADD_CONSUMES_PRODUCES_JSON));
}

if (additionalProperties.containsKey(GENERATE_SPRING_APPLICATION)) {
this.setGenerateSpringApplication(convertPropertyToBooleanAndWriteBack(GENERATE_SPRING_APPLICATION));

this.setUseSwaggerFeature(convertPropertyToBooleanAndWriteBack(USE_SWAGGER_FEATURE));
this.setUseSwaggerUI(convertPropertyToBooleanAndWriteBack(USE_SWAGGER_UI));

this.setUseWadlFeature(convertPropertyToBooleanAndWriteBack(USE_WADL_FEATURE));
this.setUseMultipartFeature(convertPropertyToBooleanAndWriteBack(USE_MULTIPART_FEATURE));
this.setUseGzipFeature(convertPropertyToBooleanAndWriteBack(USE_GZIP_FEATURE));
this.setUseGzipFeatureForTests(convertPropertyToBooleanAndWriteBack(USE_GZIP_FEATURE_FOR_TESTS));
this.setUseLoggingFeature(convertPropertyToBooleanAndWriteBack(USE_LOGGING_FEATURE));
this.setUseLoggingFeatureForTests(convertPropertyToBooleanAndWriteBack(USE_LOGGING_FEATURE_FOR_TESTS));
this.setUseSpringAnnotationConfig(convertPropertyToBooleanAndWriteBack(USE_SPRING_ANNOTATION_CONFIG));

boolean useBeanValidationFeature = convertPropertyToBooleanAndWriteBack(USE_BEANVALIDATION_FEATURE);
this.setUseBeanValidationFeature(useBeanValidationFeature);
Expand All @@ -107,12 +152,20 @@ public void processOpts()

this.setGenerateSpringBootApplication(convertPropertyToBooleanAndWriteBack(GENERATE_SPRING_BOOT_APPLICATION));
}


if (additionalProperties.containsKey(GENERATE_JBOSS_DEPLOYMENT_DESCRIPTOR)) {
boolean generateJbossDeploymentDescriptorProp = convertPropertyToBooleanAndWriteBack(
GENERATE_JBOSS_DEPLOYMENT_DESCRIPTOR);
this.setGenerateJbossDeploymentDescriptor(generateJbossDeploymentDescriptorProp);
}

supportingFiles.clear(); // Don't need extra files provided by AbstractJAX-RS & Java Codegen

writeOptional(outputFolder, new SupportingFile("server/pom.mustache", "", "pom.xml"));

writeOptional(outputFolder,
new SupportingFile("server/swagger-codegen-ignore.mustache", "", ".swagger-codegen-ignore"));

if (this.generateSpringApplication) {
writeOptional(outputFolder, new SupportingFile("server/readme.md", "", "readme.md"));

Expand All @@ -124,14 +177,19 @@ public void processOpts()
("src/main/webapp/WEB-INF"), "context.xml"));

// Jboss
writeOptional(outputFolder, new SupportingFile("server/jboss-web.xml.mustache",
("src/main/webapp/WEB-INF"), "jboss-web.xml"));
if (generateJbossDeploymentDescriptor) {
writeOptional(outputFolder, new SupportingFile("server/jboss-web.xml.mustache",
("src/main/webapp/WEB-INF"), "jboss-web.xml"));

}

// Spring Boot
if (this.generateSpringBootApplication) {
writeOptional(outputFolder, new SupportingFile("server/SpringBootApplication.mustache",
(testFolder + '/' + apiPackage).replace(".", "/"), "SpringBootApplication.java"));

writeOptional(outputFolder, new SupportingFile("server/application.properties.mustache",
(testResourcesFolder + '/'), "application.properties"));

}

}
Expand Down Expand Up @@ -174,6 +232,9 @@ public void setGenerateSpringApplication(boolean generateSpringApplication) {
this.generateSpringApplication = generateSpringApplication;
}

public void setUseSpringAnnotationConfig(boolean useSpringAnnotationConfig) {
this.useSpringAnnotationConfig = useSpringAnnotationConfig;
}

public void setUseSwaggerFeature(boolean useSwaggerFeature) {
this.useSwaggerFeature = useSwaggerFeature;
Expand Down Expand Up @@ -204,7 +265,32 @@ public void setUseBeanValidationFeature(boolean useBeanValidationFeature) {
this.useBeanValidationFeature = useBeanValidationFeature;
}

public void setGenerateSpringBootApplication(boolean generateSpringBootApplication) {
public void setGenerateSpringBootApplication(boolean generateSpringBootApplication) {
this.generateSpringBootApplication = generateSpringBootApplication;
}

public void setUseJaxbAnnotations(boolean useJaxbAnnotations) {
this.useJaxbAnnotations = useJaxbAnnotations;
}

public void setGenerateJbossDeploymentDescriptor(boolean generateJbossDeploymentDescriptor) {
this.generateJbossDeploymentDescriptor = generateJbossDeploymentDescriptor;
}

public void setUseGzipFeatureForTests(boolean useGzipFeatureForTests) {
this.useGzipFeatureForTests = useGzipFeatureForTests;
}

public void setUseLoggingFeatureForTests(boolean useLoggingFeatureForTests) {
this.useLoggingFeatureForTests = useLoggingFeatureForTests;
}

public void setUseSwaggerUI(boolean useSwaggerUI) {
this.useSwaggerUI = useSwaggerUI;
}

public void setAddConsumesProducesJson(boolean addConsumesProducesJson) {
this.addConsumesProducesJson = addConsumesProducesJson;
}

}
@@ -1,14 +1,17 @@
package io.swagger.codegen.languages;

import io.swagger.codegen.*;
import io.swagger.codegen.languages.features.JbossFeature;
import io.swagger.models.Operation;
import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.StringUtils;

import java.io.File;
import java.util.*;

public class JavaResteasyServerCodegen extends AbstractJavaJAXRSServerCodegen {
public class JavaResteasyServerCodegen extends AbstractJavaJAXRSServerCodegen implements JbossFeature {

protected boolean generateJbossDeploymentDescriptor = true;

public JavaResteasyServerCodegen() {

Expand All @@ -31,6 +34,9 @@ public JavaResteasyServerCodegen() {
dateLibrary = "legacy";// TODO: change to joda

embeddedTemplateDir = templateDir = "JavaJaxRS" + File.separator + "resteasy";

cliOptions.add(
CliOption.newBoolean(GENERATE_JBOSS_DEPLOYMENT_DESCRIPTOR, "Generate Jboss Deployment Descriptor"));
}

@Override
Expand All @@ -47,6 +53,12 @@ public String getHelp() {
public void processOpts() {
super.processOpts();

if (additionalProperties.containsKey(GENERATE_JBOSS_DEPLOYMENT_DESCRIPTOR)) {
boolean generateJbossDeploymentDescriptorProp = convertPropertyToBooleanAndWriteBack(
GENERATE_JBOSS_DEPLOYMENT_DESCRIPTOR);
this.setGenerateJbossDeploymentDescriptor(generateJbossDeploymentDescriptorProp);
}

writeOptional(outputFolder, new SupportingFile("pom.mustache", "", "pom.xml"));
writeOptional(outputFolder, new SupportingFile("gradle.mustache", "", "build.gradle"));
writeOptional(outputFolder, new SupportingFile("settingsGradle.mustache", "", "settings.gradle"));
Expand All @@ -61,8 +73,12 @@ public void processOpts() {
(sourceFolder + '/' + apiPackage).replace(".", "/"), "NotFoundException.java"));
writeOptional(outputFolder, new SupportingFile("web.mustache",
("src/main/webapp/WEB-INF"), "web.xml"));
writeOptional(outputFolder, new SupportingFile("jboss-web.mustache",

if (generateJbossDeploymentDescriptor) {
writeOptional(outputFolder, new SupportingFile("jboss-web.mustache",
("src/main/webapp/WEB-INF"), "jboss-web.xml"));
}

writeOptional(outputFolder, new SupportingFile("RestApplication.mustache",
(sourceFolder + '/' + invokerPackage).replace(".", "/"), "RestApplication.java"));
supportingFiles.add(new SupportingFile("StringUtil.mustache",
Expand Down Expand Up @@ -198,4 +214,8 @@ public Map<String, Object> postProcessModelsEnum(Map<String, Object> objs) {

return objs;
}

public void setGenerateJbossDeploymentDescriptor(boolean generateJbossDeploymentDescriptor) {
this.generateJbossDeploymentDescriptor = generateJbossDeploymentDescriptor;
}
}
Expand Up @@ -4,6 +4,8 @@
* Features supported by CXF 3 (client + server)
*
*/
public interface CXFFeatures extends LoggingFeatures, GzipFeatures, BeanValidationFeatures, BeanValidationExtendedFeatures {
public interface CXFFeatures extends LoggingFeatures, GzipFeatures, BeanValidationFeatures {



}