[jboss-svn-commits] JBossWS SVN: r752 - in branches/jbossws-1.0_Heiko/src: main/java/org/jboss/ws/jaxb main/java/org/jboss/ws/soap main/java/org/jboss/ws/soap/attachment main/java/org/jboss/ws/utils main/java/org/jboss/ws/xop test test/java/org/jboss/test/ws/samples/mtom test/java/org/jboss/test/ws/xop/doclit test/resources/samples-override/mtom/WEB-INF test/resources/samples-override/mtom/WEB-INF/wsdl test/resources/xop/doclit/WEB-INF test/resources/xop/doclit/WEB-INF/wsdl

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Aug 16 04:50:16 EDT 2006


Author: heiko.braun at jboss.com
Date: 2006-08-16 04:49:47 -0400 (Wed, 16 Aug 2006)
New Revision: 752

Added:
   branches/jbossws-1.0_Heiko/src/main/java/org/jboss/ws/xop/XOPValueAdapter.java
Modified:
   branches/jbossws-1.0_Heiko/src/main/java/org/jboss/ws/jaxb/SchemaBindingBuilder.java
   branches/jbossws-1.0_Heiko/src/main/java/org/jboss/ws/soap/SOAPContentElement.java
   branches/jbossws-1.0_Heiko/src/main/java/org/jboss/ws/soap/SOAPFactoryImpl.java
   branches/jbossws-1.0_Heiko/src/main/java/org/jboss/ws/soap/attachment/ByteArrayContentHandler.java
   branches/jbossws-1.0_Heiko/src/main/java/org/jboss/ws/utils/MimeUtils.java
   branches/jbossws-1.0_Heiko/src/main/java/org/jboss/ws/xop/XOPContext.java
   branches/jbossws-1.0_Heiko/src/main/java/org/jboss/ws/xop/XOPMarshallerImpl.java
   branches/jbossws-1.0_Heiko/src/main/java/org/jboss/ws/xop/XOPUnmarshallerImpl.java
   branches/jbossws-1.0_Heiko/src/test/build.xml
   branches/jbossws-1.0_Heiko/src/test/java/org/jboss/test/ws/samples/mtom/XOPRpcTestCase.java
   branches/jbossws-1.0_Heiko/src/test/java/org/jboss/test/ws/samples/mtom/XOPTest.java
   branches/jbossws-1.0_Heiko/src/test/java/org/jboss/test/ws/samples/mtom/XOPTestImpl.java
   branches/jbossws-1.0_Heiko/src/test/java/org/jboss/test/ws/xop/doclit/InlineHandler.java
   branches/jbossws-1.0_Heiko/src/test/java/org/jboss/test/ws/xop/doclit/PingMsg.java
   branches/jbossws-1.0_Heiko/src/test/java/org/jboss/test/ws/xop/doclit/PingMsgResponse.java
   branches/jbossws-1.0_Heiko/src/test/java/org/jboss/test/ws/xop/doclit/TestServiceImpl.java
   branches/jbossws-1.0_Heiko/src/test/java/org/jboss/test/ws/xop/doclit/XOPElementDoclitTestCase.java
   branches/jbossws-1.0_Heiko/src/test/resources/samples-override/mtom/WEB-INF/jaxrpc-mapping.xml
   branches/jbossws-1.0_Heiko/src/test/resources/samples-override/mtom/WEB-INF/wsdl/TestService.wsdl
   branches/jbossws-1.0_Heiko/src/test/resources/xop/doclit/WEB-INF/jaxrpc-mapping.xml
   branches/jbossws-1.0_Heiko/src/test/resources/xop/doclit/WEB-INF/wsdl/TestService.wsdl
Log:
extended XOP tests for RPC/LIT

Modified: branches/jbossws-1.0_Heiko/src/main/java/org/jboss/ws/jaxb/SchemaBindingBuilder.java
===================================================================
--- branches/jbossws-1.0_Heiko/src/main/java/org/jboss/ws/jaxb/SchemaBindingBuilder.java	2006-08-14 22:09:38 UTC (rev 751)
+++ branches/jbossws-1.0_Heiko/src/main/java/org/jboss/ws/jaxb/SchemaBindingBuilder.java	2006-08-16 08:49:47 UTC (rev 752)
@@ -41,6 +41,7 @@
 import org.jboss.ws.metadata.jaxrpcmapping.VariableMapping;
 import org.jboss.ws.Constants;
 import org.jboss.ws.WSException;
+import org.jboss.ws.xop.XOPValueAdapter;
 import org.jboss.xb.binding.metadata.ClassMetaData;
 import org.jboss.xb.binding.metadata.PackageMetaData;
 import org.jboss.xb.binding.metadata.PropertyMetaData;
@@ -310,6 +311,7 @@
          if(elementTypeNS.equals(Constants.NS_XML_MIME) && elementTypeName.equals("base64Binary"))
          {
             element.getType().setSimple(true);
+            element.getType().setValueAdapter(new XOPValueAdapter());
          }
       }
    }

Modified: branches/jbossws-1.0_Heiko/src/main/java/org/jboss/ws/soap/SOAPContentElement.java
===================================================================
--- branches/jbossws-1.0_Heiko/src/main/java/org/jboss/ws/soap/SOAPContentElement.java	2006-08-14 22:09:38 UTC (rev 751)
+++ branches/jbossws-1.0_Heiko/src/main/java/org/jboss/ws/soap/SOAPContentElement.java	2006-08-16 08:49:47 UTC (rev 752)
@@ -26,27 +26,26 @@
 import org.jboss.util.xml.DOMWriter;
 import org.jboss.ws.Constants;
 import org.jboss.ws.WSException;
-import org.jboss.ws.xop.XOPContext;
 import org.jboss.ws.binding.BindingException;
 import org.jboss.ws.jaxrpc.TypeMappingImpl;
 import org.jboss.ws.jaxrpc.encoding.*;
 import org.jboss.ws.metadata.ParameterMetaData;
 import org.jboss.ws.utils.JavaUtils;
-import org.jboss.ws.utils.MimeUtils;
 import org.jboss.ws.utils.ThreadLocalAssociation;
+import org.jboss.ws.xop.XOPContext;
 import org.w3c.dom.*;
 
+import javax.activation.DataHandler;
 import javax.xml.namespace.QName;
 import javax.xml.rpc.JAXRPCException;
 import javax.xml.soap.Name;
 import javax.xml.soap.SOAPElement;
 import javax.xml.soap.SOAPException;
-import javax.activation.DataHandler;
+import java.io.IOException;
+import java.io.Writer;
 import java.lang.reflect.Array;
 import java.lang.reflect.Method;
 import java.util.Iterator;
-import java.io.IOException;
-import java.io.Writer;
 
 /**
  * A SOAPElement that gives access to its content as XML fragment or Java object.
@@ -275,19 +274,17 @@
 
                if (isAssignable == false)
                {
-                  // MSFT hack: Force conversion according to the target java parameter
                   Object convertedObj = null;
+
                   if(obj instanceof DataHandler)
                   {
-                    // converter for the expected target java type
-                    MimeUtils.ByteArrayConverter converter = MimeUtils.getConverterFor(javaType);
                      try
                      {
-                        convertedObj = converter.readFrom( ((DataHandler)obj).getInputStream() );
+                        convertedObj = ((DataHandler)obj).getContent();
                      }
                      catch (IOException e)
                      {
-                        log.warn("Failed to convert from DataHandler", e);
+                        throw new WSException("Failed to convert unassignable endpoint parameter", e);
                      }
                   }
 
@@ -854,6 +851,9 @@
                   {
                      SOAPElementImpl soapElement = soapFactory.createElement((Element)child, true);
                      super.addChildElement(soapElement);
+
+                     if(isXOPParameter())                     
+                        XOPContext.inlineXOPData(soapElement);
                   }
                   else if (childType == Node.TEXT_NODE)
                   {
@@ -1010,15 +1010,16 @@
     */
    private void handleMTOMTransitions() {
 
-      boolean isXOPParameter = paramMetaData != null && paramMetaData.isXOP();
-      boolean mtomEnabled = isXOPParameter && XOPContext.isMTOMEnabled();
+      boolean mtomEnabled = isXOPParameter() && XOPContext.isMTOMEnabled();
 
-      if( mtomEnabled == false )
+      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 )
@@ -1026,7 +1027,13 @@
          // 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());
+   }
 }

Modified: branches/jbossws-1.0_Heiko/src/main/java/org/jboss/ws/soap/SOAPFactoryImpl.java
===================================================================
--- branches/jbossws-1.0_Heiko/src/main/java/org/jboss/ws/soap/SOAPFactoryImpl.java	2006-08-14 22:09:38 UTC (rev 751)
+++ branches/jbossws-1.0_Heiko/src/main/java/org/jboss/ws/soap/SOAPFactoryImpl.java	2006-08-16 08:49:47 UTC (rev 752)
@@ -61,6 +61,20 @@
       return new SOAPElementImpl(localName, prefix, uri);
    }
 
