diff --git a/conf/java/templates/ResourceObject.st b/conf/java/templates/ResourceObject.st index 1a29d9cd1d0..0be5014f185 100644 --- a/conf/java/templates/ResourceObject.st +++ b/conf/java/templates/ResourceObject.st @@ -46,6 +46,8 @@ import $import$; */ public class $resource$ extends $extends$ { + private static APIInvoker apiInvoker = null; + $methods:{ method | /** * $method.title$ @@ -97,11 +99,11 @@ $method.pathParameters:{ argument | $endif$ //make the API Call $if(method.postObject)$ - String response = APIInvoker.invokeAPI(resourcePath, method, queryParams, postData); + String response = getApiInvoker().invokeAPI(resourcePath, method, queryParams, postData); $endif$ $if(!method.postObject)$ - String response = APIInvoker.invokeAPI(resourcePath, method, queryParams, null); + String response = getApiInvoker().invokeAPI(resourcePath, method, queryParams, null); $endif$ $if(!method.responseVoid)$ @@ -110,13 +112,13 @@ $if(!method.responseVoid)$ } $if(!method.returnValueList)$ //create output objects if the response has more than one object - $method.returnValue$ responseObject = ($method.returnValue$) APIInvoker.deserialize(response, $method.returnClassName$.class); + $method.returnValue$ responseObject = ($method.returnValue$) getApiInvoker().deserialize(response, $method.returnClassName$.class); return responseObject; $endif$ $if(method.returnValueList)$ TypeReference> typeRef = new TypeReference>() {}; try { - List<$method.returnClassName$> responseObject = (List<$method.returnClassName$>) APIInvoker.mapper.readValue(response, typeRef); + List<$method.returnClassName$> responseObject = (List<$method.returnClassName$>) getApiInvoker().mapper.readValue(response, typeRef); return responseObject; } catch (IOException ioe) { String[] args = new String[]{response, typeRef.toString()}; @@ -128,4 +130,15 @@ $endif$ }$ + public static APIInvoker getApiInvoker() { + if(apiInvoker == null){ + apiInvoker = APIInvoker.getApiInvoker(); + } + return apiInvoker; + } + + public static void setApiInvoker(APIInvoker invoker) { + apiInvoker = invoker; + } + } diff --git a/src/main/java/com/wordnik/swagger/runtime/common/APIInvoker.java b/src/main/java/com/wordnik/swagger/runtime/common/APIInvoker.java index c76516e8e62..7bbbcc03091 100644 --- a/src/main/java/com/wordnik/swagger/runtime/common/APIInvoker.java +++ b/src/main/java/com/wordnik/swagger/runtime/common/APIInvoker.java @@ -50,11 +50,13 @@ import com.sun.jersey.api.client.filter.LoggingFilter; */ public class APIInvoker { - private static String apiServer = "http://api.wordnik.com/v4"; - private static SecurityHandler securityHandler = null; - private static boolean loggingEnabled; - private static Logger logger = null; - + private String apiServer = "http://api.wordnik.com/v4"; + private SecurityHandler securityHandler = null; + private boolean loggingEnabled; + private Logger logger = null; + private static APIInvoker apiInvoker = null; + + protected static String POST = "POST"; protected static String GET = "GET"; protected static String PUT = "PUT"; @@ -77,22 +79,33 @@ public class APIInvoker { * for more details. {@link com.sun.jersey.api.client.filter.LoggingFilter}. Default output is sent to system.out. * Create a logger ({@link java.util.logging.Logger} class and set using setLogger method. */ - public static void initialize(SecurityHandler securityHandler, String apiServer, boolean enableLogging) { - setSecurityHandler(securityHandler); + public static APIInvoker initialize(SecurityHandler securityHandler, String apiServer, boolean enableLogging) { + APIInvoker invoker = new APIInvoker(); + invoker.setSecurityHandler(securityHandler); if(apiServer != null && apiServer.length() > 0) { if(apiServer.substring(apiServer.length()-1).equals("/")){ apiServer = apiServer.substring(0, apiServer.length()-1); } - setApiServer(apiServer); + invoker.setApiServer(apiServer); } - loggingEnabled = enableLogging; + invoker.setLoggingEnable(enableLogging); + apiInvoker = invoker; + return invoker; } - + + /** + * Returns lst initialized API invoker + * @return + */ + public static APIInvoker getApiInvoker(){ + return apiInvoker; + } + /** * Set the logger instance used for Jersey logging. * @param aLogger */ - public static void setLogger(Logger aLogger) { + public void setLogger(Logger aLogger) { logger = aLogger; } @@ -101,11 +114,11 @@ public class APIInvoker { * This value is set using initialize method. * @return */ - public static SecurityHandler setSecurityHandler() { + public SecurityHandler setSecurityHandler() { return securityHandler; } - private static void setSecurityHandler(SecurityHandler aSecurityHandler) { + private void setSecurityHandler(SecurityHandler aSecurityHandler) { securityHandler = aSecurityHandler; } @@ -113,11 +126,11 @@ public class APIInvoker { * Sets the URL for the API server. It is defaulted to the server used while building the driver. * @return */ - private static String getApiServer() { + private String getApiServer() { return apiServer; } - public static void setApiServer(String server) { + public void setApiServer(String server) { apiServer = server; } @@ -135,7 +148,7 @@ public class APIInvoker { * @return JSON response of the API call. * @throws com.wordnik.swagger.runtime.exception.APIException if the call to API server fails. */ - public static String invokeAPI(String resourceURL, String method, Map queryParams, Object postData) throws APIException { @@ -278,7 +291,12 @@ public class APIInvoker { return out.toString(); } - public static boolean isLoggingEnable() { + public boolean isLoggingEnable() { return loggingEnabled; } + + public void setLoggingEnable(boolean enabled) { + loggingEnabled = enabled; + } + } diff --git a/src/main/java/com/wordnik/swagger/testframework/APITestRunner.java b/src/main/java/com/wordnik/swagger/testframework/APITestRunner.java index 8d603c31a49..e9bd2f7b78a 100644 --- a/src/main/java/com/wordnik/swagger/testframework/APITestRunner.java +++ b/src/main/java/com/wordnik/swagger/testframework/APITestRunner.java @@ -112,7 +112,8 @@ public class APITestRunner { String apiKey = args[1]; String testScriptLocation = args[2]; String testDataLocation = args[3]; - String testDataClass = args[4]; + String testDataClass = args[4].trim(); + System.out.println("class"+testDataClass+"test"); String apiPackageName = args[5]; String libraryLocation = args[6]; String language = args[7]; @@ -123,7 +124,7 @@ public class APITestRunner { } ApiKeyAuthTokenBasedSecurityHandler securityHandler = new ApiKeyAuthTokenBasedSecurityHandler(apiKey, ""); - APIInvoker.initialize(securityHandler, apiServer, true); + APIInvoker aAPIInvoker = APIInvoker.initialize(securityHandler, apiServer, true); APITestRunner runner = new APITestRunner(); runner.initialize(testScriptLocation, testDataLocation, testDataClass); runner.runTests(apiServer, apiPackageName, runner.getTestPackage(), language, new Integer(suiteId), apiPackageName, securityHandler, libraryLocation); diff --git a/src/main/java/com/wordnik/swagger/testframework/JavaTestCaseExecutor.java b/src/main/java/com/wordnik/swagger/testframework/JavaTestCaseExecutor.java index 3da339a52ab..624d50c9ad3 100644 --- a/src/main/java/com/wordnik/swagger/testframework/JavaTestCaseExecutor.java +++ b/src/main/java/com/wordnik/swagger/testframework/JavaTestCaseExecutor.java @@ -77,7 +77,7 @@ public class JavaTestCaseExecutor { queryAndPathParameters.put("authToken", authToken); ApiKeyAuthTokenBasedSecurityHandler securityHandler = new ApiKeyAuthTokenBasedSecurityHandler(apiKey, authToken); - APIInvoker.initialize(securityHandler, apiServer, true); + APIInvoker aAPIInvoker = APIInvoker.initialize(securityHandler, apiServer, true); runner.executeTestCase(resource, servicePackageName, suggestedMethodName, queryAndPathParameters, postData);