diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AbstractJavaJAXRSServerCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AbstractJavaJAXRSServerCodegen.java new file mode 100644 index 00000000000..3efca234a79 --- /dev/null +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/AbstractJavaJAXRSServerCodegen.java @@ -0,0 +1,183 @@ +package io.swagger.codegen.languages; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import io.swagger.codegen.CodegenOperation; +import io.swagger.codegen.CodegenResponse; +import io.swagger.codegen.CodegenType; +import io.swagger.models.Operation; +import io.swagger.models.Path; +import io.swagger.models.Swagger; + +public abstract class AbstractJavaJAXRSServerCodegen extends JavaClientCodegen +{ + /** + * Name of the sub-directory in "src/main/resource" where to find the + * Mustache template for the JAX-RS Codegen. + */ + protected static final String JAXRS_TEMPLATE_DIRECTORY_NAME = "JavaJaxRS"; + protected String implFolder = "src/main/java"; + protected String title = "Swagger Server"; + + public AbstractJavaJAXRSServerCodegen() + { + super(); + } + + // ================ + // ABSTRACT METHODS + // ================ + + @Override + public abstract String getHelp(); + + @Override + public abstract String getName(); + + // =============== + // COMMONS METHODS + // =============== + + @Override + public CodegenType getTag() + { + return CodegenType.SERVER; + } + + @Override + public void preprocessSwagger(Swagger swagger) + { + if ( "/".equals(swagger.getBasePath()) ) { + swagger.setBasePath(""); + } + + String host = swagger.getHost(); + String port = "8080"; // Default value for a JEE Server + if ( host != null ) { + String[] parts = host.split(":"); + if ( parts.length > 1 ) { + port = parts[1]; + } + } + this.additionalProperties.put("serverPort", port); + if ( swagger.getPaths() != null ) { + for ( String pathname : swagger.getPaths().keySet() ) { + Path path = swagger.getPath(pathname); + if ( path.getOperations() != null ) { + for ( Operation operation : path.getOperations() ) { + if ( operation.getTags() != null ) { + List> tags = new ArrayList>(); + for ( String tag : operation.getTags() ) { + Map value = new HashMap(); + value.put("tag", tag); + value.put("hasMore", "true"); + tags.add(value); + } + if ( tags.size() > 0 ) { + tags.get(tags.size() - 1).remove("hasMore"); + } + if ( operation.getTags().size() > 0 ) { + String tag = operation.getTags().get(0); + operation.setTags(Arrays.asList(tag)); + } + operation.setVendorExtension("x-tags", tags); + } + } + } + } + } + } + + @Override + public Map postProcessOperations(Map objs) + { + @SuppressWarnings("unchecked") + Map operations = (Map) objs.get("operations"); + if ( operations != null ) { + @SuppressWarnings("unchecked") + List ops = (List) operations.get("operation"); + for ( CodegenOperation operation : ops ) { + List responses = operation.responses; + if ( responses != null ) { + for ( CodegenResponse resp : responses ) { + if ( "0".equals(resp.code) ) { + resp.code = "200"; + } + } + } + if ( operation.returnType == null ) { + operation.returnType = "void"; + } else if ( operation.returnType.startsWith("List") ) { + String rt = operation.returnType; + int end = rt.lastIndexOf(">"); + if ( end > 0 ) { + operation.returnType = rt.substring("List<".length(), end).trim(); + operation.returnContainer = "List"; + } + } else if ( operation.returnType.startsWith("Map") ) { + String rt = operation.returnType; + int end = rt.lastIndexOf(">"); + if ( end > 0 ) { + operation.returnType = rt.substring("Map<".length(), end).split(",")[1].trim(); + operation.returnContainer = "Map"; + } + } else if ( operation.returnType.startsWith("Set") ) { + String rt = operation.returnType; + int end = rt.lastIndexOf(">"); + if ( end > 0 ) { + operation.returnType = rt.substring("Set<".length(), end).trim(); + operation.returnContainer = "Set"; + } + } + } + } + return objs; + } + + @Override + public String toApiName(final String name) + { + String computed = name; + if ( computed.length() == 0 ) { + return "DefaultApi"; + } + computed = sanitizeName(computed); + return camelize(computed) + "Api"; + } + + @Override + public String apiFilename(String templateName, String tag) + { + String result = super.apiFilename(templateName, tag); + + if ( templateName.endsWith("Impl.mustache") ) { + int ix = result.lastIndexOf('/'); + result = result.substring(0, ix) + "/impl" + result.substring(ix, result.length() - 5) + "ServiceImpl.java"; + result = result.replace(apiFileFolder(), implFileFolder(implFolder)); + } else if ( templateName.endsWith("Factory.mustache") ) { + int ix = result.lastIndexOf('/'); + result = result.substring(0, ix) + "/factories" + result.substring(ix, result.length() - 5) + "ServiceFactory.java"; + result = result.replace(apiFileFolder(), implFileFolder(implFolder)); + } else if ( templateName.endsWith("Service.mustache") ) { + int ix = result.lastIndexOf('.'); + result = result.substring(0, ix) + "Service.java"; + } + return result; + } + + private String implFileFolder(String output) + { + return outputFolder + "/" + output + "/" + apiPackage().replace('.', '/'); + } + + @Override + public boolean shouldOverwrite(String filename) + { + return super.shouldOverwrite(filename) && !filename.endsWith("ServiceImpl.java") && !filename.endsWith("ServiceFactory.java"); + } + +} diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaCXFCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaCXFCodegen.java new file mode 100644 index 00000000000..2592e0823c3 --- /dev/null +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaCXFCodegen.java @@ -0,0 +1,73 @@ + +package io.swagger.codegen.languages; + +import java.io.File; +import java.util.List; +import java.util.Map; + +import io.swagger.codegen.CliOption; +import io.swagger.codegen.CodegenConstants; +import io.swagger.codegen.CodegenOperation; +import io.swagger.models.Operation; + +public class JavaCXFCodegen extends AbstractJavaJAXRSServerCodegen +{ + public JavaCXFCodegen() + { + super(); + + sourceFolder = "src/gen/java"; + invokerPackage = "io.swagger.api"; + artifactId = "swagger-jaxrs-server"; + outputFolder = "generated-code/JavaJaxRS-CXF"; + + modelTemplateFiles.put("model.mustache", ".java"); + apiTemplateFiles.put("api.mustache", ".java"); + apiPackage = "io.swagger.api"; + modelPackage = "io.swagger.model"; + + additionalProperties.put("title", title); + + super.embeddedTemplateDir = templateDir = JAXRS_TEMPLATE_DIRECTORY_NAME + File.separator + "cxf"; + + for ( int i = 0; i < cliOptions.size(); i++ ) { + if ( CodegenConstants.LIBRARY.equals(cliOptions.get(i).getOpt()) ) { + cliOptions.remove(i); + break; + } + } + + cliOptions.add(new CliOption(CodegenConstants.IMPL_FOLDER, CodegenConstants.IMPL_FOLDER_DESC)); + } + + @Override + public void processOpts() + { + super.processOpts(); + sourceFolder = "gen" + File.separator + "java"; + + modelTemplateFiles.clear(); + modelTemplateFiles.put("entityModel.mustache", ".java"); + + supportingFiles.clear(); + } + + @Override + public String getName() + { + return "cxf"; + } + + + @Override + public void addOperationToGroup(String tag, String resourcePath, Operation operation, CodegenOperation co, Map> operations) { + super.addOperationToGroup(tag, resourcePath, operation, co, operations); + co.subresourceOperation = !co.path.isEmpty(); + } + + @Override + public String getHelp() + { + return "Generates a Java JAXRS Server application based on Apache CXF framework."; + } +} diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaJaxRSCXFServerCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaJaxRSCXFServerCodegen.java deleted file mode 100644 index 2b3cf6e90b0..00000000000 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaJaxRSCXFServerCodegen.java +++ /dev/null @@ -1,49 +0,0 @@ - -package io.swagger.codegen.languages; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -import io.swagger.codegen.CodegenOperation; -import io.swagger.models.Operation; - -// TODO: create an abstract JavaJAXRSServerCodegen that both Jersey1 & CXF will extends. -public class JavaJaxRSCXFServerCodegen extends JavaJaxRSJersey1ServerCodegen -{ - public JavaJaxRSCXFServerCodegen() - { - super(); - super.embeddedTemplateDir = templateDir = JAXRS_TEMPLATE_DIRECTORY_NAME + File.separator + "cxf"; - // We decided to just provide the CXF interface and let the user create his own files to implement it - super.apiTemplateFiles.remove("apiService.mustache"); - super.apiTemplateFiles.remove("apiServiceImpl.mustache"); - super.apiTemplateFiles.remove("apiServiceFactory.mustache"); - } - - @Override - public void processOpts() - { - super.processOpts(); - sourceFolder = "gen" + File.separator + "java"; - - modelTemplateFiles.clear(); - modelTemplateFiles.put("entityModel.mustache", ".java"); - - supportingFiles.clear(); - } - - @Override - public String getName() - { - return "cxf"; - } - - - @Override - public void addOperationToGroup(String tag, String resourcePath, Operation operation, CodegenOperation co, Map> operations) { - super.addOperationToGroup(tag, resourcePath, operation, co, operations); - co.subresourceOperation = !co.path.isEmpty(); - } -} diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaJaxRSJersey1ServerCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaJaxRSJersey1ServerCodegen.java deleted file mode 100644 index e4044953678..00000000000 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaJaxRSJersey1ServerCodegen.java +++ /dev/null @@ -1,268 +0,0 @@ -package io.swagger.codegen.languages; - -import io.swagger.codegen.*; -import io.swagger.models.Operation; -import io.swagger.models.Path; -import io.swagger.models.Swagger; - -import java.io.File; -import java.util.*; - -public class JavaJaxRSJersey1ServerCodegen extends JavaClientCodegen -{ - protected static final String JAXRS_TEMPLATE_DIRECTORY_NAME = "JavaJaxRS"; - protected String title = "Swagger Server"; - protected String implFolder = "src/main/java"; - - public JavaJaxRSJersey1ServerCodegen() - { - super(); - - sourceFolder = "src/gen/java"; - invokerPackage = "io.swagger.api"; - artifactId = "swagger-jaxrs-server"; - - outputFolder = "generated-code/javaJaxRS"; - modelTemplateFiles.put("model.mustache", ".java"); - apiTemplateFiles.put("api.mustache", ".java"); - apiTemplateFiles.put("apiService.mustache", ".java"); - apiTemplateFiles.put("apiServiceImpl.mustache", ".java"); - apiTemplateFiles.put("apiServiceFactory.mustache", ".java"); - apiPackage = "io.swagger.api"; - modelPackage = "io.swagger.model"; - - additionalProperties.put("title", title); - - embeddedTemplateDir = templateDir = JAXRS_TEMPLATE_DIRECTORY_NAME + File.separator + "jersey1_18"; - - for ( int i = 0; i < cliOptions.size(); i++ ) { - if ( CodegenConstants.LIBRARY.equals(cliOptions.get(i).getOpt()) ) { - cliOptions.remove(i); - break; - } - } - - CliOption library = new CliOption(CodegenConstants.LIBRARY, "library template (sub-template) to use"); - library.setDefault(DEFAULT_LIBRARY); - - Map supportedLibraries = new LinkedHashMap(); - - supportedLibraries.put(DEFAULT_LIBRARY, "Jersey core 1.18.1"); - library.setEnum(supportedLibraries); - - cliOptions.add(library); - cliOptions.add(new CliOption(CodegenConstants.IMPL_FOLDER, CodegenConstants.IMPL_FOLDER_DESC)); - } - - @Override - public CodegenType getTag() - { - return CodegenType.SERVER; - } - - @Override - public String getName() - { - return "jaxrs"; - } - - @Override - public String getHelp() - { - return "Generates a Java JAXRS Server application based on Jersey framework."; - } - - @Override - public void processOpts() - { - super.processOpts(); - - if ( additionalProperties.containsKey(CodegenConstants.IMPL_FOLDER) ) { - implFolder = (String) additionalProperties.get(CodegenConstants.IMPL_FOLDER); - } - - supportingFiles.clear(); - supportingFiles.add(new SupportingFile("pom.mustache", "", "pom.xml")); - supportingFiles.add(new SupportingFile("README.mustache", "", "README.md")); - supportingFiles.add(new SupportingFile("ApiException.mustache", (sourceFolder + '/' + apiPackage).replace(".", "/"), "ApiException.java")); - supportingFiles.add(new SupportingFile("ApiOriginFilter.mustache", (sourceFolder + '/' + apiPackage).replace(".", "/"), "ApiOriginFilter.java")); - supportingFiles.add(new SupportingFile("ApiResponseMessage.mustache", (sourceFolder + '/' + apiPackage).replace(".", "/"), "ApiResponseMessage.java")); - supportingFiles.add(new SupportingFile("NotFoundException.mustache", (sourceFolder + '/' + apiPackage).replace(".", "/"), "NotFoundException.java")); - supportingFiles.add(new SupportingFile("web.mustache", ("src/main/webapp/WEB-INF"), "web.xml")); - supportingFiles.add(new SupportingFile("StringUtil.mustache", (sourceFolder + '/' + apiPackage).replace(".", "/"), "StringUtil.java")); - - if ( additionalProperties.containsKey("dateLibrary") ) { - setDateLibrary(additionalProperties.get("dateLibrary").toString()); - additionalProperties.put(dateLibrary, "true"); - } - - if ( "joda".equals(dateLibrary) ) { - supportingFiles.add(new SupportingFile("JodaDateTimeProvider.mustache", (sourceFolder + '/' + apiPackage).replace(".", "/"), "JodaDateTimeProvider.java")); - supportingFiles.add(new SupportingFile("JodaLocalDateProvider.mustache", (sourceFolder + '/' + apiPackage).replace(".", "/"), "JodaLocalDateProvider.java")); - } else if ( "java8".equals(dateLibrary) ) { - supportingFiles.add(new SupportingFile("LocalDateTimeProvider.mustache", (sourceFolder + '/' + apiPackage).replace(".", "/"), "LocalDateTimeProvider.java")); - supportingFiles.add(new SupportingFile("LocalDateProvider.mustache", (sourceFolder + '/' + apiPackage).replace(".", "/"), "LocalDateProvider.java")); - } - } - -// @Override -// public void addOperationToGroup(String tag, String resourcePath, Operation operation, CodegenOperation co, Map> operations) -// { -// String basePath = resourcePath; -// -// if ( basePath.startsWith("/") ) { -// basePath = basePath.substring(1); -// } -// int pos = basePath.indexOf("/"); -// if ( pos > 0 ) { -// basePath = basePath.substring(0, pos); -// } -// -// if ( basePath == "" ) { -// basePath = "default"; -// } else { -// if ( co.path.startsWith("/" + basePath) ) { -// co.path = co.path.substring(("/" + basePath).length()); -// System.out.println("### DEBUG | jerseyCodegen addOperationToGroupe | co.path -> " + co.path.toString()); -// } -// co.subresourceOperation = !co.path.isEmpty(); -// } -// List opList = operations.get(basePath); -// if ( opList == null ) { -// opList = new ArrayList(); -// operations.put(basePath, opList); -// } -// opList.add(co); -// co.baseName = basePath; -// } - - @Override - public void preprocessSwagger(Swagger swagger) - { - if ( "/".equals(swagger.getBasePath()) ) { - swagger.setBasePath(""); - } - - String host = swagger.getHost(); - String port = "8080"; // Default value for a JEE Server - if ( host != null ) { - String[] parts = host.split(":"); - if ( parts.length > 1 ) { - port = parts[1]; - } - } - this.additionalProperties.put("serverPort", port); - if ( swagger.getPaths() != null ) { - for ( String pathname : swagger.getPaths().keySet() ) { - Path path = swagger.getPath(pathname); - if ( path.getOperations() != null ) { - for ( Operation operation : path.getOperations() ) { - if ( operation.getTags() != null ) { - List> tags = new ArrayList>(); - for ( String tag : operation.getTags() ) { - Map value = new HashMap(); - value.put("tag", tag); - value.put("hasMore", "true"); - tags.add(value); - } - if ( tags.size() > 0 ) { - tags.get(tags.size() - 1).remove("hasMore"); - } - if ( operation.getTags().size() > 0 ) { - String tag = operation.getTags().get(0); - operation.setTags(Arrays.asList(tag)); - } - operation.setVendorExtension("x-tags", tags); - } - } - } - } - } - } - - @Override - public Map postProcessOperations(Map objs) - { - Map operations = (Map) objs.get("operations"); - if ( operations != null ) { - List ops = (List) operations.get("operation"); - for ( CodegenOperation operation : ops ) { - List responses = operation.responses; - if ( responses != null ) { - for ( CodegenResponse resp : responses ) { - if ( "0".equals(resp.code) ) { - resp.code = "200"; - } - } - } - if (operation.returnType == null) { - operation.returnType = "void"; - } else if (operation.returnType.startsWith("List")) { - String rt = operation.returnType; - int end = rt.lastIndexOf(">"); - if (end > 0) { - operation.returnType = rt.substring("List<".length(), end).trim(); - operation.returnContainer = "List"; - } - } else if (operation.returnType.startsWith("Map")) { - String rt = operation.returnType; - int end = rt.lastIndexOf(">"); - if (end > 0) { - operation.returnType = rt.substring("Map<".length(), end).split(",")[1].trim(); - operation.returnContainer = "Map"; - } - } else if (operation.returnType.startsWith("Set")) { - String rt = operation.returnType; - int end = rt.lastIndexOf(">"); - if (end > 0) { - operation.returnType = rt.substring("Set<".length(), end).trim(); - operation.returnContainer = "Set"; - } - } - } - } - return objs; - } - - @Override - public String toApiName(String name) - { - if ( name.length() == 0 ) { - return "DefaultApi"; - } - name = sanitizeName(name); - return camelize(name) + "Api"; - } - - @Override - public String apiFilename(String templateName, String tag) - { - String result = super.apiFilename(templateName, tag); - - if ( templateName.endsWith("Impl.mustache") ) { - int ix = result.lastIndexOf('/'); - result = result.substring(0, ix) + "/impl" + result.substring(ix, result.length() - 5) + "ServiceImpl.java"; - result = result.replace(apiFileFolder(), implFileFolder(implFolder)); - } else if ( templateName.endsWith("Factory.mustache") ) { - int ix = result.lastIndexOf('/'); - result = result.substring(0, ix) + "/factories" + result.substring(ix, result.length() - 5) + "ServiceFactory.java"; - result = result.replace(apiFileFolder(), implFileFolder(implFolder)); - } else if ( templateName.endsWith("Service.mustache") ) { - int ix = result.lastIndexOf('.'); - result = result.substring(0, ix) + "Service.java"; - } - - return result; - } - - private String implFileFolder(String output) - { - return outputFolder + "/" + output + "/" + apiPackage().replace('.', '/'); - } - - @Override - public boolean shouldOverwrite(String filename) - { - return super.shouldOverwrite(filename) && !filename.endsWith("ServiceImpl.java") && !filename.endsWith("ServiceFactory.java"); - } -} diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaJerseyCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaJerseyCodegen.java new file mode 100644 index 00000000000..f3a7d9ceda5 --- /dev/null +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/JavaJerseyCodegen.java @@ -0,0 +1,124 @@ +package io.swagger.codegen.languages; + +import io.swagger.codegen.*; +import io.swagger.models.Operation; + +import java.io.File; +import java.util.*; + +public class JavaJerseyCodegen extends AbstractJavaJAXRSServerCodegen +{ + + public JavaJerseyCodegen() + { + super(); + + sourceFolder = "src/gen/java"; + invokerPackage = "io.swagger.api"; + artifactId = "swagger-jaxrs-server"; + outputFolder = "generated-code/JavaJaxRS-Jersey"; + + modelTemplateFiles.put("model.mustache", ".java"); + apiTemplateFiles.put("api.mustache", ".java"); + apiTemplateFiles.put("apiService.mustache", ".java"); + apiTemplateFiles.put("apiServiceImpl.mustache", ".java"); + apiTemplateFiles.put("apiServiceFactory.mustache", ".java"); + apiPackage = "io.swagger.api"; + modelPackage = "io.swagger.model"; + + additionalProperties.put("title", title); + + embeddedTemplateDir = templateDir = JAXRS_TEMPLATE_DIRECTORY_NAME + File.separator + "jersey1_18"; + + for ( int i = 0; i < cliOptions.size(); i++ ) { + if ( CodegenConstants.LIBRARY.equals(cliOptions.get(i).getOpt()) ) { + cliOptions.remove(i); + break; + } + } + + CliOption library = new CliOption(CodegenConstants.LIBRARY, "library template (sub-template) to use"); + library.setDefault(DEFAULT_LIBRARY); + + Map supportedLibraries = new LinkedHashMap(); + + supportedLibraries.put(DEFAULT_LIBRARY, "Jersey core 1.18.1"); + library.setEnum(supportedLibraries); + + cliOptions.add(library); + cliOptions.add(new CliOption(CodegenConstants.IMPL_FOLDER, CodegenConstants.IMPL_FOLDER_DESC)); + } + + @Override + public String getName() + { + return "jaxrs"; + } + + @Override + public String getHelp() + { + return "Generates a Java JAXRS Server application based on Jersey framework."; + } + + @Override + public void processOpts() + { + super.processOpts(); + + if ( additionalProperties.containsKey(CodegenConstants.IMPL_FOLDER) ) { + implFolder = (String) additionalProperties.get(CodegenConstants.IMPL_FOLDER); + } + + supportingFiles.clear(); + supportingFiles.add(new SupportingFile("pom.mustache", "", "pom.xml")); + supportingFiles.add(new SupportingFile("README.mustache", "", "README.md")); + supportingFiles.add(new SupportingFile("ApiException.mustache", (sourceFolder + '/' + apiPackage).replace(".", "/"), "ApiException.java")); + supportingFiles.add(new SupportingFile("ApiOriginFilter.mustache", (sourceFolder + '/' + apiPackage).replace(".", "/"), "ApiOriginFilter.java")); + supportingFiles.add(new SupportingFile("ApiResponseMessage.mustache", (sourceFolder + '/' + apiPackage).replace(".", "/"), "ApiResponseMessage.java")); + supportingFiles.add(new SupportingFile("NotFoundException.mustache", (sourceFolder + '/' + apiPackage).replace(".", "/"), "NotFoundException.java")); + supportingFiles.add(new SupportingFile("web.mustache", ("src/main/webapp/WEB-INF"), "web.xml")); + supportingFiles.add(new SupportingFile("StringUtil.mustache", (sourceFolder + '/' + apiPackage).replace(".", "/"), "StringUtil.java")); + + if ( additionalProperties.containsKey("dateLibrary") ) { + setDateLibrary(additionalProperties.get("dateLibrary").toString()); + additionalProperties.put(dateLibrary, "true"); + } + + if ( "joda".equals(dateLibrary) ) { + supportingFiles.add(new SupportingFile("JodaDateTimeProvider.mustache", (sourceFolder + '/' + apiPackage).replace(".", "/"), "JodaDateTimeProvider.java")); + supportingFiles.add(new SupportingFile("JodaLocalDateProvider.mustache", (sourceFolder + '/' + apiPackage).replace(".", "/"), "JodaLocalDateProvider.java")); + } else if ( "java8".equals(dateLibrary) ) { + supportingFiles.add(new SupportingFile("LocalDateTimeProvider.mustache", (sourceFolder + '/' + apiPackage).replace(".", "/"), "LocalDateTimeProvider.java")); + supportingFiles.add(new SupportingFile("LocalDateProvider.mustache", (sourceFolder + '/' + apiPackage).replace(".", "/"), "LocalDateProvider.java")); + } + } + + @Override + public void addOperationToGroup(String tag, String resourcePath, Operation operation, CodegenOperation co, Map> operations) { + String basePath = resourcePath; + if (basePath.startsWith("/")) { + basePath = basePath.substring(1); + } + int pos = basePath.indexOf("/"); + if (pos > 0) { + basePath = basePath.substring(0, pos); + } + + if (basePath == "") { + basePath = "default"; + } else { + if (co.path.startsWith("/" + basePath)) { + co.path = co.path.substring(("/" + basePath).length()); + } + co.subresourceOperation = !co.path.isEmpty(); + } + List opList = operations.get(basePath); + if (opList == null) { + opList = new ArrayList(); + operations.put(basePath, opList); + } + opList.add(co); + co.baseName = basePath; + } +} diff --git a/modules/swagger-codegen/src/main/resources/META-INF/services/io.swagger.codegen.CodegenConfig b/modules/swagger-codegen/src/main/resources/META-INF/services/io.swagger.codegen.CodegenConfig index d22a87b0a7b..5a0d5372208 100644 --- a/modules/swagger-codegen/src/main/resources/META-INF/services/io.swagger.codegen.CodegenConfig +++ b/modules/swagger-codegen/src/main/resources/META-INF/services/io.swagger.codegen.CodegenConfig @@ -7,8 +7,9 @@ io.swagger.codegen.languages.FlaskConnexionCodegen io.swagger.codegen.languages.GoClientCodegen io.swagger.codegen.languages.JavaClientCodegen io.swagger.codegen.languages.JavascriptClientCodegen -io.swagger.codegen.languages.JavaJaxRSJersey1ServerCodegen -io.swagger.codegen.languages.JavaJaxRSCXFServerCodegen +io.swagger.codegen.languages.JavaClientCodegen +io.swagger.codegen.languages.JavaJerseyCodegen +io.swagger.codegen.languages.JavaCXFCodegen io.swagger.codegen.languages.JavaInflectorServerCodegen io.swagger.codegen.languages.JMeterCodegen io.swagger.codegen.languages.NodeJSServerCodegen diff --git a/modules/swagger-codegen/src/test/java/io/swagger/codegen/jaxrs/JaxRSServerOptionsTest.java b/modules/swagger-codegen/src/test/java/io/swagger/codegen/jaxrs/JaxRSServerOptionsTest.java index 94ce0519a6a..b2370aef8c2 100644 --- a/modules/swagger-codegen/src/test/java/io/swagger/codegen/jaxrs/JaxRSServerOptionsTest.java +++ b/modules/swagger-codegen/src/test/java/io/swagger/codegen/jaxrs/JaxRSServerOptionsTest.java @@ -2,7 +2,7 @@ package io.swagger.codegen.jaxrs; import io.swagger.codegen.CodegenConfig; import io.swagger.codegen.java.JavaClientOptionsTest; -import io.swagger.codegen.languages.JavaJaxRSJersey1ServerCodegen; +import io.swagger.codegen.languages.JavaJerseyCodegen; import io.swagger.codegen.options.JaxRSServerOptionsProvider; import mockit.Expectations; @@ -11,7 +11,7 @@ import mockit.Tested; public class JaxRSServerOptionsTest extends JavaClientOptionsTest { @Tested - private JavaJaxRSJersey1ServerCodegen clientCodegen; + private JavaJerseyCodegen clientCodegen; public JaxRSServerOptionsTest() { super(new JaxRSServerOptionsProvider()); diff --git a/modules/swagger-codegen/src/test/java/io/swagger/codegen/jaxrs/JaxrsJava8ModelTest.java b/modules/swagger-codegen/src/test/java/io/swagger/codegen/jaxrs/JaxrsJava8ModelTest.java index b5ed5d1653c..3c74b570ec2 100644 --- a/modules/swagger-codegen/src/test/java/io/swagger/codegen/jaxrs/JaxrsJava8ModelTest.java +++ b/modules/swagger-codegen/src/test/java/io/swagger/codegen/jaxrs/JaxrsJava8ModelTest.java @@ -2,7 +2,7 @@ package io.swagger.codegen.jaxrs; import io.swagger.codegen.CodegenModel; -import io.swagger.codegen.languages.JavaJaxRSJersey1ServerCodegen; +import io.swagger.codegen.languages.JavaJerseyCodegen; import io.swagger.models.Model; import io.swagger.models.ModelImpl; import io.swagger.models.properties.DateProperty; @@ -26,7 +26,7 @@ public class JaxrsJava8ModelTest { .required("id") .required("name"); - final JavaJaxRSJersey1ServerCodegen codegen = new JavaJaxRSJersey1ServerCodegen(); + final JavaJerseyCodegen codegen = new JavaJerseyCodegen(); codegen.setDateLibrary("java8"); codegen.processOpts(); final CodegenModel cm = codegen.fromModel("sample", model); diff --git a/modules/swagger-codegen/src/test/java/io/swagger/codegen/jaxrs/JaxrsJodaModelTest.java b/modules/swagger-codegen/src/test/java/io/swagger/codegen/jaxrs/JaxrsJodaModelTest.java index 0fe24f04af2..a133f2c3661 100644 --- a/modules/swagger-codegen/src/test/java/io/swagger/codegen/jaxrs/JaxrsJodaModelTest.java +++ b/modules/swagger-codegen/src/test/java/io/swagger/codegen/jaxrs/JaxrsJodaModelTest.java @@ -1,7 +1,7 @@ package io.swagger.codegen.jaxrs; import io.swagger.codegen.CodegenModel; -import io.swagger.codegen.languages.JavaJaxRSJersey1ServerCodegen; +import io.swagger.codegen.languages.JavaJerseyCodegen; import io.swagger.models.Model; import io.swagger.models.ModelImpl; import io.swagger.models.properties.DateProperty; @@ -25,7 +25,7 @@ public class JaxrsJodaModelTest { .required("id") .required("name"); - final JavaJaxRSJersey1ServerCodegen codegen = new JavaJaxRSJersey1ServerCodegen(); + final JavaJerseyCodegen codegen = new JavaJerseyCodegen(); codegen.setDateLibrary("joda"); codegen.processOpts(); final CodegenModel cm = codegen.fromModel("sample", model);