forked from loafle/openapi-generator-original
Fix removing dollar sign for name sanitization (#16301)
* fix replacing dollar sign * try to add tests add list import add missing imports import OpenAPI fix import ? fix import? rename methods test test fix test python test fix fix?? fix?? --------- Co-authored-by: Joshix-1 <57299889+Joshix-1@users.noreply.github.com> Co-authored-by: Joshix-1 <joshix.dev@mailbox.org>
This commit is contained in:
@@ -512,7 +512,7 @@ public abstract class AbstractPhpCodegen extends DefaultCodegen implements Codeg
|
||||
name = name.replaceAll("[^\\w\\\\]+", "_"); // FIXME: a parameter should not be assigned. Also declare the methods parameters as 'final'.
|
||||
|
||||
// remove dollar sign
|
||||
name = name.replaceAll("$", "");
|
||||
name = name.replace("$", "");
|
||||
|
||||
// model name cannot use reserved keyword
|
||||
if (isReservedWord(name)) {
|
||||
|
||||
@@ -215,7 +215,7 @@ public abstract class AbstractPythonCodegen extends DefaultCodegen implements Co
|
||||
name = sanitizeName(name); // FIXME: a parameter should not be assigned. Also declare the methods parameters as 'final'.
|
||||
|
||||
// remove dollar sign
|
||||
name = name.replaceAll("$", "");
|
||||
name = name.replace("$", "");
|
||||
|
||||
// if it's all upper case, convert to lower case
|
||||
if (name.matches("^[A-Z_]*$")) {
|
||||
@@ -717,7 +717,7 @@ public abstract class AbstractPythonCodegen extends DefaultCodegen implements Co
|
||||
|
||||
String sanitizedName = sanitizeName(name); // FIXME: a parameter should not be assigned. Also declare the methods parameters as 'final'.
|
||||
// remove dollar sign
|
||||
sanitizedName = sanitizedName.replaceAll("$", "");
|
||||
sanitizedName = sanitizedName.replace("$", "");
|
||||
// remove whitespace
|
||||
sanitizedName = sanitizedName.replaceAll("\\s+", "");
|
||||
|
||||
|
||||
@@ -505,7 +505,7 @@ public class ProtobufSchemaCodegen extends DefaultCodegen implements CodegenConf
|
||||
public String toModelName(String name) {
|
||||
name = sanitizeName(name); // FIXME: a parameter should not be assigned. Also declare the methods parameters as 'final'.
|
||||
// remove dollar sign
|
||||
name = name.replaceAll("$", "");
|
||||
name = name.replace("$", "");
|
||||
|
||||
// model name cannot use reserved keyword, e.g. return
|
||||
if (isReservedWord(name)) {
|
||||
|
||||
@@ -17,8 +17,11 @@
|
||||
|
||||
package org.openapitools.codegen.php;
|
||||
|
||||
import io.swagger.v3.oas.models.OpenAPI;
|
||||
import org.openapitools.codegen.CodegenConstants;
|
||||
import org.openapitools.codegen.CodegenModel;
|
||||
import org.openapitools.codegen.languages.PhpClientCodegen;
|
||||
import org.openapitools.codegen.TestUtils;
|
||||
import org.testng.Assert;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
@@ -76,4 +79,15 @@ public class PhpClientCodegenTest {
|
||||
Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.INVOKER_PACKAGE), "Xinvoker");
|
||||
}
|
||||
|
||||
@Test(description = "convert a model with dollar signs")
|
||||
public void modelTest() {
|
||||
final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/dollar-in-names-pull14359.yaml");
|
||||
final PhpClientCodegen codegen = new PhpClientCodegen();
|
||||
|
||||
codegen.setOpenAPI(openAPI);
|
||||
final CodegenModel simpleName = codegen.fromModel("$DollarModel$", openAPI.getComponents().getSchemas().get("$DollarModel$"));
|
||||
Assert.assertEquals(simpleName.name, "$DollarModel$");
|
||||
Assert.assertEquals(simpleName.classname, "DollarModel");
|
||||
Assert.assertEquals(simpleName.classVarName, "dollar_model");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,7 +16,9 @@
|
||||
|
||||
package org.openapitools.codegen.protobuf;
|
||||
|
||||
import io.swagger.v3.oas.models.OpenAPI;
|
||||
import org.openapitools.codegen.ClientOptInput;
|
||||
import org.openapitools.codegen.CodegenModel;
|
||||
import org.openapitools.codegen.DefaultGenerator;
|
||||
import org.openapitools.codegen.TestUtils;
|
||||
import org.openapitools.codegen.config.CodegenConfigurator;
|
||||
@@ -79,4 +81,16 @@ public class ProtobufSchemaCodegenTest {
|
||||
|
||||
assertEquals(generatedFile, expectedFile);
|
||||
}
|
||||
|
||||
@Test(description = "convert a model with dollar signs")
|
||||
public void modelTest() {
|
||||
final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/dollar-in-names-pull14359.yaml");
|
||||
final ProtobufSchemaCodegen codegen = new ProtobufSchemaCodegen();
|
||||
|
||||
codegen.setOpenAPI(openAPI);
|
||||
final CodegenModel simpleName = codegen.fromModel("$DollarModel$", openAPI.getComponents().getSchemas().get("$DollarModel$"));
|
||||
Assert.assertEquals(simpleName.name, "$DollarModel$");
|
||||
Assert.assertEquals(simpleName.classname, "DollarModel");
|
||||
Assert.assertEquals(simpleName.classVarName, "$DollarModel$");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -484,4 +484,21 @@ public class PythonClientCodegenTest {
|
||||
Assert.assertEquals(op.allParams.get(0).containerTypeMapped, "Dict");
|
||||
Assert.assertEquals(op.allParams.get(0).baseName, "dict_string_integer");
|
||||
}
|
||||
|
||||
@Test(description = "convert a model with dollar signs")
|
||||
public void modelTestDollarSign() {
|
||||
final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/dollar-in-names-pull14359.yaml");
|
||||
final DefaultCodegen codegen = new PythonClientCodegen();
|
||||
|
||||
codegen.setOpenAPI(openAPI);
|
||||
final CodegenModel simpleName = codegen.fromModel("$DollarModel$", openAPI.getComponents().getSchemas().get("$DollarModel$"));
|
||||
Assert.assertEquals(simpleName.name, "$DollarModel$");
|
||||
Assert.assertEquals(simpleName.classname, "DollarModel");
|
||||
Assert.assertEquals(simpleName.classVarName, "dollar_model");
|
||||
|
||||
List<CodegenProperty> vars = simpleName.getVars();
|
||||
Assert.assertEquals(vars.size(), 1);
|
||||
CodegenProperty property = vars.get(0);
|
||||
Assert.assertEquals(property.name, "dollar_value");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
openapi: 3.0.3
|
||||
info:
|
||||
title: Pull 14359 - Dollar escaping
|
||||
description: "Dollar sign in names"
|
||||
version: "1.0.0"
|
||||
components:
|
||||
schemas:
|
||||
$DollarModel$:
|
||||
type: object
|
||||
properties:
|
||||
$dollarValue$:
|
||||
type: integer
|
||||
format: int64
|
||||
Reference in New Issue
Block a user