You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beehive.apache.org by ek...@apache.org on 2005/07/13 23:07:35 UTC

svn commit: r216240 - in /incubator/beehive/sandbox/ekoneil: system-controls/src/webservice/org/apache/beehive/controls/system/webservice/generator/ system-controls/src/webservice/org/apache/beehive/controls/system/webservice/jaxrpc/ system-controls/te...

Author: ekoneil
Date: Wed Jul 13 14:07:34 2005
New Revision: 216240

URL: http://svn.apache.org/viewcvs?rev=216240&view=rev
Log:
Implement type handling correctly in the service control.  After switching the web service object model off of java.lang.Class and onto java.lang.String, there was work needed in the web service control.

Note, the HackUtils is aptly named -- there is some currently nasty code that is used to map from String type name -> readable type name (for use during code generation) and from String type name -> Java class (for use during ServiceControl invocations).  This needs to be *fixed*, but it's sufficient to get the DRTs passing and to prove that all of this works.  The next step would be to provide a type abstraction that can be created from a java.lang.class or from a Mirror TypeDeclaration that provides the information about the type, it's array-ness, component type, etc.

But, the WSM and service control DRTs all run now.

BB: self
DRT: WSM / service control pass


Modified:
    incubator/beehive/sandbox/ekoneil/system-controls/src/webservice/org/apache/beehive/controls/system/webservice/generator/ExtensionMaker.java
    incubator/beehive/sandbox/ekoneil/system-controls/src/webservice/org/apache/beehive/controls/system/webservice/jaxrpc/ServiceControlImpl.jcs
    incubator/beehive/sandbox/ekoneil/system-controls/test/src/webservice/tests/org/apache/beehive/controls/system/webservice/units/dlwservice/DocLitWrapWebServiceTest.java
    incubator/beehive/sandbox/ekoneil/wsm/src/axis/org/apache/beehive/wsm/axis/AxisHook.java
    incubator/beehive/sandbox/ekoneil/wsm/src/core/org/apache/beehive/wsm/model/BeehiveWsMethodMetadata.java
    incubator/beehive/sandbox/ekoneil/wsm/src/core/org/apache/beehive/wsm/model/BeehiveWsParameterMetadata.java
    incubator/beehive/sandbox/ekoneil/wsm/src/core/org/apache/beehive/wsm/model/impl/DefaultMethodMetadataImpl.java
    incubator/beehive/sandbox/ekoneil/wsm/src/core/org/apache/beehive/wsm/model/impl/DefaultParameterMetadataImpl.java
    incubator/beehive/sandbox/ekoneil/wsm/src/core/org/apache/beehive/wsm/model/wsdl/XmlBeanWSDLProcessor.java
    incubator/beehive/sandbox/ekoneil/wsm/src/core/org/apache/beehive/wsm/processor2/HackUtils.java
    incubator/beehive/sandbox/ekoneil/wsm/src/core/org/apache/beehive/wsm/processor2/model/factory/impl/MirrorFactoryImpl.java

Modified: incubator/beehive/sandbox/ekoneil/system-controls/src/webservice/org/apache/beehive/controls/system/webservice/generator/ExtensionMaker.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/sandbox/ekoneil/system-controls/src/webservice/org/apache/beehive/controls/system/webservice/generator/ExtensionMaker.java?rev=216240&r1=216239&r2=216240&view=diff
==============================================================================
--- incubator/beehive/sandbox/ekoneil/system-controls/src/webservice/org/apache/beehive/controls/system/webservice/generator/ExtensionMaker.java (original)
+++ incubator/beehive/sandbox/ekoneil/system-controls/src/webservice/org/apache/beehive/controls/system/webservice/generator/ExtensionMaker.java Wed Jul 13 14:07:34 2005
@@ -32,6 +32,7 @@
 import org.apache.beehive.wsm.model.wsdl.XmlBeanWSDLProcessor;
 import org.apache.beehive.wsm.wsdl.Utilities;
 import org.apache.beehive.wsm.wsdl.WSDLParser;
