diff --git a/build.xml b/build.xml
index d0fbf1f691c..3a98f8efaa1 100644
--- a/build.xml
+++ b/build.xml
@@ -11,10 +11,12 @@
+
+
-
+
@@ -129,20 +131,20 @@
- Must specify the parameters: outputPath and apiServerRootDir eg. -DoutputPath=../../api-server-lib/java/src/main/java/com/wordnik/
- -DapiServerRootDir=../../api-server-lib/java/
+ Must specify the parameters: outputPath and apiServerRootDir
+ eg. -DoutputDir=../api-server-lib/java/src/main/java/com/wordnik/swagger -DapiServerRootDir=../api-server-lib/java/
These are the output path of the Apis and the root directory that will be created for the api server (directory where structure is created)
-
-
+
+
- outputPath for Api = ${outputPath}
+ outputDir for Api = ${outputDir}
apiServerRootDir = ${apiServerRootDir}
-
+
@@ -151,7 +153,7 @@
-
+
diff --git a/src/main/java/com/wordnik/swagger/codegen/config/ApiConfiguration.java b/src/main/java/com/wordnik/swagger/codegen/config/ApiConfiguration.java
index 276f05fbaac..b67831a8d12 100644
--- a/src/main/java/com/wordnik/swagger/codegen/config/ApiConfiguration.java
+++ b/src/main/java/com/wordnik/swagger/codegen/config/ApiConfiguration.java
@@ -41,6 +41,24 @@ public class ApiConfiguration {
}
+ public String getDefaultServiceBaseClass() {
+ return defaultServiceBaseClass;
+ }
+
+ public void setDefaultServiceBaseClass(String defaultServiceBaseClass) {
+ this.defaultServiceBaseClass = defaultServiceBaseClass;
+ }
+
+ public Map getBaseClassNames() {
+
+ return baseClassNames;
+ }
+
+ public void setBaseClassNames(Map baseClassNames) {
+ this.baseClassNames = baseClassNames;
+ }
+
+
public void setServiceBaseClass(String defaultServiceBaseClass) {
this.defaultServiceBaseClass = defaultServiceBaseClass;
}
diff --git a/src/main/java/com/wordnik/swagger/codegen/config/java/JavaCodeGenRulesProvider.java b/src/main/java/com/wordnik/swagger/codegen/config/java/JavaCodeGenRulesProvider.java
index a70681bb5f8..11c2d4c149a 100644
--- a/src/main/java/com/wordnik/swagger/codegen/config/java/JavaCodeGenRulesProvider.java
+++ b/src/main/java/com/wordnik/swagger/codegen/config/java/JavaCodeGenRulesProvider.java
@@ -30,4 +30,20 @@ public class JavaCodeGenRulesProvider implements RulesProvider {
return ignoreModels.contains(modelName);
}
+ public List getIgnoreMethods() {
+ return ignoreMethods;
+ }
+
+ public void setIgnoreMethods(List ignoreMethods) {
+ this.ignoreMethods = ignoreMethods;
+ }
+
+ public List getIgnoreModels() {
+ return ignoreModels;
+ }
+
+ public void setIgnoreModels(List ignoreModels) {
+ this.ignoreModels = ignoreModels;
+ }
+
}
diff --git a/src/main/java/com/wordnik/swagger/codegen/config/java/JavaLibCodeGen.java b/src/main/java/com/wordnik/swagger/codegen/config/java/JavaLibCodeGen.java
index 13f369f17fe..016f752994c 100644
--- a/src/main/java/com/wordnik/swagger/codegen/config/java/JavaLibCodeGen.java
+++ b/src/main/java/com/wordnik/swagger/codegen/config/java/JavaLibCodeGen.java
@@ -5,9 +5,11 @@ import com.wordnik.swagger.codegen.config.ApiConfiguration;
import com.wordnik.swagger.codegen.config.LanguageConfiguration;
import com.wordnik.swagger.codegen.config.common.CamelCaseNamingPolicyProvider;
import com.wordnik.swagger.exception.CodeGenerationException;
+import org.codehaus.jackson.map.DeserializationConfig;
+import org.codehaus.jackson.map.ObjectMapper;
-import java.util.ArrayList;
-import java.util.List;
+import java.io.File;
+import java.io.IOException;
/**
* User: ramesh
@@ -18,59 +20,61 @@ public class JavaLibCodeGen extends LibraryCodeGenerator {
public static void main(String[] args) {
if(args.length < 1){
- throw new CodeGenerationException("Invalid number of arguments passed: No command line argument was passed to the program for output path");
+ throw new CodeGenerationException("Invalid number of arguments passed: No command line argument was passed to the program for config json");
}
- String outputPath = args[0];
- JavaLibCodeGen codeGenerator = new JavaLibCodeGen(outputPath);
+ String configPath = args[0];
+ JavaLibCodeGen codeGenerator = new JavaLibCodeGen(configPath);
codeGenerator.generateCode();
}
- public JavaLibCodeGen(String outputPath){
+ public JavaLibCodeGen(String configPath){
- this.setApiConfig(initializeApiConfig());
- this.setLanguageConfig(initializeLangConfig(outputPath));
+ final ObjectMapper mapper = new ObjectMapper();
+ mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+ this.setApiConfig(readApiConfiguration(configPath, mapper));
+ this.setCodeGenRulesProvider(readRulesProviderConfig(configPath, mapper));
+ this.setLanguageConfig( initializeLangConfig(readLanguageConfiguration(configPath, mapper)) );
this.setDataTypeMappingProvider(new JavaDataTypeMappingProvider());
- this.setCodeGenRulesProvider(new JavaCodeGenRulesProvider());
this.setNameGenerator(new CamelCaseNamingPolicyProvider());
}
- private ApiConfiguration initializeApiConfig() {
- ApiConfiguration apiConfiguration = new ApiConfiguration();
- apiConfiguration.setServiceBaseClass("WordAPI","AbstractWordAPI");
- //default base class for services if not specified for a service
- apiConfiguration.setServiceBaseClass("WordnikAPI");
- apiConfiguration.setModelBaseClass("WordnikObject");
+ private JavaCodeGenRulesProvider readRulesProviderConfig(String rulesProviderLocation, ObjectMapper mapper) {
+ JavaCodeGenRulesProvider javaCodeGenRules = null;
+ try {
+ javaCodeGenRules = mapper.readValue(new File(rulesProviderLocation), JavaCodeGenRulesProvider.class);
+ } catch (IOException e) {
+ throw new CodeGenerationException("Java codegen rules configuration could not be read from the location : " + rulesProviderLocation);
+ }
- List defaultModelImports = new ArrayList();
- defaultModelImports.add("com.wordnik.swagger.common.WordListType");
- defaultModelImports.add("com.wordnik.swagger.common.StringValue");
- defaultModelImports.add("com.wordnik.swagger.common.Size");
- defaultModelImports.add("com.wordnik.swagger.common.WordnikObject");
-
- List defaultServiceImports = new ArrayList();
- defaultServiceImports.add("com.wordnik.swagger.model.Long");
- defaultServiceImports.add("com.wordnik.swagger.common.*");
- defaultServiceImports.add("com.wordnik.swagger.common.ext.*");
-
- apiConfiguration.setDefaultModelImports(defaultModelImports);
- apiConfiguration.setDefaultServiceImports(defaultServiceImports);
-
- apiConfiguration.setModelPackageName("com.wordnik.swagger.model");
- apiConfiguration.setApiPackageName("com.wordnik.swagger.api");
-
- apiConfiguration.setApiKey("myKey");
- apiConfiguration.setApiUrl("http://swagr.api.wordnik.com/v4/");
- apiConfiguration.setApiListResource("/list");
-
- return apiConfiguration;
+ return javaCodeGenRules;
}
- private LanguageConfiguration initializeLangConfig(String outputPath) {
- LanguageConfiguration javaConfiguration = new LanguageConfiguration();
+ private ApiConfiguration readApiConfiguration(String apiConfigLocation, ObjectMapper mapper) {
+ ApiConfiguration configuration = null;
+ try {
+ configuration = mapper.readValue(new File(apiConfigLocation), ApiConfiguration.class);
+ } catch (IOException e) {
+ throw new CodeGenerationException("Api configuration could not be read from the location : " + apiConfigLocation);
+ }
+
+ return configuration;
+ }
+
+ private LanguageConfiguration readLanguageConfiguration(String langConfigLocation, ObjectMapper mapper) {
+ LanguageConfiguration langConfig = null;
+ try {
+ langConfig = mapper.readValue(new File(langConfigLocation), LanguageConfiguration.class);
+ } catch (IOException e) {
+ throw new CodeGenerationException("Language configuration value could not be read from the location : " + langConfigLocation);
+ }
+
+ return langConfig;
+ }
+
+ private LanguageConfiguration initializeLangConfig(LanguageConfiguration javaConfiguration) {
javaConfiguration.setClassFileExtension(".java");
- javaConfiguration.setOutputDirectory(outputPath);
javaConfiguration.setTemplateLocation("conf/java/templates");
javaConfiguration.setExceptionPackageName("com.wordnik.swagger.exception");
javaConfiguration.setAnnotationPackageName("com.wordnik.swagger.annotations");