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