Author: alessio.soldano(a)jboss.com
Date: 2011-04-18 09:07:20 -0400 (Mon, 18 Apr 2011)
New Revision: 14142
Added:
stack/cxf/trunk/modules/testsuite/cxf-tests/src/test/java/org/jboss/test/ws/jaxws/cxf/jaxbintros/Helper.java
stack/cxf/trunk/modules/testsuite/cxf-tests/src/test/java/org/jboss/test/ws/jaxws/cxf/jaxbintros/JAXBIntroServletTestCase.java
Modified:
stack/cxf/trunk/modules/testsuite/cxf-tests/scripts/cxf-jars-jaxws.xml
stack/cxf/trunk/modules/testsuite/cxf-tests/src/test/java/org/jboss/test/ws/jaxws/cxf/jaxbintros/JAXBIntroTestCase.java
Log:
[JBWS-3274] Refactor jaxbintros cxf specific testcase
Modified: stack/cxf/trunk/modules/testsuite/cxf-tests/scripts/cxf-jars-jaxws.xml
===================================================================
--- stack/cxf/trunk/modules/testsuite/cxf-tests/scripts/cxf-jars-jaxws.xml 2011-04-18
12:19:00 UTC (rev 14141)
+++ stack/cxf/trunk/modules/testsuite/cxf-tests/scripts/cxf-jars-jaxws.xml 2011-04-18
13:07:20 UTC (rev 14142)
@@ -113,6 +113,27 @@
<include name="**/*" />
</metainf>
</jar>
+ <war
warfile="${tests.output.dir}/test-libs/jaxws-cxf-jaxbintros-client.war"
+ needxmlfile='false'>
+ <classes dir="${tests.output.dir}/test-classes">
+ <include
name="org/jboss/test/ws/jaxws/cxf/jaxbintros/Helper.class"/>
+ <include
name="org/jboss/test/ws/jaxws/cxf/jaxbintros/Endpoint.class"/>
+ <include
name="org/jboss/test/ws/jaxws/cxf/jaxbintros/UserType.class"/>
+ <include
name="org/jboss/test/ws/jaxws/cxf/jaxbintros/AnnotatedUserEndpoint.class"/>
+ <include
name="org/jboss/test/ws/jaxws/cxf/jaxbintros/AnnotatedUserType.class"/>
+ <include
name="test-resources/jaxws/cxf/jaxbintros/META-INF/jaxb-intros.xml"/>
+ </classes>
+ <classes
dir="${tests.output.dir}/test-resources/jaxws/cxf/jaxbintros/META-INF">
+ <include name="jaxb-intros.xml"/>
+ </classes>
+ <classes dir="${tests.output.dir}/classes">
+ <include name="org/jboss/wsf/test/TestServlet.class"/>
+ <include name="org/jboss/wsf/test/ClientHelper.class"/>
+ </classes>
+ <manifest>
+ <attribute name="Dependencies"
value="org.jboss.ws.cxf.jbossws-cxf-client services"/>
+ </manifest>
+ </war>
<!-- jaxws-cxf-jbws3060 -->
<jar
destfile="${tests.output.dir}/test-libs/jaxws-cxf-jbws3060.jar">
Added:
stack/cxf/trunk/modules/testsuite/cxf-tests/src/test/java/org/jboss/test/ws/jaxws/cxf/jaxbintros/Helper.java
===================================================================
---
stack/cxf/trunk/modules/testsuite/cxf-tests/src/test/java/org/jboss/test/ws/jaxws/cxf/jaxbintros/Helper.java
(rev 0)
+++
stack/cxf/trunk/modules/testsuite/cxf-tests/src/test/java/org/jboss/test/ws/jaxws/cxf/jaxbintros/Helper.java 2011-04-18
13:07:20 UTC (rev 14142)
@@ -0,0 +1,142 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2009, 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.cxf.jaxbintros;
+
+import java.net.URL;
+
+import javax.xml.namespace.QName;
+import javax.xml.ws.Service;
+
+import org.apache.cxf.Bus;
+import org.apache.cxf.BusFactory;
+import org.apache.cxf.configuration.Configurer;
+import org.jboss.jaxb.intros.BindingCustomizationFactory;
+import org.jboss.wsf.spi.binding.BindingCustomization;
+import org.jboss.wsf.spi.binding.JAXBBindingCustomization;
+import org.jboss.wsf.stack.cxf.client.configuration.JBossWSConfigurer;
+import org.jboss.wsf.test.ClientHelper;
+
+/**
+ * Test the JAXBIntroduction features.
+ *
+ * jaxb-intros.xml can reside under META-INF or WEB-INF and should be
+ * picked up by JAXBIntroduction deployment aspect on server side.
+ *
+ * @author alessio.soldano(a)jboss.com
+ */
+public class Helper implements ClientHelper
+{
+ private String endpointAddress;
+ private URL jaxbIntroUrl;
+
+ public Helper()
+ {
+
+ }
+
+ public Helper(String endpointAddress)
+ {
+ this.setTargetEndpoint(endpointAddress);
+ }
+
+ public boolean testEndpoint() throws Exception
+ {
+ Bus bus = setBindingCustomizationOnClientSide();
+ try
+ {
+ URL wsdlURL = new URL(endpointAddress + "?wsdl");
+ QName serviceName = new QName("http://org.jboss.ws/cxf/jaxbintros",
"EndpointBeanService");
+
+ Service service = Service.create(wsdlURL, serviceName);
+ Endpoint port = service.getPort(Endpoint.class);
+ UserType user = new UserType();
+ QName qname = new QName("ns", "local", "prefix");
+ user.setQname(qname);
+ user.setString("Foo");
+ UserType result = port.echo(user);
+ if (!"Foo".equals(result.getString())) {
+ return false;
+ }
+ if (!qname.equals(result.getQname())) {
+ return false;
+ }
+ }
+ finally
+ {
+ bus.shutdown(true);
+ }
+ return true;
+ }
+
+ public boolean testAnnotatedUserEndpoint() throws Exception
+ {
+ URL wsdlURL = new URL(endpointAddress + "?wsdl");
+ QName serviceName = new QName("http://org.jboss.ws/cxf/jaxbintros",
"EndpointBeanService");
+
+ Service service = Service.create(wsdlURL, serviceName);
+ AnnotatedUserEndpoint port = service.getPort(AnnotatedUserEndpoint.class);
+ AnnotatedUserType user = new AnnotatedUserType();
+ QName qname = new QName("ns", "local", "prefix");
+ user.setQname(qname);
+ user.setString("Foo");
+ AnnotatedUserType result = port.echo(user);
+ if (!"Foo".equals(result.getString())) {
+ return false;
+ }
+ if (!qname.equals(result.getQname())) {
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * Setup binding customization on client side using the JBossWSConfigurer
+ *
+ * @throws Exception
+ */
+ @SuppressWarnings("unchecked")
+ private Bus setBindingCustomizationOnClientSide() throws Exception
+ {
+ BindingCustomization jaxbCustomizations = new JAXBBindingCustomization();
+ if (jaxbIntroUrl == null)
+ {
+ jaxbIntroUrl =
Thread.currentThread().getContextClassLoader().getResource("jaxb-intros.xml");
+ }
+ BindingCustomizationFactory.populateBindingCustomization(jaxbIntroUrl.openStream(),
jaxbCustomizations);
+
+ Bus bus = BusFactory.getThreadDefaultBus();
+ JBossWSConfigurer configurer =
(JBossWSConfigurer)bus.getExtension(Configurer.class);
+ configurer.getCustomizer().setBindingCustomization(jaxbCustomizations);
+ return bus;
+ }
+
+ public void setJAXBIntroURL(URL url)
+ {
+ this.jaxbIntroUrl = url;
+ }
+
+ @Override
+ public void setTargetEndpoint(String address)
+ {
+ this.endpointAddress = address;
+ }
+}
Added:
stack/cxf/trunk/modules/testsuite/cxf-tests/src/test/java/org/jboss/test/ws/jaxws/cxf/jaxbintros/JAXBIntroServletTestCase.java
===================================================================
---
stack/cxf/trunk/modules/testsuite/cxf-tests/src/test/java/org/jboss/test/ws/jaxws/cxf/jaxbintros/JAXBIntroServletTestCase.java
(rev 0)
+++
stack/cxf/trunk/modules/testsuite/cxf-tests/src/test/java/org/jboss/test/ws/jaxws/cxf/jaxbintros/JAXBIntroServletTestCase.java 2011-04-18
13:07:20 UTC (rev 14142)
@@ -0,0 +1,77 @@
+/*
+ * 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.cxf.jaxbintros;
+
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.net.URL;
+
+import junit.framework.Test;
+
+import org.jboss.wsf.test.JBossWSCXFTestSetup;
+import org.jboss.wsf.test.JBossWSTest;
+
+/**
+ * Test the JAXBIntroduction features.
+ *
+ * jaxb-intros.xml can reside under META-INF or WEB-INF and should be
+ * picked up by JAXBIntroduction deployment aspect on server side.
+ *
+ * @author alessio.soldano(a)jboss.com
+ */
+public class JAXBIntroServletTestCase extends JBossWSTest
+{
+
+ public static Test suite()
+ {
+ return new JBossWSCXFTestSetup(JAXBIntroServletTestCase.class,
"jaxws-cxf-jaxbintros.jar, jaxws-cxf-jaxbintros-client.war");
+ }
+
+ /**
+ * Both client and server side use plain UserType class but have jaxbintros in place
to deal with customizations
+ *
+ * @throws Exception
+ */
+ public void testEndpoint() throws Exception
+ {
+ assertEquals("1", runTestInContainer("testEndpoint"));
+ }
+
+ /**
+ * Client side uses the annotated user type class, server side uses the plain one but
has jaxbintros in place
+ *
+ * @throws Exception
+ */
+ public void testAnnotatedUserEndpoint() throws Exception
+ {
+ assertEquals("1",
runTestInContainer("testAnnotatedUserEndpoint"));
+ }
+
+ private String runTestInContainer(String test) throws Exception
+ {
+ URL url = new URL("http://" + getServerHost()
+ +
":8080/jaxws-cxf-jaxbintros-client?path=/jaxws-cxf-jaxbintros/EndpointService&method="
+ test
+ + "&helper=" + Helper.class.getName());
+ BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream()));
+ return br.readLine();
+ }
+}
Modified:
stack/cxf/trunk/modules/testsuite/cxf-tests/src/test/java/org/jboss/test/ws/jaxws/cxf/jaxbintros/JAXBIntroTestCase.java
===================================================================
---
stack/cxf/trunk/modules/testsuite/cxf-tests/src/test/java/org/jboss/test/ws/jaxws/cxf/jaxbintros/JAXBIntroTestCase.java 2011-04-18
12:19:00 UTC (rev 14141)
+++
stack/cxf/trunk/modules/testsuite/cxf-tests/src/test/java/org/jboss/test/ws/jaxws/cxf/jaxbintros/JAXBIntroTestCase.java 2011-04-18
13:07:20 UTC (rev 14142)
@@ -1,6 +1,6 @@
/*
* JBoss, Home of Professional Open Source.
- * Copyright 2009, Red Hat Middleware LLC, and individual contributors
+ * 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.
*
@@ -21,22 +21,15 @@
*/
package org.jboss.test.ws.jaxws.cxf.jaxbintros;
+import java.net.MalformedURLException;
import java.net.URL;
import java.util.Iterator;
import javax.xml.namespace.QName;
-import javax.xml.ws.Service;
import junit.framework.Test;
-import org.apache.cxf.Bus;
-import org.apache.cxf.BusFactory;
-import org.apache.cxf.configuration.Configurer;
-import org.jboss.jaxb.intros.BindingCustomizationFactory;
import org.jboss.wsf.common.DOMUtils;
-import org.jboss.wsf.spi.binding.BindingCustomization;
-import org.jboss.wsf.spi.binding.JAXBBindingCustomization;
-import org.jboss.wsf.stack.cxf.client.configuration.JBossWSConfigurer;
import org.jboss.wsf.test.JBossWSCXFTestSetup;
import org.jboss.wsf.test.JBossWSTest;
import org.w3c.dom.Element;
@@ -53,8 +46,7 @@
{
private String endpointAddress = "http://" + getServerHost() +
":8080/jaxws-cxf-jaxbintros/EndpointService";
- private Bus bus;
- private JBossWSConfigurer configurer;
+ private Helper helper;
public static Test suite()
{
@@ -78,6 +70,16 @@
}
assertTrue("<xs:attribute name=\"string\" ..> not found in
wsdl", attributeFound);
}
+
+ private Helper getHelper() throws MalformedURLException
+ {
+ if (helper == null)
+ {
+ helper = new Helper(endpointAddress);
+
helper.setJAXBIntroURL(getResourceURL("jaxws/cxf/jaxbintros/META-INF/jaxb-intros.xml"));
+ }
+ return helper;
+ }
/**
* Both client and server side use plain UserType class but have jaxbintros in place
to deal with customizations
@@ -86,26 +88,7 @@
*/
public void testEndpoint() throws Exception
{
- try
- {
- URL wsdlURL = new URL(endpointAddress + "?wsdl");
- QName serviceName = new QName("http://org.jboss.ws/cxf/jaxbintros",
"EndpointBeanService");
-
- setBindingCustomizationOnClientSide();
- Service service = Service.create(wsdlURL, serviceName);
- Endpoint port = service.getPort(Endpoint.class);
- UserType user = new UserType();
- QName qname = new QName("ns", "local", "prefix");
- user.setQname(qname);
- user.setString("Foo");
- UserType result = port.echo(user);
- assertEquals("Foo", result.getString());
- assertEquals(qname, result.getQname());
- }
- finally
- {
- unsetBindingCustomizationOnClientSide();
- }
+ assertTrue(getHelper().testEndpoint());
}
/**
@@ -115,39 +98,6 @@
*/
public void testAnnotatedUserEndpoint() throws Exception
{
- URL wsdlURL = new URL(endpointAddress + "?wsdl");
- QName serviceName = new QName("http://org.jboss.ws/cxf/jaxbintros",
"EndpointBeanService");
-
- Service service = Service.create(wsdlURL, serviceName);
- AnnotatedUserEndpoint port = service.getPort(AnnotatedUserEndpoint.class);
- AnnotatedUserType user = new AnnotatedUserType();
- QName qname = new QName("ns", "local", "prefix");
- user.setQname(qname);
- user.setString("Foo");
- AnnotatedUserType result = port.echo(user);
- assertEquals("Foo", result.getString());
- assertEquals(qname, result.getQname());
+ assertTrue(getHelper().testAnnotatedUserEndpoint());
}
-
- /**
- * Setup binding customization on client side using the JBossWSConfigurer
- *
- * @throws Exception
- */
- @SuppressWarnings("unchecked")
- private void setBindingCustomizationOnClientSide() throws Exception
- {
- BindingCustomization jaxbCustomizations = new JAXBBindingCustomization();
-
BindingCustomizationFactory.populateBindingCustomization(getResourceURL("jaxws/cxf/jaxbintros/META-INF/jaxb-intros.xml").openStream(),
jaxbCustomizations);
-
- bus = BusFactory.getThreadDefaultBus();
- configurer = (JBossWSConfigurer)bus.getExtension(Configurer.class);
- configurer.getCustomizer().setBindingCustomization(jaxbCustomizations);
- }
-
- private void unsetBindingCustomizationOnClientSide()
- {
- if (configurer != null)
- configurer.getCustomizer().setBindingCustomization(null);
- }
}