+import org.apache.beehive.wsm.processor2.HackUtils;
 import org.apache.commons.cli.CommandLine;
 import org.apache.commons.cli.CommandLineParser;
 import org.apache.commons.cli.GnuParser;
@@ -123,20 +124,8 @@
 
                 for(BeehiveWsMethodMetadata method : wsm.getMethods()) {
                     jcxWriter.print("public ");
-                    // String returnVal = "Object";
-                    // Class javaType = method.getJavaReturnType();
-                    // if (javaType != null) {
-                    // returnVal = getClassName(javaType);
-                    // }
-                    //
-                    // QName q = method.getXmlReturnType();
-                    // if (q != null) {
-                    // returnVal = Utils.makePackageName(q.getNamespaceURI())
-                    // + q.getLocalPart();
-                    // }
-                    //
-                    // jcxWriter.print(returnVal);
-                    jcxWriter.print(method.getJavaReturnTypeFullName());
+                    /* eko: requires readable type name */
+                    jcxWriter.print(HackUtils.convertToReadableName(method.getJavaReturnType()));
                     jcxWriter.write(' ');
                     jcxWriter.print(method.getWmOperationName());
                     jcxWriter.write('(');
@@ -168,12 +157,10 @@
             outFileName = line.getOptionValue("gen_root");
             wsdlDirName = line.getOptionValue("wsdl");
             if(line.hasOption("wsdl_path_annotation"))
-                wsdlPathAnnotation = line
-                    .getOptionValue("wsdl_path_annotation");
+                wsdlPathAnnotation = line.getOptionValue("wsdl_path_annotation");
 
             if(line.hasOption("pkg"))
                 pkgName = line.getOptionValue("pkg");
-
         }
         catch(ParseException exp) {
             System.err.println("Parsing failed.  Reason: " + exp.getMessage());
@@ -213,7 +200,8 @@
                 pw.print(getHolderForType(param.getJavaType()));
             }
             else {
-                pw.print(param.getJavaTypeFullName());
+                /* eko: requires readable type name */
+                pw.print(HackUtils.convertToReadableName(param.getJavaType()));
             }
             pw.write(' ');
             String paramName = param.getWpName();
@@ -229,16 +217,16 @@
         }
     }
 
