Search in sources :

Example 1 with SOAPContext

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");
                }
            }
        }
    }
}
Also used : SystemException(com.arjuna.mw.wsas.exceptions.SystemException) SOAPContext(com.arjuna.mw.wsas.context.soap.SOAPContext) ContextProvider(com.arjuna.mwlabs.wscf.utils.ContextProvider)

Example 2 with SOAPContext

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");
    }
}
Also used : SystemException(com.arjuna.mw.wsas.exceptions.SystemException) SOAPContext(com.arjuna.mw.wsas.context.soap.SOAPContext) SystemException(com.arjuna.mw.wsas.exceptions.SystemException) WrongStateException(com.arjuna.mw.wsas.exceptions.WrongStateException) ProtocolViolationException(com.arjuna.mw.wsas.exceptions.ProtocolViolationException)

Example 3 with SOAPContext

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;
                }
            }
        }
    }
}
Also used : SystemException(com.arjuna.mw.wsas.exceptions.SystemException) SOAPContext(com.arjuna.mw.wsas.context.soap.SOAPContext) ContextProvider(com.arjuna.mwlabs.wscf.utils.ContextProvider)

Example 4 with SOAPContext

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");
    }
}
Also used : SystemException(com.arjuna.mw.wsas.exceptions.SystemException) SOAPContext(com.arjuna.mw.wsas.context.soap.SOAPContext) SystemException(com.arjuna.mw.wsas.exceptions.SystemException) WrongStateException(com.arjuna.mw.wsas.exceptions.WrongStateException) ProtocolViolationException(com.arjuna.mw.wsas.exceptions.ProtocolViolationException)

Example 5 with SOAPContext

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
        }
    }
}
Also used : Context(com.arjuna.mw.wsas.context.Context) SOAPContext(com.arjuna.mw.wsas.context.soap.SOAPContext) DocumentBuilderFactory(javax.xml.parsers.DocumentBuilderFactory) DemoSOAPContextImple(com.arjuna.wsas.tests.DemoSOAPContextImple) UserActivity(com.arjuna.mw.wsas.UserActivity) FailureHLS(com.arjuna.wsas.tests.FailureHLS) DemoHLS(com.arjuna.wsas.tests.DemoHLS) HLS(com.arjuna.mw.wsas.activity.HLS) DocumentBuilder(javax.xml.parsers.DocumentBuilder) ContextManager(com.arjuna.mw.wsas.context.ContextManager) DemoHLS(com.arjuna.wsas.tests.DemoHLS) SOAPContext(com.arjuna.mw.wsas.context.soap.SOAPContext) FailureHLS(com.arjuna.wsas.tests.FailureHLS) Test(org.junit.Test)

Aggregations

SOAPContext (com.arjuna.mw.wsas.context.soap.SOAPContext)6 SystemException (com.arjuna.mw.wsas.exceptions.SystemException)4 UserActivity (com.arjuna.mw.wsas.UserActivity)2 HLS (com.arjuna.mw.wsas.activity.HLS)2 Context (com.arjuna.mw.wsas.context.Context)2 ContextManager (com.arjuna.mw.wsas.context.ContextManager)2 ProtocolViolationException (com.arjuna.mw.wsas.exceptions.ProtocolViolationException)2 WrongStateException (com.arjuna.mw.wsas.exceptions.WrongStateException)2 ContextProvider (com.arjuna.mwlabs.wscf.utils.ContextProvider)2 DemoHLS (com.arjuna.wsas.tests.DemoHLS)2 DemoSOAPContextImple (com.arjuna.wsas.tests.DemoSOAPContextImple)2 DocumentBuilder (javax.xml.parsers.DocumentBuilder)2 DocumentBuilderFactory (javax.xml.parsers.DocumentBuilderFactory)2 Test (org.junit.Test)2 FailureHLS (com.arjuna.wsas.tests.FailureHLS)1