+   public SOAPElementImpl createElement(SOAPElement parentNode, Element domNode, boolean deep) throws SOAPException
+   {
+      if (domNode == null)
+         throw new IllegalArgumentException("Source node cannot be null");
+
+      String localName = domNode.getLocalName();
+      String prefix = domNode.getPrefix() != null ? domNode.getPrefix() : "";
+      String nsURI = domNode.getNamespaceURI() != null ? domNode.getNamespaceURI() : "";
+
+      SOAPElementImpl soapElement = new SOAPElementImpl(localName, prefix, nsURI);
+      parentNode.addChildElement(soapElement);
+      return createElement(soapElement, deep);
+   }
+
    /**
     * Create a SOAPElement from a DOM Element.
     * This method is not part of the javax.xml.soap.SOAPFactory interface.
@@ -69,11 +83,11 @@
    {
       if (domNode == null)
          throw new IllegalArgumentException("Source node cannot be null");
-      
+
       String localName = domNode.getLocalName();
       String prefix = domNode.getPrefix() != null ? domNode.getPrefix() : "";
       String nsURI = domNode.getNamespaceURI() != null ? domNode.getNamespaceURI() : "";
-      
+
       SOAPElementImpl soapElement = new SOAPElementImpl(localName, prefix, nsURI);
 
       // Add the child elements as well
@@ -93,11 +107,7 @@
                soapElement.addChildElement(soapChild);
 
                String ns = soapChild.getNamespaceURI() != null ? soapChild.getNamespaceURI() : "";
-               String name = soapChild.getLocalName();
-               if(ns.equals(Constants.NS_XOP) && name.equals("Include"))
-               {
-                  XOPContext.inlineXOPData(soapElement);
-               }
+               String name = soapChild.getLocalName();             
             }
             else if (nodeType == Node.TEXT_NODE)
             {

Modified: branches/jbossws-1.0_Heiko/src/main/java/org/jboss/ws/soap/attachment/ByteArrayContentHandler.java
===================================================================
--- branches/jbossws-1.0_Heiko/src/main/java/org/jboss/ws/soap/attachment/ByteArrayContentHandler.java	2006-08-14 22:09:38 UTC (rev 751)
+++ branches/jbossws-1.0_Heiko/src/main/java/org/jboss/ws/soap/attachment/ByteArrayContentHandler.java	2006-08-16 08:49:47 UTC (rev 752)
@@ -26,7 +26,6 @@
 import javax.activation.ActivationDataFlavor;
 import javax.activation.DataContentHandler;
 import javax.activation.DataSource;
-import java.awt.*;
 import java.awt.datatransfer.DataFlavor;
 import java.awt.datatransfer.UnsupportedFlavorException;
 import java.io.ByteArrayInputStream;
@@ -58,7 +57,16 @@
    }
 
    public void writeTo(Object object, String string, OutputStream outputStream) throws IOException {
-      MimeUtils.ByteArrayConverter converter = MimeUtils.getConverterFor(object.getClass());
-      converter.writeTo(object, outputStream);
+      if(object instanceof byte[])
+      {
+         // this actually depends on the SwapableMemoryDataSource
+         // todo: why is not always a ByteArrayInputStream ? 
+         outputStream.write((byte[])object);
+      }
+      else
+      {
+         MimeUtils.ByteArrayConverter converter = MimeUtils.getConverterForJavaType(object.getClass());
+         converter.writeTo(object, outputStream);
+      }
    }
 }

Modified: branches/jbossws-1.0_Heiko/src/main/java/org/jboss/ws/utils/MimeUtils.java
===================================================================
--- branches/jbossws-1.0_Heiko/src/main/java/org/jboss/ws/utils/MimeUtils.java	2006-08-14 22:09:38 UTC (rev 751)
+++ branches/jbossws-1.0_Heiko/src/main/java/org/jboss/ws/utils/MimeUtils.java	2006-08-16 08:49:47 UTC (rev 752)
@@ -29,19 +29,15 @@
 import com.sun.image.codec.jpeg.JPEGImageDecoder;
 import com.sun.image.codec.jpeg.JPEGImageEncoder;
 import org.jboss.ws.Constants;
+import org.jboss.ws.WSException;
 
 import javax.mail.internet.ContentType;
 import javax.mail.internet.MimeMultipart;
 import javax.mail.internet.ParseException;
 import javax.xml.namespace.QName;
 import javax.xml.transform.stream.StreamSource;
-import javax.xml.transform.Source;
 import java.awt.image.BufferedImage;
-import java.awt.*;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.IOException;
-import java.io.ByteArrayInputStream;
+import java.io.*;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Set;
@@ -175,7 +171,7 @@
       return mimeType;
    }
 
-   public static ByteArrayConverter getConverterFor(Class targetClazz)
+   public static ByteArrayConverter getConverterForJavaType(Class targetClazz)
    {
       ByteArrayConverter converter = null;
       if(JavaUtils.isAssignableFrom(java.awt.Image.class, targetClazz))
@@ -188,14 +184,36 @@
          converter = new StreamConverter();
 
       if(null == converter)
-         throw new IllegalArgumentException("No ByteArrayConverter for : " + targetClazz.getName());
+         throw new WSException("No ByteArrayConverter for class: " + targetClazz.getName());
 
       return converter;
    }
 
+    public static ByteArrayConverter getConverterForContentType(String contentType)
+   {
+      ByteArrayConverter converter = null;
+
+      if(contentType != null)
+      {
+         if("image/jpeg".equals(contentType) || "image/jpg".equals(contentType))
+            converter = new ImageConverter();
+         else if("text/xml".equals(contentType) || "application/xml".equals(contentType))
+            converter = new SourceConverter();
+         else if("text/plain".equals(contentType))
+            converter = new StringConverter();
+         else if("application/octet-stream".equals(contentType))
+            converter = new StreamConverter();
+      }
+
+      if(null == converter)
+            throw new WSException("No ByteArrayConverter for content type: " + contentType);
+
+      return converter;
+   }
+
    public static class ImageConverter implements ByteArrayConverter
    {
-      public Object readFrom(InputStream in) throws IOException {
+      public Object readFrom(InputStream in) {
          Object converted = null;
          try
          {
@@ -211,15 +229,22 @@
          return converted;
       }
 
-      public void writeTo(Object obj, OutputStream out) throws IOException {
+      public void writeTo(Object obj, OutputStream out) {
          if(obj instanceof BufferedImage)
          {
             JPEGImageEncoder enc = JPEGCodec.createJPEGEncoder(out);
-            enc.encode((BufferedImage)obj);
+            try
+            {
+               enc.encode((BufferedImage)obj);
+            }
+            catch (IOException e)
+            {
+               throw new WSException("Failed to convert " + obj.getClass());
+            }
          }
          else
          {
-            throw new IllegalArgumentException("Unable to convert " + obj.getClass());
+            throw new WSException("Unable to convert " + obj.getClass());
          }
 
       }
@@ -228,85 +253,100 @@
 
    public static class SourceConverter implements ByteArrayConverter
    {
-      public Object readFrom(InputStream in) throws IOException {
-
-         Object converted = null;
-         try
-         {
-            converted = new StreamSource(in);
-         }
-         catch (Exception e)
-         {
-            // ignore
-         }
-
-         return converted;
+      public Object readFrom(InputStream in) {
+         return new StreamSource(in);
       }
 
-      public void writeTo(Object obj, OutputStream out) throws IOException {
+      public void writeTo(Object obj, OutputStream out) {
          if(obj instanceof StreamSource)
          {
             StreamSource s = (StreamSource)obj;
-            IOUtils.copyStream(out, s.getInputStream());
+            try
+            {
+               IOUtils.copyStream(out, s.getInputStream());
+            }
+            catch (IOException e)
+            {
+               throw new WSException("Failed to convert " + obj.getClass());
+            }
          }
          else
          {
-            throw new IllegalArgumentException("Unable to convert " + obj.getClass());
+            throw new WSException("Unable to convert " + obj.getClass());
          }
       }
    }
 
    public static class StringConverter implements ByteArrayConverter
    {
-      public Object readFrom(InputStream in) throws IOException {
+      public Object readFrom(InputStream in) {
          Object converted = null;
          try
          {
-            StringBuffer sb = new StringBuffer();
-            while(in.available()>0)
-            {
-               sb.append(in.read());
+            BufferedReader br = new BufferedReader(new InputStreamReader(in));
+            StringBuilder sb = new StringBuilder();
+            String line = null;
+
+            while ((line = br.readLine()) != null) {
+               sb.append(line + "\n");
             }
+
+            br.close();
+            
             converted = sb.toString();
          }
-         catch (Exception e)
+         catch (IOException e)
          {
-            // ignore
+            throw new WSException("Failed to convert java.lang.String");
          }
 
          return converted;
       }
 
-      public void writeTo(Object obj, OutputStream out) throws IOException {
+      public void writeTo(Object obj, OutputStream out) {
          if(obj instanceof String)
          {
             String s = (String)obj;
-            out.write(s.getBytes("UTF-8"));
+            try
+            {
+               out.write(s.getBytes("UTF-8"));
+            }
+            catch (IOException e)
+            {
+               throw new WSException("Failed to convert " + obj.getClass());
+            }
          }
          else
          {
-            throw new IllegalArgumentException("Unable to convert " + obj.getClass());
+            throw new WSException("Unable to convert " + obj.getClass());
          }
       }
    }
 
    public static class StreamConverter implements ByteArrayConverter
    {
-      public Object readFrom(InputStream in) throws IOException {
+      public Object readFrom(InputStream in) {
          return in;
       }
 
-      public void writeTo(Object obj, OutputStream out) throws IOException {
+      public void writeTo(Object obj, OutputStream out) {
          if(obj instanceof InputStream)
          {
-            IOUtils.copyStream(out, (InputStream)obj);
+            try
+            {
+               IOUtils.copyStream(out, (InputStream)obj);
+            }
+            catch (IOException e)
+            {
+               throw new WSException("Failed to convert " + obj.getClass());
+            }
          }
       }
    }
    public interface ByteArrayConverter
    {
-      Object readFrom(InputStream in) throws IOException;
-      void writeTo(Object obj, OutputStream out) throws IOException;
+      Object readFrom(InputStream in);
+      void writeTo(Object obj, OutputStream out);
    }
 
 

Modified: branches/jbossws-1.0_Heiko/src/main/java/org/jboss/ws/xop/XOPContext.java
===================================================================
--- branches/jbossws-1.0_Heiko/src/main/java/org/jboss/ws/xop/XOPContext.java	2006-08-14 22:09:38 UTC (rev 751)
+++ branches/jbossws-1.0_Heiko/src/main/java/org/jboss/ws/xop/XOPContext.java	2006-08-16 08:49:47 UTC (rev 752)
@@ -21,26 +21,29 @@
 */
 package org.jboss.ws.xop;
 
