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/04/16 12:57:48 UTC

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

Author: ema
Date: Mon Apr 16 03:57:38 2007
New Revision: 529203

URL: http://svn.apache.org/viewvc?view=rev&rev=529203
Log:
Fixed issue CXF-518: corrected the element Qname referenced by a document bare message part  

Modified:
    incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/JaxWsServiceConfiguration.java
    incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/AbstractServiceConfiguration.java
    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/JaxwsServiceBuilderTest.java

Modified: incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/JaxWsServiceConfiguration.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/JaxWsServiceConfiguration.java?view=diff&rev=529203&r1=529202&r2=529203
==============================================================================
--- incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/JaxWsServiceConfiguration.java (original)
+++ incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/support/JaxWsServiceConfiguration.java Mon Apr 16 03:57:38 2007
@@ -182,6 +182,10 @@
         String tns = mi.getName().getNamespaceURI();
         QName ret = null;
         if (param != null) {
+            /*if (param.targetNamespace().length() > 0) {
+                tns = param.targetNamespace();
+            }*/
+
             String local = param.partName();
             if (local.length() == 0) {
                 local = param.name();
@@ -250,7 +254,7 @@
     }
 
     @Override
-    public QName getOutParameterName(OperationInfo op, Method method, int paramNumber) {
+    public QName getOutParameterName(OperationInfo op, Method method, int paramNumber) {       
         method = getDeclaredMethod(method);
         
         if (paramNumber >= 0) {
@@ -474,7 +478,7 @@
             return webResult != null && webResult.header();
         }
     }
-
+    
     @Override
     public String getStyle() {
         SOAPBinding ann = implInfo.getEndpointClass().getAnnotation(SOAPBinding.class);
@@ -483,5 +487,31 @@
         }
         return "document";
     }
+    
+    
+    
+    @Override
+    public Boolean isRPC(Method method) {
+        SOAPBinding ann = implInfo.getEndpointClass().getAnnotation(SOAPBinding.class);
+        if (ann != null) {
+            return ann.style().equals(SOAPBinding.Style.RPC);
+        }
+        ann = method.getAnnotation(SOAPBinding.class);
+        if (ann != null) {
+            return ann.style().equals(SOAPBinding.Style.RPC);
+        }
+        return Boolean.FALSE;
+    }
+    
+   /* 
+    @Override 
+    public Boolean hasOutMessage(Method method) {
+        Annotation anno = method.getAnnotation(Oneway.class);
+        if (anno != null) {
+            return Boolean.FALSE;
+        }
+        return Boolean.TRUE;
+    }
+    */
     
 }

Modified: incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/AbstractServiceConfiguration.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/AbstractServiceConfiguration.java?view=diff&rev=529203&r1=529202&r2=529203
==============================================================================
--- incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/AbstractServiceConfiguration.java (original)
+++ incubator/cxf/trunk/rt/frontend/simple/src/main/java/org/apache/cxf/service/factory/AbstractServiceConfiguration.java Mon Apr 16 03:57:38 2007
@@ -160,4 +160,8 @@
     public Class getRequestWrapper(Method selected) {
         return null;
     }
+    
+    public Boolean isRPC(Method selected) {
+        return null;
+    }
 }

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=529203&r1=529202&r2=529203
==============================================================================
--- 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 Mon Apr 16 03:57:38 2007
@@ -257,7 +257,6 @@
         InterfaceInfo intf = getInterfaceInfo();
 
         Map<QName, Method> validMethods = new HashMap<QName, Method>();