-    private String getHolderForType(Class clazz) {
-        if(clazz == int.class) return "javax.xml.rpc.holders.IntHolder";
-        else if(clazz == boolean.class) return "javax.xml.rpc.holders.BooleanHolder";
-        else if(clazz == new byte[0].getClass()) return "javax.xml.rpc.holders.ByteArrayHolder";
-        else if(clazz == byte.class) return "javax.xml.rpc.holders.ByteHolder";
-        else if(clazz == double.class) return "javax.xml.rpc.holders.DoubleHolder";
-        else if(clazz == float.class) return "javax.xml.rpc.holders.FloatHolder";
-        else if(clazz == long.class) return "javax.xml.rpc.holders.FloatHolder";
-        else if(clazz == short.class) return "javax.xml.rpc.holders.ShortHolder";
-        else return "org.apache.beehive.wsm.databinding.GenericHolder<" + clazz.getCanonicalName() + ">";
+    private String getHolderForType(String clazz) {
+        if(clazz == "int") return "javax.xml.rpc.holders.IntHolder";
+        else if(clazz == "boolean") return "javax.xml.rpc.holders.BooleanHolder";
+        else if(clazz == "[B") return "javax.xml.rpc.holders.ByteArrayHolder";
+        else if(clazz == "byte") return "javax.xml.rpc.holders.ByteHolder";
+        else if(clazz == "double") return "javax.xml.rpc.holders.DoubleHolder";
+        else if(clazz == "float") return "javax.xml.rpc.holders.FloatHolder";
+        else if(clazz == "long") return "javax.xml.rpc.holders.FloatHolder";
+        else if(clazz == "short") return "javax.xml.rpc.holders.ShortHolder";
+        else return "org.apache.beehive.wsm.databinding.GenericHolder<" + clazz + ">";
     }
 
     private static Options buildOptions() {

Modified: incubator/beehive/sandbox/ekoneil/system-controls/src/webservice/org/apache/beehive/controls/system/webservice/jaxrpc/ServiceControlImpl.jcs
URL: http://svn.apache.org/viewcvs/incubator/beehive/sandbox/ekoneil/system-controls/src/webservice/org/apache/beehive/controls/system/webservice/jaxrpc/ServiceControlImpl.jcs?rev=216240&r1=216239&r2=216240&view=diff
==============================================================================
--- incubator/beehive/sandbox/ekoneil/system-controls/src/webservice/org/apache/beehive/controls/system/webservice/jaxrpc/ServiceControlImpl.jcs (original)
+++ incubator/beehive/sandbox/ekoneil/system-controls/src/webservice/org/apache/beehive/controls/system/webservice/jaxrpc/ServiceControlImpl.jcs Wed Jul 13 14:07:34 2005
@@ -401,29 +401,32 @@
 
         Type[] genericParamTypes = method.getGenericParameterTypes();
         Class[] paramTypes = method.getParameterTypes();
+        String[] paramTypeNames = new String[paramTypes.length];
         for(int i = 0; i < paramTypes.length; i++) {
             if(Holder.class.isAssignableFrom(paramTypes[i])) {
-                paramTypes[i] = TypeRegistrar.getHoldersValueClass(genericParamTypes[i]);
+                paramTypeNames[i] = TypeRegistrar.getHoldersValueClass(genericParamTypes[i]).getName();
             }
+            else paramTypeNames[i] = paramTypes[i].getName();
         }
-        BeehiveWsMethodMetadata wmm = mWSTM.getMethod(operationName, paramTypes);
+        BeehiveWsMethodMetadata wmm = mWSTM.getMethod(operationName, paramTypeNames);
+
+        /* error handling */
         if(wmm == null) {
             StringBuffer sb = new StringBuffer("No Jsr181MethodMetadata found for " + operationName + '(');
             boolean first = true;
-            for(Class cls : paramTypes) {
+            for(String typeName : paramTypeNames) {
                 if(first) {
                     first = false;
                 }
                 else {
                     sb.append(',');
                 }
-                sb.append(cls.getName());
+                sb.append(typeName);
             }
             sb.append(')');
             throw new ControlException("", new NoSuchMethodException(sb.toString()));
-
         }
-        return wmm;
+        else return wmm;
     }
 
     private synchronized void initialize() {

Modified: incubator/beehive/sandbox/ekoneil/system-controls/test/src/webservice/tests/org/apache/beehive/controls/system/webservice/units/dlwservice/DocLitWrapWebServiceTest.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/sandbox/ekoneil/system-controls/test/src/webservice/tests/org/apache/beehive/controls/system/webservice/units/dlwservice/DocLitWrapWebServiceTest.java?rev=216240&r1=216239&r2=216240&view=diff
==============================================================================
--- incubator/beehive/sandbox/ekoneil/system-controls/test/src/webservice/tests/org/apache/beehive/controls/system/webservice/units/dlwservice/DocLitWrapWebServiceTest.java (original)
+++ incubator/beehive/sandbox/ekoneil/system-controls/test/src/webservice/tests/org/apache/beehive/controls/system/webservice/units/dlwservice/DocLitWrapWebServiceTest.java Wed Jul 13 14:07:34 2005
@@ -53,6 +53,7 @@
         addr.setZip(123456);
 
         web.complex.Address result = client.returnAddressFromBody(addr);
+        System.out.println("=== address: " + result);
 
         assertEquals("Boulder", result.getCity());
         assertEquals("CO", result.getState().getState());
@@ -85,6 +86,7 @@
 
         web.complex.Address result = client.returnAddressFromHeader(addr);
 
+        assertNotNull(result);
         assertEquals("San Jose", result.getCity());
         assertEquals("CA", result.getState().getState());
         assertEquals("Fake Street", result.getStreetName());

Modified: incubator/beehive/sandbox/ekoneil/wsm/src/axis/org/apache/beehive/wsm/axis/AxisHook.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/sandbox/ekoneil/wsm/src/axis/org/apache/beehive/wsm/axis/AxisHook.java?rev=216240&r1=216239&r2=216240&view=diff
==============================================================================
--- incubator/beehive/sandbox/ekoneil/wsm/src/axis/org/apache/beehive/wsm/axis/AxisHook.java (original)
+++ incubator/beehive/sandbox/ekoneil/wsm/src/axis/org/apache/beehive/wsm/axis/AxisHook.java Wed Jul 13 14:07:34 2005
@@ -18,11 +18,13 @@
 import java.io.File;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Method;
+import java.lang.reflect.Array;
 import java.rmi.Remote;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
+import java.util.Arrays;
 import javax.jws.WebParam;
 import javax.jws.soap.SOAPBinding;
 import javax.wsdl.OperationType;
@@ -61,6 +63,7 @@
 import org.apache.beehive.wsm.model.BeehiveWsTypeMetadata;
 import org.apache.beehive.wsm.registration.TypeRegistrar;
 import org.apache.beehive.wsm.util.InvalidTypeMappingException;
+import org.apache.beehive.wsm.processor2.HackUtils;
 import org.apache.commons.logging.LogFactory;
 import org.apache.commons.logging.Log;
 import org.apache.xmlbeans.XmlBeans;
@@ -140,6 +143,7 @@
                         namespace = meth.getWrTargetNamespace();
 
                     od.setReturnQName(new QName(namespace, meth.getWrName()));
+                    /* eko: requires a Java Class */
                     final Class returnType = createClass(meth.getJavaReturnType());
                     QName qn = configureTypeMapping(sd, returnType, meth.getWrTargetNamespace());
                     od.setReturnType(qn);
@@ -150,6 +154,8 @@
                 int pcnt = 0;
                 for(BeehiveWsParameterMetadata param : meth.getParams()) {
                     ParameterDesc pd = od.getParameter(pcnt++);
+
+                    /* eko: requires a Java Class */
                     final Class paramType = createClass(param.getJavaType());
 
                     if(pd.getTypeQName() == null) {
@@ -601,13 +607,7 @@
         if(className == null)
             throw new RuntimeException("Encountered a null class name!");
 
-        try {
-            return Class.forName(className);
-        }
-        catch(ClassNotFoundException e) {
-            /* todo: need a real RuntimeException subclass here */
-            throw new RuntimeException("Could not locate class '" + className + "'");
-        }
+        return HackUtils.convertToClass(className);
     }
 }
 

Modified: incubator/beehive/sandbox/ekoneil/wsm/src/core/org/apache/beehive/wsm/model/BeehiveWsMethodMetadata.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/sandbox/ekoneil/wsm/src/core/org/apache/beehive/wsm/model/BeehiveWsMethodMetadata.java?rev=216240&r1=216239&r2=216240&view=diff
==============================================================================
--- incubator/beehive/sandbox/ekoneil/wsm/src/core/org/apache/beehive/wsm/model/BeehiveWsMethodMetadata.java (original)
+++ incubator/beehive/sandbox/ekoneil/wsm/src/core/org/apache/beehive/wsm/model/BeehiveWsMethodMetadata.java Wed Jul 13 14:07:34 2005
@@ -58,8 +58,6 @@
 
     public abstract String getJavaReturnType();
 
-    public abstract String getJavaReturnTypeFullName();
-
     public abstract QName getXmlReturnType();
 
     public abstract void setXmlReturnType(QName xmlType);

Modified: incubator/beehive/sandbox/ekoneil/wsm/src/core/org/apache/beehive/wsm/model/BeehiveWsParameterMetadata.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/sandbox/ekoneil/wsm/src/core/org/apache/beehive/wsm/model/BeehiveWsParameterMetadata.java?rev=216240&r1=216239&r2=216240&view=diff
==============================================================================
--- incubator/beehive/sandbox/ekoneil/wsm/src/core/org/apache/beehive/wsm/model/BeehiveWsParameterMetadata.java (original)
+++ incubator/beehive/sandbox/ekoneil/wsm/src/core/org/apache/beehive/wsm/model/BeehiveWsParameterMetadata.java Wed Jul 13 14:07:34 2005
@@ -44,9 +44,6 @@
 
     public abstract void setJavaType(String javaType);
 
-    /* todo: this should be moved to web service elementtype later. */
-    public abstract String getJavaTypeFullName(); 
-
     public abstract QName getXmlType();
 
     public abstract void setXmlType(QName xmlType);

Modified: incubator/beehive/sandbox/ekoneil/wsm/src/core/org/apache/beehive/wsm/model/impl/DefaultMethodMetadataImpl.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/sandbox/ekoneil/wsm/src/core/org/apache/beehive/wsm/model/impl/DefaultMethodMetadataImpl.java?rev=216240&r1=216239&r2=216240&view=diff
==============================================================================
--- incubator/beehive/sandbox/ekoneil/wsm/src/core/org/apache/beehive/wsm/model/impl/DefaultMethodMetadataImpl.java (original)
+++ incubator/beehive/sandbox/ekoneil/wsm/src/core/org/apache/beehive/wsm/model/impl/DefaultMethodMetadataImpl.java Wed Jul 13 14:07:34 2005
@@ -24,7 +24,7 @@
 
 import org.apache.beehive.wsm.model.BeehiveWsMethodMetadata;
 import org.apache.beehive.wsm.model.BeehiveWsParameterMetadata;
-import org.apache.beehive.wsm.model.ValidationException;
+import org.apache.beehive.wsm.processor2.HackUtils;
 
 public class DefaultMethodMetadataImpl
     extends BeehiveWsMethodMetadata
@@ -173,17 +173,6 @@
         return true;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.beehive.wsm.jsr181.model.Jsr181MethodMetadata#getJavaReturnTypeFullName()
-     *
-     * NOTE THIS METHOD AND SUPPORTING METHOD SHOULD BE MOVED OUT TO A ELEMENT CLASS
-     * THAT ENCAPSULATES QNAME AND CLASS
-
-     */
-    public String getJavaReturnTypeFullName() {
-        return getJavaReturnType();
-    }
-
     public QName getXmlReturnType() {
         return mXMLReturnType;
     }
@@ -196,9 +185,16 @@
         this.javaReturnType = javaType;
     }
 
-    /*
-     * @see org.apache.beehive.wsm.jsr181.model.BeehiveWsMethodMetadata#findParam(java.lang.String)
+    /* note: this method is called from Velocity code-generation and can't be removed until the
+       appropriate utilities are built for Velocity macros.
      */
+    public final String getJavaReturnTypeFullName() {
+        return HackUtils.convertToReadableName(getJavaReturnType());
+    }
+
+    /*
+    * @see org.apache.beehive.wsm.jsr181.model.BeehiveWsMethodMetadata#findParam(java.lang.String)
+    */
     public BeehiveWsParameterMetadata findParam(String parmName) {
         // walk the list of parameters until the parameter with paramName is found
         // there are small number of parameters, so walking the list should be ok
@@ -213,18 +209,5 @@
             }
         }
         return res;
-    }
-
-    private String getClassName(String cls) {
-        return cls;
-        /* todo: array handling */
-        /*
-        if(cls.isArray()) {
-            return getClassName(cls.getComponentType()) + "[]";
-        }
-        else {
-            return cls.getName().replace('$', '.');
-        }
-        */
     }
 }

