forked from loafle/openapi-generator-original
Fix issue with Ruby client where strings from example properties are not wrapped with quotes (#987)
This commit is contained in:
parent
eb5a8cc752
commit
63b1c233c9
@ -18,6 +18,8 @@
|
|||||||
package org.openapitools.codegen.languages;
|
package org.openapitools.codegen.languages;
|
||||||
|
|
||||||
import io.swagger.v3.oas.models.media.Schema;
|
import io.swagger.v3.oas.models.media.Schema;
|
||||||
|
import io.swagger.v3.oas.models.parameters.Parameter;
|
||||||
|
import io.swagger.v3.oas.models.examples.Example;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.openapitools.codegen.*;
|
import org.openapitools.codegen.*;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
@ -536,6 +538,34 @@ public class RubyClientCodegen extends AbstractRubyCodegen {
|
|||||||
p.example = example;
|
p.example = example;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the example value of the parameter. Overrides the
|
||||||
|
* setParameterExampleValue(CodegenParameter, Parameter) method in
|
||||||
|
* DefaultCodegen to always call setParameterExampleValue(CodegenParameter)
|
||||||
|
* in this class, which adds single quotes around strings from the
|
||||||
|
* x-example property.
|
||||||
|
*
|
||||||
|
* @param codegenParameter Codegen parameter
|
||||||
|
* @param parameter Parameter
|
||||||
|
*/
|
||||||
|
public void setParameterExampleValue(CodegenParameter codegenParameter, Parameter parameter) {
|
||||||
|
if (parameter.getExample() != null) {
|
||||||
|
codegenParameter.example = parameter.getExample().toString();
|
||||||
|
} else if (parameter.getExamples() != null && !parameter.getExamples().isEmpty()) {
|
||||||
|
Example example = parameter.getExamples().values().iterator().next();
|
||||||
|
if (example.getValue() != null) {
|
||||||
|
codegenParameter.example = example.getValue().toString();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Schema schema = parameter.getSchema();
|
||||||
|
if (schema != null && schema.getExample() != null) {
|
||||||
|
codegenParameter.example = schema.getExample().toString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
setParameterExampleValue(codegenParameter);
|
||||||
|
}
|
||||||
|
|
||||||
public void setGemName(String gemName) {
|
public void setGemName(String gemName) {
|
||||||
this.gemName = gemName;
|
this.gemName = gemName;
|
||||||
}
|
}
|
||||||
|
@ -271,4 +271,33 @@ public class RubyClientCodegenTest {
|
|||||||
// TODO comment out the following until https://github.com/swagger-api/swagger-parser/issues/820 is solved
|
// TODO comment out the following until https://github.com/swagger-api/swagger-parser/issues/820 is solved
|
||||||
//Assert.assertTrue(status.isNullable);
|
//Assert.assertTrue(status.isNullable);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test(description = "test example string imported from x-example parameterr (OAS2)")
|
||||||
|
public void exampleStringFromExampleParameterOAS2Test() {
|
||||||
|
final OpenAPI openAPI = new OpenAPIParser().readLocation("src/test/resources/2_0/petstore-nullable.yaml", null, new ParseOptions()).getOpenAPI();
|
||||||
|
final RubyClientCodegen codegen = new RubyClientCodegen();
|
||||||
|
codegen.setModuleName("OnlinePetstore");
|
||||||
|
final String path = "/store/order/{orderId}";
|
||||||
|
|
||||||
|
final Operation p = openAPI.getPaths().get(path).getDelete();
|
||||||
|
final CodegenOperation op = codegen.fromOperation(path, "delete", p, openAPI.getComponents().getSchemas());
|
||||||
|
|
||||||
|
CodegenParameter pp = op.pathParams.get(0);
|
||||||
|
Assert.assertEquals(pp.example, "'orderid123'");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(description = "test example string imported from example in schema (OAS3)")
|
||||||
|
public void exampleStringFromXExampleParameterOAS3Test() {
|
||||||
|
final OpenAPI openAPI = new OpenAPIParser()
|
||||||
|
.readLocation("src/test/resources/3_0/petstore_oas3_test.yaml", null, new ParseOptions()).getOpenAPI();
|
||||||
|
final RubyClientCodegen codegen = new RubyClientCodegen();
|
||||||
|
codegen.setModuleName("OnlinePetstore");
|
||||||
|
final String path = "/store/order/{orderId}";
|
||||||
|
|
||||||
|
final Operation p = openAPI.getPaths().get(path).getDelete();
|
||||||
|
final CodegenOperation op = codegen.fromOperation(path, "delete", p, openAPI.getComponents().getSchemas());
|
||||||
|
|
||||||
|
CodegenParameter pp = op.pathParams.get(0);
|
||||||
|
Assert.assertEquals(pp.example, "'orderid123'");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -361,6 +361,7 @@ paths:
|
|||||||
description: ID of the order that needs to be deleted
|
description: ID of the order that needs to be deleted
|
||||||
required: true
|
required: true
|
||||||
type: string
|
type: string
|
||||||
|
x-example: orderid123
|
||||||
responses:
|
responses:
|
||||||
'400':
|
'400':
|
||||||
description: Invalid ID supplied
|
description: Invalid ID supplied
|
||||||
|
@ -360,6 +360,7 @@ paths:
|
|||||||
required: true
|
required: true
|
||||||
schema:
|
schema:
|
||||||
type: string
|
type: string
|
||||||
|
example: orderid123
|
||||||
responses:
|
responses:
|
||||||
'400':
|
'400':
|
||||||
description: Invalid ID supplied
|
description: Invalid ID supplied
|
||||||
|
Loading…
x
Reference in New Issue
Block a user