[jboss-svn-commits] JBossWS SVN: r901 - in branches/tdiesler/trunk/src: main/java/org/jboss/ws/addressing/jaxws main/java/org/jboss/ws/binding/soap main/java/org/jboss/ws/common main/java/org/jboss/ws/eventing main/java/org/jboss/ws/integration/jboss main/java/org/jboss/ws/integration/jboss/jms main/java/org/jboss/ws/jaxrpc main/java/org/jboss/ws/jaxrpc/handler main/java/org/jboss/ws/jaxws/client main/java/org/jboss/ws/jaxws/core main/java/org/jboss/ws/jaxws/handler main/java/org/jboss/ws/jbossxb main/java/org/jboss/ws/metadata main/java/org/jboss/ws/metadata/config/jaxrpc main/java/org/jboss/ws/metadata/config/jaxws main/java/org/jboss/ws/metadata/j2ee main/java/org/jboss/ws/metadata/jsr109 main/java/org/jboss/ws/metadata/jsr181 main/java/org/jboss/ws/server main/java/org/jboss/ws/soap main/java/org/jboss/ws/utils main/java/org/jboss/ws/wsse main/java/org/jboss/ws/wsse/jaxws main/java/org/jboss/ws/xop test/ant test/java/org/jboss/test/ws/binding test/java/org/jboss/test/ws/jaxws/logi! calhandler test/java/org/jboss/test/ws/xop test/resources/jaxws/logicalhandler/META-INF test/resources/jaxws/logicalhandler/META-INF/wsdl test/resources/jaxws/logicalhandler/WEB-INF

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Sep 5 15:51:37 EDT 2006


Author: thomas.diesler at jboss.com
Date: 2006-09-05 15:49:56 -0400 (Tue, 05 Sep 2006)
New Revision: 901

Added:
   branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/logicalhandler/LogicalHandlerJAXBTestCase.java
   branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/logicalhandler/LogicalHandlerSourceTestCase.java
   branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/logicalhandler/LogicalJAXBHandler.java
   branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/logicalhandler/LogicalSourceHandler.java
   branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/logicalhandler/SOAPEndpointJAXB.java
   branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/logicalhandler/SOAPEndpointJAXBImpl.java
   branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/logicalhandler/SOAPEndpointSource.java
   branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/logicalhandler/SOAPEndpointSourceImpl.java
   branches/tdiesler/trunk/src/test/resources/jaxws/logicalhandler/META-INF/jaxws-client-jaxb-handlers.xml
   branches/tdiesler/trunk/src/test/resources/jaxws/logicalhandler/META-INF/jaxws-client-source-handlers.xml
   branches/tdiesler/trunk/src/test/resources/jaxws/logicalhandler/WEB-INF/jaxws-server-jaxb-handlers.xml
   branches/tdiesler/trunk/src/test/resources/jaxws/logicalhandler/WEB-INF/jaxws-server-source-handlers.xml
   branches/tdiesler/trunk/src/test/resources/jaxws/logicalhandler/WEB-INF/web-jaxb.xml
   branches/tdiesler/trunk/src/test/resources/jaxws/logicalhandler/WEB-INF/web-source.xml
Removed:
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/common/SOAPMessageContextBase.java
   branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/logicalhandler/LogicalHandler.java
   branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/logicalhandler/LogicalHandlerTestCase.java
   branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/logicalhandler/SOAPEndpoint.java
   branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/logicalhandler/SOAPEndpointBean.java
   branches/tdiesler/trunk/src/test/resources/jaxws/logicalhandler/META-INF/jaxws-client-handlers.xml
   branches/tdiesler/trunk/src/test/resources/jaxws/logicalhandler/WEB-INF/jaxws-server-handlers.xml
   branches/tdiesler/trunk/src/test/resources/jaxws/logicalhandler/WEB-INF/web.xml
Modified:
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/addressing/jaxws/WSAddressingServerHandler.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/binding/soap/JAXWSBindingProviderPayload.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/common/CommonClient.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/common/CommonMessageContext.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/eventing/EventingEndpointBase.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/eventing/SubscriptionManagerEndpointImpl.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/integration/jboss/ServiceEndpointInterceptor.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/integration/jboss/ServiceEndpointInvokerEJB21.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/integration/jboss/ServiceEndpointInvokerEJB3.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/integration/jboss/ServiceRefMetaDataAdaptor.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/integration/jboss/jms/JMSMessageDispatcher.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/integration/jboss/jms/JMSTransportSupport.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxrpc/CallImpl.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxrpc/SOAPFaultExceptionHelper.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxrpc/ServiceObjectFactory.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxrpc/handler/ClientHandlerChain.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxrpc/handler/HandlerChainBaseImpl.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxrpc/handler/HandlerDelegateJAXRPC.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxrpc/handler/MessageContextJAXRPC.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxrpc/handler/SOAPMessageContextJAXRPC.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxws/client/ClientImpl.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxws/core/BindingImpl.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxws/core/SOAP11BindingImpl.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxws/core/SOAPBindingImpl.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxws/handler/HandlerChainExecutor.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxws/handler/HandlerDelegateJAXWS.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxws/handler/LogicalMessageImpl.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxws/handler/SOAPMessageContextJAXWS.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/jbossxb/JBossXBSupport.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/ClientEndpointMetaData.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/ServerEndpointMetaData.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/config/jaxrpc/WSConfigFactoryJAXRPC.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/config/jaxws/WSConfigFactoryJAXWS.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/config/jaxws/WSHandlerChainsConfigJAXWS.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/j2ee/UnifiedHandlerMetaData.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr109/WebservicesFactory.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr181/HandlerChainFactory.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr181/HandlerChainMetaData.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr181/HandlerChainsMetaData.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/server/AbstractServiceEndpointInvoker.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/server/ServiceEndpoint.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/server/ServiceEndpointInvokerJSE.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/server/ServiceEndpointManager.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/soap/MessageContextAssociation.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/soap/MessageFactoryImpl.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/soap/SOAPBodyImpl.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/soap/SOAPContentElement.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/soap/SOAPMessageDispatcher.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/utils/ThreadLocalAssociation.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/wsse/WSSecurityDispatcher.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/wsse/jaxws/WSSecurityHandler.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/xop/XOPContext.java
   branches/tdiesler/trunk/src/main/java/org/jboss/ws/xop/XOPMarshallerImpl.java
   branches/tdiesler/trunk/src/test/ant/build-jars.xml
   branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/binding/SOAPBindingTestCase.java
   branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/xop/XOPElementRPCTestCase.java
   branches/tdiesler/trunk/src/test/resources/jaxws/logicalhandler/META-INF/wsdl/TestService.wsdl
Log:
Implement logical jaxws handler with access to jaxb payload
Unbind incoming message before logical handlers are called
Unbind message again after protocol handler changes body payload
Simplify usage of CommonMessageContext


Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/addressing/jaxws/WSAddressingServerHandler.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/addressing/jaxws/WSAddressingServerHandler.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/addressing/jaxws/WSAddressingServerHandler.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -38,7 +38,7 @@
 import org.jboss.logging.Logger;
 import org.jboss.ws.addressing.AddressingConstantsImpl;
 import org.jboss.ws.addressing.metadata.AddressingOpMetaExt;
-import org.jboss.ws.common.SOAPMessageContextBase;
+import org.jboss.ws.common.CommonMessageContext;
 import org.jboss.ws.jaxws.handler.GenericSOAPHandler;
 import org.jboss.ws.metadata.OperationMetaData;
 
@@ -119,7 +119,7 @@
       {
          // supply the response action
 
-         OperationMetaData opMetaData = ((SOAPMessageContextBase)msgContext).getOperationMetaData();
+         OperationMetaData opMetaData = ((CommonMessageContext)msgContext).getOperationMetaData();
 
          if (!isFault && !opMetaData.isOneWayOperation())
          {

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/binding/soap/JAXWSBindingProviderPayload.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/binding/soap/JAXWSBindingProviderPayload.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/binding/soap/JAXWSBindingProviderPayload.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -28,6 +28,7 @@
 import javax.xml.namespace.QName;
 import javax.xml.soap.SOAPMessage;
 import javax.xml.transform.Source;
+import javax.xml.ws.handler.soap.SOAPMessageContext;
 
 import org.jboss.logging.Logger;
 import org.jboss.util.NotImplementedException;
@@ -36,7 +37,7 @@
 import org.jboss.ws.binding.BindingException;
 import org.jboss.ws.binding.EndpointInvocation;
 import org.jboss.ws.binding.UnboundHeader;
-import org.jboss.ws.common.SOAPMessageContextBase;
+import org.jboss.ws.common.CommonMessageContext;
 import org.jboss.ws.jaxws.core.BindingImpl;
 import org.jboss.ws.jaxws.handler.SOAPMessageContextJAXWS;
 import org.jboss.ws.metadata.OperationMetaData;
@@ -100,7 +101,7 @@
 
       try
       {
-         SOAPMessageContextBase msgContext = MessageContextAssociation.peekMessageContext();
+         SOAPMessageContextJAXWS msgContext = (SOAPMessageContextJAXWS)MessageContextAssociation.peekMessageContext();
          if (msgContext == null)
             throw new WSException("MessageContext not available");
 

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/common/CommonClient.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/common/CommonClient.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/common/CommonClient.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -26,8 +26,6 @@
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.rmi.RemoteException;
-import java.util.HashMap;
-import java.util.Iterator;
 import java.util.Map;
 
 import javax.xml.namespace.QName;
@@ -56,8 +54,10 @@
 import org.jboss.ws.metadata.ServiceMetaData;
 import org.jboss.ws.metadata.UnifiedMetaData;
 import org.jboss.ws.metadata.EndpointMetaData.Type;
+import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData.HandlerType;
 import org.jboss.ws.soap.EndpointInfo;
 import org.jboss.ws.soap.MessageContextAssociation;
+import org.jboss.ws.soap.SOAPBodyImpl;
 import org.jboss.ws.soap.SOAPConnectionImpl;
 import org.jboss.ws.utils.HolderUtils;
 import org.jboss.ws.utils.JavaUtils;
@@ -199,9 +199,9 @@
       return epMetaData;
    }
 
-   protected abstract boolean callRequestHandlerChain(QName portName);
+   protected abstract boolean callRequestHandlerChain(QName portName, HandlerType type);
 
-   protected abstract boolean callResponseHandlerChain(QName portName);
+   protected abstract boolean callResponseHandlerChain(QName portName, HandlerType type);
 
    protected abstract void setInboundContextProperties();
 
@@ -225,7 +225,7 @@
       OperationMetaData opMetaData = getOperationMetaData();
 
       // Associate a message context with the current thread
-      SOAPMessageContextBase msgContext = MessageContextAssociation.peekMessageContext();
+      CommonMessageContext msgContext = MessageContextAssociation.peekMessageContext();
       msgContext.setOperationMetaData(opMetaData);
 
       // copy properties to the message context
@@ -251,8 +251,11 @@
          
          // Call the request handlers
          QName portName = epMetaData.getQName();
-
-         if (callRequestHandlerChain(portName))
+         boolean handlerPass = callRequestHandlerChain(portName, HandlerType.PRE);
+         handlerPass = handlerPass && callRequestHandlerChain(portName, HandlerType.ENDPOINT);
+         handlerPass = handlerPass && callRequestHandlerChain(portName, HandlerType.POST);
+         
+         if (handlerPass)
          {
             String targetAddress = getTargetEndpointAddress();
             
@@ -281,13 +284,7 @@
             if (targetAddress == null)
                throw new WSException("Target endpoint address not set");
 
-            // Setup remoting call properties
-            Map<String, Object> callProps = new HashMap<String, Object>();
-            callProps.putAll(getRequestContext());
-
-            syncMessageProperties(callProps, msgContext);
-
-            EndpointInfo epInfo = new EndpointInfo(epMetaData, targetAddress, callProps);
+            EndpointInfo epInfo = new EndpointInfo(epMetaData, targetAddress, getRequestContext());
             
             SOAPMessage resMessage;
             if (oneway)
@@ -300,7 +297,7 @@
             }
 
             // Associate current message with message context
-            msgContext.setMessage(resMessage);
+            msgContext.setSOAPMessage(resMessage);
          }
 
          setInboundContextProperties();
@@ -310,12 +307,26 @@
          if (oneway == false)
          {
             // Call the response handlers
-            callResponseHandlerChain(portName);
-
+            handlerPass = callResponseHandlerChain(portName, HandlerType.POST);
+            
             // unbind the return values
-            SOAPMessage resMessage = msgContext.getMessage();
-            binding.unbindResponseMessage(opMetaData, resMessage, epInv, unboundHeaders);
+            if (handlerPass)
+            {
+               SOAPMessage resMessage = msgContext.getSOAPMessage();
+               binding.unbindResponseMessage(opMetaData, resMessage, epInv, unboundHeaders);
+            }
+            
+            handlerPass = handlerPass && callResponseHandlerChain(portName, HandlerType.ENDPOINT);
+            handlerPass = handlerPass && callResponseHandlerChain(portName, HandlerType.PRE);
 
+            // Check if protocol handlers modified the payload
+            if (((SOAPBodyImpl)reqMessage.getSOAPBody()).isModifiedFromSource())
+            {
+               log.debug("Handler modified body payload, unbind message again");
+               SOAPMessage resMessage = msgContext.getSOAPMessage();
+               binding.unbindResponseMessage(opMetaData, resMessage, epInv, unboundHeaders);
+            }
+            
             retObj = syncOutputParams(inputParams, epInv);
          }
 
@@ -333,8 +344,7 @@
       }
       finally
       {
-         // Snyc context properties with the stub that clients can access them
-         syncMessageProperties(getResponseContext(), msgContext);
+         getResponseContext().putAll(msgContext.getProperties());
       }
    }
 
@@ -351,17 +361,6 @@
 
    protected abstract Map<String, Object> getResponseContext();
 
-   private void syncMessageProperties(Map<String, Object> props, SOAPMessageContextBase msgContext)
-   {
-      Iterator it = msgContext.getPropertyNames();
-      while (it.hasNext())
-      {
-         String propName = (String)it.next();
-         Object property = msgContext.getProperty(propName);
-         props.put(propName, property);
-      }
-   }
-
    /** Synchronize the operation paramters with the call output parameters.
     */
    private Object syncOutputParams(Object[] inParams, EndpointInvocation epInv) throws SOAPException

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/common/CommonMessageContext.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/common/CommonMessageContext.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/common/CommonMessageContext.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -27,6 +27,9 @@
 import java.util.Iterator;
 import java.util.Map;
 
+import javax.xml.soap.SOAPMessage;
+
+import org.jboss.ws.binding.SerializationContext;
 import org.jboss.ws.metadata.EndpointMetaData;
 import org.jboss.ws.metadata.OperationMetaData;
 import org.jboss.xb.binding.NamespaceRegistry;
@@ -37,12 +40,18 @@
  * @author Thomas.Diesler at jboss.org
  * @since 1-Sep-2006
  */
-public abstract class CommonMessageContext
+public abstract class CommonMessageContext 
 {
+   // expandToDOM in the SOAPContentElement should not happen during normal operation 
+   // This property should be set the message context when it is ok to do so.
+   public static String ALLOW_EXPAND_TO_DOM = "org.jboss.ws.allow.expand.dom";
+   
    // The operation for this message ctx
    private EndpointMetaData epMetaData;
    // The operation for this message ctx
    private OperationMetaData opMetaData;
+   // The SOAPMessage in this message context
+   private SOAPMessage soapMessage;
    // The map of the properties
    protected Map<String, Object> props = new HashMap<String, Object>();
 
@@ -69,6 +78,24 @@
       this.opMetaData = opMetaData;
    }
 
+   public SOAPMessage getSOAPMessage()
+   {
+      return soapMessage;
+   }
+
+   public void setSOAPMessage(SOAPMessage soapMessage)
+   {
+      this.soapMessage = soapMessage;
+   }
+
+   public abstract SerializationContext getSerializationContext();
+   
+   /** Gets the namespace registry for this message context */
+   public NamespaceRegistry getNamespaceRegistry()
+   {
+      return getSerializationContext().getNamespaceRegistry();
+   }
+   
    public Map<String, Object> getProperties()
    {
       return props;
@@ -119,7 +146,4 @@
    {
       props.put(name, value);
    }
-   
-   /** Gets the namespace registry for this message context */
-   public abstract NamespaceRegistry getNamespaceRegistry();
 }

Deleted: branches/tdiesler/trunk/src/main/java/org/jboss/ws/common/SOAPMessageContextBase.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/common/SOAPMessageContextBase.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/common/SOAPMessageContextBase.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -1,74 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.ws.common;
-
-// $Id$
-
-import java.util.Iterator;
-
-import javax.xml.soap.SOAPMessage;
-
-import org.jboss.ws.binding.SerializationContext;
-import org.jboss.ws.metadata.EndpointMetaData;
-import org.jboss.ws.metadata.OperationMetaData;
-import org.jboss.xb.binding.NamespaceRegistry;
-
-/**
- * Provides access to the SOAP message and WS meta data.
- * 
- * Both the JAXRPC and the JAXWS SOAPMessageContext im plement this interface.
- *
- * @author Thomas.Diesler at jboss.org
- * @since 1-Aug-2006
- */
-public interface SOAPMessageContextBase 
-{
-   // expandToDOM in the SOAPContentElement should not happen during normal operation 
-   // This property should be set the message context when it is ok to do so.
-   String ALLOW_EXPAND_TO_DOM = "org.jboss.ws.allow.expand.dom";
-
-   public SOAPMessage getMessage();
-
-   public void setMessage(SOAPMessage message);
-
-   public EndpointMetaData getEndpointMetaData();
-
-   public void setEndpointMetaData(EndpointMetaData epMetaData);
-
-   public OperationMetaData getOperationMetaData();
-
-   public void setOperationMetaData(OperationMetaData opMetaData);
-
-   public SerializationContext getSerializationContext();
-   
-   public NamespaceRegistry getNamespaceRegistry();
-   
-   public boolean containsProperty(String name);
-
-   public Object getProperty(String name);
-
-   public Iterator getPropertyNames();
-
-   public void removeProperty(String name);
-
-   public void setProperty(String name, Object value);
-}

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/eventing/EventingEndpointBase.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/eventing/EventingEndpointBase.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/eventing/EventingEndpointBase.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -33,7 +33,7 @@
 import javax.xml.ws.addressing.JAXWSAConstants;
 
 import org.jboss.ws.Constants;
-import org.jboss.ws.common.SOAPMessageContextBase;
+import org.jboss.ws.common.CommonMessageContext;
 import org.jboss.ws.eventing.mgmt.SubscriptionManagerFactory;
 import org.jboss.ws.eventing.mgmt.SubscriptionManagerMBean;
 import org.jboss.ws.soap.MessageContextAssociation;
