[jboss-svn-commits] JBossWS SVN: r891 - in trunk/src: main/java/org/jboss/ws/addressing/soap main/java/org/jboss/ws/binding main/java/org/jboss/ws/binding/soap main/java/org/jboss/ws/common main/java/org/jboss/ws/deployment main/java/org/jboss/ws/handler main/java/org/jboss/ws/jaxrpc main/java/org/jboss/ws/jaxrpc/encoding 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/metadata main/java/org/jboss/ws/server main/java/org/jboss/ws/soap main/java/org/jboss/ws/soap/attachment main/java/org/jboss/ws/utils main/java/org/jboss/ws/wsse main/java/org/jboss/ws/xop test test/etc test/java/org/jboss/test/ws/jaxws/logicalhandler test/java/org/jboss/test/ws/jbws1125 test/java/org/jboss/test/ws/samples/mtom test/java/org/jboss/test/ws/util

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sun Sep 3 08:51:33 EDT 2006


Author: thomas.diesler at jboss.com
Date: 2006-09-03 08:50:56 -0400 (Sun, 03 Sep 2006)
New Revision: 891

Modified:
   trunk/src/main/java/org/jboss/ws/addressing/soap/SOAPAddressingPropertiesImpl.java
   trunk/src/main/java/org/jboss/ws/binding/SerializerSupport.java
   trunk/src/main/java/org/jboss/ws/binding/soap/SOAPMessageMarshaller.java
   trunk/src/main/java/org/jboss/ws/common/CommonClient.java
   trunk/src/main/java/org/jboss/ws/deployment/JAXWSClientMetaDataBuilder.java
   trunk/src/main/java/org/jboss/ws/deployment/JSR109ClientMetaDataBuilder.java
   trunk/src/main/java/org/jboss/ws/handler/HandlerChainBaseImpl.java
   trunk/src/main/java/org/jboss/ws/jaxrpc/CallImpl.java
   trunk/src/main/java/org/jboss/ws/jaxrpc/encoding/NullValueSerializer.java
   trunk/src/main/java/org/jboss/ws/jaxrpc/encoding/SOAPArraySerializer.java
   trunk/src/main/java/org/jboss/ws/jaxrpc/handler/HandlerChainBaseImpl.java
   trunk/src/main/java/org/jboss/ws/jaxws/client/ClientImpl.java
   trunk/src/main/java/org/jboss/ws/jaxws/core/SOAPBindingImpl.java
   trunk/src/main/java/org/jboss/ws/metadata/ServiceMetaData.java
   trunk/src/main/java/org/jboss/ws/metadata/UnifiedMetaData.java
   trunk/src/main/java/org/jboss/ws/server/ServiceEndpoint.java
   trunk/src/main/java/org/jboss/ws/soap/MessageContextAssociation.java
   trunk/src/main/java/org/jboss/ws/soap/MessageFactoryImpl.java
   trunk/src/main/java/org/jboss/ws/soap/SOAPConnectionImpl.java
   trunk/src/main/java/org/jboss/ws/soap/SOAPContentElement.java
   trunk/src/main/java/org/jboss/ws/soap/SOAPElementImpl.java
   trunk/src/main/java/org/jboss/ws/soap/SOAPElementWriter.java
   trunk/src/main/java/org/jboss/ws/soap/SOAPMessageImpl.java
   trunk/src/main/java/org/jboss/ws/soap/attachment/MultipartRelatedSwAEncoder.java
   trunk/src/main/java/org/jboss/ws/soap/attachment/MultipartRelatedXOPEncoder.java
   trunk/src/main/java/org/jboss/ws/utils/ThreadLocalAssociation.java
   trunk/src/main/java/org/jboss/ws/wsse/WSSecurityDispatcher.java
   trunk/src/main/java/org/jboss/ws/xop/XOPContext.java
   trunk/src/test/build.xml
   trunk/src/test/etc/log4j.xml
   trunk/src/test/java/org/jboss/test/ws/jaxws/logicalhandler/LogicalHandlerTestCase.java
   trunk/src/test/java/org/jboss/test/ws/jbws1125/JBWS1125TestCase.java
   trunk/src/test/java/org/jboss/test/ws/samples/mtom/XOPRpcTestCase.java
   trunk/src/test/java/org/jboss/test/ws/util/DOMWriterTestCase.java
Log:
Remove thread local expandToDOM blocker
Fix XOP inline handling in writeElement