Modified: incubator/beehive/sandbox/ekoneil/wsm/src/core/org/apache/beehive/wsm/model/impl/DefaultParameterMetadataImpl.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/sandbox/ekoneil/wsm/src/core/org/apache/beehive/wsm/model/impl/DefaultParameterMetadataImpl.java?rev=216240&r1=216239&r2=216240&view=diff
==============================================================================
--- incubator/beehive/sandbox/ekoneil/wsm/src/core/org/apache/beehive/wsm/model/impl/DefaultParameterMetadataImpl.java (original)
+++ incubator/beehive/sandbox/ekoneil/wsm/src/core/org/apache/beehive/wsm/model/impl/DefaultParameterMetadataImpl.java Wed Jul 13 14:07:34 2005
@@ -21,7 +21,7 @@
 import javax.xml.namespace.QName;
 
 import org.apache.beehive.wsm.model.BeehiveWsParameterMetadata;
-import org.apache.beehive.wsm.model.ValidationException;
+import org.apache.beehive.wsm.processor2.HackUtils;
 
 public class DefaultParameterMetadataImpl
     extends BeehiveWsParameterMetadata
@@ -79,11 +79,8 @@
         this.javaType = javaType;
     }
 
-    /* (non-Javadoc)
-     * @see org.apache.beehive.wsm.jsr181.model.Jsr181ParameterMetadata#getJavaTypeFullName()
-     */
     public String getJavaTypeFullName() {
-        return getClassName(getJavaType());
+        return HackUtils.convertToReadableName(getJavaType());
     }
 
     public QName getXmlType() {
@@ -92,18 +89,5 @@
 
     public void setXmlType(QName xmlType) {
         mXMLType = xmlType;
-    }
-
-    private String getClassName(String cls) {
-        return cls;
-        /* todo: array handling! */
-        /*
-        if(cls.isArray()) {
-            return getClassName(cls.getComponentType()) + "[]";
-        }
-        else {
-            return cls.getName().replace('$', '.');
-        }
-        */
     }
 }