+import org.jboss.logging.Logger;
 import org.jboss.util.xml.DOMUtils;
 import org.jboss.ws.Constants;
 import org.jboss.ws.WSException;
 import org.jboss.ws.jaxrpc.StubExt;
 import org.jboss.ws.soap.MessageContextAssociation;
+import org.jboss.ws.soap.NameImpl;
 import org.jboss.ws.soap.SOAPMessageContextImpl;
 import org.jboss.ws.soap.SOAPMessageImpl;
-import org.jboss.ws.soap.NameImpl;
+import org.jboss.ws.utils.MimeUtils;
 import org.jboss.ws.utils.ThreadLocalAssociation;
+import org.jboss.ws.utils.JavaUtils;
 import org.jboss.xb.binding.SimpleTypeBindings;
 import org.jboss.xb.binding.sunday.xop.XOPMarshaller;
 import org.jboss.xb.binding.sunday.xop.XOPObject;
-import org.jboss.xb.binding.sunday.xop.XOPUnmarshaller;
 
 import javax.activation.DataHandler;
 import javax.activation.DataSource;
+import javax.xml.namespace.QName;
 import javax.xml.soap.AttachmentPart;
 import javax.xml.soap.SOAPElement;
 import javax.xml.soap.SOAPException;
-import javax.xml.namespace.QName;
+import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.util.Iterator;
 
@@ -62,6 +65,8 @@
  */
 public class XOPContext {
 
+   private static final Logger log = Logger.getLogger(XOPContext.class);
+
    private static final String NS_XOP_JBOSSWS = "http://org.jboss.ws/xop";
 
    /**
@@ -98,20 +103,32 @@
     */
    public static void inlineXOPData(SOAPElement xopElement)
    {
-      Iterator it = DOMUtils.getChildElements(xopElement);
-      while(it.hasNext())
+      String ns = xopElement.getNamespaceURI()!=null ? xopElement.getNamespaceURI(): "";
+      String localName = xopElement.getLocalName();
+
+      // rpc/lit
+      if(ns.equals(Constants.NS_XOP) && localName.equals("Include"))
       {
-         SOAPElement childElement = (SOAPElement)it.next();
-         String ns = childElement.getNamespaceURI()!=null ? childElement.getNamespaceURI(): "";
-         String localName = childElement.getLocalName();
-         if(ns.equals(Constants.NS_XOP) && localName.equals("Include"))
+         replaceXOPInclude(xopElement.getParentElement(), xopElement);
+      }
+      else
+      {
+         // doc/lit
+         Iterator it = DOMUtils.getChildElements(xopElement);
+         while(it.hasNext())
          {
-            replaceXOPInclude(xopElement, childElement);
+            SOAPElement childElement = (SOAPElement)it.next();
+            String childNS = childElement.getNamespaceURI()!=null ? childElement.getNamespaceURI(): "";
+            String childName = childElement.getLocalName();
+            if(childNS.equals(Constants.NS_XOP) && childName.equals("Include"))
+            {
+               replaceXOPInclude(xopElement, childElement);
+            }
+            else
+            {
+               inlineXOPData(childElement);
+            }
          }
-         else
-         {
-            inlineXOPData(childElement);
-         }
       }
    }
 
@@ -142,13 +159,20 @@
 
    private static void replaceBase64Representation(SOAPElement xopElement, String contentType) {
 
+      SOAPElement parentElement = xopElement.getParentElement();
+      log.debug("Replace base64 representation on element [xmlName=" + parentElement.getLocalName()+"]");
+
       String base64 = xopElement.getValue();
       byte[] data = SimpleTypeBindings.unmarshalBase64(base64);
-      XOPObject xopObject = new XOPObject(data);
+
+      MimeUtils.ByteArrayConverter converter = MimeUtils.getConverterForContentType(contentType);
+      Object converted = converter.readFrom(new ByteArrayInputStream(data));
+
+      XOPObject xopObject = new XOPObject(converted);
       xopObject.setContentType(contentType);
 
       XOPMarshaller xopMarshaller = new XOPMarshallerImpl();
-      String cid = xopMarshaller.addMtomAttachment(xopObject, xopElement.getNamespaceURI(), xopElement.getLocalName());
+      String cid = xopMarshaller.addMtomAttachment(xopObject, xopElement.getNamespaceURI(), xopElement.getLocalName());      
 
       // remove base64 node with the xop:Include element
       org.w3c.dom.Node child = (org.w3c.dom.Node)xopElement.getFirstChild();
@@ -158,6 +182,7 @@
       {
          SOAPElement xopInclude = xopElement.addChildElement("Include", "xop", Constants.NS_XOP);
          xopInclude.setAttribute("href", cid);
+         log.debug("Restored xop:Include element on {" + xopElement.getNamespaceURI()+"}"+xopElement.getLocalName());
       }
       catch (SOAPException e)
       {
@@ -166,11 +191,12 @@
 
    }
 
-   private static void replaceXOPInclude(SOAPElement parent, SOAPElement child)
+   private static void replaceXOPInclude(SOAPElement parent, SOAPElement xopIncludeElement)
    {
-      String cid = child.getAttribute("href");
 
-      XOPUnmarshaller unm =  new XOPUnmarshallerImpl();
+      log.debug("Replace xop:Include on element [xmlName=" + parent.getLocalName() +"]");
+
+      String cid = xopIncludeElement.getAttribute("href");
       byte[] data;
       String contentType;
 
@@ -180,9 +206,11 @@
          DataHandler dh = part.getDataHandler();
          contentType = dh.getContentType();
 
+         // TODO: can't we create base64 directly from stream?
          ByteArrayOutputStream bout = new ByteArrayOutputStream();
          dh.writeTo(bout);
          data = bout.toByteArray();
+
       }
       catch (Exception e)
       {
@@ -191,10 +219,12 @@
 
       // create base64 contents
       String base64 = SimpleTypeBindings.marshalBase64(data);
-      parent.removeChild(child);
+      parent.removeChild(xopIncludeElement);
       parent.setValue(base64);
       parent.setAttributeNS(NS_XOP_JBOSSWS, "content-type", contentType);
 
+      log.debug("Created base64 representation for content-type " + contentType);
+
       // cleanup the attachment part
       SOAPMessageContextImpl msgContext = (SOAPMessageContextImpl)MessageContextAssociation.peekMessageContext();
       SOAPMessageImpl soapMessage = (SOAPMessageImpl)msgContext.getMessage();
@@ -204,8 +234,10 @@
 
       AttachmentPart removedPart = soapMessage.removeAttachmentByContentId(cid);
       if(null == removedPart)
-         throw new WSException("Unable to remove attachment part for cid " + cid);
+         throw new WSException("Unable to remove attachment part " + cid);
 
+      log.debug("Removed attachment part " + cid);
+
    }
 
    /**
@@ -231,31 +263,49 @@
     * Create a <code>DataHandler</code> for an object.
     * The handlers content type is based on the java type.
     */
-   public static DataHandler createDataHandler(Object o)
+   public static DataHandler createDataHandler(XOPObject xopObject)
    {
       DataHandler dataHandler;
+      Object o = xopObject.getContent();
 
-      if(o instanceof java.awt.Image)
+      if(o instanceof DataHandler)
       {
-         dataHandler = new DataHandler(o, "image/jpeg");
+         dataHandler = (DataHandler)o;
       }
-      else if(o instanceof javax.xml.transform.Source)
+      else if(xopObject.getContentType() != null)
       {
-         dataHandler = new DataHandler(o, "application/xml");
+         dataHandler = new DataHandler(o, xopObject.getContentType());
       }
-      else if(o instanceof String)
+      else if(! getContentTypeForClazz(o.getClass()).equals("application/octet-stream"))
       {
-         dataHandler = new DataHandler(o, "text/plain");
+         dataHandler = new DataHandler(o, getContentTypeForClazz(o.getClass()));
       }
-      else if(o instanceof DataHandler)
-      {
-         dataHandler = (DataHandler)o;
-      }
       else
       {
          DataSource ds = new SimpleDataSource(o, "application/octet-stream");
          dataHandler = new DataHandler(ds);
       }
+
       return dataHandler;
    }
+
+   public static String getContentTypeForClazz(Class clazz)
+   {
+      if(JavaUtils.isAssignableFrom(java.awt.Image.class, clazz))
+      {
+         return "image/jpeg";
+      }
+      else if (JavaUtils.isAssignableFrom(javax.xml.transform.Source.class, clazz))
+      {
+         return "application/xml";
+      }
+      else if (JavaUtils.isAssignableFrom(java.lang.String.class, clazz))
+      {
+         return "text/plain";
+      }
+      else
+      {
+         return "application/octet-stream";
+      }
+   }
 }

Modified: branches/jbossws-1.0_Heiko/src/main/java/org/jboss/ws/xop/XOPMarshallerImpl.java
===================================================================
--- branches/jbossws-1.0_Heiko/src/main/java/org/jboss/ws/xop/XOPMarshallerImpl.java	2006-08-14 22:09:38 UTC (rev 751)
+++ branches/jbossws-1.0_Heiko/src/main/java/org/jboss/ws/xop/XOPMarshallerImpl.java	2006-08-16 08:49:47 UTC (rev 752)
@@ -73,13 +73,13 @@
 
       String cid = soapMessage.getCidGenerator().generateFromName(xmlName.getLocalPart());
 
-      DataHandler dataHandler = XOPContext.createDataHandler(obj.getContent());
-      obj.setContentType(dataHandler.getContentType());
-
+      DataHandler dataHandler = XOPContext.createDataHandler(obj);
       AttachmentPart xopPart = soapMessage.createAttachmentPart(dataHandler);
       xopPart.addMimeHeader(MimeConstants.CONTENT_ID, '<'+cid+'>'); // RFC2392 requirement
       soapMessage.addAttachmentPart(xopPart);
 
+      log.debug("Created attachment part " +cid+", with content-type " +xopPart.getContentType());
+
       return "cid:" + cid;
 
    }