Modified: trunk/src/main/java/org/jboss/ws/addressing/soap/SOAPAddressingPropertiesImpl.java
===================================================================
--- trunk/src/main/java/org/jboss/ws/addressing/soap/SOAPAddressingPropertiesImpl.java	2006-09-02 01:51:03 UTC (rev 890)
+++ trunk/src/main/java/org/jboss/ws/addressing/soap/SOAPAddressingPropertiesImpl.java	2006-09-03 12:50:56 UTC (rev 891)
@@ -75,10 +75,8 @@
 
    public void readHeaders(SOAPMessage message) throws AddressingException
    {
-      Boolean domExpansion = ThreadLocalAssociation.localDomExpansion().get();
       try
       {
-         ThreadLocalAssociation.localDomExpansion().set(Boolean.TRUE);
          SOAPHeader soapHeader = message.getSOAPHeader();
 
          SOAPAddressingBuilder builder = new SOAPAddressingBuilderImpl();
@@ -186,9 +184,6 @@
       {
          throw new AddressingException("Cannot read headers", ex);
       }
-      finally{
-         ThreadLocalAssociation.localDomExpansion().set(domExpansion);
-      }
    }
 
    public void writeHeaders(SOAPMessage message) throws AddressingException

Modified: trunk/src/main/java/org/jboss/ws/binding/SerializerSupport.java
===================================================================
--- trunk/src/main/java/org/jboss/ws/binding/SerializerSupport.java	2006-09-02 01:51:03 UTC (rev 890)
+++ trunk/src/main/java/org/jboss/ws/binding/SerializerSupport.java	2006-09-03 12:50:56 UTC (rev 891)
@@ -27,6 +27,7 @@
 import javax.xml.rpc.encoding.Serializer;
 
 import org.jboss.util.NotImplementedException;
+import org.jboss.ws.Constants;
 import org.jboss.xb.binding.NamespaceRegistry;
 import org.w3c.dom.NamedNodeMap;
 import org.w3c.dom.Node;
@@ -92,7 +93,8 @@
       String xmlFragment;
       if (valueStr == null)
       {
-         xmlFragment = "<" + elName + nsAttr + " xsi:nil='1'/>";
+         String xmlns = " xmlns:" + Constants.PREFIX_XSI + "='" + Constants.NS_SCHEMA_XSI + "'";
+         xmlFragment = "<" + elName + nsAttr + " " + Constants.PREFIX_XSI + ":nil='1'" + xmlns + "/>";
       }
       else
       {

Modified: trunk/src/main/java/org/jboss/ws/binding/soap/SOAPMessageMarshaller.java
===================================================================
--- trunk/src/main/java/org/jboss/ws/binding/soap/SOAPMessageMarshaller.java	2006-09-02 01:51:03 UTC (rev 890)
+++ trunk/src/main/java/org/jboss/ws/binding/soap/SOAPMessageMarshaller.java	2006-09-03 12:50:56 UTC (rev 891)
@@ -21,18 +21,22 @@
 */
 package org.jboss.ws.binding.soap;
 
+import java.io.IOException;
+import java.io.OutputStream;
+
+import javax.xml.soap.SOAPEnvelope;
+import javax.xml.soap.SOAPException;
+import javax.xml.soap.SOAPMessage;
+
 import org.jboss.logging.Logger;
 import org.jboss.remoting.InvocationRequest;
 import org.jboss.remoting.invocation.OnewayInvocation;
 import org.jboss.remoting.marshal.Marshaller;
+import org.jboss.util.xml.DOMUtils;
+import org.jboss.util.xml.DOMWriter;
+import org.jboss.ws.soap.SOAPElementImpl;
 import org.jboss.ws.soap.SOAPElementWriter;
-import org.jboss.ws.soap.SOAPElementImpl;
-
-import javax.xml.soap.SOAPEnvelope;
-import javax.xml.soap.SOAPException;
-import javax.xml.soap.SOAPMessage;
-import java.io.IOException;
-import java.io.OutputStream;
+import org.jboss.ws.soap.SOAPMessageImpl;
 /**
  * @author Thomas.Diesler at jboss.org
  * @since 25-Nov-2004
@@ -64,7 +68,7 @@
 
       try
       {
-         SOAPMessage soapMessage = (SOAPMessage)dataObject;
+         SOAPMessageImpl soapMessage = (SOAPMessageImpl)dataObject;
 
          // debug the outgoing message
          if (log.isTraceEnabled())

Modified: trunk/src/main/java/org/jboss/ws/common/CommonClient.java
===================================================================
--- trunk/src/main/java/org/jboss/ws/common/CommonClient.java	2006-09-02 01:51:03 UTC (rev 890)
+++ trunk/src/main/java/org/jboss/ws/common/CommonClient.java	2006-09-03 12:50:56 UTC (rev 891)
@@ -335,9 +335,6 @@
       {
          // Snyc context properties with the stub that clients can access them
          syncMessageProperties(getResponseContext(), msgContext);
-
-         // Reset the message context association
-         MessageContextAssociation.popMessageContext();
       }
    }
 

Modified: trunk/src/main/java/org/jboss/ws/deployment/JAXWSClientMetaDataBuilder.java
===================================================================
--- trunk/src/main/java/org/jboss/ws/deployment/JAXWSClientMetaDataBuilder.java	2006-09-02 01:51:03 UTC (rev 890)
+++ trunk/src/main/java/org/jboss/ws/deployment/JAXWSClientMetaDataBuilder.java	2006-09-03 12:50:56 UTC (rev 891)
@@ -96,7 +96,7 @@
          JBossXSModel schemaModel = WSDLUtils.getSchemaModel(wsdlDefinitions.getWsdlTypes());
          serviceMetaData.getTypesMetaData().setSchemaModel(schemaModel);
          
-         log.debug("END buildMetaData: " + serviceMetaData);
+         log.debug("END buildMetaData: " + wsMetaData);
          return serviceMetaData;
       }
       catch (RuntimeException rte)

Modified: trunk/src/main/java/org/jboss/ws/deployment/JSR109ClientMetaDataBuilder.java
===================================================================
--- trunk/src/main/java/org/jboss/ws/deployment/JSR109ClientMetaDataBuilder.java	2006-09-02 01:51:03 UTC (rev 890)
+++ trunk/src/main/java/org/jboss/ws/deployment/JSR109ClientMetaDataBuilder.java	2006-09-03 12:50:56 UTC (rev 891)
@@ -129,7 +129,7 @@
          // eagerly initialize
          wsMetaData.eagerInitialize();
 
-         log.debug("END buildMetaData: " + serviceMetaData);
+         log.debug("END buildMetaData: " + wsMetaData);
          return serviceMetaData;
       }
       catch (RuntimeException rte)

Modified: trunk/src/main/java/org/jboss/ws/handler/HandlerChainBaseImpl.java
===================================================================
--- trunk/src/main/java/org/jboss/ws/handler/HandlerChainBaseImpl.java	2006-09-02 01:51:03 UTC (rev 890)
+++ trunk/src/main/java/org/jboss/ws/handler/HandlerChainBaseImpl.java	2006-09-03 12:50:56 UTC (rev 891)
@@ -47,6 +47,8 @@
 import javax.xml.soap.SOAPPart;
 
 import org.jboss.logging.Logger;
+import org.jboss.util.xml.DOMUtils;
+import org.jboss.util.xml.DOMWriter;
 import org.jboss.ws.Constants;
 import org.jboss.ws.common.SOAPMessageContextBase;
 import org.jboss.ws.jaxrpc.handler.HandlerWrapper;
@@ -398,15 +400,15 @@
       try
       {
          SOAPEnvelopeImpl soapEnv = (SOAPEnvelopeImpl)soapPart.getEnvelope();
-         String envString = SOAPElementWriter.writeElement(soapEnv, true);
-         if (envString.equals(lastMessageTrace) == false)
+         String envStr = SOAPElementWriter.writeElement(soapEnv, true);
+         if (envStr.equals(lastMessageTrace) == false)
          {
-            log.debug(envString);
-            lastMessageTrace = envString;
+            log.debug(envStr);
+            lastMessageTrace = envStr;
          }
          return lastMessageTrace;
       }
-      catch (SOAPException ex)
+      catch (Exception ex)
       {
          log.error("Cannot trace SOAP message", ex);
          return null;

Modified: trunk/src/main/java/org/jboss/ws/jaxrpc/CallImpl.java
===================================================================
--- trunk/src/main/java/org/jboss/ws/jaxrpc/CallImpl.java	2006-09-02 01:51:03 UTC (rev 890)
+++ trunk/src/main/java/org/jboss/ws/jaxrpc/CallImpl.java	2006-09-03 12:50:56 UTC (rev 891)
@@ -561,6 +561,7 @@
       }
       finally
       {
+         // Reset the message context association
          MessageContextAssociation.popMessageContext();
       }
    }

Modified: trunk/src/main/java/org/jboss/ws/jaxrpc/encoding/NullValueSerializer.java
===================================================================
--- trunk/src/main/java/org/jboss/ws/jaxrpc/encoding/NullValueSerializer.java	2006-09-02 01:51:03 UTC (rev 890)
+++ trunk/src/main/java/org/jboss/ws/jaxrpc/encoding/NullValueSerializer.java	2006-09-03 12:50:56 UTC (rev 891)
@@ -61,6 +61,7 @@
       log.debug("serialize: [xmlName=" + xmlName + ",xmlType=" + xmlType + "]");
 
       NamespaceRegistry nsRegistry = serContext.getNamespaceRegistry();
+      nsRegistry.registerURI(Constants.NS_SCHEMA_XSI, Constants.PREFIX_XSI);
       String xmlFragment = wrapValueStr(xmlName, null, nsRegistry, attributes);
       return xmlFragment;
    }

Modified: trunk/src/main/java/org/jboss/ws/jaxrpc/encoding/SOAPArraySerializer.java
===================================================================
--- trunk/src/main/java/org/jboss/ws/jaxrpc/encoding/SOAPArraySerializer.java	2006-09-02 01:51:03 UTC (rev 890)
+++ trunk/src/main/java/org/jboss/ws/jaxrpc/encoding/SOAPArraySerializer.java	2006-09-03 12:50:56 UTC (rev 891)
@@ -122,7 +122,8 @@
 
             compXmlType = serContext.getNamespaceRegistry().registerQName(compXmlType);
             String arrayType = Constants.PREFIX_SOAP11_ENC + ":arrayType='" + compXmlType.getPrefix() + ":" + compXmlType.getLocalPart() + "[" + arrayDim + "]'";
-            xmlFragment.append(arrayType + ">");
+            String compns = " xmlns:" + compXmlType.getPrefix() + "='" + compXmlType.getNamespaceURI() + "'";
+            xmlFragment.append(arrayType + compns + ">");
 
             serializeArrayComponents(compXmlName, compXmlType, serContext, objArr);
          }

Modified: trunk/src/main/java/org/jboss/ws/jaxrpc/handler/HandlerChainBaseImpl.java
===================================================================
--- trunk/src/main/java/org/jboss/ws/jaxrpc/handler/HandlerChainBaseImpl.java	2006-09-02 01:51:03 UTC (rev 890)
+++ trunk/src/main/java/org/jboss/ws/jaxrpc/handler/HandlerChainBaseImpl.java	2006-09-03 12:50:56 UTC (rev 891)
@@ -47,6 +47,8 @@
 import javax.xml.soap.SOAPPart;
 
 import org.jboss.logging.Logger;
+import org.jboss.util.xml.DOMUtils;
+import org.jboss.util.xml.DOMWriter;
 import org.jboss.ws.Constants;
 import org.jboss.ws.metadata.EndpointMetaData;
 import org.jboss.ws.metadata.OperationMetaData;
@@ -399,15 +401,15 @@
       try
       {
          SOAPEnvelopeImpl soapEnv = (SOAPEnvelopeImpl)soapPart.getEnvelope();
-         String envString = SOAPElementWriter.writeElement((SOAPElementImpl)soapEnv, true);
-         if (envString.equals(lastMessageTrace) == false)
+         String envStr = SOAPElementWriter.writeElement((SOAPElementImpl)soapEnv, true);
+         if (envStr.equals(lastMessageTrace) == false)
          {
-            log.debug(envString);
-            lastMessageTrace = envString;
+            log.debug(envStr);
+            lastMessageTrace = envStr;
          }
          return lastMessageTrace;
       }
-      catch (SOAPException ex)
+      catch (Exception ex)
       {
          log.error("Cannot trace SOAP message", ex);
          return null;

Modified: trunk/src/main/java/org/jboss/ws/jaxws/client/ClientImpl.java
===================================================================
--- trunk/src/main/java/org/jboss/ws/jaxws/client/ClientImpl.java	2006-09-02 01:51:03 UTC (rev 890)
+++ trunk/src/main/java/org/jboss/ws/jaxws/client/ClientImpl.java	2006-09-03 12:50:56 UTC (rev 891)
@@ -121,6 +121,7 @@
       }
       finally
       {
+         // Reset the message context association
          MessageContextAssociation.popMessageContext();
       }
    }

Modified: trunk/src/main/java/org/jboss/ws/jaxws/core/SOAPBindingImpl.java
===================================================================
--- trunk/src/main/java/org/jboss/ws/jaxws/core/SOAPBindingImpl.java	2006-09-02 01:51:03 UTC (rev 890)
+++ trunk/src/main/java/org/jboss/ws/jaxws/core/SOAPBindingImpl.java	2006-09-03 12:50:56 UTC (rev 891)
@@ -79,14 +79,9 @@
 import org.jboss.ws.soap.attachment.CIDGenerator;
 import org.jboss.ws.utils.JavaUtils;
 import org.jboss.ws.utils.MimeUtils;
-import org.jboss.ws.utils.ThreadLocalAssociation;
 import org.jboss.xb.binding.NamespaceRegistry;
 import org.w3c.dom.Element;
 
-import javax.activation.DataHandler;
-import javax.xml.namespace.QName;
-import javax.xml.rpc.JAXRPCException;
-
 /**
  * The SOAPBinding interface is an abstraction for the SOAP binding. 
  * 
@@ -95,12 +90,12 @@
  */
 public abstract class SOAPBindingImpl extends BindingImpl implements SOAPBinding
 {
-	// provide logging
+   // provide logging
    private static Logger log = Logger.getLogger(SOAPBindingImpl.class);
-   
+
    private boolean mtomEnabled;
    private Set<URI> roles = new HashSet<URI>();
-   
+
    public MessageFactory getMessageFactory()
    {
       return new MessageFactoryImpl();
@@ -115,7 +110,7 @@
    {
       this.roles = roles;
    }
-   
+
    public SOAPFactory getSOAPFactory()
    {
       return new SOAPFactoryImpl();
@@ -133,7 +128,7 @@
 
    /** Create the SOAP-1.1 message */
    protected abstract SOAPMessage createMessage(OperationMetaData opMetaData) throws SOAPException;
-   
+
    /** On the client side, generate the payload from IN parameters. */
    public Object bindRequestMessage(OperationMetaData opMetaData, EndpointInvocation epInv, Map<QName, UnboundHeader> unboundHeaders) throws BindingException
    {
@@ -141,7 +136,6 @@
 
       try
       {
-         ThreadLocalAssociation.localDomExpansion().set(Boolean.FALSE);
          SOAPMessageContextBase msgContext = MessageContextAssociation.peekMessageContext();
          if (msgContext == null)
             throw new WSException("MessageContext not available");
@@ -244,9 +238,6 @@
          handleException(e);
          return null;
       }
-      finally{
-         ThreadLocalAssociation.localDomExpansion().set(Boolean.TRUE);
-      }
    }
 
    /** On the server side, extract the IN parameters from the payload and populate an Invocation object */
@@ -261,7 +252,7 @@
          SOAPEnvelope soapEnvelope = reqMessage.getSOAPPart().getEnvelope();
          SOAPHeader soapHeader = soapEnvelope.getHeader();
          SOAPBody soapBody = soapEnvelope.getBody();
-         
+
          // Verify the SOAP version
          verifySOAPVersion(opMetaData, soapEnvelope);
 
@@ -380,7 +371,6 @@
 
       try
       {
-         ThreadLocalAssociation.localDomExpansion().set(Boolean.FALSE);
          SOAPMessageContextBase msgContext = MessageContextAssociation.peekMessageContext();
          if (msgContext == null)
             throw new WSException("MessageContext not available");
@@ -504,9 +494,6 @@
          handleException(e);
          return null;
       }
-      finally {
-         ThreadLocalAssociation.localDomExpansion().set(Boolean.TRUE);
-      }
    }
 
    /** On the client side, extract the OUT parameters from the payload and return them to the client. */
@@ -517,7 +504,6 @@
 
       try
       {
-         ThreadLocalAssociation.localDomExpansion().set(Boolean.FALSE);
          // 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.
          if (opMetaData.isOneWayOperation() == true)
@@ -588,7 +574,7 @@
          {
             if (soapBodyElement == null)
                throw new WSException("Cannot unbind response message with empty soap body");
-            
+
             ParameterMetaData retMetaData = opMetaData.getReturnParameter();
             if (retMetaData != null)
             {
@@ -658,10 +644,6 @@
       {
          handleException(e);
       }
-      finally{
-         ThreadLocalAssociation.localDomExpansion().set(Boolean.TRUE);
-      }
-
    }
 
    private void verifySOAPVersion(OperationMetaData opMetaData, SOAPEnvelope soapEnvelope)
@@ -783,13 +765,17 @@
       contentElement.setParamMetaData(paramMetaData);
 
       if (paramMetaData.isSOAPArrayParam())
+      {
+         log.trace("Add parameter as SOAP encoded Array");
          contentElement.addNamespaceDeclaration(Constants.PREFIX_SOAP11_ENC, Constants.URI_SOAP11_ENC);
+      }
 
       // The object value needs to be set after xmime:contentType
-      if (paramMetaData.isXOP() )
+      if (paramMetaData.isXOP())
       {
-         SOAPMessageImpl soapMessage = (SOAPMessageImpl)
-             MessageContextAssociation.peekMessageContext().getMessage();
+         log.trace("Add parameter as XOP");
+         SOAPMessageContextBase msgContext = MessageContextAssociation.peekMessageContext();
+         SOAPMessageImpl soapMessage = (SOAPMessageImpl)msgContext.getMessage();
          soapMessage.setXOPMessage(true);
       }
 
@@ -827,10 +813,6 @@
 
          if (soapArrayName.equals(elName))
          {
-            Boolean domExpansion = ThreadLocalAssociation.localDomExpansion().get();
-            ThreadLocalAssociation.localDomExpansion().set(Boolean.TRUE);
-            try
-            {
             QName compXMLName = paramMetaData.getXmlName();
             Element compElement = DOMUtils.getFirstChildElement(aux);
             if (compElement.getNodeName().equals(compXMLName.getLocalPart()))
@@ -838,12 +820,7 @@
                soapContentElement = aux;
                soapContentElement.setParamMetaData(paramMetaData);
                break;
-               }
             }
-            finally
-            {
-               ThreadLocalAssociation.localDomExpansion().set(domExpansion);
-            }
          }
       }
 
@@ -881,10 +858,9 @@
       if (soapContentElement == null && optional == false)
          throw new JAXRPCException("Cannot find child element: " + xmlName);
 
-      if(paramMetaData.isXOP())
+      if (paramMetaData.isXOP())
       {
-         SOAPMessageImpl soapMessage = (SOAPMessageImpl)
-             MessageContextAssociation.peekMessageContext().getMessage();
+         SOAPMessageImpl soapMessage = (SOAPMessageImpl)MessageContextAssociation.peekMessageContext().getMessage();
          soapMessage.setXOPMessage(true);
       }
       return soapContentElement;

Modified: trunk/src/main/java/org/jboss/ws/metadata/ServiceMetaData.java
===================================================================
--- trunk/src/main/java/org/jboss/ws/metadata/ServiceMetaData.java	2006-09-02 01:51:03 UTC (rev 890)
+++ trunk/src/main/java/org/jboss/ws/metadata/ServiceMetaData.java	2006-09-03 12:50:56 UTC (rev 891)
@@ -385,9 +385,10 @@
       buffer.append("\n publishLocation=" + wsdlPublishLocation);
       buffer.append("\n properties=" + properties);
       buffer.append("\n" + types);
+      buffer.append("\n");
       for (EndpointMetaData epMetaData : endpoints.values())
       {
-         buffer.append("\n" + epMetaData);
+         buffer.append(epMetaData);
       }
       return buffer.toString();
    }

Modified: trunk/src/main/java/org/jboss/ws/metadata/UnifiedMetaData.java
===================================================================
--- trunk/src/main/java/org/jboss/ws/metadata/UnifiedMetaData.java	2006-09-02 01:51:03 UTC (rev 890)
+++ trunk/src/main/java/org/jboss/ws/metadata/UnifiedMetaData.java	2006-09-03 12:50:56 UTC (rev 891)
@@ -56,6 +56,10 @@
    private ClassLoader classLoader;
    // The optional security domain
    private String securityDomain;
+   // The implementation version
+   private static String implementationVersion;
+   // True if this is a final release
+   private static boolean isFinalRelease;
    // Map<String, WSDLDefinitions> the wsdl-file to the wsdl Document
    // Note the same wsdl can be used in multiple webservice descriptions
    Map<String, WSDLDefinitions> wsdlMap = new HashMap<String, WSDLDefinitions>();
@@ -154,28 +158,32 @@
 
    public static String getImplementationVersion()
    {
-      String implVersion = ServiceEndpointManager.class.getPackage().getImplementationVersion();
-      return implVersion;
+      if (implementationVersion == null)
+      {
+         implementationVersion = ServiceEndpointManager.class.getPackage().getImplementationVersion();
+         isFinalRelease = new StringTokenizer(implementationVersion).nextToken().endsWith("GA");
+      }
+      return implementationVersion;
    }
 
    public static boolean isFinalRelease()
    {
-      String implVersion = getImplementationVersion();
-      implVersion = new StringTokenizer(implVersion).nextToken();
-      return implVersion.endsWith("GA");
+      getImplementationVersion();
+      return isFinalRelease;
    }
 
    public String toString()
    {
       StringBuilder buffer = new StringBuilder("\nUnifiedMetaData: ");
-      buffer.append("\n securityDomain: " + securityDomain);
+      buffer.append("\n implementation: " + getImplementationVersion());
+      buffer.append("\n securityDomain: " + getSecurityDomain());
       //buffer.append("\n resourceLoader: " + resourceLoader);
       //buffer.append("\n classLoader: " + classLoader);
       buffer.append("\n");
       
       for (ServiceMetaData serviceMetaData : services)
       {
-         buffer.append("\n" + serviceMetaData);
+         buffer.append(serviceMetaData);
       }
       return buffer.toString();
    }

Modified: trunk/src/main/java/org/jboss/ws/server/ServiceEndpoint.java
===================================================================
--- trunk/src/main/java/org/jboss/ws/server/ServiceEndpoint.java	2006-09-02 01:51:03 UTC (rev 890)
+++ trunk/src/main/java/org/jboss/ws/server/ServiceEndpoint.java	2006-09-03 12:50:56 UTC (rev 891)
@@ -174,11 +174,11 @@
          msgContext.setMessage(reqMessage);
 
          // debug the incomming message
-         if (msgLog.isDebugEnabled())
+         if (msgLog.isTraceEnabled())
          {
             SOAPEnvelope soapEnv = reqMessage.getSOAPPart().getEnvelope();
             String envStr = SOAPElementWriter.writeElement((SOAPElementImpl)soapEnv, true);
-            msgLog.debug("Incomming SOAPMessage\n" + envStr);
+            msgLog.trace("Incomming SOAPMessage\n" + envStr);
          }
 
          // Set the thread context class loader
@@ -250,14 +250,14 @@
          }
 
          // debug the outgoing message
-         if (msgLog.isDebugEnabled())
+         if (msgLog.isTraceEnabled())
          {
             resMessage.saveChanges();
             SOAPEnvelope soapEnv = resMessage.getSOAPPart().getEnvelope();
             if (soapEnv != null)
             {
                String envStr = SOAPElementWriter.writeElement((SOAPElementImpl)soapEnv, true);
-               msgLog.debug("Outgoing SOAPMessage\n" + envStr);
+               msgLog.trace("Outgoing SOAPMessage\n" + envStr);
             }
          }
       }

Modified: trunk/src/main/java/org/jboss/ws/soap/MessageContextAssociation.java
===================================================================
--- trunk/src/main/java/org/jboss/ws/soap/MessageContextAssociation.java	2006-09-02 01:51:03 UTC (rev 890)
+++ trunk/src/main/java/org/jboss/ws/soap/MessageContextAssociation.java	2006-09-03 12:50:56 UTC (rev 891)
@@ -40,18 +40,19 @@
    // provide logging
    private static Logger log = Logger.getLogger(MessageContextAssociation.class);
   
-   public static SOAPMessageContextBase popMessageContext()
+
+   public static void pushMessageContext(SOAPMessageContextBase msgContext)
    {
-      SOAPMessageContextBase msgContext = null;
+      log.debug("pushMessageContext: " + msgContext);
       Stack<SOAPMessageContextBase> stack = ThreadLocalAssociation.localMsgContextAssoc().get();
-      if (stack != null && stack.isEmpty() == false)
+      if (stack == null)
       {
-         msgContext = stack.pop();
+         stack = new Stack<SOAPMessageContextBase>();
+         ThreadLocalAssociation.localMsgContextAssoc().set(stack);
       }
-      log.debug("popMessageContext: " + msgContext);
-      return msgContext;
+      stack.push(msgContext);
    }
-
+   
    public static SOAPMessageContextBase peekMessageContext()
    {
       SOAPMessageContextBase msgContext = null;
@@ -60,19 +61,18 @@
       {
          msgContext = stack.peek();
       }
-      log.trace("peekMessageContext: " + msgContext);
       return msgContext;
    }
-
-   public static void pushMessageContext(SOAPMessageContextBase msgContext)
+   
+   public static SOAPMessageContextBase popMessageContext()
    {
-      log.debug("pushMessageContext: " + msgContext);
+      SOAPMessageContextBase msgContext = null;
       Stack<SOAPMessageContextBase> stack = ThreadLocalAssociation.localMsgContextAssoc().get();
-      if (stack == null)
+      if (stack != null && stack.isEmpty() == false)
       {
-         stack = new Stack<SOAPMessageContextBase>();
-         ThreadLocalAssociation.localMsgContextAssoc().set(stack);
+         msgContext = stack.pop();
       }
-      stack.push(msgContext);
+      log.debug("popMessageContext: " + msgContext);
+      return msgContext;
    }
 }