Modified: incubator/beehive/sandbox/ekoneil/wsm/src/core/org/apache/beehive/wsm/model/wsdl/XmlBeanWSDLProcessor.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/sandbox/ekoneil/wsm/src/core/org/apache/beehive/wsm/model/wsdl/XmlBeanWSDLProcessor.java?rev=216240&r1=216239&r2=216240&view=diff
==============================================================================
--- incubator/beehive/sandbox/ekoneil/wsm/src/core/org/apache/beehive/wsm/model/wsdl/XmlBeanWSDLProcessor.java (original)
+++ incubator/beehive/sandbox/ekoneil/wsm/src/core/org/apache/beehive/wsm/model/wsdl/XmlBeanWSDLProcessor.java Wed Jul 13 14:07:34 2005
@@ -176,6 +176,9 @@
 
         BeehiveWsMethodMetadata wmm = new DefaultMethodMetadataImpl();
         wmm.setJavaMethodName(opName);
+
+        System.out.println("========= returnType: " + returnType);
+
         wmm.setReturnType(returnType);
         wmm.setXmlReturnType(returnXMLType);
         wmm.setWmOperationName(opName);

Modified: incubator/beehive/sandbox/ekoneil/wsm/src/core/org/apache/beehive/wsm/processor2/HackUtils.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/sandbox/ekoneil/wsm/src/core/org/apache/beehive/wsm/processor2/HackUtils.java?rev=216240&r1=216239&r2=216240&view=diff
==============================================================================
--- incubator/beehive/sandbox/ekoneil/wsm/src/core/org/apache/beehive/wsm/processor2/HackUtils.java (original)
+++ incubator/beehive/sandbox/ekoneil/wsm/src/core/org/apache/beehive/wsm/processor2/HackUtils.java Wed Jul 13 14:07:34 2005
@@ -16,16 +16,101 @@
  * $Header:$Factory
  */
 package org.apache.beehive.wsm.processor2;
