[haskell-http-client] resolve oas 2.0 regressions (#198)

* [haskell-http-client] fix codegen issues

* ensure datatypeWithEnum is set on codegenParameter when is enum

* [haskell-http-client] fix isAlias + arrayModelType missing "datatype"

* [haskell-http-client] param.isListContainer is sometimes false for list types

* [haskell-http-client] gen MimeNoContent instances automatically

* [haskell-http-client] fix example-app and integration tests

* [haskell-http-client] update docs
This commit is contained in:
Jon Schoning
2018-04-23 03:10:50 -05:00
committed by William Cheng
parent 019b0dca1c
commit db02cc2ac9
81 changed files with 5231 additions and 5524 deletions

View File

@@ -4115,9 +4115,12 @@ public class DefaultCodegen implements CodegenConfig {
codegenParameter._enum = codegenProperty._enum;
codegenParameter.allowableValues = codegenProperty.allowableValues;
if (codegenProperty.items != null && codegenProperty.items.isEnum) {
if (codegenProperty.isEnum) {
codegenParameter.datatypeWithEnum = codegenProperty.datatypeWithEnum;
codegenParameter.enumName = codegenProperty.enumName;
}
if (codegenProperty.items != null && codegenProperty.items.isEnum) {
codegenParameter.items = codegenProperty.items;
}

View File

@@ -118,6 +118,8 @@ public class HaskellHttpClientCodegen extends DefaultCodegen implements CodegenC
public HaskellHttpClientCodegen() {
super();
this.prependFormOrBodyParameters = true;
// override the mapping to keep the original mapping in Haskell
specialCharReplacements.put("-", "Dash");
specialCharReplacements.put(">", "GreaterThan");
@@ -620,6 +622,10 @@ public class HaskellHttpClientCodegen extends DefaultCodegen implements CodegenC
param.vendorExtensions.put(X_IS_BODY_OR_FORM_PARAM, param.isBodyParam || param.isFormParam);
if (!StringUtils.isBlank(param.collectionFormat)) {
param.vendorExtensions.put(X_COLLECTION_FORMAT, mapCollectionFormat(param.collectionFormat));
} else if (!param.isBodyParam && (param.isListContainer || param.dataType.startsWith("["))) { // param.isListContainer is sometimes false for list types
// defaulting due to https://github.com/wing328/openapi-generator/issues/72
param.collectionFormat = "csv";
param.vendorExtensions.put(X_COLLECTION_FORMAT, mapCollectionFormat(param.collectionFormat));
}
if (!param.required) {
op.vendorExtensions.put(X_HAS_OPTIONAL_PARAMS, true);
@@ -734,9 +740,9 @@ public class HaskellHttpClientCodegen extends DefaultCodegen implements CodegenC
public CodegenModel fromModel(String name, Schema mod, Map<String, Schema> allDefinitions) {
CodegenModel model = super.fromModel(name, mod, allDefinitions);
while (typeNames.contains(model.classname)) {
model.classname = generateNextName(model.classname);
}
// while (typeNames.contains(model.classname)) {
// model.classname = generateNextName(model.classname);
// }
typeNames.add(model.classname);
modelTypeNames.add(model.classname);
@@ -1154,7 +1160,11 @@ public class HaskellHttpClientCodegen extends DefaultCodegen implements CodegenC
CodegenModel cm = (CodegenModel) mo.get("model");
cm.isEnum = genEnums && cm.isEnum;
if (cm.isAlias) {
cm.vendorExtensions.put(X_DATA_TYPE, cm.dataType);
String dataType = cm.dataType;
if(dataType == null && cm.isArrayModel) { // isAlias + arrayModelType missing "datatype"
dataType = "[" + cm.arrayModelType +"]" ;
}
cm.vendorExtensions.put(X_DATA_TYPE, dataType);
}
for (CodegenProperty var : cm.vars) {
String datatype = genEnums && !StringUtils.isBlank(var.datatypeWithEnum)