You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commons-dev@ws.apache.org by gd...@apache.org on 2007/04/02 21:41:38 UTC

svn commit: r524902 - in /webservices/commons/trunk/modules/axiom/modules: axiom-api/src/main/java/org/apache/axiom/attachments/ axiom-api/src/main/java/org/apache/axiom/om/impl/builder/ axiom-api/src/main/java/org/apache/axiom/om/impl/traverse/ axiom-...

Author: gdaniels
Date: Mon Apr  2 12:41:37 2007
New Revision: 524902

URL: http://svn.apache.org/viewvc?view=rev&rev=524902
Log:
* Fix https://issues.apache.org/jira/browse/WSCOMMONS-188

* Add tests

* Correct bad MTOM test data (using incorrect namespace which wasn't noticed because of case-insensitive comparison)

* Add an option for OMChildrenWithSpecificAttributeIterator (love those concise classnames) to do case-insensitive comparisons for attribute values, default to false.

* Implement relay attribute get/set for SOAP 1.2, and a test for same.

* Bits and pieces of code cleanup

Modified:
    webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/attachments/Attachments.java
    webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/builder/StAXOMBuilder.java
    webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/builder/XOPAwareStAXOMBuilder.java
    webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/traverse/OMChildrenWithSpecificAttributeIterator.java
    webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/soap/SOAP12Constants.java
    webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/soap/impl/builder/MTOMStAXSOAPModelBuilder.java
    webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ElementImpl.java
    webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/SOAPHeaderImpl.java
    webservices/commons/trunk/modules/axiom/modules/axiom-dom/test/org/apache/axiom/om/impl/dom/NamespaceTest.java
    webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMElementImpl.java
    webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/soap11/SOAP11HeaderBlockImpl.java
    webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/soap12/SOAP12HeaderBlockImpl.java
    webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/soap/SOAPHeaderBlockTest.java
    webservices/commons/trunk/modules/axiom/modules/axiom-tests/test-resources/mtom/ImageMTOMOut.bin
    webservices/commons/trunk/modules/axiom/modules/axiom-tests/test-resources/mtom/MTOMBuilderTestIn.txt
    webservices/commons/trunk/modules/axiom/modules/axiom-tests/test-resources/soap/soap12message.xml

Modified: webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/attachments/Attachments.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/attachments/Attachments.java?view=diff&rev=524902&r1=524901&r2=524902
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/attachments/Attachments.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/attachments/Attachments.java Mon Apr  2 12:41:37 2007
@@ -381,7 +381,7 @@
 
     public Set getContentIDSet() {
         DataHandler dataHandler;
-        while (!noStreams & true) {
+        while (!noStreams) {
             dataHandler = this.getNextPartDataHandler();
             if (dataHandler == null) {
                 break;
@@ -482,7 +482,7 @@
                                                              boundary, this);
                     int count = 0;
                     do {
-                        int len = 0;
+                        int len;
                         int off = 0;
                         int rem = fileStorageThreshold;
                         while ((len = partStream.read(buffer, off, rem)) > 0) {

Modified: webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/builder/StAXOMBuilder.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/builder/StAXOMBuilder.java?view=diff&rev=524902&r1=524901&r2=524902
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/builder/StAXOMBuilder.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/builder/StAXOMBuilder.java Mon Apr  2 12:41:37 2007
@@ -106,9 +106,8 @@
      * Init() *must* be called after creating the builder using this constructor.
      *
      * @param inStream - instream which contains the XML
-     * @throws XMLStreamException
      */
-    public StAXOMBuilder() throws XMLStreamException {
+    public StAXOMBuilder() {
         super();
     }
 
@@ -358,7 +357,7 @@
 
         if (namespaceURI != null && namespaceURI.length() > 0) {
             OMNamespace namespace = node.findNamespace(namespaceURI, prefix);
-            if (namespace == null || namespace.getPrefix() != prefix) {
+            if (namespace == null || (!namespace.getPrefix().equals(prefix))) {
                 if (prefix == null || "".equals(prefix)) {
                     namespace = node.declareDefaultNamespace(namespaceURI);
                 } else {

Modified: webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/builder/XOPAwareStAXOMBuilder.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/builder/XOPAwareStAXOMBuilder.java?view=diff&rev=524902&r1=524901&r2=524902
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/builder/XOPAwareStAXOMBuilder.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/builder/XOPAwareStAXOMBuilder.java Mon Apr  2 12:41:37 2007
@@ -106,9 +106,8 @@
 
         String elementName = parser.getLocalName();
         String namespaceURI = parser.getNamespaceURI();
-        if (MTOMConstants.XOP_INCLUDE.equalsIgnoreCase(elementName)
-                && MTOMConstants.XOP_NAMESPACE_URI
-                .equalsIgnoreCase(namespaceURI)) {
+        if (MTOMConstants.XOP_INCLUDE.equals(elementName)
+                && MTOMConstants.XOP_NAMESPACE_URI.equals(namespaceURI)) {
             OMText node;
             String contentID = ElementHelper.getContentID(parser, getDocument()
                     .getCharsetEncoding());

Modified: webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/traverse/OMChildrenWithSpecificAttributeIterator.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/traverse/OMChildrenWithSpecificAttributeIterator.java?view=diff&rev=524902&r1=524901&r2=524902
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/traverse/OMChildrenWithSpecificAttributeIterator.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/om/impl/traverse/OMChildrenWithSpecificAttributeIterator.java Mon Apr  2 12:41:37 2007
@@ -34,6 +34,8 @@
     /** Field detach */
     private boolean detach;
 
+    private boolean doCaseSensitiveValueChecks = true;
+
     /**
      * Constructor OMChildrenWithSpecificAttributeIterator.
      *
@@ -52,6 +54,10 @@
         this.detach = detach;
     }
 
+    public void setCaseInsensitiveValueChecks(boolean val) {
+        doCaseSensitiveValueChecks = val;
+    }
+
     /**
      * Method hasNext.
      *
@@ -74,8 +80,9 @@
                 OMAttribute attr =
                         ((OMElement) currentChild).getAttribute(
                                 attributeName);
-                if ((attr != null)
-                        && attr.getAttributeValue().equalsIgnoreCase(attributeValue)) {
+                if ((attr != null) && (doCaseSensitiveValueChecks ?
+                        attr.getAttributeValue().equals(attributeValue) :
+                        attr.getAttributeValue().equalsIgnoreCase(attributeValue))) {
                     isMatchingNodeFound = true;
                     needToMoveForward = false;
                 } else {

Modified: webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/soap/SOAP12Constants.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/soap/SOAP12Constants.java?view=diff&rev=524902&r1=524901&r2=524902
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/soap/SOAP12Constants.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/soap/SOAP12Constants.java Mon Apr  2 12:41:37 2007
@@ -73,6 +73,7 @@
 
     // QNames
     static final QName QNAME_ROLE = new QName(SOAP_ENVELOPE_NAMESPACE_URI, SOAP_ROLE);
+    static final QName QNAME_RELAY = new QName(SOAP_ENVELOPE_NAMESPACE_URI, SOAP_RELAY);
     static final QName QNAME_MU_FAULTCODE = new QName(SOAP_ENVELOPE_NAMESPACE_URI,
                                                       FAULT_CODE_MUST_UNDERSTAND);
     static final QName QNAME_SENDER_FAULTCODE = new QName(SOAP_ENVELOPE_NAMESPACE_URI,

Modified: webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/soap/impl/builder/MTOMStAXSOAPModelBuilder.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/soap/impl/builder/MTOMStAXSOAPModelBuilder.java?view=diff&rev=524902&r1=524901&r2=524902
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/soap/impl/builder/MTOMStAXSOAPModelBuilder.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/soap/impl/builder/MTOMStAXSOAPModelBuilder.java Mon Apr  2 12:41:37 2007
@@ -27,8 +27,6 @@
 import org.apache.axiom.om.impl.builder.XOPBuilder;
 import org.apache.axiom.om.util.ElementHelper;
 import org.apache.axiom.soap.SOAPFactory;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
 
 import javax.activation.DataHandler;
 import javax.xml.stream.XMLStreamReader;
@@ -39,8 +37,6 @@
     /** <code>Attachments</code> handles deferred parsing of incoming MIME Messages. */
     Attachments attachments;
 
-    private Log log = LogFactory.getLog(getClass());
-
     int partIndex = 0;
 
     public MTOMStAXSOAPModelBuilder(XMLStreamReader parser,
@@ -72,8 +68,7 @@
         String namespaceURI = parser.getNamespaceURI();
 
         // create an OMBlob if the element is an <xop:Include>
-        if (XOP_INCLUDE.equalsIgnoreCase(elementName)
-                && XOP_NAMESPACE_URI.equalsIgnoreCase(namespaceURI)) {
+        if (XOP_INCLUDE.equals(elementName) && XOP_NAMESPACE_URI.equals(namespaceURI)) {
             elementLevel++;
             OMText node;
             String contentID = ElementHelper.getContentID(parser, getDocument()
@@ -83,8 +78,7 @@
                 throw new OMException(
                         "XOP:Include element is not supported here");
             } else if (lastNode.isComplete() & lastNode.getParent() != null) {
-                node = omfactory.createOMText(contentID, (OMElement) lastNode
-                        .getParent(), this);
+                node = omfactory.createOMText(contentID, lastNode.getParent(), this);
                 ((OMNodeEx) lastNode).setNextOMSibling(node);
                 ((OMNodeEx) node).setPreviousOMSibling(lastNode);
             } else {

Modified: webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ElementImpl.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ElementImpl.java?view=diff&rev=524902&r1=524901&r2=524902
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ElementImpl.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/om/impl/dom/ElementImpl.java Mon Apr  2 12:41:37 2007
@@ -808,8 +808,7 @@
         if (prefix == null || "".equals(prefix)) {
             Iterator namespaceListIterator = namespaces.values().iterator();
             while (namespaceListIterator.hasNext()) {
-                OMNamespace omNamespace = (OMNamespace) namespaceListIterator
-                        .next();
+                OMNamespace omNamespace = (OMNamespace) namespaceListIterator.next();
                 String nsURI = omNamespace.getNamespaceURI();
                 if (nsURI != null && nsURI.equals(uri)) {
                     return omNamespace;
@@ -818,7 +817,7 @@
 
         } else {
             OMNamespace namespace = (OMNamespace) namespaces.get(prefix);
-            if (namespace != null && uri.equalsIgnoreCase(namespace.getNamespaceURI())) {
+            if (namespace != null && uri.equals(namespace.getNamespaceURI())) {
                 return namespace;
             }
         }

Modified: webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/SOAPHeaderImpl.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/SOAPHeaderImpl.java?view=diff&rev=524902&r1=524901&r2=524902
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/SOAPHeaderImpl.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-dom/src/main/java/org/apache/axiom/soap/impl/dom/SOAPHeaderImpl.java Mon Apr  2 12:41:37 2007
@@ -186,8 +186,7 @@
                 SOAPHeaderBlock soapHeaderBlock = (SOAPHeaderBlock) o;
                 String role = soapHeaderBlock.getRole();
                 boolean mustUnderstand = soapHeaderBlock.getMustUnderstand();
-                if ((role != null) && role.equalsIgnoreCase(actor) &&
-                        mustUnderstand) {
+                if ((role != null) && role.equals(actor) && mustUnderstand) {
                     mustUnderstandHeadersWithGivenActor.add(soapHeaderBlock);
                 }
             }

Modified: webservices/commons/trunk/modules/axiom/modules/axiom-dom/test/org/apache/axiom/om/impl/dom/NamespaceTest.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-dom/test/org/apache/axiom/om/impl/dom/NamespaceTest.java?view=diff&rev=524902&r1=524901&r2=524902
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-dom/test/org/apache/axiom/om/impl/dom/NamespaceTest.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-dom/test/org/apache/axiom/om/impl/dom/NamespaceTest.java Mon Apr  2 12:41:37 2007
@@ -1,6 +1,10 @@
 package org.apache.axiom.om.impl.dom;
 
 import junit.framework.TestCase;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.impl.dom.factory.OMDOMFactory;
 /*
  * Copyright 2007 The Apache Software Foundation.
  *
@@ -39,5 +43,16 @@
         URI2 = URI2 + "testuri1";  // Make sure the strings don't intern to the same place
         assertTrue(ns1.equals(URI2, ""));
         assertTrue(ns1.equals(ns2));
+    }
+
+    public void testSearch() throws Exception {
+        String NSURI = "http://testns";
+        String NSURI_UPPER = "HTTP://TESTNS";
+
+        OMFactory fac = new OMDOMFactory();
+        OMNamespace ns = new NamespaceImpl(NSURI);
+        OMElement el = fac.createOMElement("foo", null);
+        el.declareNamespace(NSURI, "p");
+        assertNull(el.findNamespace(NSURI_UPPER, "p"));
     }
 }

Modified: webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMElementImpl.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMElementImpl.java?view=diff&rev=524902&r1=524901&r2=524902
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMElementImpl.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/om/impl/llom/OMElementImpl.java Mon Apr  2 12:41:37 2007
@@ -424,7 +424,7 @@
             }
         } else {
             OMNamespace namespace = (OMNamespace) namespaces.get(prefix);
-            if (namespace != null && uri.equalsIgnoreCase(namespace.getNamespaceURI())) {
+            if (namespace != null && uri.equals(namespace.getNamespaceURI())) {
                 return namespace;
             }
         }

Modified: webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/soap11/SOAP11HeaderBlockImpl.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/soap11/SOAP11HeaderBlockImpl.java?view=diff&rev=524902&r1=524901&r2=524902
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/soap11/SOAP11HeaderBlockImpl.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/soap11/SOAP11HeaderBlockImpl.java Mon Apr  2 12:41:37 2007
@@ -112,7 +112,7 @@
      *         <CODE>SOAPHeaderBlock</CODE> object is turned on; <CODE>false</CODE> otherwise
      */
     public boolean getMustUnderstand() throws SOAPProcessingException {
-        String mustUnderstand = "";
+        String mustUnderstand;
         if ((mustUnderstand =
                 getAttribute(SOAPConstants.ATTR_MUSTUNDERSTAND,
                              SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI))
@@ -138,12 +138,10 @@
 
     }
 
-    //TODO : implement
     public void setRelay(boolean relay) {
         throw new UnsupportedOperationException("Not supported for SOAP 1.1");
     }
 
-    //TODO : implement
     public boolean getRelay() {
         throw new UnsupportedOperationException("Not supported for SOAP 1.1");
     }

Modified: webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/soap12/SOAP12HeaderBlockImpl.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/soap12/SOAP12HeaderBlockImpl.java?view=diff&rev=524902&r1=524901&r2=524902
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/soap12/SOAP12HeaderBlockImpl.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-impl/src/main/java/org/apache/axiom/soap/impl/llom/soap12/SOAP12HeaderBlockImpl.java Mon Apr  2 12:41:37 2007
@@ -19,16 +19,16 @@
 import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.OMNamespace;
 import org.apache.axiom.om.OMXMLParserWrapper;
-import org.apache.axiom.soap.SOAP12Constants;
 import org.apache.axiom.soap.SOAPConstants;
 import org.apache.axiom.soap.SOAPFactory;
 import org.apache.axiom.soap.SOAPHeader;
 import org.apache.axiom.soap.SOAPProcessingException;
 import org.apache.axiom.soap.SOAPVersion;
 import org.apache.axiom.soap.SOAP12Version;
+import org.apache.axiom.soap.SOAP12Constants;
 import org.apache.axiom.soap.impl.llom.SOAPHeaderBlockImpl;
 
-public class SOAP12HeaderBlockImpl extends SOAPHeaderBlockImpl {
+public class SOAP12HeaderBlockImpl extends SOAPHeaderBlockImpl implements SOAP12Constants {
 
     public SOAP12HeaderBlockImpl(String localName, OMNamespace ns,
                                  SOAPFactory factory) {
@@ -76,22 +76,18 @@
     }
 
     public void setRole(String roleURI) {
-        setAttribute(SOAP12Constants.SOAP_ROLE,
-                     roleURI,
-                     SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI);
+        setAttribute(SOAP_ROLE, roleURI, SOAP_ENVELOPE_NAMESPACE_URI);
     }
 
     public String getRole() {
-        return getAttribute(SOAP12Constants.SOAP_ROLE,
-                            SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI);
-
+        return getAttributeValue(QNAME_ROLE);
     }
 
     public void setMustUnderstand(boolean mustUnderstand) {
         setAttribute(SOAPConstants.ATTR_MUSTUNDERSTAND,
                      mustUnderstand ? SOAPConstants.ATTR_MUSTUNDERSTAND_TRUE :
                              SOAPConstants.ATTR_MUSTUNDERSTAND_FALSE,
-                     SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI);
+                     SOAP_ENVELOPE_NAMESPACE_URI);
 
     }
 
@@ -103,7 +99,7 @@
                 SOAPConstants.ATTR_MUSTUNDERSTAND_1.equals(mustUnderstand)) {
             setAttribute(SOAPConstants.ATTR_MUSTUNDERSTAND,
                          mustUnderstand,
-                         SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI);
+                         SOAP_ENVELOPE_NAMESPACE_URI);
         } else {
             throw new SOAPProcessingException(
                     "mustUndertand should be one of \"true\", " +
@@ -112,20 +108,14 @@
     }
 
     public boolean getMustUnderstand() throws SOAPProcessingException {
-        String mustUnderstand = "";
-        if ((mustUnderstand =
-                getAttribute(SOAPConstants.ATTR_MUSTUNDERSTAND,
-                             SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI))
+        String mustUnderstand;
+        if ((mustUnderstand = getAttribute(ATTR_MUSTUNDERSTAND, SOAP_ENVELOPE_NAMESPACE_URI))
                 != null) {
-            if (SOAPConstants.ATTR_MUSTUNDERSTAND_TRUE.equalsIgnoreCase(
-                    mustUnderstand) ||
-                    SOAPConstants.ATTR_MUSTUNDERSTAND_1.equalsIgnoreCase(
-                            mustUnderstand)) {
+            if (SOAPConstants.ATTR_MUSTUNDERSTAND_TRUE.equalsIgnoreCase(mustUnderstand) ||
+                    SOAPConstants.ATTR_MUSTUNDERSTAND_1.equalsIgnoreCase(mustUnderstand)) {
                 return true;
-            } else if (SOAPConstants.ATTR_MUSTUNDERSTAND_FALSE.equalsIgnoreCase(
-                    mustUnderstand) ||
-                    SOAPConstants.ATTR_MUSTUNDERSTAND_0.equalsIgnoreCase(
-                            mustUnderstand)) {
+            } else if (SOAPConstants.ATTR_MUSTUNDERSTAND_FALSE.equalsIgnoreCase(mustUnderstand) ||
+                    SOAPConstants.ATTR_MUSTUNDERSTAND_0.equalsIgnoreCase(mustUnderstand)) {
                 return false;
             } else {
                 throw new SOAPProcessingException(
@@ -138,14 +128,17 @@
 
     }
 
-    //TODO : implement
     public void setRelay(boolean relay) {
-        throw new UnsupportedOperationException("Not supported for SOAP 1.1");
+        setAttribute(SOAP_RELAY, relay ? "true" : "false", SOAP_ENVELOPE_NAMESPACE_URI);
     }
 
-    //TODO : implement
     public boolean getRelay() {
-        throw new UnsupportedOperationException("Not supported for SOAP 1.1");
+        boolean ret = false;
+        String val = getAttributeValue(QNAME_RELAY);
+        if (val != null) {
+            ret = "true".equalsIgnoreCase(val);
+        }
+        return ret;
     }
 
     /**

Modified: webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/soap/SOAPHeaderBlockTest.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/soap/SOAPHeaderBlockTest.java?view=diff&rev=524902&r1=524901&r2=524902
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/soap/SOAPHeaderBlockTest.java (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-tests/src/test/java/org/apache/axiom/soap/SOAPHeaderBlockTest.java Mon Apr  2 12:41:37 2007
@@ -16,6 +16,8 @@
 
 package org.apache.axiom.soap;
 
+import org.apache.axiom.om.OMNamespace;
+
 import java.util.Iterator;
 
 public class SOAPHeaderBlockTest extends SOAPHeaderTestCase {
@@ -222,11 +224,24 @@
         assertFalse(
                 "SOAP 1.2 HeaderBlock Test With Parser : - getMustUnderstand method returns incorrect value",
                 soap12HeaderBlock2WithParser.getMustUnderstand());
-        try {
-            soap12HeaderBlock3WithParser.getMustUnderstand();
-        } catch (Exception e) {
-            fail(
-                    "SOAP 1.2 HeaderBlock Test With Parser : - getMustUnderstand method should returns exception when mustunderstand value is incorrect");
-        }
+        soap12HeaderBlock3WithParser.getMustUnderstand();
+    }
+
+    public void testRelayAttribute() throws Exception {
+        assertFalse(soap12HeaderBlock1WithParser.getRelay());
+        assertTrue(soap12HeaderBlock2WithParser.getRelay());
+        assertFalse(soap12HeaderBlock3WithParser.getRelay());
+
+        SOAPEnvelope env = soap12Factory.createSOAPEnvelope();
+        SOAPHeader header = soap12Factory.createSOAPHeader(env);
+        soap12Factory.createSOAPBody(env);
+        OMNamespace ns = soap12Factory.createOMNamespace("http://ns1", "ns1");
+        SOAPHeaderBlock relayHeader = header.addHeaderBlock("foo", ns);
+        relayHeader.setText("hey there");
+        relayHeader.setRelay(true);
+
+        String envString = env.toString();
+        assertTrue("No relay header after setRelay(true)",
+                   envString.indexOf("relay=\"true\"") >= 0);
     }
 }

Modified: webservices/commons/trunk/modules/axiom/modules/axiom-tests/test-resources/mtom/ImageMTOMOut.bin
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-tests/test-resources/mtom/ImageMTOMOut.bin?view=diff&rev=524902&r1=524901&r2=524902
==============================================================================
Binary files - no diff available.

Modified: webservices/commons/trunk/modules/axiom/modules/axiom-tests/test-resources/mtom/MTOMBuilderTestIn.txt
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-tests/test-resources/mtom/MTOMBuilderTestIn.txt?view=diff&rev=524902&r1=524901&r2=524902
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-tests/test-resources/mtom/MTOMBuilderTestIn.txt (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-tests/test-resources/mtom/MTOMBuilderTestIn.txt Mon Apr  2 12:41:37 2007
@@ -3,7 +3,7 @@
 Content-Transfer-Encoding: 8bit
 Content-ID: SOAPPart
 
-<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"><soapenv:Body><m:data xmlns:m="http://www.example.org/stuff"><m:name m:contentType="text/plain"><xop:Include xmlns:xop="http://www.w3.org/2004/08/xop/Include" href="cid:-1609420109260943731"></xop:Include></m:name></m:data></soapenv:Body></soapenv:Envelope>
+<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"><soapenv:Body><m:data xmlns:m="http://www.example.org/stuff"><m:name m:contentType="text/plain"><xop:Include xmlns:xop="http://www.w3.org/2004/08/xop/include" href="cid:-1609420109260943731"></xop:Include></m:name></m:data></soapenv:Body></soapenv:Envelope>
 ------=_AxIs2_Def_boundary_=42214532
 Content-Transfer-Encoding: binary
 Content-ID: -1609420109260943731

Modified: webservices/commons/trunk/modules/axiom/modules/axiom-tests/test-resources/soap/soap12message.xml
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-tests/test-resources/soap/soap12message.xml?view=diff&rev=524902&r1=524901&r2=524902
==============================================================================
--- webservices/commons/trunk/modules/axiom/modules/axiom-tests/test-resources/soap/soap12message.xml (original)
+++ webservices/commons/trunk/modules/axiom/modules/axiom-tests/test-resources/soap/soap12message.xml Mon Apr  2 12:41:37 2007
@@ -2,13 +2,13 @@
     <env:Header>
         <test:echoOk xmlns:test="http://example.org/ts-tests"
             env:role="http://www.w3.org/2003/05/soap-envelope/role/ultimateReceiver"
-            env:mustUnderstand="true"
+            env:mustUnderstand="true" env:relay="false"
             env:anyAttribute="any value">
             foo
         </test:echoOk>
         <test1:echoOk1 xmlns:test1="http://example1.org/ts-tests"
             env:role="http://www.w3.org/2003/05/soap-envelope/role/next"
-            env:mustUnderstand="false"
+            env:mustUnderstand="false" env:relay="true"
             env:anyAttribute="any value">
             foo
         </test1:echoOk1>



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