Swagger Codegen: Made location of model and resource classes to be generated as one single output directory command line parameter for code generator

This commit is contained in:
Deepak Michael 2011-07-29 07:14:05 +05:30
parent 851e916bf6
commit 7ca4482af9
4 changed files with 53 additions and 31 deletions

View File

@ -10,24 +10,36 @@
<import file="${build.common.dir}/ant/ant-server.xml" /> <import file="${build.common.dir}/ant/ant-server.xml" />
<import file="${build.common.dir}/ant/ant-test.xml" /> <import file="${build.common.dir}/ant/ant-test.xml" />
<!-- generates the classes --> <condition property="outputPath.set">
<target name="generate-java" depends="compile" description="generates API and model classes for java language"> <and>
<delete> <isset property="outputPath"/>
<fileset dir="../java/src/main/java/com/wordnik/api" includes="*.java"/> </and>
<fileset dir="../java/src/main/java/com/wordnik/model" includes="*.java"/> </condition>
</delete> <!-- generates the classes -->
<java classname="com.wordnik.codegen.java.JavaLibCodeGen"> <target name="generate-java" depends="compile" description="generates API and model classes for java language">
<classpath> <fail unless="outputPath.set">
<pathelement location="build/main/java" /> Must specify the parameter: outputPath eg. -DoutputPath=../java/src/main/java/com/wordnik/
<fileset dir="lib"> </fail>
<include name="**/*.jar"/> <echo>
</fileset> outputPath for Api = ${outputPath}
</classpath> </echo>
</java> <delete>
<copy todir="../java/src/main/java/" overwrite="true"> <fileset dir="${outputPath}" includes="*.java"/>
<fileset dir="../java/src/lang/java"/> </delete>
</copy> <java classname="com.wordnik.codegen.java.JavaLibCodeGen">
</target> <classpath>
<pathelement location="build/main/java" />
<fileset dir="lib">
<include name="**/*.jar"/>
</fileset>
</classpath>
<arg value="${outputPath}"/>
<!--<arg value="../java/src/main/java/com/wordnik/"/>-->
</java>
<copy todir="../java/src/main/java/" overwrite="true">
<fileset dir="../java/src/lang/java"/>
</copy>
</target>
</project> </project>

View File

@ -1,20 +1,17 @@
package com.wordnik.codegen; package com.wordnik.codegen;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.ClientResponse;
import com.sun.jersey.api.client.WebResource;
import com.wordnik.codegen.api.SwaggerApi; import com.wordnik.codegen.api.SwaggerApi;
import com.wordnik.codegen.config.CodeGenConfig; import com.wordnik.codegen.config.CodeGenConfig;
import com.wordnik.codegen.config.GenerationEnvironmentConfig; import com.wordnik.codegen.config.GenerationEnvironmentConfig;
import com.wordnik.codegen.resource.*; import com.wordnik.codegen.resource.*;
import com.wordnik.exception.CodeGenerationException; import com.wordnik.exception.CodeGenerationException;
import org.antlr.stringtemplate.StringTemplate; import org.antlr.stringtemplate.StringTemplate;
import org.antlr.stringtemplate.StringTemplateGroup; import org.antlr.stringtemplate.StringTemplateGroup;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.map.DeserializationConfig.Feature;
import java.io.*; import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;

View File

@ -1,6 +1,7 @@
package com.wordnik.codegen.java; package com.wordnik.codegen.java;
import com.wordnik.codegen.config.GenerationEnvironmentConfig; import com.wordnik.codegen.config.GenerationEnvironmentConfig;
import com.wordnik.exception.CodeGenerationException;
/** /**
* User: deepakmichael * User: deepakmichael
@ -9,9 +10,15 @@ import com.wordnik.codegen.config.GenerationEnvironmentConfig;
*/ */
public class JavaGenEnvConfig extends GenerationEnvironmentConfig{ public class JavaGenEnvConfig extends GenerationEnvironmentConfig{
public JavaGenEnvConfig() { public JavaGenEnvConfig(String outputPath) {
this.setModelClassLocation("../java/src/main/java/com/wordnik/model/"); if(outputPath == null){
this.setResourceClassLocation("../java/src/main/java/com/wordnik/api/"); throw new CodeGenerationException("Error creating output path : Output path was null ");
}
outputPath = outputPath.endsWith("/") ? outputPath.substring(0, outputPath.lastIndexOf("/")) : outputPath;
this.setModelClassLocation(outputPath + "/model/");
this.setResourceClassLocation(outputPath + "/api/");
this.setTemplateLocation("conf/templates/java"); this.setTemplateLocation("conf/templates/java");
} }
} }

View File

@ -1,6 +1,7 @@
package com.wordnik.codegen.java; package com.wordnik.codegen.java;
import com.wordnik.codegen.DriverCodeGenerator; import com.wordnik.codegen.DriverCodeGenerator;
import com.wordnik.exception.CodeGenerationException;
/** /**
* User: ramesh * User: ramesh
@ -10,12 +11,17 @@ import com.wordnik.codegen.DriverCodeGenerator;
public class JavaLibCodeGen extends DriverCodeGenerator { public class JavaLibCodeGen extends DriverCodeGenerator {
public static void main(String[] args) { public static void main(String[] args) {
JavaLibCodeGen codeGenerator = new JavaLibCodeGen(); if(args.length < 1){
throw new CodeGenerationException("Invalid number of arguments passed: No command line argument was passed to the program for output path");
}
String outputPath = args[0];
JavaLibCodeGen codeGenerator = new JavaLibCodeGen(outputPath);
codeGenerator.generateCode(); codeGenerator.generateCode();
} }
public JavaLibCodeGen(){ public JavaLibCodeGen(String outputPath){
this.setConfig(new JavaCodeGenConfig()); this.setConfig(new JavaCodeGenConfig());
this.setEnvConfig(new JavaGenEnvConfig()); this.setEnvConfig(new JavaGenEnvConfig(outputPath));
} }
} }