Modified: branches/jbossws-1.0_Heiko/src/main/java/org/jboss/ws/xop/XOPUnmarshallerImpl.java
===================================================================
--- branches/jbossws-1.0_Heiko/src/main/java/org/jboss/ws/xop/XOPUnmarshallerImpl.java	2006-08-14 22:09:38 UTC (rev 751)
+++ branches/jbossws-1.0_Heiko/src/main/java/org/jboss/ws/xop/XOPUnmarshallerImpl.java	2006-08-16 08:49:47 UTC (rev 752)
@@ -68,19 +68,10 @@
    {
       try
       {
+         // Always return the DataHandler, it's the preferred SEI parameter type.
+         // If necessary the conversion can take just place in SOAPContentElement
          AttachmentPart part = XOPContext.getAttachmentByCID(cid);
-
-         // Let JAF do the conversion
-         Object content = part.getDataHandler().getContent();
-
-         if(content instanceof InputStream)
-         {
-            // JAF doesn't know the content-type
-            // In this case we pass along the DataHandler
-            content = part.getDataHandler();
-         }
-
-         XOPObject xopObject = new XOPObject(content);
+         XOPObject xopObject = new XOPObject(part.getDataHandler());
          xopObject.setContentType(part.getDataHandler().getContentType());
 
          return xopObject;
@@ -89,11 +80,6 @@
       {
          throw new WSException(ex);
       }
-      catch(IOException e)
-      {
-         throw new WSException("Unable to retrieve content for cid:" + cid, e);
-      }
-
    }
 
    public byte[] getAttachmentAsByteArray(String cid)

Added: branches/jbossws-1.0_Heiko/src/main/java/org/jboss/ws/xop/XOPValueAdapter.java
===================================================================
--- branches/jbossws-1.0_Heiko/src/main/java/org/jboss/ws/xop/XOPValueAdapter.java	2006-08-14 22:09:38 UTC (rev 751)
+++ branches/jbossws-1.0_Heiko/src/main/java/org/jboss/ws/xop/XOPValueAdapter.java	2006-08-16 08:49:47 UTC (rev 752)
@@ -0,0 +1,39 @@
+/*
+* 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.xop;
+
+import org.jboss.xb.binding.sunday.unmarshalling.ValueAdapter;
+import org.jboss.xb.binding.sunday.xop.XOPObject;
+
+/**
+ * @author Heiko Braun <heiko.braun at jboss.com>
+ * @version $Id$
+ * @since Aug 10, 2006
+ */
+public class XOPValueAdapter implements ValueAdapter {
+   public Object cast(Object o, Class c) {
+
+      XOPObject xop = new XOPObject(o);
+      xop.setContentType(XOPContext.getContentTypeForClazz(c));      
+      return XOPContext.createDataHandler(xop);
+   }
+}


Property changes on: branches/jbossws-1.0_Heiko/src/main/java/org/jboss/ws/xop/XOPValueAdapter.java
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + LF

Modified: branches/jbossws-1.0_Heiko/src/test/build.xml
===================================================================
--- branches/jbossws-1.0_Heiko/src/test/build.xml	2006-08-14 22:09:38 UTC (rev 751)
+++ branches/jbossws-1.0_Heiko/src/test/build.xml	2006-08-16 08:49:47 UTC (rev 752)
@@ -390,7 +390,7 @@
   -->
   <target name="one-test" depends="init" if="test" description="Run a single unit test">
     <junit printsummary="yes" showoutput="yes" dir="${build.test.dir}">
-      <!--jvmarg line="-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5006"/-->
+      <jvmarg line="-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5006"/>
       <jvmarg value="-Djava.security.manager"/>
       <sysproperty key="java.security.policy" value="${test.etc.dir}/tst.policy"/>
       <sysproperty key="jboss.home" value="${jboss.home}"/>

Modified: branches/jbossws-1.0_Heiko/src/test/java/org/jboss/test/ws/samples/mtom/XOPRpcTestCase.java
===================================================================
--- branches/jbossws-1.0_Heiko/src/test/java/org/jboss/test/ws/samples/mtom/XOPRpcTestCase.java	2006-08-14 22:09:38 UTC (rev 751)
+++ branches/jbossws-1.0_Heiko/src/test/java/org/jboss/test/ws/samples/mtom/XOPRpcTestCase.java	2006-08-16 08:49:47 UTC (rev 752)
@@ -34,7 +34,6 @@
 import javax.xml.rpc.Stub;
 import javax.xml.transform.Source;
 import javax.xml.transform.stream.StreamSource;
-import java.awt.*;
 import java.io.File;
 import java.io.FileInputStream;
 import java.net.URL;
@@ -67,7 +66,7 @@
             InitialContext iniCtx = getInitialContext();
             Service service = (Service)iniCtx.lookup("java:comp/env/service/XOPTestService");
             port = (XOPTest)service.getPort(XOPTest.class);
-         }         
+         }
          else
          {
             ServiceFactoryImpl factory = new ServiceFactoryImpl();
@@ -84,113 +83,86 @@
       //((Stub)port)._setProperty(Stub.ENDPOINT_ADDRESS_PROPERTY, "http://" + getServerHost() + ":8081/jbossws-samples-mtom");
    }
 
-   /** Send unknown file that actually is converted into a DataHandler
+   /**
+    * Send unknown file as 'application/octet-stream'.
+    * Uses a DataHandler both for the endpint parameter and the return type.
     */
