[jboss-svn-commits] JBossWS SVN: r1045 - in branches/hbraun/jbossws-1.0/src: main/java/org/jboss/ws/soap main/java/org/jboss/ws/xop test/java/org/jboss/test/ws/jaxrpc/xop/doclit test/java/org/jboss/test/ws/jaxrpc/xop/rpclit test/java/org/jboss/test/ws/jaxrpc/xop/shared test/resources/jaxrpc/xop/doclit/handlerconfig/META-INF test/resources/jaxrpc/xop/doclit/handlerconfig/WEB-INF test/resources/jaxrpc/xop/rpclit/WEB-INF/wsdl test/resources/jaxrpc/xop/rpclit/handlerconfig/META-INF test/resources/jaxrpc/xop/rpclit/handlerconfig/WEB-INF

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Sep 25 15:23:14 EDT 2006


Author: heiko.braun at jboss.com
Date: 2006-09-25 15:22:53 -0400 (Mon, 25 Sep 2006)
New Revision: 1045

Added:
   branches/hbraun/jbossws-1.0/src/test/java/org/jboss/test/ws/jaxrpc/xop/doclit/InlineHandler.java
   branches/hbraun/jbossws-1.0/src/test/java/org/jboss/test/ws/jaxrpc/xop/rpclit/InlineHandler.java
   branches/hbraun/jbossws-1.0/src/test/java/org/jboss/test/ws/jaxrpc/xop/shared/MTOMServiceBase.java
Removed:
   branches/hbraun/jbossws-1.0/src/test/java/org/jboss/test/ws/jaxrpc/xop/shared/InlineHandler.java
Modified:
   branches/hbraun/jbossws-1.0/src/main/java/org/jboss/ws/soap/SOAPContentElement.java
   branches/hbraun/jbossws-1.0/src/main/java/org/jboss/ws/xop/XOPContext.java
   branches/hbraun/jbossws-1.0/src/test/java/org/jboss/test/ws/jaxrpc/xop/doclit/TestServiceImpl.java
   branches/hbraun/jbossws-1.0/src/test/java/org/jboss/test/ws/jaxrpc/xop/doclit/XOPHandlerTestCase.java
   branches/hbraun/jbossws-1.0/src/test/java/org/jboss/test/ws/jaxrpc/xop/doclit/XOPTestCase.java
   branches/hbraun/jbossws-1.0/src/test/java/org/jboss/test/ws/jaxrpc/xop/rpclit/TestServiceImpl.java
   branches/hbraun/jbossws-1.0/src/test/java/org/jboss/test/ws/jaxrpc/xop/rpclit/XOPBase.java
   branches/hbraun/jbossws-1.0/src/test/resources/jaxrpc/xop/doclit/handlerconfig/META-INF/application-client.xml
   branches/hbraun/jbossws-1.0/src/test/resources/jaxrpc/xop/doclit/handlerconfig/WEB-INF/webservices.xml
   branches/hbraun/jbossws-1.0/src/test/resources/jaxrpc/xop/rpclit/WEB-INF/wsdl/TestService.wsdl
   branches/hbraun/jbossws-1.0/src/test/resources/jaxrpc/xop/rpclit/handlerconfig/META-INF/application-client.xml
   branches/hbraun/jbossws-1.0/src/test/resources/jaxrpc/xop/rpclit/handlerconfig/WEB-INF/webservices.xml
Log:
correct state transitions removed unmarshalling errors

Modified: branches/hbraun/jbossws-1.0/src/main/java/org/jboss/ws/soap/SOAPContentElement.java
===================================================================
--- branches/hbraun/jbossws-1.0/src/main/java/org/jboss/ws/soap/SOAPContentElement.java	2006-09-25 18:29:54 UTC (rev 1044)
+++ branches/hbraun/jbossws-1.0/src/main/java/org/jboss/ws/soap/SOAPContentElement.java	2006-09-25 19:22:53 UTC (rev 1045)
@@ -23,22 +23,7 @@
 
 // $Id$
 
-import java.io.IOException;
-import java.io.Writer;
-import java.io.ByteArrayOutputStream;
-import java.lang.reflect.Array;
-import java.lang.reflect.Method;
-import java.util.Iterator;
-
-import javax.activation.DataHandler;
-import javax.xml.namespace.QName;
-import javax.xml.soap.Name;
-import javax.xml.soap.SOAPElement;
-import javax.xml.soap.SOAPException;
-
 import org.jboss.logging.Logger;
-import org.jboss.ws.utils.DOMUtils;
-import org.jboss.ws.utils.DOMWriter;
 import org.jboss.ws.Constants;
 import org.jboss.ws.WSException;
 import org.jboss.ws.binding.BindingException;