Modified: trunk/src/main/java/org/jboss/ws/soap/MessageFactoryImpl.java
===================================================================
--- trunk/src/main/java/org/jboss/ws/soap/MessageFactoryImpl.java	2006-09-02 01:51:03 UTC (rev 890)
+++ trunk/src/main/java/org/jboss/ws/soap/MessageFactoryImpl.java	2006-09-03 12:50:56 UTC (rev 891)
@@ -47,7 +47,6 @@
 import org.jboss.ws.soap.attachment.MimeConstants;
 import org.jboss.ws.soap.attachment.MultipartRelatedDecoder;
 import org.jboss.ws.utils.IOUtils;
-import org.jboss.ws.utils.ThreadLocalAssociation;
 
 /**
  * MessageFactory implementation
@@ -156,14 +155,7 @@
     */
    public SOAPMessage createMessage(MimeHeaders mimeHeaders, InputStream ins) throws IOException, SOAPException
    {
-      try
-      {
-         ThreadLocalAssociation.localDomExpansion().set(Boolean.FALSE);
-         return createMessageInternal(mimeHeaders, ins, false);
-      }
-      finally{
-         ThreadLocalAssociation.localDomExpansion().set(Boolean.TRUE);
-      }
+      return createMessageInternal(mimeHeaders, ins, false);
    }
 
    public SOAPMessage createMessageInternal(MimeHeaders mimeHeaders, InputStream ins, boolean ignoreParseError) throws IOException, SOAPException
