All Downloads are FREE. Search and download functionalities are using the official Maven repository.
Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
de.zalando.stups.swagger.codegen.language.JaxRsInterfaces Maven / Gradle / Ivy
/**
* Copyright (C) 2015 Zalando SE (http://tech.zalando.com)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package de.zalando.stups.swagger.codegen.language;
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import io.swagger.models.Swagger;
import org.zalando.stups.swagger.codegen.ConfigurableCodegenConfig;
import io.swagger.codegen.CodegenConfig;
import io.swagger.codegen.CodegenOperation;
import io.swagger.codegen.CodegenType;
import io.swagger.codegen.SupportingFile;
import io.swagger.codegen.languages.JavaClientCodegen;
import io.swagger.models.Operation;
import io.swagger.models.properties.ArrayProperty;
import io.swagger.models.properties.MapProperty;
import io.swagger.models.properties.Property;
/**
* https://github.com/swagger-api/swagger-codegen/blob/master/modules/swagger-codegen/src/main/java/com/wordnik/swagger/codegen/languages/JaxRSServerCodegen.java.
*
* @author jbellmann
*/
public class JaxRsInterfaces extends JavaClientCodegen implements CodegenConfig, ConfigurableCodegenConfig {
protected String sourceFolder = "";
public CodegenType getTag() {
return CodegenType.SERVER;
}
public String getName() {
return "jaxrsinterfaces";
}
@Override
public void preprocessSwagger(Swagger swagger) {
vendorExtensions.put("basePath", swagger.getBasePath());
super.preprocessSwagger(swagger);
}
public String getHelp() {
return "Generates JAXRS-Interfaces.";
}
public JaxRsInterfaces() {
super();
embeddedTemplateDir = templateDir = "JaxRsInterfaces";
modelTemplateFiles.put("model.mustache", ".java");
apiTemplateFiles.put("api.mustache", ".java");
}
@Override
public List supportingFiles() {
supportingFiles.clear();
supportingFiles.add(new SupportingFile("ApiException.mustache", (apiPackage()).replace(".", File.separator),
"ApiException.java"));
supportingFiles.add(new SupportingFile("ApiOriginFilter.mustache", (apiPackage()).replace(".", File.separator),
"ApiOriginFilter.java"));
supportingFiles.add(new SupportingFile("ApiResponseMessage.mustache",
(apiPackage()).replace(".", File.separator), "ApiResponseMessage.java"));
supportingFiles.add(new SupportingFile("NotFoundException.mustache",
(apiPackage()).replace(".", File.separator), "NotFoundException.java"));
languageSpecificPrimitives = new HashSet(Arrays.asList("String", "boolean", "Boolean", "Double",
"Integer", "Long", "Float"));
return supportingFiles;
}
@Override
public String apiFileFolder() {
return outputFolder + "/" + apiPackage().replace('.', File.separatorChar);
}
public String modelFileFolder() {
return outputFolder + "/" + modelPackage().replace('.', File.separatorChar);
}
@Override
public String modelPackage() {
if (this.modelPackage == null || this.modelPackage.trim().isEmpty()) {
throw new RuntimeException("'modelPackage' should not be null or empty");
}
return this.modelPackage;
}
@Override
public String apiPackage() {
if (this.apiPackage == null || this.apiPackage.trim().isEmpty()) {
throw new RuntimeException("'apiPackage' should not be null or empty");
}
return this.apiPackage;
}
@Override
public String getTypeDeclaration(final Property p) {
if (p instanceof ArrayProperty) {
ArrayProperty ap = (ArrayProperty) p;
Property inner = ap.getItems();
return getSwaggerType(p) + "<" + getTypeDeclaration(inner) + ">";
} else if (p instanceof MapProperty) {
MapProperty mp = (MapProperty) p;
Property inner = mp.getAdditionalProperties();
return getTypeDeclaration(inner);
}
return super.getTypeDeclaration(p);
}
@Override
public void addOperationToGroup(final String tag, final String resourcePath, final Operation operation,
final CodegenOperation co, final 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;
}
public Map postProcessOperations(final Map objs) {
Map operations = (Map) objs.get("operations");
if (operations != null) {
List ops = (List) operations.get("operation");
for (CodegenOperation operation : ops) {
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);
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);
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);
operation.returnContainer = "Set";
}
}
}
}
return objs;
}
public void setApiPackage(final String apiPackage) {
this.apiPackage = apiPackage;
}
public void setModelPackage(final String modelPackage) {
this.modelPackage = modelPackage;
}
@Override
public boolean isBuilderSupported() {
return true;
}
@Override
public void enableBuilderSupport() {
modelTemplateFiles.put("modelBuilder.mustache", "Builder.java");
}
@Override
public boolean is303Supported() {
return false;
}
@Override
public void enable303() {
// modelTemplateFiles.remove("model.mustache");
// modelTemplateFiles.put("model303.mustache", ".java");
}
@Override
public String toApiName(String name) {
if (name.length() == 0) {
return "DefaultApi";
}
name = sanitizeName(name);
return camelize(name) + "Api";
}
@Override
public void skipApiGeneration() {
// TODO Auto-generated method stub
}
@Override
public void skipModelGeneration() {
// TODO Auto-generated method stub
}
}