You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by ch...@apache.org on 2005/10/10 06:48:21 UTC

svn commit: r312547 - in /webservices/axis2/trunk/java/modules/addressing: src/org/apache/axis2/handlers/addressing/AddressingInHandler.java test-resources/soapWithWSAFinalInfo.xml test/org/apache/axis2/handlers/addressing/AddressingInHandlerTest.java

Author: chinthaka
Date: Sun Oct  9 21:47:55 2005
New Revision: 312547

URL: http://svn.apache.org/viewcvs?rev=312547&view=rev
Log:
Fixing some small bugs in addressing in handler and adding a test case for Axis2-274

Added:
    webservices/axis2/trunk/java/modules/addressing/test-resources/soapWithWSAFinalInfo.xml
Modified:
    webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingInHandler.java
    webservices/axis2/trunk/java/modules/addressing/test/org/apache/axis2/handlers/addressing/AddressingInHandlerTest.java

Modified: webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingInHandler.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingInHandler.java?rev=312547&r1=312546&r2=312547&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 Sun Oct  9 21:47:55 2005
@@ -40,7 +40,7 @@
 public class AddressingInHandler extends AbstractHandler implements AddressingConstants {
     // this parameter has to be set by the module deployer.
     private boolean isAddressingOptional = true;
-    private String addressingNamespace = null;
+    protected String addressingNamespace = null;
 
     private Log logger = LogFactory.getLog(getClass());
 
@@ -173,7 +173,11 @@
                 //here the addressing epr overidde what ever already there is 
                 epr = new EndpointReference(soapHeaderBlock.getText());
                 messageInformationHeaders.setTo(epr);
+
+                // check for reference parameters
+                extractToEprReferenceParameters(epr, header);
                 soapHeaderBlock.setProcessed();
+
             } else if (AddressingConstants.WSA_FROM.equals(soapHeaderBlock.getLocalName())) {
                 epr = messageInformationHeaders.getFrom();
                 if (epr == null) {
@@ -226,6 +230,17 @@
         }
 
         return messageInformationHeaders;
+    }
+
+    private void extractToEprReferenceParameters(EndpointReference toEPR, SOAPHeader header) {
+        Iterator headerBlocks = header.getChildElements();
+        while (headerBlocks.hasNext()) {
+            SOAPHeaderBlock soapHeaderBlock = (SOAPHeaderBlock) headerBlocks.next();
+            OMAttribute isRefParamAttr = soapHeaderBlock.getAttribute(new QName(addressingNamespace, "IsReferenceParameter"));
+            if (isRefParamAttr != null && "true".equals(isRefParamAttr.getValue())) {
+                toEPR.addReferenceParameter(soapHeaderBlock.getQName(), soapHeaderBlock.getText());
+            }
+        }
     }
 
     private void extractEPRInformation(

Added: webservices/axis2/trunk/java/modules/addressing/test-resources/soapWithWSAFinalInfo.xml
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/addressing/test-resources/soapWithWSAFinalInfo.xml?rev=312547&view=auto
==============================================================================
--- webservices/axis2/trunk/java/modules/addressing/test-resources/soapWithWSAFinalInfo.xml (added)
+++ webservices/axis2/trunk/java/modules/addressing/test-resources/soapWithWSAFinalInfo.xml Sun Oct  9 21:47:55 2005
@@ -0,0 +1,37 @@
+<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
+                  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+                  xmlns:wsa="http://www.w3.org/2005/02/addressing">
+    <soapenv:Header xmlns:fabrikam="http://example.com/fabrikam" xmlns:axis2="http://ws.apache.org/namespaces/axis2">
+        <wsa:MessageID soapenv:mustUnderstand="0">
+            uuid:920C5190-0B8F-11D9-8CED-F22EDEEBF7E5</wsa:MessageID>
+        <wsa:To soapenv:mustUnderstand="0">http://localhost:8081/axis/services/BankPort</wsa:To>
+        <wsa:From soapenv:mustUnderstand="0">
+            <wsa:Address>
+                http://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymous</wsa:Address>
+        </wsa:From>
+        <axis2:ParamOne wsa:IsReferenceParameter='true'>123456789</axis2:ParamOne>
+        <axis2:ParamTwo wsa:IsReferenceParameter='true'>ABCDEFG</axis2:ParamTwo>
+        <wsa:Action>http://ws.apache.org/tests/action</wsa:Action>
+        <wsa:ReplyTo>
+            <wsa:Address>http://example.com/fabrikam/acct</wsa:Address>
+            <wsa:Metadata>
+                <InterfaceName>fabrikam:Inventory</InterfaceName>
+            </wsa:Metadata>
+            <wsa:ReferenceParameters>
+                <fabrikam:CustomerKey>123456789</fabrikam:CustomerKey>
+                <fabrikam:ShoppingCart>ABCDEFG</fabrikam:ShoppingCart>
+            </wsa:ReferenceParameters>
+        </wsa:ReplyTo>
+    </soapenv:Header>
+    <soapenv:Body>
+        <ns1:getBalance soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+                        xmlns:ns1="http://localhost:8081/axis/services/BankPort">
+            <accountNo href="#id0"/>
+        </ns1:getBalance>
+        <multiRef id="id0" soapenc:root="0"
+                  soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
+                  xsi:type="xsd:int" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
+            1001</multiRef>
+    </soapenv:Body>
+</soapenv:Envelope>
\ No newline at end of file

Modified: webservices/axis2/trunk/java/modules/addressing/test/org/apache/axis2/handlers/addressing/AddressingInHandlerTest.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/addressing/test/org/apache/axis2/handlers/addressing/AddressingInHandlerTest.java?rev=312547&r1=312546&r2=312547&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/addressing/test/org/apache/axis2/handlers/addressing/AddressingInHandlerTest.java (original)
+++ webservices/axis2/trunk/java/modules/addressing/test/org/apache/axis2/handlers/addressing/AddressingInHandlerTest.java Sun Oct  9 21:47:55 2005
@@ -18,6 +18,7 @@
 
 import junit.framework.TestCase;
 import org.apache.axis2.addressing.AddressingConstants;
+import org.apache.axis2.addressing.AnyContentType;
 import org.apache.axis2.addressing.EndpointReference;
 import org.apache.axis2.addressing.MessageInformationHeaders;
 import org.apache.axis2.handlers.util.TestUtil;
@@ -27,11 +28,14 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
+import javax.xml.namespace.QName;
+
 public class AddressingInHandlerTest extends TestCase {
     private Log log = LogFactory.getLog(getClass());
     AddressingInHandler inHandler;
     TestUtil testUtil = new TestUtil();
     private static final String testFileName = "soapmessage.xml";
+    private static final String wsaFinalTestFile = "soapWithWSAFinalInfo.xml";
 
     private String action = "http://ws.apache.org/tests/action";
     private String messageID = "uuid:920C5190-0B8F-11D9-8CED-F22EDEEBF7E5";
@@ -77,7 +81,6 @@
             assertFromEPR(messageInformationHeaders.getFrom());
 
         } catch (Exception e) {
-            e.printStackTrace();
             log.info(e.getMessage());
             fail(" An Exception has occured " + e.getMessage());
         }
@@ -87,6 +90,33 @@
         assertEquals("Address in EPR is not valid",
                 fromEPR.getAddress().trim(),
                 fromAddress.trim());
+    }
+
+    public void testWSAFinalInformation() {
+        try {
+            StAXSOAPModelBuilder omBuilder = testUtil.getOMBuilder(
+                    wsaFinalTestFile);
+            inHandler.addressingNamespace = AddressingConstants.Final.WSA_NAMESPACE;
+            SOAPHeader header = ((SOAPEnvelope) omBuilder.getDocumentElement()).getHeader();
+            MessageInformationHeaders messageInformationHeaders =
+                    inHandler.extractCommonAddressingParameters(header,
+                            null,
+                            header.getHeaderBlocksWithNSURI(
+                                    AddressingConstants.Final.WSA_NAMESPACE),
+                            AddressingConstants.Final.WSA_NAMESPACE);
+            assertNotNull(messageInformationHeaders);
+            assertNotNull(messageInformationHeaders.getTo());
+            assertNotNull(messageInformationHeaders.getTo().getReferenceParameters());
+            AnyContentType referenceParameters = messageInformationHeaders.getTo().getReferenceParameters();
+            QName qName = new QName("http://ws.apache.org/namespaces/axis2", "ParamOne", "axis2");
+            assertNotNull(referenceParameters.getReferenceValue(qName));
+
+        } catch (Exception e) {
+            e.printStackTrace();
+
+            log.info(e.getMessage());
+            fail(" An Exception has occured " + e.getMessage());
+        }
     }