updated script, addressed #189 with type mapping

This commit is contained in:
Tony Tam 2015-02-15 18:06:40 -08:00
parent dfc7750dda
commit db5259b913

View File

@ -18,100 +18,102 @@ package com.wordnik.swagger.codegen.languages;
import com.wordnik.swagger.codegen.*; import com.wordnik.swagger.codegen.*;
import com.wordnik.swagger.models.properties.*; import com.wordnik.swagger.models.properties.*;
import java.io.File;
public class PythonClientCodegen extends DefaultCodegen implements CodegenConfig { public class PythonClientCodegen extends DefaultCodegen implements CodegenConfig {
String module = "client";
public String getName() { public String getName() {
return "python"; return "python";
} }
public String getHelp() { public String getHelp() {
return "Generates a Python client library."; return "Generates a Python client library.";
} }
public PythonClientCodegen() { public PythonClientCodegen() {
super(); super();
outputFolder = "generated-code/python"; outputFolder = "generated-code/python";
modelTemplateFiles.put("model.mustache", ".py"); modelTemplateFiles.put("model.mustache", ".py");
apiTemplateFiles.put("api.mustache", ".py"); apiTemplateFiles.put("api.mustache", ".py");
templateDir = "python"; templateDir = "python";
apiPackage = ""; apiPackage = module;
modelPackage = "models"; modelPackage = module + ".models";
languageSpecificPrimitives.clear(); languageSpecificPrimitives.clear();
languageSpecificPrimitives.add("int"); languageSpecificPrimitives.add("int");
languageSpecificPrimitives.add("float"); languageSpecificPrimitives.add("float");
languageSpecificPrimitives.add("long"); languageSpecificPrimitives.add("long");
languageSpecificPrimitives.add("list"); languageSpecificPrimitives.add("list");
languageSpecificPrimitives.add("bool"); languageSpecificPrimitives.add("bool");
languageSpecificPrimitives.add("str"); languageSpecificPrimitives.add("str");
languageSpecificPrimitives.add("datetime"); languageSpecificPrimitives.add("datetime");
typeMapping.clear(); typeMapping.clear();
typeMapping.put("integer", "int"); typeMapping.put("integer", "int");
typeMapping.put("float", "float"); typeMapping.put("float", "float");
typeMapping.put("long", "long"); typeMapping.put("long", "long");
typeMapping.put("double", "float"); typeMapping.put("double", "float");
typeMapping.put("array", "list"); typeMapping.put("array", "list");
typeMapping.put("map", "map"); typeMapping.put("map", "map");
typeMapping.put("boolean", "bool"); typeMapping.put("boolean", "bool");
typeMapping.put("string", "str"); typeMapping.put("string", "str");
typeMapping.put("date", "datetime"); typeMapping.put("date", "datetime");
supportingFiles.add(new SupportingFile("swagger.mustache", "", "swagger.py")); supportingFiles.add(new SupportingFile("swagger.mustache", module, "swagger.py"));
supportingFiles.add(new SupportingFile("__init__.mustache", "", "__init__.py")); supportingFiles.add(new SupportingFile("__init__.mustache", module, "__init__.py"));
supportingFiles.add(new SupportingFile("__init__.mustache", modelPackage, "__init__.py")); supportingFiles.add(new SupportingFile("__init__.mustache", modelPackage.replaceAll("\\.", File.separator), "__init__.py"));
}
}
@Override @Override
public String escapeReservedWord(String name) { public String escapeReservedWord(String name) {
return "_" + name; return "_" + name;
} }
@Override @Override
public String apiFileFolder() { public String apiFileFolder() {
return outputFolder + "/" + apiPackage().replaceAll("\\.", "/"); return outputFolder + "/" + apiPackage().replaceAll("\\.", "/");
} }
public String modelFileFolder() { public String modelFileFolder() {
return outputFolder + "/" + modelPackage().replaceAll("\\.", "/"); return outputFolder + "/" + modelPackage().replaceAll("\\.", "/");
} }
@Override @Override
public String getTypeDeclaration(Property p) { public String getTypeDeclaration(Property p) {
if(p instanceof ArrayProperty) { if(p instanceof ArrayProperty) {
ArrayProperty ap = (ArrayProperty) p; ArrayProperty ap = (ArrayProperty) p;
Property inner = ap.getItems(); Property inner = ap.getItems();
return getSwaggerType(p) + "[" + getTypeDeclaration(inner) + "]"; return getSwaggerType(p) + "[" + getTypeDeclaration(inner) + "]";
} }
else if (p instanceof MapProperty) { else if (p instanceof MapProperty) {
MapProperty mp = (MapProperty) p; MapProperty mp = (MapProperty) p;
Property inner = mp.getAdditionalProperties(); Property inner = mp.getAdditionalProperties();
return getSwaggerType(p) + "(String, " + getTypeDeclaration(inner) + ")"; return getSwaggerType(p) + "(String, " + getTypeDeclaration(inner) + ")";
} }
return super.getTypeDeclaration(p); return super.getTypeDeclaration(p);
} }
@Override @Override
public String getSwaggerType(Property p) { public String getSwaggerType(Property p) {
String swaggerType = super.getSwaggerType(p); String swaggerType = super.getSwaggerType(p);
String type = null; String type = null;
if(typeMapping.containsKey(swaggerType)) { if(typeMapping.containsKey(swaggerType)) {
type = typeMapping.get(swaggerType); type = typeMapping.get(swaggerType);
if(languageSpecificPrimitives.contains(type)) { if(languageSpecificPrimitives.contains(type)) {
return type; return type;
} }
} }
else else
type = swaggerType; type = swaggerType;
return type; return type;
} }
public String toDefaultValue(Property p) { public String toDefaultValue(Property p) {
// TODO: Support Python def value // TODO: Support Python def value
return "null"; return "null";
} }
} }