@@ -52,17 +37,23 @@
 import org.jboss.ws.jaxrpc.encoding.SerializerFactoryBase;
 import org.jboss.ws.metadata.ParameterMetaData;
 import org.jboss.ws.metadata.UnifiedMetaData;
+import org.jboss.ws.utils.DOMUtils;
+import org.jboss.ws.utils.DOMWriter;
 import org.jboss.ws.utils.JavaUtils;
-import org.jboss.ws.utils.MimeUtils;
 import org.jboss.ws.xop.XOPContext;
-import org.w3c.dom.Attr;
-import org.w3c.dom.DOMException;
-import org.w3c.dom.Element;
-import org.w3c.dom.NamedNodeMap;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-import org.w3c.dom.TypeInfo;
+import org.w3c.dom.*;
 
+import javax.activation.DataHandler;
+import javax.xml.namespace.QName;
+import javax.xml.soap.Name;
+import javax.xml.soap.SOAPElement;
+import javax.xml.soap.SOAPException;
+import java.io.IOException;
+import java.io.Writer;
+import java.lang.reflect.Array;
+import java.lang.reflect.Method;
+import java.util.Iterator;
+
 /**
  * A SOAPElement that gives access to its content as XML fragment or Java object.
  *
@@ -1018,6 +1009,7 @@
          throw new WSException(ex);
       }
    }*/
+
    public void writeElement(Writer writer) {
       try
       {
@@ -1043,9 +1035,9 @@
     * 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 MTOM is disabled through a message context property,
+    * then we always enforce the inlined 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.
@@ -1062,7 +1054,7 @@
          // and remove the attachment part when transitioning.
          // See SOAPFactoryImpl for details.
 
-         log.debug("Force dom-valid state, MTOM disabled");
+         log.debug("MTOM disabled: Enforce dom-valid state");
          CommonMessageContext msgContext = MessageContextAssociation.peekMessageContext();
          msgContext.setProperty(CommonMessageContext.ALLOW_EXPAND_TO_DOM, Boolean.TRUE);
          expandToDOM();
@@ -1070,10 +1062,10 @@
       else if(isDOMValid && mtomEnabled )
       {
          // When the DOM representation is valid,
-         // but MTOM is enabled we need to convert the 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("Restore XOP data, MTOM enabled");
+         log.debug("MTOM enabled: Restore XOP data");
          XOPContext.restoreXOPData(this);
       }
    }

Modified: branches/hbraun/jbossws-1.0/src/main/java/org/jboss/ws/xop/XOPContext.java
===================================================================
--- branches/hbraun/jbossws-1.0/src/main/java/org/jboss/ws/xop/XOPContext.java	2006-09-25 18:29:54 UTC (rev 1044)
+++ branches/hbraun/jbossws-1.0/src/main/java/org/jboss/ws/xop/XOPContext.java	2006-09-25 19:22:53 UTC (rev 1045)
@@ -117,6 +117,12 @@
       return Boolean.TRUE.equals(mtomEnabled) || mtomEnabled == null;
    }
 
