Author: veithen
Date: Sat Sep 29 20:58:17 2012
New Revision: 1391874
URL: http://svn.apache.org/viewvc?rev=1391874&view=rev
Log:
Added a feature to maven-wsdl2java-plugin that allows to generate test cases in
such a way that they get the HTTP port from a system property.
Modified:
axis/axis1/java/trunk/axis/src/main/java/org/apache/axis/wsdl/toJava/JavaTestCaseWriter.java
axis/axis1/java/trunk/maven/maven-wsdl2java-plugin/src/main/java/org/apache/axis/tools/maven/wsdl2java/EmitterEx.java
axis/axis1/java/trunk/maven/maven-wsdl2java-plugin/src/main/java/org/apache/axis/tools/maven/wsdl2java/GenerateTestSourcesMojo.java
axis/axis1/java/trunk/maven/maven-wsdl2java-plugin/src/main/java/org/apache/axis/tools/maven/wsdl2java/JavaTestCaseWriterEx.java
Modified:
axis/axis1/java/trunk/axis/src/main/java/org/apache/axis/wsdl/toJava/JavaTestCaseWriter.java
URL:
http://svn.apache.org/viewvc/axis/axis1/java/trunk/axis/src/main/java/org/apache/axis/wsdl/toJava/JavaTestCaseWriter.java?rev=1391874&r1=1391873&r2=1391874&view=diff
==============================================================================
---
axis/axis1/java/trunk/axis/src/main/java/org/apache/axis/wsdl/toJava/JavaTestCaseWriter.java
(original)
+++
axis/axis1/java/trunk/axis/src/main/java/org/apache/axis/wsdl/toJava/JavaTestCaseWriter.java
Sat Sep 29 20:58:17 2012
@@ -42,7 +42,7 @@ import java.util.Map;
public class JavaTestCaseWriter extends JavaClassWriter {
/** Field sEntry */
- private ServiceEntry sEntry;
+ protected final ServiceEntry sEntry;
/** Field symbolTable */
private SymbolTable symbolTable;
@@ -117,10 +117,7 @@ public class JavaTestCaseWriter extends
}
pw.println(" public void test"+portName+"WSDL() throws
Exception {");
- pw.println(" javax.xml.rpc.ServiceFactory serviceFactory =
javax.xml.rpc.ServiceFactory.newInstance();");
- pw.println(" java.net.URL url = new java.net.URL(new " +
sEntry.getName() + "Locator" + "().get" + portName + "Address() + \"?WSDL\");");
- pw.println(" javax.xml.rpc.Service service =
serviceFactory.createService(url, new " + sEntry.getName() +
"Locator().getServiceName());");
- pw.println(" assertTrue(service != null);");
+ writeWSDLTestCode(pw, portName);
pw.println(" }");
pw.println("");
@@ -132,6 +129,13 @@ public class JavaTestCaseWriter extends
}
} // writeFileBody
+ protected void writeWSDLTestCode(PrintWriter pw, String portName) {
+ pw.println(" javax.xml.rpc.ServiceFactory serviceFactory =
javax.xml.rpc.ServiceFactory.newInstance();");
+ pw.println(" java.net.URL url = new java.net.URL(new " +
sEntry.getName() + "Locator" + "().get" + portName + "Address() + \"?WSDL\");");
+ pw.println(" javax.xml.rpc.Service service =
serviceFactory.createService(url, new " + sEntry.getName() +
"Locator().getServiceName());");
+ pw.println(" assertTrue(service != null);");
+ }
+
// Methods may be overloaded. If we just grab the method name
// for the test method names, we could end up with duplicates.
// The quick-and-easy solution is to have a test counter so that
@@ -148,7 +152,7 @@ public class JavaTestCaseWriter extends
* @param portType
* @param bEntry
*/
- protected final void writeServiceTestCode(
+ protected void writeServiceTestCode(
PrintWriter pw, String portName, PortType portType, BindingEntry
bEntry) {
Iterator ops = portType.getOperations().iterator();
@@ -307,7 +311,7 @@ public class JavaTestCaseWriter extends
* @param bindingType
* @param portName
*/
- public final void writeBindingAssignment(
+ public void writeBindingAssignment(
PrintWriter pw, String bindingType, String portName) {
pw.println(" " + bindingType + " binding");
Modified:
axis/axis1/java/trunk/maven/maven-wsdl2java-plugin/src/main/java/org/apache/axis/tools/maven/wsdl2java/EmitterEx.java
URL:
http://svn.apache.org/viewvc/axis/axis1/java/trunk/maven/maven-wsdl2java-plugin/src/main/java/org/apache/axis/tools/maven/wsdl2java/EmitterEx.java?rev=1391874&r1=1391873&r2=1391874&view=diff
==============================================================================
---
axis/axis1/java/trunk/maven/maven-wsdl2java-plugin/src/main/java/org/apache/axis/tools/maven/wsdl2java/EmitterEx.java
(original)
+++
axis/axis1/java/trunk/maven/maven-wsdl2java-plugin/src/main/java/org/apache/axis/tools/maven/wsdl2java/EmitterEx.java
Sat Sep 29 20:58:17 2012
@@ -26,6 +26,8 @@ public class EmitterEx extends Emitter {
private String clientOutputDirectory;
private String deployWsdd;
private String undeployWsdd;
+ private String testHttpPortSystemProperty;
+ private int testDefaultHttpPort = -1;
public boolean isClientSide() {
return clientSide;
@@ -66,4 +68,20 @@ public class EmitterEx extends Emitter {
public void setUndeployWsdd(String undeployWsdd) {
this.undeployWsdd = undeployWsdd;
}
+
+ public String getTestHttpPortSystemProperty() {
+ return testHttpPortSystemProperty;
+ }
+
+ public void setTestHttpPortSystemProperty(String
testHttpPortSystemProperty) {
+ this.testHttpPortSystemProperty = testHttpPortSystemProperty;
+ }
+
+ public int getTestDefaultHttpPort() {
+ return testDefaultHttpPort;
+ }
+
+ public void setTestDefaultHttpPort(int testDefaultHttpPort) {
+ this.testDefaultHttpPort = testDefaultHttpPort;
+ }
}
Modified:
axis/axis1/java/trunk/maven/maven-wsdl2java-plugin/src/main/java/org/apache/axis/tools/maven/wsdl2java/GenerateTestSourcesMojo.java
URL:
http://svn.apache.org/viewvc/axis/axis1/java/trunk/maven/maven-wsdl2java-plugin/src/main/java/org/apache/axis/tools/maven/wsdl2java/GenerateTestSourcesMojo.java?rev=1391874&r1=1391873&r2=1391874&view=diff
==============================================================================
---
axis/axis1/java/trunk/maven/maven-wsdl2java-plugin/src/main/java/org/apache/axis/tools/maven/wsdl2java/GenerateTestSourcesMojo.java
(original)
+++
axis/axis1/java/trunk/maven/maven-wsdl2java-plugin/src/main/java/org/apache/axis/tools/maven/wsdl2java/GenerateTestSourcesMojo.java
Sat Sep 29 20:58:17 2012
@@ -50,10 +50,24 @@ public class GenerateTestSourcesMojo ext
*/
private boolean testCase;
+ /**
+ *
+ * @parameter
+ */
+ private String testHttpPortSystemProperty;
+
+ /**
+ *
+ * @parameter
+ */
+ private int testDefaultHttpPort = -1;
+
protected void configureEmitter(EmitterEx emitter) {
emitter.setOutputDir(testSourceOutputDirectory.getAbsolutePath());
emitter.setGenerateImplementation(implementation);
emitter.setTestCaseWanted(testCase);
+ emitter.setTestHttpPortSystemProperty(testHttpPortSystemProperty);
+ emitter.setTestDefaultHttpPort(testDefaultHttpPort);
}
protected void addSourceRoot(MavenProject project) {
Modified:
axis/axis1/java/trunk/maven/maven-wsdl2java-plugin/src/main/java/org/apache/axis/tools/maven/wsdl2java/JavaTestCaseWriterEx.java
URL:
http://svn.apache.org/viewvc/axis/axis1/java/trunk/maven/maven-wsdl2java-plugin/src/main/java/org/apache/axis/tools/maven/wsdl2java/JavaTestCaseWriterEx.java?rev=1391874&r1=1391873&r2=1391874&view=diff
==============================================================================
---
axis/axis1/java/trunk/maven/maven-wsdl2java-plugin/src/main/java/org/apache/axis/tools/maven/wsdl2java/JavaTestCaseWriterEx.java
(original)
+++
axis/axis1/java/trunk/maven/maven-wsdl2java-plugin/src/main/java/org/apache/axis/tools/maven/wsdl2java/JavaTestCaseWriterEx.java
Sat Sep 29 20:58:17 2012
@@ -18,6 +18,13 @@
*/
package org.apache.axis.tools.maven.wsdl2java;
+import java.io.IOException;
+import java.io.PrintWriter;
+
+import javax.wsdl.PortType;
+
+import org.apache.axis.utils.Messages;
+import org.apache.axis.wsdl.symbolTable.BindingEntry;
import org.apache.axis.wsdl.symbolTable.ServiceEntry;
import org.apache.axis.wsdl.symbolTable.SymbolTable;
import org.apache.axis.wsdl.toJava.Emitter;
@@ -27,4 +34,70 @@ public class JavaTestCaseWriterEx extend
public JavaTestCaseWriterEx(Emitter emitter, ServiceEntry sEntry,
SymbolTable symbolTable) {
super(emitter, sEntry, symbolTable);
}
+
+ protected void writeFileBody(PrintWriter pw) throws IOException {
+ super.writeFileBody(pw);
+ String httpPortSystemProperty =
((EmitterEx)emitter).getTestHttpPortSystemProperty();
+ if (httpPortSystemProperty != null) {
+ int defaultHttpPort =
((EmitterEx)emitter).getTestDefaultHttpPort();
+ pw.println(" private static String getEndpoint(String portName)
throws Exception {");
+ pw.print(" String httpPort = System.getProperty(\"" +
httpPortSystemProperty + "\"");
+ if (defaultHttpPort != -1) {
+ pw.print(", \"" + defaultHttpPort + "\"");
+ }
+ pw.println(");");
+ if (defaultHttpPort == -1) {
+ pw.println(" if (httpPort == null) {");
+ pw.println(" fail(\"Required system property " +
httpPortSystemProperty + " not set\");");
+ pw.println(" }");
+ }
+ pw.println(" return \"http://localhost:\" + httpPort +
\"/axis/services/\" + portName;");
+ pw.println("}");
+ }
+ }
+
+ protected void writeWSDLTestCode(PrintWriter pw, String portName) {
+ String httpPortSystemProperty =
((EmitterEx)emitter).getTestHttpPortSystemProperty();
+ if (httpPortSystemProperty != null) {
+ pw.println(" javax.xml.rpc.ServiceFactory serviceFactory =
javax.xml.rpc.ServiceFactory.newInstance();");
+ pw.println(" javax.xml.rpc.Service service =
serviceFactory.createService(new java.net.URL(getEndpoint(\"" + portName + "\")
+ \"?WSDL\"), new "
+ + sEntry.getName() + "Locator().getServiceName());");
+ pw.println(" assertTrue(service != null);");
+ } else {
+ super.writeWSDLTestCode(pw, portName);
+ }
+ }
+
+ protected void writeServiceTestCode(PrintWriter pw, String portName,
PortType portType, BindingEntry bEntry) {
+ String httpPortSystemProperty =
((EmitterEx)emitter).getTestHttpPortSystemProperty();
+ if (httpPortSystemProperty != null) {
+ String bindingType = bEntry.getName() + "Stub";
+ pw.println(" private static " + bindingType + " get" + portName
+ "() throws Exception {");
+ pw.println(" " + bindingType + " binding");
+ pw.println(" = (" + bindingType + ")");
+ pw.print(" new " + sEntry.getName());
+ pw.println("Locator" + "().get" + portName + "(new
java.net.URL(getEndpoint(\"" + portName + "\")));");
+ pw.println(" assertNotNull(\""
+ + Messages.getMessage("null00", "binding")
+ + "\", binding);");
+ pw.println();
+ pw.println(" // Time out after a minute");
+ pw.println(" binding.setTimeout(60000);");
+ pw.println();
+ pw.println(" return binding;");
+ pw.println(" }");
+ pw.println();
+ }
+ super.writeServiceTestCode(pw, portName, portType, bEntry);
+ }
+
+ public void writeBindingAssignment(PrintWriter pw, String bindingType,
String portName) {
+ String httpPortSystemProperty =
((EmitterEx)emitter).getTestHttpPortSystemProperty();
+ if (httpPortSystemProperty != null) {
+ pw.println(" " + bindingType + " binding = get" + portName
+ "();");
+ pw.println();
+ } else {
+ super.writeBindingAssignment(pw, bindingType, portName);
+ }
+ }
}