forked from loafle/openapi-generator-original
merge from upstream/master
This commit is contained in:
commit
5f811f3ba7
@ -13,17 +13,22 @@ public class CodegenConfigLoader {
|
|||||||
*/
|
*/
|
||||||
public static CodegenConfig forName(String name) {
|
public static CodegenConfig forName(String name) {
|
||||||
ServiceLoader<CodegenConfig> loader = load(CodegenConfig.class);
|
ServiceLoader<CodegenConfig> loader = load(CodegenConfig.class);
|
||||||
|
|
||||||
|
StringBuilder availableConfigs = new StringBuilder();
|
||||||
|
|
||||||
for (CodegenConfig config : loader) {
|
for (CodegenConfig config : loader) {
|
||||||
if (config.getName().equals(name)) {
|
if (config.getName().equals(name)) {
|
||||||
return config;
|
return config;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
availableConfigs.append(config.getName()).append("\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
// else try to load directly
|
// else try to load directly
|
||||||
try {
|
try {
|
||||||
return (CodegenConfig) Class.forName(name).newInstance();
|
return (CodegenConfig) Class.forName(name).newInstance();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new RuntimeException("Can't load config class with name ".concat(name), e);
|
throw new RuntimeException("Can't load config class with name ".concat(name) + " Available: " + availableConfigs.toString(), e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -394,7 +394,13 @@ public class DefaultCodegen {
|
|||||||
public String toInstantiationType(Property p) {
|
public String toInstantiationType(Property p) {
|
||||||
if (p instanceof MapProperty) {
|
if (p instanceof MapProperty) {
|
||||||
MapProperty ap = (MapProperty) p;
|
MapProperty ap = (MapProperty) p;
|
||||||
String inner = getSwaggerType(ap.getAdditionalProperties());
|
Property additionalProperties2 = ap.getAdditionalProperties();
|
||||||
|
String type = additionalProperties2.getType();
|
||||||
|
if (null == type) {
|
||||||
|
LOGGER.error("No Type defined for Additional Property " + additionalProperties2 + "\n" //
|
||||||
|
+ "\tIn Property: " + p);
|
||||||
|
}
|
||||||
|
String inner = getSwaggerType(additionalProperties2);
|
||||||
return instantiationTypes.get("map") + "<String, " + inner + ">";
|
return instantiationTypes.get("map") + "<String, " + inner + ">";
|
||||||
} else if (p instanceof ArrayProperty) {
|
} else if (p instanceof ArrayProperty) {
|
||||||
ArrayProperty ap = (ArrayProperty) p;
|
ArrayProperty ap = (ArrayProperty) p;
|
||||||
@ -769,7 +775,7 @@ public class DefaultCodegen {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
operationId = builder.toString();
|
operationId = builder.toString();
|
||||||
LOGGER.warn("generated operationId " + operationId);
|
LOGGER.info("generated operationId " + operationId + "\tfor Path: " + httpMethod + " " + path);
|
||||||
}
|
}
|
||||||
operationId = removeNonNameElementToCamelCase(operationId);
|
operationId = removeNonNameElementToCamelCase(operationId);
|
||||||
op.path = path;
|
op.path = path;
|
||||||
@ -1009,6 +1015,10 @@ public class DefaultCodegen {
|
|||||||
}
|
}
|
||||||
p.jsonSchema = Json.pretty(param);
|
p.jsonSchema = Json.pretty(param);
|
||||||
|
|
||||||
|
if (System.getProperty("debugParser") != null) {
|
||||||
|
LOGGER.info("working on Parameter " + param);
|
||||||
|
}
|
||||||
|
|
||||||
// move the defaultValue for headers, forms and params
|
// move the defaultValue for headers, forms and params
|
||||||
if (param instanceof QueryParameter) {
|
if (param instanceof QueryParameter) {
|
||||||
p.defaultValue = ((QueryParameter) param).getDefaultValue();
|
p.defaultValue = ((QueryParameter) param).getDefaultValue();
|
||||||
@ -1022,7 +1032,11 @@ public class DefaultCodegen {
|
|||||||
SerializableParameter qp = (SerializableParameter) param;
|
SerializableParameter qp = (SerializableParameter) param;
|
||||||
Property property = null;
|
Property property = null;
|
||||||
String collectionFormat = null;
|
String collectionFormat = null;
|
||||||
if ("array".equals(qp.getType())) {
|
String type = qp.getType();
|
||||||
|
if (null == type) {
|
||||||
|
LOGGER.warn("Type is NULL for Serializable Parameter: " + param);
|
||||||
|
}
|
||||||
|
if ("array".equals(type)) {
|
||||||
Property inner = qp.getItems();
|
Property inner = qp.getItems();
|
||||||
if (inner == null) {
|
if (inner == null) {
|
||||||
LOGGER.warn("warning! No inner type supplied for array parameter \"" + qp.getName() + "\", using String");
|
LOGGER.warn("warning! No inner type supplied for array parameter \"" + qp.getName() + "\", using String");
|
||||||
@ -1034,7 +1048,7 @@ public class DefaultCodegen {
|
|||||||
p.baseType = pr.datatype;
|
p.baseType = pr.datatype;
|
||||||
p.isContainer = true;
|
p.isContainer = true;
|
||||||
imports.add(pr.baseType);
|
imports.add(pr.baseType);
|
||||||
} else if ("object".equals(qp.getType())) {
|
} else if ("object".equals(type)) {
|
||||||
Property inner = qp.getItems();
|
Property inner = qp.getItems();
|
||||||
if (inner == null) {
|
if (inner == null) {
|
||||||
LOGGER.warn("warning! No inner type supplied for map parameter \"" + qp.getName() + "\", using String");
|
LOGGER.warn("warning! No inner type supplied for map parameter \"" + qp.getName() + "\", using String");
|
||||||
@ -1047,12 +1061,13 @@ public class DefaultCodegen {
|
|||||||
imports.add(pr.baseType);
|
imports.add(pr.baseType);
|
||||||
} else {
|
} else {
|
||||||
Map<PropertyId, Object> args = new HashMap<PropertyId, Object>();
|
Map<PropertyId, Object> args = new HashMap<PropertyId, Object>();
|
||||||
|
String format = qp.getFormat();
|
||||||
args.put(PropertyId.ENUM, qp.getEnum());
|
args.put(PropertyId.ENUM, qp.getEnum());
|
||||||
property = PropertyBuilder.build(qp.getType(), qp.getFormat(), args);
|
property = PropertyBuilder.build(type, format, args);
|
||||||
}
|
}
|
||||||
if (property == null) {
|
if (property == null) {
|
||||||
LOGGER.warn("warning! Property type \"" + qp.getType() + "\" not found for parameter \"" + param.getName() + "\", using String");
|
LOGGER.warn("warning! Property type \"" + type + "\" not found for parameter \"" + param.getName() + "\", using String");
|
||||||
property = new StringProperty().description("//TODO automatically added by swagger-codegen. Type was " + qp.getType() + " but not supported");
|
property = new StringProperty().description("//TODO automatically added by swagger-codegen. Type was " + type + " but not supported");
|
||||||
}
|
}
|
||||||
property.setRequired(param.getRequired());
|
property.setRequired(param.getRequired());
|
||||||
CodegenProperty model = fromProperty(qp.getName(), property);
|
CodegenProperty model = fromProperty(qp.getName(), property);
|
||||||
@ -1067,6 +1082,10 @@ public class DefaultCodegen {
|
|||||||
imports.add(model.complexType);
|
imports.add(model.complexType);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
if (!(param instanceof BodyParameter)) {
|
||||||
|
LOGGER.error("Cannot use Parameter " + param + " as Body Parameter");
|
||||||
|
}
|
||||||
|
|
||||||
BodyParameter bp = (BodyParameter) param;
|
BodyParameter bp = (BodyParameter) param;
|
||||||
Model model = bp.getSchema();
|
Model model = bp.getSchema();
|
||||||
|
|
||||||
|
@ -20,6 +20,8 @@ import io.swagger.models.parameters.Parameter;
|
|||||||
import io.swagger.util.Json;
|
import io.swagger.util.Json;
|
||||||
import org.apache.commons.io.IOUtils;
|
import org.apache.commons.io.IOUtils;
|
||||||
import org.joda.time.DateTime;
|
import org.joda.time.DateTime;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
@ -39,12 +41,15 @@ import java.util.Map;
|
|||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
public class DefaultGenerator extends AbstractGenerator implements Generator {
|
public class DefaultGenerator extends AbstractGenerator implements Generator {
|
||||||
|
Logger LOGGER = LoggerFactory.getLogger(DefaultGenerator.class);
|
||||||
|
|
||||||
protected CodegenConfig config;
|
protected CodegenConfig config;
|
||||||
protected ClientOptInput opts = null;
|
protected ClientOptInput opts = null;
|
||||||
protected Swagger swagger = null;
|
protected Swagger swagger = null;
|
||||||
|
|
||||||
public CodeGenStatus status = CodeGenStatus.UNRUN;
|
public CodeGenStatus status = CodeGenStatus.UNRUN;
|
||||||
|
|
||||||
|
@Override
|
||||||
public Generator opts(ClientOptInput opts) {
|
public Generator opts(ClientOptInput opts) {
|
||||||
this.opts = opts;
|
this.opts = opts;
|
||||||
|
|
||||||
@ -55,6 +60,7 @@ public class DefaultGenerator extends AbstractGenerator implements Generator {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public List<File> generate() {
|
public List<File> generate() {
|
||||||
if (swagger == null || config == null) {
|
if (swagger == null || config == null) {
|
||||||
throw new RuntimeException("missing swagger input or config!");
|
throw new RuntimeException("missing swagger input or config!");
|
||||||
@ -150,6 +156,7 @@ public class DefaultGenerator extends AbstractGenerator implements Generator {
|
|||||||
String template = readTemplate(templateFile);
|
String template = readTemplate(templateFile);
|
||||||
Template tmpl = Mustache.compiler()
|
Template tmpl = Mustache.compiler()
|
||||||
.withLoader(new Mustache.TemplateLoader() {
|
.withLoader(new Mustache.TemplateLoader() {
|
||||||
|
@Override
|
||||||
public Reader getTemplate(String name) {
|
public Reader getTemplate(String name) {
|
||||||
return getTemplateReader(config.templateDir() + File.separator + name + ".mustache");
|
return getTemplateReader(config.templateDir() + File.separator + name + ".mustache");
|
||||||
}
|
}
|
||||||
@ -203,6 +210,7 @@ public class DefaultGenerator extends AbstractGenerator implements Generator {
|
|||||||
String template = readTemplate(templateFile);
|
String template = readTemplate(templateFile);
|
||||||
Template tmpl = Mustache.compiler()
|
Template tmpl = Mustache.compiler()
|
||||||
.withLoader(new Mustache.TemplateLoader() {
|
.withLoader(new Mustache.TemplateLoader() {
|
||||||
|
@Override
|
||||||
public Reader getTemplate(String name) {
|
public Reader getTemplate(String name) {
|
||||||
return getTemplateReader(config.templateDir() + File.separator + name + ".mustache");
|
return getTemplateReader(config.templateDir() + File.separator + name + ".mustache");
|
||||||
}
|
}
|
||||||
@ -277,6 +285,7 @@ public class DefaultGenerator extends AbstractGenerator implements Generator {
|
|||||||
String template = readTemplate(templateFile);
|
String template = readTemplate(templateFile);
|
||||||
Template tmpl = Mustache.compiler()
|
Template tmpl = Mustache.compiler()
|
||||||
.withLoader(new Mustache.TemplateLoader() {
|
.withLoader(new Mustache.TemplateLoader() {
|
||||||
|
@Override
|
||||||
public Reader getTemplate(String name) {
|
public Reader getTemplate(String name) {
|
||||||
return getTemplateReader(config.templateDir() + File.separator + name + ".mustache");
|
return getTemplateReader(config.templateDir() + File.separator + name + ".mustache");
|
||||||
}
|
}
|
||||||
@ -416,6 +425,9 @@ public class DefaultGenerator extends AbstractGenerator implements Generator {
|
|||||||
|
|
||||||
public void processOperation(String resourcePath, String httpMethod, Operation operation, Map<String, List<CodegenOperation>> operations, Path path) {
|
public void processOperation(String resourcePath, String httpMethod, Operation operation, Map<String, List<CodegenOperation>> operations, Path path) {
|
||||||
if (operation != null) {
|
if (operation != null) {
|
||||||
|
if (System.getProperty("debugOperations") != null) {
|
||||||
|
LOGGER.debug("processOperation: resourcePath= " + resourcePath + "\t;" + httpMethod + " " + operation + "\n");
|
||||||
|
}
|
||||||
List<String> tags = operation.getTags();
|
List<String> tags = operation.getTags();
|
||||||
if (tags == null) {
|
if (tags == null) {
|
||||||
tags = new ArrayList<String>();
|
tags = new ArrayList<String>();
|
||||||
@ -445,44 +457,54 @@ public class DefaultGenerator extends AbstractGenerator implements Generator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (String tag : tags) {
|
for (String tag : tags) {
|
||||||
CodegenOperation co = config.fromOperation(resourcePath, httpMethod, operation, swagger.getDefinitions());
|
CodegenOperation co = null;
|
||||||
co.tags = new ArrayList<String>();
|
try {
|
||||||
co.tags.add(sanitizeTag(tag));
|
co = config.fromOperation(resourcePath, httpMethod, operation, swagger.getDefinitions());
|
||||||
config.addOperationToGroup(sanitizeTag(tag), resourcePath, operation, co, operations);
|
co.tags = new ArrayList<String>();
|
||||||
|
co.tags.add(sanitizeTag(tag));
|
||||||
|
config.addOperationToGroup(sanitizeTag(tag), resourcePath, operation, co, operations);
|
||||||
|
|
||||||
List<Map<String, List<String>>> securities = operation.getSecurity();
|
List<Map<String, List<String>>> securities = operation.getSecurity();
|
||||||
if (securities == null) {
|
if (securities == null) {
|
||||||
continue;
|
|
||||||
}
|
|
||||||
Map<String, SecuritySchemeDefinition> authMethods = new HashMap<String, SecuritySchemeDefinition>();
|
|
||||||
for (Map<String, List<String>> security : securities) {
|
|
||||||
if (security.size() != 1) {
|
|
||||||
//Not sure what to do
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
String securityName = security.keySet().iterator().next();
|
Map<String, SecuritySchemeDefinition> authMethods = new HashMap<String, SecuritySchemeDefinition>();
|
||||||
SecuritySchemeDefinition securityDefinition = fromSecurity(securityName);
|
for (Map<String, List<String>> security : securities) {
|
||||||
if (securityDefinition != null) {
|
if (security.size() != 1) {
|
||||||
if(securityDefinition instanceof OAuth2Definition) {
|
//Not sure what to do
|
||||||
OAuth2Definition oauth2Definition = (OAuth2Definition) securityDefinition;
|
continue;
|
||||||
OAuth2Definition oauth2Operation = new OAuth2Definition();
|
}
|
||||||
oauth2Operation.setType(oauth2Definition.getType());
|
String securityName = security.keySet().iterator().next();
|
||||||
oauth2Operation.setAuthorizationUrl(oauth2Definition.getAuthorizationUrl());
|
SecuritySchemeDefinition securityDefinition = fromSecurity(securityName);
|
||||||
oauth2Operation.setFlow(oauth2Definition.getFlow());
|
if (securityDefinition != null) {
|
||||||
oauth2Operation.setTokenUrl(oauth2Definition.getTokenUrl());
|
if(securityDefinition instanceof OAuth2Definition) {
|
||||||
for (String scope : security.values().iterator().next()) {
|
OAuth2Definition oauth2Definition = (OAuth2Definition) securityDefinition;
|
||||||
if (oauth2Definition.getScopes().containsKey(scope)) {
|
OAuth2Definition oauth2Operation = new OAuth2Definition();
|
||||||
oauth2Operation.addScope(scope, oauth2Definition.getScopes().get(scope));
|
oauth2Operation.setType(oauth2Definition.getType());
|
||||||
}
|
oauth2Operation.setAuthorizationUrl(oauth2Definition.getAuthorizationUrl());
|
||||||
}
|
oauth2Operation.setFlow(oauth2Definition.getFlow());
|
||||||
authMethods.put(securityName, oauth2Operation);
|
oauth2Operation.setTokenUrl(oauth2Definition.getTokenUrl());
|
||||||
} else {
|
for (String scope : security.values().iterator().next()) {
|
||||||
authMethods.put(securityName, securityDefinition);
|
if (oauth2Definition.getScopes().containsKey(scope)) {
|
||||||
}
|
oauth2Operation.addScope(scope, oauth2Definition.getScopes().get(scope));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
authMethods.put(securityName, oauth2Operation);
|
||||||
|
} else {
|
||||||
|
authMethods.put(securityName, securityDefinition);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!authMethods.isEmpty()) {
|
||||||
|
co.authMethods = config.fromSecurity(authMethods);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!authMethods.isEmpty()) {
|
catch (Exception ex) {
|
||||||
co.authMethods = config.fromSecurity(authMethods);
|
LOGGER.error("Error while trying to get Config from Operation for tag(" + tag + ")\n" //
|
||||||
|
+ "\tResource: " + httpMethod + " " + resourcePath + "\n"//
|
||||||
|
+ "\tOperation:" + operation + "\n" //
|
||||||
|
+ "\tDefinitions: " + swagger.getDefinitions() + "\n");
|
||||||
|
ex.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -128,7 +128,7 @@ public class XmlExampleGenerator {
|
|||||||
ArrayProperty p = (ArrayProperty) property;
|
ArrayProperty p = (ArrayProperty) property;
|
||||||
Property inner = p.getItems();
|
Property inner = p.getItems();
|
||||||
boolean wrapped = false;
|
boolean wrapped = false;
|
||||||
if (property.getXml() != null && property.getXml().getWrapped()) {
|
if (property.getXml() != null && property.getXml().getWrapped() != null && property.getXml().getWrapped()) {
|
||||||
wrapped = true;
|
wrapped = true;
|
||||||
}
|
}
|
||||||
if (wrapped) {
|
if (wrapped) {
|
||||||
|
@ -24,8 +24,12 @@ import java.util.List;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
public class JavaClientCodegen extends DefaultCodegen implements CodegenConfig {
|
public class JavaClientCodegen extends DefaultCodegen implements CodegenConfig {
|
||||||
|
private static final Logger LOGGER = LoggerFactory.getLogger(JavaClientCodegen.class);
|
||||||
|
|
||||||
protected String invokerPackage = "io.swagger.client";
|
protected String invokerPackage = "io.swagger.client";
|
||||||
protected String groupId = "io.swagger";
|
protected String groupId = "io.swagger";
|
||||||
protected String artifactId = "swagger-java-client";
|
protected String artifactId = "swagger-java-client";
|
||||||
@ -82,14 +86,17 @@ public class JavaClientCodegen extends DefaultCodegen implements CodegenConfig {
|
|||||||
cliOptions.add(buildLibraryCliOption(supportedLibraries));
|
cliOptions.add(buildLibraryCliOption(supportedLibraries));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public CodegenType getTag() {
|
public CodegenType getTag() {
|
||||||
return CodegenType.CLIENT;
|
return CodegenType.CLIENT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public String getName() {
|
public String getName() {
|
||||||
return "java";
|
return "java";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public String getHelp() {
|
public String getHelp() {
|
||||||
return "Generates a Java client library.";
|
return "Generates a Java client library.";
|
||||||
}
|
}
|
||||||
@ -191,6 +198,7 @@ public class JavaClientCodegen extends DefaultCodegen implements CodegenConfig {
|
|||||||
return outputFolder + "/" + sourceFolder + "/" + apiPackage().replace('.', File.separatorChar);
|
return outputFolder + "/" + sourceFolder + "/" + apiPackage().replace('.', File.separatorChar);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public String modelFileFolder() {
|
public String modelFileFolder() {
|
||||||
return outputFolder + "/" + sourceFolder + "/" + modelPackage().replace('.', File.separatorChar);
|
return outputFolder + "/" + sourceFolder + "/" + modelPackage().replace('.', File.separatorChar);
|
||||||
}
|
}
|
||||||
@ -284,6 +292,9 @@ public class JavaClientCodegen extends DefaultCodegen implements CodegenConfig {
|
|||||||
} else {
|
} else {
|
||||||
type = swaggerType;
|
type = swaggerType;
|
||||||
}
|
}
|
||||||
|
if (null == type) {
|
||||||
|
LOGGER.error("No Type defined for Property " + p);
|
||||||
|
}
|
||||||
return toModelName(type);
|
return toModelName(type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -207,11 +207,14 @@ public class NodeJSServerCodegen extends DefaultCodegen implements CodegenConfig
|
|||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
private Map<String, Object> getOperations(Map<String, Object> objs) {
|
private List<Map<String, Object>> getOperations(Map<String, Object> objs) {
|
||||||
|
List<Map<String, Object>> result = new ArrayList<Map<String, Object>>();
|
||||||
Map<String, Object> apiInfo = (Map<String, Object>) objs.get("apiInfo");
|
Map<String, Object> apiInfo = (Map<String, Object>) objs.get("apiInfo");
|
||||||
List<Map<String, Object>> apis = (List<Map<String, Object>>) apiInfo.get("apis");
|
List<Map<String, Object>> apis = (List<Map<String, Object>>) apiInfo.get("apis");
|
||||||
Map<String, Object> api = apis.get(0);
|
for (Map<String, Object> api : apis) {
|
||||||
return (Map<String, Object>) api.get("operations");
|
result.add((Map<String, Object>) api.get("operations"));
|
||||||
|
}
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<Map<String, Object>> sortOperationsByPath(List<CodegenOperation> ops) {
|
private List<Map<String, Object>> sortOperationsByPath(List<CodegenOperation> ops) {
|
||||||
@ -221,7 +224,7 @@ public class NodeJSServerCodegen extends DefaultCodegen implements CodegenConfig
|
|||||||
opsByPath.put(op.path, op);
|
opsByPath.put(op.path, op);
|
||||||
}
|
}
|
||||||
|
|
||||||
List<Map<String, Object>> opsByPathList = new ArrayList<Map<String, Object>>();
|
List<Map<String, Object>> opsByPathList = new ArrayList<Map<String, Object>>();
|
||||||
for (Entry<String, Collection<CodegenOperation>> entry : opsByPath.asMap().entrySet()) {
|
for (Entry<String, Collection<CodegenOperation>> entry : opsByPath.asMap().entrySet()) {
|
||||||
Map<String, Object> opsByPathEntry = new HashMap<String, Object>();
|
Map<String, Object> opsByPathEntry = new HashMap<String, Object>();
|
||||||
opsByPathList.add(opsByPathEntry);
|
opsByPathList.add(opsByPathEntry);
|
||||||
@ -239,16 +242,13 @@ public class NodeJSServerCodegen extends DefaultCodegen implements CodegenConfig
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Map<String, Object> postProcessSupportingFileData(Map<String, Object> objs) {
|
public Map<String, Object> postProcessSupportingFileData(Map<String, Object> objs) {
|
||||||
Map<String, Object> operations = getOperations(objs);
|
for (Map<String, Object> operations : getOperations(objs)) {
|
||||||
|
|
||||||
if (operations != null) {
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
List<CodegenOperation> ops = (List<CodegenOperation>) operations.get("operation");
|
List<CodegenOperation> ops = (List<CodegenOperation>) operations.get("operation");
|
||||||
|
|
||||||
List<Map<String, Object>> opsByPathList = sortOperationsByPath(ops);
|
List<Map<String, Object>> opsByPathList = sortOperationsByPath(ops);
|
||||||
operations.put("operationsByPath", opsByPathList);
|
operations.put("operationsByPath", opsByPathList);
|
||||||
}
|
}
|
||||||
|
|
||||||
return super.postProcessSupportingFileData(objs);
|
return super.postProcessSupportingFileData(objs);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -14,7 +14,7 @@
|
|||||||
{{#operations}}
|
{{#operations}}
|
||||||
{{#operationsByPath}}
|
{{#operationsByPath}}
|
||||||
"{{{path}}}": {
|
"{{{path}}}": {
|
||||||
{{#operation}}
|
{{#operation}}
|
||||||
"{{httpMethod}}": {
|
"{{httpMethod}}": {
|
||||||
"summary": "{{summary}}",
|
"summary": "{{summary}}",
|
||||||
"description":"{{notes}}",
|
"description":"{{notes}}",
|
||||||
@ -34,7 +34,6 @@
|
|||||||
{{/operation}}
|
{{/operation}}
|
||||||
} {{#hasMore}},{{/hasMore}}
|
} {{#hasMore}},{{/hasMore}}
|
||||||
{{/operationsByPath}}
|
{{/operationsByPath}}
|
||||||
{{#hasMore}},{{/hasMore}}
|
|
||||||
{{/operations}}
|
{{/operations}}
|
||||||
{{/apis}}
|
{{/apis}}
|
||||||
{{/apiInfo}}
|
{{/apiInfo}}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user