Swagger Codegen: Split configuration classes into types of configurations and providers, with language agnostic under common

This commit is contained in:
Deepak Michael
2011-07-29 21:54:47 +05:30
parent f6c1a91d64
commit ddb8eff5b8
24 changed files with 450 additions and 384 deletions

View File

@@ -1,14 +1,19 @@
package com.wordnik.test;
import java.io.*;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.wordnik.codegen.config.CodeGenConfig;
import com.wordnik.codegen.config.java.JavaCodeGenConfig;
import java.io.File;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.InputStreamReader;
import com.wordnik.codegen.config.ApiConfiguration;
import com.wordnik.codegen.config.NamingPolicyProvider;
import com.wordnik.codegen.config.common.CamelCaseNamingPolicyProvider;
import com.wordnik.common.*;
import com.wordnik.exception.APIException;
import org.apache.commons.beanutils.MethodUtils;
@@ -67,7 +72,7 @@ public class APITestRunner {
mapper.configure(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS, false);
}
private CodeGenConfig config = new JavaCodeGenConfig();
private NamingPolicyProvider namingPolicyProvider = new CamelCaseNamingPolicyProvider();
/**
* Follow the following argument pattern
@@ -194,7 +199,7 @@ public class APITestRunner {
//2
TestResource resource = resourceMap.get(testCase.getResourceId());
String path = resource.getPath();
String className = config.getNameGenerator().getServiceName(path);
String className = namingPolicyProvider.getServiceName(path);
String methodName = resource.getSuggestedMethodName();
//3

View File

@@ -2,8 +2,11 @@ package com.wordnik.test;
import com.wordnik.annotations.MethodArgumentNames;
import com.wordnik.api.WordAPI;
import com.wordnik.codegen.config.CodeGenConfig;
import com.wordnik.codegen.config.java.JavaCodeGenConfig;
import com.wordnik.codegen.config.ApiConfiguration;
import com.wordnik.codegen.config.RulesProvider;
import com.wordnik.codegen.config.java.JavaCodeGenRulesProvider;
import com.wordnik.codegen.config.NamingPolicyProvider;
import com.wordnik.codegen.config.common.CamelCaseNamingPolicyProvider;
import com.wordnik.exception.APIException;
import com.wordnik.exception.APIExceptionCodes;
import org.apache.commons.beanutils.BeanUtils;
@@ -23,7 +26,9 @@ import java.util.Map;
*/
public class TestCaseExecutor {
private CodeGenConfig config = new JavaCodeGenConfig();
public ApiConfiguration config = new ApiConfiguration();
private NamingPolicyProvider namingPolicyProvider = new CamelCaseNamingPolicyProvider();
private RulesProvider rulesProvider = new JavaCodeGenRulesProvider();
/**
* Follow the following argument pattern
@@ -41,6 +46,7 @@ public class TestCaseExecutor {
public static void main(String[] args) throws Exception {
WordAPI.initialize("c23b746d074135dc9500c0a61300a3cb7647e53ec2b9b658e", "http://beta.wordnik.com/v4/", false);
TestCaseExecutor runner = new TestCaseExecutor();
runner.config.setModelBaseClass("WordnikObject");
String apiKey = args[0];
String authToken = args[1];
String resource = args[2];
@@ -67,7 +73,7 @@ public class TestCaseExecutor {
private void executeTestCase(String resourceName, String httpMethod, String suggestedName, String apiKey,
String authToken, Map<String, String> queryAndPathParameters, String postData) {
String className = config.getNameGenerator().getServiceName(resourceName);
String className = namingPolicyProvider.getServiceName(resourceName);
String methodName = suggestedName;
//3
@@ -154,7 +160,7 @@ public class TestCaseExecutor {
// post data or input wrapper object created by code generator. If it is wrpper object then use the
// individual query and path parameters to create the wrapper object. If it is post data directly
// convert input JSON string to post data object
if(superclass != null && superclass.getSimpleName().equalsIgnoreCase(config.getCodeGenOverridingRules().getModelExtendingClass())){
if(superclass != null && superclass.getSimpleName().equalsIgnoreCase(config.getModelBaseClass())){
if(argNamesArray[i].trim().equals("postObject")){
argument = APITestRunner.convertJSONStringToObject(postData, argTypesArray[i]);
}else{
@@ -193,7 +199,7 @@ public class TestCaseExecutor {
if(method.getName().startsWith("get")){
String methodName = method.getName();
String fieldName = methodName.substring(3);
fieldName = config.getNameGenerator().applyMethodNamingPolicy(fieldName);
fieldName = namingPolicyProvider.applyMethodNamingPolicy(fieldName);
Object value = inputDefinitions.get(fieldName);
BeanUtils.setProperty(object, fieldName, value);
}