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);
+        }
+    }
 }


Reply via email to