You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by ng...@apache.org on 2008/01/03 20:24:31 UTC

svn commit: r608602 - in /webservices/axis2/trunk/java/modules: jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/ metadata/src/org/apache/axis2/jaxws/description/ metadata/src/org/apache/axis2/jaxws/description/impl/

Author: ngallardo
Date: Thu Jan  3 11:24:30 2008
New Revision: 608602

URL: http://svn.apache.org/viewvc?rev=608602&view=rev
Log:
AXIS2-3402

Flag the client and server configuration when there are nested SwaRef attachments.

Modified:
    webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitBareMethodMarshaller.java
    webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitBareMinimalMethodMarshaller.java
    webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitWrappedMethodMarshaller.java
    webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitWrappedMinimalMethodMarshaller.java
    webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitWrappedPlusMethodMarshaller.java
    webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/RPCLitMethodMarshaller.java
    webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/OperationDescription.java
    webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/impl/DescriptionUtils.java
    webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/impl/OperationDescriptionImpl.java

Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitBareMethodMarshaller.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitBareMethodMarshaller.java?rev=608602&r1=608601&r2=608602&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitBareMethodMarshaller.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitBareMethodMarshaller.java Thu Jan  3 11:24:30 2008
@@ -251,6 +251,11 @@
 
             // Put values onto the message
             MethodMarshallerUtils.toMessage(pvList, m, packages);
+            
+            // Enable SWA for nested SwaRef attachments
+            if (operationDesc.hasResponseSwaRefAttachments()) {
+                m.setDoingSWA(true);
+            }
 
             return m;
         } catch (Exception e) {
@@ -301,6 +306,11 @@
 
             // Put values onto the message
             MethodMarshallerUtils.toMessage(pvList, m, packages);
+            
+            // Enable SWA for nested SwaRef attachments
+            if (operationDesc.hasRequestSwaRefAttachments()) {
+                m.setDoingSWA(true);
+            }
 
             return m;
         } catch (Exception e) {

Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitBareMinimalMethodMarshaller.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitBareMinimalMethodMarshaller.java?rev=608602&r1=608601&r2=608602&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitBareMinimalMethodMarshaller.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitBareMinimalMethodMarshaller.java Thu Jan  3 11:24:30 2008
@@ -283,6 +283,11 @@
 
             // Put values onto the message
             MethodMarshallerUtils.toMessage(pdeList, m, packages);
+            
+            // Enable SWA for nested SwaRef attachments
+            if (operationDesc.hasResponseSwaRefAttachments()) {
+                m.setDoingSWA(true);
+            }
 
             return m;
         } catch (Exception e) {
@@ -343,6 +348,11 @@
 
             // Put values onto the message...marshalling by type
             MethodMarshallerUtils.toMessage(pdeList, m, packages);
+            
+            // Enable SWA for nested SwaRef attachments
+            if (operationDesc.hasRequestSwaRefAttachments()) {
+                m.setDoingSWA(true);
+            }
 
             return m;
         } catch (Exception e) {

Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitWrappedMethodMarshaller.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitWrappedMethodMarshaller.java?rev=608602&r1=608601&r2=608602&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitWrappedMethodMarshaller.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitWrappedMethodMarshaller.java Thu Jan  3 11:24:30 2008
@@ -364,6 +364,11 @@
             if (!marshalDesc.getAnnotationDesc(cls).hasXmlRootElement()) {
                 object = new JAXBElement(wrapperQName, cls, object);
             }
+            
+            // Enable SWA for nested SwaRef attachments
+            if (operationDesc.hasResponseSwaRefAttachments()) {
+                m.setDoingSWA(true);
+            }
 
             // Put the object into the message
             JAXBBlockFactory factory =
@@ -453,6 +458,11 @@
             // Make sure object can be rendered as an element
             if (!marshalDesc.getAnnotationDesc(cls).hasXmlRootElement()) {
                 object = new JAXBElement(wrapperQName, cls, object);
+            }
+            
+            // Enable SWA for nested SwaRef attachments
+            if (operationDesc.hasRequestSwaRefAttachments()) {
+                m.setDoingSWA(true);
             }
 
             // Put the object into the message

Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitWrappedMinimalMethodMarshaller.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitWrappedMinimalMethodMarshaller.java?rev=608602&r1=608601&r2=608602&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitWrappedMinimalMethodMarshaller.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitWrappedMinimalMethodMarshaller.java Thu Jan  3 11:24:30 2008
@@ -134,6 +134,11 @@
 
             // Put values onto the message
             MethodMarshallerUtils.toMessage(pdeList, m, packages);
+            
+            // Enable SWA for nested SwaRef attachments
+            if (operationDesc.hasRequestSwaRefAttachments()) {
+                m.setDoingSWA(true);
+            }
 
             return m;
         } catch (Exception e) {
@@ -328,6 +333,11 @@
             // TODO Should we check for null output body values?  Should we check for null output header values ?
             // Put values onto the message
             MethodMarshallerUtils.toMessage(pdeList, m, packages);
+            
+            // Enable SWA for nested SwaRef attachments
+            if (operationDesc.hasResponseSwaRefAttachments()) {
+                m.setDoingSWA(true);
+            }
 
             return m;
         } catch (Exception e) {

Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitWrappedPlusMethodMarshaller.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitWrappedPlusMethodMarshaller.java?rev=608602&r1=608601&r2=608602&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitWrappedPlusMethodMarshaller.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitWrappedPlusMethodMarshaller.java Thu Jan  3 11:24:30 2008
@@ -557,6 +557,12 @@
                 }
                 MethodMarshallerUtils.toMessage(headerPDEList, m, packages);
             }