+   public static void setMTOMEnabled(boolean b)
+   {
+      CommonMessageContext msgContext = MessageContextAssociation.peekMessageContext();
+      msgContext.setProperty(StubExt.PROPERTY_MTOM_ENABLED, Boolean.valueOf(b));
+   }
+
    /**
     * Replace all <code>xop:Include</code> elements with it's base64 representation.
     * This happens when the associated SOAPContentElement transitions to state dom-valid.<br>
@@ -154,6 +160,19 @@
    }
 
    /**
+    * When handlers jump in, the SOAPMessage flag that indicates
+    * a xop encoded message (derived from wire format) becomes stale.
+    *
+    * @param isXOPMessage
+    */
+   private static void setXOPMessage(boolean isXOPMessage)
+   {
+      CommonMessageContext msgContext = MessageContextAssociation.peekMessageContext();
+      SOAPMessageImpl soapMsg = (SOAPMessageImpl)msgContext.getSOAPMessage();
+      soapMsg.setXOPMessage(isXOPMessage);
+   }
+
+   /**
     * Restore previously inlined XOP elements.
     * All base64 representations will be replaced by <code>xop:Include</code>
     * elements and the attachment parts will be recreated. <br>
@@ -203,7 +222,7 @@
       {
          SOAPElement xopInclude = xopElement.addChildElement(Constants.NAME_XOP_INCLUDE);
          xopInclude.setAttribute("href", cid);
-         log.debug("Restored xop:Include element on {" + xopElement.getNamespaceURI()+"}"+xopElement.getLocalName());
+         log.debug("Restored xop:Include element on [xmlName="+xopElement.getLocalName()+"]");
       }
       catch (SOAPException e)
       {
@@ -215,7 +234,7 @@
    private static void replaceXOPInclude(SOAPElement parent, SOAPElement xopIncludeElement)
    {
 
-      log.trace("Replace xop:Include on element [xmlName=" + parent.getLocalName() +"]");
+      log.debug("Replace xop:Include on element [xmlName=" + parent.getLocalName() +"]");
 
       String cid = xopIncludeElement.getAttribute("href");
       byte[] data;
@@ -244,10 +263,10 @@
       parent.setValue(base64);
       parent.setAttributeNS(NS_XOP_JBOSSWS, "content-type", contentType);
 
-      log.trace("Created base64 representation for content-type " + contentType);
+      log.debug("Created base64 representation for content-type " + contentType);
 
       // cleanup the attachment part
-      CommonMessageContext msgContext = (CommonMessageContext)MessageContextAssociation.peekMessageContext();
+      CommonMessageContext msgContext = MessageContextAssociation.peekMessageContext();
       SOAPMessageImpl soapMessage = (SOAPMessageImpl)msgContext.getSOAPMessage();
 
       if(cid.startsWith("cid:")) cid = cid.substring(4);
@@ -257,8 +276,13 @@
       if(null == removedPart)
          throw new WSException("Unable to remove attachment part " + cid);
 
-      log.trace("Removed attachment part " + cid);
+      log.debug("Removed attachment part " + cid);
 
+      // leave soap object model in a valid state
+      setXOPMessage(false);
+
+      log.warn("Further MTOM processing disabled. The XOP encoding will not be restored.");
+      setMTOMEnabled(false);
    }
 
    /**

Added: branches/hbraun/jbossws-1.0/src/test/java/org/jboss/test/ws/jaxrpc/xop/doclit/InlineHandler.java
===================================================================
--- branches/hbraun/jbossws-1.0/src/test/java/org/jboss/test/ws/jaxrpc/xop/doclit/InlineHandler.java	2006-09-25 18:29:54 UTC (rev 1044)
+++ branches/hbraun/jbossws-1.0/src/test/java/org/jboss/test/ws/jaxrpc/xop/doclit/InlineHandler.java	2006-09-25 19:22:53 UTC (rev 1045)
@@ -0,0 +1,86 @@
+/*
+* 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.jaxrpc.xop.doclit;
+
+import org.jboss.logging.Logger;
+import org.jboss.ws.soap.NameImpl;
+
+import javax.xml.rpc.handler.GenericHandler;
+import javax.xml.rpc.handler.HandlerInfo;
+import javax.xml.rpc.handler.MessageContext;
+import javax.xml.rpc.handler.soap.SOAPMessageContext;
+import javax.xml.namespace.QName;
+import javax.xml.soap.SOAPMessage;
+import javax.xml.soap.SOAPBody;
+import javax.xml.soap.SOAPElement;
+
+/**
+ * @author Heiko Braun <heiko.braun at jboss.com>
+ * @version $Id$
+ * @since Sep 25, 2006
+ */
+public class InlineHandler extends GenericHandler
+{
+   HandlerInfo config;
+
+   private static Logger log = Logger.getLogger(InlineHandler.class);
+
+   public QName[] getHeaders()
+   {
+      return new QName[0];
+   }
+
+   public void init(HandlerInfo config) {
+      this.config = config;
+   }
+
+   public boolean handleRequest(MessageContext messageContext)
+   {
+      dumpMessage(messageContext);
+      return true;
+   }
+
+   public boolean handleResponse(MessageContext messageContext)
+   {
+      dumpMessage(messageContext);
+      return true;
+   }
+
+   private void dumpMessage(MessageContext messageContext)
+   {
+      try
+      {
+         SOAPMessage soapMessage = ((SOAPMessageContext)messageContext).getMessage();
+         SOAPBody soapBody = soapMessage.getSOAPBody();
+
+         SOAPElement bodyElement = (SOAPElement)soapBody.getChildElements().next();
+         SOAPElement xopElement = (SOAPElement)bodyElement.getChildElements(new NameImpl("xopContent")).next();
+         String base64Value = xopElement.getValue();
+         log.debug("base64Value: " + base64Value);
+         messageContext.setProperty("xop.inline.value", base64Value);
+      }
+      catch (Exception e)
+      {
+         log.error("Failed to access inline XOP values", e);
+      }
+   }
+}


Property changes on: branches/hbraun/jbossws-1.0/src/test/java/org/jboss/test/ws/jaxrpc/xop/doclit/InlineHandler.java
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + LF

