Author: djencks
Date: Tue Mar 29 13:46:33 2005
New Revision: 159430

URL: http://svn.apache.org/viewcvs?view=rev&rev=159430
Log:
map all simple types for exception constructors

Modified:
    
geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/HeavyweightOperationDescBuilder.java

Modified: 
geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/HeavyweightOperationDescBuilder.java
URL: 
http://svn.apache.org/viewcvs/geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/HeavyweightOperationDescBuilder.java?view=diff&r1=159429&r2=159430
==============================================================================
--- 
geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/HeavyweightOperationDescBuilder.java
 (original)
+++ 
geronimo/trunk/modules/axis-builder/src/java/org/apache/geronimo/axis/builder/HeavyweightOperationDescBuilder.java
 Tue Mar 29 13:46:33 2005
@@ -19,9 +19,33 @@
 import java.lang.String;
 import java.lang.reflect.Method;
 import java.util.*;
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.net.URI;
 import javax.wsdl.*;
 import javax.wsdl.extensions.soap.SOAPBody;
 import javax.xml.namespace.QName;
+import javax.xml.rpc.holders.BigDecimalHolder;
+import javax.xml.rpc.holders.BigIntegerHolder;
+import javax.xml.rpc.holders.BooleanHolder;
+import javax.xml.rpc.holders.BooleanWrapperHolder;
+import javax.xml.rpc.holders.ByteArrayHolder;
+import javax.xml.rpc.holders.ByteHolder;
+import javax.xml.rpc.holders.ByteWrapperHolder;
+import javax.xml.rpc.holders.CalendarHolder;
+import javax.xml.rpc.holders.DoubleHolder;
+import javax.xml.rpc.holders.DoubleWrapperHolder;
+import javax.xml.rpc.holders.FloatHolder;
+import javax.xml.rpc.holders.FloatWrapperHolder;
+import javax.xml.rpc.holders.IntHolder;
+import javax.xml.rpc.holders.IntegerWrapperHolder;
+import javax.xml.rpc.holders.LongHolder;
+import javax.xml.rpc.holders.LongWrapperHolder;
+import javax.xml.rpc.holders.ObjectHolder;
+import javax.xml.rpc.holders.QNameHolder;
+import javax.xml.rpc.holders.ShortHolder;
+import javax.xml.rpc.holders.ShortWrapperHolder;
+import javax.xml.rpc.holders.StringHolder;
 
 import org.apache.axis.constants.Style;
 import org.apache.axis.constants.Use;
@@ -185,6 +209,34 @@
         return operationDesc;
     }
 
+    //see jaxrpc 1.1 4.2.1
+    private static final Map qnameToClassMap = new HashMap();
+
+    static {
+        qnameToClassMap.put(new QName("http://www.w3.org/2001/XMLSchema";, 
"string"), String.class);
+        qnameToClassMap.put(new QName("http://www.w3.org/2001/XMLSchema";, 
"integer"), BigInteger.class);
+        qnameToClassMap.put(new QName("http://www.w3.org/2001/XMLSchema";, 
"int"), int.class);
+        qnameToClassMap.put(new QName("http://www.w3.org/2001/XMLSchema";, 
"long"), long.class);
+        qnameToClassMap.put(new QName("http://www.w3.org/2001/XMLSchema";, 
"short"), short.class);
+        qnameToClassMap.put(new QName("http://www.w3.org/2001/XMLSchema";, 
"decimal"), BigDecimal.class);
+        qnameToClassMap.put(new QName("http://www.w3.org/2001/XMLSchema";, 
"float"), float.class);
+        qnameToClassMap.put(new QName("http://www.w3.org/2001/XMLSchema";, 
"double"), double.class);
+        qnameToClassMap.put(new QName("http://www.w3.org/2001/XMLSchema";, 
"boolean"), boolean.class);
+        qnameToClassMap.put(new QName("http://www.w3.org/2001/XMLSchema";, 
"byte"), byte.class);
+        qnameToClassMap.put(new QName("http://www.w3.org/2001/XMLSchema";, 
"unsignedInt"), long.class);
+        qnameToClassMap.put(new QName("http://www.w3.org/2001/XMLSchema";, 
"unsignedShort"), int.class);
+        qnameToClassMap.put(new QName("http://www.w3.org/2001/XMLSchema";, 
"unsignedByte"), short.class);
+        qnameToClassMap.put(new QName("http://www.w3.org/2001/XMLSchema";, 
"QName"), QName.class);
+        qnameToClassMap.put(new QName("http://www.w3.org/2001/XMLSchema";, 
"dateTime"), Calendar.class);
+        qnameToClassMap.put(new QName("http://www.w3.org/2001/XMLSchema";, 
"date"), Calendar.class);
+        qnameToClassMap.put(new QName("http://www.w3.org/2001/XMLSchema";, 
"time"), Calendar.class);
+        qnameToClassMap.put(new QName("http://www.w3.org/2001/XMLSchema";, 
"anyURI"), URI.class);
+        qnameToClassMap.put(new QName("http://www.w3.org/2001/XMLSchema";, 
"base64Binary"), byte[].class);
+        qnameToClassMap.put(new QName("http://www.w3.org/2001/XMLSchema";, 
"hexBinary"), byte[].class);
+        qnameToClassMap.put(new QName("http://www.w3.org/2001/XMLSchema";, 
"anySimpleType"), String.class);
+    }
+
+
     private FaultDesc mapException(String faultName, Fault fault) throws 
DeploymentException {
         Message message = fault.getMessage();
         QName messageQName = message.getQName();
@@ -234,23 +286,19 @@
             for (int i = 0; i < 
constructorParameterOrder.getElementNameArray().length; i++) {
                 String elementName = 
constructorParameterOrder.getElementNameArray(i).getStringValue().trim();
                 QName elementType = (QName) elementMap.get(elementName);
-                String javaElementTypeName;
+                Class javaElementType;
                 if (complexTypeMap.containsKey(elementType)) {
                     String packageName = 
WSDescriptorParser.getPackageFromNamespace(elementType.getNamespaceURI(), 
mapping);
-                    javaElementTypeName = packageName + "." + 
elementType.getLocalPart();
-                } else {
-                    //TODO finish this
-                    if (elementType.getLocalPart().equals("String")) {
-                        javaElementTypeName = String.class.getName();
-                    } else {
-                        throw new DeploymentException("most simple exception 
constructor types not yet implemented");
+                    String javaElementTypeName = packageName + "." + 
elementType.getLocalPart();
+                    try {
+                        javaElementType = 
ClassLoading.loadClass(javaElementTypeName, classLoader);
+                    } catch (ClassNotFoundException e) {
+                        throw new DeploymentException("Could not load 
exception constructor parameter", e);
                     }
-                }
-                Class javaElementType;
-                try {
-                    javaElementType = 
ClassLoading.loadClass(javaElementTypeName, classLoader);
-                } catch (ClassNotFoundException e) {
-                    throw new DeploymentException("Could not load exception 
constructor parameter", e);
+                } else if (qnameToClassMap.containsKey(elementType)){
+                    javaElementType = (Class) qnameToClassMap.get(elementType);
+                } else {
+                    throw new DeploymentException("Unknown type: " +  
elementType);
                 }
                 //todo faultTypeQName is speculative
                 //todo outheader might be true!


Reply via email to