From fe4a29ca7a1dcf51f665bbb3a85493f89422bdc4 Mon Sep 17 00:00:00 2001 From: Deepak Michael Date: Tue, 2 Aug 2011 21:08:50 +0530 Subject: [PATCH] Swagr codegen: Included tests for a couple of the invoked apis and moved test package under com.wordnik.swagger --- build.xml | 18 +++--- .../codegen/config/ApiConfiguration.java | 18 ++++++ .../config/java/JavaCodeGenRulesProvider.java | 16 +++++ .../codegen/config/java/JavaLibCodeGen.java | 62 +++++++++---------- 4 files changed, 76 insertions(+), 38 deletions(-) diff --git a/build.xml b/build.xml index 5ede0f39312..efd5a883dd8 100644 --- a/build.xml +++ b/build.xml @@ -9,6 +9,8 @@ + + @@ -17,7 +19,7 @@ - + @@ -25,20 +27,20 @@ - Must specify the parameters: outputPath and apiServerRootDir eg. -DoutputPath=../../api-server-lib/java/src/main/java/com/wordnik/ + 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} - + @@ -47,7 +49,9 @@ - + + + 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..59282f52b99 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,7 +5,10 @@ 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.ObjectMapper; +import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -17,54 +20,51 @@ import java.util.List; public class JavaLibCodeGen extends LibraryCodeGenerator { public static void main(String[] args) { - if(args.length < 1){ + if(args.length < 3){ 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); + String configPath = args[1]; + String rulesConfigPath = args[2]; + JavaLibCodeGen codeGenerator = new JavaLibCodeGen(outputPath, configPath, rulesConfigPath); codeGenerator.generateCode(); } - public JavaLibCodeGen(String outputPath){ + public JavaLibCodeGen(String outputPath, String configPath, String rulesConfigPath){ - this.setApiConfig(initializeApiConfig()); + this.setApiConfig(readApiConfiguration(configPath)); + this.setCodeGenRulesProvider(readRulesProviderConfig(rulesConfigPath)); this.setLanguageConfig(initializeLangConfig(outputPath)); 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 = new ObjectMapper(); + JavaCodeGenRulesProvider javaCodeGenRules = null; + try { + javaCodeGenRules = mapper.readValue(new File(rulesProviderLocation), JavaCodeGenRulesProvider.class); + } catch (IOException e) { + e.printStackTrace(); + 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"); + return javaCodeGenRules; + } - List defaultServiceImports = new ArrayList(); - defaultServiceImports.add("com.wordnik.swagger.model.Long"); - defaultServiceImports.add("com.wordnik.swagger.common.*"); - defaultServiceImports.add("com.wordnik.swagger.common.ext.*"); + private ApiConfiguration readApiConfiguration(String apiConfigLocation) { + ObjectMapper mapper = new ObjectMapper(); + ApiConfiguration configuration = null; + try { + configuration = mapper.readValue(new File(apiConfigLocation), ApiConfiguration.class); + } catch (IOException e) { + e.printStackTrace(); + throw new CodeGenerationException("Api configuration could not be read from the location : " + apiConfigLocation); + } - 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 configuration; } private LanguageConfiguration initializeLangConfig(String outputPath) {