package com.arjuna.wsas.tests.arq.hls;
import static org.junit.Assert.fail;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.shrinkwrap.api.spec.WebArchive;
import org.junit.Test;
import org.junit.runner.RunWith;
import com.arjuna.mw.wsas.ActivityManagerFactory;
import com.arjuna.mw.wsas.UserActivity;
import com.arjuna.mw.wsas.UserActivityFactory;
import com.arjuna.mw.wsas.activity.HLS;
import com.arjuna.mw.wsas.context.Context;
import com.arjuna.mw.wsas.context.ContextManager;
import com.arjuna.mw.wsas.context.soap.SOAPContext;
import com.arjuna.wsas.tests.DemoHLS;
import com.arjuna.wsas.tests.DemoSOAPContextImple;
import com.arjuna.wsas.tests.WSASTestUtils;
import com.arjuna.wsas.tests.arq.WarDeployment;
@RunWith(Arquillian.class)
public class Context1Test {
@Deployment
public static WebArchive createDeployment() {
return WarDeployment.getDeployment(
DemoHLS.class,
DemoSOAPContextImple.class,
WSASTestUtils.class);
}
@Test
public void testContext1()
throws Exception
{
UserActivity ua = UserActivityFactory.userActivity();
DemoHLS demoHLS = new DemoHLS();
HLS[] currentHLS = ActivityManagerFactory.activityManager().allHighLevelServices();
for (HLS hls : currentHLS) {
ActivityManagerFactory.activityManager().removeHLS(hls);
}
try
{
ActivityManagerFactory.activityManager().addHLS(demoHLS);
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
org.w3c.dom.Document doc = docBuilder.newDocument();
org.w3c.dom.Element root = doc.createElement("Context1-test");
doc.appendChild(root);
String coordinationType = demoHLS.identity();
ua.start(coordinationType);
System.out.println("Started: "+ua.activityName());
ua.start(coordinationType);
System.out.println("Started: "+ua.activityName()+"\n");
ContextManager contextManager = new ContextManager();
Context theContext = contextManager.context(coordinationType);
if (theContext == null) {
fail("Demo context not found");
}
if (!(theContext instanceof DemoSOAPContextImple)) {
fail("Demo context not found");
}
((SOAPContext)theContext).serialiseToElement(root);
System.out.println("Context is " + root.getTextContent());
ua.end();
System.out.println("\nFinished child activity.\n");
theContext = contextManager.context(coordinationType);
if (theContext == null) {
fail("Demo context not found");
}
if (!(theContext instanceof DemoSOAPContextImple)) {
fail("Demo context not found");
}
doc = docBuilder.newDocument();
root = doc.createElement("Context1-test");
doc.appendChild(root);
((SOAPContext)theContext).serialiseToElement(root);
System.out.println("Context is " + root.getTextContent());
ua.end();
System.out.println("\nFinished parent activity.\n");
theContext = contextManager.context(coordinationType);
if (theContext != null) {
fail("Demo context not removed");
}
}
catch (Exception ex)
{
WSASTestUtils.cleanup(ua);
throw ex;
} finally {
try {
for (HLS hls : currentHLS) {
ActivityManagerFactory.activityManager().addHLS(hls);
}
} catch (Exception ex) {
// ignore this
}
try {
if (demoHLS != null) {
ActivityManagerFactory.activityManager().removeHLS(demoHLS);
}
} catch (Exception ex) {
// ignore this
}
}
}
}