You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beehive.apache.org by cs...@apache.org on 2005/12/14 17:58:31 UTC

svn commit: r356805 - in /beehive/trunk/system-controls: src/webservice/control/org/apache/beehive/controls/system/webservice/generator/ test/webservice/jcxgen-tests/ test/webservice/jcxgen-tests/tests/org/apache/beehive/controls/system/webservice/unit...

Author: cschoett
Date: Wed Dec 14 08:58:21 2005
New Revision: 356805

URL: http://svn.apache.org/viewcvs?rev=356805&view=rev
Log:
Removed axis dependency from ServiceControlGenerator.  Updated service control generator tests to gen controls from wsdl using the target namespace of the wsdl for the package name of the generated control. 

Modified:
    beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/generator/GeneratorUtils.java
    beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/generator/ServiceControlGenerator.java
    beehive/trunk/system-controls/test/webservice/jcxgen-tests/build.xml
    beehive/trunk/system-controls/test/webservice/jcxgen-tests/tests/org/apache/beehive/controls/system/webservice/units/jcxgen/JcxGenFromDocLitBareWsdlTest.java
    beehive/trunk/system-controls/test/webservice/jcxgen-tests/tests/org/apache/beehive/controls/system/webservice/units/jcxgen/JcxGenFromDocLitWrapWsdlTest.java
    beehive/trunk/system-controls/test/webservice/jcxgen-tests/tests/org/apache/beehive/controls/system/webservice/units/jcxgen/JcxGenFromRpcLitWsdlTest.java

Modified: beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/generator/GeneratorUtils.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/generator/GeneratorUtils.java?rev=356805&r1=356804&r2=356805&view=diff
==============================================================================
--- beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/generator/GeneratorUtils.java (original)
+++ beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/generator/GeneratorUtils.java Wed Dec 14 08:58:21 2005
@@ -16,9 +16,12 @@
 package org.apache.beehive.controls.system.webservice.generator;
 
 import java.io.File;
+import java.net.MalformedURLException;
+import java.net.URL;
 import java.util.Arrays;
-import java.util.Set;
 import java.util.HashSet;
+import java.util.Set;
+import java.util.StringTokenizer;
 
 /**
  * Utilities for service control generation.
@@ -99,8 +102,7 @@
      * @param checkString String value to check.
      * @return true if checkString exactly matches a java reserved word
      */