-   public void testSendOctets() throws Exception
+   public void testSimpleBinary() throws Exception
    {
-      Object value = port.sendOctets("Some text message", new DataHandler(
+      DataHandler value = port.sendOctets("Some text message", new DataHandler(
           new FileDataSource("resources/samples/mtom/disguised_jpeg.xcf")
       ));
       assertNotNull(value);
-      assertTrue("Wrong return value type", value instanceof DataHandler);
+      assertTrue("Wrong content type", value.getContentType().equals("application/octet-stream"));
    }
 
    /**
-    * A disguised element is send when the actual SEI java parameter
-    * doesn't map with the content-type set on the mimepart.
-    * .NET loves do this...
-    *
-    * In this case we try to 'force' convert that object according to
-    * the expected java parameter.
-    *
-    * @throws Exception
-    * @see org.jboss.ws.soap.SOAPContentElement#getObjectValue()
+    * Send a multipart message with a 'image/jpeg' attachment part.
+    * Uses a DataHandler as endpoint parameter and return type.
     */
-   public void testSendDisguised() throws Exception
+   public void testAbstractParameterTypes() throws Exception
    {
-      Object value = port.sendMimeImageGIF("Some text message", new DataHandler(
-          new FileDataSource("resources/samples/mtom/disguised_jpeg.xcf")
-      ));
+      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 value type", value instanceof Image);
+      assertTrue("Wrong return content-type returned", value.getContentType().equals("image/jpeg"));
    }
 
-   /** Send a multipart message with a image/jpeg attachment part
+   /**
+    * Send a multipart message with a 'text/plain' attachment part.
+    * Uses java.lang.String as endpoint parameter and return type.
     */
-  public void testSendMimeImageJPEG() throws Exception
+   public void testConcreteParameterTypes() throws Exception
    {
-      URL url = new File("resources/samples/mtom/attach.jpeg").toURL();
-
-      // On Linux the X11 server must be installed properly to create images successfully.
-      // If the image cannot be created in the test VM, we assume it cannot be done on the
-      // server either, so we just skip the test
-      Image image = null;
-      try
-      {
-         image = Toolkit.getDefaultToolkit().createImage(url);
-      }
-      catch (Throwable th)
-      {
-         //log.warn("Cannot create Image: " + th);
-      }
-
-      if (image != null)
-      {
-         Object value = port.sendMimeImageJPEG("Some text message", image);
-         assertNotNull(value);
-         assertTrue("Wrong return value type", value instanceof Image);
-      }
-   }
-
-   /** Send a multipart message with a text/plain attachment part
-    */
-   public void testSendMimeTextPlain() throws Exception
-   {
-      String value = port.sendMimeTextPlain("Some text message", "This is a plain text attachment.");
+      String xoppart = "This is a plain text attachment.";
+      String value = port.sendMimeTextPlain("Some text message", xoppart);
       assertNotNull(value);
+      assertEquals("Value mismatch", value, xoppart);
    }
 
-   /** Send a multipart message with a multipart attachment part
+   /**
+    * Send a multipart message with a 'text/xml' attachment part.
+    * Uses a DataHandler as endpoint parameter, but javax.xml.transform.Source as return value.
     */
-   public void testSendMimeMultipart() throws Exception
+   public void testParameterConversion() throws Exception
    {
-      /*URL url = new File("resources/samples/mtom/attach.txt").toURL();
-      MimeMultipart multipart = new MimeMultipart("mixed");
-      MimeBodyPart bodyPart = new MimeBodyPart();
-      bodyPart.setDataHandler(new DataHandler(url));
-      String bpct = bodyPart.getContentType();
-      bodyPart.setHeader("Content-Type", bpct);
-      multipart.addBodyPart(bodyPart);
+      FileInputStream stream = new FileInputStream("resources/samples/mtom/attach.xml");
+      StreamSource source = new StreamSource(stream);
 
-      Object value = port.sendMimeMultipart("Some text message", multipart);
+      Source value = port.sendMimeTextXML("Some text message", new DataHandler(source, "text/xml"));
       assertNotNull(value);
-      assertTrue("Wrong return value type", value instanceof MimeMultipart);
-      */
-
-      System.out.println("FIXME 'testSendMimeMultipart()'");
+      assertTrue("Wrong return value type", value instanceof Source);
    }
 
-   /** Send a multipart message with a text/xml attachment part
+   /**
+    * Send a multipart message with a application/xml attachment part.
+    * Uses a javax.xml.transform.Source as endpoint parameter, but javax.activation.DataHandler as return value.
     */
-  public void testSendMimeTextXML() throws Exception
+   public void testParameterConversionReverse() throws Exception
    {
       FileInputStream stream = new FileInputStream("resources/samples/mtom/attach.xml");
       StreamSource source = new StreamSource(stream);
 
-      Object value = port.sendMimeTextXML("Some text message", new DataHandler(source, "text/xml"));
+      DataHandler value = port.sendMimeApplicationXML("Some text message", source);
       assertNotNull(value);
-      assertTrue("Wrong return value type", value instanceof Source);
+      assertTrue("Wrong return value content-type", value.getContentType().equals("application/xml"));
    }
 
-   /** Send a multipart message with a application/xml attachment part
+   /**
+    * Send a inlined message and expect a multipart response.
     */
-   public void testSendMimeApplicationXML() throws Exception
+   public void testMTOMDisabledClientSide() throws Exception
    {
-      FileInputStream stream = new FileInputStream("resources/samples/mtom/attach.xml");
-      StreamSource source = new StreamSource(stream);
+      /*URL url = new File("resources/samples/mtom/attach.jpeg").toURL();
 
-      Object value = port.sendMimeApplicationXML("Some text message", source);
+      // disable MTOM
+      ((Stub)port)._setProperty("org.jboss.ws.mtom.enabled", "false");
+
+      DataHandler value = port.sendMimeImageJPEG("MTOM disabled request", new DataHandler(url));
       assertNotNull(value);
-      assertTrue("Wrong return value type", value instanceof Source);
+      assertTrue("Wrong return content-type returned", value.getContentType().equals("image/jpeg"));
+      */
+
+      System.out.println("FIXME: testMTOMDisabledClientSide");
    }
 }

Modified: branches/jbossws-1.0_Heiko/src/test/java/org/jboss/test/ws/samples/mtom/XOPTest.java
===================================================================
--- branches/jbossws-1.0_Heiko/src/test/java/org/jboss/test/ws/samples/mtom/XOPTest.java	2006-08-14 22:09:38 UTC (rev 751)
+++ branches/jbossws-1.0_Heiko/src/test/java/org/jboss/test/ws/samples/mtom/XOPTest.java	2006-08-16 08:49:47 UTC (rev 752)
@@ -44,29 +44,21 @@
  */
 public interface XOPTest extends Remote
 {
-   /** Service endpoint method for image/gif
-    */
-   Object sendMimeImageGIF(String message, Object xoppart) throws RemoteException;
-
    /** Service endpoint method for image/jpeg
     */
-   Object sendMimeImageJPEG(String message, Image xoppart) throws RemoteException;
+   DataHandler sendMimeImageJPEG(String message, DataHandler xoppart) throws RemoteException;
 
    /** Service endpoint method for text/plain
     */
    String sendMimeTextPlain(String message, String xoppart) throws RemoteException;
 
-   /** Service endpoint method for multipart/*
-    */
-   MimeMultipart sendMimeMultipart(String message, MimeMultipart xoppart) throws RemoteException;
-
    /** Service endpoint method for text/xml
     */
-   Object sendMimeTextXML(String message, Object xoppart) throws RemoteException;
+   Source sendMimeTextXML(String message, DataHandler xoppart) throws RemoteException;
 
    /** Service endpoint method for application/xml
     */
-   Object sendMimeApplicationXML(String message, Source xoppart) throws RemoteException;
+   DataHandler sendMimeApplicationXML(String message, Source xoppart) throws RemoteException;
 
    DataHandler sendOctets(String message, DataHandler xoppart) throws RemoteException;
 }

Modified: branches/jbossws-1.0_Heiko/src/test/java/org/jboss/test/ws/samples/mtom/XOPTestImpl.java
===================================================================
--- branches/jbossws-1.0_Heiko/src/test/java/org/jboss/test/ws/samples/mtom/XOPTestImpl.java	2006-08-14 22:09:38 UTC (rev 751)
+++ branches/jbossws-1.0_Heiko/src/test/java/org/jboss/test/ws/samples/mtom/XOPTestImpl.java	2006-08-16 08:49:47 UTC (rev 752)
@@ -21,6 +21,8 @@
   */
 package org.jboss.test.ws.samples.mtom;
 
+import org.jboss.ws.WSException;
+
 import javax.mail.BodyPart;
 import javax.mail.internet.MimeMultipart;
 import javax.xml.rpc.ServiceException;
@@ -34,229 +36,77 @@
 import java.awt.*;
 import java.rmi.RemoteException;
 import java.util.Iterator;
+import java.io.IOException;
 
 /**
  * Service Endpoint for XOP
  *
- * image/gif         java.awt.Image
  * image/jpeg        java.awt.Image
  * text/plain        java.lang.String
- * multipart/*       javax.mail.internet.MimeMultipart
  * text/xml          javax.xml.transform.Source
  * application/xml   javax.xml.transform.Source
  *
  * @author Thomas.Diesler at jboss.org
+ * @author Heiko.Braun at jboss.org
+ *
  * @since 18-Jan-2006
  */
 public class XOPTestImpl implements XOPTest, ServiceLifecycle
 {
    private ServletEndpointContext context;
 
-   /** Service endpoint method for image/gif
+   /**
+    * Service endpoint method that processes inlined and optimized values.
     */
-   public Object sendMimeImageGIF(String message, Object xoppart) throws RemoteException
+   public DataHandler sendMimeImageJPEG(String message, DataHandler xoppart) throws RemoteException
    {
-      StringBuffer buffer = new StringBuffer();
+      String expContentType = message.equals("MTOM disabled request") ? "application/octet-stream" : "image/jpeg";
 
-      validateStringMessage(buffer, message);
-
-      String expContentType = "image/gif";
-      validateAttachmentPart(buffer, expContentType, xoppart);
-
+      if(! xoppart.getContentType().equals(expContentType))
+         throw new IllegalArgumentException("Wrong content-type: expected "+expContentType+", but was " + xoppart.getContentType());
       return xoppart;
    }
 
-   /** Service endpoint method for image/jpeg
+   /**
+    * Service endpoint method for text/plain
     */
-   public Object sendMimeImageJPEG(String message, Image xoppart) throws RemoteException
-   {
-      StringBuffer buffer = new StringBuffer();
-      String expContentType = "image/jpeg";
-      validateAttachmentPart(buffer, expContentType, xoppart);
-      return xoppart;
-   }
-
-   /** Service endpoint method for text/plain
-    */
    public String sendMimeTextPlain(String message, String xoppart) throws RemoteException
    {
-      StringBuffer buffer = new StringBuffer();
-
-      validateStringMessage(buffer, message);
-
-      String expContentType = "text/plain";
-      validateAttachmentPart(buffer, expContentType, xoppart);
-
-      String resultStr = getResultStr(buffer, expContentType);
-      return resultStr;
-   }
-
-   /** Service endpoint method for multipart/*
-    */
-   public MimeMultipart sendMimeMultipart(String message, MimeMultipart xoppart) throws RemoteException
-   {
-      StringBuffer buffer = new StringBuffer();
-
-      validateStringMessage(buffer, message);
-
-      String expContentType = "multipart/*";
-      validateAttachmentPart(buffer, expContentType, xoppart);
-
       return xoppart;
    }
 
-   /** Service endpoint method for text/xml
+   /**
+    * Service endpoint method for text/xml
     */
-   public Object sendMimeTextXML(String message, Object xoppart) throws RemoteException
+   public Source sendMimeTextXML(String message, DataHandler xoppart) throws RemoteException
    {
-      StringBuffer buffer = new StringBuffer();
-
-      validateStringMessage(buffer, message);
-
-      String expContentType = "text/xml";
-      validateAttachmentPart(buffer, expContentType, xoppart);
-
-      return xoppart;
-   }
-
-   /** Service endpoint method for application/xml
-    */
-   public Object sendMimeApplicationXML(String message, Source xoppart) throws RemoteException
-   {
-      StringBuffer buffer = new StringBuffer();
-
-      validateStringMessage(buffer, message);
-
-      String expContentType = "application/xml";
-      validateAttachmentPart(buffer, expContentType, xoppart);
-
-      return xoppart;
-   }
-
-   public DataHandler sendOctets(String message, DataHandler xoppart) throws RemoteException {
-      StringBuffer buffer = new StringBuffer();
-      validateStringMessage(buffer, message);
-
-      String expContentType = "application/octet-stream";
-      validateAttachmentPart(buffer, expContentType, xoppart);
-
-      return xoppart;
-   }
-
-   private void validateStringMessage(StringBuffer buffer, String message)
-   {
-      if ("Some text message".equals(message) == false)
-         buffer.append("[message=" + message + "]");
-   }
-
-   private void validateAttachmentPart(StringBuffer buffer, String expContentType, Object xoppart)
-   {
-      if(null==xoppart)
-         throw new IllegalArgumentException("XOP Parameter was null");
-      SOAPMessageContext msgContext = (SOAPMessageContext)context.getMessageContext();
-      SOAPMessage soapMessage = msgContext.getMessage();
-
-      Iterator attachments = soapMessage.getAttachments();
-      if (attachments.hasNext())
+      if(! xoppart.getContentType().equals("text/xml"))
+         throw new IllegalArgumentException("Wrong content-type: expected 'text/xml', but was " + xoppart.getContentType());
+      try
       {
-         AttachmentPart ap = (AttachmentPart)attachments.next();
-         String contentType = ap.getContentType();
-
-         if (expContentType.equals("multipart/*"))
-         {
-            if (contentType.startsWith("multipart/") == false)
-               buffer.append("[contentType=" + contentType + "]");
-         }
-         else if (expContentType.equals("text/xml"))
-         {
-            if (contentType.equals("text/xml") == false && contentType.equals("application/xml") == false)
-               buffer.append("[contentType=" + contentType + "]");
-         }
-         else
-         {
-            if (contentType.equals(expContentType) == false)
-               buffer.append("[contentType=" + contentType + "]");
-         }
-         validateSinglePart(buffer, expContentType, ap);
+         Source payload = (Source)xoppart.getContent();
+         return payload;
       }
-      else
+      catch (IOException e)
       {
-         buffer.append("[no attachments]");
+         throw new WSException(e.getMessage());
       }
-
-      validateSinglePart(buffer, expContentType, xoppart);
    }
 
-   private void validateSinglePart(StringBuffer buffer, String contentType, Object content)
+   /**
+    * Service endpoint method for application/xml
+    */
+   public DataHandler sendMimeApplicationXML(String message, Source xoppart) throws RemoteException
    {
-      try
-      {
-         if (content instanceof AttachmentPart)
-            content = ((AttachmentPart)content).getContent();
-
-         if (contentType.equals("image/gif") || contentType.equals("image/jpeg"))
-         {
-            if ((content instanceof Image) == false)
-               buffer.append("[content=" + content + "]");
-         }
-         else if (contentType.equals("text/plain"))
-         {
-            if ((content instanceof String) == false)
-               buffer.append("[content=" + content + "]");
-         }
-         else if (contentType.startsWith("multipart/"))
-         {
-            if ((content instanceof MimeMultipart) == false)
-            {
-               buffer.append("[content=" + content + "]");
-            }
-            else
-            {
-               MimeMultipart mmp = (MimeMultipart)content;
-
-               int mmpCount = mmp.getCount();
-               if (mmpCount < 1)
-                  buffer.append("[count=" + mmpCount + "]");
-
-               for (int i = 0; i < mmpCount; i++)
-               {
-                  BodyPart bp = mmp.getBodyPart(i);
-                  String bpct = bp.getContentType();
-                  Object bpc = bp.getContent();
-                  validateSinglePart(buffer, bpct, bpc);
-               }
-            }
-         }
-         else if (contentType.equals("text/xml") || contentType.equals("application/xml"))
-         {
-            if ((content instanceof Source) == false)
-               buffer.append("[content=" + content + "]");
-         }
-         else if (contentType.equals("application/octet-stream") )
-         {
-            if ((content instanceof DataHandler) == false)
-               buffer.append("[content=" + content + "]");
-         }
-         else
-         {
-            throw new IllegalArgumentException("Unsupported mime type: " + contentType);
-         }
-      }
-      catch (Exception e)
-      {
-         buffer.append("[" + e + "]");
-      }
+      return new DataHandler(xoppart, "application/xml");
    }
 
-   private String getResultStr(StringBuffer buffer, String expContentType)
-   {
-      String retStr = (buffer.length() == 0 ? "[pass]" : buffer.toString());
-      System.out.println(expContentType + ": " + retStr);
-      return retStr;
+   public DataHandler sendOctets(String message, DataHandler xoppart) throws RemoteException {
+      if(! xoppart.getContentType().equals("application/octet-stream"))
+         throw new IllegalArgumentException("Wrong content-type: expected 'application/octet-stream', but was " + xoppart.getContentType());
+      return xoppart;
    }
 
-   // ServiceLifecycle *******************************************************************************************
-
    public void init(Object context) throws ServiceException
    {
       this.context = (ServletEndpointContext)context;

Modified: branches/jbossws-1.0_Heiko/src/test/java/org/jboss/test/ws/xop/doclit/InlineHandler.java
===================================================================
--- branches/jbossws-1.0_Heiko/src/test/java/org/jboss/test/ws/xop/doclit/InlineHandler.java	2006-08-14 22:09:38 UTC (rev 751)
+++ branches/jbossws-1.0_Heiko/src/test/java/org/jboss/test/ws/xop/doclit/InlineHandler.java	2006-08-16 08:49:47 UTC (rev 752)
@@ -41,7 +41,7 @@
          SOAPBody soapBody = soapMessage.getSOAPBody();
 
          SOAPElement response = (SOAPElement) soapBody.getChildElements().next();
-         SOAPElement xopElement = (SOAPElement)response.getChildElements(new NameImpl("imagejpeg")).next();
+         SOAPElement xopElement = (SOAPElement)response.getChildElements(new NameImpl("xopContent")).next();
          messageContext.setProperty("xop.inline.value", xopElement.getFirstChild().getNodeValue());
       }
       catch (Exception e)

Modified: branches/jbossws-1.0_Heiko/src/test/java/org/jboss/test/ws/xop/doclit/PingMsg.java
===================================================================
--- branches/jbossws-1.0_Heiko/src/test/java/org/jboss/test/ws/xop/doclit/PingMsg.java	2006-08-14 22:09:38 UTC (rev 751)
+++ branches/jbossws-1.0_Heiko/src/test/java/org/jboss/test/ws/xop/doclit/PingMsg.java	2006-08-16 08:49:47 UTC (rev 752)
@@ -7,33 +7,29 @@
 
 package org.jboss.test.ws.xop.doclit;
 
-public class  PingMsg
+import javax.activation.DataHandler;
+
+public class PingMsg
 {
    protected String message;
-   protected Object imagejpeg;
+   protected DataHandler xopContent;
 
-   private Object _value;
-
    public PingMsg(){}
 
-   public PingMsg(String message, Object img){
+   public PingMsg(String message, DataHandler dataHandler){
       this.message=message;
-      this.imagejpeg = img;
+      this.xopContent = dataHandler;
    }
 
    public java.lang.String getMessage() { return message ;}
 
    public void setMessage(java.lang.String message){ this.message=message; }
 
-   public Object getImagejpeg() {
-      return imagejpeg;
+   public DataHandler getXopContent() {
+      return xopContent;
    }
 
-   public void setImagejpeg(Object imagejpeg) {
-      this.imagejpeg = imagejpeg;
+   public void setXopContent(DataHandler xopContent) {
+      this.xopContent = xopContent;
    }
-
-   public Object get_value() {
-      return this.imagejpeg;
-   }
 }

Modified: branches/jbossws-1.0_Heiko/src/test/java/org/jboss/test/ws/xop/doclit/PingMsgResponse.java
===================================================================
--- branches/jbossws-1.0_Heiko/src/test/java/org/jboss/test/ws/xop/doclit/PingMsgResponse.java	2006-08-14 22:09:38 UTC (rev 751)
+++ branches/jbossws-1.0_Heiko/src/test/java/org/jboss/test/ws/xop/doclit/PingMsgResponse.java	2006-08-16 08:49:47 UTC (rev 752)
@@ -7,25 +7,25 @@
 
 package org.jboss.test.ws.xop.doclit;
 
-import java.awt.*;
+import javax.activation.DataHandler;
 
 
 public class  PingMsgResponse
 {
-   protected Object imagejpeg;
+   protected DataHandler xopContent;
 
    public PingMsgResponse(){
    }
 
-   public PingMsgResponse(Object image) {
-      this.imagejpeg = image;
+   public PingMsgResponse(DataHandler dataHandler) {
+      this.xopContent = dataHandler;
    }
 
-   public Object getImagejpeg() {
-      return imagejpeg;
+   public DataHandler getXopContent() {
+      return xopContent;
    }
 
-   public void setImagejpeg(Object imagejpeg) {
-      this.imagejpeg = imagejpeg;
+   public void setXopContent(DataHandler xopContent) {
+      this.xopContent = xopContent;
    }
 }

Modified: branches/jbossws-1.0_Heiko/src/test/java/org/jboss/test/ws/xop/doclit/TestServiceImpl.java
===================================================================
--- branches/jbossws-1.0_Heiko/src/test/java/org/jboss/test/ws/xop/doclit/TestServiceImpl.java	2006-08-14 22:09:38 UTC (rev 751)
+++ branches/jbossws-1.0_Heiko/src/test/java/org/jboss/test/ws/xop/doclit/TestServiceImpl.java	2006-08-16 08:49:47 UTC (rev 752)
@@ -1,7 +1,5 @@
 package org.jboss.test.ws.xop.doclit;
 
-import org.jboss.ws.WSException;
-
 import java.rmi.RemoteException;
 
 /**
@@ -10,6 +8,6 @@
  */
 public class TestServiceImpl implements TestService_PortType {
     public PingMsgResponse ping(PingMsg pingMsg) throws RemoteException {
-        return new PingMsgResponse(pingMsg.getImagejpeg());
+        return new PingMsgResponse(pingMsg.getXopContent());
     }
 }

Modified: branches/jbossws-1.0_Heiko/src/test/java/org/jboss/test/ws/xop/doclit/XOPElementDoclitTestCase.java
===================================================================
--- branches/jbossws-1.0_Heiko/src/test/java/org/jboss/test/ws/xop/doclit/XOPElementDoclitTestCase.java	2006-08-14 22:09:38 UTC (rev 751)
+++ branches/jbossws-1.0_Heiko/src/test/java/org/jboss/test/ws/xop/doclit/XOPElementDoclitTestCase.java	2006-08-16 08:49:47 UTC (rev 752)
@@ -33,9 +33,7 @@
 import javax.naming.InitialContext;
 import javax.xml.rpc.Service;
 import javax.xml.rpc.Stub;
-import java.awt.*;
 import java.io.*;
-import java.net.URL;
 
 /**
  *
@@ -67,12 +65,11 @@
 
    public void testPingMsgInlined() throws Exception {
 
-      URL url = new File("resources/samples/mtom/attach.jpeg").toURL();
-
-      DataHandler dh = new DataHandler(url);
+      DataHandler dh = new DataHandler("Another plain text attachment", "text/plain");
       PingMsgResponse value = port.ping(new PingMsg("Some text message", dh));
-      assertNotNull("Return value was null",value);
-      assertNotNull("Return image was null", value.getImagejpeg());
+      assertNotNull("Return value was null", value);
+      assertNotNull("Returned xopContent was null", value.getXopContent());
+      assertTrue("Wrong java type returned", (value.getXopContent()) instanceof DataHandler);
 
       // check inline values
       ByteArrayOutputStream bout = new ByteArrayOutputStream();
@@ -84,11 +81,9 @@
       String was = (String)((Stub) port)._getProperty("xop.inline.value");
       assertNotNull("base64 value not found", was);
       //assertEquals(expected, was);
-
-      System.out.println("FIXME: Compare base64 values");
    }
 
-   public void testMTOMDisabled() throws Exception {
+   /*public void testMTOMDisabled() throws Exception {
 
       byte[] bytes = getBytesFromFile(new File("resources/samples/mtom/attach.jpeg"));
       DataHandler dh = new DataHandler(new ByteArrayInputStream(bytes), "application/octet-stream");
@@ -98,8 +93,8 @@
 
       PingMsgResponse value = port.ping(new PingMsg("Some text message", dh));
       assertNotNull("Return value was null",value);
-      assertNotNull("Return image was null", value.getImagejpeg());
-   }
+      assertNotNull("Return image was null", value.getXopContent());
+   } */
 
    public static byte[] getBytesFromFile(File file) throws IOException {
       InputStream is = new FileInputStream(file);

Modified: branches/jbossws-1.0_Heiko/src/test/resources/samples-override/mtom/WEB-INF/jaxrpc-mapping.xml
===================================================================
--- branches/jbossws-1.0_Heiko/src/test/resources/samples-override/mtom/WEB-INF/jaxrpc-mapping.xml	2006-08-14 22:09:38 UTC (rev 751)
+++ branches/jbossws-1.0_Heiko/src/test/resources/samples-override/mtom/WEB-INF/jaxrpc-mapping.xml	2006-08-16 08:49:47 UTC (rev 752)
@@ -19,37 +19,6 @@
     <wsdl-binding xmlns:bindingNS="http://org.jboss.ws/samples/mtom">bindingNS:XOPTestBinding</wsdl-binding>
 
     <service-endpoint-method-mapping>
-      <java-method-name>sendMimeImageGIF</java-method-name>
-      <wsdl-operation>sendMimeImageGIF</wsdl-operation>
-      <method-param-parts-mapping>
-        <param-position>0</param-position>
-        <param-type>java.lang.String</param-type>
-        <wsdl-message-mapping>
-          <wsdl-message xmlns:wsdlMsgNS="http://org.jboss.ws/samples/mtom">wsdlMsgNS:XOPTest_sendMimeImageGIF</wsdl-message>
-          <wsdl-message-part-name>message</wsdl-message-part-name>
-          <parameter-mode>IN</parameter-mode>
-        </wsdl-message-mapping>
-      </method-param-parts-mapping>
-
-      <!-- BEGIN manual modification -->
-      <method-param-parts-mapping>
-        <param-position>1</param-position>
-        <param-type>java.awt.Image</param-type>
-        <wsdl-message-mapping>
-          <wsdl-message xmlns:wsdlMsgNS="http://org.jboss.ws/samples/mtom">wsdlMsgNS:XOPTest_sendMimeImageGIF</wsdl-message>
-          <wsdl-message-part-name>xoppart</wsdl-message-part-name>
-          <parameter-mode>IN</parameter-mode>
-        </wsdl-message-mapping>
-      </method-param-parts-mapping>
-      <!-- END manual modification -->
-
-      <wsdl-return-value-mapping>
-        <method-return-value>java.awt.Image</method-return-value>
-        <wsdl-message xmlns:wsdlMsgNS="http://org.jboss.ws/samples/mtom">wsdlMsgNS:XOPTest_sendMimeImageGIFResponse</wsdl-message>
-        <wsdl-message-part-name>result</wsdl-message-part-name>
-      </wsdl-return-value-mapping>
-    </service-endpoint-method-mapping>
-    <service-endpoint-method-mapping>
       <java-method-name>sendMimeImageJPEG</java-method-name>
       <wsdl-operation>sendMimeImageJPEG</wsdl-operation>
       <method-param-parts-mapping>
@@ -65,7 +34,7 @@
       <!-- BEGIN manual modification -->
       <method-param-parts-mapping>
         <param-position>1</param-position>
-        <param-type>java.awt.Image</param-type>
+        <param-type>javax.activation.DataHandler</param-type>
         <wsdl-message-mapping>
           <wsdl-message xmlns:wsdlMsgNS="http://org.jboss.ws/samples/mtom">wsdlMsgNS:XOPTest_sendMimeImageJPEG</wsdl-message>
           <wsdl-message-part-name>xoppart</wsdl-message-part-name>
@@ -75,11 +44,12 @@
       <!-- END manual modification -->
 
       <wsdl-return-value-mapping>
-        <method-return-value>java.awt.Image</method-return-value>
+        <method-return-value>javax.activation.DataHandler</method-return-value>
         <wsdl-message xmlns:wsdlMsgNS="http://org.jboss.ws/samples/mtom">wsdlMsgNS:XOPTest_sendMimeImageJPEGResponse</wsdl-message>
         <wsdl-message-part-name>result</wsdl-message-part-name>
       </wsdl-return-value-mapping>
     </service-endpoint-method-mapping>
+
     <service-endpoint-method-mapping>
       <java-method-name>sendMimeTextPlain</java-method-name>
       <wsdl-operation>sendMimeTextPlain</wsdl-operation>
@@ -111,37 +81,7 @@
         <wsdl-message-part-name>result</wsdl-message-part-name>
       </wsdl-return-value-mapping>
     </service-endpoint-method-mapping>
-    <service-endpoint-method-mapping>
-      <java-method-name>sendMimeMultipart</java-method-name>
-      <wsdl-operation>sendMimeMultipart</wsdl-operation>
-      <method-param-parts-mapping>
-        <param-position>0</param-position>
-        <param-type>java.lang.String</param-type>
-        <wsdl-message-mapping>
-          <wsdl-message xmlns:wsdlMsgNS="http://org.jboss.ws/samples/mtom">wsdlMsgNS:XOPTest_sendMimeMultipart</wsdl-message>
-          <wsdl-message-part-name>message</wsdl-message-part-name>
-          <parameter-mode>IN</parameter-mode>
-        </wsdl-message-mapping>
-      </method-param-parts-mapping>
 
-      <!-- BEGIN manual modification -->
-      <method-param-parts-mapping>
-        <param-position>1</param-position>
-        <param-type>javax.mail.internet.MimeMultipart</param-type>
-        <wsdl-message-mapping>
-          <wsdl-message xmlns:wsdlMsgNS="http://org.jboss.ws/samples/mtom">wsdlMsgNS:XOPTest_sendMimeMultipart</wsdl-message>
-          <wsdl-message-part-name>xoppart</wsdl-message-part-name>
-          <parameter-mode>IN</parameter-mode>
-        </wsdl-message-mapping>
-      </method-param-parts-mapping>
-      <!-- END manual modification -->
-
-      <wsdl-return-value-mapping>
-        <method-return-value>javax.mail.internet.MimeMultipart</method-return-value>
-        <wsdl-message xmlns:wsdlMsgNS="http://org.jboss.ws/samples/mtom">wsdlMsgNS:XOPTest_sendMimeMultipartResponse</wsdl-message>
-        <wsdl-message-part-name>result</wsdl-message-part-name>
-      </wsdl-return-value-mapping>
-    </service-endpoint-method-mapping>
     <service-endpoint-method-mapping>
       <java-method-name>sendMimeTextXML</java-method-name>
       <wsdl-operation>sendMimeTextXML</wsdl-operation>
@@ -158,7 +98,7 @@
       <!-- BEGIN manual modification -->
       <method-param-parts-mapping>
         <param-position>1</param-position>
-        <param-type>javax.xml.transform.Source</param-type>
+        <param-type>javax.activation.DataHandler</param-type>
         <wsdl-message-mapping>
           <wsdl-message xmlns:wsdlMsgNS="http://org.jboss.ws/samples/mtom">wsdlMsgNS:XOPTest_sendMimeTextXML</wsdl-message>
           <wsdl-message-part-name>xoppart</wsdl-message-part-name>
@@ -173,6 +113,7 @@
         <wsdl-message-part-name>result</wsdl-message-part-name>
       </wsdl-return-value-mapping>
     </service-endpoint-method-mapping>
+
     <service-endpoint-method-mapping>
       <java-method-name>sendMimeApplicationXML</java-method-name>
       <wsdl-operation>sendMimeApplicationXML</wsdl-operation>
@@ -199,7 +140,7 @@
       <!-- END manual modification -->
 
       <wsdl-return-value-mapping>
-        <method-return-value>javax.xml.transform.Source</method-return-value>
+        <method-return-value>javax.activation.DataHandler</method-return-value>
         <wsdl-message xmlns:wsdlMsgNS="http://org.jboss.ws/samples/mtom">wsdlMsgNS:XOPTest_sendMimeApplicationXMLResponse</wsdl-message>
         <wsdl-message-part-name>result</wsdl-message-part-name>
       </wsdl-return-value-mapping>

Modified: branches/jbossws-1.0_Heiko/src/test/resources/samples-override/mtom/WEB-INF/wsdl/TestService.wsdl
===================================================================
--- branches/jbossws-1.0_Heiko/src/test/resources/samples-override/mtom/WEB-INF/wsdl/TestService.wsdl	2006-08-14 22:09:38 UTC (rev 751)
+++ branches/jbossws-1.0_Heiko/src/test/resources/samples-override/mtom/WEB-INF/wsdl/TestService.wsdl	2006-08-16 08:49:47 UTC (rev 752)
@@ -13,10 +13,8 @@
 
          <import schemaLocation="http://www.w3.org/2005/05/xmlmime" namespace="http://www.w3.org/2005/05/xmlmime"/>
 
-         <element name="imagegif" xmime:contentType="image/gif" type="xmime:base64Binary"/>
          <element name="imagejpeg" xmime:contentType="image/jpeg" type="xmime:base64Binary"/>
          <element name="textplain" xmime:contentType="text/plain" type="xmime:base64Binary"/>
-         <element name="multipart" xmime:contentType="multipart/*" type="xmime:base64Binary"/>
          <element name="textxml" xmime:contentType="text/xml" type="xmime:base64Binary"/>
          <element name="applxml" xmime:contentType="application/xml" type="xmime:base64Binary"/>
          <element name="octets" xmime:contentType="application/octet-stream" type="xmime:base64Binary"/>
@@ -31,14 +29,6 @@
       </schema>
    </types>
 
-   <message name="XOPTest_sendMimeImageGIF">
-      <part name="message" type="xsd:string"/>
-      <part name="xoppart" element="tns:imagegif"/>
-   </message>
-   <message name="XOPTest_sendMimeImageGIFResponse">
-      <part name="result" element="tns:imagegif"/>
-   </message>
-
    <message name="XOPTest_sendMimeImageJPEG">
       <part name="message" type="xsd:string"/>
       <part name="xoppart" element="tns:imagejpeg"/>
@@ -53,13 +43,6 @@
    <message name="XOPTest_sendMimeTextPlainResponse">
       <part name="result" element="tns:textplain"/>
    </message>
-   <message name="XOPTest_sendMimeMultipart">
-      <part name="message" type="xsd:string"/>
-      <part name="xoppart" element="tns:multipart"/>
-   </message>
-   <message name="XOPTest_sendMimeMultipartResponse">
-      <part name="result" element="tns:multipart"/>
-   </message>
    <message name="XOPTest_sendMimeTextXML">
       <part name="message" type="xsd:string"/>
       <part name="xoppart" element="tns:textxml"/>
@@ -84,10 +67,6 @@
    </message>
 
    <portType name="XOPTest">
-      <operation name="sendMimeImageGIF">
-         <input message="tns:XOPTest_sendMimeImageGIF"/>
-         <output message="tns:XOPTest_sendMimeImageGIFResponse"/>
-      </operation>
       <operation name="sendMimeImageJPEG">
          <input message="tns:XOPTest_sendMimeImageJPEG"/>
          <output message="tns:XOPTest_sendMimeImageJPEGResponse"/>
@@ -96,10 +75,6 @@
          <input message="tns:XOPTest_sendMimeTextPlain"/>
          <output message="tns:XOPTest_sendMimeTextPlainResponse"/>
       </operation>
-      <operation name="sendMimeMultipart">
-         <input message="tns:XOPTest_sendMimeMultipart"/>
-         <output message="tns:XOPTest_sendMimeMultipartResponse"/>
-      </operation>
       <operation name="sendMimeTextXML">
          <input message="tns:XOPTest_sendMimeTextXML"/>
          <output message="tns:XOPTest_sendMimeTextXMLResponse"/>
@@ -117,15 +92,6 @@
 
    <binding name="XOPTestBinding" type="tns:XOPTest">
       <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="rpc"/>
-      <operation name="sendMimeImageGIF">
-         <soap:operation soapAction=""/>
-         <input>
-            <soap:body use="literal" namespace="http://org.jboss.ws/samples/mtom"/>
-         </input>
-         <output>
-            <soap:body use="literal" namespace="http://org.jboss.ws/samples/mtom"/>
-         </output>
-      </operation>
       <operation name="sendMimeImageJPEG">
          <soap:operation soapAction=""/>
          <input>
@@ -143,16 +109,7 @@
          <output>
             <soap:body use="literal" namespace="http://org.jboss.ws/samples/mtom"/>
          </output>
-      </operation>
-      <operation name="sendMimeMultipart">
-         <soap:operation soapAction=""/>
-         <input>
-            <soap:body use="literal" namespace="http://org.jboss.ws/samples/mtom"/>
-         </input>
-         <output>
-            <soap:body use="literal" namespace="http://org.jboss.ws/samples/mtom"/>
-         </output>
-      </operation>
+      </operation>     
       <operation name="sendMimeTextXML">
          <soap:operation soapAction=""/>
          <input>

Modified: branches/jbossws-1.0_Heiko/src/test/resources/xop/doclit/WEB-INF/jaxrpc-mapping.xml
===================================================================
--- branches/jbossws-1.0_Heiko/src/test/resources/xop/doclit/WEB-INF/jaxrpc-mapping.xml	2006-08-14 22:09:38 UTC (rev 751)
+++ branches/jbossws-1.0_Heiko/src/test/resources/xop/doclit/WEB-INF/jaxrpc-mapping.xml	2006-08-16 08:49:47 UTC (rev 752)
@@ -3,12 +3,7 @@
       <package-type>org.jboss.test.ws.xop.doclit</package-type>
       <namespaceURI>http://jboss.org/test/ws/xop/doclit</namespaceURI>
    </package-mapping>
-
-   <!--java-xml-type-mapping>
-      <java-type>org.jboss.test.ws.xop.doclit.PingMsg</java-type>
-      <root-type-qname xmlns:typeNS='http://jboss.org/test/ws/xop/doclit'>typeNS:PingMsg</root-type-qname>
-      <qname-scope>element</qname-scope>
-   </java-xml-type-mapping-->
+   
    <java-xml-type-mapping>
       <java-type>org.jboss.test.ws.xop.doclit.PingMsg</java-type>
       <anonymous-type-qname xmlns:typeNS='http://jboss.org/test/ws/xop/doclit'>typeNS:&gt;PingMsg</anonymous-type-qname>
@@ -18,23 +13,18 @@
          <xml-element-name>message</xml-element-name>
       </variable-mapping>
       <variable-mapping>
-         <java-variable-name>imagejpeg</java-variable-name>
-         <xml-element-name>imagejpeg</xml-element-name>
+         <java-variable-name>xopContent</java-variable-name>
+         <xml-element-name>xopContent</xml-element-name>
       </variable-mapping>
    </java-xml-type-mapping>
 
-   <!--java-xml-type-mapping>
-      <java-type>org.jboss.test.ws.xop.doclit.PingMsgResponse</java-type>
-      <root-type-qname xmlns:typeNS='http://jboss.org/test/ws/xop/doclit'>typeNS:PingMsgResponse</root-type-qname>
-      <qname-scope>element</qname-scope>
-   </java-xml-type-mapping-->
    <java-xml-type-mapping>
       <java-type>org.jboss.test.ws.xop.doclit.PingMsgResponse</java-type>
       <anonymous-type-qname xmlns:typeNS='http://jboss.org/test/ws/xop/doclit'>typeNS:&gt;PingMsgResponse</anonymous-type-qname>
       <qname-scope>complexType</qname-scope>
       <variable-mapping>
-         <java-variable-name>imagejpeg</java-variable-name>
-         <xml-element-name>imagejpeg</xml-element-name>
+         <java-variable-name>xopContent</java-variable-name>
+         <xml-element-name>xopContent</xml-element-name>
       </variable-mapping>
    </java-xml-type-mapping>
 

Modified: branches/jbossws-1.0_Heiko/src/test/resources/xop/doclit/WEB-INF/wsdl/TestService.wsdl
===================================================================
--- branches/jbossws-1.0_Heiko/src/test/resources/xop/doclit/WEB-INF/wsdl/TestService.wsdl	2006-08-14 22:09:38 UTC (rev 751)
+++ branches/jbossws-1.0_Heiko/src/test/resources/xop/doclit/WEB-INF/wsdl/TestService.wsdl	2006-08-16 08:49:47 UTC (rev 752)
@@ -20,14 +20,14 @@
             <s:complexType>
                <s:sequence>
                   <s:element name="message" minOccurs="0" maxOccurs="1" type="s:string" />
-                  <s:element name="imagejpeg" xmime:expectedContentTypes="image/jpeg" type="xmime:base64Binary"/>
+                  <s:element name="xopContent" xmime:expectedContentTypes="text/plain" type="xmime:base64Binary"/>
                </s:sequence>
             </s:complexType>
          </s:element>
          <s:element name="PingMsgResponse">
             <s:complexType>
                <s:sequence>
-                  <s:element name="imagejpeg" xmime:expectedContentTypes="image/jpeg" type="xmime:base64Binary"/>
+                  <s:element name="xopContent" xmime:expectedContentTypes="text/plain" type="xmime:base64Binary"/>
                </s:sequence>
             </s:complexType>
          </s:element>




More information about the jboss-svn-commits mailing list