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 gd...@apache.org on 2007/03/16 02:44:11 UTC

svn commit: r518829 - in /webservices/axis2/trunk/java/modules: addressing/src/org/apache/axis2/handlers/addressing/ jaxws/src/org/apache/axis2/jaxws/message/attachments/ kernel/src/org/apache/axis2/engine/ kernel/src/org/apache/axis2/i18n/ kernel/test...

Author: gdaniels
Date: Thu Mar 15 18:44:11 2007
New Revision: 518829

URL: http://svn.apache.org/viewvc?view=rev&rev=518829
Log:
* Clean up mustUnderstand check in AxisEngine.  Now use SOAPHeader.getHeadersToProcess() to obtain a list of targeted headers, vastly simplifying the logic in there.  Use SOAPVersion to send back the appropriate MU fault for the active SOAP version.

* Remove deprecated references to old UUIDGenerator.


Modified:
    webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingInHandler.java
    webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/attachments/JAXBAttachmentMarshaller.java
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/AxisEngine.java
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/i18n/resource.properties
    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/engine/MessageContextSaveATest.java
    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/engine/MessageContextSaveBTest.java
    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/engine/MessageContextSaveCTest.java
    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/engine/MessageContextSelfManagedDataTest.java
    webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/engine/OperationContextSaveTest.java

Modified: webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingInHandler.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingInHandler.java?view=diff&rev=518829&r1=518828&r2=518829
==============================================================================
--- webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingInHandler.java (original)
+++ webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingInHandler.java Thu Mar 15 18:44:11 2007
@@ -68,10 +68,7 @@
             return InvocationResponse.CONTINUE;
         }
 
