|
From: <jbo...@li...> - 2006-06-08 11:07:22
|
Author: kev...@jb...
Date: 2006-06-08 05:34:09 -0400 (Thu, 08 Jun 2006)
New Revision: 4668
Added:
labs/jbosstm/trunk/XTS/WS-C/dev/src/com/arjuna/webservices/wsaddr2005/handlers/HandlerAddressingContext.java
Modified:
labs/jbosstm/trunk/XTS/WS-C/dev/src/com/arjuna/webservices/wsaddr2005/AddressingContext.java
labs/jbosstm/trunk/XTS/WS-C/dev/src/com/arjuna/webservices/wsaddr2005/handlers/ActionHandler.java
labs/jbosstm/trunk/XTS/WS-C/dev/src/com/arjuna/webservices/wsaddr2005/handlers/AddressingInterceptorHandler.java
labs/jbosstm/trunk/XTS/WS-C/dev/src/com/arjuna/webservices/wsaddr2005/handlers/FaultToHandler.java
labs/jbosstm/trunk/XTS/WS-C/dev/src/com/arjuna/webservices/wsaddr2005/handlers/FromHandler.java
labs/jbosstm/trunk/XTS/WS-C/dev/src/com/arjuna/webservices/wsaddr2005/handlers/MessageIDHandler.java
labs/jbosstm/trunk/XTS/WS-C/dev/src/com/arjuna/webservices/wsaddr2005/handlers/ReplyToHandler.java
labs/jbosstm/trunk/XTS/WS-C/dev/src/com/arjuna/webservices/wsaddr2005/handlers/ToHandler.java
Log:
Factor out WSA error handling
Modified: labs/jbosstm/trunk/XTS/WS-C/dev/src/com/arjuna/webservices/wsaddr2005/AddressingContext.java
===================================================================
--- labs/jbosstm/trunk/XTS/WS-C/dev/src/com/arjuna/webservices/wsaddr2005/AddressingContext.java 2006-06-08 08:20:25 UTC (rev 4667)
+++ labs/jbosstm/trunk/XTS/WS-C/dev/src/com/arjuna/webservices/wsaddr2005/AddressingContext.java 2006-06-08 09:34:09 UTC (rev 4668)
@@ -34,7 +34,6 @@
import com.arjuna.webservices.SoapFault;
import com.arjuna.webservices.logging.WSCLogger;
import com.arjuna.webservices.stax.AnyContentSupport;
-import com.arjuna.webservices.stax.ElementContent;
import com.arjuna.webservices.stax.NamedElement;
import com.arjuna.webservices.util.StreamHelper;
@@ -47,7 +46,7 @@
/**
* The key used for the addressing context within a message exchange.
*/
- private static final byte[] ADDRESSING_CONTEXT_PROPERTY = new byte[0] ;
+ protected static final byte[] ADDRESSING_CONTEXT_PROPERTY = new byte[0] ;
/**
* The To header.
@@ -79,15 +78,6 @@
private List relatesTo ;
/**
- * The fault header name.
- */
- private QName faultHeaderName ;
- /**
- * The fault header.
- */
- private ElementContent faultHeader ;
-
- /**
* The associated request addressing context.
*/
private AddressingContext requestContext ;
@@ -95,7 +85,7 @@
/**
* Default constructor.
*/
- private AddressingContext()
+ protected AddressingContext()
{
}
@@ -243,42 +233,6 @@
}
/**
- * Get the fault header name.
- * @return The fault header name.
- */
- public QName getFaultHeaderName()
- {
- return faultHeaderName ;
- }
-
- /**
- * Set the fault header name.
- * @param faultHeaderName The fault header name.
- */
- public void setFaultHeaderName(final QName faultHeaderName)
- {
- this.faultHeaderName = faultHeaderName;
- }
-
- /**
- * Get the fault header.
- * @return The fault header.
- */
- public ElementContent getFaultHeader()
- {
- return faultHeader ;
- }
-
- /**
- * Set the fault header.
- * @param faultHeader The fault header.
- */
- public void setFaultHeader(final ElementContent faultHeader)
- {
- this.faultHeader = faultHeader;
- }
-
- /**
* Get the associated request context.
* @return The associated request context or null if no association exists.
*/
Modified: labs/jbosstm/trunk/XTS/WS-C/dev/src/com/arjuna/webservices/wsaddr2005/handlers/ActionHandler.java
===================================================================
--- labs/jbosstm/trunk/XTS/WS-C/dev/src/com/arjuna/webservices/wsaddr2005/handlers/ActionHandler.java 2006-06-08 08:20:25 UTC (rev 4667)
+++ labs/jbosstm/trunk/XTS/WS-C/dev/src/com/arjuna/webservices/wsaddr2005/handlers/ActionHandler.java 2006-06-08 09:34:09 UTC (rev 4668)
@@ -26,7 +26,6 @@
import com.arjuna.webservices.MessageContext;
import com.arjuna.webservices.SoapFault;
-import com.arjuna.webservices.wsaddr2005.AddressingContext;
import com.arjuna.webservices.wsaddr2005.AttributedURIType;
/**
@@ -47,15 +46,23 @@
{
final QName headerName = in.getName() ;
final AttributedURIType action = new AttributedURIType(in) ;
- final AddressingContext addressingContext = AddressingContext.getContext(context) ;
- if (addressingContext.getAction() != null)
+ final HandlerAddressingContext addressingContext = HandlerAddressingContext.getHandlerContext(context) ;
+ if (!addressingContext.isFaultedAction())
{
- addressingContext.setFaultHeaderName(headerName) ;
- addressingContext.setFaultHeader(action) ;
+ if (addressingContext.getAction() != null)
+ {
+ addressingContext.setFaultedAction() ;
+ addressingContext.setAction(null) ;
+ if (addressingContext.getFaultHeaderName() == null)
+ {
+ addressingContext.setFaultHeaderName(headerName) ;
+ addressingContext.setFaultHeader(action) ;
+ }
+ }
+ else
+ {
+ addressingContext.setAction(action) ;
+ }
}
- else
- {
- addressingContext.setAction(action) ;
- }
}
}
Modified: labs/jbosstm/trunk/XTS/WS-C/dev/src/com/arjuna/webservices/wsaddr2005/handlers/AddressingInterceptorHandler.java
===================================================================
--- labs/jbosstm/trunk/XTS/WS-C/dev/src/com/arjuna/webservices/wsaddr2005/handlers/AddressingInterceptorHandler.java 2006-06-08 08:20:25 UTC (rev 4667)
+++ labs/jbosstm/trunk/XTS/WS-C/dev/src/com/arjuna/webservices/wsaddr2005/handlers/AddressingInterceptorHandler.java 2006-06-08 09:34:09 UTC (rev 4668)
@@ -276,7 +276,7 @@
final String action, final XMLStreamReader in)
throws SoapFault
{
- final AddressingContext addressingContext = AddressingContext.getContext(context) ;
+ final HandlerAddressingContext addressingContext = HandlerAddressingContext.getHandlerContext(context) ;
final QName faultHeaderName = addressingContext.getFaultHeaderName() ;
if (faultHeaderName != null)
{
Modified: labs/jbosstm/trunk/XTS/WS-C/dev/src/com/arjuna/webservices/wsaddr2005/handlers/FaultToHandler.java
===================================================================
--- labs/jbosstm/trunk/XTS/WS-C/dev/src/com/arjuna/webservices/wsaddr2005/handlers/FaultToHandler.java 2006-06-08 08:20:25 UTC (rev 4667)
+++ labs/jbosstm/trunk/XTS/WS-C/dev/src/com/arjuna/webservices/wsaddr2005/handlers/FaultToHandler.java 2006-06-08 09:34:09 UTC (rev 4668)
@@ -26,7 +26,6 @@
import com.arjuna.webservices.MessageContext;
import com.arjuna.webservices.SoapFault;
-import com.arjuna.webservices.wsaddr2005.AddressingContext;
import com.arjuna.webservices.wsaddr2005.EndpointReferenceType;
/**
@@ -47,15 +46,23 @@
{
final QName headerName = in.getName() ;
final EndpointReferenceType faultTo = new EndpointReferenceType(in) ;
- final AddressingContext addressingContext = AddressingContext.getContext(context) ;
- if (addressingContext.getFaultTo() != null)
+ final HandlerAddressingContext addressingContext = HandlerAddressingContext.getHandlerContext(context) ;
+ if (!addressingContext.isFaultedFaultTo())
{
- addressingContext.setFaultHeaderName(headerName) ;
- addressingContext.setFaultHeader(faultTo) ;
+ if (addressingContext.getFaultTo() != null)
+ {
+ addressingContext.setFaultedFaultTo() ;
+ addressingContext.setFaultTo(null) ;
+ if (addressingContext.getFaultHeaderName() == null)
+ {
+ addressingContext.setFaultHeaderName(headerName) ;
+ addressingContext.setFaultHeader(faultTo) ;
+ }
+ }
+ else
+ {
+ addressingContext.setFaultTo(faultTo) ;
+ }
}
- else
- {
- addressingContext.setFaultTo(faultTo) ;
- }
}
}
Modified: labs/jbosstm/trunk/XTS/WS-C/dev/src/com/arjuna/webservices/wsaddr2005/handlers/FromHandler.java
===================================================================
--- labs/jbosstm/trunk/XTS/WS-C/dev/src/com/arjuna/webservices/wsaddr2005/handlers/FromHandler.java 2006-06-08 08:20:25 UTC (rev 4667)
+++ labs/jbosstm/trunk/XTS/WS-C/dev/src/com/arjuna/webservices/wsaddr2005/handlers/FromHandler.java 2006-06-08 09:34:09 UTC (rev 4668)
@@ -26,7 +26,6 @@
import com.arjuna.webservices.MessageContext;
import com.arjuna.webservices.SoapFault;
-import com.arjuna.webservices.wsaddr2005.AddressingContext;
import com.arjuna.webservices.wsaddr2005.EndpointReferenceType;
/**
@@ -47,15 +46,23 @@
{
final QName headerName = in.getName() ;
final EndpointReferenceType from = new EndpointReferenceType(in) ;
- final AddressingContext addressingContext = AddressingContext.getContext(context) ;
- if (addressingContext.getFrom() != null)
+ final HandlerAddressingContext addressingContext = HandlerAddressingContext.getHandlerContext(context) ;
+ if (!addressingContext.isFaultedFrom())
{
- addressingContext.setFaultHeaderName(headerName) ;
- addressingContext.setFaultHeader(from) ;
+ if (addressingContext.getFrom() != null)
+ {
+ addressingContext.setFaultedFrom() ;
+ addressingContext.setFrom(null) ;
+ if (addressingContext.getFaultHeaderName() == null)
+ {
+ addressingContext.setFaultHeaderName(headerName) ;
+ addressingContext.setFaultHeader(from) ;
+ }
+ }
+ else
+ {
+ addressingContext.setFrom(from) ;
+ }
}
- else
- {
- addressingContext.setFrom(from) ;
- }
}
}
Added: labs/jbosstm/trunk/XTS/WS-C/dev/src/com/arjuna/webservices/wsaddr2005/handlers/HandlerAddressingContext.java
===================================================================
--- labs/jbosstm/trunk/XTS/WS-C/dev/src/com/arjuna/webservices/wsaddr2005/handlers/HandlerAddressingContext.java 2006-06-08 08:20:25 UTC (rev 4667)
+++ labs/jbosstm/trunk/XTS/WS-C/dev/src/com/arjuna/webservices/wsaddr2005/handlers/HandlerAddressingContext.java 2006-06-08 09:34:09 UTC (rev 4668)
@@ -0,0 +1,230 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. All rights reserved.
+ * See the copyright.txt in the distribution for a full listing
+ * of individual contributors.
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU General Public License, v. 2.0.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE. See the GNU General Public License for more details.
+ * You should have received a copy of the GNU General Public License,
+ * v. 2.0 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301, USA.
+ *
+ * (C) 2005-2006,
+ * @author JBoss Inc.
+ */
+package com.arjuna.webservices.wsaddr2005.handlers;
+
+import javax.xml.namespace.QName;
+
+import com.arjuna.webservices.MessageContext;
+import com.arjuna.webservices.stax.ElementContent;
+import com.arjuna.webservices.wsaddr2005.AddressingContext;
+
+/**
+ * Extension of the standard addressing context to include fault information.
+ * @author kevin
+ */
+class HandlerAddressingContext extends AddressingContext
+{
+ /**
+ * The fault header name.
+ */
+ private QName faultHeaderName ;
+ /**
+ * The fault header.
+ */
+ private ElementContent faultHeader ;
+
+ /**
+ * The faulted To flag.
+ */
+ private boolean faultedTo ;
+ /**
+ * The faulted Action flag.
+ */
+ private boolean faultedAction ;
+ /**
+ * The faulted MessageID flag.
+ */
+ private boolean faultedMessageID ;
+ /**
+ * The faulted From flag.
+ */
+ private boolean faultedFrom ;
+ /**
+ * The faulted ReplyTo flag.
+ */
+ private boolean faultedReplyTo ;
+ /**
+ * The faulted FaultTo flag.
+ */
+ private boolean faultedFaultTo ;
+
+ /**
+ * Default constructor.
+ */
+ private HandlerAddressingContext()
+ {
+ }
+
+ /**
+ * Get the fault header name.
+ * @return The fault header name.
+ */
+ QName getFaultHeaderName()
+ {
+ return faultHeaderName ;
+ }
+
+ /**
+ * Set the fault header name.
+ * @param faultHeaderName The fault header name.
+ */
+ void setFaultHeaderName(final QName faultHeaderName)
+ {
+ this.faultHeaderName = faultHeaderName;
+ }
+
+ /**
+ * Get the fault header.
+ * @return The fault header.
+ */
+ ElementContent getFaultHeader()
+ {
+ return faultHeader ;
+ }
+
+ /**
+ * Set the fault header.
+ * @param faultHeader The fault header.
+ */
+ void setFaultHeader(final ElementContent faultHeader)
+ {
+ this.faultHeader = faultHeader;
+ }
+
+ /**
+ * Has the To header been faulted?
+ * @return true if it has faulted, false otherwise.
+ */
+ boolean isFaultedTo()
+ {
+ return faultedTo ;
+ }
+
+ /**
+ * Set the faulted To flag.
+ */
+ void setFaultedTo()
+ {
+ faultedTo = true ;
+ }
+
+ /**
+ * Has the Action header been faulted?
+ * @return true if it has faulted, false otherwise.
+ */
+ boolean isFaultedAction()
+ {
+ return faultedAction ;
+ }
+
+ /**
+ * Set the faulted Action flag.
+ */
+ void setFaultedAction()
+ {
+ faultedAction = true ;
+ }
+
+ /**
+ * Has the MessageID header been faulted?
+ * @return true if it has faulted, false otherwise.
+ */
+ boolean isFaultedMessageID()
+ {
+ return faultedMessageID ;
+ }
+
+ /**
+ * Set the faulted MessageID flag.
+ */
+ void setFaultedMessageID()
+ {
+ faultedMessageID = true ;
+ }
+
+ /**
+ * Has the From header been faulted?
+ * @return true if it has faulted, false otherwise.
+ */
+ boolean isFaultedFrom()
+ {
+ return faultedFrom ;
+ }
+
+ /**
+ * Set the faulted From flag.
+ */
+ void setFaultedFrom()
+ {
+ faultedFrom = true ;
+ }
+
+ /**
+ * Has the ReplyTo header been faulted?
+ * @return true if it has faulted, false otherwise.
+ */
+ boolean isFaultedReplyTo()
+ {
+ return faultedReplyTo ;
+ }
+
+ /**
+ * Set the faulted ReplyTo flag.
+ */
+ void setFaultedReplyTo()
+ {
+ faultedReplyTo = true ;
+ }
+
+ /**
+ * Has the FaultTo header been faulted?
+ * @return true if it has faulted, false otherwise.
+ */
+ boolean isFaultedFaultTo()
+ {
+ return faultedFaultTo ;
+ }
+
+ /**
+ * Set the faulted FaultTo flag.
+ */
+ void setFaultedFaultTo()
+ {
+ faultedFaultTo = true ;
+ }
+
+ /**
+ * Get the addressing context from the message context if present.
+ * @param messageContext The message context.
+ * @return The addressing context or null if not present.
+ */
+ public static HandlerAddressingContext getHandlerContext(final MessageContext messageContext)
+ {
+ final HandlerAddressingContext addressingContext = (HandlerAddressingContext)messageContext.getProperty(ADDRESSING_CONTEXT_PROPERTY) ;
+ if (addressingContext != null)
+ {
+ return addressingContext ;
+ }
+ final HandlerAddressingContext newAddressingContext = new HandlerAddressingContext() ;
+ setContext(messageContext, newAddressingContext) ;
+ return newAddressingContext ;
+ }
+}
Modified: labs/jbosstm/trunk/XTS/WS-C/dev/src/com/arjuna/webservices/wsaddr2005/handlers/MessageIDHandler.java
===================================================================
--- labs/jbosstm/trunk/XTS/WS-C/dev/src/com/arjuna/webservices/wsaddr2005/handlers/MessageIDHandler.java 2006-06-08 08:20:25 UTC (rev 4667)
+++ labs/jbosstm/trunk/XTS/WS-C/dev/src/com/arjuna/webservices/wsaddr2005/handlers/MessageIDHandler.java 2006-06-08 09:34:09 UTC (rev 4668)
@@ -26,7 +26,6 @@
import com.arjuna.webservices.MessageContext;
import com.arjuna.webservices.SoapFault;
-import com.arjuna.webservices.wsaddr2005.AddressingContext;
import com.arjuna.webservices.wsaddr2005.AttributedURIType;
/**
@@ -47,15 +46,22 @@
{
final QName headerName = in.getName() ;
final AttributedURIType messageID = new AttributedURIType(in) ;
- final AddressingContext addressingContext = AddressingContext.getContext(context) ;
- if (addressingContext.getMessageID() != null)
+ final HandlerAddressingContext addressingContext = HandlerAddressingContext.getHandlerContext(context) ;
+ if (!addressingContext.isFaultedMessageID())
{
- addressingContext.setFaultHeaderName(headerName) ;
- addressingContext.setFaultHeader(messageID) ;
+ if (addressingContext.getMessageID() != null)
+ {
+ addressingContext.setFaultedMessageID() ;
+ if (addressingContext.getFaultHeaderName() == null)
+ {
+ addressingContext.setFaultHeaderName(headerName) ;
+ addressingContext.setFaultHeader(messageID) ;
+ }
+ }
+ else
+ {
+ addressingContext.setMessageID(messageID) ;
+ }
}
- else
- {
- addressingContext.setMessageID(messageID) ;
- }
}
}
Modified: labs/jbosstm/trunk/XTS/WS-C/dev/src/com/arjuna/webservices/wsaddr2005/handlers/ReplyToHandler.java
===================================================================
--- labs/jbosstm/trunk/XTS/WS-C/dev/src/com/arjuna/webservices/wsaddr2005/handlers/ReplyToHandler.java 2006-06-08 08:20:25 UTC (rev 4667)
+++ labs/jbosstm/trunk/XTS/WS-C/dev/src/com/arjuna/webservices/wsaddr2005/handlers/ReplyToHandler.java 2006-06-08 09:34:09 UTC (rev 4668)
@@ -26,7 +26,6 @@
import com.arjuna.webservices.MessageContext;
import com.arjuna.webservices.SoapFault;
-import com.arjuna.webservices.wsaddr2005.AddressingContext;
import com.arjuna.webservices.wsaddr2005.EndpointReferenceType;
/**
@@ -47,15 +46,23 @@
{
final QName headerName = in.getName() ;
final EndpointReferenceType replyTo = new EndpointReferenceType(in) ;
- final AddressingContext addressingContext = AddressingContext.getContext(context) ;
- if (addressingContext.getReplyTo() != null)
+ final HandlerAddressingContext addressingContext = HandlerAddressingContext.getHandlerContext(context) ;
+ if (!addressingContext.isFaultedReplyTo())
{
- addressingContext.setFaultHeaderName(headerName) ;
- addressingContext.setFaultHeader(replyTo) ;
+ if (addressingContext.getReplyTo() != null)
+ {
+ addressingContext.setFaultedReplyTo() ;
+ addressingContext.setReplyTo(null) ;
+ if (addressingContext.getFaultHeaderName() == null)
+ {
+ addressingContext.setFaultHeaderName(headerName) ;
+ addressingContext.setFaultHeader(replyTo) ;
+ }
+ }
+ else
+ {
+ addressingContext.setReplyTo(replyTo) ;
+ }
}
- else
- {
- addressingContext.setReplyTo(replyTo) ;
- }
}
}
Modified: labs/jbosstm/trunk/XTS/WS-C/dev/src/com/arjuna/webservices/wsaddr2005/handlers/ToHandler.java
===================================================================
--- labs/jbosstm/trunk/XTS/WS-C/dev/src/com/arjuna/webservices/wsaddr2005/handlers/ToHandler.java 2006-06-08 08:20:25 UTC (rev 4667)
+++ labs/jbosstm/trunk/XTS/WS-C/dev/src/com/arjuna/webservices/wsaddr2005/handlers/ToHandler.java 2006-06-08 09:34:09 UTC (rev 4668)
@@ -26,7 +26,6 @@
import com.arjuna.webservices.MessageContext;
import com.arjuna.webservices.SoapFault;
-import com.arjuna.webservices.wsaddr2005.AddressingContext;
import com.arjuna.webservices.wsaddr2005.AttributedURIType;
/**
@@ -47,15 +46,23 @@
{
final QName headerName = in.getName() ;
final AttributedURIType to = new AttributedURIType(in) ;
- final AddressingContext addressingContext = AddressingContext.getContext(context) ;
- if (addressingContext.getTo() != null)
+ final HandlerAddressingContext addressingContext = HandlerAddressingContext.getHandlerContext(context) ;
+ if (!addressingContext.isFaultedTo())
{
- addressingContext.setFaultHeaderName(headerName) ;
- addressingContext.setFaultHeader(to) ;
+ if (addressingContext.getTo() != null)
+ {
+ addressingContext.setFaultedTo() ;
+ addressingContext.setTo(null) ;
+ if (addressingContext.getFaultHeaderName() == null)
+ {
+ addressingContext.setFaultHeaderName(headerName) ;
+ addressingContext.setFaultHeader(to) ;
+ }
+ }
+ else
+ {
+ addressingContext.setTo(to) ;
+ }
}
- else
- {
- addressingContext.setTo(to) ;
- }
}
}
|