[jbossws-commits] JBossWS SVN: r14354 - in framework/branches/jbossws-framework-3.1.2/testsuite/test: java/org/jboss/test/ws/jaxws and 5 other directories.

jbossws-commits at lists.jboss.org jbossws-commits at lists.jboss.org
Tue May 10 19:49:15 EDT 2011


Author: richard.opalka at jboss.com
Date: 2011-05-10 19:49:15 -0400 (Tue, 10 May 2011)
New Revision: 14354

Added:
   framework/branches/jbossws-framework-3.1.2/testsuite/test/java/org/jboss/test/ws/jaxws/jbws3293/
   framework/branches/jbossws-framework-3.1.2/testsuite/test/java/org/jboss/test/ws/jaxws/jbws3293/Endpoint.java
   framework/branches/jbossws-framework-3.1.2/testsuite/test/java/org/jboss/test/ws/jaxws/jbws3293/EndpointBean.java
   framework/branches/jbossws-framework-3.1.2/testsuite/test/java/org/jboss/test/ws/jaxws/jbws3293/JBWS3293DispatchTestCase.java
   framework/branches/jbossws-framework-3.1.2/testsuite/test/java/org/jboss/test/ws/jaxws/jbws3293/SOAPHandler.java
   framework/branches/jbossws-framework-3.1.2/testsuite/test/resources/jaxws/jbws3293/
   framework/branches/jbossws-framework-3.1.2/testsuite/test/resources/jaxws/jbws3293/WEB-INF/
   framework/branches/jbossws-framework-3.1.2/testsuite/test/resources/jaxws/jbws3293/WEB-INF/web.xml
   framework/branches/jbossws-framework-3.1.2/testsuite/test/resources/jaxws/jbws3293/WEB-INF/wsdl/
   framework/branches/jbossws-framework-3.1.2/testsuite/test/resources/jaxws/jbws3293/WEB-INF/wsdl/TestService.wsdl
Modified:
   framework/branches/jbossws-framework-3.1.2/testsuite/test/ant-import/build-jars-jaxws.xml
Log:
[JBPAPP-6435][JBWS-3293] providing test case to reproduce the issue

Modified: framework/branches/jbossws-framework-3.1.2/testsuite/test/ant-import/build-jars-jaxws.xml
===================================================================
--- framework/branches/jbossws-framework-3.1.2/testsuite/test/ant-import/build-jars-jaxws.xml	2011-05-10 23:12:58 UTC (rev 14353)
+++ framework/branches/jbossws-framework-3.1.2/testsuite/test/ant-import/build-jars-jaxws.xml	2011-05-10 23:49:15 UTC (rev 14354)
@@ -823,6 +823,14 @@
       <fileset file="${tests.output.dir}/test-libs/jaxws-jbws2634-pojo.war"/>
     </ear>
 
+    <!-- jaxws-jbws3293 -->
+    <war warfile="${tests.output.dir}/test-libs/jaxws-jbws3293.war" webxml="${tests.output.dir}/test-resources/jaxws/jbws3293/WEB-INF/web.xml">
+      <classes dir="${tests.output.dir}/test-classes">
+        <include name="org/jboss/test/ws/jaxws/jbws3293/Endpoint.class"/>
+        <include name="org/jboss/test/ws/jaxws/jbws3293/EndpointBean.class"/>
+      </classes>
+    </war>
+
     <!-- jaxws namespace -->
     <war warfile="${tests.output.dir}/test-libs/jaxws-namespace.war" webxml="${tests.output.dir}/test-resources/jaxws/namespace/WEB-INF/web.xml">
       <classes dir="${tests.output.dir}/test-classes">

Added: framework/branches/jbossws-framework-3.1.2/testsuite/test/java/org/jboss/test/ws/jaxws/jbws3293/Endpoint.java
===================================================================
--- framework/branches/jbossws-framework-3.1.2/testsuite/test/java/org/jboss/test/ws/jaxws/jbws3293/Endpoint.java	                        (rev 0)
+++ framework/branches/jbossws-framework-3.1.2/testsuite/test/java/org/jboss/test/ws/jaxws/jbws3293/Endpoint.java	2011-05-10 23:49:15 UTC (rev 14354)
@@ -0,0 +1,48 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2011, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.ws.jaxws.jbws3293;
+
+import java.util.concurrent.Future;
+
+import javax.jws.WebMethod;
+import javax.jws.WebParam;
+import javax.jws.WebResult;
+import javax.jws.WebService;
+import javax.jws.soap.SOAPBinding;
+import javax.jws.soap.SOAPBinding.Style;
+import javax.xml.ws.AsyncHandler;
+import javax.xml.ws.Response;
+
+ at WebService(name = "Endpoint", targetNamespace = "http://org.jboss.ws/jaxws/jbws3293")
+ at SOAPBinding(style = Style.RPC)
+public interface Endpoint
+{
+   @WebMethod(operationName = "echo")
+   public Response<String> echoAsync(@WebParam(name = "String_1") String string1);
+
+   @WebMethod(operationName = "echo")
+   public Future<?> echoAsync(@WebParam(name = "String_1") String string1, @WebParam(name = "asyncHandler") AsyncHandler<String> asyncHandler);
+
+   @WebMethod
+   @WebResult(name = "result")
+   public String echo(@WebParam(name = "String_1") String string1);
+}

