You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2007/11/02 20:31:32 UTC

svn commit: r591431 - in /incubator/cxf/trunk: distribution/ distribution/manifest/ rt/databinding/jaxb/src/main/java/org/apache/cxf/endpoint/dynamic/

Author: dkulp
Date: Fri Nov  2 12:31:28 2007
New Revision: 591431

URL: http://svn.apache.org/viewvc?rev=591431&view=rev
Log:
[CXF-1222]Try to find inner classes for the wrapper types
Add ant jar to lib so dynamic client will work

Modified:
    incubator/cxf/trunk/distribution/manifest/pom.xml
    incubator/cxf/trunk/distribution/pom.xml
    incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/endpoint/dynamic/DynamicClientFactory.java
    incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/endpoint/dynamic/TypeClassInitializer.java

Modified: incubator/cxf/trunk/distribution/manifest/pom.xml
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/distribution/manifest/pom.xml?rev=591431&r1=591430&r2=591431&view=diff
==============================================================================
--- incubator/cxf/trunk/distribution/manifest/pom.xml (original)
+++ incubator/cxf/trunk/distribution/manifest/pom.xml Fri Nov  2 12:31:28 2007
@@ -236,7 +236,13 @@
         <dependency>
             <groupId>commons-httpclient</groupId>
             <artifactId>commons-httpclient</artifactId>
-        </dependency>        
+        </dependency>    
+
+        <dependency>
+            <groupId>ant</groupId>
+            <artifactId>ant</artifactId>
+        </dependency>
+
     </dependencies>
 
     <build>

Modified: incubator/cxf/trunk/distribution/pom.xml
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/distribution/pom.xml?rev=591431&r1=591430&r2=591431&view=diff
==============================================================================
--- incubator/cxf/trunk/distribution/pom.xml (original)
+++ incubator/cxf/trunk/distribution/pom.xml Fri Nov  2 12:31:28 2007
@@ -247,6 +247,10 @@
             <groupId>commons-logging</groupId>
             <artifactId>commons-logging</artifactId>
         </dependency>
+        <dependency>
+            <groupId>ant</groupId>
+            <artifactId>ant</artifactId>
+        </dependency>
     </dependencies>
 
     <build>

Modified: incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/endpoint/dynamic/DynamicClientFactory.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/endpoint/dynamic/DynamicClientFactory.java?rev=591431&r1=591430&r2=591431&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/endpoint/dynamic/DynamicClientFactory.java (original)
+++ incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/endpoint/dynamic/DynamicClientFactory.java Fri Nov  2 12:31:28 2007
@@ -312,7 +312,6 @@
         try {
             int i = Integer.valueOf(minor);
             if (i >= 1) {
-                System.out.println("Found JAXB 2.1");
                 return true;
             }
         } catch (NumberFormatException e) {

Modified: incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/endpoint/dynamic/TypeClassInitializer.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/endpoint/dynamic/TypeClassInitializer.java?rev=591431&r1=591430&r2=591431&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/endpoint/dynamic/TypeClassInitializer.java (original)
+++ incubator/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/endpoint/dynamic/TypeClassInitializer.java Fri Nov  2 12:31:28 2007
@@ -23,6 +23,7 @@
 
 import javax.xml.namespace.QName;
 
+import com.sun.codemodel.JDefinedClass;
 import com.sun.codemodel.JType;
 import com.sun.tools.xjc.api.Mapping;
 import com.sun.tools.xjc.api.S2JJAXBModel;
@@ -37,6 +38,8 @@
 import org.apache.cxf.service.model.MessagePartInfo;
 import org.apache.cxf.service.model.OperationInfo;
 import org.apache.cxf.service.model.ServiceInfo;
+import org.apache.cxf.service.model.UnwrappedOperationInfo;
+import org.apache.ws.commons.schema.XmlSchemaElement;
 
 public class TypeClassInitializer extends ServiceModelVisitor {
     private static final Logger LOG = LogUtils.getL7dLogger(TypeClassInitializer.class);
@@ -66,9 +69,7 @@
         //String clsName = null;
         JType jType = null;
         if (mapping != null) {
-            
             jType = mapping.getType().getTypeClass();              
-            
         }
         
         if (jType == null) {
@@ -77,6 +78,32 @@
                 jType = typeAndAnnotation.getTypeClass();
             }
         }
+        if (jType == null 
+            && part.isElement()
+            && part.getXmlSchema() instanceof XmlSchemaElement
+            && ((XmlSchemaElement)part.getXmlSchema()).getSchemaTypeName() == null) {
+            //anonymous inner thing.....
+            UnwrappedOperationInfo oInfo = (UnwrappedOperationInfo)op;
+            op = oInfo.getWrappedOperation();
+            
+            if (part.getMessageInfo() == oInfo.getInput()) {
+                mapping = model.get(op.getInput().getMessagePart(0).getElementQName());
+            } else {
+                mapping = model.get(op.getOutput().getMessagePart(0).getElementQName());
+            }
+            if (mapping != null) {
+                jType = mapping.getType().getTypeClass();  
+                if (jType instanceof JDefinedClass) {
+                    JDefinedClass jdType = (JDefinedClass)jType;
+                    for (JType jt : jdType.listClasses()) {
+                        if (jt.name().equalsIgnoreCase(part.getElementQName().getLocalPart())) {
+                            jType = jt;
+                        }
+                    }
+                }
+            }
+            
+        }
         
         if (jType == null) {
             throw new ServiceConstructionException(new Message("NO_JAXB_CLASS", LOG, name));
@@ -116,7 +143,7 @@
         Class cls;
         
         if (!jType.isPrimitive()) {
-            cls = ClassLoaderUtils.loadClass(jType.fullName(), getClass());
+            cls = ClassLoaderUtils.loadClass(jType.binaryName(), getClass());
         } else {
             cls = PrimitiveUtils.getClass(jType.fullName());
         }