@@ -248,7 +240,7 @@
 
       // Build the payload
       payloadBuilder.build(soapMessage, ins, ignoreParseError);
-      
+
       return soapMessage;
    }
 

Modified: trunk/src/main/java/org/jboss/ws/soap/SOAPConnectionImpl.java
===================================================================
--- trunk/src/main/java/org/jboss/ws/soap/SOAPConnectionImpl.java	2006-09-02 01:51:03 UTC (rev 890)
+++ trunk/src/main/java/org/jboss/ws/soap/SOAPConnectionImpl.java	2006-09-03 12:50:56 UTC (rev 891)
@@ -43,6 +43,7 @@
 import org.jboss.remoting.Client;
 import org.jboss.remoting.InvokerLocator;
 import org.jboss.remoting.util.socket.RemotingSSLSocketFactory;
+import org.jboss.util.xml.DOMUtils;
 import org.jboss.util.xml.DOMWriter;
 import org.jboss.ws.binding.soap.SOAPMessageMarshaller;
 import org.jboss.ws.binding.soap.SOAPMessageUnMarshaller;
@@ -170,6 +171,10 @@
          remotingClient.setMarshaller(new SOAPMessageMarshaller());
          remotingClient.setUnMarshaller(oneway == false ? new SOAPMessageUnMarshaller() : null);
       }