+import java.lang.reflect.Array;
 
 /**
  *
  */
 public class HackUtils {
 
+    /*
+    Need to handle two cases:
+        [B -> String class name
+        [B -> Class
+     */
+
     public static final boolean isArray(String className) {
-        /* todo: could do more error checking here */
-        if(className.startsWith("["))
+        /* todo: this is a really cheezy way of doing this, but it's also pretty cheap for now.  */
+        if(className.startsWith("[") || className.endsWith("[]"))
             return true;
         else return false;
+    }
+
+    /* convert [B -> Class.  This is used during runtime. */
+    public static final Class convertToClass(String className) {
+
+        if(className.equals("byte"))
+            return byte.class;
+        else if(className.equals("boolean"))
+            return boolean.class;
+        else if(className.equals("short"))
+            return short.class;
+        else if(className.equals("int"))
+            return int.class;
+        else if(className.equals("double"))
+            return double.class;
+        else if(className.equals("long"))
+            return long.class;
+        else if(className.equals("char"))
+            return char.class;
+        else if(className.equals("float"))
+            return float.class;
+        else if(className.equals("void"))
+            return void.class;
+        else if(className.equals("long[]"))
+            return Array.newInstance(long.class, 0).getClass();
+        else if(className.equals("float[]"))
+            return Array.newInstance(float.class, 0).getClass();
+        else if(className.equals("int[]"))
+            return Array.newInstance(int.class, 0).getClass();
+        else if(className.equals("short[]"))
+            return Array.newInstance(short.class, 0).getClass();
+        else if(className.equals("byte[]"))
+            return Array.newInstance(byte.class, 0).getClass();
+        else if(className.equals("double[]"))
+            return Array.newInstance(double.class, 0).getClass();
+        else if(className.equals("boolean[]"))
+            return Array.newInstance(boolean.class, 0).getClass();
+        /* todo: smarter array handling */
+        else if(className.endsWith("[]")) {
+            try {
+                Class clazz = Class.forName(className.substring(0, className.length()-2));
+                return Array.newInstance(clazz, 0).getClass();
+            }
+            catch(ClassNotFoundException e) {
+                throw new RuntimeException("Could not locate class '" + className + "'");
+            }
+        }
+        else {
+            try {
+                return Class.forName(className);
+            }
+            catch(ClassNotFoundException e) {
+                /* todo: need a real RuntimeException subclass here */
+                throw new RuntimeException("Could not locate class '" + className + "'");
+            }
+        }
+    }
+
+    /* convert [B -> String.  This is used during code-gen. */
+    public static final String convertToReadableName(String className) {
+        /* todo: error checking */
+        if(className.equals("[B"))
+            return "byte[]";
+        else if(className.equals("[Z"))
+            return "boolean[]";
+        else if(className.equals("[C"))
+            return "char[]";
+        else if(className.equals("[D"))
+            return "double[]";
+        else if(className.equals("[F"))
+            return "float[]";
+        else if(className.equals("[I"))
+            return "int[]";
+        else if(className.equals("[J"))
+            return "long[]";
+        else if(className.equals("[S"))
+            return "short[]";
+        else return className;
     }
 }

