forked from loafle/openapi-generator-original
1. Added logic to make sure header parameters are set in the headers in java and scala code gen. Header parameter names are also available in templates for other languages to use
2. Fixed issues with enum name generation in java code gen library.
This commit is contained in:
@@ -268,8 +268,12 @@ public class LibraryCodeGenerator {
|
||||
else{
|
||||
valuePrefix = valueSuffix = "";
|
||||
};
|
||||
String namePrefix = "";
|
||||
if(isNameStartsWithInteger(allowableValue) && !canEnumNameStartsWithNumber()){
|
||||
namePrefix = "ENUM_";
|
||||
}
|
||||
template.setAttribute("values.{name,value}",
|
||||
this.getNameGenerator().applyClassNamingPolicy(allowableValue.replaceAll("-","_")),
|
||||
namePrefix+this.getNameGenerator().applyClassNamingPolicy(allowableValue.replaceAll("-","_")),
|
||||
this.getNameGenerator().applyMethodNamingPolicy(valuePrefix.concat(allowableValue).concat(valueSuffix)));
|
||||
}
|
||||
template.setAttribute(PACKAGE_NAME, config.getModelPackageName());
|
||||
@@ -288,6 +292,15 @@ public class LibraryCodeGenerator {
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isNameStartsWithInteger(String name) {
|
||||
for(int i=0; i <= 9 ; i++){
|
||||
if(name.startsWith(i+"")){
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private void generateOutputWrappers(List<Resource> resources, StringTemplateGroup templateGroup) {
|
||||
List<String> generatedClasses = new ArrayList<String>();
|
||||
StringTemplate template = templateGroup.getInstanceOf(WRAPPER_OBJECT_TEMPLATE);
|
||||
@@ -482,6 +495,14 @@ public class LibraryCodeGenerator {
|
||||
return nameGenerator;
|
||||
}
|
||||
|
||||
/**
|
||||
* In java enum names can't start with number so if the enums are numbers then we prefix them with ENUM_
|
||||
* @return
|
||||
*/
|
||||
protected boolean canEnumNameStartsWithNumber() {
|
||||
return true;
|
||||
}
|
||||
|
||||
protected CodeGenRulesProvider readRulesProviderConfig(String rulesProviderLocation, ObjectMapper mapper, File configFile) {
|
||||
CodeGenRulesProvider codeGenRules = null;
|
||||
try {
|
||||
|
||||
@@ -26,6 +26,7 @@ public class ResourceMethod {
|
||||
private List<MethodArgument> arguments;
|
||||
private List<MethodArgument> queryParameters;
|
||||
private List<MethodArgument> pathParameters;
|
||||
private List<MethodArgument> headerParameters;
|
||||
//set the original response name, this is used in identifying if the response is single valued or multi valued
|
||||
private String returnValueFromOperationJson;
|
||||
private String returnValue;
|
||||
@@ -89,7 +90,16 @@ public class ResourceMethod {
|
||||
public void setPathParameters(List<MethodArgument> pathParameters) {
|
||||
this.pathParameters = pathParameters;
|
||||
}
|
||||
|
||||
|
||||
public List<MethodArgument> getHeaderParameters() {
|
||||
return headerParameters;
|
||||
}
|
||||
|
||||
public void setHeaderParameters(List<MethodArgument> headerParameters) {
|
||||
this.headerParameters = headerParameters;
|
||||
}
|
||||
|
||||
|
||||
public String getReturnValue() {
|
||||
return returnValue;
|
||||
}
|
||||
|
||||
@@ -93,4 +93,10 @@ public class JavaLibCodeGen extends LibraryCodeGenerator {
|
||||
return javaConfiguration;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean canEnumNameStartsWithNumber() {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -214,10 +214,13 @@ public class EndpointOperation {
|
||||
List<MethodArgument> arguments = new ArrayList<MethodArgument>();
|
||||
List<MethodArgument> queryParams= new ArrayList<MethodArgument>();
|
||||
List<MethodArgument> pathParams= new ArrayList<MethodArgument>();
|
||||
List<MethodArgument> headerParams= new ArrayList<MethodArgument>();
|
||||
|
||||
method.setArguments(arguments);
|
||||
method.setQueryParameters(queryParams);
|
||||
method.setPathParameters(pathParams);
|
||||
|
||||
method.setHeaderParameters(headerParams);
|
||||
|
||||
for(ModelField modelField : this.getParameters()){
|
||||
if(!argNames.contains(modelField.getName())) {
|
||||
argNames.add(modelField.getName());
|
||||
@@ -233,9 +236,14 @@ public class EndpointOperation {
|
||||
anArgument.setRequired(modelField.isRequired());
|
||||
anArgument.setDefaultValue(modelField.getDefaultValue());
|
||||
arguments.add(anArgument);
|
||||
headerParams.add(anArgument);
|
||||
}else if(modelField.getParamType().equalsIgnoreCase(PARAM_TYPE_HEADER) &&
|
||||
modelField.getName().equals(API_KEY_PARAM_NAME)){
|
||||
//do nothing for API key parameter as all calls will automatically add API KEY to the http headers
|
||||
anArgument.setName(API_KEY_PARAM_NAME);
|
||||
anArgument.setDataType(MethodArgument.ARGUMENT_STRING);
|
||||
anArgument.setRequired(true);
|
||||
arguments.add(anArgument);
|
||||
headerParams.add(anArgument);
|
||||
}else if (modelField.getParamType().equalsIgnoreCase(PARAM_TYPE_PATH) &&
|
||||
!modelField.getName().equalsIgnoreCase(FORMAT_PARAM_NAME)) {
|
||||
anArgument.setName(modelField.getName());
|
||||
|
||||
@@ -149,7 +149,7 @@ public class APIInvoker {
|
||||
* @throws com.wordnik.swagger.runtime.exception.APIException if the call to API server fails.
|
||||
*/
|
||||
public String invokeAPI(String resourceURL, String method, Map<String,
|
||||
String> queryParams, Object postData) throws APIException {
|
||||
String> queryParams, Object postData, Map<String, String> headerParams) throws APIException {
|
||||
|
||||
|
||||
Client apiClient = Client.create();
|
||||
@@ -194,7 +194,12 @@ public class APIInvoker {
|
||||
for(String key : headerMap.keySet()){
|
||||
builder.header(key, headerMap.get(key));
|
||||
}
|
||||
|
||||
if(headerParams != null){
|
||||
for(String key : headerParams.keySet()){
|
||||
builder.header(key, headerParams.get(key));
|
||||
}
|
||||
}
|
||||
|
||||
ClientResponse clientResponse = null;
|
||||
if(method.equals(GET)) {
|
||||
clientResponse = builder.get(ClientResponse.class);
|
||||
|
||||
Reference in New Issue
Block a user