Change indentation to +4 and map binary to string

This commit is contained in:
Andrew Z Allen 2016-01-28 21:38:45 -07:00
parent b1a5080121
commit b9eb26baff

View File

@ -9,204 +9,208 @@ import java.util.*;
import java.io.File; import java.io.File;
public class JavascriptClosureAngularClientCodegen extends DefaultCodegen implements CodegenConfig { public class JavascriptClosureAngularClientCodegen extends DefaultCodegen implements CodegenConfig {
public JavascriptClosureAngularClientCodegen() { public JavascriptClosureAngularClientCodegen() {
super(); super();
supportsInheritance = false; supportsInheritance = false;
reservedWords = new HashSet<String>(Arrays.asList("abstract", reservedWords = new HashSet<String>(Arrays.asList("abstract",
"continue", "for", "new", "switch", "assert", "default", "if", "continue", "for", "new", "switch", "assert", "default", "if",
"package", "synchronized", "do", "goto", "private", "package", "synchronized", "do", "goto", "private",
"this", "break", "double", "implements", "protected", "throw", "this", "break", "double", "implements", "protected", "throw",
"byte", "else", "import", "public", "throws", "case", "enum", "byte", "else", "import", "public", "throws", "case", "enum",
"instanceof", "return", "transient", "catch", "extends", "int", "instanceof", "return", "transient", "catch", "extends", "int",
"short", "try", "char", "final", "interface", "static", "void", "short", "try", "char", "final", "interface", "static", "void",
"class", "finally", "const", "super", "while")); "class", "finally", "const", "super", "while"));
languageSpecificPrimitives = new HashSet<String>(Arrays.asList( languageSpecificPrimitives = new HashSet<String>(Arrays.asList(
"string", "string",
"boolean", "boolean",
"number", "number",
"Object", "Object",
"Blob", "Blob",
"Date")); "Date"));
instantiationTypes.put("array", "Array"); instantiationTypes.put("array", "Array");
typeMapping = new HashMap<String, String>(); typeMapping = new HashMap<String, String>();
typeMapping.put("Array", "Array"); typeMapping.put("Array", "Array");
typeMapping.put("array", "Array"); typeMapping.put("array", "Array");
typeMapping.put("List", "Array"); typeMapping.put("List", "Array");
typeMapping.put("boolean", "boolean"); typeMapping.put("boolean", "boolean");
typeMapping.put("string", "string"); typeMapping.put("string", "string");
typeMapping.put("int", "number"); typeMapping.put("int", "number");
typeMapping.put("float", "number"); typeMapping.put("float", "number");
typeMapping.put("number", "number"); typeMapping.put("number", "number");
typeMapping.put("long", "number"); typeMapping.put("long", "number");
typeMapping.put("short", "number"); typeMapping.put("short", "number");
typeMapping.put("char", "string"); typeMapping.put("char", "string");
typeMapping.put("double", "number"); typeMapping.put("double", "number");
typeMapping.put("object", "Object"); typeMapping.put("object", "Object");
typeMapping.put("Object", "Object"); typeMapping.put("Object", "Object");
typeMapping.put("File", "Blob"); typeMapping.put("File", "Blob");
typeMapping.put("file", "Blob"); typeMapping.put("file", "Blob");
typeMapping.put("integer", "number"); typeMapping.put("integer", "number");
typeMapping.put("Map", "Object"); typeMapping.put("Map", "Object");
typeMapping.put("map", "Object"); typeMapping.put("map", "Object");
typeMapping.put("DateTime", "Date"); typeMapping.put("DateTime", "Date");
importMapping = new HashMap<String, String>(); importMapping = new HashMap<String, String>();
defaultIncludes = new HashSet<String>(Arrays.asList( defaultIncludes = new HashSet<String>(Arrays.asList(
"Object", "Object",
"Array" "Array",
)); "Blob"
));
outputFolder = "generated-code/javascript-closure-angular"; typeMapping.put("binary", "string");
modelTemplateFiles.put("model.mustache", ".js");
apiTemplateFiles.put("api.mustache", ".js");
embeddedTemplateDir = templateDir = "Javascript-Closure-Angular";
apiPackage = "API.Client";
modelPackage = "API.Client";
}
@Override outputFolder = "generated-code/javascript-closure-angular";
public String getName() { modelTemplateFiles.put("model.mustache", ".js");
return "javascript-closure-angular"; apiTemplateFiles.put("api.mustache", ".js");
} embeddedTemplateDir = templateDir = "Javascript-Closure-Angular";
apiPackage = "API.Client";
@Override modelPackage = "API.Client";
public String getHelp() {
return "Generates a Javascript AngularJS client library annotated with Google Closure Compiler annotations" +
"(https://developers.google.com/closure/compiler/docs/js-for-compiler?hl=en)";
}
@Override
public CodegenType getTag() {
return CodegenType.CLIENT;
}
@Override
public String escapeReservedWord(String name) {
return "_" + name;
}
@Override
public String apiFileFolder() {
return outputFolder + "/" + apiPackage().replace('.', File.separatorChar);
}
public String modelFileFolder() {
return outputFolder + "/" + modelPackage().replace('.', File.separatorChar);
}
@Override
public String toVarName(String name) {
// 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 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) {
ArrayProperty ap = (ArrayProperty) p;
Property inner = ap.getItems();
return getSwaggerType(p) + "<!" + getTypeDeclaration(inner) + ">";
} else if (p instanceof MapProperty) {
MapProperty mp = (MapProperty) p;
Property inner = mp.getAdditionalProperties();
return "Object<!string, "+ getTypeDeclaration(inner) + ">";
} else if (p instanceof FileProperty) {
return "Object";
} }
String type = super.getTypeDeclaration(p);
if (type.equals("boolean") || @Override
type.equals("Date") || public String getName() {
type.equals("number") || return "javascript-closure-angular";
type.equals("string")) {
return type;
} }
return apiPackage + "." + type;
}
@Override @Override
public String getSwaggerType(Property p) { public String getHelp() {
String swaggerType = super.getSwaggerType(p); return "Generates a Javascript AngularJS client library annotated with Google Closure Compiler annotations" +
String type = null; "(https://developers.google.com/closure/compiler/docs/js-for-compiler?hl=en)";
if (typeMapping.containsKey(swaggerType)) { }
type = typeMapping.get(swaggerType);
if (languageSpecificPrimitives.contains(type))
return type;
} else
type = swaggerType;
return type;
}
@Override @Override
public Map<String, Object> postProcessModels(Map<String, Object> objs) { public CodegenType getTag() {
return CodegenType.CLIENT;
}
List<Object> models = (List<Object>) objs.get("models"); @Override
for (Object _mo : models) { public String escapeReservedWord(String name) {
Map<String, Object> mo = (Map<String, Object>) _mo; return "_" + name;
CodegenModel cm = (CodegenModel) mo.get("model"); }
cm.imports = new TreeSet(cm.imports);
for (CodegenProperty var : cm.vars) {
// handle default value for enum, e.g. available => StatusEnum.available
if (var.isEnum && var.defaultValue != null && !"null".equals(var.defaultValue)) {
var.defaultValue = var.datatypeWithEnum + "." + var.defaultValue;
}
}
}
return objs;
}
@Override @Override
public Map<String, Object> postProcessOperations(Map<String, Object> objs) { public String apiFileFolder() {
if (objs.get("imports") instanceof List) { return outputFolder + "/" + apiPackage().replace('.', File.separatorChar);
List<Map<String, String>> imports = (ArrayList<Map<String, String>>)objs.get("imports"); }
Collections.sort(imports, new Comparator<Map<String, String>>() {
public int compare(Map<String, String> o1, Map<String, String> o2) { public String modelFileFolder() {
return o1.get("import").compareTo(o2.get("import")); return outputFolder + "/" + modelPackage().replace('.', File.separatorChar);
}
@Override
public String toVarName(String name) {
// 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 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) {
ArrayProperty ap = (ArrayProperty) p;
Property inner = ap.getItems();
return getSwaggerType(p) + "<!" + getTypeDeclaration(inner) + ">";
} else if (p instanceof MapProperty) {
MapProperty mp = (MapProperty) p;
Property inner = mp.getAdditionalProperties();
return "Object<!string, "+ getTypeDeclaration(inner) + ">";
} else if (p instanceof FileProperty) {
return "Object";
} }
}); String type = super.getTypeDeclaration(p);
objs.put("imports", imports); if (type.equals("boolean") ||
type.equals("Date") ||
type.equals("number") ||
type.equals("string")) {
return type;
}
return apiPackage + "." + type;
}
@Override
public String getSwaggerType(Property p) {
String swaggerType = super.getSwaggerType(p);
String type = null;
if (typeMapping.containsKey(swaggerType)) {
type = typeMapping.get(swaggerType);
if (languageSpecificPrimitives.contains(type)) {
return type;
}
} else
type = swaggerType;
return type;
}
@Override
public Map<String, Object> postProcessModels(Map<String, Object> objs) {
List<Object> models = (List<Object>) objs.get("models");
for (Object _mo : models) {
Map<String, Object> mo = (Map<String, Object>) _mo;
CodegenModel cm = (CodegenModel) mo.get("model");
cm.imports = new TreeSet(cm.imports);
for (CodegenProperty var : cm.vars) {
// handle default value for enum, e.g. available => StatusEnum.available
if (var.isEnum && var.defaultValue != null && !"null".equals(var.defaultValue)) {
var.defaultValue = var.datatypeWithEnum + "." + var.defaultValue;
}
}
}
return objs;
}
@Override
public Map<String, Object> postProcessOperations(Map<String, Object> objs) {
if (objs.get("imports") instanceof List) {
List<Map<String, String>> imports = (ArrayList<Map<String, String>>)objs.get("imports");
Collections.sort(imports, new Comparator<Map<String, String>>() {
public int compare(Map<String, String> o1, Map<String, String> o2) {
return o1.get("import").compareTo(o2.get("import"));
}
});
objs.put("imports", imports);
}
return objs;
} }
return objs;
}
} }