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 pr...@apache.org on 2008/03/11 11:58:48 UTC

svn commit: r635880 - in /webservices/axis2/trunk/java/modules/addressing: src/org/apache/axis2/addressing/ src/org/apache/axis2/handlers/addressing/ test/org/apache/axis2/addressing/

Author: pradine
Date: Tue Mar 11 03:58:34 2008
New Revision: 635880

URL: http://svn.apache.org/viewvc?rev=635880&view=rev
Log:
Done some work to the AddressingInHandler to add support for another
WS-Addressing spec defined fault. Also removed some redundant code to
do with roles.

Modified:
    webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/addressing/AddressingFaultsHelper.java
    webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingInHandler.java
    webservices/axis2/trunk/java/modules/addressing/test/org/apache/axis2/addressing/AddressingFaultsTest.java

Modified: webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/addressing/AddressingFaultsHelper.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/addressing/AddressingFaultsHelper.java?rev=635880&r1=635879&r2=635880&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/addressing/AddressingFaultsHelper.java (original)
+++ webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/addressing/AddressingFaultsHelper.java Tue Mar 11 03:58:34 2008
@@ -135,6 +135,29 @@
     //    wsa:InvalidAddressingHeader [Reason] the string: "A header representing a Message Addressing Property is not valid and the message cannot be processed"
     //      wsa:InvalidAddress
     //      wsa:InvalidEPR
+    public static void triggerInvalidEPRFault(MessageContext messageContext,
+            String incorrectHeaderName)
+    throws AxisFault {
+        log.warn("triggerInvalidEPRFault: messageContext: " + messageContext +
+                " incorrectHeaderName: " + incorrectHeaderName);
+        String namespace =
+            (String)messageContext.getProperty(AddressingConstants.WS_ADDRESSING_VERSION);
+        if (Submission.WSA_NAMESPACE.equals(namespace)) {
+            triggerAddressingFault(messageContext, Final.FAULT_HEADER_PROB_HEADER_QNAME,
+                    AddressingConstants.WSA_DEFAULT_PREFIX + ":" +
+                    incorrectHeaderName, Submission.FAULT_INVALID_HEADER,
+                    null, AddressingMessages.getMessage(
+                    "spec.submission.FAULT_INVALID_HEADER_REASON"));
+        } else {
+            triggerAddressingFault(messageContext, Final.FAULT_HEADER_PROB_HEADER_QNAME,
+                    AddressingConstants.WSA_DEFAULT_PREFIX + ":" +
+                    incorrectHeaderName, Final.FAULT_INVALID_HEADER,
+                    "InvalidEPR",
+                    AddressingMessages.getMessage(
+                    "spec.final.FAULT_INVALID_HEADER_REASON"));
+        }
+    }
+
     //      wsa:InvalidCardinality
     public static void triggerInvalidCardinalityFault(MessageContext messageContext,
                                                       String incorrectHeaderName) throws AxisFault {

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?rev=635880&r1=635879&r2=635880&view=diff
==============================================================================
--- 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 Tue Mar 11 03:58:34 2008
@@ -136,21 +136,20 @@
                 log.debug(namespace +
                           " headers present in the SOAP message. Starting to process ...");
             }
+
+            //Need to set these properties here, before we extract the WS-Addressing
+            //information, in case we throw a fault.
+            msgContext.setProperty(WS_ADDRESSING_VERSION, namespace);
+            msgContext.setProperty(DISABLE_ADDRESSING_FOR_OUT_MESSAGES, Boolean.FALSE);
             
