You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by em...@apache.org on 2007/05/18 12:58:20 UTC

svn commit: r539379 - in /incubator/cxf/trunk: rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ tools/javato/src/test/java/org/apache/cxf/tools/java2wsdl/processor/internal/jaxws/expected/

Author: ema
Date: Fri May 18 03:58:19 2007
New Revision: 539379

URL: http://svn.apache.org/viewvc?view=rev&rev=539379
Log:
Fixed issue CXF-564

Modified:
    incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java
    incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/java2wsdl/processor/internal/jaxws/expected/expected_holder.wsdl

Modified: incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java?view=diff&rev=539379&r1=539378&r2=539379
==============================================================================
--- incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java (original)
+++ incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/ReflectionServiceFactoryBean.java Fri May 18 03:58:19 2007
@@ -402,6 +402,16 @@
                         createWrappedSchema(serviceInfo, op.getInput(),
                                             op.getUnwrappedOperation().getInput(), wraperBeanName);
                     }
+                    
+                    for (MessagePartInfo mpi : op.getInput().getMessageParts()) {
+                        if (Boolean.TRUE.equals(mpi.getProperty(HEADER))) {
+                            QName qn = (QName)mpi.getProperty(ELEMENT_NAME);
+                            mpi.setElement(true);
+                            mpi.setElementQName(qn);
+                        }
+                    }
+                    
+                  
                 }
                 if (op.hasOutput()) {
                     QName wraperBeanName = op.getOutput().getMessageParts().get(0).getElementQName();
@@ -416,6 +426,14 @@
                         createWrappedSchema(serviceInfo, op.getOutput(), op.getUnwrappedOperation()
                             .getOutput(), wraperBeanName);
                     }
+                    
+                    for (MessagePartInfo mpi : op.getOutput().getMessageParts()) {
+                        if (Boolean.TRUE.equals(mpi.getProperty(HEADER))) {
+                            QName qn = (QName)mpi.getProperty(ELEMENT_NAME);
+                            mpi.setElement(true);
+                            mpi.setElementQName(qn);
+                        }
+                    }
                 }
             }
         }
@@ -603,6 +621,22 @@
 
     }
     
+    private boolean isExistSchemaElement(XmlSchema schema, QName qn) {
+        boolean isExist = false;
+        for (Iterator ite = schema.getItems().getIterator(); ite.hasNext();) {
+            XmlSchemaObject obj = (XmlSchemaObject)ite.next();
+            if (obj instanceof XmlSchemaElement) {
+                XmlSchemaElement xsEle = (XmlSchemaElement)obj;
+                if (xsEle.getQName().equals(qn)) {
+                    isExist = true;
+                    break;
+                }
+            }
+        }
+        return isExist;
+    }
+    
+    
     private void createWrappedMessageSchema(AbstractMessageContainer wrappedMessage,
                                             AbstractMessageContainer unwrappedMessage, XmlSchema schema,
                                             QName wrapperName) {
@@ -623,11 +657,16 @@
         ct.setParticle(seq);
 
         for (MessagePartInfo mpi : unwrappedMessage.getMessageParts()) {
-            if (!Boolean.TRUE.equals(mpi.getProperty(HEADER))) {
-                el = new XmlSchemaElement();
-                el.setName(mpi.getName().getLocalPart());
-                el.setQName(mpi.getName());
 
+            el = new XmlSchemaElement();
+            el.setName(mpi.getName().getLocalPart());
+            el.setQName(mpi.getName());
+            if (mpi.isElement()) {
+                el.setRefName(mpi.getElementQName());
+            } else {
+                el.setSchemaTypeName(mpi.getTypeQName());
+            }
+            if (!Boolean.TRUE.equals(mpi.getProperty(HEADER))) {
                 if (mpi.getTypeClass() != null && mpi.getTypeClass().isArray()
                     && !Byte.TYPE.equals(mpi.getTypeClass().getComponentType())) {
                     el.setMinOccurs(0);
@@ -638,13 +677,18 @@
                         el.setMinOccurs(0);
                     }
                 }
+                seq.getItems().add(el);
+            }
+            if (Boolean.TRUE.equals(mpi.getProperty(HEADER))) {
 
-                if (mpi.isElement()) {
-                    el.setRefName(mpi.getElementQName());
-                } else {
-                    el.setSchemaTypeName(mpi.getTypeQName());
+                QName qn = (QName)mpi.getProperty(ELEMENT_NAME);
+
+                el.setName(qn.getLocalPart());
+                el.setQName(qn);
+
+                if (!isExistSchemaElement(schema, qn)) {
+                    schema.getItems().add(el);
                 }
-                seq.getItems().add(el);
             }
         }
     }
@@ -667,7 +711,8 @@
                 }
 
                 if (isHeader(method, j)) {
-                    part.setElementQName(q);
+                    //part.setElementQName(q);
+                    part.setProperty(ELEMENT_NAME, q);
                     part.setProperty(HEADER, Boolean.TRUE);
                 }
                 part.setIndex(j);
