rollback codegen template

This commit is contained in:
wing328 2015-06-09 13:04:03 +08:00
parent f610958209
commit 7b6480f7f8
3 changed files with 253 additions and 258 deletions

View File

@ -8,186 +8,184 @@ import java.io.File;
public class {{generatorClass}} extends DefaultCodegen implements CodegenConfig { public class {{generatorClass}} extends DefaultCodegen implements CodegenConfig {
// source folder where to write the files // source folder where to write the files
protected String sourceFolder = "src"; protected String sourceFolder = "src";
protected String apiVersion = "1.0.0"; protected String apiVersion = "1.0.0";
/** /**
* Configures the type of generator. * Configures the type of generator.
* *
* @return the CodegenType for this generator * @return the CodegenType for this generator
* @see io.swagger.codegen.CodegenType * @see io.swagger.codegen.CodegenType
*/ */
public CodegenType getTag() { public CodegenType getTag() {
return CodegenType.CLIENT; return CodegenType.CLIENT;
} }
/** /**
* Configures a friendly name for the generator. This will be used by the generator * Configures a friendly name for the generator. This will be used by the generator
* to select the library with the -l flag. * to select the library with the -l flag.
* *
* @return the friendly name for the generator * @return the friendly name for the generator
*/ */
public String getName() { public String getName() {
return "{{name}}"; return "{{name}}";
} }
/** /**
* Returns human-friendly help for the generator. Provide the consumer with help * Returns human-friendly help for the generator. Provide the consumer with help
* tips, parameters here * tips, parameters here
* *
* @return A string value for the help message * @return A string value for the help message
*/ */
public String getHelp() { public String getHelp() {
return "Generates a {{name}} client library."; return "Generates a {{name}} client library.";
} }
public {{generatorClass}}() { public {{generatorClass}}() {
super(); super();
// set the output folder here // set the output folder here
outputFolder = "generated-code/{{name}}"; outputFolder = "generated-code/{{name}}";
/** /**
* Models. You can write model files using the modelTemplateFiles map. * Models. You can write model files using the modelTemplateFiles map.
* if you want to create one template for file, you can do so here. * if you want to create one template for file, you can do so here.
* for multiple files for model, just put another entry in the `modelTemplateFiles` with * for multiple files for model, just put another entry in the `modelTemplateFiles` with
* a different extension * a different extension
*/ */
modelTemplateFiles.put( modelTemplateFiles.put(
"model.mustache", // the template to use "model.mustache", // the template to use
".sample"); // the extension for each file to write ".sample"); // the extension for each file to write
/** /**
* Api classes. You can write classes for each Api file with the apiTemplateFiles map. * Api classes. You can write classes for each Api file with the apiTemplateFiles map.
* as with models, add multiple entries with different extensions for multiple files per * as with models, add multiple entries with different extensions for multiple files per
* class * class
*/ */
apiTemplateFiles.put( apiTemplateFiles.put(
"api.mustache", // the template to use "api.mustache", // the template to use
".sample"); // the extension for each file to write ".sample"); // the extension for each file to write
/** /**
* Template Location. This is the location which templates will be read from. The generator * Template Location. This is the location which templates will be read from. The generator
* will use the resource stream to attempt to read the templates. * will use the resource stream to attempt to read the templates.
*/ */
templateDir = "{{name}}"; templateDir = "{{name}}";
/** /**
* Api Package. Optional, if needed, this can be used in templates * Api Package. Optional, if needed, this can be used in templates
*/ */
apiPackage = "io.swagger.client.api"; apiPackage = "io.swagger.client.api";
/** /**
* Model Package. Optional, if needed, this can be used in templates * Model Package. Optional, if needed, this can be used in templates
*/ */
modelPackage = "io.swagger.client.model"; modelPackage = "io.swagger.client.model";
/** /**
* Reserved words. Override this with reserved words specific to your language * Reserved words. Override this with reserved words specific to your language
*/ */
reservedWords = new HashSet reservedWords = new HashSet<String> (
<String> ( Arrays.asList(
Arrays.asList( "sample1", // replace with static values
"sample1", // replace with static values "sample2")
"sample2")
); );
/** /**
* Additional Properties. These values can be passed to the templates and * Additional Properties. These values can be passed to the templates and
* are available in models, apis, and supporting files * are available in models, apis, and supporting files
*/ */
additionalProperties.put("apiVersion", apiVersion); additionalProperties.put("apiVersion", apiVersion);
/** /**
* Supporting Files. You can write single files for the generator with the * Supporting Files. You can write single files for the generator with the
* entire object tree available. If the input file has a suffix of `.mustache * entire object tree available. If the input file has a suffix of `.mustache
* it will be processed by the template engine. Otherwise, it will be copied * it will be processed by the template engine. Otherwise, it will be copied
*/ */
supportingFiles.add(new SupportingFile("myFile.mustache", // the input template or file supportingFiles.add(new SupportingFile("myFile.mustache", // the input template or file
"", // the destination folder, relative `outputFolder` "", // the destination folder, relative `outputFolder`
"myFile.sample") // the output file "myFile.sample") // the output file
); );
/** /**
* Language Specific Primitives. These types will not trigger imports by * Language Specific Primitives. These types will not trigger imports by
* the client generator * the client generator
*/ */
languageSpecificPrimitives = new HashSet languageSpecificPrimitives = new HashSet<String>(
<String>( Arrays.asList(
Arrays.asList( "Type1", // replace these with your types
"Type1", // replace these with your types
"Type2") "Type2")
); );
} }
/** /**
* Escapes a reserved word as defined in the `reservedWords` array. Handle escaping * Escapes a reserved word as defined in the `reservedWords` array. Handle escaping
* those terms here. This logic is only called if a variable matches the reseved words * those terms here. This logic is only called if a variable matches the reseved words
* *
* @return the escaped term * @return the escaped term
*/ */
@Override @Override
public String escapeReservedWord(String name) { public String escapeReservedWord(String name) {
return "_" + name; // add an underscore to the name return "_" + name; // add an underscore to the name
} }
/** /**
* Location to write model files. You can use the modelPackage() as defined when the class is * Location to write model files. You can use the modelPackage() as defined when the class is
* instantiated * instantiated
*/ */
public String modelFileFolder() { public String modelFileFolder() {
return outputFolder + "/" + sourceFolder + "/" + modelPackage().replace('.', File.separatorChar); return outputFolder + "/" + sourceFolder + "/" + modelPackage().replace('.', File.separatorChar);
} }
/** /**
* Location to write api files. You can use the apiPackage() as defined when the class is * Location to write api files. You can use the apiPackage() as defined when the class is
* instantiated * instantiated
*/ */
@Override @Override
public String apiFileFolder() { public String apiFileFolder() {
return outputFolder + "/" + sourceFolder + "/" + apiPackage().replace('.', File.separatorChar); return outputFolder + "/" + sourceFolder + "/" + apiPackage().replace('.', File.separatorChar);
} }
/** /**
* Optional - type declaration. This is a String which is used by the templates to instantiate your * Optional - type declaration. This is a String which is used by the templates to instantiate your
* types. There is typically special handling for different property types * types. There is typically special handling for different property types
* *
* @return a string value used as the `dataType` field for model templates, `returnType` for api templates * @return a string value used as the `dataType` field for model templates, `returnType` for api templates
*/ */
@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);
} }
/** /**
* Optional - swagger type conversion. This is used to map swagger types in a `Property` into * Optional - swagger type conversion. This is used to map swagger types in a `Property` into
* either language specific types via `typeMapping` or into complex models if there is not a mapping. * either language specific types via `typeMapping` or into complex models if there is not a mapping.
* *
* @return a string value of the type or complex model for this property * @return a string value of the type or complex model for this property
* @see io.swagger.models.properties.Property * @see io.swagger.models.properties.Property
*/ */
@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 toModelName(type); return toModelName(type);
} }
else else
type = swaggerType; type = swaggerType;
return toModelName(type); return toModelName(type);
} }
} }