-            if (extractAddressingInformation(msgContext, iterator, namespace)) {
-                // check for reference parameters
-                if (!disableRefparamExtract) {
-                    extractToEprReferenceParameters(msgContext.getTo(), header, namespace);
-                }
-                
-                msgContext.setProperty(WS_ADDRESSING_VERSION, namespace);
-                msgContext.setProperty(DISABLE_ADDRESSING_FOR_OUT_MESSAGES, Boolean.FALSE);
-                msgContext.setProperty(IS_ADDR_INFO_ALREADY_PROCESSED, Boolean.TRUE);
-            }
-            else {
-                msgContext.setProperty(DISABLE_ADDRESSING_FOR_OUT_MESSAGES, Boolean.TRUE);
-                msgContext.setProperty(IS_ADDR_INFO_ALREADY_PROCESSED, Boolean.FALSE);                
+            extractAddressingInformation(msgContext, iterator, namespace);
+            
+            // check for reference parameters
+            if (!disableRefparamExtract) {
+                extractToEprReferenceParameters(msgContext.getTo(), header, namespace);
             }
+            
+            msgContext.setProperty(IS_ADDR_INFO_ALREADY_PROCESSED, Boolean.TRUE);
         }
         else {
             msgContext.setProperty(DISABLE_ADDRESSING_FOR_OUT_MESSAGES, Boolean.TRUE);
@@ -170,10 +169,9 @@
      * @param messageContext the active MessageContext
      * @param headers an Iterator over the addressing headers targeted to me
      * @param namespace the addressing namespace
-     * @return true if addressing information was found
      * @throws AxisFault if an error occurs
      */
-    private boolean extractAddressingInformation(MessageContext messageContext, Iterator headers,
+    private void extractAddressingInformation(MessageContext messageContext, Iterator headers,
                                          String namespace)
             throws AxisFault {
         Options messageContextOptions = messageContext.getOptions();
@@ -230,14 +228,6 @@
             }
         }
 
-        if (actionBlock == null && toBlock == null && messageIDBlock == null
-            && replyToBlock == null && faultToBlock == null
-            && fromBlock == null && relatesToHeaders == null) {
-            // All of the headers must have had the non local roles so further
-            // processing should be skipped.
-            return false;
-        }
-
         if (actionBlock != null && !ignoreHeaders[ACTION_FLAG]) {
             extractActionInformation(actionBlock, messageContext);
         }
@@ -279,8 +269,6 @@
 
         // provide default values for headers that have not been found.
         setDefaults(checkedHeaderNames, messageContext, namespace);
-
-        return true;
     }
 
     private void checkForMandatoryHeaders(boolean[] alreadyFoundAddrHeader,
@@ -324,7 +312,7 @@
             //used instead, such as the transport URL. Therefore, we only apply the default
             //on the inbound response side of a synchronous request-response exchange.
             if (!alreadyFoundAddrHeader[TO_FLAG] && !messageContext.isServerSide()) {
-                if (log.isTraceEnabled()) {
+                if (LoggingControl.debugLoggingAllowed && log.isTraceEnabled()) {
                     log.trace(messageContext.getLogIDString() +
                     " setDefaults: Setting WS-Addressing default value for the To property.");
                 }
@@ -333,7 +321,7 @@
             
             if (!alreadyFoundAddrHeader[REPLYTO_FLAG]) {
                 messageContext.setReplyTo(new EndpointReference(Final.WSA_ANONYMOUS_URL));
-                if (log.isTraceEnabled()) {
+                if (LoggingControl.debugLoggingAllowed && log.isTraceEnabled()) {
                     log.trace(messageContext.getLogIDString() +
                     " setDefaults: Setting WS-Addressing default value for the ReplyTo property.");
                 }
@@ -345,7 +333,7 @@
             //the absence of a ReplyTo header indicates that a response is NOT required.
             if (!alreadyFoundAddrHeader[REPLYTO_FLAG]) {
                 messageContext.setReplyTo(new EndpointReference(Final.WSA_NONE_URI));
-                if (log.isTraceEnabled()) {
+                if (LoggingControl.debugLoggingAllowed && log.isTraceEnabled()) {
                     log.trace(
                             "setDefaults: Setting WS-Addressing default value for the ReplyTo property.");
                 }
@@ -384,7 +372,7 @@
         String relationshipTypeString =
                 relationshipType == null ? null : relationshipType.getAttributeValue();
 
-        if (log.isTraceEnabled()) {
+        if (LoggingControl.debugLoggingAllowed && log.isTraceEnabled()) {
             log.trace("extractRelatesToInformation: Extracted Relationship. Value=" + address +
                       " RelationshipType=" + relationshipTypeString);
         }
@@ -410,7 +398,7 @@
             messageContextOptions.setFaultTo(epr);
         }
         extractEPRInformation(soapHeaderBlock, epr, addressingNamespace, messageContext);
-        if (log.isTraceEnabled()) {
+        if (LoggingControl.debugLoggingAllowed && log.isTraceEnabled()) {
             log.trace("extractFaultToEPRInformation: Extracted FaultTo EPR: " + epr);
         }
         soapHeaderBlock.setProcessed();
@@ -426,7 +414,7 @@
             messageContextOptions.setReplyTo(epr);
         }
         extractEPRInformation(soapHeaderBlock, epr, addressingNamespace, messageContext);
-        if (log.isTraceEnabled()) {
+        if (LoggingControl.debugLoggingAllowed && log.isTraceEnabled()) {
             log.trace("extractReplyToEPRInformation: Extracted ReplyTo EPR: " + epr);
         }
         soapHeaderBlock.setProcessed();
@@ -444,7 +432,7 @@
             messageContextOptions.setFrom(epr);
         }
         extractEPRInformation(soapHeaderBlock, epr, addressingNamespace, messageContext);
-        if (log.isTraceEnabled()) {
+        if (LoggingControl.debugLoggingAllowed && log.isTraceEnabled()) {
             log.trace("extractFromEPRInformation: Extracted From EPR: " + epr);
         }
         soapHeaderBlock.setProcessed();
@@ -471,7 +459,7 @@
 
         soapHeaderBlock.setProcessed();
 
-        if (log.isTraceEnabled()) {
+        if (LoggingControl.debugLoggingAllowed && log.isTraceEnabled()) {
             log.trace("extractToEPRInformation: Extracted To EPR: " + epr);
         }
     }
@@ -484,13 +472,13 @@
                 OMElement headerElement = (OMElement)headerBlocks.next();
                 OMAttribute isRefParamAttr =
                     headerElement.getAttribute(new QName(namespace, "IsReferenceParameter"));
-                if (log.isTraceEnabled()) {
+                if (LoggingControl.debugLoggingAllowed && log.isTraceEnabled()) {
                     log.trace("extractToEprReferenceParameters: Checking header: " +
                             headerElement.getQName());
                 }
                 if (isRefParamAttr != null && "true".equals(isRefParamAttr.getAttributeValue())) {
                     toEPR.addReferenceParameter(headerElement);
-                    if (log.isTraceEnabled()) {
+                    if (LoggingControl.debugLoggingAllowed && log.isTraceEnabled()) {
                         log.trace("extractToEprReferenceParameters: Header: " +
                                 headerElement.getQName() +
                         " has IsReferenceParameter attribute. Adding to toEPR.");
@@ -517,7 +505,7 @@
         String soapAction = messageContextOptions.getAction();
         String wsaAction = soapHeaderBlock.getText();
 
-        if (log.isTraceEnabled()) {
+        if (LoggingControl.debugLoggingAllowed && log.isTraceEnabled()) {
             log.trace("extractActionInformation: soapAction='" + soapAction + "' wsa:Action='" +
                       wsaAction + "'");
         }
@@ -573,16 +561,29 @@
     private void extractEPRInformation(SOAPHeaderBlock headerBlock, EndpointReference epr,
                                        String addressingNamespace, MessageContext messageContext)
             throws AxisFault {
+        String namespace = null;
+        
         try {
-            EndpointReferenceHelper.fromOM(epr, headerBlock, addressingNamespace);
+            namespace = EndpointReferenceHelper.fromOM(epr, headerBlock);            
         } catch (AxisFault af) {
-            if (log.isTraceEnabled()) {
+            if (LoggingControl.debugLoggingAllowed && log.isTraceEnabled()) {
                 log.trace(
                         "extractEPRInformation: Exception occurred deserialising an EndpointReference.",
                         af);
             }
             AddressingFaultsHelper
                     .triggerMissingAddressInEPRFault(messageContext, headerBlock.getLocalName());
+        }
+        
+        //Check that the EPR has the correct namespace.
+        if (!namespace.equals(addressingNamespace)) {
+            if (LoggingControl.debugLoggingAllowed && log.isTraceEnabled()) {
+                log.trace(
+                        "extractEPRInformation: Addressing namespace = " + addressingNamespace +
+                        ", EPR namespace = " + namespace);
+            }
+            AddressingFaultsHelper
+                    .triggerInvalidEPRFault(messageContext, headerBlock.getLocalName());
         }
     }
 

Modified: webservices/axis2/trunk/java/modules/addressing/test/org/apache/axis2/addressing/AddressingFaultsTest.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/addressing/test/org/apache/axis2/addressing/AddressingFaultsTest.java?rev=635880&r1=635879&r2=635880&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/addressing/test/org/apache/axis2/addressing/AddressingFaultsTest.java (original)
+++ webservices/axis2/trunk/java/modules/addressing/test/org/apache/axis2/addressing/AddressingFaultsTest.java Tue Mar 11 03:58:34 2008
@@ -22,6 +22,7 @@
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.Constants;
 import org.apache.axis2.addressing.AddressingConstants.Final;
+import org.apache.axis2.addressing.AddressingConstants.Submission;
 import org.apache.axis2.context.MessageContext;
 
 import javax.xml.namespace.QName;
@@ -34,6 +35,7 @@
      * String)}.
      */
     public void testTriggerInvalidCardinalityFault() {
+        //Final namespace
         MessageContext messageContext = new MessageContext();
         messageContext.setProperty(AddressingConstants.WS_ADDRESSING_VERSION,
                                    AddressingConstants.Final.WSA_NAMESPACE);
@@ -51,10 +53,27 @@
             assertEquals(Boolean.FALSE, messageContext.getProperty(
                     AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES));
         }
+        
+        //Submission namespace
+        messageContext = new MessageContext();
+        messageContext.setProperty(AddressingConstants.WS_ADDRESSING_VERSION,
+                                   AddressingConstants.Submission.WSA_NAMESPACE);
+        try {
+            AddressingFaultsHelper.triggerInvalidCardinalityFault(messageContext, "Action");
+            fail("Should have thrown exception");
+        } catch (AxisFault af) {
+            // Expected
+            assertEquals(Submission.FAULT_INVALID_HEADER_REASON, af.getMessage());
+            assertEquals(new QName(Submission.WSA_NAMESPACE, Submission.FAULT_INVALID_HEADER),
+                         af.getFaultCode());
+            assertEquals(Boolean.FALSE, messageContext.getProperty(
+                    AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES));
+        }
     }
 
     /** Test method for {@link AddressingFaultsHelper#triggerActionMismatchFault(org.apache.axis2.context.MessageContext)}. */
     public void testTriggerActionMismatchFault() {
+        //Final namespace
         MessageContext messageContext = new MessageContext();
         messageContext.setProperty(AddressingConstants.WS_ADDRESSING_VERSION,
                                    AddressingConstants.Final.WSA_NAMESPACE);
@@ -72,6 +91,22 @@
             assertEquals(Boolean.FALSE, messageContext.getProperty(
                     AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES));
         }
+
+        //Submission namespace
+        messageContext = new MessageContext();
+        messageContext.setProperty(AddressingConstants.WS_ADDRESSING_VERSION,
+                                   AddressingConstants.Submission.WSA_NAMESPACE);
+        try {
+            AddressingFaultsHelper.triggerActionMismatchFault(messageContext, "soapAction", "wsaAction");
+            fail("Should have thrown exception");
+        } catch (AxisFault af) {
+            // Expected
+            assertEquals(Submission.FAULT_INVALID_HEADER_REASON, af.getMessage());
+            assertEquals(new QName(Submission.WSA_NAMESPACE, Submission.FAULT_INVALID_HEADER),
+                         af.getFaultCode());
+            assertEquals(Boolean.FALSE, messageContext.getProperty(
+                    AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES));
+        }
     }
 
     /**
@@ -79,6 +114,7 @@
      * String)}.
      */
     public void testTriggerOnlyAnonymousAddressSupportedFault() {
+        //Final namespace
         MessageContext messageContext = new MessageContext();
         messageContext.setProperty(AddressingConstants.WS_ADDRESSING_VERSION,
                                    AddressingConstants.Final.WSA_NAMESPACE);
@@ -97,6 +133,23 @@
             assertEquals(Boolean.FALSE, messageContext.getProperty(
                     AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES));
         }
+
+        //Submission namespace
+        messageContext = new MessageContext();
+        messageContext.setProperty(AddressingConstants.WS_ADDRESSING_VERSION,
+                                   AddressingConstants.Submission.WSA_NAMESPACE);
+        try {
+            AddressingFaultsHelper
+                    .triggerOnlyAnonymousAddressSupportedFault(messageContext, "ReplyTo");
+            fail("Should have thrown exception");
+        } catch (AxisFault af) {
+            // Expected
+            assertEquals(Submission.FAULT_INVALID_HEADER_REASON, af.getMessage());
+            assertEquals(new QName(Submission.WSA_NAMESPACE, Submission.FAULT_INVALID_HEADER),
+                         af.getFaultCode());
+            assertEquals(Boolean.FALSE, messageContext.getProperty(
+                    AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES));
+        }
     }
 
     /**
@@ -104,6 +157,7 @@
      * String)}.
      */
     public void testTriggerOnlyNonAnonymousAddressSupportedFault() {
+        //Final namespace
         MessageContext messageContext = new MessageContext();
         messageContext.setProperty(AddressingConstants.WS_ADDRESSING_VERSION,
                                    AddressingConstants.Final.WSA_NAMESPACE);
@@ -122,6 +176,23 @@
             assertEquals(Boolean.FALSE, messageContext.getProperty(
                     AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES));
         }
+        
+        //Submission namespace
+        messageContext = new MessageContext();
+        messageContext.setProperty(AddressingConstants.WS_ADDRESSING_VERSION,
+                                   AddressingConstants.Submission.WSA_NAMESPACE);
+        try {
+            AddressingFaultsHelper
+                    .triggerOnlyNonAnonymousAddressSupportedFault(messageContext, "ReplyTo");
+            fail("Should have thrown exception");
+        } catch (AxisFault af) {
+            // Expected
+            assertEquals(Submission.FAULT_INVALID_HEADER_REASON, af.getMessage());
+            assertEquals(new QName(Submission.WSA_NAMESPACE, Submission.FAULT_INVALID_HEADER),
+                         af.getFaultCode());
+            assertEquals(Boolean.FALSE, messageContext.getProperty(
+                    AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES));
+        }
     }
 
     /**
@@ -129,6 +200,7 @@
      * String)}.
      */
     public void testTriggerMessageAddressingRequiredFault() {
+        //Final namespace
         MessageContext messageContext = new MessageContext();
         messageContext.setProperty(AddressingConstants.WS_ADDRESSING_VERSION,
                                    AddressingConstants.Final.WSA_NAMESPACE);
@@ -146,6 +218,22 @@
             assertEquals(Boolean.FALSE, messageContext.getProperty(
                     AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES));
         }
+
+        //Submission namespace
+        messageContext = new MessageContext();
+        messageContext.setProperty(AddressingConstants.WS_ADDRESSING_VERSION,
+                                   AddressingConstants.Submission.WSA_NAMESPACE);
+        try {
+            AddressingFaultsHelper.triggerMessageAddressingRequiredFault(messageContext, "Action");
+            fail("Should have thrown exception");
+        } catch (AxisFault af) {
+            // Expected
+            assertEquals(Submission.FAULT_ADDRESSING_HEADER_REQUIRED_REASON, af.getMessage());
+            assertEquals(new QName(Submission.WSA_NAMESPACE, Submission.FAULT_ADDRESSING_HEADER_REQUIRED),
+                         af.getFaultCode());
+            assertEquals(Boolean.FALSE, messageContext.getProperty(
+                    AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES));
+        }
     }
 
     /**
@@ -153,6 +241,7 @@
      * String)}.
      */
     public void testTriggerActionNotSupportedFault() {
+        //Final namespace
         MessageContext messageContext = new MessageContext();
         messageContext.setProperty(AddressingConstants.WS_ADDRESSING_VERSION,
                                    AddressingConstants.Final.WSA_NAMESPACE);
@@ -169,6 +258,153 @@
             assertEquals("http://incorrect/action", ((Map)messageContext
                     .getProperty(Constants.FAULT_INFORMATION_FOR_HEADERS)).get(
                     AddressingConstants.Final.FAULT_PROBLEM_ACTION_NAME));
+            assertEquals(Boolean.FALSE, messageContext.getProperty(
+                    AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES));
+        }
+
+        //Submission namespace
+        messageContext = new MessageContext();
+        messageContext.setProperty(AddressingConstants.WS_ADDRESSING_VERSION,
+                                   AddressingConstants.Submission.WSA_NAMESPACE);
+        try {
+            AddressingFaultsHelper
+                    .triggerActionNotSupportedFault(messageContext, "http://incorrect/action");
+            fail("Should have thrown exception");
+        } catch (AxisFault af) {
+            // Expected
+            assertEquals(AddressingConstants.FAULT_ACTION_NOT_SUPPORTED_REASON, af.getMessage());
+            assertEquals(
+                    new QName(Submission.WSA_NAMESPACE, AddressingConstants.FAULT_ACTION_NOT_SUPPORTED),
+                    af.getFaultCode());
+            assertEquals(Boolean.FALSE, messageContext.getProperty(
+                    AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES));
+        }
+    }
+
+    /**
+     * Test method for {@link AddressingFaultsHelper#triggerDestinationUnreachableFault(MessageContext, String)}.
+     */
+    public void testTriggerDestinationUnreachableFault() {
+        //Final namespace
+        MessageContext messageContext = new MessageContext();
+        messageContext.setProperty(AddressingConstants.WS_ADDRESSING_VERSION,
+                                   AddressingConstants.Final.WSA_NAMESPACE);
+        try {
+            AddressingFaultsHelper.triggerDestinationUnreachableFault(messageContext, "http://somewhere.com/somehow");
+            fail("Should have thrown exception");
+        } catch (AxisFault af) {
+            // Expected
+            assertEquals(Final.FAULT_ADDRESSING_DESTINATION_UNREACHABLE_REASON, af.getMessage());
+            assertEquals(
+                    new QName(Final.WSA_NAMESPACE, AddressingConstants.FAULT_ADDRESSING_DESTINATION_UNREACHABLE),
+                    af.getFaultCode());
+            assertEquals("http://somewhere.com/somehow", ((Map)messageContext
+                    .getProperty(Constants.FAULT_INFORMATION_FOR_HEADERS)).get(
+                    AddressingConstants.Final.FAULT_HEADER_PROB_IRI));
+            assertEquals(Boolean.FALSE, messageContext.getProperty(
+                    AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES));
+        }
+        
+        //Submission namespace
+        messageContext = new MessageContext();
+        messageContext.setProperty(AddressingConstants.WS_ADDRESSING_VERSION,
+                                   AddressingConstants.Submission.WSA_NAMESPACE);
+        try {
+            AddressingFaultsHelper.triggerDestinationUnreachableFault(messageContext, "http://somewhere.com/somehow");
+            fail("Should have thrown exception");
+        } catch (AxisFault af) {
+            // Expected
+            assertEquals(Submission.FAULT_ADDRESSING_DESTINATION_UNREACHABLE_REASON, af.getMessage());
+            assertEquals(
+                    new QName(Submission.WSA_NAMESPACE, AddressingConstants.FAULT_ADDRESSING_DESTINATION_UNREACHABLE),
+                    af.getFaultCode());
+            assertEquals(Boolean.FALSE, messageContext.getProperty(
+                    AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES));
+        }
+    }
+
+    /**
+     * Test method for {@link AddressingFaultsHelper#triggerInvalidEPRFault(MessageContext, String)}.
+     */
+    public void testTriggerInvalidEPRFault() {
+        //Final namespace
+        MessageContext messageContext = new MessageContext();
+        messageContext.setProperty(AddressingConstants.WS_ADDRESSING_VERSION,
+                                   AddressingConstants.Final.WSA_NAMESPACE);
+        try {
+            AddressingFaultsHelper.triggerInvalidEPRFault(messageContext, "ReplyTo");
+            fail("Should have thrown exception");
+        } catch (AxisFault af) {
+            // Expected
+            assertEquals(Final.FAULT_INVALID_HEADER_REASON, af.getMessage());
+            assertEquals(
+                    new QName(Final.WSA_NAMESPACE, Final.FAULT_INVALID_HEADER),
+                    af.getFaultCode());
+            assertEquals("wsa:ReplyTo", ((Map)messageContext
+                    .getProperty(Constants.FAULT_INFORMATION_FOR_HEADERS)).get(
+                    AddressingConstants.Final.FAULT_HEADER_PROB_HEADER_QNAME));
+            assertEquals(Boolean.FALSE, messageContext.getProperty(
+                    AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES));
+        }
+
+        //Submission namespace
+        messageContext = new MessageContext();
+        messageContext.setProperty(AddressingConstants.WS_ADDRESSING_VERSION,
+                                   AddressingConstants.Submission.WSA_NAMESPACE);
+        try {
+            AddressingFaultsHelper.triggerInvalidEPRFault(messageContext, "ReplyTo");
+            fail("Should have thrown exception");
+        } catch (AxisFault af) {
+            // Expected
+            assertEquals(Submission.FAULT_INVALID_HEADER_REASON, af.getMessage());
+            assertEquals(
+                    new QName(Submission.WSA_NAMESPACE, Submission.FAULT_INVALID_HEADER),
+                    af.getFaultCode());
+            assertEquals(Boolean.FALSE, messageContext.getProperty(
+                    AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES));
+        }
+    }
+
+    /**
+     * Test method for {@link AddressingFaultsHelper#triggerMissingAddressInEPRFault(MessageContext, String)}.
+     */
+    public void testTriggerMissingAddressInEPRFault() {
+        //Final namespace
+        MessageContext messageContext = new MessageContext();
+        messageContext.setProperty(AddressingConstants.WS_ADDRESSING_VERSION,
+                                   AddressingConstants.Final.WSA_NAMESPACE);
+        try {
+            AddressingFaultsHelper.triggerMissingAddressInEPRFault(messageContext, "ReplyTo");
+            fail("Should have thrown exception");
+        } catch (AxisFault af) {
+            // Expected
+            assertEquals(Final.FAULT_INVALID_HEADER_REASON, af.getMessage());
+            assertEquals(
+                    new QName(Final.WSA_NAMESPACE, Final.FAULT_INVALID_HEADER),
+                    af.getFaultCode());
+            assertEquals("wsa:ReplyTo", ((Map)messageContext
+                    .getProperty(Constants.FAULT_INFORMATION_FOR_HEADERS)).get(
+                    AddressingConstants.Final.FAULT_HEADER_PROB_HEADER_QNAME));
+            assertEquals(Boolean.FALSE, messageContext.getProperty(
+                    AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES));
+        }
+        
+        //Submission namespace
+        messageContext = new MessageContext();
+        messageContext.setProperty(AddressingConstants.WS_ADDRESSING_VERSION,
+                                   AddressingConstants.Submission.WSA_NAMESPACE);
+        try {
+            AddressingFaultsHelper.triggerMissingAddressInEPRFault(messageContext, "ReplyTo");
+            fail("Should have thrown exception");
+        } catch (AxisFault af) {
+            // Expected
+            assertEquals(Submission.FAULT_INVALID_HEADER_REASON, af.getMessage());
+            assertEquals(
+                    new QName(Submission.WSA_NAMESPACE, Submission.FAULT_INVALID_HEADER),
+                    af.getFaultCode());
+            assertEquals("wsa:ReplyTo", ((Map)messageContext
+                    .getProperty(Constants.FAULT_INFORMATION_FOR_HEADERS)).get(
+                    AddressingConstants.Final.FAULT_HEADER_PROB_HEADER_QNAME));
             assertEquals(Boolean.FALSE, messageContext.getProperty(
                     AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES));
         }



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