@@ -718,7 +763,8 @@
                         part.setProperty(MODE_INOUT, Boolean.TRUE);
                     }
                     if (isHeader(method, j)) {
-                        part.setElementQName(q2);
+                        //part.setElementQName(q2);
+                        part.setProperty(ELEMENT_NAME, q2);
                         part.setProperty(HEADER, Boolean.TRUE);
                     }
                 }
@@ -767,8 +813,8 @@
         }
     }
 
-    protected void createOutputWrappedMessageParts(OperationInfo op, Method method, MessageInfo inMsg) {
-        MessagePartInfo part = inMsg.addMessagePart("parameters");
+    protected void createOutputWrappedMessageParts(OperationInfo op, Method method, MessageInfo outMsg) {
+        MessagePartInfo part = outMsg.addMessagePart("parameters");
         part.setElement(true);
         part.setIndex(-1);
         for (Iterator itr = serviceConfigurations.iterator(); itr.hasNext();) {
@@ -780,7 +826,7 @@
         }
 
         if (part.getElementQName() == null) {
-            part.setElementQName(inMsg.getName());
+            part.setElementQName(outMsg.getName());
         } else if (!part.getElementQName().equals(op.getOutput().getName())) {
             op.getOutput().setName(part.getElementQName());
         }
@@ -789,6 +835,14 @@
             part.setTypeClass(this.getResponseWrapper(method));
         } else if (getResponseWrapperClassName(method) != null) {
             part.setProperty("RESPONSE.WRAPPER.CLASSNAME", getResponseWrapperClassName(method));
+        }
+        
+        for (MessagePartInfo mpart : op.getOutput().getMessageParts()) {
+            if (Boolean.TRUE.equals(mpart.getProperty(HEADER))) {
+                int idx = mpart.getIndex();
+                outMsg.addMessagePart(mpart);
+                mpart.setIndex(idx);
+            }
         }
     }
 

Modified: incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/java2wsdl/processor/internal/jaxws/expected/expected_holder.wsdl
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/java2wsdl/processor/internal/jaxws/expected/expected_holder.wsdl?view=diff&rev=539379&r1=539378&r2=539379
==============================================================================
--- incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/java2wsdl/processor/internal/jaxws/expected/expected_holder.wsdl (original)
+++ incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/java2wsdl/processor/internal/jaxws/expected/expected_holder.wsdl Fri May 18 03:58:19 2007
@@ -40,6 +40,7 @@
 <xsd:element minOccurs="0" name="arg1" type="xsd:string"/>
 </xsd:sequence>
 </xsd:complexType>
+<xsd:element name="header" type="xsd:string"/>
 <xsd:element name="echo3Response" type="echo3Response"/>
 <xsd:complexType name="echo3Response">
 <xsd:sequence>
@@ -68,6 +69,8 @@
   </wsdl:message>
   <wsdl:message name="echo3Response">
     <wsdl:part name="parameters" element="ns1:echo3Response">
+    </wsdl:part>
+    <wsdl:part name="header" element="ns1:header">
     </wsdl:part>
   </wsdl:message>
   <wsdl:message name="echo2">