better variable and model property naming for java

This commit is contained in:
William Cheng
2015-03-22 23:24:43 +08:00
parent f008b75e99
commit 62d28ebca5
8 changed files with 1020 additions and 25 deletions

View File

@@ -510,14 +510,9 @@ public class DefaultCodegen {
if (name == null || name.length() == 0) {
return name;
}
name = toVarName(name);
if (name.length() > 1 && Character.isUpperCase(name.charAt(1)) &&
Character.isLowerCase(name.charAt(0))){
return name;
}
char chars[] = name.toCharArray();
chars[0] = Character.toUpperCase(chars[0]);
return new String(chars);
return camelize(toVarName(name));
}
public CodegenProperty fromProperty(String name, Property p) {

View File

@@ -89,13 +89,48 @@ public class JavaClientCodegen extends DefaultCodegen implements CodegenConfig {
@Override
public String toVarName(String name) {
if(reservedWords.contains(name))
return escapeReservedWord(name);
else {
return name.replaceAll("-", "_");
}
// replace - with _ e.g. created-at => created_at
name = name.replaceAll("-", "_");
// if it's all uppper case, do nothing
if (name.matches("^[A-Z_]*$"))
return name;
// camelize (lower first character) the variable name
// pet_id => petId
name = camelize(name, true);
// for reserved word or word starting with number, append _
if(reservedWords.contains(name) || name.matches("^\\d.*"))
name = escapeReservedWord(name);
return name;
}
@Override
public String toParamName(String name) {
// should be the same as variable name
return toVarName(name);
}
@Override
public String toModelName(String name) {
// model name cannot use reserved keyword, e.g. return
if(reservedWords.contains(name))
throw new RuntimeException(name + " (reserved word) cannot be used as a model name");
// camelize the model name
// phone_number => PhoneNumber
return camelize(name);
}
@Override
public String toModelFilename(String name) {
// should be the same as the model name
return toModelName(name);
}
@Override
public String getTypeDeclaration(Property p) {
if(p instanceof ArrayProperty) {
@@ -125,4 +160,4 @@ public class JavaClientCodegen extends DefaultCodegen implements CodegenConfig {
type = swaggerType;
return toModelName(type);
}
}
}