+            
+            // Enable SWA for nested SwaRef attachments
+            if (operationDesc.hasResponseSwaRefAttachments()) {
+                m.setDoingSWA(true);
+            }
+            
             return m;
         } catch (Exception e) {
             throw ExceptionFactory.makeWebServiceException(e);
@@ -674,6 +680,12 @@
 
                 MethodMarshallerUtils.toMessage(headerPDEList, m, packages);
             }
+            
+            // Enable SWA for nested SwaRef attachments
+            if (operationDesc.hasRequestSwaRefAttachments()) {
+                m.setDoingSWA(true);
+            }
+            
             return m;
         } catch (Exception e) {
             throw ExceptionFactory.makeWebServiceException(e);

Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/RPCLitMethodMarshaller.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/RPCLitMethodMarshaller.java?rev=608602&r1=608601&r2=608602&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/RPCLitMethodMarshaller.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/RPCLitMethodMarshaller.java Thu Jan  3 11:24:30 2008
@@ -136,6 +136,11 @@
 
             // Put values onto the message
             MethodMarshallerUtils.toMessage(pdeList, m, packages);
+            
+            // Enable SWA for nested SwaRef attachments
+            if (operationDesc.hasRequestSwaRefAttachments()) {
+                m.setDoingSWA(true);
+            }
 
             return m;
         } catch (Exception e) {
@@ -347,6 +352,11 @@
             // TODO Should we check for null output body values?  Should we check for null output header values ?
             // Put values onto the message
             MethodMarshallerUtils.toMessage(pdeList, m, packages);
+            
+            // Enable SWA for nested SwaRef attachments
+            if (operationDesc.hasResponseSwaRefAttachments()) {
+                m.setDoingSWA(true);
+            }
 
             return m;
         } catch (Exception e) {

Modified: webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/OperationDescription.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/OperationDescription.java?rev=608602&r1=608601&r2=608602&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/OperationDescription.java (original)
+++ webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/OperationDescription.java Thu Jan  3 11:24:30 2008
@@ -212,6 +212,11 @@
      * @return OperationDescription corresponding to the sync operation, or null (see note above).
      */
     public OperationDescription getSyncOperation();
+
+    /**
+     * @return Attachment Description for the return type or null
+     */
+    public AttachmentDescription getResultAttachmentDescription();
     
     /**
     * Returns the namespace of binding input message for the operation
@@ -224,7 +229,23 @@
     public String getBindingOutputNamespace();
     
     /**
-    * @return Attachment Description for the return type or null
-    */
-    public AttachmentDescription getResultAttachmentDescription();
+     * @return a boolean indicator of nested swaRef attachments on the request.
+     */
+    public boolean hasRequestSwaRefAttachments();
+    
+    /**
+     * @param sets the indicator of nested request swaRef attachments.
+     */
+    public void setHasRequestSwaRefAttachments(boolean b);
+    
+    /**
+     * @return a boolean indicator of nested swaRef attachments on the response.
+     */
+    public boolean hasResponseSwaRefAttachments();
+    
+    /**
+     * @param sets the indicator of nested response swaRef attachments.
+     */
+    public void setHasResponseSwaRefAttachments(boolean b);
+    
 }

Modified: webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/impl/DescriptionUtils.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/impl/DescriptionUtils.java?rev=608602&r1=608601&r2=608602&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/impl/DescriptionUtils.java (original)
+++ webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/impl/DescriptionUtils.java Thu Jan  3 11:24:30 2008
@@ -417,6 +417,22 @@
                 }
                 return ((SOAP12Header) extObj).getNamespaceURI();
             }
+            else if (extObj instanceof MIMEMultipartRelated) {
+                if (log.isDebugEnabled()) {
+                    log.debug("Found a MIMEMultipartRelated element.  Unwrapping to get SOAP binding.");
+                }
+                MIMEMultipartRelated mime = (MIMEMultipartRelated) extObj;
+                List mimeParts = mime.getMIMEParts();
+                
+                Iterator itr = mimeParts.iterator();
+                while (itr.hasNext()) {
+                    MIMEPart mimePart = (MIMEPart) itr.next();
+                    List elements = mimePart.getExtensibilityElements();
+                    
+                    String ns = getNamespaceFromSOAPElement(elements);
+                    return ns;
+                }
+            }
         }
         return null;
     }
