forked from loafle/openapi-generator-original
Fix support for 'class' properties in Java codegen (#4237)
* Fix support for 'class' properties in Java codegen Currently Java codegen works successfully for property named 'class' but fails on '_class', '__class', etc, because of 'Object.getClass()' overloading. This fix is intended to avoid all Object method overloading cases. * Regenerated samples for Java petstore-security-test
This commit is contained in:
@@ -32,4 +32,11 @@ public class AbstractJavaCodegenTest {
|
||||
Assert.assertEquals("__", fakeJavaCodegen.toEnumVarName("_,.", "String"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void toVarNameShouldAvoidOverloadingGetClassMethod() throws Exception {
|
||||
Assert.assertEquals("propertyClass", fakeJavaCodegen.toVarName("class"));
|
||||
Assert.assertEquals("propertyClass", fakeJavaCodegen.toVarName("_class"));
|
||||
Assert.assertEquals("propertyClass", fakeJavaCodegen.toVarName("__class"));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -522,4 +522,29 @@ public class JavaModelTest {
|
||||
Assert.assertEquals(cm.name, name);
|
||||
Assert.assertEquals(cm.classname, expectedName);
|
||||
}
|
||||
|
||||
@DataProvider(name = "classProperties")
|
||||
public static Object[][] classProperties() {
|
||||
return new Object[][] {
|
||||
{"class", "getPropertyClass", "setPropertyClass", "propertyClass"},
|
||||
{"_class", "getPropertyClass", "setPropertyClass", "propertyClass"},
|
||||
{"__class", "getPropertyClass", "setPropertyClass", "propertyClass"}
|
||||
};
|
||||
}
|
||||
|
||||
@Test(dataProvider = "classProperties", description = "handle 'class' properties")
|
||||
public void classPropertyTest(String baseName, String getter, String setter, String name) {
|
||||
final Model model = new ModelImpl()
|
||||
.description("a sample model")
|
||||
.property(baseName, new StringProperty());
|
||||
final DefaultCodegen codegen = new JavaClientCodegen();
|
||||
final CodegenModel cm = codegen.fromModel("sample", model);
|
||||
|
||||
final CodegenProperty property = cm.vars.get(0);
|
||||
Assert.assertEquals(property.baseName, baseName);
|
||||
Assert.assertEquals(property.getter, getter);
|
||||
Assert.assertEquals(property.setter, setter);
|
||||
Assert.assertEquals(property.name, name);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user