-        
         for (Method m : methods) {
             if (isValidMethod(m)) {
                 QName opName = getOperationName(intf, m);
@@ -328,7 +327,6 @@
 
     protected OperationInfo createOperation(ServiceInfo serviceInfo, InterfaceInfo intf, Method m) {
         OperationInfo op = intf.addOperation(getOperationName(intf, m));
-
         if (isWrapped(m)) {
             UnwrappedOperationInfo uOp = new UnwrappedOperationInfo(op);
             op.setUnwrappedOperation(uOp);
@@ -444,14 +442,18 @@
         final Class[] paramClasses = method.getParameterTypes();
 
         // Setup the input message
-        MessageInfo inMsg = op.createMessage(getInputMessageName(op, method));        
+        MessageInfo inMsg = op.createMessage(this.getInputMessageName(op, method));        
         op.setInput(inMsg.getName().getLocalPart(), inMsg);
 
         for (int j = 0; j < paramClasses.length; j++) {
             if (isInParam(method, j)) {
-                final QName q = getInParameterName(op, method, j);
+                final QName q = getInParameterName(op, method, j);                
                 final QName q2 = getInPartName(op, method, j);
                 MessagePartInfo part = inMsg.addMessagePart(q2);
+                //if Docoument ,Bare
+                if (!isRPC(method) && !isWrapped(method) && wrappedStyle == null) {
+                    part.setElementQName(q);
+                } 
                 initializeParameter(part, paramClasses[j], method.getGenericParameterTypes()[j]);
                 //TODO - RPC vs DOC (type vs element)
                 if (isHeader(method, j)) {
@@ -461,25 +463,34 @@
                 part.setIndex(j);
             }
         }
-
+        
         if (hasOutMessage(method)) {
             // Setup the output message
-            MessageInfo outMsg = op.createMessage(createOutputMessageName(op, method));
+            MessageInfo  outMsg = op.createMessage(createOutputMessageName(op, method));
             op.setOutput(outMsg.getName().getLocalPart(), outMsg);
-
             final Class<?> returnType = method.getReturnType();
             if (!returnType.isAssignableFrom(void.class)) {
-                final QName q = getOutPartName(op, method, -1);                
+                final QName q = getOutPartName(op, method, -1); 
+                QName q2 = getOutParameterName(op, method, -1);
                 MessagePartInfo part = outMsg.addMessagePart(q);
+                if (!isRPC(method) && !isWrapped(method)) {
+                    part.setElementQName(q2);
+                } 
                 initializeParameter(part, method.getReturnType(), method.getGenericReturnType());
                 part.setIndex(-1);
             }
 
             for (int j = 0; j < paramClasses.length; j++) {
                 if (isOutParam(method, j)) {
+                    if (outMsg == null) {
+                        outMsg = op.createMessage(createOutputMessageName(op, method)); 
+                    }
                     final QName q = getOutPartName(op, method, j);
                     final QName q2 = getOutParameterName(op, method, j);
-                    MessagePartInfo part = outMsg.addMessagePart(q);
+                    MessagePartInfo part = outMsg.addMessagePart(q);               
+                    if (!isRPC(method) && !isWrapped(method) && wrappedStyle == null) {
+                        part.setElementQName(q2);
+                    } 
                     initializeParameter(part, paramClasses[j], method.getGenericParameterTypes()[j]);
                     part.setIndex(j);
                     
@@ -492,11 +503,12 @@
                     }
                 }
             }
+            
         }
 
         initializeFaults(intf, op, method);
     }
-    
+
     protected void createInputWrappedMessageParts(OperationInfo op, Method method, MessageInfo inMsg) {
         MessagePartInfo part = inMsg.addMessagePart(op.getInputName());
         part.setElement(true);
@@ -830,6 +842,7 @@
             if (q != null) {
                 return q;
             }
+            
         }
         throw new IllegalStateException("ServiceConfiguration must provide a value!");
     }
@@ -986,7 +999,8 @@
         }
         return true;
     }
-
+    
+    
     public String getStyle() {
         for (AbstractServiceConfiguration c : serviceConfigurations) {
             String style = c.getStyle();
@@ -995,6 +1009,16 @@
             }
         }
         return "document";
+    }
+    
+    public boolean isRPC(Method method) {
+        for (AbstractServiceConfiguration c : serviceConfigurations) {
+            Boolean b = c.isRPC(method);
+            if (b != null) {
+                return b.booleanValue();
+            }
+        }
+        return true;
     }
 
     public void setWrapped(boolean style) {

Modified: incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/java2wsdl/processor/internal/jaxws/JaxwsServiceBuilderTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/java2wsdl/processor/internal/jaxws/JaxwsServiceBuilderTest.java?view=diff&rev=529203&r1=529202&r2=529203
==============================================================================
--- incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/java2wsdl/processor/internal/jaxws/JaxwsServiceBuilderTest.java (original)
+++ incubator/cxf/trunk/tools/javato/src/test/java/org/apache/cxf/tools/java2wsdl/processor/internal/jaxws/JaxwsServiceBuilderTest.java Mon Apr 16 03:57:38 2007
@@ -101,7 +101,6 @@
 
     // TODO:
     @Test
-    @Ignore
     public void testDocWrapparBare() throws Exception {
 
         builder.setServiceClass(org.apache.hello_world_doc_wrapped_bare.Greeter.class);
@@ -114,7 +113,7 @@
         assertTrue(output.exists());
 
     }
-    
+
     //FIXME: CXF-519, CXF-533
     @Test
     @Ignore
@@ -256,5 +255,5 @@
     private File getOutputFile(String fileName) {
         return new File(output, fileName);
     }
-    
+
 }