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 da...@apache.org on 2007/10/17 15:41:31 UTC
svn commit: r585498 -
/webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingOutHandler.java
Author: davidillsley
Date: Wed Oct 17 06:41:31 2007
New Revision: 585498
URL: http://svn.apache.org/viewvc?rev=585498&view=rev
Log:
Clean up ever-expanding logic in AddressingOutHandler
Modified:
webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingOutHandler.java
Modified: webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingOutHandler.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingOutHandler.java?rev=585498&r1=585497&r2=585498&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 Wed Oct 17 06:41:31 2007
@@ -42,6 +42,7 @@
import org.apache.axis2.description.Parameter;
import org.apache.axis2.handlers.AbstractHandler;
import org.apache.axis2.util.JavaUtils;
+import org.apache.axis2.util.LoggingControl;
import org.apache.axis2.util.Utils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -73,7 +74,7 @@
public InvocationResponse invoke(MessageContext msgContext) throws AxisFault {
// it should be able to disable addressing by some one.
if (msgContext.isPropertyTrue(DISABLE_ADDRESSING_FOR_OUT_MESSAGES)) {
- if (log.isTraceEnabled()) {
+ if (LoggingControl.debugLoggingAllowed && log.isTraceEnabled()) {
log.trace(msgContext.getLogIDString() +
" Addressing is disabled. Not adding WS-Addressing headers.");
}
@@ -82,7 +83,7 @@
// Determine the addressin namespace in effect.
Object addressingVersionFromCurrentMsgCtxt = msgContext.getProperty(WS_ADDRESSING_VERSION);
- if (log.isTraceEnabled()) {
+ if (LoggingControl.debugLoggingAllowed && log.isTraceEnabled()) {
log.trace("Addressing version string from messageContext=" +
addressingVersionFromCurrentMsgCtxt);
}
@@ -130,7 +131,7 @@
public WSAHeaderWriter(MessageContext mc, boolean isSubmissionNamespace, boolean addMU,
boolean replace, boolean includeOptional) {
- if (log.isDebugEnabled()) {
+ if (LoggingControl.debugLoggingAllowed && log.isDebugEnabled()) {
log.debug("WSAHeaderWriter: isFinal=" + isSubmissionNamespace + " addMU=" + addMU +
" replace=" + replace + " includeOptional=" + includeOptional);
}
@@ -212,29 +213,23 @@
String messageID = messageContextOptions.getMessageId();
if (messageID != null && !isAddressingHeaderAlreadyAvailable(WSA_MESSAGE_ID, false))
{//optional
- OMElement oe = processStringInfo(messageID, WSA_MESSAGE_ID);
- ArrayList attributes = (ArrayList)messageContext.getProperty(
+ ArrayList attributes = (ArrayList)messageContext.getProperty(
AddressingConstants.MESSAGEID_ATTRIBUTES);
- if (attributes != null && !attributes.isEmpty()) {
- Iterator attrIterator = attributes.iterator();
- while (attrIterator.hasNext()) {
- AttributeHelper.importOMAttribute((OMAttribute)attrIterator.next(), oe);
- }
- }
+ createSOAPHeaderBlock(messageID, WSA_MESSAGE_ID, attributes);
}
}
private void processWSAAction() throws AxisFault {
String action = messageContextOptions.getAction();
- if (log.isTraceEnabled()) {
+ if (LoggingControl.debugLoggingAllowed && log.isTraceEnabled()) {
log.trace(messageContext.getLogIDString() +
" processWSAAction: action from messageContext: " + action);
}
- if (action == null || "".equals(action)) {
+ if (action == null || action.length()==0) {
if (messageContext.getAxisOperation() != null) {
action = messageContext.getAxisOperation().getOutputAction();
- if (log.isTraceEnabled()) {
+ if (LoggingControl.debugLoggingAllowed && log.isTraceEnabled()) {
log.trace(messageContext.getLogIDString() +
" processWSAAction: action from AxisOperation: " + action);
}
@@ -242,25 +237,30 @@
}
// Use the correct fault action for the selected namespace
- if (Final.WSA_FAULT_ACTION.equals(action) || Submission.WSA_FAULT_ACTION.equals(action))
- {
- action = isFinalAddressingNamespace ? Final.WSA_FAULT_ACTION :
- Submission.WSA_FAULT_ACTION;
- messageContextOptions.setAction(action);
- } else if (!isFinalAddressingNamespace && Final.WSA_SOAP_FAULT_ACTION.equals(action)) {
- action = Submission.WSA_FAULT_ACTION;
- messageContextOptions.setAction(action);
+ if(isFinalAddressingNamespace){
+ if(Submission.WSA_FAULT_ACTION.equals(action)){
+ action = Final.WSA_FAULT_ACTION;
+ messageContextOptions.setAction(action);
+ }
+ }else{
+ if(Final.WSA_FAULT_ACTION.equals(action)){
+ action = Submission.WSA_FAULT_ACTION;
+ messageContextOptions.setAction(action);
+ }else if(Final.WSA_SOAP_FAULT_ACTION.equals(action)){
+ action = Submission.WSA_FAULT_ACTION;
+ messageContextOptions.setAction(action);
+ }
}
// If we need to add a wsa:Action header
if (!isAddressingHeaderAlreadyAvailable(WSA_ACTION, false)) {
- if (log.isTraceEnabled()) {
+ if (LoggingControl.debugLoggingAllowed && log.isTraceEnabled()) {
log.trace(messageContext.getLogIDString() +
" processWSAAction: No existing wsa:Action header found");
}
// If we don't have an action to add,
- if (action == null || "".equals(action)) {
- if (log.isTraceEnabled()) {
+ if (action == null || action.length()==0) {
+ if (LoggingControl.debugLoggingAllowed && log.isTraceEnabled()) {
log.trace(messageContext.getLogIDString() +
" processWSAAction: No action to add to header");
}
@@ -271,21 +271,14 @@
throw new AxisFault(AddressingMessages.getMessage("outboundNoAction"));
}
} else {
- if (log.isTraceEnabled()) {
+ if (LoggingControl.debugLoggingAllowed && log.isTraceEnabled()) {
log.trace(messageContext.getLogIDString() +
" processWSAAction: Adding action to header: " + action);
}
// Otherwise just add the header
- OMElement oe = processStringInfo(action, WSA_ACTION);
ArrayList attributes = (ArrayList)messageContext.getProperty(
AddressingConstants.ACTION_ATTRIBUTES);
- if (attributes != null && !attributes.isEmpty()) {
- Iterator attrIterator = attributes.iterator();
- while (attrIterator.hasNext()) {
- AttributeHelper
- .importOMAttribute((OMAttribute)attrIterator.next(), oe);
- }
- }
+ createSOAPHeaderBlock(action, WSA_ACTION, attributes);
}
}
}
@@ -319,36 +312,24 @@
if (relatesTo != null) {
for (int i = 0, length = relatesTo.length; i < length; i++) {
- OMElement relatesToHeader = processStringInfo(relatesTo[i].getValue(),
- WSA_RELATES_TO);
+ OMElement relatesToHeader = createSOAPHeaderBlock(relatesTo[i].getValue(),
+ WSA_RELATES_TO, relatesTo[i].getExtensibilityAttributes());
String relationshipType = relatesTo[i].getRelationshipType();
-
if (relatesToHeader != null) {
- if (relatesTo[i].getExtensibilityAttributes() != null) {
- Iterator attributes =
- relatesTo[i].getExtensibilityAttributes().iterator();
- while (attributes.hasNext()) {
- OMAttribute oma = (OMAttribute)attributes.next();
- AttributeHelper.importOMAttribute(oma, relatesToHeader);
- }
+
+ if(!includeOptionalHeaders){
+ if (Final.WSA_DEFAULT_RELATIONSHIP_TYPE.equals(relationshipType) ||
+ Submission.WSA_DEFAULT_RELATIONSHIP_TYPE
+ .equals(relationshipType)) {
+ relationshipType = null;
+ }
+ }
+
+ if(relationshipType != null){
+ relatesToHeader.addAttribute(WSA_RELATES_TO_RELATIONSHIP_TYPE,
+ relationshipType,
+ null);
}
-
- if (Final.WSA_DEFAULT_RELATIONSHIP_TYPE.equals(relationshipType) ||
- Submission.WSA_DEFAULT_RELATIONSHIP_TYPE
- .equals(relationshipType)) {
- if (includeOptionalHeaders) {
- relationshipType = isFinalAddressingNamespace ?
- Final.WSA_DEFAULT_RELATIONSHIP_TYPE :
- Submission.WSA_DEFAULT_RELATIONSHIP_TYPE;
- relatesTo[i].setRelationshipType(relationshipType);
- } else {
- continue; //Omit the relationship type
- }
- }
-
- relatesToHeader.addAttribute(WSA_RELATES_TO_RELATIONSHIP_TYPE,
- relationshipType,
- null);
}
}
}
@@ -389,10 +370,8 @@
private void processToEPR() {
EndpointReference epr = messageContextOptions.getTo();
if (epr != null && !isAddressingHeaderAlreadyAvailable(WSA_TO, false)) {
- Map referenceParameters = epr.getAllReferenceParameters();
String address = epr.getAddress();
-
- if (!"".equals(address) && address != null) {
+ if (address != null && address.length()!=0) {
if (!includeOptionalHeaders && isFinalAddressingNamespace &&
(Final.WSA_ANONYMOUS_URL.equals(address) ||
//Don't use epr.hasAnonymousAddress() here as it may
@@ -400,30 +379,27 @@
{ //recognize none WS-Addressing anonymous values.
return; //Omit the header.
}
-
- SOAPHeaderBlock toHeaderBlock =
- header.addHeaderBlock(WSA_TO, addressingNamespaceObject);
- toHeaderBlock.setText(address);
- if (epr.getAddressAttributes() != null) {
- Iterator addressAttributes = epr.getAddressAttributes().iterator();
- while (addressAttributes.hasNext()) {
- OMAttribute attr = (OMAttribute)addressAttributes.next();
- AttributeHelper.importOMAttribute(attr, toHeaderBlock);
- }
- }
+ createSOAPHeaderBlock(address, WSA_TO, epr.getAddressAttributes());
}
- processToEPRReferenceInformation(referenceParameters, header);
+ processToEPRReferenceInformation(epr.getAllReferenceParameters(), header);
}
}
- private OMElement processStringInfo(String value, String headerName) {
- if (log.isTraceEnabled()) {
- log.trace("processStringInfo: value=" + value + " headerName=" + headerName);
+ private OMElement createSOAPHeaderBlock(String value, String headerName, ArrayList attributes) {
+ if (LoggingControl.debugLoggingAllowed && log.isTraceEnabled()) {
+ log.trace("createSOAPHeaderBlock: value=" + value + " headerName=" + headerName);
}
- if (!"".equals(value) && value != null) {
+ if (value != null && value.length()!=0) {
SOAPHeaderBlock soapHeaderBlock =
header.addHeaderBlock(headerName, addressingNamespaceObject);
soapHeaderBlock.addChild(factory.createOMText(value));
+ if (attributes != null && !attributes.isEmpty()) {
+ Iterator attrIterator = attributes.iterator();
+ while (attrIterator.hasNext()) {
+ AttributeHelper
+ .importOMAttribute((OMAttribute)attrIterator.next(), soapHeaderBlock);
+ }
+ }
return soapHeaderBlock;
}
return null;
@@ -434,7 +410,7 @@
String anonymous = isFinalAddressingNamespace ?
Final.WSA_ANONYMOUS_URL : Submission.WSA_ANONYMOUS_URL;
- if (log.isTraceEnabled()) {
+ if (LoggingControl.debugLoggingAllowed && log.isTraceEnabled()) {
log.trace("addToSOAPHeader: epr=" + epr + " headerName=" + headerName);
}
@@ -502,46 +478,46 @@
* true - if new headers can't be added.
*/
private boolean isAddressingHeaderAlreadyAvailable(String name, boolean multipleHeaders) {
- QName qname = new QName(addressingNamespace, name, WSA_DEFAULT_PREFIX);
- boolean status = false;
+ boolean status = false;
- if (multipleHeaders) {
- if (replaceHeaders) {
- Iterator iterator = header.getChildrenWithName(qname);
- while (iterator.hasNext()) {
- OMElement addressingHeader = (OMElement)iterator.next();
- addressingHeader.detach();
- }
- }
- } else {
- boolean exists = didAddressingHeaderExist(name);
-
- if (exists && replaceHeaders) {
- OMElement addressingHeader = header.getFirstChildWithName(qname);
- if (log.isTraceEnabled()) {
- log.trace("isAddressingHeaderAlreadyAvailable: Removing existing header:" +
- addressingHeader.getLocalName());
- }
- addressingHeader.detach();
- } else {
- status = exists;
- }
- }
+ if (multipleHeaders) {
+ if (replaceHeaders) {
+ QName qname = new QName(addressingNamespace, name, WSA_DEFAULT_PREFIX);
+ Iterator iterator = header.getChildrenWithName(qname);
+ while (iterator.hasNext()) {
+ OMElement addressingHeader = (OMElement)iterator.next();
+ addressingHeader.detach();
+ }
+ }
+ } else {
+ boolean exists = didAddressingHeaderExist(name);
+ if (exists && replaceHeaders) {
+ QName qname = new QName(addressingNamespace, name, WSA_DEFAULT_PREFIX);
+ OMElement addressingHeader = header.getFirstChildWithName(qname);
+ if (LoggingControl.debugLoggingAllowed && log.isTraceEnabled()) {
+ log.trace("isAddressingHeaderAlreadyAvailable: Removing existing header:" +
+ addressingHeader.getLocalName());
+ }
+ addressingHeader.detach();
+ } else {
+ status = exists;
+ }
+ }
- if (log.isTraceEnabled()) {
- log.trace("isAddressingHeaderAlreadyAvailable: name=" + name + " status=" + status);
- }
- return status;
+ if (LoggingControl.debugLoggingAllowed && log.isTraceEnabled()) {
+ log.trace("isAddressingHeaderAlreadyAvailable: name=" + name + " status=" + status);
+ }
+ return status;
}
-
+
private boolean didAddressingHeaderExist(String headerName){
- if (log.isTraceEnabled()) {
+ if (LoggingControl.debugLoggingAllowed && log.isTraceEnabled()) {
log.trace("didAddressingHeaderExist: headerName=" + headerName);
}
boolean result = false;
if(existingWSAHeaders != null){
result = existingWSAHeaders.contains(headerName);
- if (log.isTraceEnabled()) {
+ if (LoggingControl.debugLoggingAllowed && log.isTraceEnabled()) {
log.trace("didAddressingHeaderExist: existingWSAHeaders=" + existingWSAHeaders+" result="+result);
}
}
@@ -559,7 +535,7 @@
for (int i = 0, size = headers.size(); i < size; i++) {
SOAPHeaderBlock soapHeaderBlock = (SOAPHeaderBlock)headers.get(i);
soapHeaderBlock.setMustUnderstand(true);
- if (log.isTraceEnabled()) {
+ if (LoggingControl.debugLoggingAllowed && log.isTraceEnabled()) {
log.trace(
"processMustUnderstandProperty: Setting mustUnderstand=true on: " +
soapHeaderBlock.getLocalName());
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org