Modified: branches/hbraun/jbossws-1.0/src/test/java/org/jboss/test/ws/jaxrpc/xop/doclit/TestServiceImpl.java
===================================================================
--- branches/hbraun/jbossws-1.0/src/test/java/org/jboss/test/ws/jaxrpc/xop/doclit/TestServiceImpl.java	2006-09-25 18:29:54 UTC (rev 1044)
+++ branches/hbraun/jbossws-1.0/src/test/java/org/jboss/test/ws/jaxrpc/xop/doclit/TestServiceImpl.java	2006-09-25 19:22:53 UTC (rev 1045)
@@ -5,29 +5,25 @@
 import org.jboss.ws.jaxrpc.StubExt;
 import org.jboss.test.ws.jaxrpc.xop.shared.PingMsg;
 import org.jboss.test.ws.jaxrpc.xop.shared.PingMsgResponse;
+import org.jboss.test.ws.jaxrpc.xop.shared.MTOMServiceBase;
 
 import java.rmi.RemoteException;
 import java.util.StringTokenizer;
 
 /**
+ * MTOM test service impl.
+ * The 'message' param value determines wether or not the response
+ * should be XOP encoded or not.
+ *
  * @author Heiko Braun, <heiko at openj.net>
  * @since 11-Apr-2006
  */
