package edu.mayo.cts2.framework.webapp.soap.endpoint;
import org.junit.BeforeClass;
import org.mortbay.jetty.Server;
import org.mortbay.jetty.webapp.WebAppContext;
import org.springframework.ws.client.core.WebServiceTemplate;
import org.springframework.ws.soap.saaj.SaajSoapMessageFactory;
import org.springframework.ws.transport.http.HttpUrlConnectionMessageSender;
import edu.mayo.cts2.framework.core.xml.DelegatingMarshaller;
import edu.mayo.cts2.framework.service.provider.ServiceProviderFactory;
import edu.mayo.cts2.framework.webapp.rest.config.MetaTypeRestConfig;
public class SoapEndpointTestBase {
public static boolean serverRunning = false;
protected static DelegatingMarshaller marshaller;
protected static WebServiceTemplate template;
DelegatingMarshaller getMarshaller(){
return marshaller;
}
static {
try {
marshaller = new DelegatingMarshaller();
} catch (Exception e) {
throw new RuntimeException(e);
}
template = new WebServiceTemplate(marshaller, marshaller);
template.setMessageSender(new HttpUrlConnectionMessageSender());
SaajSoapMessageFactory mf = new SaajSoapMessageFactory();
mf.afterPropertiesSet();
template.setMessageFactory(mf);
template.afterPropertiesSet();
}
@BeforeClass
public static void setUp() throws Exception {
if(!serverRunning){
System.setProperty("cts2.config.dir", "target/testconfigdir");
System.setProperty("test.plugins.dir", "target/test-plugins");
System.setProperty(ServiceProviderFactory.USE_CLASSPATH_PROVIDER_PROP, "true");
System.setProperty(MetaTypeRestConfig.ALLOW_SOAP, "true");
Server server = new Server(8081);
WebAppContext ctx = new WebAppContext();
ctx.setClassLoader(Thread.currentThread().getContextClassLoader());
ctx.setContextPath("/webapp-rest");
ctx.setWar("src/main/webapp");
ctx.setServer(server);
server.setHandler(ctx);
server.start();
Thread.sleep(5000);
serverRunning = true;
}
}
protected Object doSoapCall(String uri, Object request){
return template.marshalSendAndReceive(uri, request);
}
}