+      catch (RuntimeException rte)
+      {
+         throw rte;
+      }
       catch (Exception e)
       {
          throw new SOAPException("Could not setup remoting client", e);
@@ -178,12 +183,12 @@
       try
       {
          // debug the outgoing message
-         if(msgLog.isDebugEnabled())
+         if(msgLog.isTraceEnabled())
          {
             SOAPEnvelope soapReqEnv = reqMessage.getSOAPPart().getEnvelope();
             String envStr = SOAPElementWriter.writeElement((SOAPElementImpl)soapReqEnv, true);
-            msgLog.debug("Remoting meta data: " + metadata);
-            msgLog.debug("Outgoing SOAPMessage\n" + envStr);
+            msgLog.trace("Remoting meta data: " + metadata);
+            msgLog.trace("Outgoing SOAPMessage\n" + envStr);
          }
 
          SOAPMessage resMessage = null;
@@ -197,15 +202,19 @@
          }
 
          // debug the incomming response message
-         if (resMessage != null && msgLog.isDebugEnabled())
+         if (resMessage != null && msgLog.isTraceEnabled())
          {
             SOAPEnvelope soapResEnv = resMessage.getSOAPPart().getEnvelope();
             String envStr = SOAPElementWriter.writeElement((SOAPElementImpl)soapResEnv, true);
-            msgLog.debug("Incomming Response SOAPMessage\n" + envStr);
+            msgLog.trace("Incoming Response SOAPMessage\n" + envStr);
          }
 
          return resMessage;
       }
+      catch (RuntimeException rte)
+      {
+         throw rte;
+      }
       catch (Throwable t)
       {
          throw new SOAPException("Could not transmit message", t);

Modified: trunk/src/main/java/org/jboss/ws/soap/SOAPContentElement.java
===================================================================
--- trunk/src/main/java/org/jboss/ws/soap/SOAPContentElement.java	2006-09-02 01:51:03 UTC (rev 890)
+++ trunk/src/main/java/org/jboss/ws/soap/SOAPContentElement.java	2006-09-03 12:50:56 UTC (rev 891)
@@ -49,7 +49,6 @@
 import org.jboss.ws.jaxrpc.encoding.SerializerFactoryBase;
 import org.jboss.ws.metadata.ParameterMetaData;
 import org.jboss.ws.utils.JavaUtils;
-import org.jboss.ws.utils.ThreadLocalAssociation;
 import org.jboss.ws.xop.XOPContext;
 import org.w3c.dom.Attr;
 import org.w3c.dom.DOMException;
@@ -111,6 +110,9 @@
 
    public ParameterMetaData getParamMetaData()
    {
+      if (paramMetaData == null)
+         throw new IllegalStateException("Parameter meta data not available");
+      
       return paramMetaData;
    }
 
@@ -121,12 +123,12 @@
 
    public QName getXmlType()
    {
-      return (paramMetaData != null ? paramMetaData.getXmlType() : null);
+      return getParamMetaData().getXmlType();
    }
 
    public Class getJavaType()
    {
-      return (paramMetaData != null ? paramMetaData.getJavaType() : null);
+      return getParamMetaData().getJavaType();
    }
 
    public String getXMLFragment() throws SOAPException
@@ -145,19 +147,16 @@
             throw new WSException("MessageContext not available");
 
          SerializationContext serContext = msgContext.getSerializationContext();
-         serContext.setProperty(ParameterMetaData.class.getName(), paramMetaData);
+         serContext.setProperty(ParameterMetaData.class.getName(), getParamMetaData());
 
          TypeMappingImpl typeMapping = serContext.getTypeMapping();
 
          QName xmlName = getQName();
-         Boolean domExpansionState = ThreadLocalAssociation.localDomExpansion().get();
          try
          {
-            ThreadLocalAssociation.localDomExpansion().set(Boolean.FALSE);
             SerializerSupport ser;
             if (objectValue != null)
             {
-               // [hb] let the SimpleSerialzer handle xop serialisation
                SerializerFactoryBase serializerFactory = getSerializerFactory(typeMapping, javaType, xmlType);
                ser = (SerializerSupport)serializerFactory.getSerializer();
             }
@@ -170,25 +169,12 @@
 
             xmlFragment = ser.serialize(xmlName, xmlType, getObjectValue(), serContext, null);
 
-            // Add the arrayType namespace declaration
-            QName compXmlType = paramMetaData.getSOAPArrayCompType();
-            if (compXmlType != null)
-            {
-               String nsURI = getNamespaceURI(compXmlType.getPrefix());
-               if (nsURI == null)
-                  addNamespaceDeclaration(compXmlType.getPrefix(), compXmlType.getNamespaceURI());
-            }
-
             log.debug("xmlFragment: " + xmlFragment);
          }
          catch (BindingException e)
          {
             throw new WSException(e);
          }
-         finally
-         {
-            ThreadLocalAssociation.localDomExpansion().set(domExpansionState);
-         }
       }
 
       // Generate the xmlFragment from the DOM tree
@@ -236,7 +222,7 @@
             throw new WSException("MessageContext not available");
 
          SerializationContext serContext = msgContext.getSerializationContext();
-         serContext.setProperty(ParameterMetaData.class.getName(), paramMetaData);
+         serContext.setProperty(ParameterMetaData.class.getName(), getParamMetaData());
 
          try
          {
@@ -816,13 +802,10 @@
     */
    private void expandToDOM()
    {
-      // If JBossWS itself uses the SAAJ API, we can safely disable
-      // DOM expansion, assuming it does everything right.
       // SOAPContentElements should only be expanded when handlers do require it.
-      boolean domExpansionEnabled = ThreadLocalAssociation.localDomExpansion().get().booleanValue();
-      if (isDOMValid == false && expandingToDOM == false && domExpansionEnabled)
+      if (isDOMValid == false && expandingToDOM == false)
       {
-         log.trace("BEGIN: expandToDOM");
+         log.trace("BEGIN: expandToDOM " + getElementName());
          expandingToDOM = true;
 
          // This should only happen when a handler accesses the DOM API. 
@@ -888,10 +871,6 @@
                }
             }
 
-            // Either the dom-valid state, or the xml-valid state can be true
-            // Therefore we invalidate the xml content.
-            invalidateXMLContent();
-            
             isDOMValid = true;
          }
          catch (RuntimeException e)
@@ -907,8 +886,12 @@
          finally
          {
             expandingToDOM = false;
-            log.trace("END: expandToDOM");
+            log.trace("END: expandToDOM " + getElementName());
          }
+         
+         // Either the dom-valid state, or the xml-valid state can be true
+         // Therefore we invalidate the xml content.
+         invalidateXMLContent();
       }
    }
 