-public class TestServiceImpl implements TestService_PortType {
+public class TestServiceImpl extends MTOMServiceBase implements TestService_PortType {
 
    public PingMsgResponse ping(PingMsg pingMsg) throws RemoteException {
 
-      StringTokenizer tok = new StringTokenizer(pingMsg.getMessage(), "|");
-      String requestOptimized = tok.nextToken();
-      String responseOptimized = tok.nextToken();
-      System.out.println(requestOptimized+"|"+responseOptimized);
-
-      if(responseOptimized.equals("0"))
-      {
-         CommonMessageContext ctx = MessageContextAssociation.peekMessageContext();
-         ctx.setProperty(StubExt.PROPERTY_MTOM_ENABLED, Boolean.FALSE);
-      }
-
+      toggleXOP(pingMsg.getMessage());
       return new PingMsgResponse(pingMsg.getXopContent());
+      
    }
 }

Modified: branches/hbraun/jbossws-1.0/src/test/java/org/jboss/test/ws/jaxrpc/xop/doclit/XOPHandlerTestCase.java
===================================================================
--- branches/hbraun/jbossws-1.0/src/test/java/org/jboss/test/ws/jaxrpc/xop/doclit/XOPHandlerTestCase.java	2006-09-25 18:29:54 UTC (rev 1044)
+++ branches/hbraun/jbossws-1.0/src/test/java/org/jboss/test/ws/jaxrpc/xop/doclit/XOPHandlerTestCase.java	2006-09-25 19:22:53 UTC (rev 1045)
@@ -37,6 +37,10 @@
 import java.io.File;
 
 /**
+ * Test MTOM functionality with jaxrpc-handlers in place.<br>
+ * This basically determines wether XB needs to handle base64 values directly
+ * or uses callbacks to XOPMarshaller/Unmarshaller.
+ *
  * @author Heiko Braun <heiko.braun at jboss.com>
  * @version $Id$
  * @since Sep 22, 2006

Modified: branches/hbraun/jbossws-1.0/src/test/java/org/jboss/test/ws/jaxrpc/xop/doclit/XOPTestCase.java
===================================================================
--- branches/hbraun/jbossws-1.0/src/test/java/org/jboss/test/ws/jaxrpc/xop/doclit/XOPTestCase.java	2006-09-25 18:29:54 UTC (rev 1044)
+++ branches/hbraun/jbossws-1.0/src/test/java/org/jboss/test/ws/jaxrpc/xop/doclit/XOPTestCase.java	2006-09-25 19:22:53 UTC (rev 1045)
@@ -39,9 +39,10 @@
 import java.io.File;
 
 /**
+ * Test MTOM functionaly without any jaxrpc handlers in place.
  *
  * @author Heiko.Braun at jboss.org
- * @since 11-Nov-2005
+ * @since Sep 22, 2006
  */
 public class XOPTestCase extends XOPBase {
 

Copied: branches/hbraun/jbossws-1.0/src/test/java/org/jboss/test/ws/jaxrpc/xop/rpclit/InlineHandler.java (from rev 1033, branches/hbraun/jbossws-1.0/src/test/java/org/jboss/test/ws/jaxrpc/xop/shared/InlineHandler.java)
===================================================================
--- branches/hbraun/jbossws-1.0/src/test/java/org/jboss/test/ws/jaxrpc/xop/shared/InlineHandler.java	2006-09-25 14:23:01 UTC (rev 1033)
+++ branches/hbraun/jbossws-1.0/src/test/java/org/jboss/test/ws/jaxrpc/xop/rpclit/InlineHandler.java	2006-09-25 19:22:53 UTC (rev 1045)
@@ -0,0 +1,65 @@
+package org.jboss.test.ws.jaxrpc.xop.rpclit;
+
+import javax.xml.namespace.QName;
+import javax.xml.rpc.handler.GenericHandler;
+import javax.xml.rpc.handler.MessageContext;
+import javax.xml.rpc.handler.HandlerInfo;
+import javax.xml.rpc.handler.soap.SOAPMessageContext;
+import javax.xml.soap.SOAPBody;
+import javax.xml.soap.SOAPElement;
+import javax.xml.soap.SOAPMessage;
+
+import org.jboss.logging.Logger;
+import org.jboss.ws.soap.NameImpl;
+
+/**
+ * @author Heiko Braun <heiko.braun at jboss.com>
+ * @since Jun 16, 2006
+ */
+public class InlineHandler extends GenericHandler
+{
+   HandlerInfo config;
+
+   private static Logger log = Logger.getLogger(InlineHandler.class);
+
+   public QName[] getHeaders()
+   {
+      return new QName[0];
+   }
+
+   public void init(HandlerInfo config) {
+      this.config = config;
+   }
+
+   public boolean handleRequest(MessageContext messageContext)
+   {
+      dumpMessage(messageContext, "parameters");
+      return true;
+   }
+
+   public boolean handleResponse(MessageContext messageContext)
+   {
+      dumpMessage(messageContext, "result");
+      return true;
+   }
+
+   private void dumpMessage(MessageContext messageContext, String parentName)
+   {
+      try
+      {
+         SOAPMessage soapMessage = ((SOAPMessageContext)messageContext).getMessage();
+         SOAPBody soapBody = soapMessage.getSOAPBody();
+
+         SOAPElement bodyElement = (SOAPElement)soapBody.getChildElements().next();
+         SOAPElement wrapper = (SOAPElement)bodyElement.getChildElements(new NameImpl(parentName)).next();
+         SOAPElement xopElement = (SOAPElement)wrapper.getChildElements(new NameImpl("xopContent")).next();
+         String base64Value = xopElement.getValue();
+         log.debug("base64Value: " + base64Value);
+         messageContext.setProperty("xop.inline.value", base64Value);
+      }
+      catch (Exception e)
+      {
+         log.error("Failed to access inline XOP values", e);
+      }
+   }
+}


Property changes on: branches/hbraun/jbossws-1.0/src/test/java/org/jboss/test/ws/jaxrpc/xop/rpclit/InlineHandler.java
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + LF

Modified: branches/hbraun/jbossws-1.0/src/test/java/org/jboss/test/ws/jaxrpc/xop/rpclit/TestServiceImpl.java
===================================================================
--- branches/hbraun/jbossws-1.0/src/test/java/org/jboss/test/ws/jaxrpc/xop/rpclit/TestServiceImpl.java	2006-09-25 18:29:54 UTC (rev 1044)
+++ branches/hbraun/jbossws-1.0/src/test/java/org/jboss/test/ws/jaxrpc/xop/rpclit/TestServiceImpl.java	2006-09-25 19:22:53 UTC (rev 1045)
@@ -5,6 +5,7 @@
 import org.jboss.ws.jaxrpc.StubExt;
 import org.jboss.test.ws.jaxrpc.xop.shared.PingMsg;
 import org.jboss.test.ws.jaxrpc.xop.shared.PingMsgResponse;
+import org.jboss.test.ws.jaxrpc.xop.shared.MTOMServiceBase;
 
 import java.rmi.RemoteException;
 import java.util.StringTokenizer;
@@ -13,7 +14,7 @@
  * @author Heiko Braun, <heiko at openj.net>
  * @since 11-Apr-2006
  */
-public class TestServiceImpl implements TestService_PortType {
+public class TestServiceImpl extends MTOMServiceBase implements TestService_PortType {
 
    public PingMsgResponse pingComplex(PingMsg pingMsg) throws RemoteException {
 
@@ -28,17 +29,4 @@
       return xopContent;
    }
 
-   private void toggleXOP(String message) {
-      StringTokenizer tok = new StringTokenizer(message, "|");
-      String requestOptimized = tok.nextToken();
-      String responseOptimized = tok.nextToken();
-      System.out.println(requestOptimized+"|"+responseOptimized);
-
-      if(responseOptimized.equals("0"))
-      {
-         CommonMessageContext ctx = MessageContextAssociation.peekMessageContext();
-         ctx.setProperty(StubExt.PROPERTY_MTOM_ENABLED, Boolean.FALSE);
-      }
-   }
-
 }

Modified: branches/hbraun/jbossws-1.0/src/test/java/org/jboss/test/ws/jaxrpc/xop/rpclit/XOPBase.java
===================================================================
--- branches/hbraun/jbossws-1.0/src/test/java/org/jboss/test/ws/jaxrpc/xop/rpclit/XOPBase.java	2006-09-25 18:29:54 UTC (rev 1044)
+++ branches/hbraun/jbossws-1.0/src/test/java/org/jboss/test/ws/jaxrpc/xop/rpclit/XOPBase.java	2006-09-25 19:22:53 UTC (rev 1045)
@@ -31,6 +31,7 @@
 import javax.activation.DataHandler;
 import javax.xml.rpc.Stub;
 import java.io.File;
+import java.util.StringTokenizer;
 
 /**
  * @author Heiko Braun <heiko.braun at jboss.com>
@@ -45,39 +46,34 @@
 
       DataHandler dh = new DataHandler("Another plain text attachment", "text/plain");
       byte[] bytesIn = IOUtils.convertToBytes(dh);
+      requestComplex(new PingMsg("1|1", bytesIn));
 
-      PingMsgResponse value = port.pingComplex(new PingMsg("1|1", bytesIn));
-      assertNotNull("Return value was null", value);
-      byte[] bytesOut = value.getXopContent();
-      assertNotNull("Returned xopContent was null", bytesOut);
-      assertEquals("Content length doesn't match", bytesIn.length, bytesOut.length);
    }
 
    public void testResponseOptimized() throws Exception {
 
       byte[] bytesIn = XOPTestSupport.getBytesFromFile(new File("resources/jaxrpc/samples/mtom/attach.jpeg"));
+      requestComplex(new PingMsg("0|1", bytesIn));
 
-      // disable MTOM
-      ((Stub)port)._setProperty(StubExt.PROPERTY_MTOM_ENABLED, Boolean.FALSE);
-
-      PingMsgResponse value = port.pingComplex(new PingMsg("0|1", bytesIn));
-      assertNotNull("Return value was null",value);
-      byte[] bytesOut = value.getXopContent();
-      assertNotNull("Return xopContent was null", bytesOut);
-      assertEquals("Content length doesn't match", bytesIn.length, bytesOut.length);
    }
 
    public void testRequestOptimized() throws Exception {
 
       byte[] bytesIn = XOPTestSupport.getBytesFromFile(new File("resources/jaxrpc/samples/mtom/attach.jpeg"));
+      requestComplex(new PingMsg("1|0", bytesIn));
 
-      // reusing the stub means cleaning the previous state
-      ((Stub)port)._setProperty(StubExt.PROPERTY_MTOM_ENABLED, Boolean.TRUE);
+   }
 
-      PingMsgResponse value = port.pingComplex(new PingMsg("1|0", bytesIn));
+   private void requestComplex(PingMsg payload) throws Exception
+   {
+      StringTokenizer tok =new StringTokenizer(payload.getMessage(), "|");
+      boolean mtomEnabled = tok.nextToken().equals("1");
+      ((Stub)port)._setProperty(StubExt.PROPERTY_MTOM_ENABLED, Boolean.valueOf(mtomEnabled));
+
+      PingMsgResponse value = port.pingComplex(payload);
       assertNotNull("Return value was null",value);
       byte[] bytesOut = value.getXopContent();
       assertNotNull("Return xopContent was null", bytesOut);
-      assertEquals("Content length doesn't match", bytesIn.length, bytesOut.length);
+      assertEquals("Content length doesn't match", payload.getXopContent().length, bytesOut.length);
    }
 }

Deleted: branches/hbraun/jbossws-1.0/src/test/java/org/jboss/test/ws/jaxrpc/xop/shared/InlineHandler.java
===================================================================
--- branches/hbraun/jbossws-1.0/src/test/java/org/jboss/test/ws/jaxrpc/xop/shared/InlineHandler.java	2006-09-25 18:29:54 UTC (rev 1044)
+++ branches/hbraun/jbossws-1.0/src/test/java/org/jboss/test/ws/jaxrpc/xop/shared/InlineHandler.java	2006-09-25 19:22:53 UTC (rev 1045)
@@ -1,58 +0,0 @@
-package org.jboss.test.ws.jaxrpc.xop.shared;
-
-import javax.xml.namespace.QName;
-import javax.xml.rpc.handler.GenericHandler;
-import javax.xml.rpc.handler.MessageContext;
-import javax.xml.rpc.handler.soap.SOAPMessageContext;
-import javax.xml.soap.SOAPBody;
-import javax.xml.soap.SOAPElement;
-import javax.xml.soap.SOAPMessage;
-
-import org.jboss.logging.Logger;
-import org.jboss.ws.soap.NameImpl;
-
-/**
- * @author Heiko Braun <heiko.braun at jboss.com>
- * @since Jun 16, 2006
- */
-public class InlineHandler extends GenericHandler
-{
-
-   private static Logger log = Logger.getLogger(InlineHandler.class);
-
-   public QName[] getHeaders()
-   {
-      return new QName[0];
-   }
-
-   public boolean handleRequest(MessageContext messageContext)
-   {
-      dumpMessage(messageContext);
-      return true;
-   }
-
-   public boolean handleResponse(MessageContext messageContext)
-   {
-      dumpMessage(messageContext);
-      return true;
-   }
-
-   private void dumpMessage(MessageContext messageContext)
-   {
-      try
-      {
-         SOAPMessage soapMessage = ((SOAPMessageContext)messageContext).getMessage();
-         SOAPBody soapBody = soapMessage.getSOAPBody();
-
-         SOAPElement bodyElement = (SOAPElement)soapBody.getChildElements().next();
-         SOAPElement xopElement = (SOAPElement)bodyElement.getChildElements(new NameImpl("xopContent")).next();
-         String base64Value = xopElement.getValue();
-         log.debug("base64Value: " + base64Value);
-         messageContext.setProperty("xop.inline.value", base64Value);
-      }
-      catch (Exception e)
-      {
-         log.error(e);
-      }
-   }
-}

Added: branches/hbraun/jbossws-1.0/src/test/java/org/jboss/test/ws/jaxrpc/xop/shared/MTOMServiceBase.java
===================================================================
--- branches/hbraun/jbossws-1.0/src/test/java/org/jboss/test/ws/jaxrpc/xop/shared/MTOMServiceBase.java	2006-09-25 18:29:54 UTC (rev 1044)
+++ branches/hbraun/jbossws-1.0/src/test/java/org/jboss/test/ws/jaxrpc/xop/shared/MTOMServiceBase.java	2006-09-25 19:22:53 UTC (rev 1045)
@@ -0,0 +1,48 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2005, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* This is free software; you can redistribute it and/or modify it
+* under the terms of the GNU Lesser General Public License as
+* published by the Free Software Foundation; either version 2.1 of
+* the License, or (at your option) any later version.
+*
+* This software is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+* Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this software; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+*/
+package org.jboss.test.ws.jaxrpc.xop.shared;
+
+import org.jboss.ws.common.CommonMessageContext;
+import org.jboss.ws.soap.MessageContextAssociation;
+import org.jboss.ws.jaxrpc.StubExt;
+
+import java.util.StringTokenizer;
+
+/**
+ * @author Heiko Braun <heiko.braun at jboss.com>
+ * @version $Id$
+ * @since Sep 25, 2006
+ */
+public class MTOMServiceBase {
+   protected void toggleXOP(String message) {
+      StringTokenizer tok = new StringTokenizer(message, "|");
+      String requestOptimized = tok.nextToken();
+      String responseOptimized = tok.nextToken();
+      System.out.println(requestOptimized+"|"+responseOptimized);
+
+      if(responseOptimized.equals("0"))
+      {
+         CommonMessageContext ctx = MessageContextAssociation.peekMessageContext();
+         ctx.setProperty(StubExt.PROPERTY_MTOM_ENABLED, Boolean.FALSE);
+      }
+   }
+}


Property changes on: branches/hbraun/jbossws-1.0/src/test/java/org/jboss/test/ws/jaxrpc/xop/shared/MTOMServiceBase.java
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + LF

Modified: branches/hbraun/jbossws-1.0/src/test/resources/jaxrpc/xop/doclit/handlerconfig/META-INF/application-client.xml
===================================================================
--- branches/hbraun/jbossws-1.0/src/test/resources/jaxrpc/xop/doclit/handlerconfig/META-INF/application-client.xml	2006-09-25 18:29:54 UTC (rev 1044)
+++ branches/hbraun/jbossws-1.0/src/test/resources/jaxrpc/xop/doclit/handlerconfig/META-INF/application-client.xml	2006-09-25 19:22:53 UTC (rev 1045)
@@ -17,7 +17,7 @@
       </port-component-ref>
       <handler>
          <handler-name>XOPInlineHandler</handler-name>
-         <handler-class>org.jboss.test.ws.jaxrpc.xop.shared.InlineHandler</handler-class>
+         <handler-class>org.jboss.test.ws.jaxrpc.xop.doclit.InlineHandler</handler-class>
       </handler>
    </service-ref>
 

Modified: branches/hbraun/jbossws-1.0/src/test/resources/jaxrpc/xop/doclit/handlerconfig/WEB-INF/webservices.xml
===================================================================
--- branches/hbraun/jbossws-1.0/src/test/resources/jaxrpc/xop/doclit/handlerconfig/WEB-INF/webservices.xml	2006-09-25 18:29:54 UTC (rev 1044)
+++ branches/hbraun/jbossws-1.0/src/test/resources/jaxrpc/xop/doclit/handlerconfig/WEB-INF/webservices.xml	2006-09-25 19:22:53 UTC (rev 1045)
@@ -16,7 +16,7 @@
          <service-endpoint-interface>org.jboss.test.ws.jaxrpc.xop.doclit.TestService_PortType</service-endpoint-interface>
          <handler>
             <handler-name>XOPInlineHandler</handler-name>
-            <handler-class>org.jboss.test.ws.jaxrpc.xop.shared.InlineHandler</handler-class>
+            <handler-class>org.jboss.test.ws.jaxrpc.xop.doclit.InlineHandler</handler-class>
          </handler>
          <service-impl-bean>
             <servlet-link>TestService</servlet-link>

Modified: branches/hbraun/jbossws-1.0/src/test/resources/jaxrpc/xop/rpclit/WEB-INF/wsdl/TestService.wsdl
===================================================================
--- branches/hbraun/jbossws-1.0/src/test/resources/jaxrpc/xop/rpclit/WEB-INF/wsdl/TestService.wsdl	2006-09-25 18:29:54 UTC (rev 1044)
+++ branches/hbraun/jbossws-1.0/src/test/resources/jaxrpc/xop/rpclit/WEB-INF/wsdl/TestService.wsdl	2006-09-25 19:22:53 UTC (rev 1045)
@@ -20,12 +20,14 @@
             <s:sequence>
                <s:element name="message" minOccurs="0" maxOccurs="1" type="s:string" />
                <s:element name="xopContent" minOccurs="0" maxOccurs="1" xmime:expectedContentTypes="text/plain" type="xmime:base64Binary"/>
+               <!--s:element name="octets" minOccurs="0" maxOccurs="1" nillable="true" type="s:base64Binary"/-->
             </s:sequence>
          </s:complexType>
 
          <s:complexType name="PingOutType">
             <s:sequence>
                <s:element name="xopContent" minOccurs="0" maxOccurs="1" xmime:expectedContentTypes="text/plain" type="xmime:base64Binary"/>
+               <!--s:element name="octets" minOccurs="0" maxOccurs="1" nillable="true" type="s:base64Binary"/-->
             </s:sequence>
          </s:complexType>
 

Modified: branches/hbraun/jbossws-1.0/src/test/resources/jaxrpc/xop/rpclit/handlerconfig/META-INF/application-client.xml
===================================================================
--- branches/hbraun/jbossws-1.0/src/test/resources/jaxrpc/xop/rpclit/handlerconfig/META-INF/application-client.xml	2006-09-25 18:29:54 UTC (rev 1044)
+++ branches/hbraun/jbossws-1.0/src/test/resources/jaxrpc/xop/rpclit/handlerconfig/META-INF/application-client.xml	2006-09-25 19:22:53 UTC (rev 1045)
@@ -17,7 +17,7 @@
       </port-component-ref>
       <handler>
          <handler-name>XOPInlineHandler</handler-name>
-         <handler-class>org.jboss.test.ws.jaxrpc.xop.shared.InlineHandler</handler-class>
+         <handler-class>org.jboss.test.ws.jaxrpc.xop.rpclit.InlineHandler</handler-class>
       </handler>
    </service-ref>
 

Modified: branches/hbraun/jbossws-1.0/src/test/resources/jaxrpc/xop/rpclit/handlerconfig/WEB-INF/webservices.xml
===================================================================
--- branches/hbraun/jbossws-1.0/src/test/resources/jaxrpc/xop/rpclit/handlerconfig/WEB-INF/webservices.xml	2006-09-25 18:29:54 UTC (rev 1044)
+++ branches/hbraun/jbossws-1.0/src/test/resources/jaxrpc/xop/rpclit/handlerconfig/WEB-INF/webservices.xml	2006-09-25 19:22:53 UTC (rev 1045)
@@ -16,7 +16,7 @@
          <service-endpoint-interface>org.jboss.test.ws.jaxrpc.xop.rpclit.TestService_PortType</service-endpoint-interface>
          <handler>
             <handler-name>XOPInlineHandler</handler-name>
-            <handler-class>org.jboss.test.ws.jaxrpc.xop.shared.InlineHandler</handler-class>
+            <handler-class>org.jboss.test.ws.jaxrpc.xop.rpclit.InlineHandler</handler-class>
          </handler>
          <service-impl-bean>
             <servlet-link>TestService</servlet-link>




More information about the jboss-svn-commits mailing list