-    private static boolean isJavaReservedWord(String checkString)
-    {
+    private static boolean isJavaReservedWord(String checkString) {
         return Arrays.binarySearch(JAVA_RESERVED_WORDS, checkString) >= 0;
     }
 
@@ -111,8 +113,7 @@
      * @param id The invalid java identifier.
      * @return The transformed java identifier.
      */
-    static String transformInvalidJavaIdentifier(String id)
-    {
+    static String transformInvalidJavaIdentifier(String id) {
         if (id == null)
             throw new IllegalArgumentException("id cannot be null");
 
@@ -133,10 +134,9 @@
             transformed.insert(0, JAVA_RESERVEDWORD_PREFIX);
         }
 
-        for (int i = 1; i < transformed.length() ; i++)
-        {
+        for (int i = 1; i < transformed.length(); i++) {
             if (!Character.isJavaIdentifierPart(transformed.charAt(i))) {
-                transformed.replace(i, i+1, ""+ JAVA_RESERVEDWORD_PREFIX);
+                transformed.replace(i, i + 1, "" + JAVA_RESERVEDWORD_PREFIX);
             }
         }
 
@@ -149,8 +149,7 @@
      * @param id The Java identifier to check.
      * @return true if identifer is valid.
      */
-    static boolean isValidJavaIdentifier(String id)
-    {
+    static boolean isValidJavaIdentifier(String id) {
         if (id == null) {
             throw new IllegalArgumentException("id cannot be null");
         }
@@ -168,8 +167,7 @@
             return false;
         }
 
-        for (int i = 1; i < len; i++)
-        {
+        for (int i = 1; i < len; i++) {
             if (!Character.isJavaIdentifierPart(id.charAt(i)))
                 return false;
         }
@@ -179,20 +177,113 @@
 
     /**
      * Convert a java package name to a file directory name.
+     *
      * @param packageName Package name to convert.
      * @return The converted package name, empty string if packageName was null.
      */
-    static String packageNameToDirectoryName(String packageName)
-    {
+    static String packageNameToDirectoryName(String packageName) {
         String dir;
 
         if (packageName != null) {
-              for (char pkgSeparator : PKG_SEPARATORS) {
+            for (char pkgSeparator : PKG_SEPARATORS) {
                 packageName = packageName.replace(pkgSeparator, File.separatorChar);
             }
         }
 
         dir = packageName;
         return (dir == null) ? "" : dir + File.separatorChar;
+    }
+
+    /**
+     * Generate a java package name from the specified namespace.
+     *
+     * @param namespace Namespace to generate package name from.
+     * @return String
+     */
+    static String generatePackageName(String namespace) {
+
+        String hostname;
+        String path = "";
+
+        try {
+            URL u = new URL(namespace);
+            hostname = u.getHost();
+            path = u.getPath();
+        }
+        catch (MalformedURLException e) {
+            if (namespace.indexOf(":") > -1) {
+                hostname = namespace.substring(namespace.indexOf(":") + 1);
+
+                if (hostname.indexOf("/") > -1) {
+                    hostname = hostname.substring(0, hostname.indexOf("/"));
+                }
+            }
+            else {
+                hostname = namespace;
+            }
+        }
+
+        if (hostname == null) {
+            return null;
+        }
+
+        // check for and replace any illegal java identifier's
+        hostname = hostname.replace('-', '_');
+        path = path.replace('-', '_');
+
+        // remove last forward slash in path, if necessary
+        if ((path.length() > 0) && (path.charAt(path.length() - 1) == '/')) {
+            path = path.substring(0, path.length() - 1);
+        }
+
+        // tokenize the hostname and reverse it
+        StringTokenizer st = new StringTokenizer(hostname, ".:");
+        String[] words = new String[st.countTokens()];
+        for (int i = 0; i < words.length; ++i) {
+            words[i] = st.nextToken();
+        }
+
+        StringBuilder sb = new StringBuilder(namespace.length());
+        for (int i = words.length - 1; i >= 0; --i) {
+            addToPackageName(sb, words[i], (i == words.length - 1));
+        }
+
+        // tokenize the path
+        StringTokenizer st2 = new StringTokenizer(path, "/");
+        while (st2.hasMoreTokens()) {
+            addToPackageName(sb, st2.nextToken(), false);
+        }
+        return sb.toString();
+    }
+
+    /**
+     * Add a new segement to a package name. Be sure to check that seqement is not
+     * an java reserved word, if it is transform it into something safe.
+     *
+     * @param sb        the buffer to append to
+     * @param id      the word to append
+     * @param firstWord a flag indicating whether this is the first word
+     */
+    private static void addToPackageName(StringBuilder sb, String id, boolean firstWord) {
+
+        if (isJavaReservedWord(id)) {
+            id = transformInvalidJavaIdentifier(id);
+        }
+
+        // separate with dot after the first word
+        if (!firstWord) {
+            sb.append('.');
+        }
+
+        // prefix digits with underscores
+        if (Character.isDigit(id.charAt(0))) {
+            sb.append('_');
+        }
+
+        // replace periods with underscores
+        if (id.indexOf('.') != -1) {
+            id = id.replace('.', '_');
+        }
+        sb.append(id);
     }
 }

Modified: beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/generator/ServiceControlGenerator.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/generator/ServiceControlGenerator.java?rev=356805&r1=356804&r2=356805&view=diff
==============================================================================
--- beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/generator/ServiceControlGenerator.java (original)
+++ beehive/trunk/system-controls/src/webservice/control/org/apache/beehive/controls/system/webservice/generator/ServiceControlGenerator.java Wed Dec 14 08:58:21 2005
@@ -15,7 +15,6 @@
  */
 package org.apache.beehive.controls.system.webservice.generator;
 
-import org.apache.axis.wsdl.toJava.Utils;
 import org.apache.beehive.controls.system.webservice.wsdl.Wsdl;
 import org.apache.beehive.controls.system.webservice.wsdl.WsdlOpParameter;
 import org.apache.beehive.controls.system.webservice.wsdl.WsdlOpReturnType;
@@ -99,8 +98,9 @@
         Wsdl wsdl = new Wsdl(wsdlFile.toURI());
         List<MethodInfo> methodList = buildMethodList(wsdl);
 
-        if (pkgName == null)
-            pkgName = Utils.makePackageName(wsdl.getTargetNamespace());
+        if (pkgName == null) {
+            pkgName = GeneratorUtils.generatePackageName(wsdl.getTargetNamespace());
+        }
 
         if (_velocityEngine == null)
             initializeVelocity();
@@ -172,6 +172,7 @@
      */
     static private Writer getJcxWriter(File outputDir, String packageName, String serviceName)
             throws FileNotFoundException, UnsupportedEncodingException {
+        
         assert serviceName != null : "genJcxWriter: Service name can not be null!";
         assert packageName != null : "genJcxWriter: Package name can not be null!";
 

Modified: beehive/trunk/system-controls/test/webservice/jcxgen-tests/build.xml
URL: http://svn.apache.org/viewcvs/beehive/trunk/system-controls/test/webservice/jcxgen-tests/build.xml?rev=356805&r1=356804&r2=356805&view=diff
==============================================================================
--- beehive/trunk/system-controls/test/webservice/jcxgen-tests/build.xml (original)
+++ beehive/trunk/system-controls/test/webservice/jcxgen-tests/build.xml Wed Dec 14 08:58:21 2005
@@ -29,7 +29,6 @@
     <property name="jcxgen.beansrc" location="${jcxgen.build.dir}/beansrc"/>
     <property name="jcxgen.classes" location="${jcxgen.build.dir}/classes"/>
     <property name="jcxgen.gensrc" location="${jcxgen.build.dir}/jcxsrc"/>
-    <property name="jcxgen.package.name" value="jcxgentest"/>
     <property name="log.dir" location="${basedir}/../build/logs/jcxgen"/>
 
     <property name="beehive-webservice-control.jar"
@@ -119,23 +118,14 @@
         <echo message="-----------------------------------------------------"/>
     </target>
 
-
     <!-- =================================================================== -->
     <!-- generate_jcxs - Generate webservice controls from wsdls             -->
     <!-- =================================================================== -->
     <target name="generate_jcxs" depends="gen_xmlbeans">
-
         <taskdef name="scgen"
                  classname="org.apache.beehive.controls.system.webservice.generator.ServiceControlGeneratorTask"
                  classpathref="jcxgen.classpath"/>
-
-        <scgen srcdir="${wsdls.dir}" destdir="${jcxgen.gensrc}" destPackageName="${jcxgen.package.name}"/>
-
-        <copy todir="${jcxgen.gensrc}/${jcxgen.package.name}">
-            <fileset dir="${wsdls.dir}">
-                <include name="**/*.wsdl"/>
-            </fileset>
-        </copy>
+        <scgen srcdir="${wsdls.dir}" destdir="${jcxgen.gensrc}"/>
     </target>
 
     <target name="gen_xmlbeans" depends="checkxbean" unless="noxbeanrebuild">

Modified: beehive/trunk/system-controls/test/webservice/jcxgen-tests/tests/org/apache/beehive/controls/system/webservice/units/jcxgen/JcxGenFromDocLitBareWsdlTest.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/system-controls/test/webservice/jcxgen-tests/tests/org/apache/beehive/controls/system/webservice/units/jcxgen/JcxGenFromDocLitBareWsdlTest.java?rev=356805&r1=356804&r2=356805&view=diff
==============================================================================
--- beehive/trunk/system-controls/test/webservice/jcxgen-tests/tests/org/apache/beehive/controls/system/webservice/units/jcxgen/JcxGenFromDocLitBareWsdlTest.java (original)
+++ beehive/trunk/system-controls/test/webservice/jcxgen-tests/tests/org/apache/beehive/controls/system/webservice/units/jcxgen/JcxGenFromDocLitBareWsdlTest.java Wed Dec 14 08:58:21 2005
@@ -18,7 +18,6 @@
 package org.apache.beehive.controls.system.webservice.units.jcxgen;
 
 import java.lang.reflect.Method;
-import javax.xml.rpc.holders.IntHolder;
 
 import junit.framework.Test;
 import junit.framework.TestCase;
@@ -28,7 +27,7 @@
 
 public class JcxGenFromDocLitBareWsdlTest
     extends TestCase {
-    private final Class genJcx = jcxgentest.DocumentLiteralBareSampleService.class;
+    private final Class genJcx = doclitbar.web.complex.DocumentLiteralBareSampleService.class;
 
     public void testLocationAnnotation() throws Exception {
         ServiceControl.Location loc =

Modified: beehive/trunk/system-controls/test/webservice/jcxgen-tests/tests/org/apache/beehive/controls/system/webservice/units/jcxgen/JcxGenFromDocLitWrapWsdlTest.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/system-controls/test/webservice/jcxgen-tests/tests/org/apache/beehive/controls/system/webservice/units/jcxgen/JcxGenFromDocLitWrapWsdlTest.java?rev=356805&r1=356804&r2=356805&view=diff
==============================================================================
--- beehive/trunk/system-controls/test/webservice/jcxgen-tests/tests/org/apache/beehive/controls/system/webservice/units/jcxgen/JcxGenFromDocLitWrapWsdlTest.java (original)
+++ beehive/trunk/system-controls/test/webservice/jcxgen-tests/tests/org/apache/beehive/controls/system/webservice/units/jcxgen/JcxGenFromDocLitWrapWsdlTest.java Wed Dec 14 08:58:21 2005
@@ -28,7 +28,7 @@
 
 public class JcxGenFromDocLitWrapWsdlTest extends TestCase {
 
-    private final Class genJcx = jcxgentest.DocumentLiteralWrappedSampleService.class;
+    private final Class genJcx = doclitwrap.web.complex.DocumentLiteralWrappedSampleService.class;
 
     public void testLocationAnnotation() throws Exception {
         ServiceControl.Location loc =

Modified: beehive/trunk/system-controls/test/webservice/jcxgen-tests/tests/org/apache/beehive/controls/system/webservice/units/jcxgen/JcxGenFromRpcLitWsdlTest.java
URL: http://svn.apache.org/viewcvs/beehive/trunk/system-controls/test/webservice/jcxgen-tests/tests/org/apache/beehive/controls/system/webservice/units/jcxgen/JcxGenFromRpcLitWsdlTest.java?rev=356805&r1=356804&r2=356805&view=diff
==============================================================================
--- beehive/trunk/system-controls/test/webservice/jcxgen-tests/tests/org/apache/beehive/controls/system/webservice/units/jcxgen/JcxGenFromRpcLitWsdlTest.java (original)
+++ beehive/trunk/system-controls/test/webservice/jcxgen-tests/tests/org/apache/beehive/controls/system/webservice/units/jcxgen/JcxGenFromRpcLitWsdlTest.java Wed Dec 14 08:58:21 2005
@@ -27,7 +27,7 @@
 
 public class JcxGenFromRpcLitWsdlTest extends TestCase {
 
-    private final Class genJcx = jcxgentest.RpcLiteralSampleService.class;
+    private final Class genJcx = org.apache.beehive.web.webservice.rpc_examples.RpcLiteralSampleService.class;
 
     public void testLocationAnnotation() throws Exception {
         ServiceControl.Location loc =