Added: framework/branches/jbossws-framework-3.1.2/testsuite/test/java/org/jboss/test/ws/jaxws/jbws3293/EndpointBean.java
===================================================================
--- framework/branches/jbossws-framework-3.1.2/testsuite/test/java/org/jboss/test/ws/jaxws/jbws3293/EndpointBean.java	                        (rev 0)
+++ framework/branches/jbossws-framework-3.1.2/testsuite/test/java/org/jboss/test/ws/jaxws/jbws3293/EndpointBean.java	2011-05-10 23:49:15 UTC (rev 14354)
@@ -0,0 +1,42 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2011, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.ws.jaxws.jbws3293;
+
+import javax.jws.WebMethod;
+import javax.jws.WebParam;
+import javax.jws.WebResult;
+import javax.jws.WebService;
+import javax.jws.soap.SOAPBinding;
+import javax.jws.soap.SOAPBinding.Style;
+
+ at WebService(name = "Endpoint", targetNamespace = "http://org.jboss.ws/jaxws/jbws3293")
+ at SOAPBinding(style = Style.RPC)
+public class EndpointBean
+{
+   @WebMethod
+   @WebResult(name = "result")
+   public String echo(@WebParam(name = "String_1") String msg)
+   {
+      System.out.println("echo: " + msg);
+      return msg;
+   }
+}