@@ -989,15 +972,35 @@
    {
       try
       {
-         handleMTOMTransitions();
-
          if (isDOMValid)
          {
+            if (isXOPParameter() && XOPContext.isMTOMEnabled())
+            {
+               // When the DOM representation is valid (i.e. XOP is inlined),
+               // and MTOM is enabled we need to convert the inlined
+               // element back to an xop:Include element and create the attachment part
+               
+               log.debug("Transitioning to xml-valid state, MTOM enabled");
+               XOPContext.restoreXOPData(this);
+            }
             new DOMWriter(writer).print(this);
          }
          else
          {
-            writer.write(getXMLFragment());
+            if (isXOPParameter() && XOPContext.isMTOMEnabled() == false)
+            {
+               // When the DOM representation is not valid (i.e. XOP is not inlined),
+               // and MTOM is not enabled we need to inlined the xop:Include element. 
+               // This happens when we expand to DOM
+               
+               log.debug("Expand to DOM, MTOM not enabled");
+               expandToDOM();
+               new DOMWriter(writer).print(this);
+            }
+            else
+            {
+               writer.write(getXMLFragment());
+            }
          }
       }
       catch (RuntimeException rte)
@@ -1010,46 +1013,8 @@
       }
    }
 
-   /**
-    * When a SOAPContentElement transitions between dom-valid and xml-valid
-    * the XOP elements need to transition from XOP optimized to base64 and reverse.<p>
-    *
-    * If MTOM is disabled through a message context property we always enforce the
-    * base64 representation by expanding to DOM, the same happens when a JAXRPC handler
-    * accesses the SOAPContentElement.<p>
-    *
-    * If the element is in dom-valid state (because a handlers accessed it), upon marshalling
-    * it's needs to be decided wether or not the <code>xop:Include</code> should be restored.
-    * This as well depends upon the message context property.
-    */
-   private void handleMTOMTransitions()
-   {
-
-      boolean mtomEnabled = isXOPParameter() && XOPContext.isMTOMEnabled();
-
-      if (paramMetaData != null && mtomEnabled == false)
-      {
-         // If MTOM is disabled, we force dom expansion.
-         // This will inline any XOP include element
-         // and remove the attachment part when transitioning.
-         // See SOAPFactoryImpl for details.
-
-         log.debug("Transitioning to dom-valid state, MTOM disabled");
-         expandToDOM();
-      }
-      else if (isDOMValid && mtomEnabled)
-      {
-         // When the DOM representation is valid,
-         // but MTOM is enabled we need to convert the inlined
-         // element back to an xop:Include element and create the attachment part
-
-         log.debug("Transitioning to xml-valid state, MTOM enabled");
-         XOPContext.restoreXOPData(this);
-      }
-   }
-
    private boolean isXOPParameter()
    {
-      return (paramMetaData != null && paramMetaData.isXOP());
+      return paramMetaData != null && paramMetaData.isXOP();
    }
 }

Modified: trunk/src/main/java/org/jboss/ws/soap/SOAPElementImpl.java
===================================================================
--- trunk/src/main/java/org/jboss/ws/soap/SOAPElementImpl.java	2006-09-02 01:51:03 UTC (rev 890)
+++ trunk/src/main/java/org/jboss/ws/soap/SOAPElementImpl.java	2006-09-03 12:50:56 UTC (rev 891)
@@ -66,6 +66,8 @@
 
    // The org.w3c.dom.Element
    private Element element;
+   // The element name
+   private Name elementName;
    // The element's encoding style
    private String encodingStyle = Constants.URI_LITERAL_ENC;
 
@@ -398,19 +400,22 @@
     */
    public Name getElementName()
    {
-
-      String nsURI = element.getNamespaceURI();
-      if (nsURI != null && nsURI.length() > 0)
+      if (elementName == null)
       {
-         String prefix = element.getPrefix();
-         String localName = element.getLocalName();
-         return new NameImpl(localName, prefix, nsURI);
+         String nsURI = element.getNamespaceURI();
+         if (nsURI != null && nsURI.length() > 0)
+         {
+            String prefix = element.getPrefix();
+            String localName = element.getLocalName();
+            elementName = new NameImpl(localName, prefix, nsURI);
+         }
+         else
+         {
+            String nodeName = element.getNodeName();
+            elementName = new NameImpl(nodeName);
+         }
       }
-      else
-      {
-         String nodeName = element.getNodeName();
-         return new NameImpl(nodeName);
-      }
+      return elementName;
    }
 
    /**

Modified: trunk/src/main/java/org/jboss/ws/soap/SOAPElementWriter.java
===================================================================
--- trunk/src/main/java/org/jboss/ws/soap/SOAPElementWriter.java	2006-09-02 01:51:03 UTC (rev 890)
+++ trunk/src/main/java/org/jboss/ws/soap/SOAPElementWriter.java	2006-09-03 12:50:56 UTC (rev 891)
@@ -100,22 +100,26 @@
     */
    public static String writeElement(SOAPElementImpl element, boolean pretty)
    {
+      if (element == null)
+         return null;
+      
       StringWriter strw = new StringWriter();
       new SOAPElementWriter(strw).writeElement(element);
       String xmlStr = strw.toString();
-
-      if (pretty && element != null)
+      
+      if (pretty)
       {
+         // This is expensive. Make sure it only happens for debugging
          try
          {
             xmlStr = DOMWriter.printNode(DOMUtils.parse(xmlStr), true);
          }
-         catch (IOException e)
+         catch (IOException ex)
          {
-            // ignore
+            throw new WSException ("Cannot parse xml: " + xmlStr, ex);
          }
       }
-
+      
       return xmlStr;
    }
 

Modified: trunk/src/main/java/org/jboss/ws/soap/SOAPMessageImpl.java
===================================================================
--- trunk/src/main/java/org/jboss/ws/soap/SOAPMessageImpl.java	2006-09-02 01:51:03 UTC (rev 890)
+++ trunk/src/main/java/org/jboss/ws/soap/SOAPMessageImpl.java	2006-09-03 12:50:56 UTC (rev 891)
@@ -40,9 +40,7 @@
 import javax.xml.soap.SOAPMessage;
 import javax.xml.soap.SOAPPart;
 
-import org.jboss.util.xml.DOMWriter;
 import org.jboss.ws.WSException;
-import org.jboss.ws.xop.XOPContext;
 import org.jboss.ws.metadata.EndpointMetaData;
 import org.jboss.ws.metadata.OperationMetaData;
 import org.jboss.ws.soap.attachment.AttachmentPartImpl;
@@ -51,6 +49,7 @@
 import org.jboss.ws.soap.attachment.MultipartRelatedEncoder;
 import org.jboss.ws.soap.attachment.MultipartRelatedSwAEncoder;
 import org.jboss.ws.soap.attachment.MultipartRelatedXOPEncoder;
+import org.jboss.ws.xop.XOPContext;
 
 /**
  * The root class for all SOAP messages. As transmitted on the "wire", a SOAP message is an XML document or a
@@ -214,6 +213,9 @@
       {
          try
          {
+            if (isXOPMessage() && !XOPContext.isMTOMEnabled() && attachments.size() > 0)
+               throw new IllegalStateException("XOP parameter not properly inlined");
+            
             String contentType;
             if (isXOPMessage() && XOPContext.isMTOMEnabled())
             {
@@ -263,7 +265,7 @@
       // Save all changes
       saveChanges();
 
-      // If there are attahcments then we delegate encoding to MultipartRelatedEncoder
+      // If there are attachments then we delegate encoding to MultipartRelatedEncoder
       if (attachments.size() > 0)
       {
          multipartRelatedEncoder.writeTo(outs);

Modified: trunk/src/main/java/org/jboss/ws/soap/attachment/MultipartRelatedSwAEncoder.java
===================================================================
--- trunk/src/main/java/org/jboss/ws/soap/attachment/MultipartRelatedSwAEncoder.java	2006-09-02 01:51:03 UTC (rev 890)
+++ trunk/src/main/java/org/jboss/ws/soap/attachment/MultipartRelatedSwAEncoder.java	2006-09-03 12:50:56 UTC (rev 891)
@@ -21,9 +21,7 @@
  */
 package org.jboss.ws.soap.attachment;
 
-import org.jboss.ws.soap.SOAPElementWriter;
-import org.jboss.ws.soap.SOAPElementImpl;
-import org.jboss.ws.soap.SOAPMessageImpl;
+import java.io.OutputStream;
 
 import javax.mail.MessagingException;
 import javax.mail.internet.MimeBodyPart;
@@ -32,7 +30,8 @@
 import javax.xml.soap.SOAPEnvelope;
 import javax.xml.soap.SOAPException;
 