Modified: incubator/beehive/sandbox/ekoneil/wsm/src/core/org/apache/beehive/wsm/processor2/model/factory/impl/MirrorFactoryImpl.java
URL: http://svn.apache.org/viewcvs/incubator/beehive/sandbox/ekoneil/wsm/src/core/org/apache/beehive/wsm/processor2/model/factory/impl/MirrorFactoryImpl.java?rev=216240&r1=216239&r2=216240&view=diff
==============================================================================
--- incubator/beehive/sandbox/ekoneil/wsm/src/core/org/apache/beehive/wsm/processor2/model/factory/impl/MirrorFactoryImpl.java (original)
+++ incubator/beehive/sandbox/ekoneil/wsm/src/core/org/apache/beehive/wsm/processor2/model/factory/impl/MirrorFactoryImpl.java Wed Jul 13 14:07:34 2005
@@ -102,7 +102,9 @@
         else wsMetadata.setWsServiceName(ws.serviceName());
 
         /* todo: compute the targetNamespace correctly */
-        wsMetadata.setWsTargetNamespace(ws.targetNamespace());
+        if(ws.targetNamespace() == null || ws.targetNamespace().length() == 0)
+            wsMetadata.setWsTargetNamespace(computeTargetNamespace(typeDecl.getQualifiedName()));
+        else wsMetadata.setWsTargetNamespace(ws.targetNamespace());
 
         /* todo: verify wsdlLocation annotation */
         wsMetadata.setWsWsdlLocation(ws.wsdlLocation());
@@ -223,4 +225,4 @@
         }
         return "http://" + targetNamespace;
     }
-}
+}
\ No newline at end of file