Added: framework/branches/jbossws-framework-3.1.2/testsuite/test/java/org/jboss/test/ws/jaxws/jbws3293/JBWS3293DispatchTestCase.java
===================================================================
--- framework/branches/jbossws-framework-3.1.2/testsuite/test/java/org/jboss/test/ws/jaxws/jbws3293/JBWS3293DispatchTestCase.java	                        (rev 0)
+++ framework/branches/jbossws-framework-3.1.2/testsuite/test/java/org/jboss/test/ws/jaxws/jbws3293/JBWS3293DispatchTestCase.java	2011-05-10 23:49:15 UTC (rev 14354)
@@ -0,0 +1,141 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2011, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.ws.jaxws.jbws3293;
+
+import java.io.IOException;
+import java.io.StringReader;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.List;
+import java.util.concurrent.Future;
+import java.util.concurrent.TimeUnit;
+
+import javax.xml.ws.soap.SOAPBinding;
+import javax.xml.namespace.QName;
+import javax.xml.transform.Source;
+import javax.xml.transform.stream.StreamSource;
+import javax.xml.ws.AsyncHandler;
+import javax.xml.ws.BindingProvider;
+import javax.xml.ws.Dispatch;
+import javax.xml.ws.Response;
+import javax.xml.ws.Service;
+import javax.xml.ws.Service.Mode;
+import javax.xml.ws.handler.Handler;
+
+import junit.framework.Test;
+
+import org.jboss.wsf.common.DOMUtils;
+import org.jboss.wsf.test.JBossWSTest;
+import org.jboss.wsf.test.JBossWSTestSetup;
+import org.w3c.dom.Element;
+
+/**
+ * [JBWS-3293] tests dispatch objects created without specified WSDL.
+ *
+ * @author <a href="mailto:ropalka at redhat.com">Richard Opalka</a>
+ */
+public class JBWS3293DispatchTestCase extends JBossWSTest
+{
+   private String targetNS = "http://org.jboss.ws/jaxws/jbws3293";
+   private String reqPayload = "<ns2:echo xmlns:ns2='" + targetNS + "'><String_1>Hello</String_1></ns2:echo>";
+   private Exception handlerException;
+   private boolean asyncHandlerCalled;
+
+   public static Test suite()
+   {
+      return new JBossWSTestSetup(JBWS3293DispatchTestCase.class, "jaxws-jbws3293.war");
+   }
+
+   public void testInvokeAsynch() throws Exception
+   {
+      Source reqObj = new StreamSource(new StringReader(reqPayload));
+      Dispatch dispatch = createDispatch();
+      Response response = dispatch.invokeAsync(reqObj);
+      verifyResponse((Source)response.get(3000, TimeUnit.MILLISECONDS));
+   }
+
+   public void testInvokeAsynchHandler() throws Exception
+   {
+      AsyncHandler handler = new AsyncHandler()
+      {
+         public void handleResponse(Response response)
+         {
+            try
+            {
+               verifyResponse((Source)response.get());
+               asyncHandlerCalled = true;
+            }
+            catch (Exception ex)
+            {
+               handlerException = ex;
+            }
+         }
+      };
+      StreamSource reqObj = new StreamSource(new StringReader(reqPayload));
+      Dispatch dispatch = createDispatch();
+      Future future = dispatch.invokeAsync(reqObj, handler);
+      future.get(1000, TimeUnit.MILLISECONDS);
+
+      if (handlerException != null)
+         throw handlerException;
+
+      assertTrue("Async handler called", asyncHandlerCalled);
+   }
+
+   private void installHandler(final Dispatch dispatch)
+   {
+       List<Handler> handlers = dispatch.getBinding().getHandlerChain();
+       handlers.add(new SOAPHandler());
+       dispatch.getBinding().setHandlerChain(handlers);
+   }
+
+   private Dispatch createDispatchWithWSDL() throws MalformedURLException
+   {
+      URL wsdlURL = new URL("http://" + getServerHost() + ":8080/jaxws-jbws3293?wsdl");
+      QName serviceName = new QName(targetNS, "EndpointBeanService");
+      QName portName = new QName(targetNS, "EndpointPort");
+      Service service = Service.create(wsdlURL, serviceName);
+      Dispatch dispatch = service.createDispatch(portName, Source.class, Mode.PAYLOAD);
+      installHandler(dispatch);
+      return dispatch;
+   }
+
+   private Dispatch createDispatch() throws MalformedURLException
+   {
+      QName serviceName = new QName(targetNS, "EndpointBeanService");
+      QName portName = new QName(targetNS, "EndpointPort");
+      Service service = Service.create(serviceName);
+      service.addPort(portName, SOAPBinding.SOAP11HTTP_BINDING, "http://" + getServerHost() + ":8080/jaxws-jbws3293");
+      Dispatch dispatch = service.createDispatch(portName, Source.class, Mode.PAYLOAD);
+      installHandler(dispatch);
+      return dispatch;
+   }
+
+   private void verifyResponse(Source result) throws IOException
+   {
+      Element docElement = DOMUtils.sourceToElement(result);
+      Element retElement = DOMUtils.getFirstChildElement(docElement);
+      assertEquals("result", retElement.getNodeName());
+      assertEquals("Hello modified in handler", retElement.getTextContent());
+   }
+
+}

Added: framework/branches/jbossws-framework-3.1.2/testsuite/test/java/org/jboss/test/ws/jaxws/jbws3293/SOAPHandler.java
===================================================================
--- framework/branches/jbossws-framework-3.1.2/testsuite/test/java/org/jboss/test/ws/jaxws/jbws3293/SOAPHandler.java	                        (rev 0)
+++ framework/branches/jbossws-framework-3.1.2/testsuite/test/java/org/jboss/test/ws/jaxws/jbws3293/SOAPHandler.java	2011-05-10 23:49:15 UTC (rev 14354)
@@ -0,0 +1,91 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2011, Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.jboss.test.ws.jaxws.jbws3293;
+
+import javax.xml.soap.SOAPBody;
+import javax.xml.soap.SOAPException;
+import javax.xml.soap.SOAPMessage;
+import javax.xml.ws.handler.LogicalMessageContext;
+import javax.xml.ws.handler.MessageContext;
+import javax.xml.ws.handler.soap.SOAPMessageContext;
+
+import org.jboss.logging.Logger;
+import org.jboss.wsf.common.DOMWriter;
+import org.jboss.wsf.common.handler.GenericSOAPHandler;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+public class SOAPHandler extends GenericSOAPHandler<LogicalMessageContext>
+{
+
+   private static final Logger log = Logger.getLogger(SOAPHandler.class);
+
+   @Override
+   protected boolean handleInbound(final MessageContext msgContext)
+   {
+      log.info("handleInbound()");
+
+      try
+      {
+         SOAPMessageContext smc = (SOAPMessageContext)msgContext;
+         SOAPMessage message = smc.getMessage();
+
+         SOAPBody body = message.getSOAPBody();
+         Document document = body.extractContentAsDocument();
+         Node node = document;
+
+         System.out.println(DOMWriter.printNode(node, true));
+
+         NodeList nodes = node.getChildNodes();
+         for (int i = 0; i < nodes.getLength(); i++)
+         {
+            Node current = nodes.item(i);
+
+            NodeList childNodes = current.getChildNodes();
+            for (int j = 0; j < childNodes.getLength(); j++)
+            {
+               Node currentChildNode = childNodes.item(j);
+               if ("result".equals(currentChildNode.getLocalName()))
+               {
+                  currentChildNode.setTextContent(currentChildNode.getTextContent() + " modified in handler");
+               }
+            }
+         }
+
+         System.out.println(DOMWriter.printNode(node, true));
+
+         // Add document back as removed by call to 'extractContentAsDocument()'
+         body.addDocument(document);
+         message.saveChanges();
+      }
+      catch (SOAPException e)
+      {
+         throw new RuntimeException("Error in Handler", e);
+      }
+
+      log.info("Finished");
+      return true;
+   }
+
+}