-import java.io.OutputStream;
+import org.jboss.ws.soap.SOAPElementImpl;
+import org.jboss.ws.soap.SOAPElementWriter;
 import org.jboss.ws.soap.SOAPMessageImpl;
 
 /**

Modified: trunk/src/main/java/org/jboss/ws/soap/attachment/MultipartRelatedXOPEncoder.java
===================================================================
--- trunk/src/main/java/org/jboss/ws/soap/attachment/MultipartRelatedXOPEncoder.java	2006-09-02 01:51:03 UTC (rev 890)
+++ trunk/src/main/java/org/jboss/ws/soap/attachment/MultipartRelatedXOPEncoder.java	2006-09-03 12:50:56 UTC (rev 891)
@@ -21,9 +21,7 @@
  */
 package org.jboss.ws.soap.attachment;
 
-import org.jboss.ws.soap.SOAPElementWriter;
-import org.jboss.ws.soap.SOAPElementImpl;
-import org.jboss.ws.soap.SOAPMessageImpl;
+import java.io.OutputStream;
 
 import javax.mail.MessagingException;
 import javax.mail.internet.MimeBodyPart;
@@ -32,7 +30,8 @@
 import javax.xml.soap.SOAPEnvelope;
 import javax.xml.soap.SOAPException;
 
-import java.io.OutputStream;
+import org.jboss.ws.soap.SOAPElementImpl;
+import org.jboss.ws.soap.SOAPElementWriter;
 import org.jboss.ws.soap.SOAPMessageImpl;
 
 /**

Modified: trunk/src/main/java/org/jboss/ws/utils/ThreadLocalAssociation.java
===================================================================
--- trunk/src/main/java/org/jboss/ws/utils/ThreadLocalAssociation.java	2006-09-02 01:51:03 UTC (rev 890)
+++ trunk/src/main/java/org/jboss/ws/utils/ThreadLocalAssociation.java	2006-09-03 12:50:56 UTC (rev 891)
@@ -53,17 +53,6 @@
     */
    private static InheritableThreadLocal<SecurityStore> strTransformAssoc = new InheritableThreadLocal<SecurityStore>();
 
-   /**
-    * Stores XOP callee information
-    * @see org.jboss.ws.xop.XOPContext#doInlineBase64
-    */
-   private static ThreadLocal<Boolean> DOMExpansionAssoc = new ThreadLocal<Boolean>()
-   {
-      protected Boolean initialValue() {
-         return Boolean.TRUE;
-      }
-   };
-   
    public static ThreadLocal localInvokerMDBAssoc() {
       return invokerMDBAssoc;
    }
@@ -76,15 +65,9 @@
       return strTransformAssoc;
    }
 
-   public static ThreadLocal<Boolean> localDomExpansion()
-   {
-      return DOMExpansionAssoc;
-   }
-
    public static void clear() {
       invokerMDBAssoc.set(null);
       msgContextAssoc.set(null);
       strTransformAssoc.set(null);
-      DOMExpansionAssoc.set(Boolean.FALSE);
    }
 }

Modified: trunk/src/main/java/org/jboss/ws/wsse/WSSecurityDispatcher.java
===================================================================
--- trunk/src/main/java/org/jboss/ws/wsse/WSSecurityDispatcher.java	2006-09-02 01:51:03 UTC (rev 890)
+++ trunk/src/main/java/org/jboss/ws/wsse/WSSecurityDispatcher.java	2006-09-03 12:50:56 UTC (rev 891)
@@ -143,7 +143,7 @@
          SecurityDecoder decoder = new SecurityDecoder(securityStore);
 
          decoder.decode(soapMessage.getSOAPPart(), secHeaderElement);
-         log.debug("Decoded WS-Security Encoded Message:\n" + DOMWriter.printNode(soapMessage.getSOAPPart(), true));
+         log.debug("Decoded Message:\n" + DOMWriter.printNode(soapMessage.getSOAPPart(), true));
 
          OperationMetaData opMetaData = ctx.getOperationMetaData();
          if (opMetaData == null)

Modified: trunk/src/main/java/org/jboss/ws/xop/XOPContext.java
===================================================================
--- trunk/src/main/java/org/jboss/ws/xop/XOPContext.java	2006-09-02 01:51:03 UTC (rev 890)
+++ trunk/src/main/java/org/jboss/ws/xop/XOPContext.java	2006-09-03 12:50:56 UTC (rev 891)
@@ -92,7 +92,7 @@
    {
       SOAPMessageContextBase msgContext = MessageContextAssociation.peekMessageContext();
       Boolean mtomEnabled = (Boolean)msgContext.getProperty(StubExt.PROPERTY_MTOM_ENABLED);
-      return Boolean.TRUE.equals(mtomEnabled);
+      return Boolean.TRUE.equals(mtomEnabled) || mtomEnabled == null;
    }
 
    /**

Modified: trunk/src/test/build.xml
===================================================================
--- trunk/src/test/build.xml	2006-09-02 01:51:03 UTC (rev 890)
+++ trunk/src/test/build.xml	2006-09-03 12:50:56 UTC (rev 891)
@@ -320,7 +320,7 @@
   </target>
   
   <!-- Run samples test cases -->
-  <target name="tests-samples" depends="main" description="Run samples unit tests">
+  <target name="tests-samples" depends="init" description="Run samples unit tests">
     <antcall target="tests-main">
       <param name="include.wildcard" value="org/jboss/test/ws/samples/**/*TestCase.class"/>
       <param name="excludesfile" value="${tests.excludesfile}"/>
@@ -329,7 +329,7 @@
   </target>
   
   <!-- Run tools test cases -->
-  <target name="tests-tools" depends="main" description="Run tools unit tests">
+  <target name="tests-tools" depends="init" description="Run tools unit tests">
     <antcall target="tests-main">
       <param name="include.wildcard" value="org/jboss/test/ws/tools/**/*TestCase.class"/>
       <param name="excludesfile" value="${tests.noexcludes.file}"/>

Modified: trunk/src/test/etc/log4j.xml
===================================================================
--- trunk/src/test/etc/log4j.xml	2006-09-02 01:51:03 UTC (rev 890)
+++ trunk/src/test/etc/log4j.xml	2006-09-03 12:50:56 UTC (rev 891)
@@ -61,7 +61,7 @@
   </category>
 
    <category name="jbossws.SOAPMessage">
-      <priority value="DEBUG"/>            
+    <priority value="TRACE" class="org.jboss.logging.XLevel"/>
    </category>
 
   <!--

Modified: trunk/src/test/java/org/jboss/test/ws/jaxws/logicalhandler/LogicalHandlerTestCase.java
===================================================================
--- trunk/src/test/java/org/jboss/test/ws/jaxws/logicalhandler/LogicalHandlerTestCase.java	2006-09-02 01:51:03 UTC (rev 890)
+++ trunk/src/test/java/org/jboss/test/ws/jaxws/logicalhandler/LogicalHandlerTestCase.java	2006-09-03 12:50:56 UTC (rev 891)
@@ -21,7 +21,7 @@
  */
 package org.jboss.test.ws.jaxws.logicalhandler;
 
-// $Id$
+// $Id:LogicalHandlerTestCase.java 888 2006-09-02 00:37:13Z thomas.diesler at jboss.com $
 
 import java.net.URL;
 

Modified: trunk/src/test/java/org/jboss/test/ws/jbws1125/JBWS1125TestCase.java
===================================================================
--- trunk/src/test/java/org/jboss/test/ws/jbws1125/JBWS1125TestCase.java	2006-09-02 01:51:03 UTC (rev 890)
+++ trunk/src/test/java/org/jboss/test/ws/jbws1125/JBWS1125TestCase.java	2006-09-03 12:50:56 UTC (rev 891)
@@ -21,7 +21,7 @@
  */
 package org.jboss.test.ws.jbws1125;
 
-// $Id: $
+// $Id$
 
 import java.io.ByteArrayInputStream;
 
@@ -74,7 +74,7 @@
       port.noReturnPart("hello");
    }
    
