use of com.arjuna.mw.wsas.context.soap.SOAPContext in project narayana by jbosstm.
the class SagasHLSImple method ensureContextInitialised.
private void ensureContextInitialised() throws SystemException {
if (!initialised) {
synchronized (this) {
if (!initialised) {
// we only do this once no matter what happens
initialised = true;
try {
Class<?> factoryClass = ProtocolRegistry.sharedManager().getProtocolImplementation(coordinationType).getClass();
ContextProvider contextProvider = factoryClass.getAnnotation(ContextProvider.class);
String providerServiceType = contextProvider.serviceType();
if (!providerServiceType.equals(serviceType)) {
throw new SystemException("Invalid serviceType for SOAPContext factory registered for SAGAS 1.1 service expecting " + serviceType + " got " + providerServiceType);
}
Class contextClass = contextProvider.contextImplementation();
if (!SOAPContext.class.isAssignableFrom(contextClass)) {
throw new SystemException("SOAPContext factory registered for SAGAS 1.1 service provides invalid context implementation");
}
CONTEXT_IMPLE_CLASS = contextClass;
} catch (ProtocolNotRegisteredException pnre) {
throw new SystemException("No SOAPContext factory registered for SAGAS 1.1 service");
}
}
}
}
}
use of com.arjuna.mw.wsas.context.soap.SOAPContext in project narayana by jbosstm.
the class SagasHLSImple method context.
/**
* Return the context augmentation for this HLS, if any on the current
* activity.
*
* @return a context object or null if no augmentation is necessary.
*/
public Context context() throws SystemException {
ensureContextInitialised();
if (CONTEXT_IMPLE_CLASS != null) {
try {
SOAPContext ctx = (SOAPContext) CONTEXT_IMPLE_CLASS.newInstance();
ctx.initialiseContext(_coordManager.currentCoordinator());
return ctx;
} catch (Exception ex) {
ex.printStackTrace();
throw new SystemException(ex.toString());
}
} else {
throw new SystemException("Unable to create SOAPContext for SAGAS 1.1 service");
}
}
use of com.arjuna.mw.wsas.context.soap.SOAPContext in project narayana by jbosstm.
the class TwoPhaseHLSImple method ensureContextInitialised.
private void ensureContextInitialised() throws SystemException {
if (!initialised) {
synchronized (this) {
if (!initialised) {
try {
Class<?> factoryClass = ProtocolRegistry.sharedManager().getProtocolImplementation(coordinationType).getClass();
ContextProvider contextProvider = factoryClass.getAnnotation(ContextProvider.class);
String providerServiceType = contextProvider.serviceType();
if (!providerServiceType.equals(serviceType)) {
throw new SystemException("Invalid serviceType for SOAPContext factory registered for Two Phase 1.1 service expecting " + serviceType + " got " + providerServiceType);
}
Class contextClass = contextProvider.contextImplementation();
if (!SOAPContext.class.isAssignableFrom(contextClass)) {
throw new SystemException("SOAPContext factory registered for Two Phase 1.1 service provides invalid context implementation");
}
CONTEXT_IMPLE_CLASS = contextClass;
} catch (ProtocolNotRegisteredException pnre) {
throw new SystemException("No SOAPContext factory registered for Two Phase 1.1 service");
} finally {
// we only do this once no matter what happens
initialised = true;
}
}
}
}
}
use of com.arjuna.mw.wsas.context.soap.SOAPContext in project narayana by jbosstm.
the class TwoPhaseHLSImple method context.
/**
* Return the context augmentation for this HLS, if any on the current
* activity.
*
* @return a context object or null if no augmentation is necessary.
*/
public Context context() throws SystemException {
ensureContextInitialised();
if (CONTEXT_IMPLE_CLASS != null) {
try {
SOAPContext ctx = (SOAPContext) CONTEXT_IMPLE_CLASS.newInstance();
ctx.initialiseContext(_coordManager.currentCoordinator());
return ctx;
} catch (Exception ex) {
ex.printStackTrace();
throw new SystemException(ex.toString());
}
} else {
throw new SystemException("Unable to create SOAPContext for Two Phase 1.1 service");
}
}
use of com.arjuna.mw.wsas.context.soap.SOAPContext in project narayana by jbosstm.
the class Context2Test method testContext2.
@Test
public void testContext2() throws Exception {
UserActivity ua = UserActivityFactory.userActivity();
DemoHLS demoHLS = new DemoHLS();
// this constructor means it will not fail
FailureHLS failureHLS = new FailureHLS();
HLS[] currentHLS = ActivityManagerFactory.activityManager().allHighLevelServices();
for (HLS hls : currentHLS) {
ActivityManagerFactory.activityManager().removeHLS(hls);
}
try {
ActivityManagerFactory.activityManager().addHLS(demoHLS);
ActivityManagerFactory.activityManager().addHLS(failureHLS);
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
org.w3c.dom.Document doc = docBuilder.newDocument();
org.w3c.dom.Element root = doc.createElement("Context2-test");
doc.appendChild(root);
String demoServiceType = demoHLS.identity();
String failureServiceType = failureHLS.identity();
ua.start(demoServiceType);
System.out.println("Started: " + ua.activityName());
ua.start(failureServiceType);
System.out.println("Started: " + ua.activityName() + "\n");
String currentServiceType = ua.serviceType();
if (currentServiceType != failureServiceType) {
fail("invalid service type for current activity");
}
ContextManager contextManager = new ContextManager();
Context demoServiceContext;
Context failureServiceContext;
demoServiceContext = contextManager.context(demoServiceType);
failureServiceContext = contextManager.context(failureServiceType);
if (failureServiceContext == null) {
fail("Failure context not found");
} else if (demoServiceContext != null) {
fail("Found multiple contexts");
}
if (!(failureServiceContext instanceof DemoSOAPContextImple)) {
fail("Failure context not found");
}
((SOAPContext) failureServiceContext).serialiseToElement(root);
System.out.println("Faiure Context is " + root.getTextContent());
ua.end();
System.out.println("\nFinished child activity.\n");
currentServiceType = ua.serviceType();
if (currentServiceType != demoServiceType) {
fail("invalid service type for current activity");
}
demoServiceContext = contextManager.context(demoServiceType);
failureServiceContext = contextManager.context(failureServiceType);
if (demoServiceContext == null) {
fail("Demo context not found");
} else if (failureServiceContext != null) {
fail("Found multiple contexts");
}
if (!(demoServiceContext instanceof DemoSOAPContextImple)) {
fail("Demo context not found");
}
((SOAPContext) demoServiceContext).serialiseToElement(root);
System.out.println("Demo Context is " + root.getTextContent());
ua.end();
System.out.println("\nFinished parent activity.\n");
} 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
}
try {
if (failureHLS != null) {
ActivityManagerFactory.activityManager().removeHLS(failureHLS);
}
} catch (Exception ex) {
// ignore this
}
}
}
Aggregations