Added: framework/branches/jbossws-framework-3.1.2/testsuite/test/resources/jaxws/jbws3293/WEB-INF/web.xml
===================================================================
--- framework/branches/jbossws-framework-3.1.2/testsuite/test/resources/jaxws/jbws3293/WEB-INF/web.xml	                        (rev 0)
+++ framework/branches/jbossws-framework-3.1.2/testsuite/test/resources/jaxws/jbws3293/WEB-INF/web.xml	2011-05-10 23:49:15 UTC (rev 14354)
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
+  version="2.4">
+
+  <servlet>
+    <servlet-name>Endpoint</servlet-name>
+    <servlet-class>org.jboss.test.ws.jaxws.jbws3293.EndpointBean</servlet-class>
+  </servlet>
+
+  <servlet-mapping>
+    <servlet-name>Endpoint</servlet-name>
+    <url-pattern>/*</url-pattern>
+  </servlet-mapping>
+
+</web-app>
+

Added: framework/branches/jbossws-framework-3.1.2/testsuite/test/resources/jaxws/jbws3293/WEB-INF/wsdl/TestService.wsdl
===================================================================
--- framework/branches/jbossws-framework-3.1.2/testsuite/test/resources/jaxws/jbws3293/WEB-INF/wsdl/TestService.wsdl	                        (rev 0)
+++ framework/branches/jbossws-framework-3.1.2/testsuite/test/resources/jaxws/jbws3293/WEB-INF/wsdl/TestService.wsdl	2011-05-10 23:49:15 UTC (rev 14354)
@@ -0,0 +1,44 @@
+<!--
+  This wsdl is only used for client artifact generation
+  
+  wsimport -keep -verbose -d ../../../java ./WEB-INF/wsdl/TestService.wsdl
+-->
+<definitions name='EndpointService' targetNamespace='http://org.jboss.ws/jaxws/jbws3293' xmlns='http://schemas.xmlsoap.org/wsdl/'
+  xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/' xmlns:tns='http://org.jboss.ws/jaxws/jbws3293' xmlns:xsd='http://www.w3.org/2001/XMLSchema'
+  xmlns:jaxws="http://java.sun.com/xml/ns/jaxws" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb">
+  
+  <jaxws:bindings>
+    <jaxws:package name="org.jboss.test.ws.jaxws.jbws3293"/>
+    <jaxws:enableAsyncMapping>true</jaxws:enableAsyncMapping>
+  </jaxws:bindings>
+  
+  <message name='Endpoint_echoResponse'>
+    <part name='result' type='xsd:string'/>
+  </message>
+  <message name='Endpoint_echo'>
+    <part name='String_1' type='xsd:string'/>
+  </message>
+  <portType name='Endpoint'>
+    <operation name='echo' parameterOrder='String_1'>
+      <input message='tns:Endpoint_echo'/>
+      <output message='tns:Endpoint_echoResponse'/>
+    </operation>
+  </portType>
+  <binding name='EndpointBinding' type='tns:Endpoint'>
+    <soap:binding style='rpc' transport='http://schemas.xmlsoap.org/soap/http'/>
+    <operation name='echo'>
+      <soap:operation soapAction=''/>
+      <input>
+        <soap:body namespace='http://org.jboss.ws/jaxws/jbws3293' use='literal'/>
+      </input>
+      <output>
+        <soap:body namespace='http://org.jboss.ws/jaxws/jbws3293' use='literal'/>
+      </output>
+    </operation>
+  </binding>
+  <service name='EndpointService'>
+    <port binding='tns:EndpointBinding' name='EndpointPort'>
+      <soap:address location='http://tdvaio:8080/jaxws-jbws3293/Endpoint'/>
+    </port>
+  </service>
+</definitions>
\ No newline at end of file



More information about the jbossws-commits mailing list