-   public void _testMessageAccess() throws Exception
+   public void testMessageAccess() throws Exception
    {
       String reqEnv =
          "<env:Envelope xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'>" +

Modified: trunk/src/test/java/org/jboss/test/ws/samples/mtom/XOPRpcTestCase.java
===================================================================
--- trunk/src/test/java/org/jboss/test/ws/samples/mtom/XOPRpcTestCase.java	2006-09-02 01:51:03 UTC (rev 890)
+++ trunk/src/test/java/org/jboss/test/ws/samples/mtom/XOPRpcTestCase.java	2006-09-03 12:50:56 UTC (rev 891)
@@ -1,30 +1,29 @@
 /*
-  * 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.
-  */
+ * 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.samples.mtom;
 
-import junit.framework.Test;
-import org.jboss.test.ws.JBossWSTest;
-import org.jboss.test.ws.JBossWSTestSetup;
-import org.jboss.ws.jaxrpc.ServiceFactoryImpl;
+import java.io.File;
+import java.io.FileInputStream;
+import java.net.URL;
 
 import javax.activation.DataHandler;
 import javax.activation.FileDataSource;
@@ -33,11 +32,20 @@
 import javax.xml.rpc.Service;
 import javax.xml.rpc.Stub;
 import javax.xml.transform.Source;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMResult;
 import javax.xml.transform.stream.StreamSource;
-import java.io.File;
-import java.io.FileInputStream;
-import java.net.URL;
 
+import junit.framework.Test;
+
+import org.jboss.test.ws.JBossWSTest;
+import org.jboss.test.ws.JBossWSTestSetup;
+import org.jboss.util.xml.DOMUtils;
+import org.jboss.ws.jaxrpc.ServiceFactoryImpl;
+import org.jboss.ws.jaxrpc.StubExt;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
 /**
  * Test SOAP with XOP through the JAXRPC dynamic proxy layer.
  *
@@ -79,8 +87,6 @@
          }
 
       }
-
-      //((Stub)port)._setProperty(Stub.ENDPOINT_ADDRESS_PROPERTY, "http://" + getServerHost() + ":8081/jbossws-samples-mtom");
    }
 
    /**
@@ -89,11 +95,9 @@
     */
    public void testSimpleBinary() throws Exception
    {
-      DataHandler value = port.sendOctets("Some text message", new DataHandler(
-          new FileDataSource("resources/samples/mtom/disguised_jpeg.xcf")
-      ));
+      DataHandler value = port.sendOctets("Some text message", new DataHandler(new FileDataSource("resources/samples/mtom/disguised_jpeg.xcf")));
       assertNotNull(value);
-      assertTrue("Wrong content type", value.getContentType().equals("application/octet-stream"));
+      assertEquals("application/octet-stream", value.getContentType());
    }
 
    /**
@@ -105,7 +109,7 @@
       URL url = new File("resources/samples/mtom/attach.jpeg").toURL();
       DataHandler value = port.sendMimeImageJPEG("Some text message", new DataHandler(url));
       assertNotNull(value);
-      assertTrue("Wrong return content-type returned", value.getContentType().equals("image/jpeg"));
+      assertEquals("image/jpeg", value.getContentType());
    }
 
    /**
@@ -117,7 +121,7 @@
       String xoppart = "This is a plain text attachment.";
       String value = port.sendMimeTextPlain("Some text message", xoppart);
       assertNotNull(value);
-      assertEquals("Value mismatch", value, xoppart);
+      assertEquals(xoppart, value);
    }
 
    /**
@@ -129,9 +133,12 @@
       FileInputStream stream = new FileInputStream("resources/samples/mtom/attach.xml");
       StreamSource source = new StreamSource(stream);
 
-      Source value = port.sendMimeTextXML("Some text message", new DataHandler(source, "text/xml"));
-      assertNotNull(value);
-      assertTrue("Wrong return value type", value instanceof Source);
+      Source retObj = port.sendMimeTextXML("Some text message", new DataHandler(source, "text/xml"));
+      Element exp = DOMUtils.parse("<mime-message>This is an xml attachment.</mime-message>");
+      DOMResult domResult = new DOMResult();
+      TransformerFactory.newInstance().newTransformer().transform(retObj, domResult);
+      Element was = ((Document)domResult.getNode()).getDocumentElement();
+      assertEquals(exp, was);
    }
 
    /**
@@ -145,7 +152,7 @@
 
       DataHandler value = port.sendMimeApplicationXML("Some text message", source);
       assertNotNull(value);
-      assertTrue("Wrong return value content-type", value.getContentType().equals("application/xml"));
+      assertEquals("application/xml", value.getContentType());
    }
 
    /**
@@ -153,16 +160,18 @@
     */
    public void testMTOMDisabledClientSide() throws Exception
    {
-      /*URL url = new File("resources/samples/mtom/attach.jpeg").toURL();
-
       // disable MTOM
-      ((Stub)port)._setProperty("org.jboss.ws.mtom.enabled", "false");
+      ((Stub)port)._setProperty(StubExt.PROPERTY_MTOM_ENABLED, Boolean.FALSE);
 
-      DataHandler value = port.sendMimeImageJPEG("MTOM disabled request", new DataHandler(url));
-      assertNotNull(value);
-      assertTrue("Wrong return content-type returned", value.getContentType().equals("image/jpeg"));
-      */
+      FileInputStream stream = new FileInputStream("resources/samples/mtom/attach.xml");
+      StreamSource source = new StreamSource(stream);
 
-      System.out.println("FIXME: testMTOMDisabledClientSide");
+      System.out.println("FIXME: JBWS-1143");
+//      Source retObj = port.sendMimeTextXML("Some text message", new DataHandler(source, "text/xml"));
+//      Element exp = DOMUtils.parse("<mime-message>This is an xml attachment.</mime-message>");
+//      DOMResult domResult = new DOMResult();
+//      TransformerFactory.newInstance().newTransformer().transform(retObj, domResult);
+//      Element was = (Element)domResult.getNode();
+//      assertEquals(exp, was);
    }
 }

Modified: trunk/src/test/java/org/jboss/test/ws/util/DOMWriterTestCase.java
===================================================================
--- trunk/src/test/java/org/jboss/test/ws/util/DOMWriterTestCase.java	2006-09-02 01:51:03 UTC (rev 890)
+++ trunk/src/test/java/org/jboss/test/ws/util/DOMWriterTestCase.java	2006-09-03 12:50:56 UTC (rev 891)
@@ -40,7 +40,9 @@
  */
 public class DOMWriterTestCase extends JBossWSTest
 {
-   public void _testNamespaceCompletionOne() throws Exception
+   /** The element does not contain the required ns declaration.
+    */
+   public void testNamespaceCompletionOne() throws Exception
    {
       String inStr = 
          "<env:Envelope xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'>" +
@@ -66,7 +68,9 @@
       assertEquals(expStr, wasStr);
    }
    
-   public void _testNamespaceCompletionTwo() throws Exception
+   /** The element already contains the required ns declaration.
+    */
+   public void testNamespaceCompletionTwo() throws Exception
    {
       String inStr = 
          "<env:Envelope xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'>" +
@@ -92,7 +96,9 @@
       assertEquals(expStr, wasStr);
    }
    
-   public void _testNamespaceCompletionThree() throws Exception
+   /** The element does not contain the required ns declaration, the child does.
+    */
+   public void testNamespaceCompletionThree() throws Exception
    {
       String inStr = 
          "<env:Envelope xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'>" +
@@ -119,6 +125,30 @@
       assertEquals(expStr, wasStr);
    }
    
+   /** The element does not contain the required attribute ns declaration.
+    */
+   public void testNamespaceCompletionAttribute() throws Exception
+   {
+      String inStr = 
+         "<env:Envelope xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'>" +
+          "<env:Header>" +
+           "<someHeader env:mustUnderstand='1'/>" +
+          "</env:Header>" +
+          "<env:Body/>" +
+         "</env:Envelope>";
+      
+      Element env = DOMUtils.parse(inStr);
+      Element header = DOMUtils.getFirstChildElement(env);
+      Element headerElement = DOMUtils.getFirstChildElement(header);
+      
+      String expStr = 
+         "<someHeader env:mustUnderstand='1' xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'/>";
+      
+      System.out.println("FIXME: JBWS-1130");
+      //String wasStr = DOMWriter.printNode(headerElement, false);
+      //assertEquals(expStr, wasStr);
+   }
+   
    public void testEnvelopeWriter() throws Exception
    {
       String xmlEnv = "<env:Envelope xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'>"




More information about the jboss-svn-commits mailing list