/*
* JBoss, Home of Professional Open Source.
* Copyright 2014, 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.wsf.stack.cxf.client.configuration;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
import org.apache.cxf.Bus;
import org.apache.cxf.BusFactory;
import org.apache.cxf.endpoint.Client;
import org.apache.cxf.frontend.ClientProxy;
import org.apache.cxf.interceptor.Interceptor;
import org.jboss.wsf.spi.metadata.config.ClientConfig;
import org.jboss.wsf.stack.cxf.client.Constants;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
/**
* A test case for the CXFClientConfigurer
*
* @author alessio.soldano@jboss.com
* @since 10-Oct-2014
*
*/
public class CXFClientConfigurerTest
{
@Test
public void testSetMapOfProperties() throws Exception
{
Bus bus = null;
try {
bus = BusFactory.newInstance().createBus();
BusFactory.setThreadDefaultBus(bus);
Service service = Service.create(this.getClass().getResource("META-INF/TestService.wsdl"), new QName("http://www.openuri.org/2004/04/HelloWorld", "EndpointService"));
EndpointInterface port = service.getPort(new QName("http://www.openuri.org/2004/04/HelloWorld", "EndpointInterfacePort"), EndpointInterface.class);
Client client = ClientProxy.getClient(port);
CXFClientConfigurer cfg = new CXFClientConfigurer();
Map<String, String> properties = new HashMap<String, String>();
properties.put("A", "1");
properties.put("B", "2");
properties.put("C", "3");
properties.put("D", "4");
properties.put("E", "5");
cfg.setConfigProperties(client, properties);
assertEquals("1", client.getEndpoint().get("A"));
assertEquals("2", client.getEndpoint().get("B"));
assertEquals("3", client.getEndpoint().get("C"));
assertEquals("4", client.getEndpoint().get("D"));
assertEquals("5", client.getEndpoint().get("E"));
assertEquals(5, client.getEndpoint().size());
properties = new HashMap<String, String>();
properties.put("E", "10");
properties.put("F", "20");
properties.put("G", "30");
cfg.setConfigProperties(client, properties);
assertEquals("10", client.getEndpoint().get("E"));
assertEquals("20", client.getEndpoint().get("F"));
assertEquals("30", client.getEndpoint().get("G"));
assertEquals(7, client.getEndpoint().size());
} finally {
if (bus != null) {
bus.shutdown(true);
}
}
}
@Test
public void testSetConfigProperties() throws Exception
{
Bus bus = null;
try {
bus = BusFactory.newInstance().createBus();
BusFactory.setThreadDefaultBus(bus);
Service service = Service.create(this.getClass().getResource("META-INF/TestService.wsdl"), new QName("http://www.openuri.org/2004/04/HelloWorld", "EndpointService"));
EndpointInterface port = service.getPort(new QName("http://www.openuri.org/2004/04/HelloWorld", "EndpointInterfacePort"), EndpointInterface.class);
Client client = ClientProxy.getClient(port);
Map<String, String> properties = new HashMap<String, String>();
properties.put("A", "1");
properties.put("B", "2");
properties.put("C", "3");
properties.put("D", "4");
properties.put("E", "5");
ClientConfig clientConfig = new ClientConfig("Foo", null, null, properties, null);
CXFClientConfigurer cfg = new CXFClientConfigurer();
cfg.setConfigProperties(port, clientConfig);
assertEquals("1", client.getEndpoint().get("A"));
assertEquals("2", client.getEndpoint().get("B"));
assertEquals("3", client.getEndpoint().get("C"));
assertEquals("4", client.getEndpoint().get("D"));
assertEquals("5", client.getEndpoint().get("E"));
properties = new HashMap<String, String>();
properties.put("E", "10");
properties.put("F", "20");
properties.put("G", "30");
clientConfig = new ClientConfig("Foo2", null, null, properties, null);
cfg.setConfigProperties(port, clientConfig);
assertEquals(null, client.getEndpoint().get("A"));
assertEquals(null, client.getEndpoint().get("B"));
assertEquals(null, client.getEndpoint().get("C"));
assertEquals(null, client.getEndpoint().get("D"));
assertEquals("10", client.getEndpoint().get("E"));
assertEquals("20", client.getEndpoint().get("F"));
assertEquals("30", client.getEndpoint().get("G"));
} finally {
if (bus != null) {
bus.shutdown(true);
}
}
}
@Test
public void testAddInterceptors() throws Exception
{
Bus bus = null;
try {
bus = BusFactory.newInstance().createBus();
BusFactory.setThreadDefaultBus(bus);
Service service = Service.create(this.getClass().getResource("META-INF/TestService.wsdl"), new QName("http://www.openuri.org/2004/04/HelloWorld", "EndpointService"));
EndpointInterface port = service.getPort(new QName("http://www.openuri.org/2004/04/HelloWorld", "EndpointInterfacePort"), EndpointInterface.class);
Client client = ClientProxy.getClient(port);
Map<String, String> properties = new HashMap<String, String>();
properties.put(Constants.CXF_IN_INTERCEPTORS_PROP, "org.jboss.wsf.stack.cxf.client.configuration.InterceptorA org.jboss.wsf.stack.cxf.client.configuration.InterceptorB");
properties.put(Constants.CXF_OUT_INTERCEPTORS_PROP, "org.jboss.wsf.stack.cxf.client.configuration.InterceptorC,org.jboss.wsf.stack.cxf.client.configuration.InterceptorD");
InterceptorUtils.addInterceptors(client, properties);
List<String> interceptors = toNameList(client.getInInterceptors());
assertTrue(interceptors.contains("org.jboss.wsf.stack.cxf.client.configuration.InterceptorA"));
assertTrue(interceptors.contains("org.jboss.wsf.stack.cxf.client.configuration.InterceptorB"));
assertFalse(interceptors.contains("org.jboss.wsf.stack.cxf.client.configuration.InterceptorC"));
assertFalse(interceptors.contains("org.jboss.wsf.stack.cxf.client.configuration.InterceptorD"));
interceptors = toNameList(client.getOutInterceptors());
assertFalse(interceptors.contains("org.jboss.wsf.stack.cxf.client.configuration.InterceptorA"));
assertFalse(interceptors.contains("org.jboss.wsf.stack.cxf.client.configuration.InterceptorB"));
assertTrue(interceptors.contains("org.jboss.wsf.stack.cxf.client.configuration.InterceptorC"));
assertTrue(interceptors.contains("org.jboss.wsf.stack.cxf.client.configuration.InterceptorD"));
properties = new HashMap<String, String>();
properties.put(Constants.CXF_IN_INTERCEPTORS_PROP, "org.jboss.wsf.stack.cxf.client.configuration.InterceptorD, FooInterceptor");
properties.put(Constants.CXF_OUT_INTERCEPTORS_PROP, "org.jboss.wsf.stack.cxf.client.configuration.InterceptorB");
InterceptorUtils.addInterceptors(client, properties);
interceptors = toNameList(client.getInInterceptors());
assertTrue(interceptors.contains("org.jboss.wsf.stack.cxf.client.configuration.InterceptorA"));
assertTrue(interceptors.contains("org.jboss.wsf.stack.cxf.client.configuration.InterceptorB"));
assertFalse(interceptors.contains("org.jboss.wsf.stack.cxf.client.configuration.InterceptorC"));
assertTrue(interceptors.contains("org.jboss.wsf.stack.cxf.client.configuration.InterceptorD"));
assertFalse(interceptors.contains("FooInterceptor"));
interceptors = toNameList(client.getOutInterceptors());
assertFalse(interceptors.contains("org.jboss.wsf.stack.cxf.client.configuration.InterceptorA"));
assertTrue(interceptors.contains("org.jboss.wsf.stack.cxf.client.configuration.InterceptorB"));
assertTrue(interceptors.contains("org.jboss.wsf.stack.cxf.client.configuration.InterceptorC"));
assertTrue(interceptors.contains("org.jboss.wsf.stack.cxf.client.configuration.InterceptorD"));
} finally {
if (bus != null) {
bus.shutdown(true);
}
}
}
@Test
public void testAddInterceptorsThroughSetMapOfProperties() throws Exception
{
Bus bus = null;
try {
bus = BusFactory.newInstance().createBus();
BusFactory.setThreadDefaultBus(bus);
Service service = Service.create(this.getClass().getResource("META-INF/TestService.wsdl"), new QName("http://www.openuri.org/2004/04/HelloWorld", "EndpointService"));
EndpointInterface port = service.getPort(new QName("http://www.openuri.org/2004/04/HelloWorld", "EndpointInterfacePort"), EndpointInterface.class);
Client client = ClientProxy.getClient(port);
Map<String, String> properties = new HashMap<String, String>();
properties.put("A", "1");
properties.put("B", "2");
properties.put("C", "3");
properties.put(Constants.CXF_IN_INTERCEPTORS_PROP, "org.jboss.wsf.stack.cxf.client.configuration.InterceptorA org.jboss.wsf.stack.cxf.client.configuration.InterceptorB");
properties.put(Constants.CXF_OUT_INTERCEPTORS_PROP, "org.jboss.wsf.stack.cxf.client.configuration.InterceptorC,org.jboss.wsf.stack.cxf.client.configuration.InterceptorD");
CXFClientConfigurer cfg = new CXFClientConfigurer();
cfg.setConfigProperties(client, properties);
assertEquals("1", client.getEndpoint().get("A"));
assertEquals("2", client.getEndpoint().get("B"));
assertEquals("3", client.getEndpoint().get("C"));
List<String> interceptors = toNameList(client.getInInterceptors());
assertTrue(interceptors.contains("org.jboss.wsf.stack.cxf.client.configuration.InterceptorA"));
assertTrue(interceptors.contains("org.jboss.wsf.stack.cxf.client.configuration.InterceptorB"));
assertFalse(interceptors.contains("org.jboss.wsf.stack.cxf.client.configuration.InterceptorC"));
assertFalse(interceptors.contains("org.jboss.wsf.stack.cxf.client.configuration.InterceptorD"));
interceptors = toNameList(client.getOutInterceptors());
assertFalse(interceptors.contains("org.jboss.wsf.stack.cxf.client.configuration.InterceptorA"));
assertFalse(interceptors.contains("org.jboss.wsf.stack.cxf.client.configuration.InterceptorB"));
assertTrue(interceptors.contains("org.jboss.wsf.stack.cxf.client.configuration.InterceptorC"));
assertTrue(interceptors.contains("org.jboss.wsf.stack.cxf.client.configuration.InterceptorD"));
properties = new HashMap<String, String>();
properties.put(Constants.CXF_IN_INTERCEPTORS_PROP, "org.jboss.wsf.stack.cxf.client.configuration.InterceptorD, FooInterceptor");
properties.put(Constants.CXF_OUT_INTERCEPTORS_PROP, "org.jboss.wsf.stack.cxf.client.configuration.InterceptorB");
InterceptorUtils.addInterceptors(client, properties);
assertEquals("1", client.getEndpoint().get("A"));
assertEquals("2", client.getEndpoint().get("B"));
assertEquals("3", client.getEndpoint().get("C"));
interceptors = toNameList(client.getInInterceptors());
assertTrue(interceptors.contains("org.jboss.wsf.stack.cxf.client.configuration.InterceptorA"));
assertTrue(interceptors.contains("org.jboss.wsf.stack.cxf.client.configuration.InterceptorB"));
assertFalse(interceptors.contains("org.jboss.wsf.stack.cxf.client.configuration.InterceptorC"));
assertTrue(interceptors.contains("org.jboss.wsf.stack.cxf.client.configuration.InterceptorD"));
assertFalse(interceptors.contains("FooInterceptor"));
interceptors = toNameList(client.getOutInterceptors());
assertFalse(interceptors.contains("org.jboss.wsf.stack.cxf.client.configuration.InterceptorA"));
assertTrue(interceptors.contains("org.jboss.wsf.stack.cxf.client.configuration.InterceptorB"));
assertTrue(interceptors.contains("org.jboss.wsf.stack.cxf.client.configuration.InterceptorC"));
assertTrue(interceptors.contains("org.jboss.wsf.stack.cxf.client.configuration.InterceptorD"));
} finally {
if (bus != null) {
bus.shutdown(true);
}
}
}
@Test
public void testAddInterceptorsThroughSetConfigProperties() throws Exception
{
Bus bus = null;
try {
bus = BusFactory.newInstance().createBus();
BusFactory.setThreadDefaultBus(bus);
Service service = Service.create(this.getClass().getResource("META-INF/TestService.wsdl"), new QName("http://www.openuri.org/2004/04/HelloWorld", "EndpointService"));
EndpointInterface port = service.getPort(new QName("http://www.openuri.org/2004/04/HelloWorld", "EndpointInterfacePort"), EndpointInterface.class);
Client client = ClientProxy.getClient(port);
Map<String, String> properties = new HashMap<String, String>();
properties.put("A", "1");
properties.put("B", "2");
properties.put("C", "3");
properties.put(Constants.CXF_IN_INTERCEPTORS_PROP, "org.jboss.wsf.stack.cxf.client.configuration.InterceptorA org.jboss.wsf.stack.cxf.client.configuration.InterceptorB");
properties.put(Constants.CXF_OUT_INTERCEPTORS_PROP, "org.jboss.wsf.stack.cxf.client.configuration.InterceptorC,org.jboss.wsf.stack.cxf.client.configuration.InterceptorD");
ClientConfig clientConfig = new ClientConfig("Foo", null, null, properties, null);
CXFClientConfigurer cfg = new CXFClientConfigurer();
cfg.setConfigProperties(port, clientConfig);
assertEquals("1", client.getEndpoint().get("A"));
assertEquals("2", client.getEndpoint().get("B"));
assertEquals("3", client.getEndpoint().get("C"));
List<String> interceptors = toNameList(client.getInInterceptors());
assertTrue(interceptors.contains("org.jboss.wsf.stack.cxf.client.configuration.InterceptorA"));
assertTrue(interceptors.contains("org.jboss.wsf.stack.cxf.client.configuration.InterceptorB"));
assertFalse(interceptors.contains("org.jboss.wsf.stack.cxf.client.configuration.InterceptorC"));
assertFalse(interceptors.contains("org.jboss.wsf.stack.cxf.client.configuration.InterceptorD"));
interceptors = toNameList(client.getOutInterceptors());
assertFalse(interceptors.contains("org.jboss.wsf.stack.cxf.client.configuration.InterceptorA"));
assertFalse(interceptors.contains("org.jboss.wsf.stack.cxf.client.configuration.InterceptorB"));
assertTrue(interceptors.contains("org.jboss.wsf.stack.cxf.client.configuration.InterceptorC"));
assertTrue(interceptors.contains("org.jboss.wsf.stack.cxf.client.configuration.InterceptorD"));
ClientProxy.getClient(port).getInInterceptors().add(new InterceptorZ());
properties = new HashMap<String, String>();
properties.put("E", "10");
properties.put("F", "20");
properties.put("G", "30");
properties.put(Constants.CXF_IN_INTERCEPTORS_PROP, "org.jboss.wsf.stack.cxf.client.configuration.InterceptorD, FooInterceptor");
properties.put(Constants.CXF_OUT_INTERCEPTORS_PROP, "org.jboss.wsf.stack.cxf.client.configuration.InterceptorB");
clientConfig = new ClientConfig("Foo2", null, null, properties, null);
cfg.setConfigProperties(port, clientConfig);
assertEquals(null, client.getEndpoint().get("A"));
assertEquals(null, client.getEndpoint().get("B"));
assertEquals(null, client.getEndpoint().get("C"));
assertEquals(null, client.getEndpoint().get("D"));
assertEquals("10", client.getEndpoint().get("E"));
assertEquals("20", client.getEndpoint().get("F"));
assertEquals("30", client.getEndpoint().get("G"));
interceptors = toNameList(client.getInInterceptors());
assertFalse(interceptors.contains("org.jboss.wsf.stack.cxf.client.configuration.InterceptorA"));
assertFalse(interceptors.contains("org.jboss.wsf.stack.cxf.client.configuration.InterceptorB"));
assertFalse(interceptors.contains("org.jboss.wsf.stack.cxf.client.configuration.InterceptorC"));
assertTrue(interceptors.contains("org.jboss.wsf.stack.cxf.client.configuration.InterceptorD"));
assertTrue(interceptors.contains("org.jboss.wsf.stack.cxf.client.configuration.InterceptorZ"));
interceptors = toNameList(client.getOutInterceptors());
assertFalse(interceptors.contains("org.jboss.wsf.stack.cxf.client.configuration.InterceptorA"));
assertTrue(interceptors.contains("org.jboss.wsf.stack.cxf.client.configuration.InterceptorB"));
assertFalse(interceptors.contains("org.jboss.wsf.stack.cxf.client.configuration.InterceptorC"));
assertFalse(interceptors.contains("org.jboss.wsf.stack.cxf.client.configuration.InterceptorD"));
properties = new HashMap<String, String>();
properties.put(Constants.CXF_IN_INTERCEPTORS_PROP, "");
clientConfig = new ClientConfig("Foo2", null, null, properties, null);
cfg.setConfigProperties(port, clientConfig);
assertEquals(null, client.getEndpoint().get("A"));
assertEquals(null, client.getEndpoint().get("B"));
assertEquals(null, client.getEndpoint().get("C"));
assertEquals(null, client.getEndpoint().get("D"));
assertEquals(null, client.getEndpoint().get("E"));
assertEquals(null, client.getEndpoint().get("F"));
assertEquals(null, client.getEndpoint().get("G"));
interceptors = toNameList(client.getInInterceptors());
assertFalse(interceptors.contains("org.jboss.wsf.stack.cxf.client.configuration.InterceptorA"));
assertFalse(interceptors.contains("org.jboss.wsf.stack.cxf.client.configuration.InterceptorB"));
assertFalse(interceptors.contains("org.jboss.wsf.stack.cxf.client.configuration.InterceptorC"));
assertFalse(interceptors.contains("org.jboss.wsf.stack.cxf.client.configuration.InterceptorD"));
assertTrue(interceptors.contains("org.jboss.wsf.stack.cxf.client.configuration.InterceptorZ"));
interceptors = toNameList(client.getOutInterceptors());
assertFalse(interceptors.contains("org.jboss.wsf.stack.cxf.client.configuration.InterceptorA"));
assertFalse(interceptors.contains("org.jboss.wsf.stack.cxf.client.configuration.InterceptorB"));
assertFalse(interceptors.contains("org.jboss.wsf.stack.cxf.client.configuration.InterceptorC"));
assertFalse(interceptors.contains("org.jboss.wsf.stack.cxf.client.configuration.InterceptorD"));
} finally {
if (bus != null) {
bus.shutdown(true);
}
}
}
private static List<String> toNameList(Collection<Interceptor<?>> interceptors) {
List<String> list = new ArrayList<String>();
for (Interceptor<?> interceptor : interceptors) {
list.add(interceptor.getClass().getName());
}
return list;
}
}