@@ -433,21 +449,17 @@
                 if (bindingOp.getName().equals(opDesc.getName().getLocalPart())) {
                     if (bindingOp.getBindingInput() != null) {
                         if (log.isDebugEnabled()) {
-                            log.debug("Processing binding input");
+                                log.debug("Processing binding opertion input");
                         }
-                        processBindingForMIME(bindingOp.getBindingInput()
-                                                       .getExtensibilityElements(),
-                                              opDesc,
-                                              bindingOp.getOperation());
+                        processBindingForMIME(bindingOp.getBindingInput().getExtensibilityElements(), 
+                            opDesc, bindingOp.getOperation(), true);
                     }
                     if (bindingOp.getBindingOutput() != null) {
                         if (log.isDebugEnabled()) {
                             log.debug("Processing binding output");
                         }
-                        processBindingForMIME(bindingOp.getBindingOutput()
-                                                       .getExtensibilityElements(),
-                                              opDesc,
-                                              bindingOp.getOperation());
+                        processBindingForMIME(bindingOp.getBindingOutput().getExtensibilityElements(), 
+                            opDesc, bindingOp.getOperation(), false);
                     }
                 }
             }
@@ -460,16 +472,24 @@
      * does it will build up the appropriate AttachmentDescription objects.
      */
     private static void processBindingForMIME(List extensibilityElements,
-                                              OperationDescriptionImpl opDesc, Operation operation) {
+                                              OperationDescriptionImpl opDesc, 
+                                              Operation operation,
+                                              boolean isRequest) {
         Iterator extensibilityIter = extensibilityElements.iterator();
         while (extensibilityIter.hasNext()) {
             Object obj = extensibilityIter.next();
             if (obj instanceof MIMEMultipartRelated) {
+                    if (log.isDebugEnabled()) {
+                        log.debug("Found a mime:multipartRelated extensiblity element.");
+                    }
                 // Found mime information now process it and determine if we need to
                 // create an AttachmentDescription
                 MIMEMultipartRelated mime = (MIMEMultipartRelated) obj;
                 Iterator partIter = mime.getMIMEParts().iterator();
                 while (partIter.hasNext()) {
+                        if (log.isDebugEnabled()) {
+                            log.debug("Found a mime:part child element.");
+                        }
                     MIMEPart mimePart = (MIMEPart) partIter.next();
                     Iterator mExtIter = mimePart.getExtensibilityElements().iterator();
                     // Process each mime part to determine if there is mime content
@@ -495,6 +515,19 @@
                                     log.debug("Already created AttachmentDescription for part: "
                                             + part + " of type: " + type);
                                 }
+                            }
+                        }
+                        else if (obj2 instanceof SOAPBody || obj2 instanceof SOAP12Body) {
+                            if (log.isDebugEnabled()) {
+                                log.debug("Found a body element with potential nested mime content");                                    
+                            }
+                            
+                            // Flag whether there's a potential nested attachment.
+                            if (isRequest) {
+                                opDesc.setHasRequestSwaRefAttachments(true);
+                            }
+                            else {
+                                opDesc.setHasResponseSwaRefAttachments(true);
                             }
                         }
                     }

Modified: webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/impl/OperationDescriptionImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/impl/OperationDescriptionImpl.java?rev=608602&r1=608601&r2=608602&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/impl/OperationDescriptionImpl.java (original)
+++ webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/impl/OperationDescriptionImpl.java Thu Jan  3 11:24:30 2008
@@ -182,6 +182,10 @@
     private boolean             _setAttachmentDesc = false;
     private AttachmentDescription attachmentDesc = null;
     
+    private boolean hasRequestSwaRefAttachments = false;
+    private boolean hasResponseSwaRefAttachments = false;
+    private Map<String, AttachmentDescription> partAttachmentMap;
+    
     private Method serviceImplMethod;
     private boolean serviceImplMethodFound = false;
     // For JAX-WS client async methods, this is the corresponding Sync method; for everything else,
@@ -190,8 +194,7 @@
     // RUNTIME INFORMATION
     Map<String, OperationRuntimeDescription> runtimeDescMap =
             Collections.synchronizedMap(new HashMap<String, OperationRuntimeDescription>());
-    private Map<String, AttachmentDescription> partAttachmentMap;
-    
+
     OperationDescriptionImpl(Method method, EndpointInterfaceDescription parent) {
         // TODO: Look for WebMethod anno; get name and action off of it
         parentEndpointInterfaceDescription = parent;
@@ -1951,6 +1954,22 @@
 
     public void addPartAttachmentDescription(String partName, AttachmentDescription attachmentDesc) {
         partAttachmentMap.put(partName, attachmentDesc);
+    }
+    
+    public boolean hasRequestSwaRefAttachments() {
+        return hasRequestSwaRefAttachments;
+    }
+    
+    public void setHasRequestSwaRefAttachments(boolean b) {
+        hasRequestSwaRefAttachments = b;
+    }
+    
+    public boolean hasResponseSwaRefAttachments() {
+        return hasResponseSwaRefAttachments;
+    }
+    
+    public void setHasResponseSwaRefAttachments(boolean b) {
+        hasResponseSwaRefAttachments = b;
     }
             
     public String toString() {



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org