-        SOAPHeader header = null;
-        if (msgContext.isHeaderPresent()) {
-            header = msgContext.getEnvelope().getHeader();
-        }
+        SOAPHeader header = msgContext.getEnvelope().getHeader();
 
         // if there are not headers put a flag to disable addressing temporary
         if (header == null) {

Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/attachments/JAXBAttachmentMarshaller.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/attachments/JAXBAttachmentMarshaller.java?view=diff&rev=518829&r1=518828&r2=518829
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/attachments/JAXBAttachmentMarshaller.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/attachments/JAXBAttachmentMarshaller.java Thu Mar 15 18:44:11 2007
@@ -27,9 +27,9 @@
 import org.apache.axis2.jaxws.i18n.Messages;
 import org.apache.axis2.jaxws.message.Attachment;
 import org.apache.axis2.jaxws.message.Message;
-import org.apache.axis2.util.UUIDGenerator;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.axiom.om.util.UUIDGenerator;
 
 /**
  * An implementation of the JAXB AttachmentMarshaller that is used to 
@@ -39,9 +39,9 @@
 public class JAXBAttachmentMarshaller extends AttachmentMarshaller {
 
     private static final Log log = LogFactory.getLog(JAXBAttachmentMarshaller.class);
-    
+
     private Message message;
-    
+
     public JAXBAttachmentMarshaller() {
         super();
     }
@@ -49,10 +49,10 @@
     public void setMessage(Message msg) {
         message = msg;
     }
-    
+
     @Override
     public boolean isXOPPackage() {
-        
+
         // FIXME: This should really be set based on whether or not the 
         // we want to send MTOM for this message.  In such cases the
         // transport must identify the message as application/xop+xml
@@ -60,30 +60,30 @@
         // FIXME: This should really be set based on whether or not we
         // the SOAP 1.1 or SOAP 1.2 MTOM binding is set.
         boolean value = true;
-        if (log.isDebugEnabled()){ 
+        if (log.isDebugEnabled()){
             log.debug("isXOPPackage returns " + value);
         }
         return value;
     }
 
     @Override
-    public String addMtomAttachment(byte[] data, int offset, int length, 
-            String mimeType, String namespace, String localPart) {
-        
+    public String addMtomAttachment(byte[] data, int offset, int length,
+                                    String mimeType, String namespace, String localPart) {
+
         String cid = UUIDGenerator.getUUID();
-        if (log.isDebugEnabled()){ 
+        if (log.isDebugEnabled()){
             log.debug("Adding MTOM/XOP byte array attachment for element: " + "{" + namespace + "}" + localPart);
             log.debug("   content id=" + cid);
             log.debug("   mimeType  =" + mimeType);
         }
-        
+
         DataHandler dataHandler = null;
         MimeBodyPart mbp = null;
-        
+
         try
         {
-        	//Create mime parts 
-        	InternetHeaders ih = new InternetHeaders();
+            //Create mime parts
+            InternetHeaders ih = new InternetHeaders();
             ih.setHeader(Attachment.CONTENT_TYPE, mimeType);
             ih.setHeader(Attachment.CONTENT_ID, cid);
             mbp = new MimeBodyPart(ih,data);
@@ -91,21 +91,21 @@
         catch(MessagingException me){
             throw ExceptionFactory.makeWebServiceException(Messages.getMessage("mimeBodyPartError"),me);
         }
-        
+
         //Create a data source for the byte array
         MimePartDataSource mpds = new MimePartDataSource(mbp);
-        
+
         dataHandler = new DataHandler(mpds);
         Attachment a = message.createAttachment(dataHandler, cid);
         message.addAttachment(a);
-        
+
         return cid;
     }
 
     @Override
     public String addMtomAttachment(DataHandler data, String namespace, String localPart) {
         String cid = UUIDGenerator.getUUID();
-        if (log.isDebugEnabled()){ 
+        if (log.isDebugEnabled()){
             log.debug("Adding MTOM/XOP datahandler attachment for element: " + "{" + namespace + "}" + localPart);
             log.debug("   content id=" + cid);
             log.debug("   dataHandler  =" + data);
@@ -118,15 +118,15 @@
     @Override
     public String addSwaRefAttachment(DataHandler data) {
         String cid = UUIDGenerator.getUUID();
-        if (log.isDebugEnabled()){ 
+        if (log.isDebugEnabled()){
             log.debug("Adding SWAREF attachment");
             log.debug("   content id=" + cid);
             log.debug("   dataHandler  =" + data);
         }
-        
+
         Attachment a = message.createAttachment(data, cid);
         message.addAttachment(a);
         return cid;
     }
-    
+
 }

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/AxisEngine.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/AxisEngine.java?view=diff&rev=518829&r1=518828&r2=518829
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/AxisEngine.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/AxisEngine.java Thu Mar 15 18:44:11 2007
@@ -22,6 +22,7 @@
 import org.apache.axiom.soap.SOAPConstants;
 import org.apache.axiom.soap.SOAPEnvelope;
 import org.apache.axiom.soap.SOAPHeaderBlock;
+import org.apache.axiom.soap.RolePlayer;
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.client.async.Callback;
 import org.apache.axis2.context.ConfigurationContext;
@@ -38,6 +39,7 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
+import javax.xml.namespace.QName;
 import java.util.ArrayList;
 import java.util.Iterator;
 
@@ -66,69 +68,28 @@
     }
 
     private void checkMustUnderstand(MessageContext msgContext) throws AxisFault {
-
-        if (!msgContext.isHeaderPresent()) {
-            return;
-        }
         SOAPEnvelope envelope = msgContext.getEnvelope();
         if (envelope.getHeader() == null) {
             return;
         }
-        Iterator headerBlocks = envelope.getHeader().examineAllHeaderBlocks();
+
+        // Get all the headers targeted to us
+        Iterator headerBlocks = envelope.getHeader().getHeadersToProcess(null);
+
         while (headerBlocks.hasNext()) {
             SOAPHeaderBlock headerBlock = (SOAPHeaderBlock) headerBlocks.next();
+
             // if this header block has been processed or mustUnderstand isn't
             // turned on then its cool
             if (headerBlock.isProcessed() || !headerBlock.getMustUnderstand()) {
                 continue;
             }
-            // if this header block is not targetted to me then its not my
-            // problem. Currently this code only supports the "next" role; we
-            // need to fix this to allow the engine/service to be in one or more
-            // additional roles and then to check that any headers targetted for
-            // that role too have been dealt with.
-
-            String role = headerBlock.getRole();
-
-            String prefix = envelope.getNamespace().getPrefix();
-
-            if (!msgContext.isSOAP11()) {
-
-                // if must understand and soap 1.2 the Role should be NEXT , if it is null we consider
-                // it to be NEXT
-                if (prefix == null || "".equals(prefix)) {
-                    prefix = SOAPConstants.SOAP_DEFAULT_NAMESPACE_PREFIX;
-                }
-                if (role != null) {
-                    if (!SOAP12Constants.SOAP_ROLE_NEXT.equals(role)) {
-                        // TODO: should we be using a prefix on the faultcode?  What about
-                        // the QName object Constants.FAULT_SOAP12_MUSTUNDERSTAND?
-                        throw new AxisFault(Messages.getMessage(
-                                "mustunderstandfailed",
-                                prefix, SOAP12Constants.FAULT_CODE_MUST_UNDERSTAND),
-                                            SOAP12Constants.FAULT_CODE_MUST_UNDERSTAND);
-                    }
-                } else {
-                    // TODO: should we be using a prefix on the faultcode?  What about
-                    // the QName object Constants.FAULT_SOAP12_MUSTUNDERSTAND?
-                    throw new AxisFault(Messages.getMessage(
-                            "mustunderstandfailed",
-                            prefix, SOAP12Constants.FAULT_CODE_MUST_UNDERSTAND),
-                                        SOAP12Constants.FAULT_CODE_MUST_UNDERSTAND);
-                }
-            } else {
-
-                // if must understand and soap 1.1 the actor should be NEXT , if it is null we considerr
-                // it to be NEXT
-                if ((role != null) && !SOAP11Constants.SOAP_ACTOR_NEXT.equals(role)) {
-                    // TODO: should we be using a prefix on the faultcode?  What about
-                    // the QName object Constants.FAULT_MUSTUNDERSTAND?
-                    throw new AxisFault(Messages.getMessage(
-                            "mustunderstandfailed",
-                            prefix, SOAP11Constants.FAULT_CODE_MUST_UNDERSTAND),
-                                        SOAP11Constants.FAULT_CODE_MUST_UNDERSTAND);
-                }
-            }
+
+            // Oops, throw an appropriate MustUnderstand fault!!
+            QName faultQName = headerBlock.getVersion().getMustUnderstandFaultCode();
+            throw new AxisFault(Messages.getMessage("mustunderstandfailed",
+                                                    headerBlock.getNamespace().getNamespaceURI(),
+                                                    headerBlock.getLocalName()), faultQName);
         }
     }
 

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/i18n/resource.properties
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/i18n/resource.properties?view=diff&rev=518829&r1=518828&r2=518829
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/i18n/resource.properties (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/i18n/resource.properties Thu Mar 15 18:44:11 2007
@@ -230,7 +230,7 @@
 serviceinactive=The system is attempting to access an inactive service: {0}
 servicenamenotvalid=The {0} service name in not valid.
 enginestarted=The Axis engine started.
-mustunderstandfailed=Must Understand check failed {0} : {1}
+mustunderstandfailed=Must Understand check failed for header {0} : {1}
 receivederrormessage=The system received an error message with the {0} ID. 
 servicenotfoundforepr=Service not found for the endpoint reference (EPR) {0}
 operationnotfoundforepr=The endpoint reference (EPR) for the Operation not found is {0} and the WSA Action = {1}

Modified: webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/engine/MessageContextSaveATest.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/engine/MessageContextSaveATest.java?view=diff&rev=518829&r1=518828&r2=518829
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/engine/MessageContextSaveATest.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/engine/MessageContextSaveATest.java Thu Mar 15 18:44:11 2007
@@ -18,6 +18,7 @@
 
 import junit.framework.TestCase;
 import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.util.UUIDGenerator;
 import org.apache.axiom.soap.SOAPFactory;
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.addressing.EndpointReference;
@@ -41,7 +42,6 @@
 import org.apache.axis2.transport.http.CommonsHTTPTransportSender;
 import org.apache.axis2.transport.http.SimpleHTTPServer;
 import org.apache.axis2.util.ObjectStateUtils;
-import org.apache.axis2.util.UUIDGenerator;
 import org.apache.axis2.wsdl.WSDLConstants;
 
 import javax.xml.namespace.QName;

Modified: webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/engine/MessageContextSaveBTest.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/engine/MessageContextSaveBTest.java?view=diff&rev=518829&r1=518828&r2=518829
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/engine/MessageContextSaveBTest.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/engine/MessageContextSaveBTest.java Thu Mar 15 18:44:11 2007
@@ -18,6 +18,7 @@
 
 import junit.framework.TestCase;
 import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.util.UUIDGenerator;
 import org.apache.axiom.soap.SOAPFactory;
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.addressing.EndpointReference;
@@ -41,7 +42,6 @@
 import org.apache.axis2.transport.http.CommonsHTTPTransportSender;
 import org.apache.axis2.transport.http.SimpleHTTPServer;
 import org.apache.axis2.util.ObjectStateUtils;
-import org.apache.axis2.util.UUIDGenerator;
 import org.apache.axis2.wsdl.WSDLConstants;
 
 import javax.xml.namespace.QName;

Modified: webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/engine/MessageContextSaveCTest.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/engine/MessageContextSaveCTest.java?view=diff&rev=518829&r1=518828&r2=518829
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/engine/MessageContextSaveCTest.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/engine/MessageContextSaveCTest.java Thu Mar 15 18:44:11 2007
@@ -18,6 +18,7 @@
 
 import junit.framework.TestCase;
 import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.util.UUIDGenerator;
 import org.apache.axiom.soap.SOAPFactory;
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.addressing.EndpointReference;
@@ -41,7 +42,6 @@
 import org.apache.axis2.transport.http.CommonsHTTPTransportSender;
 import org.apache.axis2.transport.http.SimpleHTTPServer;
 import org.apache.axis2.util.MetaDataEntry;
-import org.apache.axis2.util.UUIDGenerator;
 import org.apache.axis2.wsdl.WSDLConstants;
 
 import javax.xml.namespace.QName;

Modified: webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/engine/MessageContextSelfManagedDataTest.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/engine/MessageContextSelfManagedDataTest.java?view=diff&rev=518829&r1=518828&r2=518829
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/engine/MessageContextSelfManagedDataTest.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/engine/MessageContextSelfManagedDataTest.java Thu Mar 15 18:44:11 2007
@@ -18,6 +18,7 @@
 
 import junit.framework.TestCase;
 import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.util.UUIDGenerator;
 import org.apache.axiom.soap.SOAPFactory;
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.addressing.EndpointReference;
@@ -40,7 +41,6 @@
 import org.apache.axis2.receivers.RawXMLINOutMessageReceiver;
 import org.apache.axis2.transport.http.CommonsHTTPTransportSender;
 import org.apache.axis2.transport.http.SimpleHTTPServer;
-import org.apache.axis2.util.UUIDGenerator;
 
 import javax.xml.namespace.QName;
 import java.io.ByteArrayInputStream;

Modified: webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/engine/OperationContextSaveTest.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/engine/OperationContextSaveTest.java?view=diff&rev=518829&r1=518828&r2=518829
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/engine/OperationContextSaveTest.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/test/org/apache/axis2/engine/OperationContextSaveTest.java Thu Mar 15 18:44:11 2007
@@ -18,6 +18,7 @@
 
 import junit.framework.TestCase;
 import org.apache.axiom.om.OMAbstractFactory;
+import org.apache.axiom.om.util.UUIDGenerator;
 import org.apache.axiom.soap.SOAPFactory;
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.addressing.EndpointReference;
@@ -38,7 +39,6 @@
 import org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver;
 import org.apache.axis2.receivers.RawXMLINOutMessageReceiver;
 import org.apache.axis2.transport.http.CommonsHTTPTransportSender;
-import org.apache.axis2.util.UUIDGenerator;
 
 import javax.xml.namespace.QName;
 import java.io.File;



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