package org.jacorb.test.bugs.bug968;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.io.File;
import java.util.Properties;
import javax.xml.namespace.QName;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
import org.jacorb.test.harness.ServerSetup;
import org.jacorb.test.harness.TestUtils;
import org.junit.AfterClass;
import org.junit.Assume;
import org.junit.BeforeClass;
import org.junit.Test;
import cxf.repro.ReproData;
import cxf.repro.ReproDatas;
import cxf.repro.ReproService;
public class ReproClientTest
{
/**
* Fixed, unique IOR name (also defined in xml).
*/
static final String IOR = "/tmp/cxf-2B5EC0BB-B331-4F7D-AF69-BAE409982399.ior";
private static ServerSetup serverSetUp;
@BeforeClass
public static void beforeClassSetUp() throws Exception
{
Assume.assumeFalse(TestUtils.isSSLEnabled);
// Hardcoded ior file in code *and* XML to /tmp/.... so exclude Windows systems.
Assume.assumeFalse(System.getProperty("os.name").toLowerCase().contains("win"));
serverSetUp = new ServerSetup ("org.jacorb.test.bugs.bug968.ReproServiceMainSpring",
"ReproServiceMainSpring", null);
Properties props = System.getProperties();
props.put( "org.omg.CORBA.ORBClass", "org.jacorb.orb.ORB" );
props.put( "org.omg.CORBA.ORBSingletonClass", "org.jacorb.orb.ORBSingleton" );
serverSetUp.setUp();
}
@AfterClass
public static void afterClassTearDown() throws Exception
{
if (serverSetUp != null)
{
serverSetUp.tearDown();
}
new File (IOR).delete();
}
@Test
public void testCXFAny() throws Exception
{
QName SERVICE_NAME = new QName("http://cxf.apache.org/bindings/corba/idl/repro", "repro.ServiceCORBAService");
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
/*
factory.getInInterceptors().add(new LoggingInInterceptor());
factory.getOutInterceptors().add(new LoggingOutInterceptor());
*/
factory.setServiceClass( ReproService.class );
factory.setWsdlLocation( "classpath:repro.wsdl" );
factory.setAddress( "file://" + IOR );
factory.setServiceName( SERVICE_NAME );
ReproService port = (ReproService) factory.create();
ReproData in = new ReproData();
in.setABool( true );
in.setALong( 42 );
in.setAString( "-" );
// this call succeeds
int out = port.works( in );
assertTrue ("Value should be 42", out == 42);
ReproDatas outs = port.failsEmpty( in );
assertFalse ("Value should not be empty", outs.getItem().isEmpty());
for( ReproData d : outs.getItem()) {
TestUtils.getLogger().debug( "===> [" + d.isABool() + ":" + d.getALong() + ":" + d.getAString() + "]");
}
// this call fails with a null pointer exception during unmarshal
// (the service gets called correctly, but the client chokes on result data)
ReproData d = port.failsCrash( in );
assertTrue (d.isABool() == true);
TestUtils.getLogger().debug( "===> [" + d.isABool() + ":" + d.getALong() + ":" + d.getAString() + "]");
}
}