@@ -53,7 +53,7 @@
     */
    protected static AddressingProperties getAddrProperties()
    {
-      SOAPMessageContextBase msgContext = MessageContextAssociation.peekMessageContext();
+      CommonMessageContext msgContext = MessageContextAssociation.peekMessageContext();
       AddressingProperties inProps = (AddressingProperties)msgContext.getProperty(JAXWSAConstants.SERVER_ADDRESSING_PROPERTIES_INBOUND);
       assertAddrProperties(inProps);
       return inProps;

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/eventing/SubscriptionManagerEndpointImpl.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/eventing/SubscriptionManagerEndpointImpl.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/eventing/SubscriptionManagerEndpointImpl.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -36,7 +36,7 @@
 
 import org.jboss.ws.utils.DOMUtils;
 import org.jboss.ws.Constants;
-import org.jboss.ws.common.SOAPMessageContextBase;
+import org.jboss.ws.common.CommonMessageContext;
 import org.jboss.ws.eventing.element.RenewRequest;
 import org.jboss.ws.eventing.element.RenewResponse;
 import org.jboss.ws.eventing.element.StatusRequest;
@@ -136,7 +136,7 @@
    private URI retrieveSubscriptionId()
    {
       URI subscriptionId = null;
-      SOAPMessageContextBase msgContext = MessageContextAssociation.peekMessageContext();
+      CommonMessageContext msgContext = MessageContextAssociation.peekMessageContext();
       AddressingProperties addrProps = (AddressingProperties)msgContext.getProperty(JAXWSAConstants.SERVER_ADDRESSING_PROPERTIES_INBOUND);
 
       if (null == addrProps)

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/integration/jboss/ServiceEndpointInterceptor.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/integration/jboss/ServiceEndpointInterceptor.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/integration/jboss/ServiceEndpointInterceptor.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -30,7 +30,7 @@
 import org.jboss.invocation.InvocationKey;
 import org.jboss.logging.Logger;
 import org.jboss.ws.binding.EndpointInvocation;
-import org.jboss.ws.common.SOAPMessageContextBase;
+import org.jboss.ws.common.CommonMessageContext;
 import org.jboss.ws.jaxws.core.BindingImpl;
 import org.jboss.ws.jaxws.core.BindingProviderImpl;
 import org.jboss.ws.metadata.OperationMetaData;
@@ -57,7 +57,7 @@
    public Object invoke(final Invocation mi) throws Exception
    {
       // If no msgContext, it's not for us
-      SOAPMessageContextBase msgContext = (SOAPMessageContextBase)mi.getPayloadValue(InvocationKey.SOAP_MESSAGE_CONTEXT);
+      CommonMessageContext msgContext = (CommonMessageContext)mi.getPayloadValue(InvocationKey.SOAP_MESSAGE_CONTEXT);
       if (msgContext == null)
       {
          return getNext().invoke(mi);
@@ -95,7 +95,7 @@
                BindingProviderImpl bindingProvider = new BindingProviderImpl(opMetaData.getEndpointMetaData());
                BindingImpl binding = (BindingImpl)bindingProvider.getBinding();
                SOAPMessage resMessage = (SOAPMessage)binding.bindResponseMessage(opMetaData, epInv);
-               msgContext.setMessage(resMessage);
+               msgContext.setSOAPMessage(resMessage);
             }
             
             // call the response handlers

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/integration/jboss/ServiceEndpointInvokerEJB21.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/integration/jboss/ServiceEndpointInvokerEJB21.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/integration/jboss/ServiceEndpointInvokerEJB21.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -42,7 +42,7 @@
 import org.jboss.security.SecurityAssociation;
 import org.jboss.ws.WSException;
 import org.jboss.ws.binding.EndpointInvocation;
-import org.jboss.ws.common.SOAPMessageContextBase;
+import org.jboss.ws.common.CommonMessageContext;
 import org.jboss.ws.metadata.ServerEndpointMetaData;
 import org.jboss.ws.metadata.EndpointMetaData.Type;
 import org.jboss.ws.metadata.j2ee.UnifiedApplicationMetaData;
@@ -162,7 +162,7 @@
       Principal principal = SecurityAssociation.getPrincipal();
       Object credential = SecurityAssociation.getCredential();
 
-      SOAPMessageContextBase msgContext = MessageContextAssociation.peekMessageContext();
+      CommonMessageContext msgContext = MessageContextAssociation.peekMessageContext();
 
       // invoke on the container
       try
@@ -173,7 +173,7 @@
          Invocation inv = new Invocation(null, method, args, null, principal, credential);
          
          inv.setValue(InvocationKey.SOAP_MESSAGE_CONTEXT, msgContext);
-         inv.setValue(InvocationKey.SOAP_MESSAGE, msgContext.getMessage());
+         inv.setValue(InvocationKey.SOAP_MESSAGE, msgContext.getSOAPMessage());
          inv.setType(InvocationType.SERVICE_ENDPOINT);
 
          // Set the handler callback and endpoint invocation

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/integration/jboss/ServiceEndpointInvokerEJB3.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/integration/jboss/ServiceEndpointInvokerEJB3.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/integration/jboss/ServiceEndpointInvokerEJB3.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -104,7 +104,7 @@
        Principal principal = SecurityAssociation.getPrincipal();
        Object credential = SecurityAssociation.getCredential();
 
-       SOAPMessageContextBase msgContext = MessageContextAssociation.getMessageContext();
+       CommonMessageContext msgContext = MessageContextAssociation.getMessageContext();
        
        Invocation inv = new Invocation(null, method, args, null, principal, credential);
        inv.setValue(InvocationKey.SOAP_MESSAGE_CONTEXT, msgContext);

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/integration/jboss/ServiceRefMetaDataAdaptor.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/integration/jboss/ServiceRefMetaDataAdaptor.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/integration/jboss/ServiceRefMetaDataAdaptor.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -35,6 +35,7 @@
 import org.jboss.ws.metadata.j2ee.UnifiedInitParamMetaData;
 import org.jboss.ws.metadata.j2ee.UnifiedPortComponentRefMetaData;
 import org.jboss.ws.metadata.j2ee.UnifiedServiceRefMetaData;
+import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData.HandlerType;
 
 /**
  * Build container independent service ref meta data 
@@ -67,7 +68,7 @@
       ArrayList<UnifiedHandlerMetaData> handlers = new ArrayList<UnifiedHandlerMetaData>();
       for (HandlerMetaData hmd : srmd.getHandlers())
       {
-         UnifiedHandlerMetaData uhmd = new UnifiedHandlerMetaData(null);
+         UnifiedHandlerMetaData uhmd = new UnifiedHandlerMetaData(null, HandlerType.ENDPOINT);
          uhmd.setHandlerName(hmd.getHandlerName());
          uhmd.setHandlerClass(hmd.getHandlerClass());
          Arrays.asList(hmd.getSoapHeaders());

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/integration/jboss/jms/JMSMessageDispatcher.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/integration/jboss/jms/JMSMessageDispatcher.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/integration/jboss/jms/JMSMessageDispatcher.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -33,7 +33,7 @@
 import org.jboss.util.NotImplementedException;
 import org.jboss.ws.WSException;
 import org.jboss.ws.binding.BindingException;
-import org.jboss.ws.common.SOAPMessageContextBase;
+import org.jboss.ws.common.CommonMessageContext;
 import org.jboss.ws.integration.jboss.ServiceEndpointInvokerMDB;
 import org.jboss.ws.metadata.ServerEndpointMetaData;
 import org.jboss.ws.server.ServiceEndpoint;
@@ -79,7 +79,7 @@
          }
 
          // Associate a message context with the current thread
-         SOAPMessageContextBase msgContext = MessageContextAssociation.peekMessageContext();
+         CommonMessageContext msgContext = MessageContextAssociation.peekMessageContext();
          msgContext.setEndpointMetaData(sepMetaData);
 
          return sep.handleRequest(null, null, reqMessage);

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/integration/jboss/jms/JMSTransportSupport.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/integration/jboss/jms/JMSTransportSupport.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/integration/jboss/jms/JMSTransportSupport.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -51,7 +51,7 @@
 
 import org.jboss.logging.Logger;
 import org.jboss.util.NestedRuntimeException;
-import org.jboss.ws.common.SOAPMessageContextBase;
+import org.jboss.ws.common.CommonMessageContext;
 import org.jboss.ws.jaxrpc.handler.SOAPMessageContextJAXRPC;
 import org.jboss.ws.soap.MessageContextAssociation;
 
@@ -101,7 +101,7 @@
             fromName = "topic/" + ((Topic)destination).getTopicName();
 
          // Associate a message context with the current thread
-         SOAPMessageContextBase msgContext = new SOAPMessageContextJAXRPC();
+         CommonMessageContext msgContext = new SOAPMessageContextJAXRPC();
          MessageContextAssociation.pushMessageContext(msgContext);
          try
          {

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxrpc/CallImpl.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxrpc/CallImpl.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxrpc/CallImpl.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -57,6 +57,7 @@
 import org.jboss.ws.metadata.ParameterMetaData;
 import org.jboss.ws.metadata.ServiceMetaData;
 import org.jboss.ws.metadata.TypesMetaData;
+import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData.HandlerType;
 import org.jboss.ws.metadata.wsdl.xmlschema.JBossXSModel;
 import org.jboss.ws.soap.MessageContextAssociation;
 import org.jboss.ws.utils.JavaUtils;
@@ -567,26 +568,26 @@
    }
 
    @Override
-   protected boolean callRequestHandlerChain(QName portName)
+   protected boolean callRequestHandlerChain(QName portName, HandlerType type)
    {
       SOAPMessageContextJAXRPC msgContext = (SOAPMessageContextJAXRPC)MessageContextAssociation.peekMessageContext();
-      HandlerChain handlerChain = jaxrpcService.getHandlerChain(portName);
-      return (handlerChain != null ? handlerChain.handleRequest(msgContext) : true);
+      HandlerChainBaseImpl handlerChain = (HandlerChainBaseImpl)jaxrpcService.getHandlerChain(portName);
+      return (handlerChain != null ? handlerChain.handleRequest(msgContext, type) : true);
    }
 
    @Override
-   protected boolean callResponseHandlerChain(QName portName)
+   protected boolean callResponseHandlerChain(QName portName, HandlerType type)
    {
       boolean status = true;
       String[] roles = null;
 
       SOAPMessageContextJAXRPC msgContext = (SOAPMessageContextJAXRPC)MessageContextAssociation.peekMessageContext();
 
-      HandlerChain handlerChain = jaxrpcService.getHandlerChain(portName);
+      HandlerChainBaseImpl handlerChain = (HandlerChainBaseImpl)jaxrpcService.getHandlerChain(portName);
       if (handlerChain != null)
       {
          roles = handlerChain.getRoles();
-         status = handlerChain.handleResponse(msgContext);
+         status = handlerChain.handleResponse(msgContext, type);
       }
 
       // BP-1.0 R1027

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxrpc/SOAPFaultExceptionHelper.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxrpc/SOAPFaultExceptionHelper.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxrpc/SOAPFaultExceptionHelper.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -51,7 +51,7 @@
 import org.jboss.ws.binding.DeserializerSupport;
 import org.jboss.ws.binding.SerializationContext;
 import org.jboss.ws.binding.SerializerSupport;
-import org.jboss.ws.common.SOAPMessageContextBase;
+import org.jboss.ws.common.CommonMessageContext;
 import org.jboss.ws.jaxrpc.encoding.DeserializerFactoryBase;
 import org.jboss.ws.jaxrpc.encoding.SerializerFactoryBase;
 import org.jboss.ws.metadata.FaultMetaData;
@@ -99,7 +99,7 @@
 
       SOAPFaultException faultEx = new SOAPFaultException(faultCode, faultString, faultActor, detail);
 
-      SOAPMessageContextBase msgContext = MessageContextAssociation.peekMessageContext();
+      CommonMessageContext msgContext = MessageContextAssociation.peekMessageContext();
       if (detail != null && msgContext != null)
       {
          SerializationContext serContext = msgContext.getSerializationContext();
@@ -207,7 +207,7 @@
    {
       assertFaultCode(faultEx.getFaultCode());
 
-      SOAPMessageContextBase msgContext = MessageContextAssociation.peekMessageContext();
+      CommonMessageContext msgContext = MessageContextAssociation.peekMessageContext();
       SerializationContext serContext = (msgContext != null ? msgContext.getSerializationContext() : new SerializationContextJAXRPC()); 
       NamespaceRegistry nsRegistry = serContext.getNamespaceRegistry();
       

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxrpc/ServiceObjectFactory.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxrpc/ServiceObjectFactory.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxrpc/ServiceObjectFactory.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -321,6 +321,7 @@
             QName[] headerArr = new QName[headers.size()];
             headers.toArray(headerArr);
             
+            hConfig.put(HandlerType.class.getName(), uhmd.getHandlerType());
             HandlerInfo info = new HandlerInfo(hClass, hConfig, headerArr);
 
             log.debug("Adding client side handler to endpoint '" + portName + "': " + info);

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxrpc/handler/ClientHandlerChain.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxrpc/handler/ClientHandlerChain.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxrpc/handler/ClientHandlerChain.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -26,9 +26,7 @@
 import java.util.List;
 import java.util.Set;
 
-import javax.xml.rpc.handler.MessageContext;
 
-
 /**
  * Represents a list of handlers. All elements in the
  * HandlerChain are of the type javax.xml.rpc.handler.Handler.
@@ -42,10 +40,4 @@
    {
       super(infos, roles);
    }
-   
-   public boolean handleResponse(MessageContext msgContext)
-   {
-      boolean doNext = super.handleResponse(msgContext);
-      return doNext;
-   }
 }

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxrpc/handler/HandlerChainBaseImpl.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxrpc/handler/HandlerChainBaseImpl.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxrpc/handler/HandlerChainBaseImpl.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -48,10 +48,11 @@
 
 import org.jboss.logging.Logger;
 import org.jboss.ws.Constants;
-import org.jboss.ws.common.SOAPMessageContextBase;
+import org.jboss.ws.common.CommonMessageContext;
 import org.jboss.ws.metadata.EndpointMetaData;
 import org.jboss.ws.metadata.OperationMetaData;
 import org.jboss.ws.metadata.ParameterMetaData;
+import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData.HandlerType;
 import org.jboss.ws.soap.SOAPElementImpl;
 import org.jboss.ws.soap.SOAPElementWriter;
 import org.jboss.ws.soap.SOAPEnvelopeImpl;
@@ -87,7 +88,7 @@
    /**
     * Constructs a handler chain with the given handlers infos
     */
-   public HandlerChainBaseImpl(List infos, Set<String> roles)
+   public HandlerChainBaseImpl(List<HandlerInfo> infos, Set<String> roles)
    {
       log.debug("Create a handler chain for roles: " + roles);
       addHandlersToChain(infos, roles);
@@ -111,17 +112,17 @@
     *
     * @throws javax.xml.rpc.JAXRPCException If any error during initialization
     */
-   private void addHandlersToChain(List infos, Set<String> roleSet)
+   private void addHandlersToChain(List<HandlerInfo> infos, Set<String> roleSet)
    {
       try
       {
          if (infos != null)
          {
-            for (int i = 0; i < infos.size(); i++)
+            for (HandlerInfo info : infos)
             {
-               HandlerInfo info = (HandlerInfo)infos.get(i);
                HandlerWrapper handler = new HandlerWrapper((Handler)info.getHandlerClass().newInstance());
-               handlers.add(new HandlerEntry(handler, info));
+               HandlerType type = (HandlerType)info.getHandlerConfig().get(HandlerType.class.getName());
+               handlers.add(new HandlerEntry(handler, info, type));
             }
          }
          if (roleSet != null)
@@ -231,6 +232,16 @@
     */
    public boolean handleRequest(MessageContext msgContext)
    {
+      return handleRequestInternal(msgContext, HandlerType.ALL);
+   }
+
+   public boolean handleRequest(MessageContext msgContext, HandlerType type)
+   {
+      return handleRequestInternal(msgContext, type);
+   }
+
+   private boolean handleRequestInternal(MessageContext msgContext, HandlerType type)
+   {
       boolean doNext = true;
 
       if (handlers.size() > 0)
@@ -238,7 +249,7 @@
          log.debug("Enter: handleRequest");
 
          SOAPMessageContextJAXRPC jaxrpcContext = (SOAPMessageContextJAXRPC)msgContext;
-         jaxrpcContext.setProperty(SOAPMessageContextBase.ALLOW_EXPAND_TO_DOM, Boolean.TRUE);
+         jaxrpcContext.setProperty(CommonMessageContext.ALLOW_EXPAND_TO_DOM, Boolean.TRUE);
 
          // Replace handlers that did not survive the previous call
          replaceDirtyHandlers();
@@ -247,23 +258,27 @@
          Handler currHandler = null;
          try
          {
+            String lastMessageTrace = null;
             for (; doNext && handlerIndex < handlers.size(); handlerIndex++)
             {
-               String lastMessageTrace = null;
-               if (log.isTraceEnabled())
+               HandlerEntry handlerEntry = (HandlerEntry)handlers.get(handlerIndex);
+               if (type == HandlerType.ALL || type == handlerEntry.getType())
                {
-                  SOAPPart soapPart = jaxrpcContext.getMessage().getSOAPPart();
-                  lastMessageTrace = traceSOAPPart(soapPart, lastMessageTrace);
-               }
+                  currHandler = handlerEntry.getHandler();
 
-               currHandler = ((HandlerEntry)handlers.get(handlerIndex)).getHandler();
-               log.debug("Handle request: " + currHandler);
-               doNext = currHandler.handleRequest(msgContext);
+                  if (log.isTraceEnabled())
+                  {
+                     SOAPPart soapPart = jaxrpcContext.getMessage().getSOAPPart();
+                     lastMessageTrace = traceSOAPPart("BEFORE handleRequest - " + currHandler, soapPart, lastMessageTrace);
+                  }
 
-               if (log.isTraceEnabled())
-               {
-                  SOAPPart soapPart = jaxrpcContext.getMessage().getSOAPPart();
-                  lastMessageTrace = traceSOAPPart(soapPart, lastMessageTrace);
+                  doNext = currHandler.handleRequest(msgContext);
+
+                  if (log.isTraceEnabled())
+                  {
+                     SOAPPart soapPart = jaxrpcContext.getMessage().getSOAPPart();
+                     lastMessageTrace = traceSOAPPart("AFTER handleRequest - " + currHandler, soapPart, lastMessageTrace);
+                  }
                }
             }
          }
@@ -279,7 +294,7 @@
             if (doNext == false)
                falseIndex = (handlerIndex - 1);
 
-            jaxrpcContext.removeProperty(SOAPMessageContextBase.ALLOW_EXPAND_TO_DOM);
+            jaxrpcContext.removeProperty(CommonMessageContext.ALLOW_EXPAND_TO_DOM);
             log.debug("Exit: handleRequest with status: " + doNext);
          }
       }
@@ -299,6 +314,16 @@
     */
    public boolean handleResponse(MessageContext msgContext)
    {
+      return handleResponseInternal(msgContext, HandlerType.ALL);
+   }
+
+   public boolean handleResponse(MessageContext msgContext, HandlerType type)
+   {
+      return handleResponseInternal(msgContext, type);
+   }
+
+   private boolean handleResponseInternal(MessageContext msgContext, HandlerType type)
+   {
       boolean doNext = true;
 
       if (handlers.size() > 0)
@@ -306,7 +331,7 @@
          log.debug("Enter: handleResponse");
 
          SOAPMessageContextJAXRPC jaxrpcContext = (SOAPMessageContextJAXRPC)msgContext;
-         jaxrpcContext.setProperty(SOAPMessageContextBase.ALLOW_EXPAND_TO_DOM, Boolean.TRUE);
+         jaxrpcContext.setProperty(CommonMessageContext.ALLOW_EXPAND_TO_DOM, Boolean.TRUE);
 
          int handlerIndex = handlers.size() - 1;
          if (falseIndex != -1)
@@ -315,23 +340,27 @@
          Handler currHandler = null;
          try
          {
+            String lastMessageTrace = null;
             for (; doNext && handlerIndex >= 0; handlerIndex--)
             {
-               String lastMessageTrace = null;
-               if (log.isTraceEnabled())
+               HandlerEntry handlerEntry = (HandlerEntry)handlers.get(handlerIndex);
+               if (type == HandlerType.ALL || type == handlerEntry.getType())
                {
-                  SOAPPart soapPart = jaxrpcContext.getMessage().getSOAPPart();
-                  lastMessageTrace = traceSOAPPart(soapPart, lastMessageTrace);
-               }
+                  currHandler = handlerEntry.getHandler();
 
-               currHandler = ((HandlerEntry)handlers.get(handlerIndex)).getHandler();
-               log.debug("Handle response: " + currHandler);
-               doNext = currHandler.handleResponse(msgContext);
+                  if (log.isTraceEnabled())
+                  {
+                     SOAPPart soapPart = jaxrpcContext.getMessage().getSOAPPart();
+                     lastMessageTrace = traceSOAPPart("BEFORE handleResponse - " + currHandler, soapPart, lastMessageTrace);
+                  }
 
-               if (log.isTraceEnabled())
-               {
-                  SOAPPart soapPart = jaxrpcContext.getMessage().getSOAPPart();
-                  lastMessageTrace = traceSOAPPart(soapPart, lastMessageTrace);
+                  doNext = currHandler.handleResponse(msgContext);
+
+                  if (log.isTraceEnabled())
+                  {
+                     SOAPPart soapPart = jaxrpcContext.getMessage().getSOAPPart();
+                     lastMessageTrace = traceSOAPPart("AFTER handleResponse - " + currHandler, soapPart, lastMessageTrace);
+                  }
                }
             }
          }
@@ -347,7 +376,7 @@
             if (doNext == false)
                falseIndex = (handlerIndex - 1);
 
-            jaxrpcContext.removeProperty(SOAPMessageContextBase.ALLOW_EXPAND_TO_DOM);
+            jaxrpcContext.removeProperty(CommonMessageContext.ALLOW_EXPAND_TO_DOM);
             log.debug("Exit: handleResponse with status: " + doNext);
          }
       }
@@ -374,7 +403,7 @@
          log.debug("Enter: handleFault");
 
          SOAPMessageContextJAXRPC jaxrpcContext = (SOAPMessageContextJAXRPC)msgContext;
-         jaxrpcContext.setProperty(SOAPMessageContextBase.ALLOW_EXPAND_TO_DOM, Boolean.TRUE);
+         jaxrpcContext.setProperty(CommonMessageContext.ALLOW_EXPAND_TO_DOM, Boolean.TRUE);
 
          try
          {
@@ -392,7 +421,7 @@
          }
          finally
          {
-            jaxrpcContext.removeProperty(SOAPMessageContextBase.ALLOW_EXPAND_TO_DOM);
+            jaxrpcContext.removeProperty(CommonMessageContext.ALLOW_EXPAND_TO_DOM);
             log.debug("Exit: handleFault with status: " + doNext);
          }
       }
@@ -400,18 +429,21 @@
       return doNext;
    }
 
-   /**
-    * Trace the SOAPPart, do nothing if the String representation is equal to the last one.
+   /** Trace the SOAPPart, do nothing if the String representation is equal to the last one.
     */
-   protected String traceSOAPPart(SOAPPart soapPart, String lastMessageTrace)
+   protected String traceSOAPPart(String logMsg, SOAPPart soapPart, String lastMessageTrace)
    {
       try
       {
          SOAPEnvelopeImpl soapEnv = (SOAPEnvelopeImpl)soapPart.getEnvelope();
          String envStr = SOAPElementWriter.writeElement((SOAPElementImpl)soapEnv, true);
-         if (envStr.equals(lastMessageTrace) == false)
+         if (envStr.equals(lastMessageTrace))
          {
-            log.debug(envStr);
+            log.trace(logMsg + ": unchanged");
+         }
+         else
+         {
+            log.trace(logMsg + "\n" + envStr);
             lastMessageTrace = envStr;
          }
          return lastMessageTrace;
@@ -535,11 +567,22 @@
    {
       private HandlerWrapper handler;
       private HandlerInfo info;
+      private HandlerType type;
 
-      public HandlerEntry(HandlerWrapper handler, HandlerInfo info)
+      public HandlerEntry(HandlerWrapper handler, HandlerInfo info, HandlerType type)
       {
+         if (handler == null || info == null)
+            throw new IllegalStateException("Invalid handler entry");
+
+         if (type == null)
+         {
+            log.debug("Using handler type default: " + HandlerType.ENDPOINT);
+            type = HandlerType.ENDPOINT;
+         }
+
          this.handler = handler;
          this.info = info;
+         this.type = type;
       }
 
       public Handler getHandler()
@@ -551,6 +594,11 @@
       {
          return info;
       }
+
+      public HandlerType getType()
+      {
+         return type;
+      }
    }
 
    // java.util.List interface ****************************************************************************************

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxrpc/handler/HandlerDelegateJAXRPC.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxrpc/handler/HandlerDelegateJAXRPC.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxrpc/handler/HandlerDelegateJAXRPC.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -171,6 +171,7 @@
          QName[] headerArr = new QName[headers.size()];
          headers.toArray(headerArr);
          
+         hConfig.put(HandlerType.class.getName(), uhmd.getHandlerType());
          HandlerInfo info = new HandlerInfo(hClass, hConfig, headerArr);
 
          log.debug("Adding server side handler to service '" + sepMetaData.getQName() + "': " + info);

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxrpc/handler/MessageContextJAXRPC.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxrpc/handler/MessageContextJAXRPC.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxrpc/handler/MessageContextJAXRPC.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -24,6 +24,7 @@
 // $Id$
 
 import javax.xml.rpc.handler.MessageContext;
+import javax.xml.soap.SOAPMessage;
 
 import org.jboss.ws.binding.SerializationContext;
 import org.jboss.ws.common.CommonMessageContext;
@@ -50,9 +51,21 @@
    public static final String SERVLET_RESPONSE = "javax.xml.ws.servlet.response";
    public static final String SERVLET_SESSION = "javax.xml.ws.servlet.session";
 
+   // The SOAP message
+   private SOAPMessage message;
    // The serialization context for this message ctx
    private SerializationContext serContext;
 
+   public SOAPMessage getMessage()
+   {
+      return message;
+   }
+
+   public void setMessage(SOAPMessage message)
+   {
+      this.message = message;
+   }
+   
    /** Get or create the serialization context
     */
    public SerializationContext getSerializationContext()

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxrpc/handler/SOAPMessageContextJAXRPC.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxrpc/handler/SOAPMessageContextJAXRPC.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxrpc/handler/SOAPMessageContextJAXRPC.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -26,19 +26,14 @@
 import javax.xml.rpc.handler.soap.SOAPMessageContext;
 import javax.xml.soap.SOAPMessage;
 
-import org.jboss.ws.common.SOAPMessageContextBase;
-
 /**
  * Provides access to the SOAP message for either RPC request or response.
  *
  * @author Thomas.Diesler at jboss.org
  * @since 14-Dec-2004
  */
-public class SOAPMessageContextJAXRPC extends MessageContextJAXRPC implements SOAPMessageContext, SOAPMessageContextBase
+public class SOAPMessageContextJAXRPC extends MessageContextJAXRPC implements SOAPMessageContext
 {
-   // The current SOAPMessage, maybe a request or response message
-   private SOAPMessage soapMessage;
-
    /** Default constuctor
     */
    public SOAPMessageContextJAXRPC()
@@ -51,7 +46,7 @@
     */
    public SOAPMessage getMessage()
    {
-      return soapMessage;
+      return getSOAPMessage();
    }
 
    /** Sets the SOAPMessage in this message context
@@ -62,7 +57,7 @@
     */
    public void setMessage(SOAPMessage message)
    {
-      this.soapMessage = message;
+      setSOAPMessage(message);
    }
 
    /**

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxws/client/ClientImpl.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxws/client/ClientImpl.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxws/client/ClientImpl.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -35,13 +35,14 @@
 import javax.xml.ws.handler.MessageContext;
 
 import org.jboss.ws.common.CommonClient;
-import org.jboss.ws.common.SOAPMessageContextBase;
+import org.jboss.ws.common.CommonMessageContext;
 import org.jboss.ws.jaxws.core.BindingImpl;
 import org.jboss.ws.jaxws.handler.HandlerChainExecutor;
 import org.jboss.ws.jaxws.handler.MessageContextJAXWS;
 import org.jboss.ws.jaxws.handler.PortInfoImpl;
 import org.jboss.ws.jaxws.handler.SOAPMessageContextJAXWS;
 import org.jboss.ws.metadata.EndpointMetaData;
+import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData.HandlerType;
 import org.jboss.ws.soap.MessageContextAssociation;
 
 /** 
@@ -75,19 +76,19 @@
    }
 
    @Override
-   protected boolean callRequestHandlerChain(QName portName)
+   protected boolean callRequestHandlerChain(QName portName, HandlerType type)
    {
-      List<Handler> handlerChain = getBindingProvider().getBinding().getHandlerChain();
-      HandlerChainExecutor executor = new HandlerChainExecutor(epMetaData, handlerChain);
+      BindingImpl binding = (BindingImpl)getBindingProvider().getBinding();
+      HandlerChainExecutor executor = new HandlerChainExecutor(epMetaData, binding.getHandlerChain(type));
       MessageContext msgContext = (MessageContext)MessageContextAssociation.peekMessageContext();
       return executor.handleRequest(msgContext);
    }
 
    @Override
-   protected boolean callResponseHandlerChain(QName portName)
+   protected boolean callResponseHandlerChain(QName portName, HandlerType type)
    {
-      List<Handler> handlerChain = getBindingProvider().getBinding().getHandlerChain();
-      HandlerChainExecutor executor = new HandlerChainExecutor(epMetaData, handlerChain);
+      BindingImpl binding = (BindingImpl)getBindingProvider().getBinding();
+      HandlerChainExecutor executor = new HandlerChainExecutor(epMetaData, binding.getHandlerChain(type));
       MessageContext msgContext = (MessageContext)MessageContextAssociation.peekMessageContext();
       return executor.handleResponse(msgContext);
    }
@@ -96,7 +97,7 @@
    protected void setInboundContextProperties()
    {
       // Mark the message context as outbound
-      SOAPMessageContextBase msgContext = MessageContextAssociation.peekMessageContext();
+      CommonMessageContext msgContext = MessageContextAssociation.peekMessageContext();
       msgContext.setProperty(MessageContextJAXWS.MESSAGE_OUTBOUND_PROPERTY, new Boolean(false));
    }
 
@@ -104,7 +105,7 @@
    protected void setOutboundContextProperties()
    {
       // Mark the message context as outbound
-      SOAPMessageContextBase msgContext = MessageContextAssociation.peekMessageContext();
+      CommonMessageContext msgContext = MessageContextAssociation.peekMessageContext();
       msgContext.setProperty(MessageContextJAXWS.MESSAGE_OUTBOUND_PROPERTY, new Boolean(true));
    }
    
@@ -113,6 +114,12 @@
       // Associate a message context with the current thread
       SOAPMessageContextJAXWS msgContext = new SOAPMessageContextJAXWS();
       MessageContextAssociation.pushMessageContext(msgContext);
+      
+      // The contents of the request context are used to initialize the message context (see section 9.4.1)
+      // prior to invoking any handlers (see chapter 9) for the outbound message. Each property within the
+      // request context is copied to the message context with a scope of HANDLER.
+      Map<String, Object> reqContext = getBindingProvider().getRequestContext();
+      msgContext.putAll(reqContext);
 
       try
       {

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxws/core/BindingImpl.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxws/core/BindingImpl.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxws/core/BindingImpl.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -24,6 +24,7 @@
 // $Id$
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 
@@ -36,6 +37,7 @@
 import org.jboss.ws.binding.EndpointInvocation;
 import org.jboss.ws.binding.UnboundHeader;
 import org.jboss.ws.metadata.OperationMetaData;
+import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData.HandlerType;
 
 /**
  * The Binding interface is the base interface for JAX-WS protocol bindings. 
@@ -48,7 +50,9 @@
    // provide logging
    private static Logger log = Logger.getLogger(BindingImpl.class);
 
-   private List<Handler> handlerChain = new ArrayList<Handler>();
+   private List<Handler> preHandlerChain = new ArrayList<Handler>();
+   private List<Handler> jaxwsHandlerChain = new ArrayList<Handler>();
+   private List<Handler> postHandlerChain = new ArrayList<Handler>();
 
    /** On the client side, generate the Object from IN parameters. */
    public abstract Object bindRequestMessage(OperationMetaData opMetaData, EndpointInvocation epInv, Map<QName, UnboundHeader> unboundHeaders) throws BindingException;
@@ -63,15 +67,31 @@
    public abstract void unbindResponseMessage(OperationMetaData opMetaData, Object resMessage, EndpointInvocation epInv, Map<QName, UnboundHeader> unboundHeaders)
          throws BindingException;
 
+   public List<Handler> getHandlerChain(HandlerType handlerType)
+   {
+      List<Handler> handlerChain = new ArrayList<Handler>();
+      
+      if (handlerType == HandlerType.PRE || handlerType == HandlerType.ALL)
+         handlerChain.addAll(preHandlerChain);
+      
+      if (handlerType == HandlerType.ENDPOINT || handlerType == HandlerType.ALL)
+         handlerChain.addAll(jaxwsHandlerChain);
+      
+      if (handlerType == HandlerType.POST || handlerType == HandlerType.ALL)
+         handlerChain.addAll(postHandlerChain);
+      
+      return Collections.unmodifiableList(handlerChain);
+   }
+
    public List<Handler> getHandlerChain()
    {
-      log.debug("getHandlerChain: " + handlerChain);
-      return handlerChain;
+      log.debug("getHandlerChain: " + jaxwsHandlerChain);
+      return jaxwsHandlerChain;
    }
 
    public void setHandlerChain(List<Handler> handlerChain)
    {
       log.debug("setHandlerChain: " + handlerChain);
-      this.handlerChain = handlerChain;
+      this.jaxwsHandlerChain = handlerChain;
    }
 }

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxws/core/SOAP11BindingImpl.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxws/core/SOAP11BindingImpl.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxws/core/SOAP11BindingImpl.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -37,7 +37,7 @@
 import org.jboss.ws.binding.BindingException;
 import org.jboss.ws.binding.EndpointInvocation;
 import org.jboss.ws.binding.UnboundHeader;
-import org.jboss.ws.common.SOAPMessageContextBase;
+import org.jboss.ws.common.CommonMessageContext;
 import org.jboss.ws.jaxrpc.Use;
 import org.jboss.ws.metadata.OperationMetaData;
 import org.jboss.ws.soap.MessageContextAssociation;
@@ -89,7 +89,7 @@
       // the soapAction attribute of soapbind:operation is either not present, or
       // present with an empty string as its value.
 
-      SOAPMessageContextBase msgContext = MessageContextAssociation.peekMessageContext();
+      CommonMessageContext msgContext = MessageContextAssociation.peekMessageContext();
       if (msgContext.getProperty(Call.SOAPACTION_USE_PROPERTY) != null)
          log.info("Ignore Call.SOAPACTION_USE_PROPERTY because of BP-1.0 R2745, R2745");
 

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxws/core/SOAPBindingImpl.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxws/core/SOAPBindingImpl.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxws/core/SOAPBindingImpl.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -57,7 +57,7 @@
 import org.jboss.ws.binding.BindingException;
 import org.jboss.ws.binding.EndpointInvocation;
 import org.jboss.ws.binding.UnboundHeader;
-import org.jboss.ws.common.SOAPMessageContextBase;
+import org.jboss.ws.common.CommonMessageContext;
 import org.jboss.ws.jaxrpc.ParameterWrapping;
 import org.jboss.ws.jaxrpc.SOAPFaultExceptionHelper;
 import org.jboss.ws.jaxrpc.Style;
@@ -136,13 +136,13 @@
 
       try
       {
-         SOAPMessageContextBase msgContext = MessageContextAssociation.peekMessageContext();
+         CommonMessageContext msgContext = MessageContextAssociation.peekMessageContext();
          if (msgContext == null)
             throw new WSException("MessageContext not available");
 
          // Associate current message with message context
          SOAPMessageImpl reqMessage = (SOAPMessageImpl)createMessage(opMetaData);
-         msgContext.setMessage(reqMessage);
+         msgContext.setSOAPMessage(reqMessage);
 
          SOAPEnvelope soapEnvelope = reqMessage.getSOAPPart().getEnvelope();
          SOAPBody soapBody = soapEnvelope.getBody();
@@ -258,7 +258,7 @@
          // Construct the endpoint invocation object
          EndpointInvocation epInv = new EndpointInvocation(opMetaData);
 
-         SOAPMessageContextBase msgContext = MessageContextAssociation.peekMessageContext();
+         CommonMessageContext msgContext = MessageContextAssociation.peekMessageContext();
          if (msgContext == null)
             throw new WSException("MessageContext not available");
 
@@ -370,13 +370,13 @@
 
       try
       {
-         SOAPMessageContextBase msgContext = MessageContextAssociation.peekMessageContext();
+         CommonMessageContext msgContext = MessageContextAssociation.peekMessageContext();
          if (msgContext == null)
             throw new WSException("MessageContext not available");
 
          // Associate current message with message context
          SOAPMessageImpl resMessage = (SOAPMessageImpl)createMessage(opMetaData);
-         msgContext.setMessage(resMessage);
+         msgContext.setSOAPMessage(resMessage);
 
          // R2714 For one-way operations, an INSTANCE MUST NOT return a HTTP response that contains a SOAP envelope.
          // Specifically, the HTTP response entity-body must be empty.
@@ -522,7 +522,7 @@
          verifySOAPVersion(opMetaData, soapEnvelope);
 
          // Get the SOAP message context that is associated with the current thread
-         SOAPMessageContextBase msgContext = MessageContextAssociation.peekMessageContext();
+         CommonMessageContext msgContext = MessageContextAssociation.peekMessageContext();
          if (msgContext == null)
             throw new WSException("MessageContext not available");
 
@@ -731,7 +731,7 @@
       // Make sure we have a prefix on qualified names
       if (xmlName.getNamespaceURI().length() > 0)
       {
-         SOAPMessageContextBase msgContext = MessageContextAssociation.peekMessageContext();
+         CommonMessageContext msgContext = MessageContextAssociation.peekMessageContext();
          NamespaceRegistry namespaceRegistry = msgContext.getNamespaceRegistry();
          xmlName = namespaceRegistry.registerQName(xmlName);
       }
@@ -773,8 +773,8 @@
       if (paramMetaData.isXOP())
       {
          log.trace("Add parameter as XOP");
-         SOAPMessageContextBase msgContext = MessageContextAssociation.peekMessageContext();
-         SOAPMessageImpl soapMessage = (SOAPMessageImpl)msgContext.getMessage();
+         CommonMessageContext msgContext = MessageContextAssociation.peekMessageContext();
+         SOAPMessageImpl soapMessage = (SOAPMessageImpl)msgContext.getSOAPMessage();
          soapMessage.setXOPMessage(true);
       }
 
@@ -812,8 +812,8 @@
 
          if (soapArrayName.equals(elName))
          {
-            SOAPMessageContextBase msgContext = MessageContextAssociation.peekMessageContext();
-            msgContext.setProperty(SOAPMessageContextBase.ALLOW_EXPAND_TO_DOM, Boolean.TRUE);
+            CommonMessageContext msgContext = MessageContextAssociation.peekMessageContext();
+            msgContext.setProperty(CommonMessageContext.ALLOW_EXPAND_TO_DOM, Boolean.TRUE);
             try
             {
                QName compXMLName = paramMetaData.getXmlName();
@@ -827,7 +827,7 @@
             }
             finally
             {
-               msgContext.removeProperty(SOAPMessageContextBase.ALLOW_EXPAND_TO_DOM);
+               msgContext.removeProperty(CommonMessageContext.ALLOW_EXPAND_TO_DOM);
             }
          }
       }
@@ -868,7 +868,7 @@
 
       if (paramMetaData.isXOP())
       {
-         SOAPMessageImpl soapMessage = (SOAPMessageImpl)MessageContextAssociation.peekMessageContext().getMessage();
+         SOAPMessageImpl soapMessage = (SOAPMessageImpl)MessageContextAssociation.peekMessageContext().getSOAPMessage();
          soapMessage.setXOPMessage(true);
       }
       return soapContentElement;

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxws/handler/HandlerChainExecutor.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxws/handler/HandlerChainExecutor.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxws/handler/HandlerChainExecutor.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -34,7 +34,7 @@
 import javax.xml.ws.handler.MessageContext;
 
 import org.jboss.logging.Logger;
-import org.jboss.ws.common.SOAPMessageContextBase;
+import org.jboss.ws.common.CommonMessageContext;
 import org.jboss.ws.jaxrpc.Style;
 import org.jboss.ws.metadata.EndpointMetaData;
 import org.jboss.ws.soap.SOAPEnvelopeImpl;
@@ -92,7 +92,7 @@
          log.debug("Enter: handleRequest");
 
          SOAPMessageContextJAXWS soapContext = (SOAPMessageContextJAXWS)msgContext;
-         soapContext.setProperty(SOAPMessageContextBase.ALLOW_EXPAND_TO_DOM, Boolean.TRUE);
+         soapContext.setProperty(CommonMessageContext.ALLOW_EXPAND_TO_DOM, Boolean.TRUE);
 
          int handlerIndex = 0;
          Handler currHandler = null;
@@ -130,7 +130,7 @@
             if (doNext == false)
                falseIndex = (handlerIndex - 1);
 
-            soapContext.removeProperty(SOAPMessageContextBase.ALLOW_EXPAND_TO_DOM);
+            soapContext.removeProperty(CommonMessageContext.ALLOW_EXPAND_TO_DOM);
             log.debug("Exit: handleRequest with status: " + doNext);
          }
       }
@@ -143,7 +143,7 @@
       boolean doNext = true;
 
       SOAPMessageContextJAXWS soapContext = (SOAPMessageContextJAXWS)msgContext;
-      soapContext.setProperty(SOAPMessageContextBase.ALLOW_EXPAND_TO_DOM, Boolean.TRUE);
+      soapContext.setProperty(CommonMessageContext.ALLOW_EXPAND_TO_DOM, Boolean.TRUE);
 
       if (handlers.size() > 0)
       {
@@ -188,7 +188,7 @@
             if (doNext == false)
                falseIndex = (handlerIndex - 1);
 
-            soapContext.removeProperty(SOAPMessageContextBase.ALLOW_EXPAND_TO_DOM);
+            soapContext.removeProperty(CommonMessageContext.ALLOW_EXPAND_TO_DOM);
             log.debug("Exit: handleResponse with status: " + doNext);
          }
       }
@@ -205,7 +205,7 @@
          log.debug("Enter: handleFault");
 
          SOAPMessageContextJAXWS soapContext = (SOAPMessageContextJAXWS)msgContext;
-         soapContext.setProperty(SOAPMessageContextBase.ALLOW_EXPAND_TO_DOM, Boolean.TRUE);
+         soapContext.setProperty(CommonMessageContext.ALLOW_EXPAND_TO_DOM, Boolean.TRUE);
 
          int handlerIndex = 0;
          Handler currHandler = null;
@@ -243,7 +243,7 @@
             if (doNext == false)
                falseIndex = (handlerIndex - 1);
 
-            soapContext.removeProperty(SOAPMessageContextBase.ALLOW_EXPAND_TO_DOM);
+            soapContext.removeProperty(CommonMessageContext.ALLOW_EXPAND_TO_DOM);
             log.debug("Exit: handleFault with status: " + doNext);
          }
       }

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxws/handler/HandlerDelegateJAXWS.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxws/handler/HandlerDelegateJAXWS.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxws/handler/HandlerDelegateJAXWS.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -58,6 +58,7 @@
 
    public boolean callRequestHandlerChain(ServiceEndpointInfo seInfo, HandlerType type)
    {
+      log.debug("callRequestHandlerChain: " + type);
       SOAPMessageContextJAXWS msgContext = (SOAPMessageContextJAXWS)MessageContextAssociation.peekMessageContext();
       EndpointMetaData epMetaData = seInfo.getServerEndpointMetaData();
 
@@ -77,6 +78,7 @@
 
    public boolean callResponseHandlerChain(ServiceEndpointInfo seInfo, HandlerType type)
    {
+      log.debug("callResponseHandlerChain: " + type);
       SOAPMessageContextJAXWS msgContext = (SOAPMessageContextJAXWS)MessageContextAssociation.peekMessageContext();
       ServerEndpointMetaData epMetaData = seInfo.getServerEndpointMetaData();
       List<Handler> handlerChain = getHandlerChain(epMetaData, type);
@@ -86,6 +88,7 @@
 
    public boolean callFaultHandlerChain(ServiceEndpointInfo seInfo, HandlerType type, Exception ex)
    {
+      log.debug("callFaultHandlerChain: " + type);
       SOAPMessageContextJAXWS msgContext = (SOAPMessageContextJAXWS)MessageContextAssociation.peekMessageContext();
       ServerEndpointMetaData epMetaData = seInfo.getServerEndpointMetaData();
       List<Handler> handlerChain = getHandlerChain(epMetaData, type);

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxws/handler/LogicalMessageImpl.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxws/handler/LogicalMessageImpl.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxws/handler/LogicalMessageImpl.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -24,16 +24,17 @@
 // $Id$
 
 import java.io.StringReader;
+import java.util.Iterator;
 
 import javax.xml.bind.JAXBContext;
 import javax.xml.soap.SOAPException;
 import javax.xml.soap.SOAPMessage;
 import javax.xml.transform.Source;
+import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamSource;
 import javax.xml.ws.LogicalMessage;
 import javax.xml.ws.WebServiceException;
 
-import org.jboss.util.NotImplementedException;
 import org.jboss.ws.soap.SOAPBodyImpl;
 import org.jboss.ws.soap.SOAPContentElement;
 
@@ -47,7 +48,7 @@
 public class LogicalMessageImpl implements LogicalMessage
 {
    private SOAPBodyImpl soapBody;
-   
+
    public LogicalMessageImpl(SOAPMessage soapMessage)
    {
       try
@@ -65,16 +66,16 @@
       Source source = soapBody.getPayload();
       if (source == null)
       {
-         try
+         SOAPContentElement soapElement = (SOAPContentElement)soapBody.getChildElements().next();
+         if (soapElement.isDOMValid())
          {
-            SOAPContentElement soapElement = (SOAPContentElement)soapBody.getChildElements().next();
+            source = new DOMSource(soapElement);
+         }
+         else
+         {
             String xmlPayload = soapElement.getXMLFragment();
             source = new StreamSource(new StringReader(xmlPayload));
          }
-         catch (SOAPException ex)
-         {
-            throw new WebServiceException("Cannot obtain xml payload", ex);
-         }
       }
       return source;
    }
@@ -86,11 +87,23 @@
 
    public Object getPayload(JAXBContext jaxbContext)
    {
-      throw new NotImplementedException();
+      Object payload = null;
+      Iterator it = soapBody.getChildElements();
+      if (it.hasNext())
+      {
+         SOAPContentElement bodyElement = (SOAPContentElement)it.next();
+         payload = bodyElement.getObjectValue();
+      }
+      return payload;
    }
 
-   public void setPayload(Object obj, JAXBContext jaxbContext)
+   public void setPayload(Object payload, JAXBContext jaxbContext)
    {
-      throw new NotImplementedException();
+      Iterator it = soapBody.getChildElements();
+      if (it.hasNext())
+      {
+         SOAPContentElement bodyElement = (SOAPContentElement)it.next();
+         bodyElement.setObjectValue(payload);
+      }
    }
 }

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxws/handler/SOAPMessageContextJAXWS.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxws/handler/SOAPMessageContextJAXWS.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/jaxws/handler/SOAPMessageContextJAXWS.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -39,7 +39,7 @@
 import javax.xml.ws.WebServiceException;
 import javax.xml.ws.handler.soap.SOAPMessageContext;
 
-import org.jboss.ws.common.SOAPMessageContextBase;
+import org.jboss.ws.common.CommonMessageContext;
 
 /**
  * The interface SOAPMessageContext provides access to the SOAP message for either RPC request or response. 
@@ -48,10 +48,8 @@
  * @author Thomas.Diesler at jboss.org
  * @since 25-Jul-2006
  */
-public class SOAPMessageContextJAXWS extends MessageContextJAXWS implements SOAPMessageContext, SOAPMessageContextBase
+public class SOAPMessageContextJAXWS extends MessageContextJAXWS implements SOAPMessageContext
 {
-   // The SOAPMessage in this message context
-   private SOAPMessage soapMessage;
    // The SOAP actor roles 
    private Set<URI> roles = new HashSet<URI>();
 
@@ -66,7 +64,7 @@
     */
    public SOAPMessage getMessage()
    {
-      return soapMessage;
+      return getSOAPMessage();
    }
 
    /**
@@ -74,7 +72,7 @@
     */
    public void setMessage(SOAPMessage soapMessage)
    {
-      this.soapMessage = soapMessage;
+      setSOAPMessage(soapMessage);
    }
 
    /** 
@@ -85,11 +83,11 @@
    {
       List<Object> headers = new ArrayList<Object>();
 
-      if (soapMessage != null)
+      if (getSOAPMessage() != null)
       {
          try
          {
-            SOAPHeader soapHeader = soapMessage.getSOAPHeader();
+            SOAPHeader soapHeader = getSOAPMessage().getSOAPHeader();
             Iterator<SOAPHeaderElement> headerElements = soapHeader.examineAllHeaderElements();
             while (headerElements.hasNext())
             {

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/jbossxb/JBossXBSupport.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/jbossxb/JBossXBSupport.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/jbossxb/JBossXBSupport.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -4,7 +4,7 @@
 
 import javax.xml.namespace.QName;
 
-import org.jboss.ws.common.SOAPMessageContextBase;
+import org.jboss.ws.common.CommonMessageContext;
 import org.jboss.ws.metadata.EndpointMetaData;
 import org.jboss.ws.metadata.OperationMetaData;
 import org.jboss.ws.metadata.ServiceMetaData;
@@ -46,7 +46,7 @@
       QName xmlType = (QName)properties.get(JBossXBConstants.JBXB_TYPE_QNAME);
 
       // Get the eagerly initialized SchameBinding from the ServiceMetaData
-      SOAPMessageContextBase msgContext = MessageContextAssociation.peekMessageContext();
+      CommonMessageContext msgContext = MessageContextAssociation.peekMessageContext();
       if (msgContext != null)
       {
          OperationMetaData opMetaData = msgContext.getOperationMetaData();

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/ClientEndpointMetaData.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/ClientEndpointMetaData.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/ClientEndpointMetaData.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -73,6 +73,7 @@
       clientConfig = null;
    }
 
+   @Override
    public List<UnifiedHandlerMetaData> getHandlers(HandlerType type)
    {
       ArrayList<UnifiedHandlerMetaData> handlers = new ArrayList<UnifiedHandlerMetaData>();

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/ServerEndpointMetaData.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/ServerEndpointMetaData.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/ServerEndpointMetaData.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -165,6 +165,7 @@
       this.managedEndpointBean = managedEndpointBean;
    }
 
+   @Override
    public List<UnifiedHandlerMetaData> getHandlers(HandlerType type)
    {
       ArrayList<UnifiedHandlerMetaData> handlers = new ArrayList<UnifiedHandlerMetaData>();

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/config/jaxrpc/WSConfigFactoryJAXRPC.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/config/jaxrpc/WSConfigFactoryJAXRPC.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/config/jaxrpc/WSConfigFactoryJAXRPC.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -28,6 +28,7 @@
 import org.jboss.logging.Logger;
 import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData;
 import org.jboss.ws.metadata.j2ee.UnifiedInitParamMetaData;
+import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData.HandlerType;
 import org.jboss.ws.metadata.jsr181.HandlerChainMetaData;
 import org.jboss.xb.binding.ObjectModelFactory;
 import org.jboss.xb.binding.UnmarshallingContext;
@@ -96,13 +97,13 @@
 
       if ("pre-handler-chain".equals(localName))
       {
-         HandlerChainMetaData preHandlerChain = new HandlerChainMetaData(null);
+         HandlerChainMetaData preHandlerChain = new HandlerChainMetaData(null, HandlerType.PRE);
          wsCommonConfig.setPreHandlerChain(preHandlerChain);
          return preHandlerChain;
       }
       if ("post-handler-chain".equals(localName))
       {
-         HandlerChainMetaData postHandlerChain = new HandlerChainMetaData(null);
+         HandlerChainMetaData postHandlerChain = new HandlerChainMetaData(null, HandlerType.POST);
          wsCommonConfig.setPostHandlerChain(postHandlerChain);
          return postHandlerChain;
       }
@@ -117,7 +118,7 @@
       log.trace("WSHandlerChainConfig newChild: " + localName);
       if ("handler".equals(localName))
       {
-         UnifiedHandlerMetaData handler = new UnifiedHandlerMetaData(handlerChainMetaData);
+         UnifiedHandlerMetaData handler = new UnifiedHandlerMetaData(handlerChainMetaData, handlerChainMetaData.getHandlerType());
          List<UnifiedHandlerMetaData> handlers = handlerChainMetaData.getHandlers();
          handlers.add(handler);
          return handler;

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/config/jaxws/WSConfigFactoryJAXWS.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/config/jaxws/WSConfigFactoryJAXWS.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/config/jaxws/WSConfigFactoryJAXWS.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -24,6 +24,7 @@
 //$Id$
 
 import org.jboss.logging.Logger;
+import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData.HandlerType;
 import org.jboss.ws.metadata.jsr181.HandlerChainFactory;
 import org.jboss.ws.metadata.jsr181.HandlerChainMetaData;
 import org.jboss.xb.binding.UnmarshallingContext;
@@ -92,13 +93,13 @@
 
       if ("pre-handler-chains".equals(localName))
       {
-         WSHandlerChainsConfigJAXWS preHandlerChains = new WSHandlerChainsConfigJAXWS();
+         WSHandlerChainsConfigJAXWS preHandlerChains = new WSHandlerChainsConfigJAXWS(HandlerType.PRE);
          wsCommonConfig.setPreHandlerChains(preHandlerChains);
          return preHandlerChains;
       }
       if ("post-handler-chains".equals(localName))
       {
-         WSHandlerChainsConfigJAXWS postHandlerChains = new WSHandlerChainsConfigJAXWS();
+         WSHandlerChainsConfigJAXWS postHandlerChains = new WSHandlerChainsConfigJAXWS(HandlerType.POST);
          wsCommonConfig.setPostHandlerChains(postHandlerChains);
          return postHandlerChains;
       }
@@ -114,7 +115,7 @@
 
       if ("handler-chain".equals(localName))
       {
-         HandlerChainMetaData handlerChain = new HandlerChainMetaData(null);
+         HandlerChainMetaData handlerChain = new HandlerChainMetaData(null, wsHandlerChains.getHandlerType());
          wsHandlerChains.getHandlerChains().add(handlerChain);
          return handlerChain;
       }

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/config/jaxws/WSHandlerChainsConfigJAXWS.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/config/jaxws/WSHandlerChainsConfigJAXWS.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/config/jaxws/WSHandlerChainsConfigJAXWS.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -24,6 +24,7 @@
 import java.util.ArrayList;
 import java.util.List;
 
+import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData.HandlerType;
 import org.jboss.ws.metadata.jsr181.HandlerChainMetaData;
 
 
@@ -35,8 +36,19 @@
  */
 public class WSHandlerChainsConfigJAXWS
 {
+   private HandlerType handlerType;
    private List<HandlerChainMetaData> chains = new ArrayList<HandlerChainMetaData>();
 
+   public WSHandlerChainsConfigJAXWS(HandlerType handlerType)
+   {
+      this.handlerType = handlerType;
+   }
+   
+   public HandlerType getHandlerType()
+   {
+      return handlerType;
+   }
+
    public List<HandlerChainMetaData> getHandlerChains()
    {
       return chains;

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/j2ee/UnifiedHandlerMetaData.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/j2ee/UnifiedHandlerMetaData.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/j2ee/UnifiedHandlerMetaData.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -51,6 +51,8 @@
    private String handlerName;
    // The required <handler-class> element
    private String handlerClass;
+   // The required handler type
+   private HandlerType handlerType;
    // The optional <init-param> elements
    private ArrayList<UnifiedInitParamMetaData> initParams = new ArrayList<UnifiedInitParamMetaData>();
    // The optional <soap-header> elements
@@ -60,9 +62,10 @@
    // The optional <port-name> elements
    private Set<String> portNames = new HashSet<String>();
 
-   public UnifiedHandlerMetaData(HandlerChainMetaData handlerChainMetaData)
+   public UnifiedHandlerMetaData(HandlerChainMetaData handlerChainMetaData, HandlerType type)
    {
       this.chainConfig = handlerChainMetaData;
+      this.handlerType = type;
    }
 
    public void setHandlerName(String value)
@@ -85,6 +88,11 @@
       return handlerClass;
    }
 
+   public HandlerType getHandlerType()
+   {
+      return handlerType;
+   }
+
    public void addInitParam(UnifiedInitParamMetaData param)
    {
       initParams.add(param);
@@ -149,6 +157,7 @@
       StringBuffer buffer = new StringBuffer("\nHandlerMetaData:");
       buffer.append("\n name=" + getHandlerName());
       buffer.append("\n class=" + getHandlerClass());
+      buffer.append("\n type=" + getHandlerType());
       buffer.append("\n params=" + getInitParams());
       buffer.append("\n headers=" + getSoapHeaders());
       buffer.append("\n roles=" + getSoapRoles());

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr109/WebservicesFactory.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr109/WebservicesFactory.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr109/WebservicesFactory.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -28,6 +28,7 @@
 import org.jboss.logging.Logger;
 import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData;
 import org.jboss.ws.metadata.j2ee.UnifiedInitParamMetaData;
+import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData.HandlerType;
 import org.jboss.xb.binding.ObjectModelFactory;
 import org.jboss.xb.binding.UnmarshallingContext;
 import org.xml.sax.Attributes;
@@ -111,7 +112,7 @@
    public Object newChild(PortComponentMetaData portComponent, UnmarshallingContext navigator, String namespaceURI, String localName, Attributes attrs)
    {
       if ("handler".equals(localName))
-         return new UnifiedHandlerMetaData(null);
+         return new UnifiedHandlerMetaData(null, HandlerType.ENDPOINT);
       else return null;
    }
 

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr181/HandlerChainFactory.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr181/HandlerChainFactory.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr181/HandlerChainFactory.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -26,6 +26,7 @@
 import org.jboss.logging.Logger;
 import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData;
 import org.jboss.ws.metadata.j2ee.UnifiedInitParamMetaData;
+import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData.HandlerType;
 import org.jboss.xb.binding.ObjectModelFactory;
 import org.jboss.xb.binding.UnmarshallingContext;
 import org.xml.sax.Attributes;
@@ -52,7 +53,7 @@
     */
    public Object newRoot(Object root, UnmarshallingContext navigator, String namespaceURI, String localName, Attributes attrs)
    {
-      HandlerChainsMetaData handlerConfigMetaData = new HandlerChainsMetaData();
+      HandlerChainsMetaData handlerConfigMetaData = new HandlerChainsMetaData(HandlerType.ENDPOINT);
       return handlerConfigMetaData;
    }
 
@@ -67,7 +68,7 @@
    public Object newChild(HandlerChainsMetaData handlerConfig, UnmarshallingContext navigator, String namespaceURI, String localName, Attributes attrs)
    {
       if ("handler-chain".equals(localName))
-         return new HandlerChainMetaData(handlerConfig);
+         return new HandlerChainMetaData(handlerConfig, handlerConfig.getHandlerType());
       else 
          return null;
    }
@@ -86,7 +87,7 @@
    public Object newChild(HandlerChainMetaData chainConfig, UnmarshallingContext navigator, String namespaceURI, String localName, Attributes attrs)
    {
       if ("handler".equals(localName))
-         return new UnifiedHandlerMetaData(chainConfig);
+         return new UnifiedHandlerMetaData(chainConfig, chainConfig.getHandlerType());
       else 
          return null;
    }

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr181/HandlerChainMetaData.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr181/HandlerChainMetaData.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr181/HandlerChainMetaData.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -31,6 +31,7 @@
 
 import org.jboss.logging.Logger;
 import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData;
+import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData.HandlerType;
 
 /**
  * XML Binding element for handler-config/handler-chain elements
@@ -43,24 +44,31 @@
    // provide logging
    private static final Logger log = Logger.getLogger(HandlerChainMetaData.class);
 
-   // The parent <handler-config> element
-   private HandlerChainsMetaData handlerConfig;
+   // The parent element
+   private HandlerChainsMetaData handlerChainsMetaData;
 
    private String protocolBindings;
    private QName serviceNamePattern;
    private QName portNamePattern;
+   private HandlerType handlerType;
    private ArrayList<UnifiedHandlerMetaData> handlers = new ArrayList<UnifiedHandlerMetaData>();
 
-   public HandlerChainMetaData(HandlerChainsMetaData handlerConfig)
+   public HandlerChainMetaData(HandlerChainsMetaData handlerConfig, HandlerType handlerType)
    {
-      this.handlerConfig = handlerConfig;
+      this.handlerChainsMetaData = handlerConfig;
+      this.handlerType = handlerType;
    }
 
-   public HandlerChainsMetaData getHandlerConfig()
+   public HandlerChainsMetaData getHandlerChainsMetaData()
    {
-      return handlerConfig;
+      return handlerChainsMetaData;
    }
 
+   public HandlerType getHandlerType()
+   {
+      return handlerType;
+   }
+
    public void addHandler(UnifiedHandlerMetaData handlerMetaData)
    {
       handlers.add(handlerMetaData);

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr181/HandlerChainsMetaData.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr181/HandlerChainsMetaData.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/metadata/jsr181/HandlerChainsMetaData.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -24,9 +24,10 @@
 
 //$Id$
 
-import java.net.URL;
 import java.util.ArrayList;
 
+import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData.HandlerType;
+
 /**
  * XML Binding root element for JSR-181 HandlerChain
  *
@@ -35,9 +36,22 @@
  */
 public class HandlerChainsMetaData
 {
+   // The required handler type
+   private HandlerType handlerType;
    // The required <handler-chain> elements
    private ArrayList<HandlerChainMetaData> handlerChains = new ArrayList<HandlerChainMetaData>();
 
+   public HandlerChainsMetaData(HandlerType handlerType)
+   {
+      this.handlerType = handlerType;
+   }
+
+   public HandlerType getHandlerType()
+   {
+      return handlerType;
+   }
+
+
    public void addHandlerChain(HandlerChainMetaData handlerChain)
    {
       handlerChains.add(handlerChain);

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/server/AbstractServiceEndpointInvoker.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/server/AbstractServiceEndpointInvoker.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/server/AbstractServiceEndpointInvoker.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -42,7 +42,7 @@
 import org.jboss.logging.Logger;
 import org.jboss.ws.Constants;
 import org.jboss.ws.binding.EndpointInvocation;
-import org.jboss.ws.common.SOAPMessageContextBase;
+import org.jboss.ws.common.CommonMessageContext;
 import org.jboss.ws.jaxrpc.SOAPFaultExceptionHelper;
 import org.jboss.ws.jaxrpc.handler.HandlerDelegateJAXRPC;
 import org.jboss.ws.jaxws.core.BindingImpl;
@@ -53,6 +53,7 @@
 import org.jboss.ws.metadata.ServerEndpointMetaData;
 import org.jboss.ws.metadata.j2ee.UnifiedHandlerMetaData.HandlerType;
 import org.jboss.ws.soap.MessageContextAssociation;
+import org.jboss.ws.soap.SOAPBodyImpl;
 import org.jboss.ws.soap.SOAPMessageImpl;
 import org.jboss.ws.utils.JavaUtils;
 
@@ -117,9 +118,9 @@
    /** Invoke the the service endpoint */
    public SOAPMessage invoke(ServiceEndpointInfo seInfo, Object context) throws Exception
    {
-      SOAPMessageContextBase msgContext = MessageContextAssociation.peekMessageContext();
+      CommonMessageContext msgContext = MessageContextAssociation.peekMessageContext();
       EndpointMetaData epMetaData = msgContext.getEndpointMetaData();
-      SOAPMessageImpl reqMessage = (SOAPMessageImpl)msgContext.getMessage();
+      SOAPMessageImpl reqMessage = (SOAPMessageImpl)msgContext.getSOAPMessage();
 
       // Load the endpoint implementation bean
       Class seImpl = loadServiceEndpoint(seInfo);
@@ -130,34 +131,49 @@
       try
       {
          boolean oneway = false;
+         BindingImpl binding = null;
+         EndpointInvocation epInv = null;
+         OperationMetaData opMetaData = null;
 
          // call the handler chain
          boolean handlersPass = callRequestHandlerChain(seInfo, HandlerType.PRE);
-         handlersPass = handlersPass && callRequestHandlerChain(seInfo, HandlerType.ENDPOINT);
-         handlersPass = handlersPass && callRequestHandlerChain(seInfo, HandlerType.POST);
-
+         
+         // Unbind the request message
          if (handlersPass)
          {
             // Get the binding from the provideer
-            BindingImpl binding = (BindingImpl)bindingProvider.getBinding();
+            binding = (BindingImpl)bindingProvider.getBinding();
 
             // Get the operation meta data from the SOAP message
-            OperationMetaData opMetaData = getDispatchDestination(epMetaData, reqMessage);
+            opMetaData = getDispatchDestination(epMetaData, reqMessage);
             msgContext.setOperationMetaData(opMetaData);
             oneway = opMetaData.isOneWayOperation();
 
             // Unbind the request message
-            EndpointInvocation epInv = binding.unbindRequestMessage(opMetaData, reqMessage);
+            epInv = binding.unbindRequestMessage(opMetaData, reqMessage);
+         }
+         
+         handlersPass = handlersPass && callRequestHandlerChain(seInfo, HandlerType.ENDPOINT);
+         handlersPass = handlersPass && callRequestHandlerChain(seInfo, HandlerType.POST);
 
+         // Check if protocol handlers modified the payload
+         if (((SOAPBodyImpl)reqMessage.getSOAPBody()).isModifiedFromSource())
+         {
+            log.debug("Handler modified body payload, unbind message again");
+            epInv = binding.unbindRequestMessage(opMetaData, reqMessage);
+         }
+         
+         if (handlersPass)
+         {
             // Invoke the service endpoint
-            msgContext.setProperty(SOAPMessageContextBase.ALLOW_EXPAND_TO_DOM, Boolean.TRUE);
+            msgContext.setProperty(CommonMessageContext.ALLOW_EXPAND_TO_DOM, Boolean.TRUE);
             try
             {
                invokeServiceEndpoint(seInfo, seInstance, epInv);
             }
             finally
             {
-               msgContext.removeProperty(SOAPMessageContextBase.ALLOW_EXPAND_TO_DOM);
+               msgContext.removeProperty(CommonMessageContext.ALLOW_EXPAND_TO_DOM);
             }
 
             // Set the outbound property
@@ -166,7 +182,7 @@
 
             // Bind the response message
             SOAPMessage resMessage = (SOAPMessage)binding.bindResponseMessage(opMetaData, epInv);
-            msgContext.setMessage(resMessage);
+            msgContext.setSOAPMessage(resMessage);
          }
 
          // call the handler chain
@@ -177,7 +193,7 @@
             handlersPass = handlersPass && callResponseHandlerChain(seInfo, HandlerType.PRE);
          }
 
-         SOAPMessage resMessage = msgContext.getMessage();
+         SOAPMessage resMessage = msgContext.getSOAPMessage();
          return resMessage;
       }
       catch (Exception ex)
@@ -185,7 +201,7 @@
          try
          {
             SOAPMessage faultMessage = SOAPFaultExceptionHelper.exceptionToFaultMessage(ex);
-            msgContext.setMessage(faultMessage);
+            msgContext.setSOAPMessage(faultMessage);
 
             // call the handler chain
             boolean handlersPass = handlerDelegate.callFaultHandlerChain(seInfo, HandlerType.POST, ex);

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/server/ServiceEndpoint.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/server/ServiceEndpoint.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/server/ServiceEndpoint.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -40,7 +40,7 @@
 import org.jboss.ws.utils.DOMWriter;
 import org.jboss.ws.Constants;
 import org.jboss.ws.binding.BindingException;
-import org.jboss.ws.common.SOAPMessageContextBase;
+import org.jboss.ws.common.CommonMessageContext;
 import org.jboss.ws.jaxrpc.SOAPFaultExceptionHelper;
 import org.jboss.ws.metadata.EndpointMetaData;
 import org.jboss.ws.metadata.ServerEndpointMetaData;
@@ -145,7 +145,7 @@
     */
    public SOAPMessage handleRequest(HeaderSource headerSource, EndpointContext context, InputStream inputStream) throws BindingException
    {
-      SOAPMessageContextBase msgContext = MessageContextAssociation.peekMessageContext();
+      CommonMessageContext msgContext = MessageContextAssociation.peekMessageContext();
       ServerEndpointMetaData epMetaData = seInfo.getServerEndpointMetaData();
 
       long beginProcessing = 0;
@@ -171,7 +171,7 @@
          SOAPMessageImpl reqMessage = (SOAPMessageImpl)msgFactory.createMessage(headers, inputStream);
 
          // Associate current message with message context
-         msgContext.setMessage(reqMessage);
+         msgContext.setSOAPMessage(reqMessage);
 
          // debug the incomming message
          if (msgLog.isTraceEnabled())
@@ -195,14 +195,14 @@
       }
       catch (Exception ex)
       {
-         SOAPMessage resMessage = msgContext.getMessage();
+         SOAPMessage resMessage = msgContext.getSOAPMessage();
 
          // In case we have an exception before the invoker is called
          // we create the fault message here.
          if (resMessage == null || ((SOAPMessageImpl)resMessage).isFaultMessage() == false)
          {
             resMessage = SOAPFaultExceptionHelper.exceptionToFaultMessage(ex);
-            msgContext.setMessage(resMessage);
+            msgContext.setSOAPMessage(resMessage);
          }
 
          postProcessResponse(headerSource, resMessage);
@@ -212,7 +212,7 @@
       {
          try
          {
-            SOAPMessage soapMessage = msgContext.getMessage();
+            SOAPMessage soapMessage = msgContext.getSOAPMessage();
             if (soapMessage != null && soapMessage.getSOAPPart().getEnvelope() != null)
             {
                if (soapMessage.getSOAPPart().getEnvelope().getBody().getFault() != null)

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/server/ServiceEndpointInvokerJSE.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/server/ServiceEndpointInvokerJSE.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/server/ServiceEndpointInvokerJSE.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -33,7 +33,7 @@
 import org.jboss.logging.Logger;
 import org.jboss.ws.WSException;
 import org.jboss.ws.binding.EndpointInvocation;
-import org.jboss.ws.common.SOAPMessageContextBase;
+import org.jboss.ws.common.CommonMessageContext;
 import org.jboss.ws.jaxrpc.ServletEndpointContextImpl;
 import org.jboss.ws.jaxws.handler.SOAPMessageContextJAXWS;
 import org.jboss.ws.metadata.ServerEndpointMetaData;
@@ -86,7 +86,7 @@
       log.debug("invokeServiceEndpoint: " + epInv.getJavaMethod().getName());
       try
       {
-         SOAPMessageContextBase msgContext = MessageContextAssociation.peekMessageContext();
+         CommonMessageContext msgContext = MessageContextAssociation.peekMessageContext();
          if (msgContext instanceof SOAPMessageContextJAXWS)
             MessageContextInjector.injectMessageContext(seiImpl, (SOAPMessageContextJAXWS)msgContext);
          

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/server/ServiceEndpointManager.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/server/ServiceEndpointManager.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/server/ServiceEndpointManager.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -59,7 +59,7 @@
 import org.jboss.logging.Logger;
 import org.jboss.ws.WSException;
 import org.jboss.ws.addressing.AddressingConstantsImpl;
-import org.jboss.ws.common.SOAPMessageContextBase;
+import org.jboss.ws.common.CommonMessageContext;
 import org.jboss.ws.jaxrpc.handler.MessageContextJAXRPC;
 import org.jboss.ws.jaxrpc.handler.SOAPMessageContextJAXRPC;
 import org.jboss.ws.jaxws.handler.MessageContextJAXWS;
@@ -353,7 +353,7 @@
       ServletHeaderSource headerSource = new ServletHeaderSource(httpRequest, httpResponse);
 
       // Associate a message context with the current thread
-      SOAPMessageContextBase msgContext;
+      CommonMessageContext msgContext;
       if (type == EndpointMetaData.Type.JAXRPC)
       {
          msgContext = new SOAPMessageContextJAXRPC();
@@ -422,9 +422,9 @@
       }
    }
 
-   private void sendResponse(OutputStream outputStream, SOAPMessageContextBase msgContext, boolean isFault) throws SOAPException, IOException
+   private void sendResponse(OutputStream outputStream, CommonMessageContext msgContext, boolean isFault) throws SOAPException, IOException
    {
-      SOAPMessage soapMessage = msgContext.getMessage();
+      SOAPMessage soapMessage = msgContext.getSOAPMessage();
       String wsaTo = null;
 
       // Get the destination from the AddressingProperties

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/soap/MessageContextAssociation.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/soap/MessageContextAssociation.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/soap/MessageContextAssociation.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -26,7 +26,7 @@
 import java.util.Stack;
 
 import org.jboss.logging.Logger;
-import org.jboss.ws.common.SOAPMessageContextBase;
+import org.jboss.ws.common.CommonMessageContext;
 import org.jboss.ws.utils.ThreadLocalAssociation;
 
 /**
@@ -41,22 +41,22 @@
    private static Logger log = Logger.getLogger(MessageContextAssociation.class);
   
 
-   public static void pushMessageContext(SOAPMessageContextBase msgContext)
+   public static void pushMessageContext(CommonMessageContext msgContext)
    {
       log.debug("pushMessageContext: " + msgContext);
-      Stack<SOAPMessageContextBase> stack = ThreadLocalAssociation.localMsgContextAssoc().get();
+      Stack<CommonMessageContext> stack = ThreadLocalAssociation.localMsgContextAssoc().get();
       if (stack == null)
       {
-         stack = new Stack<SOAPMessageContextBase>();
+         stack = new Stack<CommonMessageContext>();
          ThreadLocalAssociation.localMsgContextAssoc().set(stack);
       }
       stack.push(msgContext);
    }
    
-   public static SOAPMessageContextBase peekMessageContext()
+   public static CommonMessageContext peekMessageContext()
    {
-      SOAPMessageContextBase msgContext = null;
-      Stack<SOAPMessageContextBase> stack = ThreadLocalAssociation.localMsgContextAssoc().get();
+      CommonMessageContext msgContext = null;
+      Stack<CommonMessageContext> stack = ThreadLocalAssociation.localMsgContextAssoc().get();
       if (stack != null && stack.isEmpty() == false)
       {
          msgContext = stack.peek();
@@ -64,10 +64,10 @@
       return msgContext;
    }
    
-   public static SOAPMessageContextBase popMessageContext()
+   public static CommonMessageContext popMessageContext()
    {
-      SOAPMessageContextBase msgContext = null;
-      Stack<SOAPMessageContextBase> stack = ThreadLocalAssociation.localMsgContextAssoc().get();
+      CommonMessageContext msgContext = null;
+      Stack<CommonMessageContext> stack = ThreadLocalAssociation.localMsgContextAssoc().get();
       if (stack != null && stack.isEmpty() == false)
       {
          msgContext = stack.pop();

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/soap/MessageFactoryImpl.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/soap/MessageFactoryImpl.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/soap/MessageFactoryImpl.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -42,7 +42,7 @@
 
 import org.jboss.logging.Logger;
 import org.jboss.ws.Constants;
-import org.jboss.ws.common.SOAPMessageContextBase;
+import org.jboss.ws.common.CommonMessageContext;
 import org.jboss.ws.jaxrpc.Style;
 import org.jboss.ws.soap.attachment.MimeConstants;
 import org.jboss.ws.soap.attachment.MultipartRelatedDecoder;
@@ -88,7 +88,7 @@
    {
       if (style == null)
       {
-         SOAPMessageContextBase msgContext = MessageContextAssociation.peekMessageContext();
+         CommonMessageContext msgContext = MessageContextAssociation.peekMessageContext();
          if (msgContext != null && msgContext.getOperationMetaData() != null)
          {
             style = msgContext.getOperationMetaData().getStyle();

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/soap/SOAPBodyImpl.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/soap/SOAPBodyImpl.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/soap/SOAPBodyImpl.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -46,10 +46,12 @@
 import javax.xml.transform.stream.StreamSource;
 
 import org.jboss.logging.Logger;
+import org.jboss.ws.Constants;
+import org.jboss.ws.WSException;
+import org.jboss.ws.common.CommonMessageContext;
+import org.jboss.ws.metadata.UnifiedMetaData;
 import org.jboss.ws.utils.DOMUtils;
 import org.jboss.ws.utils.DOMWriter;
-import org.jboss.ws.Constants;
-import org.jboss.ws.WSException;
 import org.w3c.dom.DOMException;
 import org.w3c.dom.Document;
 import org.w3c.dom.DocumentFragment;
@@ -74,14 +76,24 @@
 
    // Generic JAXWS payload
    private Source payload;
-   private boolean expanded;
+   private boolean isDOMValid = true;
+   private boolean isModifiedFromSource;
 
    public SOAPBodyImpl(String prefix, String namespace)
    {
       super("Body", prefix, namespace);
-      this.expanded = true;
    }
 
+   public boolean isDOMValid()
+   {
+      return isDOMValid;
+   }
+
+   public boolean isModifiedFromSource()
+   {
+      return isModifiedFromSource;
+   }
+
    public Source getPayload()
    {
       return payload;
@@ -92,12 +104,13 @@
       log.debug("setPayload: " + payload.getClass().getName());
       removeContents();
       this.payload = payload;
-      this.expanded = false;
+      this.isDOMValid = false;
    }
 
    /** Convert the child into a SOAPBodyElement */
    public SOAPElement addChildElement(SOAPElement child) throws SOAPException
    {
+      log.trace("addChildElement: " + child.getElementName());
       expandToDOM();
       if ((child instanceof SOAPBodyElement) == false)
          child = convertToBodyElement(child);
@@ -108,6 +121,7 @@
 
    public SOAPBodyElement addBodyElement(Name name) throws SOAPException
    {
+      log.trace("addBodyElement: " + name);
       expandToDOM();
       SOAPBodyElement child = new SOAPBodyElementDoc(name);
       return (SOAPBodyElement)addChildElement(child);
@@ -115,6 +129,7 @@
 
    public SOAPBodyElement addDocument(Document doc) throws SOAPException
    {
+      log.trace("addDocument");
       expandToDOM();
       Element rootElement = doc.getDocumentElement();
       SOAPFactoryImpl soapFactory = new SOAPFactoryImpl();
@@ -124,6 +139,7 @@
 
    public SOAPFault addFault() throws SOAPException
    {
+      log.trace("addFault");
       expandToDOM();
       if (hasFault())
          throw new SOAPException("A SOAPBody may contain at most one SOAPFault child element");
@@ -133,6 +149,7 @@
 
    public SOAPFault addFault(Name faultCode, String faultString) throws SOAPException
    {
+      log.trace("addFault");
       expandToDOM();
       if (hasFault())
          throw new SOAPException("A SOAPBody may contain at most one SOAPFault child element");
@@ -146,6 +163,7 @@
 
    public SOAPFault addFault(Name faultCode, String faultString, Locale locale) throws SOAPException
    {
+      log.trace("addFault");
       expandToDOM();
       if (hasFault())
          throw new SOAPException("A SOAPBody may contain at most one SOAPFault child element");
@@ -159,6 +177,7 @@
 
    public SOAPFault getFault()
    {
+      log.trace("getFault");
       expandToDOM();
       Iterator it = getChildElements(new NameImpl("Fault", Constants.PREFIX_ENV, getSOAPEnvelope().getNamespaceURI()));
       return (it.hasNext() ? (SOAPFault)it.next() : null);
@@ -166,12 +185,14 @@
 
    public boolean hasFault()
    {
+      log.trace("hasFault");
       expandToDOM();
       return getChildElements(Constants.SOAP11_FAULT).hasNext();
    }
 
    public Node appendChild(Node newChild) throws DOMException
    {
+      log.trace("appendChild: " + newChild.getNodeName());
       expandToDOM();
       Node retNode;
       if (!(newChild instanceof SOAPBodyElement || newChild instanceof DocumentFragment))
@@ -184,6 +205,7 @@
 
    public Node insertBefore(Node newChild, Node refChild) throws DOMException
    {
+      log.trace("insertBefore: " + newChild.getNodeName());
       expandToDOM();
       if (!(newChild instanceof SOAPBodyElement || newChild instanceof DocumentFragment))
          newChild = convertToBodyElement(newChild);
@@ -193,6 +215,7 @@
 
    public Node replaceChild(Node newChild, Node oldChild) throws DOMException
    {
+      log.trace("replaceChild: " + newChild.getNodeName());
       expandToDOM();
       if (!(newChild instanceof SOAPBodyElement || newChild instanceof DocumentFragment))
       {
@@ -204,36 +227,42 @@
 
    public Iterator getChildElements()
    {
+      log.trace("getChildElements");
       expandToDOM();
       return super.getChildElements();
    }
 
    public Iterator getChildElements(Name name)
    {
+      log.trace("getChildElements: " + name);
       expandToDOM();
       return super.getChildElements(name);
    }
 
    public NodeList getChildNodes()
    {
+      log.trace("getChildNodes");
       expandToDOM();
       return super.getChildNodes();
    }
 
    public Node getFirstChild()
    {
+      log.trace("getFirstChild");
       expandToDOM();
       return super.getFirstChild();
    }
 
    public Node getLastChild()
    {
+      log.trace("getLastChild");
       expandToDOM();
       return super.getLastChild();
    }
 
    public boolean hasChildNodes()
    {
+      log.trace("hasChildNodes");
       expandToDOM();
       return super.hasChildNodes();
    }
@@ -250,14 +279,21 @@
 
    private void expandToDOM()
    {
-      if (expanded == false)
+      if (isDOMValid == false)
       {
-         // This should only happen when a handler accesses the DOM API. 
-         // Warn if this is not a final release. 
-         // if (UnifiedMetaData.isFinalRelease() == false)
-         // log.warn("Expanding soap body to DOM", new WSException());
+         // DOM expansion should only happen when a handler accesses the DOM API.
+         // We do not allow DOM expansion on a dev release.
+         CommonMessageContext msgContext = MessageContextAssociation.peekMessageContext();
+         if (msgContext != null && UnifiedMetaData.isDevRelease())
+         {
+            Boolean allowExpand = (Boolean)msgContext.getProperty(CommonMessageContext.ALLOW_EXPAND_TO_DOM);
+            if (Boolean.TRUE.equals(allowExpand) == false)
+               throw new WSException("Expanding content element to DOM");
+         }
 
-         expanded = true;
+         log.trace("BEGIN expandToDOM");
+
+         isDOMValid = true;
          try
          {
             Element child = getBodyElementFromSource();
@@ -267,14 +303,19 @@
          }
          catch (RuntimeException rte)
          {
-            expanded = false;
+            isDOMValid = false;
             throw rte;
          }
          catch (Exception ex)
          {
-            expanded = false;
+            isDOMValid = false;
             throw new WSException("Cannot expand to DOM" + ex);
          }
+         finally
+         {
+            isModifiedFromSource = true;
+            log.trace("END expandToDOM");
+         }
       }
    }
 

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/soap/SOAPContentElement.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/soap/SOAPContentElement.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/soap/SOAPContentElement.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -44,7 +44,7 @@
 import org.jboss.ws.binding.DeserializerSupport;
 import org.jboss.ws.binding.SerializationContext;
 import org.jboss.ws.binding.SerializerSupport;
-import org.jboss.ws.common.SOAPMessageContextBase;
+import org.jboss.ws.common.CommonMessageContext;
 import org.jboss.ws.jaxrpc.TypeMappingImpl;
 import org.jboss.ws.jaxrpc.encoding.DeserializerFactoryBase;
 import org.jboss.ws.jaxrpc.encoding.NullValueSerializer;
@@ -133,9 +133,24 @@
    {
       return getParamMetaData().getJavaType();
    }
+   
+   public boolean isDOMValid()
+   {
+      return isDOMValid;
+   }
 
-   public String getXMLFragment() throws SOAPException
+   public boolean isObjectValid()
    {
+      return isObjectValid;
+   }
+
+   public boolean isFragmentValid()
+   {
+      return xmlFragment != null;
+   }
+
+   public String getXMLFragment()
+   {
       // Serialize the valueContent
       if (xmlFragment == null && isObjectValid)
       {
@@ -145,7 +160,7 @@
          Class javaType = getJavaType();
          log.debug("getXMLFragment from Object [xmlType=" + xmlType + ",javaType=" + javaType + "]");
 
-         SOAPMessageContextBase msgContext = MessageContextAssociation.peekMessageContext();
+         CommonMessageContext msgContext = MessageContextAssociation.peekMessageContext();
          if (msgContext == null)
             throw new WSException("MessageContext not available");
 
@@ -169,8 +184,8 @@
             }
 
             xmlFragment = ser.serialize(xmlName, xmlType, getObjectValue(), serContext, null);
-
             log.debug("xmlFragment: " + xmlFragment);
+            invalidateObjectContent();
          }
          catch (BindingException e)
          {
@@ -184,6 +199,7 @@
          log.debug("getXMLFragment from DOM");
          xmlFragment = DOMWriter.printNode(this, false);
          log.debug("xmlFragment: " + xmlFragment);
+         invalidateDOMContent();
       }
 
       if (xmlFragment == null || xmlFragment.startsWith("<") == false)
@@ -207,7 +223,7 @@
       invalidateObjectContent();
    }
 
-   public Object getObjectValue() throws SOAPException
+   public Object getObjectValue()
    {
       if (isObjectValid == false)
       {
@@ -217,7 +233,7 @@
          log.debug("getObjectValue [xmlType=" + xmlType + ",javaType=" + javaType + "]");
          assertContentMapping();
 
-         SOAPMessageContextBase msgContext = MessageContextAssociation.peekMessageContext();
+         CommonMessageContext msgContext = MessageContextAssociation.peekMessageContext();
          if (msgContext == null)
             throw new WSException("MessageContext not available");
 
@@ -794,15 +810,12 @@
 
          // DOM expansion should only happen when a handler accesses the DOM API.
          // We do not allow DOM expansion on a dev release.
-         if (UnifiedMetaData.isDevRelease())
+         CommonMessageContext msgContext = MessageContextAssociation.peekMessageContext();
+         if (msgContext != null && UnifiedMetaData.isDevRelease())
          {
-            SOAPMessageContextBase msgContext = MessageContextAssociation.peekMessageContext();
-            if (msgContext != null)
-            {
-               Boolean allowExpand = (Boolean)msgContext.getProperty(SOAPMessageContextBase.ALLOW_EXPAND_TO_DOM);
-               if (Boolean.TRUE.equals(allowExpand) == false)
-                  throw new WSException("Expanding content element to DOM");
-            }
+            Boolean allowExpand = (Boolean)msgContext.getProperty(CommonMessageContext.ALLOW_EXPAND_TO_DOM);
+            if (Boolean.TRUE.equals(allowExpand) == false)
+               throw new WSException("Expanding content element to DOM");
          }
 
          try

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/soap/SOAPMessageDispatcher.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/soap/SOAPMessageDispatcher.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/soap/SOAPMessageDispatcher.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -35,7 +35,7 @@
 import javax.xml.ws.addressing.JAXWSAConstants;
 
 import org.jboss.logging.Logger;
-import org.jboss.ws.common.SOAPMessageContextBase;
+import org.jboss.ws.common.CommonMessageContext;
 import org.jboss.ws.jaxrpc.Style;
 import org.jboss.ws.metadata.EndpointMetaData;
 import org.jboss.ws.metadata.OperationMetaData;
@@ -58,7 +58,7 @@
       OperationMetaData opMetaData = null;
 
       // Dispatch based on wsa:Action
-      SOAPMessageContextBase msgContext = MessageContextAssociation.peekMessageContext();
+      CommonMessageContext msgContext = MessageContextAssociation.peekMessageContext();
       AddressingProperties inProps = (AddressingProperties)msgContext.getProperty(JAXWSAConstants.SERVER_ADDRESSING_PROPERTIES_INBOUND);
       if (inProps != null && inProps.getAction() != null)
       {

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/utils/ThreadLocalAssociation.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/utils/ThreadLocalAssociation.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/utils/ThreadLocalAssociation.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -25,7 +25,7 @@
 
 import java.util.Stack;
 
-import org.jboss.ws.common.SOAPMessageContextBase;
+import org.jboss.ws.common.CommonMessageContext;
 import org.jboss.ws.wsse.SecurityStore;
 
 /**
@@ -46,7 +46,7 @@
     * SOAP message context
     * @see org.jboss.ws.soap.MessageContextAssociation
     */
-   private static ThreadLocal<Stack<SOAPMessageContextBase>> msgContextAssoc = new InheritableThreadLocal<Stack<SOAPMessageContextBase>>();
+   private static ThreadLocal<Stack<CommonMessageContext>> msgContextAssoc = new InheritableThreadLocal<Stack<CommonMessageContext>>();
 
    /**
     * @see org.jboss.ws.wsse.STRTransform
@@ -57,7 +57,7 @@
       return invokerMDBAssoc;
    }
 
-   public static ThreadLocal<Stack<SOAPMessageContextBase>> localMsgContextAssoc() {
+   public static ThreadLocal<Stack<CommonMessageContext>> localMsgContextAssoc() {
       return msgContextAssoc;
    }
 

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/wsse/WSSecurityDispatcher.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/wsse/WSSecurityDispatcher.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/wsse/WSSecurityDispatcher.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -35,7 +35,7 @@
 import org.jboss.logging.Logger;
 import org.jboss.ws.utils.DOMWriter;
 import org.jboss.ws.WSException;
-import org.jboss.ws.common.SOAPMessageContextBase;
+import org.jboss.ws.common.CommonMessageContext;
 import org.jboss.ws.jaxrpc.StubExt;
 import org.jboss.ws.metadata.EndpointMetaData;
 import org.jboss.ws.metadata.OperationMetaData;
@@ -103,10 +103,10 @@
       return new SOAPFaultException(e.getFaultCode(), e.getFaultString(), null, null);
    }
 
-   public static void handleInbound(SOAPMessageContextBase ctx) throws SOAPException, SOAPFaultException
+   public static void handleInbound(CommonMessageContext ctx) throws SOAPException, SOAPFaultException
    {
       WSSecurityConfiguration config = getSecurityConfig(ctx);
-      SOAPMessageImpl soapMessage = (SOAPMessageImpl)ctx.getMessage();
+      SOAPMessageImpl soapMessage = (SOAPMessageImpl)ctx.getSOAPMessage();
 
       SOAPHeader soapHeader = soapMessage.getSOAPHeader();
       QName secQName = new QName(Constants.WSSE_NS, "Security");
@@ -174,7 +174,7 @@
       }
    }
 
-   private static WSSecurityConfiguration getSecurityConfig(SOAPMessageContextBase ctx)
+   private static WSSecurityConfiguration getSecurityConfig(CommonMessageContext ctx)
    {
       WSSecurityConfiguration config = ctx.getEndpointMetaData().getServiceMetaData().getSecurityConfiguration();
       if (config == null)
@@ -221,10 +221,10 @@
       return operations;
    }
 
-   public static void handleOutbound(SOAPMessageContextBase ctx) throws SOAPException, SOAPFaultException
+   public static void handleOutbound(CommonMessageContext ctx) throws SOAPException, SOAPFaultException
    {
       WSSecurityConfiguration config = getSecurityConfig(ctx);
-      SOAPMessageImpl soapMessage = (SOAPMessageImpl)ctx.getMessage();
+      SOAPMessageImpl soapMessage = (SOAPMessageImpl)ctx.getSOAPMessage();
 
       OperationMetaData opMetaData = ctx.getOperationMetaData();
       String operation = opMetaData.getQName().toString();

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/wsse/jaxws/WSSecurityHandler.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/wsse/jaxws/WSSecurityHandler.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/wsse/jaxws/WSSecurityHandler.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -27,7 +27,7 @@
 import javax.xml.ws.handler.MessageContext;
 
 import org.jboss.logging.Logger;
-import org.jboss.ws.common.SOAPMessageContextBase;
+import org.jboss.ws.common.CommonMessageContext;
 import org.jboss.ws.jaxws.handler.GenericSOAPHandler;
 import org.jboss.ws.metadata.EndpointMetaData;
 import org.jboss.ws.metadata.wsse.WSSecurityConfiguration;
@@ -50,7 +50,7 @@
       {
          if (getSecurityConfiguration(msgContext) != null)
          {
-            WSSecurityDispatcher.handleInbound((SOAPMessageContextBase)msgContext);
+            WSSecurityDispatcher.handleInbound((CommonMessageContext)msgContext);
          }
       }
       catch (SOAPException ex)
@@ -67,7 +67,7 @@
       {
          if (getSecurityConfiguration(msgContext) != null)
          {
-            WSSecurityDispatcher.handleOutbound((SOAPMessageContextBase)msgContext);
+            WSSecurityDispatcher.handleOutbound((CommonMessageContext)msgContext);
          }
       }
       catch (SOAPException ex)
@@ -80,7 +80,7 @@
 
    private WSSecurityConfiguration getSecurityConfiguration(MessageContext msgContext)
    {
-      EndpointMetaData epMetaData = ((SOAPMessageContextBase)msgContext).getEndpointMetaData();
+      EndpointMetaData epMetaData = ((CommonMessageContext)msgContext).getEndpointMetaData();
       WSSecurityConfiguration securityConfiguration = epMetaData.getServiceMetaData().getSecurityConfiguration();
       if (securityConfiguration == null)
          log.warn("Cannot obtain security configuration");

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/xop/XOPContext.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/xop/XOPContext.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/xop/XOPContext.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -36,7 +36,7 @@
 import org.jboss.ws.utils.DOMUtils;
 import org.jboss.ws.Constants;
 import org.jboss.ws.WSException;
-import org.jboss.ws.common.SOAPMessageContextBase;
+import org.jboss.ws.common.CommonMessageContext;
 import org.jboss.ws.jaxrpc.StubExt;
 import org.jboss.ws.soap.MessageContextAssociation;
 import org.jboss.ws.soap.NameImpl;
@@ -75,9 +75,9 @@
     */
    public static boolean isXOPPackage() {
       boolean isXOP = false;
-      SOAPMessageContextBase msgContext = MessageContextAssociation.peekMessageContext();
+      CommonMessageContext msgContext = MessageContextAssociation.peekMessageContext();
       if(msgContext!=null) {
-         SOAPMessageImpl soapMessage = (SOAPMessageImpl)msgContext.getMessage();
+         SOAPMessageImpl soapMessage = (SOAPMessageImpl)msgContext.getSOAPMessage();
          isXOP = (soapMessage != null && soapMessage.isXOPMessage());
       }
       return isXOP;
@@ -90,7 +90,7 @@
     */
    public static boolean isMTOMEnabled()
    {
-      SOAPMessageContextBase msgContext = MessageContextAssociation.peekMessageContext();
+      CommonMessageContext msgContext = MessageContextAssociation.peekMessageContext();
       Boolean mtomEnabled = (Boolean)msgContext.getProperty(StubExt.PROPERTY_MTOM_ENABLED);
       return Boolean.TRUE.equals(mtomEnabled) || mtomEnabled == null;
    }
@@ -225,8 +225,8 @@
       log.debug("Created base64 representation for content-type " + contentType);
 
       // cleanup the attachment part
-      SOAPMessageContextBase msgContext = (SOAPMessageContextBase)MessageContextAssociation.peekMessageContext();
-      SOAPMessageImpl soapMessage = (SOAPMessageImpl)msgContext.getMessage();
+      CommonMessageContext msgContext = (CommonMessageContext)MessageContextAssociation.peekMessageContext();
+      SOAPMessageImpl soapMessage = (SOAPMessageImpl)msgContext.getSOAPMessage();
 
       if(cid.startsWith("cid:")) cid = cid.substring(4);
       cid = '<'+cid+'>';
@@ -244,8 +244,8 @@
     */
    public static AttachmentPart getAttachmentByCID(String cid) throws SOAPException
    {
-      SOAPMessageContextBase msgContext = MessageContextAssociation.peekMessageContext();
-      SOAPMessageImpl soapMessage = (SOAPMessageImpl)msgContext.getMessage();
+      CommonMessageContext msgContext = MessageContextAssociation.peekMessageContext();
+      SOAPMessageImpl soapMessage = (SOAPMessageImpl)msgContext.getSOAPMessage();
 
       // RFC2392 requires the 'cid:' part to be stripped from the cid
       if(cid.startsWith("cid:")) cid = cid.substring(4);

Modified: branches/tdiesler/trunk/src/main/java/org/jboss/ws/xop/XOPMarshallerImpl.java
===================================================================
--- branches/tdiesler/trunk/src/main/java/org/jboss/ws/xop/XOPMarshallerImpl.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/main/java/org/jboss/ws/xop/XOPMarshallerImpl.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -28,7 +28,7 @@
 import org.jboss.ws.soap.SOAPMessageImpl;
 import org.jboss.ws.soap.attachment.MimeConstants;
 import org.jboss.ws.soap.attachment.ContentHandlerRegistry;
-import org.jboss.ws.common.SOAPMessageContextBase;
+import org.jboss.ws.common.CommonMessageContext;
 import org.jboss.xb.binding.sunday.xop.XOPMarshaller;
 import org.jboss.xb.binding.sunday.xop.XOPObject;
 
@@ -64,8 +64,8 @@
    public String addMtomAttachment(XOPObject obj, String elementNamespace, String elementName)
    {
 
-      SOAPMessageContextBase msgContext = (SOAPMessageContextBase)MessageContextAssociation.peekMessageContext();
-      SOAPMessageImpl soapMessage = (SOAPMessageImpl)msgContext.getMessage();
+      CommonMessageContext msgContext = (CommonMessageContext)MessageContextAssociation.peekMessageContext();
+      SOAPMessageImpl soapMessage = (SOAPMessageImpl)msgContext.getSOAPMessage();
 
       QName xmlName = new QName(elementNamespace, elementName);
       log.debug("serialize: [xmlName=" + xmlName + "]");

Modified: branches/tdiesler/trunk/src/test/ant/build-jars.xml
===================================================================
--- branches/tdiesler/trunk/src/test/ant/build-jars.xml	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/test/ant/build-jars.xml	2006-09-05 19:49:56 UTC (rev 901)
@@ -266,19 +266,33 @@
     </war>
     
     <!-- jbossws-jaxws-logicalhandler -->
-    <war warfile="${build.test.dir}/libs/jbossws-jaxws-logicalhandler.war" webxml="${build.test.dir}/resources/jaxws/logicalhandler/WEB-INF/web.xml">
+    <war warfile="${build.test.dir}/libs/jbossws-jaxws-logicalhandler-source.war" webxml="${build.test.dir}/resources/jaxws/logicalhandler/WEB-INF/web-source.xml">
       <classes dir="${build.test.dir}/classes">
-        <include name="org/jboss/test/ws/jaxws/logicalhandler/SOAPEndpointBean.class"/>
-        <include name="org/jboss/test/ws/jaxws/logicalhandler/SOAPEndpoint.class"/>
-        <include name="org/jboss/test/ws/jaxws/logicalhandler/LogicalHandler.class"/>
+        <include name="org/jboss/test/ws/jaxws/logicalhandler/SOAPEndpointSourceImpl.class"/>
+        <include name="org/jboss/test/ws/jaxws/logicalhandler/SOAPEndpointSource.class"/>
+        <include name="org/jboss/test/ws/jaxws/logicalhandler/LogicalSourceHandler.class"/>
         <include name="org/jboss/test/ws/jaxws/logicalhandler/ProtocolHandler.class"/>
         <include name="org/jboss/test/ws/jaxws/logicalhandler/Echo.class"/>
         <include name="org/jboss/test/ws/jaxws/logicalhandler/EchoResponse.class"/>
       </classes>
       <webinf dir="${build.test.dir}/resources/jaxws/logicalhandler/WEB-INF">
-        <include name="jaxws-server-handlers.xml"/>
+        <include name="jaxws-server-source-handlers.xml"/>
       </webinf>
     </war>
+    <war warfile="${build.test.dir}/libs/jbossws-jaxws-logicalhandler-jaxb.war" webxml="${build.test.dir}/resources/jaxws/logicalhandler/WEB-INF/web-jaxb.xml">
+      <classes dir="${build.test.dir}/classes">
+        <include name="org/jboss/test/ws/jaxws/logicalhandler/SOAPEndpointJAXBImpl.class"/>
+        <include name="org/jboss/test/ws/jaxws/logicalhandler/SOAPEndpointJAXB.class"/>
+        <include name="org/jboss/test/ws/jaxws/logicalhandler/LogicalJAXBHandler.class"/>
+        <include name="org/jboss/test/ws/jaxws/logicalhandler/ProtocolHandler.class"/>
+        <include name="org/jboss/test/ws/jaxws/logicalhandler/Echo.class"/>
+        <include name="org/jboss/test/ws/jaxws/logicalhandler/EchoResponse.class"/>
+        <include name="org/jboss/test/ws/jaxws/logicalhandler/ObjectFactory.class"/>
+      </classes>
+      <webinf dir="${build.test.dir}/resources/jaxws/logicalhandler/WEB-INF">
+        <include name="jaxws-server-jaxb-handlers.xml"/>
+      </webinf>
+    </war>
     
     <!-- jbossws-jaxws-provider-jaxb -->
     <war warfile="${build.test.dir}/libs/jbossws-jaxws-provider-jaxb.war" webxml="${build.test.dir}/resources/jaxws/provider/jaxb/WEB-INF/web.xml">

Modified: branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/binding/SOAPBindingTestCase.java
===================================================================
--- branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/binding/SOAPBindingTestCase.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/binding/SOAPBindingTestCase.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -40,7 +40,7 @@
 import org.jboss.ws.Constants;
 import org.jboss.ws.binding.EndpointInvocation;
 import org.jboss.ws.binding.UnboundHeader;
-import org.jboss.ws.common.SOAPMessageContextBase;
+import org.jboss.ws.common.CommonMessageContext;
 import org.jboss.ws.jaxrpc.CallImpl;
 import org.jboss.ws.jaxrpc.handler.SOAPMessageContextJAXRPC;
 import org.jboss.ws.jaxws.core.BindingImpl;
@@ -242,8 +242,8 @@
       MessageFactory factory = new MessageFactoryImpl();
       SOAPMessage reqMessage = factory.createMessage(null, inputStream);
 
-      SOAPMessageContextBase msgContext = MessageContextAssociation.peekMessageContext();
-      msgContext.setMessage(reqMessage);
+      CommonMessageContext msgContext = MessageContextAssociation.peekMessageContext();
+      msgContext.setSOAPMessage(reqMessage);
 
       EndpointInvocation epInv = binding.unbindRequestMessage(opMetaData, reqMessage);
       assertNotNull(epInv);
@@ -268,8 +268,8 @@
       MessageFactory factory = new MessageFactoryImpl();
       SOAPMessage reqMessage = factory.createMessage(null, inputStream);
 
-      SOAPMessageContextBase msgContext = MessageContextAssociation.peekMessageContext();
-      msgContext.setMessage(reqMessage);
+      CommonMessageContext msgContext = MessageContextAssociation.peekMessageContext();
+      msgContext.setSOAPMessage(reqMessage);
 
       BindingImpl binding = (BindingImpl)new BindingProviderImpl(SOAPBinding.SOAP12HTTP_BINDING).getBinding();
       EndpointInvocation epInv = binding.unbindRequestMessage(opMetaData, reqMessage);
@@ -290,8 +290,8 @@
       MessageFactory factory = new MessageFactoryImpl();
       SOAPMessage reqMessage = factory.createMessage(null, inputStream);
 
-      SOAPMessageContextBase msgContext = MessageContextAssociation.peekMessageContext();
-      msgContext.setMessage(reqMessage);
+      CommonMessageContext msgContext = MessageContextAssociation.peekMessageContext();
+      msgContext.setSOAPMessage(reqMessage);
 
       BindingImpl binding = (BindingImpl)new BindingProviderImpl(SOAPBinding.SOAP12HTTP_BINDING).getBinding();
       EndpointInvocation epInv = binding.unbindRequestMessage(opMetaData, reqMessage);
@@ -331,8 +331,8 @@
       MessageFactory factory = new MessageFactoryImpl();
       SOAPMessage resMessage = factory.createMessage(null, inputStream);
 
-      SOAPMessageContextBase msgContext = MessageContextAssociation.peekMessageContext();
-      msgContext.setMessage(resMessage);
+      CommonMessageContext msgContext = MessageContextAssociation.peekMessageContext();
+      msgContext.setSOAPMessage(resMessage);
 
       EndpointInvocation epInv = new EndpointInvocation(opMetaData);
       binding.unbindResponseMessage(opMetaData, resMessage, epInv, null);
@@ -350,8 +350,8 @@
       MessageFactory factory = new MessageFactoryImpl();
       SOAPMessage resMessage = factory.createMessage(null, inputStream);
 
-      SOAPMessageContextBase msgContext = MessageContextAssociation.peekMessageContext();
-      msgContext.setMessage(resMessage);
+      CommonMessageContext msgContext = MessageContextAssociation.peekMessageContext();
+      msgContext.setSOAPMessage(resMessage);
 
       // Add bound header
       QName xmlName = new QName("http://somens", "OutHeader");
@@ -379,8 +379,8 @@
       MessageFactory factory = new MessageFactoryImpl();
       SOAPMessage resMessage = factory.createMessage(null, inputStream);
 
-      SOAPMessageContextBase msgContext = MessageContextAssociation.peekMessageContext();
-      msgContext.setMessage(resMessage);
+      CommonMessageContext msgContext = MessageContextAssociation.peekMessageContext();
+      msgContext.setSOAPMessage(resMessage);
 
       QName xmlName = new QName("http://somens", "OutHeader");
       UnboundHeader header = new UnboundHeader(xmlName, Constants.TYPE_LITERAL_STRING, String.class, ParameterMode.OUT);
@@ -406,8 +406,8 @@
       MessageFactory factory = new MessageFactoryImpl();
       SOAPMessage resMessage = factory.createMessage(null, inputStream);
 
-      SOAPMessageContextBase msgContext = MessageContextAssociation.peekMessageContext();
-      msgContext.setMessage(resMessage);
+      CommonMessageContext msgContext = MessageContextAssociation.peekMessageContext();
+      msgContext.setSOAPMessage(resMessage);
 
       try
       {

Deleted: branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/logicalhandler/LogicalHandler.java
===================================================================
--- branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/logicalhandler/LogicalHandler.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/logicalhandler/LogicalHandler.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -1,90 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.test.ws.jaxws.logicalhandler;
-
-// $Id$
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-
-import javax.xml.transform.Source;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.transform.stream.StreamResult;
-import javax.xml.ws.WebServiceException;
-import javax.xml.ws.handler.LogicalMessageContext;
-import javax.xml.ws.handler.MessageContext;
-
-import org.jboss.ws.utils.DOMUtils;
-import org.jboss.ws.jaxws.handler.GenericLogicalHandler;
-import org.w3c.dom.Element;
-
-public class LogicalHandler extends GenericLogicalHandler
-{
-   @Override
-   public boolean handleOutbound(MessageContext msgContext)
-   {
-      return appendHandlerName(msgContext);
-   }
-
-   @Override
-   public boolean handleInbound(MessageContext msgContext)
-   {
-      return appendHandlerName(msgContext);
-   }
-   
-   private boolean appendHandlerName(MessageContext msgContext) 
-   {
-      try
-      {
-         // Get the payload as Source
-         LogicalMessageContext logicalContext = (LogicalMessageContext)msgContext;
-         Source source = logicalContext.getMessage().getPayload();
-         TransformerFactory tf = TransformerFactory.newInstance();
-         ByteArrayOutputStream baos = new ByteArrayOutputStream(1024);
-         tf.newTransformer().transform(source, new StreamResult(baos));
-         
-         // Parse the payload and extract the value
-         Element root = DOMUtils.parse(new ByteArrayInputStream(baos.toByteArray()));
-         Element element = DOMUtils.getFirstChildElement(root);
-         String value = DOMUtils.getTextContent(element);
-         
-         String handlerName = getHandlerName();
-         value = value + ":" + handlerName;
-         element.setTextContent(value);
-         
-         // Set the updated payload
-         source = new DOMSource(root);
-         logicalContext.getMessage().setPayload(source);
-         
-         return true;
-      }
-      catch (RuntimeException rte)
-      {
-         throw rte;
-      }
-      catch (Exception ex)
-      {
-         throw new WebServiceException(ex);
-      }
-   }
-}

Added: branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/logicalhandler/LogicalHandlerJAXBTestCase.java
===================================================================
--- branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/logicalhandler/LogicalHandlerJAXBTestCase.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/logicalhandler/LogicalHandlerJAXBTestCase.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -0,0 +1,78 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.ws.jaxws.logicalhandler;
+
+// $Id:LogicalHandlerTestCase.java 888 2006-09-02 00:37:13Z thomas.diesler at jboss.com $
+
+import java.net.URL;
+
+import javax.xml.namespace.QName;
+import javax.xml.ws.BindingProvider;
+import javax.xml.ws.Service;
+
+import junit.framework.Test;
+
+import org.jboss.test.ws.JBossWSTest;
+import org.jboss.test.ws.JBossWSTestSetup;
+
+/**
+ * Test JAXWS logical handlers
+ *
+ * @author Thomas.Diesler at jboss.org
+ * @since 12-Aug-2006
+ */
+public class LogicalHandlerJAXBTestCase extends JBossWSTest
+{
+   public static Test suite()
+   {
+      return JBossWSTestSetup.newTestSetup(LogicalHandlerJAXBTestCase.class, "jbossws-jaxws-logicalhandler-jaxb.war");
+   }
+
+   public void testClientAccess() throws Exception
+   {
+      String endpointAddress = "http://" + getServerHost() + ":8080/jbossws-jaxws-logicalhandler-jaxb";
+      QName serviceName = new QName("http://org.jboss.ws/jaxws/logicalhandler", "SOAPEndpointService");
+      Service service = Service.create(new URL(endpointAddress + "?wsdl"), serviceName);
+      SOAPEndpointJAXB port = (SOAPEndpointJAXB)service.getPort(SOAPEndpointJAXB.class);
+      
+      BindingProvider bindingProvider = (BindingProvider)port;
+      bindingProvider.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, endpointAddress);
+
+      String retStr = port.echo("hello");
+      
+      StringBuffer expStr = new StringBuffer("hello");
+      expStr.append(":LogicalClientHandler");
+      expStr.append(":SOAP11ClientHandler");
+      expStr.append(":PortClientHandler");
+      expStr.append(":LogicalServerHandler");
+      expStr.append(":SOAP11ServerHandler");
+      expStr.append(":PortServerHandler");
+      expStr.append(":endpoint");
+      expStr.append(":PortServerHandler");
+      expStr.append(":SOAP11ServerHandler");
+      expStr.append(":LogicalServerHandler");
+      expStr.append(":PortClientHandler");
+      expStr.append(":SOAP11ClientHandler");
+      expStr.append(":LogicalClientHandler");
+      assertEquals(expStr.toString(), retStr);
+   }
+}


Property changes on: branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/logicalhandler/LogicalHandlerJAXBTestCase.java
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + LF

Copied: branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/logicalhandler/LogicalHandlerSourceTestCase.java (from rev 900, branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/logicalhandler/LogicalHandlerTestCase.java)
===================================================================
--- branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/logicalhandler/LogicalHandlerTestCase.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/logicalhandler/LogicalHandlerSourceTestCase.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -0,0 +1,78 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.ws.jaxws.logicalhandler;
+
+// $Id:LogicalHandlerTestCase.java 888 2006-09-02 00:37:13Z thomas.diesler at jboss.com $
+
+import java.net.URL;
+
+import javax.xml.namespace.QName;
+import javax.xml.ws.BindingProvider;
+import javax.xml.ws.Service;
+
+import junit.framework.Test;
+
+import org.jboss.test.ws.JBossWSTest;
+import org.jboss.test.ws.JBossWSTestSetup;
+
+/**
+ * Test JAXWS logical handlers
+ *
+ * @author Thomas.Diesler at jboss.org
+ * @since 12-Aug-2006
+ */
+public class LogicalHandlerSourceTestCase extends JBossWSTest
+{
+   public static Test suite()
+   {
+      return JBossWSTestSetup.newTestSetup(LogicalHandlerSourceTestCase.class, "jbossws-jaxws-logicalhandler-source.war");
+   }
+
+   public void testClientAccess() throws Exception
+   {
+      String endpointAddress = "http://" + getServerHost() + ":8080/jbossws-jaxws-logicalhandler-source";
+      QName serviceName = new QName("http://org.jboss.ws/jaxws/logicalhandler", "SOAPEndpointService");
+      Service service = Service.create(new URL(endpointAddress + "?wsdl"), serviceName);
+      SOAPEndpointSource port = (SOAPEndpointSource)service.getPort(SOAPEndpointSource.class);
+      
+      BindingProvider bindingProvider = (BindingProvider)port;
+      bindingProvider.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, endpointAddress);
+
+      String retStr = port.echo("hello");
+      
+      StringBuffer expStr = new StringBuffer("hello");
+      expStr.append(":LogicalClientHandler");
+      expStr.append(":SOAP11ClientHandler");
+      expStr.append(":PortClientHandler");
+      expStr.append(":LogicalServerHandler");
+      expStr.append(":SOAP11ServerHandler");
+      expStr.append(":PortServerHandler");
+      expStr.append(":endpoint");
+      expStr.append(":PortServerHandler");
+      expStr.append(":SOAP11ServerHandler");
+      expStr.append(":LogicalServerHandler");
+      expStr.append(":PortClientHandler");
+      expStr.append(":SOAP11ClientHandler");
+      expStr.append(":LogicalClientHandler");
+      assertEquals(expStr.toString(), retStr);
+   }
+}

Deleted: branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/logicalhandler/LogicalHandlerTestCase.java
===================================================================
--- branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/logicalhandler/LogicalHandlerTestCase.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/logicalhandler/LogicalHandlerTestCase.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -1,74 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.test.ws.jaxws.logicalhandler;
-
-// $Id:LogicalHandlerTestCase.java 888 2006-09-02 00:37:13Z thomas.diesler at jboss.com $
-
-import java.net.URL;
-
-import javax.xml.namespace.QName;
-import javax.xml.ws.Service;
-
-import junit.framework.Test;
-
-import org.jboss.test.ws.JBossWSTest;
-import org.jboss.test.ws.JBossWSTestSetup;
-
-/**
- * Test JAXWS logical handlers
- *
- * @author Thomas.Diesler at jboss.org
- * @since 12-Aug-2006
- */
-public class LogicalHandlerTestCase extends JBossWSTest
-{
-   public static Test suite()
-   {
-      return JBossWSTestSetup.newTestSetup(LogicalHandlerTestCase.class, "jbossws-jaxws-logicalhandler.war");
-   }
-
-   public void testClientAccess() throws Exception
-   {
-      URL wsdlURL = new URL("http://" + getServerHost() + ":8080/jbossws-jaxws-logicalhandler?wsdl");
-      QName serviceName = new QName("http://org.jboss.ws/jaxws/logicalhandler", "SOAPEndpointService");
-      Service service = Service.create(wsdlURL, serviceName);
-      SOAPEndpoint port = (SOAPEndpoint)service.getPort(SOAPEndpoint.class);
-
-      String retStr = port.echo("hello");
-      
-      StringBuffer expStr = new StringBuffer("hello");
-      expStr.append(":LogicalClientHandler");
-      expStr.append(":SOAP11ClientHandler");
-      expStr.append(":PortClientHandler");
-      expStr.append(":LogicalServerHandler");
-      expStr.append(":SOAP11ServerHandler");
-      expStr.append(":PortServerHandler");
-      expStr.append(":endpoint");
-      expStr.append(":PortServerHandler");
-      expStr.append(":SOAP11ServerHandler");
-      expStr.append(":LogicalServerHandler");
-      expStr.append(":PortClientHandler");
-      expStr.append(":SOAP11ClientHandler");
-      expStr.append(":LogicalClientHandler");
-      assertEquals(expStr.toString(), retStr);
-   }
-}

Added: branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/logicalhandler/LogicalJAXBHandler.java
===================================================================
--- branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/logicalhandler/LogicalJAXBHandler.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/logicalhandler/LogicalJAXBHandler.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -0,0 +1,89 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.ws.jaxws.logicalhandler;
+
+// $Id$
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.ws.WebServiceException;
+import javax.xml.ws.handler.LogicalMessageContext;
+import javax.xml.ws.handler.MessageContext;
+
+import org.jboss.ws.jaxws.handler.GenericLogicalHandler;
+
+public class LogicalJAXBHandler extends GenericLogicalHandler
+{
+   @Override
+   public boolean handleOutbound(MessageContext msgContext)
+   {
+      return appendHandlerName(msgContext);
+   }
+
+   @Override
+   public boolean handleInbound(MessageContext msgContext)
+   {
+      return appendHandlerName(msgContext);
+   }
+
+   public boolean appendHandlerName(MessageContext msgContext)
+   {
+      try
+      {
+         // Get the payload as Source
+         LogicalMessageContext logicalContext = (LogicalMessageContext)msgContext;
+         JAXBContext jaxb = JAXBContext.newInstance(Echo.class.getPackage().getName());
+         Object payload = logicalContext.getMessage().getPayload(jaxb);
+
+         String handlerName = getHandlerName();
+
+         if (payload instanceof Echo)
+         {
+            Echo echo = (Echo)payload;
+            String value = echo.getString1();
+            echo.setString1(value + ":" + handlerName);
+         }
+         else if (payload instanceof EchoResponse)
+         {
+            EchoResponse echo = (EchoResponse)payload;
+            String value = echo.getResult();
+            echo.setResult(value + ":" + handlerName);
+         }
+         else
+         {
+            throw new WebServiceException("Invalid payload type: " + payload);
+         }
+
+         // Set the updated payload
+         logicalContext.getMessage().setPayload(payload, jaxb);
+
+         return true;
+      }
+      catch (RuntimeException rte)
+      {
+         throw rte;
+      }
+      catch (Exception ex)
+      {
+         throw new WebServiceException(ex);
+      }
+   }
+}


Property changes on: branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/logicalhandler/LogicalJAXBHandler.java
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + LF

Added: branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/logicalhandler/LogicalSourceHandler.java
===================================================================
--- branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/logicalhandler/LogicalSourceHandler.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/logicalhandler/LogicalSourceHandler.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -0,0 +1,90 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.ws.jaxws.logicalhandler;
+
+// $Id$
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+
+import javax.xml.transform.Source;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+import javax.xml.ws.WebServiceException;
+import javax.xml.ws.handler.LogicalMessageContext;
+import javax.xml.ws.handler.MessageContext;
+
+import org.jboss.ws.jaxws.handler.GenericLogicalHandler;
+import org.jboss.ws.utils.DOMUtils;
+import org.w3c.dom.Element;
+
+public class LogicalSourceHandler extends GenericLogicalHandler
+{
+   @Override
+   public boolean handleOutbound(MessageContext msgContext)
+   {
+      return appendHandlerName(msgContext);
+   }
+
+   @Override
+   public boolean handleInbound(MessageContext msgContext)
+   {
+      return appendHandlerName(msgContext);
+   }
+   
+   public boolean appendHandlerName(MessageContext msgContext) 
+   {
+      try
+      {
+         // Get the payload as Source
+         LogicalMessageContext logicalContext = (LogicalMessageContext)msgContext;
+         Source source = logicalContext.getMessage().getPayload();
+         TransformerFactory tf = TransformerFactory.newInstance();
+         ByteArrayOutputStream baos = new ByteArrayOutputStream(1024);
+         tf.newTransformer().transform(source, new StreamResult(baos));
+         
+         // Parse the payload and extract the value
+         Element root = DOMUtils.parse(new ByteArrayInputStream(baos.toByteArray()));
+         Element element = DOMUtils.getFirstChildElement(root);
+         String value = DOMUtils.getTextContent(element);
+         
+         String handlerName = getHandlerName();
+         value = value + ":" + handlerName;
+         element.setTextContent(value);
+         
+         // Set the updated payload
+         source = new DOMSource(root);
+         logicalContext.getMessage().setPayload(source);
+         
+         return true;
+      }
+      catch (RuntimeException rte)
+      {
+         throw rte;
+      }
+      catch (Exception ex)
+      {
+         throw new WebServiceException(ex);
+      }
+   }
+}


Property changes on: branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/logicalhandler/LogicalSourceHandler.java
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + LF

Deleted: branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/logicalhandler/SOAPEndpoint.java
===================================================================
--- branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/logicalhandler/SOAPEndpoint.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/logicalhandler/SOAPEndpoint.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -1,42 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.test.ws.jaxws.logicalhandler;
-
-// $Id$
-
-import javax.jws.HandlerChain;
-import javax.jws.WebMethod;
-import javax.jws.WebService;
-import javax.xml.ws.RequestWrapper;
-import javax.xml.ws.ResponseWrapper;
-
- at WebService()
- at HandlerChain(file = "resources/jaxws/logicalhandler/META-INF/jaxws-client-handlers.xml")
-public interface SOAPEndpoint
-{
-
-   @WebMethod
-   @RequestWrapper(className = "org.jboss.test.ws.jaxws.logicalhandler.Echo")
-   @ResponseWrapper(className = "org.jboss.test.ws.jaxws.logicalhandler.EchoResponse")
-   public String echo(String string1);
-
-}

Deleted: branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/logicalhandler/SOAPEndpointBean.java
===================================================================
--- branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/logicalhandler/SOAPEndpointBean.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/logicalhandler/SOAPEndpointBean.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -1,48 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.test.ws.jaxws.logicalhandler;
-
-// $Id$
-
-import javax.jws.HandlerChain;
-import javax.jws.WebMethod;
-import javax.jws.WebService;
-import javax.xml.ws.RequestWrapper;
-import javax.xml.ws.ResponseWrapper;
-
-import org.jboss.logging.Logger;
-
- at WebService(name = "SOAPEndpoint", targetNamespace = "http://org.jboss.ws/jaxws/logicalhandler")
- at HandlerChain(file = "WEB-INF/jaxws-server-handlers.xml")
-public class SOAPEndpointBean
-{
-   private static Logger log = Logger.getLogger(SOAPEndpointBean.class);
-
-   @WebMethod
-   @RequestWrapper(className = "org.jboss.test.ws.jaxws.logicalhandler.Echo")
-   @ResponseWrapper(className = "org.jboss.test.ws.jaxws.logicalhandler.EchoResponse")
-   public String echo(String msg)
-   {
-      log.info("echo: " + msg);
-      return msg + ":endpoint";
-   }
-}

Added: branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/logicalhandler/SOAPEndpointJAXB.java
===================================================================
--- branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/logicalhandler/SOAPEndpointJAXB.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/logicalhandler/SOAPEndpointJAXB.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -0,0 +1,42 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.ws.jaxws.logicalhandler;
+
+// $Id$
+
+import javax.jws.HandlerChain;
+import javax.jws.WebMethod;
+import javax.jws.WebService;
+import javax.xml.ws.RequestWrapper;
+import javax.xml.ws.ResponseWrapper;
+
+ at WebService()
+ at HandlerChain(file = "resources/jaxws/logicalhandler/META-INF/jaxws-client-jaxb-handlers.xml")
+public interface SOAPEndpointJAXB
+{
+
+   @WebMethod
+   @RequestWrapper(className = "org.jboss.test.ws.jaxws.logicalhandler.Echo")
+   @ResponseWrapper(className = "org.jboss.test.ws.jaxws.logicalhandler.EchoResponse")
+   public String echo(String string1);
+
+}


Property changes on: branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/logicalhandler/SOAPEndpointJAXB.java
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + LF

Added: branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/logicalhandler/SOAPEndpointJAXBImpl.java
===================================================================
--- branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/logicalhandler/SOAPEndpointJAXBImpl.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/logicalhandler/SOAPEndpointJAXBImpl.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -0,0 +1,48 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.ws.jaxws.logicalhandler;
+
+// $Id$
+
+import javax.jws.HandlerChain;
+import javax.jws.WebMethod;
+import javax.jws.WebService;
+import javax.xml.ws.RequestWrapper;
+import javax.xml.ws.ResponseWrapper;
+
+import org.jboss.logging.Logger;
+
+ at WebService(name = "SOAPEndpoint", targetNamespace = "http://org.jboss.ws/jaxws/logicalhandler")
+ at HandlerChain(file = "WEB-INF/jaxws-server-jaxb-handlers.xml")
+public class SOAPEndpointJAXBImpl
+{
+   private static Logger log = Logger.getLogger(SOAPEndpointJAXBImpl.class);
+
+   @WebMethod
+   @RequestWrapper(className = "org.jboss.test.ws.jaxws.logicalhandler.Echo")
+   @ResponseWrapper(className = "org.jboss.test.ws.jaxws.logicalhandler.EchoResponse")
+   public String echo(String msg)
+   {
+      log.info("echo: " + msg);
+      return msg + ":endpoint";
+   }
+}


Property changes on: branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/logicalhandler/SOAPEndpointJAXBImpl.java
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + LF

Copied: branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/logicalhandler/SOAPEndpointSource.java (from rev 896, branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/logicalhandler/SOAPEndpoint.java)
===================================================================
--- branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/logicalhandler/SOAPEndpoint.java	2006-09-04 22:47:36 UTC (rev 896)
+++ branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/logicalhandler/SOAPEndpointSource.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -0,0 +1,42 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.ws.jaxws.logicalhandler;
+
+// $Id$
+
+import javax.jws.HandlerChain;
+import javax.jws.WebMethod;
+import javax.jws.WebService;
+import javax.xml.ws.RequestWrapper;
+import javax.xml.ws.ResponseWrapper;
+
+ at WebService()
+ at HandlerChain(file = "resources/jaxws/logicalhandler/META-INF/jaxws-client-source-handlers.xml")
+public interface SOAPEndpointSource
+{
+
+   @WebMethod
+   @RequestWrapper(className = "org.jboss.test.ws.jaxws.logicalhandler.Echo")
+   @ResponseWrapper(className = "org.jboss.test.ws.jaxws.logicalhandler.EchoResponse")
+   public String echo(String string1);
+
+}

Copied: branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/logicalhandler/SOAPEndpointSourceImpl.java (from rev 896, branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/logicalhandler/SOAPEndpointBean.java)
===================================================================
--- branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/logicalhandler/SOAPEndpointBean.java	2006-09-04 22:47:36 UTC (rev 896)
+++ branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/jaxws/logicalhandler/SOAPEndpointSourceImpl.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -0,0 +1,48 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.ws.jaxws.logicalhandler;
+
+// $Id$
+
+import javax.jws.HandlerChain;
+import javax.jws.WebMethod;
+import javax.jws.WebService;
+import javax.xml.ws.RequestWrapper;
+import javax.xml.ws.ResponseWrapper;
+
+import org.jboss.logging.Logger;
+
+ at WebService(name = "SOAPEndpoint", targetNamespace = "http://org.jboss.ws/jaxws/logicalhandler")
+ at HandlerChain(file = "WEB-INF/jaxws-server-source-handlers.xml")
+public class SOAPEndpointSourceImpl
+{
+   private static Logger log = Logger.getLogger(SOAPEndpointSourceImpl.class);
+
+   @WebMethod
+   @RequestWrapper(className = "org.jboss.test.ws.jaxws.logicalhandler.Echo")
+   @ResponseWrapper(className = "org.jboss.test.ws.jaxws.logicalhandler.EchoResponse")
+   public String echo(String msg)
+   {
+      log.info("echo: " + msg);
+      return msg + ":endpoint";
+   }
+}

Modified: branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/xop/XOPElementRPCTestCase.java
===================================================================
--- branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/xop/XOPElementRPCTestCase.java	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/test/java/org/jboss/test/ws/xop/XOPElementRPCTestCase.java	2006-09-05 19:49:56 UTC (rev 901)
@@ -23,7 +23,7 @@
 
 import org.jboss.test.ws.JBossWSTest;
 import org.jboss.ws.Constants;
-import org.jboss.ws.common.SOAPMessageContextBase;
+import org.jboss.ws.common.CommonMessageContext;
 import org.jboss.ws.jaxrpc.Style;
 import org.jboss.ws.jaxrpc.handler.SOAPMessageContextJAXRPC;
 import org.jboss.ws.metadata.OperationMetaData;
@@ -76,10 +76,10 @@
       bodyElement.addChildElement(xopElement);
 
       // Setup the message context
-      SOAPMessageContextBase msgContext = new SOAPMessageContextJAXRPC();
+      CommonMessageContext msgContext = new SOAPMessageContextJAXRPC();
       MessageContextAssociation.pushMessageContext(msgContext);
       msgContext.setOperationMetaData(opMetaData);
-      msgContext.setMessage(soapMessage);
+      msgContext.setSOAPMessage(soapMessage);
 
    }
 

Deleted: branches/tdiesler/trunk/src/test/resources/jaxws/logicalhandler/META-INF/jaxws-client-handlers.xml
===================================================================
--- branches/tdiesler/trunk/src/test/resources/jaxws/logicalhandler/META-INF/jaxws-client-handlers.xml	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/test/resources/jaxws/logicalhandler/META-INF/jaxws-client-handlers.xml	2006-09-05 19:49:56 UTC (rev 901)
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<handler-chains xmlns="http://java.sun.com/xml/ns/javaee"
-  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xmlns:ns1="http://org.jboss.ws/jaxws/logicalhandler"
-  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee handler-chain.xsd">
-
-	<handler-chain>
-    <protocol-bindings>##SOAP11_HTTP</protocol-bindings>
-		<handler>
-			<handler-name> SOAP11ClientHandler </handler-name>
-			<handler-class> org.jboss.test.ws.jaxws.logicalhandler.ProtocolHandler </handler-class>
-		</handler>
-	</handler-chain>
-  
-	<handler-chain>
-		<handler>
-			<handler-name> LogicalClientHandler </handler-name>
-			<handler-class> org.jboss.test.ws.jaxws.logicalhandler.LogicalHandler </handler-class>
-		</handler>
-	</handler-chain>
-  
-	<handler-chain>
-    <port-name-pattern>ns1:SOAPEndpointPort</port-name-pattern>
-		<handler>
-			<handler-name> PortClientHandler </handler-name>
-			<handler-class> org.jboss.test.ws.jaxws.logicalhandler.ProtocolHandler </handler-class>
-		</handler>
-	</handler-chain>
-  
-</handler-chains>
\ No newline at end of file

Added: branches/tdiesler/trunk/src/test/resources/jaxws/logicalhandler/META-INF/jaxws-client-jaxb-handlers.xml
===================================================================
--- branches/tdiesler/trunk/src/test/resources/jaxws/logicalhandler/META-INF/jaxws-client-jaxb-handlers.xml	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/test/resources/jaxws/logicalhandler/META-INF/jaxws-client-jaxb-handlers.xml	2006-09-05 19:49:56 UTC (rev 901)
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<handler-chains xmlns="http://java.sun.com/xml/ns/javaee"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xmlns:ns1="http://org.jboss.ws/jaxws/logicalhandler"
+  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee handler-chain.xsd">
+
+	<handler-chain>
+    <protocol-bindings>##SOAP11_HTTP</protocol-bindings>
+		<handler>
+			<handler-name> SOAP11ClientHandler </handler-name>
+			<handler-class> org.jboss.test.ws.jaxws.logicalhandler.ProtocolHandler </handler-class>
+		</handler>
+	</handler-chain>
+  
+	<handler-chain>
+		<handler>
+			<handler-name> LogicalClientHandler </handler-name>
+			<handler-class> org.jboss.test.ws.jaxws.logicalhandler.LogicalJAXBHandler </handler-class>
+		</handler>
+	</handler-chain>
+  
+	<handler-chain>
+    <port-name-pattern>ns1:SOAPEndpointPort</port-name-pattern>
+		<handler>
+			<handler-name> PortClientHandler </handler-name>
+			<handler-class> org.jboss.test.ws.jaxws.logicalhandler.ProtocolHandler </handler-class>
+		</handler>
+	</handler-chain>
+  
+</handler-chains>
\ No newline at end of file


Property changes on: branches/tdiesler/trunk/src/test/resources/jaxws/logicalhandler/META-INF/jaxws-client-jaxb-handlers.xml
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + LF

Added: branches/tdiesler/trunk/src/test/resources/jaxws/logicalhandler/META-INF/jaxws-client-source-handlers.xml
===================================================================
--- branches/tdiesler/trunk/src/test/resources/jaxws/logicalhandler/META-INF/jaxws-client-source-handlers.xml	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/test/resources/jaxws/logicalhandler/META-INF/jaxws-client-source-handlers.xml	2006-09-05 19:49:56 UTC (rev 901)
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<handler-chains xmlns="http://java.sun.com/xml/ns/javaee"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xmlns:ns1="http://org.jboss.ws/jaxws/logicalhandler"
+  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee handler-chain.xsd">
+
+	<handler-chain>
+    <protocol-bindings>##SOAP11_HTTP</protocol-bindings>
+		<handler>
+			<handler-name> SOAP11ClientHandler </handler-name>
+			<handler-class> org.jboss.test.ws.jaxws.logicalhandler.ProtocolHandler </handler-class>
+		</handler>
+	</handler-chain>
+  
+	<handler-chain>
+		<handler>
+			<handler-name> LogicalClientHandler </handler-name>
+			<handler-class> org.jboss.test.ws.jaxws.logicalhandler.LogicalSourceHandler </handler-class>
+		</handler>
+	</handler-chain>
+  
+	<handler-chain>
+    <port-name-pattern>ns1:SOAPEndpointPort</port-name-pattern>
+		<handler>
+			<handler-name> PortClientHandler </handler-name>
+			<handler-class> org.jboss.test.ws.jaxws.logicalhandler.ProtocolHandler </handler-class>
+		</handler>
+	</handler-chain>
+  
+</handler-chains>
\ No newline at end of file


Property changes on: branches/tdiesler/trunk/src/test/resources/jaxws/logicalhandler/META-INF/jaxws-client-source-handlers.xml
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + LF

Modified: branches/tdiesler/trunk/src/test/resources/jaxws/logicalhandler/META-INF/wsdl/TestService.wsdl
===================================================================
--- branches/tdiesler/trunk/src/test/resources/jaxws/logicalhandler/META-INF/wsdl/TestService.wsdl	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/test/resources/jaxws/logicalhandler/META-INF/wsdl/TestService.wsdl	2006-09-05 19:49:56 UTC (rev 901)
@@ -68,7 +68,7 @@
   
   <service name='SOAPEndpointService'>
     <port binding='tns:SOAPEndpointBinding' name='SOAPEndpointPort'>
-      <soap:address location='http://@jbosstest.host.name@:8080/jbossws-jaxws-logicalhandler/TestService'/>
+      <soap:address location='CLIENT_PROVIDED_URL'/>
     </port>
   </service>
 </definitions>
\ No newline at end of file

Deleted: branches/tdiesler/trunk/src/test/resources/jaxws/logicalhandler/WEB-INF/jaxws-server-handlers.xml
===================================================================
--- branches/tdiesler/trunk/src/test/resources/jaxws/logicalhandler/WEB-INF/jaxws-server-handlers.xml	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/test/resources/jaxws/logicalhandler/WEB-INF/jaxws-server-handlers.xml	2006-09-05 19:49:56 UTC (rev 901)
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<handler-chains xmlns="http://java.sun.com/xml/ns/javaee"
-  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xmlns:ns1="http://org.jboss.ws/jaxws/logicalhandler"
-  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee handler-chain.xsd">
-
-	<handler-chain>
-    <protocol-bindings>##SOAP11_HTTP</protocol-bindings>
-		<handler>
-			<handler-name> SOAP11ServerHandler </handler-name>
-			<handler-class> org.jboss.test.ws.jaxws.logicalhandler.ProtocolHandler </handler-class>
-		</handler>
-	</handler-chain>
-  
-	<handler-chain>
-		<handler>
-			<handler-name> LogicalServerHandler </handler-name>
-			<handler-class> org.jboss.test.ws.jaxws.logicalhandler.LogicalHandler </handler-class>
-		</handler>
-	</handler-chain>
-  
-	<handler-chain>
-    <port-name-pattern>ns1:SOAPEndpointPort</port-name-pattern>
-		<handler>
-			<handler-name> PortServerHandler </handler-name>
-			<handler-class> org.jboss.test.ws.jaxws.logicalhandler.ProtocolHandler </handler-class>
-		</handler>
-	</handler-chain>
-  
-</handler-chains>
\ No newline at end of file

Added: branches/tdiesler/trunk/src/test/resources/jaxws/logicalhandler/WEB-INF/jaxws-server-jaxb-handlers.xml
===================================================================
--- branches/tdiesler/trunk/src/test/resources/jaxws/logicalhandler/WEB-INF/jaxws-server-jaxb-handlers.xml	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/test/resources/jaxws/logicalhandler/WEB-INF/jaxws-server-jaxb-handlers.xml	2006-09-05 19:49:56 UTC (rev 901)
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<handler-chains xmlns="http://java.sun.com/xml/ns/javaee"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xmlns:ns1="http://org.jboss.ws/jaxws/logicalhandler"
+  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee handler-chain.xsd">
+
+	<handler-chain>
+    <protocol-bindings>##SOAP11_HTTP</protocol-bindings>
+		<handler>
+			<handler-name> SOAP11ServerHandler </handler-name>
+			<handler-class> org.jboss.test.ws.jaxws.logicalhandler.ProtocolHandler </handler-class>
+		</handler>
+	</handler-chain>
+  
+	<handler-chain>
+		<handler>
+			<handler-name> LogicalServerHandler </handler-name>
+			<handler-class> org.jboss.test.ws.jaxws.logicalhandler.LogicalJAXBHandler </handler-class>
+		</handler>
+	</handler-chain>
+  
+	<handler-chain>
+    <port-name-pattern>ns1:SOAPEndpointPort</port-name-pattern>
+		<handler>
+			<handler-name> PortServerHandler </handler-name>
+			<handler-class> org.jboss.test.ws.jaxws.logicalhandler.ProtocolHandler </handler-class>
+		</handler>
+	</handler-chain>
+  
+</handler-chains>
\ No newline at end of file


Property changes on: branches/tdiesler/trunk/src/test/resources/jaxws/logicalhandler/WEB-INF/jaxws-server-jaxb-handlers.xml
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + LF

Copied: branches/tdiesler/trunk/src/test/resources/jaxws/logicalhandler/WEB-INF/jaxws-server-source-handlers.xml (from rev 896, branches/tdiesler/trunk/src/test/resources/jaxws/logicalhandler/WEB-INF/jaxws-server-handlers.xml)
===================================================================
--- branches/tdiesler/trunk/src/test/resources/jaxws/logicalhandler/WEB-INF/jaxws-server-handlers.xml	2006-09-04 22:47:36 UTC (rev 896)
+++ branches/tdiesler/trunk/src/test/resources/jaxws/logicalhandler/WEB-INF/jaxws-server-source-handlers.xml	2006-09-05 19:49:56 UTC (rev 901)
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<handler-chains xmlns="http://java.sun.com/xml/ns/javaee"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xmlns:ns1="http://org.jboss.ws/jaxws/logicalhandler"
+  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee handler-chain.xsd">
+
+	<handler-chain>
+    <protocol-bindings>##SOAP11_HTTP</protocol-bindings>
+		<handler>
+			<handler-name> SOAP11ServerHandler </handler-name>
+			<handler-class> org.jboss.test.ws.jaxws.logicalhandler.ProtocolHandler </handler-class>
+		</handler>
+	</handler-chain>
+  
+	<handler-chain>
+		<handler>
+			<handler-name> LogicalServerHandler </handler-name>
+			<handler-class> org.jboss.test.ws.jaxws.logicalhandler.LogicalSourceHandler </handler-class>
+		</handler>
+	</handler-chain>
+  
+	<handler-chain>
+    <port-name-pattern>ns1:SOAPEndpointPort</port-name-pattern>
+		<handler>
+			<handler-name> PortServerHandler </handler-name>
+			<handler-class> org.jboss.test.ws.jaxws.logicalhandler.ProtocolHandler </handler-class>
+		</handler>
+	</handler-chain>
+  
+</handler-chains>
\ No newline at end of file

Added: branches/tdiesler/trunk/src/test/resources/jaxws/logicalhandler/WEB-INF/web-jaxb.xml
===================================================================
--- branches/tdiesler/trunk/src/test/resources/jaxws/logicalhandler/WEB-INF/web-jaxb.xml	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/test/resources/jaxws/logicalhandler/WEB-INF/web-jaxb.xml	2006-09-05 19:49:56 UTC (rev 901)
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
+  version="2.4">
+
+  <servlet>
+    <servlet-name>SOAPEndpoint</servlet-name>
+    <servlet-class>org.jboss.test.ws.jaxws.logicalhandler.SOAPEndpointJAXBImpl</servlet-class>
+  </servlet>
+
+  <servlet-mapping>
+    <servlet-name>SOAPEndpoint</servlet-name>
+    <url-pattern>/*</url-pattern>
+  </servlet-mapping>
+
+</web-app>
+


Property changes on: branches/tdiesler/trunk/src/test/resources/jaxws/logicalhandler/WEB-INF/web-jaxb.xml
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + LF

Copied: branches/tdiesler/trunk/src/test/resources/jaxws/logicalhandler/WEB-INF/web-source.xml (from rev 896, branches/tdiesler/trunk/src/test/resources/jaxws/logicalhandler/WEB-INF/web.xml)
===================================================================
--- branches/tdiesler/trunk/src/test/resources/jaxws/logicalhandler/WEB-INF/web.xml	2006-09-04 22:47:36 UTC (rev 896)
+++ branches/tdiesler/trunk/src/test/resources/jaxws/logicalhandler/WEB-INF/web-source.xml	2006-09-05 19:49:56 UTC (rev 901)
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
+  version="2.4">
+
+  <servlet>
+    <servlet-name>SOAPEndpoint</servlet-name>
+    <servlet-class>org.jboss.test.ws.jaxws.logicalhandler.SOAPEndpointSourceImpl</servlet-class>
+  </servlet>
+
+  <servlet-mapping>
+    <servlet-name>SOAPEndpoint</servlet-name>
+    <url-pattern>/*</url-pattern>
+  </servlet-mapping>
+
+</web-app>
+

Deleted: branches/tdiesler/trunk/src/test/resources/jaxws/logicalhandler/WEB-INF/web.xml
===================================================================
--- branches/tdiesler/trunk/src/test/resources/jaxws/logicalhandler/WEB-INF/web.xml	2006-09-05 13:48:51 UTC (rev 900)
+++ branches/tdiesler/trunk/src/test/resources/jaxws/logicalhandler/WEB-INF/web.xml	2006-09-05 19:49:56 UTC (rev 901)
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
-  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
-  version="2.4">
-
-  <servlet>
-    <servlet-name>TestService</servlet-name>
-    <servlet-class>org.jboss.test.ws.jaxws.logicalhandler.SOAPEndpointBean</servlet-class>
-  </servlet>
-
-  <servlet-mapping>
-    <servlet-name>TestService</servlet-name>
-    <url-pattern>/*</url-pattern>
-  </servlet-mapping>
-
-</web-app>
-




More information about the jboss-svn-commits mailing list