diff --git a/bin/generate-java-lib.sh b/bin/generate-java-lib.sh
index 613480ff5d9..b6c279fa7b9 100755
--- a/bin/generate-java-lib.sh
+++ b/bin/generate-java-lib.sh
@@ -1,4 +1,11 @@
#!/bin/bash
+if [ $# -ne 4 ]
+then
+ echo "Error in $0 - Invalid Argument Count"
+ echo "Syntax: $0 location_of_service api_key package_name library_root"
+ exit
+fi
+
echo "" > classpath.txt
for file in `ls lib`;
do echo -n 'lib/' >> classpath.txt;
@@ -12,5 +19,5 @@ for file in `ls build`;
done
export CLASSPATH=$(cat classpath.txt):conf/java/templates
-export JAVA_OPTS="${JAVA_OPTS} -DrulePath=data -Dproperty=Xmx2g -DloggerPath=$BUILD_COMMON/test-config/log4j.properties"
+export JAVA_OPTS="${JAVA_OPTS} -Dproperty=Xmx2g"
java $WORDNIK_OPTS $JAVA_CONFIG_OPTIONS $JAVA_OPTS -cp $CLASSPATH com.wordnik.swagger.codegen.config.java.JavaLibCodeGen "$@"
\ No newline at end of file
diff --git a/bin/runjavaTestCase.sh b/bin/runjavaTestCase.sh
new file mode 100755
index 00000000000..7bf938abf5c
--- /dev/null
+++ b/bin/runjavaTestCase.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+echo "" > classpath.txt
+for file in `ls lib`;
+ do echo -n 'lib/' >> classpath.txt;
+ echo -n $file >> classpath.txt;
+ echo -n ':' >> classpath.txt;
+done
+for file in `ls build`;
+ do echo -n 'build/' >> classpath.txt;
+ echo -n $file >> classpath.txt;
+ echo -n ':' >> classpath.txt;
+done
+#first argument to the command line script give location of the library jar file
+export CLASSPATH=$(cat classpath.txt)$2
+export JAVA_OPTS="${JAVA_OPTS} -DrulePath=data -Dproperty=Xmx2g -DloggerPath=$BUILD_COMMON/test-config/log4j.properties"
+java $WORDNIK_OPTS $JAVA_CONFIG_OPTIONS $JAVA_OPTS -cp $CLASSPATH "$@"
+
diff --git a/bin/test-java-lib.sh b/bin/test-java-lib.sh
index e69de29bb2d..6f0229a719d 100755
--- a/bin/test-java-lib.sh
+++ b/bin/test-java-lib.sh
@@ -0,0 +1,22 @@
+#!/bin/bash
+if [ $# -ne 7 ]
+then
+ echo "Error in $0 - Invalid Argument Count"
+ echo "Syntax: $0 location_of_client_library location_of_service api_key test_script_location test_data_location test_data_class_name api_classes_package_name"
+ exit
+fi
+echo "" > classpath.txt
+for file in `ls lib`;
+ do echo -n 'lib/' >> classpath.txt;
+ echo -n $file >> classpath.txt;
+ echo -n ':' >> classpath.txt;
+done
+for file in `ls build`;
+ do echo -n 'build/' >> classpath.txt;
+ echo -n $file >> classpath.txt;
+ echo -n ':' >> classpath.txt;
+done
+export CLASSPATH=$(cat classpath.txt)$7
+echo $CLASSPATH
+export JAVA_OPTS="${JAVA_OPTS} -Dproperty=Xmx2g "
+java $WORDNIK_OPTS $JAVA_CONFIG_OPTIONS $JAVA_OPTS -cp $CLASSPATH com.wordnik.swagger.testframework.APITestRunner "$@" JAVA
\ No newline at end of file
diff --git a/conf/java/sample/build.xml b/conf/java/sample/build.xml
new file mode 100644
index 00000000000..e6ee7b8d0ea
--- /dev/null
+++ b/conf/java/sample/build.xml
@@ -0,0 +1,111 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/conf/java/sample/ivy.xml b/conf/java/sample/ivy.xml
new file mode 100644
index 00000000000..b2573f73d69
--- /dev/null
+++ b/conf/java/sample/ivy.xml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/conf/java/sample/ivysettings.xml b/conf/java/sample/ivysettings.xml
new file mode 100644
index 00000000000..ea8e09b9f5b
--- /dev/null
+++ b/conf/java/sample/ivysettings.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/conf/java/sample/lib-test-data.json b/conf/java/sample/lib-test-data.json
index 68a5c2cebd5..24d529e981d 100644
--- a/conf/java/sample/lib-test-data.json
+++ b/conf/java/sample/lib-test-data.json
@@ -1,12 +1,12 @@
{
"userList":[
{
- "userName":"testuser1",
+ "username":"testuser1",
"password":"password1",
"email":"test1@dummy.com"
},
{
- "userName":"testuser2",
+ "username":"testuser2",
"password":"password2",
"email":"test2@dummy.com"
}
diff --git a/conf/java/sample/lib-test-script.json b/conf/java/sample/lib-test-script.json
index c61bd06c0da..7953c939cfb 100644
--- a/conf/java/sample/lib-test-script.json
+++ b/conf/java/sample/lib-test-script.json
@@ -145,7 +145,7 @@
"assertions" : [
{
"actualOutput" : "${output(1.3).username}",
- "condition" : "!=",
+ "condition" : "==",
"expectedOutput" : "${input.userList[0].username}"
}
]
@@ -240,7 +240,7 @@
]
},
{
- "name" : "PLace order",
+ "name" : "Place order",
"id" : 2,
"resourceId" : 14,
"input" : {
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 2e634afd68b..8667f1b55fd 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
@@ -40,13 +40,15 @@ public class JavaLibCodeGen extends LibraryCodeGenerator {
JavaLibCodeGen codeGenerator = new JavaLibCodeGen(configPath);
codeGenerator.generateCode();
}
- if(args.length == 6) {
+ if(args.length == 4) {
String apiServerURL = args[0];
String apiKey = args[1];
- String modelPackageName = args[2];
- String apiPackageName = args[3];
- String classOutputDir = args[4];
- String libraryHome = args[5];
+ String packageName = args[2];
+ String libraryHome = args[3];
+
+ String modelPackageName = packageName+".model";
+ String apiPackageName = packageName+".api";
+ String classOutputDir = libraryHome + "/src/main/java/" + packageName.replace(".","/");
JavaLibCodeGen codeGenerator = new JavaLibCodeGen(apiServerURL, apiKey, modelPackageName,
apiPackageName, classOutputDir, libraryHome);
codeGenerator.generateCode();
diff --git a/src/main/java/com/wordnik/swagger/testframework/APITestRunner.java b/src/main/java/com/wordnik/swagger/testframework/APITestRunner.java
index 6e906365014..cfa28ffc845 100644
--- a/src/main/java/com/wordnik/swagger/testframework/APITestRunner.java
+++ b/src/main/java/com/wordnik/swagger/testframework/APITestRunner.java
@@ -80,7 +80,8 @@ public class APITestRunner {
* Arg[4] --> test data class name (class to which test data file will be deserialized)
* Arg[5] --> package where API classes are available
* Arg[6] --> Language to execute test cases
- * Arg[7] --> Optional test cases id. provide this if you need to execute only one test case
+ * Arg[7] --> Library location
+ * Arg[8] --> Optional test cases id. provide this if you need to execute only one test case
*
* @param args
* @throws Exception
@@ -93,17 +94,19 @@ public class APITestRunner {
String testDataLocation = args[3];
String testDataClass = args[4];
String apiPackageName = args[5];
- String language = args[6];
+ String libraryLocation = args[6];
+ String language = args[7];
+
String suiteId = "0";
- if(args.length > 7){
- suiteId = args[7];
+ if(args.length > 8){
+ suiteId = args[8];
}
ApiKeyAuthTokenBasedSecurityHandler securityHandler = new ApiKeyAuthTokenBasedSecurityHandler(apiKey, "");
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);
+ runner.runTests(apiServer, apiPackageName, runner.getTestPackage(), language, new Integer(suiteId), apiPackageName, securityHandler, libraryLocation);
}
public void initialize(String testScriptLocation, String testDataLocation, String testDataClass) throws Exception {
@@ -152,7 +155,8 @@ public class APITestRunner {
* @param testPackage
*/
private void runTests(String apiServer, String apiPackageName, TestPackage testPackage, String language, int suiteId,
- String libraryPackageName, ApiKeyAuthTokenBasedSecurityHandler securityHandler) throws Exception {
+ String libraryPackageName, ApiKeyAuthTokenBasedSecurityHandler securityHandler,
+ String libraryLocation) throws Exception {
/**
* Logic:
*
@@ -231,7 +235,7 @@ public class APITestRunner {
String[] externalCommand = constructExternalCommand(apiServer, apiPackageName,
securityHandler.getApiKey(), authToken,
resource.getPath(), resource.getHttpMethod(), resource.getSuggestedMethodName(),
- queryPathParameters.toString(), postData, language);
+ queryPathParameters.toString(), postData, language, libraryLocation);
//print the command
System.out.println("Test Case :" + testCasePath);
for(String arg : externalCommand){
@@ -502,11 +506,12 @@ public class APITestRunner {
*/
private String[] constructExternalCommand(String apiServer, String apiPackageName, String apiKey, String authToken,
String resource, String httpMethod, String suggestedMethodName, String queryAndPathParams,
- String postData, String language) {
+ String postData, String language, String libraryLocation) {
List command = new ArrayList();
if(language.equals(JAVA)){
- command.add("./bin/runjava.sh");
+ command.add("./bin/runjavaTestCase.sh");
command.add("com.wordnik.swagger.testframework.JavaTestCaseExecutor");
+ command.add( libraryLocation );
}else if (language.equals(PYTHON)){
command.add("../python/runtest.py ");
}else if (language.equals(ANDROID)){
diff --git a/src/main/java/com/wordnik/swagger/testframework/JavaTestCaseExecutor.java b/src/main/java/com/wordnik/swagger/testframework/JavaTestCaseExecutor.java
index 61021004799..7c272b7ea89 100644
--- a/src/main/java/com/wordnik/swagger/testframework/JavaTestCaseExecutor.java
+++ b/src/main/java/com/wordnik/swagger/testframework/JavaTestCaseExecutor.java
@@ -38,24 +38,24 @@ public class JavaTestCaseExecutor {
JavaTestCaseExecutor runner = new JavaTestCaseExecutor();
- String apiServer = args[0];
- String servicePackageName = args[1];
- String apiKey = args[2];
- String authToken = args[3];
- String resource = args[4];
- String httpMethod = args[5];
- String suggestedMethodName = args[6];
+ String apiServer = args[1];
+ String servicePackageName = args[2];
+ String apiKey = args[3];
+ String authToken = args[4];
+ String resource = args[5];
+ String httpMethod = args[6];
+ String suggestedMethodName = args[7];
Map queryAndPathParameters = new HashMap();
String postData = null;
- if(args.length > 7 && args[7].length() > 0){
- String[] qpTuple = args[7].split("~");
+ if(args.length > 8 && args[8].length() > 0){
+ String[] qpTuple = args[8].split("~");
for(String tuple: qpTuple){
String[] nameValue = tuple.split("=");
queryAndPathParameters.put(nameValue[0], nameValue[1]);
}
}
- if(args.length > 8 ){
- postData = args[8];
+ if(args.length > 9 ){
+ postData = args[9];
}
queryAndPathParameters.put("authToken", authToken);