Author: dims
Date: Mon Apr 17 12:20:22 2006
New Revision: 394756

URL: http://svn.apache.org/viewcvs?rev=394756&view=rev
Log:
Fix for AXIS2-564 - Addressing throwing java.lang.NullPointerException when 
load is heavy


Modified:
    
webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingFinalInHandler.java
    
webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingInHandler.java
    
webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingOutHandler.java
    
webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingSubmissionInHandler.java

Modified: 
webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingFinalInHandler.java
URL: 
http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingFinalInHandler.java?rev=394756&r1=394755&r2=394756&view=diff
==============================================================================
--- 
webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingFinalInHandler.java
 (original)
+++ 
webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingFinalInHandler.java
 Mon Apr 17 12:20:22 2006
@@ -37,11 +37,11 @@
     }
 
 
-    protected void extractToEprReferenceParameters(EndpointReference toEPR, 
SOAPHeader header) {
+    protected void extractToEprReferenceParameters(EndpointReference toEPR, 
SOAPHeader header, String namespace) {
         Iterator headerBlocks = header.getChildElements();
         while (headerBlocks.hasNext()) {
             SOAPHeaderBlock soapHeaderBlock = (SOAPHeaderBlock) 
headerBlocks.next();
-            OMAttribute isRefParamAttr = soapHeaderBlock.getAttribute(new 
QName(addressingNamespace, "IsReferenceParameter"));
+            OMAttribute isRefParamAttr = soapHeaderBlock.getAttribute(new 
QName(namespace, "IsReferenceParameter"));
             if (isRefParamAttr != null && 
"true".equals(isRefParamAttr.getAttributeValue())) {
                 toEPR.addReferenceParameter(soapHeaderBlock.getQName(), 
soapHeaderBlock.getText());
             }

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=394756&r1=394755&r2=394756&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
 Mon Apr 17 12:20:22 2006
@@ -44,6 +44,7 @@
     private OMNamespace addressingNSObject;
 
     public void invoke(MessageContext msgContext) throws AxisFault {
+        String namespace = addressingNamespace;
         SOAPHeader header = msgContext.getEnvelope().getHeader();
 
         // if there is some one who has already found addressing, do not do 
anything here.
@@ -60,13 +61,13 @@
         logger.debug("Starting " + addressingVersion + " IN handler ...");
 
         ArrayList addressingHeaders;
-        addressingHeaders = 
header.getHeaderBlocksWithNSURI(addressingNamespace);
+        addressingHeaders = header.getHeaderBlocksWithNSURI(namespace);
         if (addressingHeaders != null && addressingHeaders.size() > 0) {
-            msgContext.setProperty(WS_ADDRESSING_VERSION, addressingNamespace);
+            msgContext.setProperty(WS_ADDRESSING_VERSION, namespace);
             
msgContext.setProperty(Constants.Configuration.DISABLE_ADDRESSING_FOR_OUT_MESSAGES,
 Boolean.FALSE);
-            addressingNSObject = ((OMElement) 
addressingHeaders.get(0)).findNamespace(addressingNamespace, "");
+            addressingNSObject = ((OMElement) 
addressingHeaders.get(0)).findNamespace(namespace, "");
             logger.debug(addressingVersion + " Headers present in the SOAP 
message. Starting to process ...");
-            extractAddressingInformation(header, msgContext, 
addressingHeaders, addressingNamespace);
+            extractAddressingInformation(header, msgContext, 
addressingHeaders, namespace);
         } else {
             
msgContext.setProperty(Constants.Configuration.DISABLE_ADDRESSING_FOR_OUT_MESSAGES,
 Boolean.TRUE);
             logger.debug("No Headers present corresponding to " + 
addressingVersion);
@@ -76,7 +77,7 @@
     }
 
     protected Options extractAddressingInformation(SOAPHeader header, 
MessageContext messageContext,
-                                                   ArrayList 
addressingHeaders, String addressingNamespace) throws AxisFault {
+                                                   ArrayList 
addressingHeaders, String namespace) throws AxisFault {
 
         Options messageContextOptions = messageContext.getOptions();
         
@@ -119,13 +120,13 @@
                 continue;
             
             if (WSA_TO.equals(soapHeaderBlock.getLocalName()) && !ignoreTo) {
-                extractToEPRInformation(soapHeaderBlock, 
messageContextOptions, header);
+                extractToEPRInformation(soapHeaderBlock, 
messageContextOptions, header, namespace);
             } else if (WSA_FROM.equals(soapHeaderBlock.getLocalName()) && 
!ignoreFrom) {
-                extractFromEPRInformation(messageContextOptions, 
soapHeaderBlock, addressingNamespace);
+                extractFromEPRInformation(messageContextOptions, 
soapHeaderBlock, namespace);
             } else if (WSA_REPLY_TO.equals(soapHeaderBlock.getLocalName()) && 
!ignoreReplyTo) {
-                extractReplyToEPRInformation(messageContextOptions, 
soapHeaderBlock, addressingNamespace);
+                extractReplyToEPRInformation(messageContextOptions, 
soapHeaderBlock, namespace);
             } else if (WSA_FAULT_TO.equals(soapHeaderBlock.getLocalName()) && 
!ignoreFaultTo) {
-                extractFaultToEPRInformation(messageContextOptions, 
soapHeaderBlock, addressingNamespace);
+                extractFaultToEPRInformation(messageContextOptions, 
soapHeaderBlock, namespace);
             } else if (WSA_MESSAGE_ID.equals(soapHeaderBlock.getLocalName()) 
&& !ignoreMessageID) {
                 messageContextOptions.setMessageId(soapHeaderBlock.getText());
                 soapHeaderBlock.setProcessed();
@@ -133,7 +134,7 @@
                 messageContextOptions.setAction(soapHeaderBlock.getText());
                 soapHeaderBlock.setProcessed();
             } else if (WSA_RELATES_TO.equals(soapHeaderBlock.getLocalName()) 
&& !ignoreRelatesTo) {
-                extractRelatesToInformation(soapHeaderBlock, 
addressingNamespace, messageContextOptions);
+                extractRelatesToInformation(soapHeaderBlock, namespace, 
messageContextOptions);
             }
         }
 
@@ -188,7 +189,7 @@
         throw new AxisFault("A header representing a Message Addressing 
Property is not valid and the message cannot be processed", WSA_DEFAULT_PREFIX 
+ ":" + faultCode);
     }
 
-    protected abstract void extractToEprReferenceParameters(EndpointReference 
toEPR, SOAPHeader header);
+    protected abstract void extractToEprReferenceParameters(EndpointReference 
toEPR, SOAPHeader header, String namespace);
 
 
     private void extractRelatesToInformation(SOAPHeaderBlock soapHeaderBlock, 
String addressingNamespace, Options messageContextOptions) {
@@ -244,7 +245,7 @@
         soapHeaderBlock.setProcessed();
     }
 
-    private void extractToEPRInformation(SOAPHeaderBlock soapHeaderBlock, 
Options messageContextOptions, SOAPHeader header) {
+    private void extractToEPRInformation(SOAPHeaderBlock soapHeaderBlock, 
Options messageContextOptions, SOAPHeader header, String namespace) {
 
         EndpointReference epr;
         //here the addressing epr overidde what ever already there in the 
message context
@@ -252,7 +253,7 @@
         messageContextOptions.setTo(epr);
 
         // check for reference parameters
-        extractToEprReferenceParameters(epr, header);
+        extractToEprReferenceParameters(epr, header, namespace);
         soapHeaderBlock.setProcessed();
 
     }

Modified: 
webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingOutHandler.java
URL: 
http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingOutHandler.java?rev=394756&r1=394755&r2=394756&view=diff
==============================================================================
--- 
webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingOutHandler.java
 (original)
+++ 
webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingOutHandler.java
 Mon Apr 17 12:20:22 2006
@@ -53,6 +53,7 @@
         SOAPFactory factory = 
(SOAPFactory)msgContext.getEnvelope().getOMFactory();
         
         OMNamespace addressingNamespaceObject;
+        String namespace = addressingNamespace;
 
         // it should be able to disable addressing by some one.
         Boolean
@@ -75,25 +76,25 @@
             // since we support only two addressing versions I can avoid 
multiple  ifs here.
             // see that if message context property holds something other than 
Final.WSA_NAMESPACE
             // we always defaults to Submission.WSA_NAMESPACE. Hope this is 
fine.
-            addressingNamespace = 
Final.WSA_NAMESPACE.equals(addressingVersionFromCurrentMsgCtxt)
+            namespace = 
Final.WSA_NAMESPACE.equals(addressingVersionFromCurrentMsgCtxt)
                     ? Final.WSA_NAMESPACE : Submission.WSA_NAMESPACE;
         } else if (msgContext.getOperationContext() != null)
         { // check for a IN message context, else default to WSA Final
             MessageContext inMessageContext = msgContext.getOperationContext()
                     .getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
             if (inMessageContext != null) {
-                addressingNamespace =
+                namespace =
                         (String) inMessageContext.getProperty(
                                 WS_ADDRESSING_VERSION);
             }
         }
 
-        if (addressingNamespace == null || "".equals(addressingNamespace)) {
-            addressingNamespace = Final.WSA_NAMESPACE;
+        if (namespace == null || "".equals(namespace)) {
+            namespace = Final.WSA_NAMESPACE;
         }
         addressingNamespaceObject = factory.createOMNamespace(
-                addressingNamespace, WSA_DEFAULT_PREFIX);
-        anonymousURI = addressingNamespace.equals(Final.WSA_NAMESPACE) ? 
Final.WSA_ANONYMOUS_URL : Submission.WSA_ANONYMOUS_URL;
+                namespace, WSA_DEFAULT_PREFIX);
+        anonymousURI = namespace.equals(Final.WSA_NAMESPACE) ? 
Final.WSA_ANONYMOUS_URL : Submission.WSA_ANONYMOUS_URL;
 
 
         Options messageContextOptions = msgContext.getOptions();
@@ -113,16 +114,16 @@
         envelope.declareNamespace(addressingNamespaceObject);
 
         // processing WSA To
-        processToEPR(messageContextOptions, envelope, 
addressingNamespaceObject);
+        processToEPR(messageContextOptions, envelope, 
addressingNamespaceObject, namespace);
 
         // processing WSA replyTo
-        processReplyTo(envelope, messageContextOptions, msgContext, 
addressingNamespaceObject);
+        processReplyTo(envelope, messageContextOptions, msgContext, 
addressingNamespaceObject, namespace);
 
         // processing WSA From
-        processFromEPR(messageContextOptions, envelope, 
addressingNamespaceObject);
+        processFromEPR(messageContextOptions, envelope, 
addressingNamespaceObject, namespace);
 
         // processing WSA FaultTo
-        processFaultToEPR(messageContextOptions, envelope, 
addressingNamespaceObject);
+        processFaultToEPR(messageContextOptions, envelope, 
addressingNamespaceObject, namespace);
 
         String messageID = messageContextOptions.getMessageId();
         if (messageID != null && 
!isAddressingHeaderAlreadyAvailable(WSA_MESSAGE_ID, envelope,
@@ -141,8 +142,6 @@
 
         // We are done, cleanup the references
         addressingNamespaceObject = null;
-        addressingNamespace = null;
-
     }
 
     private void processWSAAction(Options messageContextOptions, SOAPEnvelope 
envelope,
@@ -211,23 +210,23 @@
         }
     }
 
-    private void processFaultToEPR(Options messageContextOptions, SOAPEnvelope 
envelope, OMNamespace addressingNamespaceObject) {
+    private void processFaultToEPR(Options messageContextOptions, SOAPEnvelope 
envelope, OMNamespace addressingNamespaceObject, String namespace) {
         EndpointReference epr;
         epr = messageContextOptions.getFaultTo();
         if (epr != null) {//optional
-            addToSOAPHeader(epr, AddressingConstants.WSA_FAULT_TO, envelope, 
addressingNamespaceObject);
+            addToSOAPHeader(epr, AddressingConstants.WSA_FAULT_TO, envelope, 
addressingNamespaceObject, namespace);
         }
     }
 
-    private void processFromEPR(Options messageContextOptions, SOAPEnvelope 
envelope, OMNamespace addressingNamespaceObject) {
+    private void processFromEPR(Options messageContextOptions, SOAPEnvelope 
envelope, OMNamespace addressingNamespaceObject, String namespace) {
         EndpointReference epr;
         epr = messageContextOptions.getFrom();
         if (epr != null) {//optional
-            addToSOAPHeader(epr, AddressingConstants.WSA_FROM, envelope, 
addressingNamespaceObject);
+            addToSOAPHeader(epr, AddressingConstants.WSA_FROM, envelope, 
addressingNamespaceObject, namespace);
         }
     }
 
-    private void processReplyTo(SOAPEnvelope envelope, Options 
messageContextOptions, MessageContext msgContext, OMNamespace 
addressingNamespaceObject) {
+    private void processReplyTo(SOAPEnvelope envelope, Options 
messageContextOptions, MessageContext msgContext, OMNamespace 
addressingNamespaceObject, String namespace) {
         EndpointReference epr;
         if (!isAddressingHeaderAlreadyAvailable(WSA_REPLY_TO, envelope, 
addressingNamespaceObject))
         {
@@ -251,35 +250,24 @@
                     epr.setAddress(anonymousURI);
                 }
             }
-            addToSOAPHeader(epr, AddressingConstants.WSA_REPLY_TO, envelope, 
addressingNamespaceObject);
+            addToSOAPHeader(epr, AddressingConstants.WSA_REPLY_TO, envelope, 
addressingNamespaceObject, namespace);
         }
     }
 
-    private void processToEPR(Options messageContextOptions, SOAPEnvelope 
envelope, OMNamespace addressingNamespaceObject) {
+    private void processToEPR(Options messageContextOptions, SOAPEnvelope 
envelope, OMNamespace addressingNamespaceObject, String namespace) {
         EndpointReference epr = messageContextOptions.getTo();
         if (epr != null && !isAddressingHeaderAlreadyAvailable(WSA_TO, 
envelope, addressingNamespaceObject))
         {
             Map referenceParameters = null;
             String address = "";
-//            System.out.println("envelope = " + envelope);
-//            if (envelope.getBody().hasFault()) {
-//                MessageContext inMsgCtxt = 
msgCtxt.getOperationContext().getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
-//                if (inMsgCtxt != null && inMsgCtxt.getFaultTo() != null && 
inMsgCtxt.getFaultTo().getAddress() != null)
-//                {
-//                    EndpointReference faultTo = inMsgCtxt.getFaultTo();
-//                    address = faultTo.getAddress();
-//                    referenceParameters = 
faultTo.getAllReferenceParameters();
-//                }
-//            } else {
             address = epr.getAddress();
             referenceParameters = epr.getAllReferenceParameters();
-//            }
 
             if (!"".equals(address) && address != null) {
                 SOAPHeaderBlock toHeaderBlock = 
envelope.getHeader().addHeaderBlock(WSA_TO, addressingNamespaceObject);
                 toHeaderBlock.setText(address);
             }
-            processToEPRReferenceInformation(referenceParameters, 
envelope.getHeader(),addressingNamespaceObject);
+            processToEPRReferenceInformation(referenceParameters, 
envelope.getHeader(),addressingNamespaceObject, namespace);
         }
     }
 
@@ -299,7 +287,7 @@
 
     protected void addToSOAPHeader(EndpointReference epr,
                                    String type,
-                                   SOAPEnvelope envelope, OMNamespace 
addressingNamespaceObject) {
+                                   SOAPEnvelope envelope, OMNamespace 
addressingNamespaceObject, String namespace) {
         if (epr == null || isAddressingHeaderAlreadyAvailable(type, envelope, 
addressingNamespaceObject))
         {
             return;
@@ -322,7 +310,7 @@
                     envelope.getOMFactory().createOMElement(
                             EPR_REFERENCE_PARAMETERS,
                             addressingNamespaceObject, soapHeaderBlock);
-            processReferenceInformation(referenceParameters, reference);
+            processReferenceInformation(referenceParameters, reference, 
namespace);
 
         }
 
@@ -364,9 +352,9 @@
      *
      * @param referenceInformation
      */
-    private void processReferenceInformation(Map referenceInformation, 
OMElement parent) {
+    private void processReferenceInformation(Map referenceInformation, 
OMElement parent, String namespace) {
 
-        boolean processingWSAFinal = 
Final.WSA_NAMESPACE.equals(addressingNamespace);
+        boolean processingWSAFinal = Final.WSA_NAMESPACE.equals(namespace);
         if (referenceInformation != null && parent != null) {
             Iterator iterator = referenceInformation.keySet().iterator();
             while (iterator.hasNext()) {
@@ -382,9 +370,9 @@
      *
      * @param referenceInformation
      */
-    private void processToEPRReferenceInformation(Map referenceInformation, 
OMElement parent, OMNamespace addressingNamespaceObject) {
+    private void processToEPRReferenceInformation(Map referenceInformation, 
OMElement parent, OMNamespace addressingNamespaceObject, String namespace) {
 
-        boolean processingWSAFinal = 
Final.WSA_NAMESPACE.equals(addressingNamespace);
+        boolean processingWSAFinal = Final.WSA_NAMESPACE.equals(namespace);
         if (referenceInformation != null && parent != null) {
             Iterator iterator = referenceInformation.keySet().iterator();
             while (iterator.hasNext()) {

Modified: 
webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingSubmissionInHandler.java
URL: 
http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingSubmissionInHandler.java?rev=394756&r1=394755&r2=394756&view=diff
==============================================================================
--- 
webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingSubmissionInHandler.java
 (original)
+++ 
webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingSubmissionInHandler.java
 Mon Apr 17 12:20:22 2006
@@ -36,7 +36,7 @@
     }
 
 
-    protected void extractToEprReferenceParameters(EndpointReference toEPR, 
SOAPHeader header) {
+    protected void extractToEprReferenceParameters(EndpointReference toEPR, 
SOAPHeader header, String namespace) {
         // there is no exact way to identify ref parameters for Submission 
version. So let's have a handler
         // at the end of the flow, which puts all the handlers (which are of 
course mustUnderstand=false)
         // as reference parameters


Reply via email to