View File

@ -1,105 +1,102 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>io.swagger</groupId> <groupId>io.swagger</groupId>
<artifactId>{{name}}-swagger-codegen</artifactId> <artifactId>{{name}}-swagger-codegen</artifactId>
<packaging>jar</packaging> <packaging>jar</packaging>
<name>{{name}}-swagger-codegen</name> <name>{{name}}-swagger-codegen</name>
<version>1.0.0</version> <version>1.0.0</version>
<prerequisites> <prerequisites>
<maven>2.2.0</maven> <maven>2.2.0</maven>
</prerequisites> </prerequisites>
<build> <build>
<plugins> <plugins>
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId> <artifactId>maven-surefire-plugin</artifactId>
<version>2.12</version> <version>2.12</version>
<configuration> <configuration>
<systemProperties> <systemProperties>
<property> <property>
<name>loggerPath</name> <name>loggerPath</name>
<value>conf/log4j.properties</value> <value>conf/log4j.properties</value>
</property> </property>
</systemProperties> </systemProperties>
<argLine>-Xms512m -Xmx1500m</argLine> <argLine>-Xms512m -Xmx1500m</argLine>
<parallel>methods</parallel> <parallel>methods</parallel>
<forkMode>pertest</forkMode> <forkMode>pertest</forkMode>
</configuration> </configuration>
</plugin> </plugin>
<!-- attach test jar --> <!-- attach test jar -->
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId> <artifactId>maven-jar-plugin</artifactId>
<version>2.2</version> <version>2.2</version>
<executions> <executions>
<execution> <execution>
<goals> <goals>
<goal>jar</goal> <goal>jar</goal>
<goal>test-jar</goal> <goal>test-jar</goal>
</goals> </goals>
</execution> </execution>
</executions> </executions>
<configuration> <configuration>
</configuration> </configuration>
</plugin> </plugin>
<plugin> <plugin>
<groupId>org.codehaus.mojo</groupId> <groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId> <artifactId>build-helper-maven-plugin</artifactId>
<executions> <executions>
<execution> <execution>
<id>add_sources</id> <id>add_sources</id>
<phase>generate-sources</phase> <phase>generate-sources</phase>
<goals> <goals>
<goal>add-source</goal> <goal>add-source</goal>
</goals> </goals>
<configuration> <configuration>
<sources> <sources>
<source> <source>src/main/java</source>
src/main/java</source> </sources>
</sources> </configuration>
</configuration> </execution>
</execution> <execution>
<execution> <id>add_test_sources</id>
<id>add_test_sources</id> <phase>generate-test-sources</phase>
<phase>generate-test-sources</phase> <goals>
<goals> <goal>add-test-source</goal>
<goal>add-test-source</goal> </goals>
</goals> <configuration>
<configuration> <sources>
<sources> <source>src/test/java</source>
<source> </sources>
src/test/java</source> </configuration>
</sources> </execution>
</configuration> </executions>
</execution> </plugin>
</executions> <plugin>
</plugin> <groupId>org.apache.maven.plugins</groupId>
<plugin> <artifactId>maven-compiler-plugin</artifactId>
<groupId>org.apache.maven.plugins</groupId> <version>2.3.2</version>
<artifactId>maven-compiler-plugin</artifactId> <configuration>
<version>2.3.2</version> <source>1.6</source>
<configuration> <target>1.6</target>
<source> </configuration>
1.6</source> </plugin>
<target>1.6</target> </plugins>
</configuration> </build>
</plugin> <dependencies>
</plugins> <dependency>
</build> <groupId>io.swagger</groupId>
<dependencies> <artifactId>swagger-codegen</artifactId>
<dependency> <version>${swagger-codegen-version}</version>
<groupId>io.swagger</groupId> <scope>provided</scope>
<artifactId>swagger-codegen</artifactId> </dependency>
<version>${swagger-codegen-version}</version> </dependencies>
<scope>provided</scope> <properties>
</dependency> <swagger-codegen-version>2.1.2-M1</swagger-codegen-version>
</dependencies> <maven-plugin-version>1.0.0</maven-plugin-version>
<properties> <junit-version>4.8.1</junit-version>
<swagger-codegen-version>2.1.2-M1</swagger-codegen-version> </properties>
<maven-plugin-version>1.0.0</maven-plugin-version>
<junit-version>4.8.1</junit-version>
</properties>
</project> </project>