Search in sources :

Example 1 with Outcome

use of com.arjuna.mw.wsas.activity.Outcome in project narayana by jbosstm.

the class UserActivityImple method end.

/**
 * Complete the activity with the completion status provided.
 *
 * @param cs The CompletionStatus to use.
 *
 * @exception InvalidActivityException Thrown if the current activity is
 * invalid in the execution environment.
 * @exception ActiveChildException Thrown if the current activity is a
 * @exception WrongStateException Thrown if the current activity is not in a
 * state that allows it to be completed, or is incompatible with the
 * completion status provided.
 * @exception ProtocolViolationException Thrown if the a violation of the
 * activity service or HLS protocol occurs.
 * @exception NoActivityException Thrown if there is no activity
 * associated with the invoking thread or none with the given type of coordinator.
 * @exception NoPermissionException Thrown if the invoking thread does
 * not have permission to terminate the transaction.
 * @exception SystemException Thrown if some other error occurred.
 *
 * @return the result of completing the activity. Null is valid and must
 * be interpreted within the context of any HLS that may exist.
 *
 * @see com.arjuna.mw.wsas.Outcome
 */
public Outcome end(CompletionStatus cs) throws InvalidActivityException, WrongStateException, ProtocolViolationException, SystemException, NoActivityException, NoPermissionException, ActiveChildException {
    ActivityImple currentActivity = current();
    if (currentActivity == null) {
        throw new NoActivityException();
    }
    /*
	if (currentActivity.parent() != null)
	    throw new ActiveChildException();
	*/
    Outcome res = null;
    String serviceType = currentActivity.serviceType();
    try {
        res = currentActivity.end(cs);
    } catch (Exception ex) {
        wsasLogger.i18NLogger.warn_UserActivityImple_2(ex);
    }
    HLS hls = HLSManager.getHighLevelService(serviceType);
    if (hls != null) {
        try {
            hls.completed();
        } catch (SystemException ex) {
            wsasLogger.i18NLogger.warn_UserActivityImple_3(ex);
        }
    }
    pop();
    return res;
}
Also used : SystemException(com.arjuna.mw.wsas.exceptions.SystemException) ActivityImple(com.arjuna.mwlabs.wsas.activity.ActivityImple) Outcome(com.arjuna.mw.wsas.activity.Outcome) NoActivityException(com.arjuna.mw.wsas.exceptions.NoActivityException) EmptyStackException(java.util.EmptyStackException) SystemException(com.arjuna.mw.wsas.exceptions.SystemException) InvalidTimeoutException(com.arjuna.mw.wsas.exceptions.InvalidTimeoutException) ActiveChildException(com.arjuna.mw.wsas.exceptions.ActiveChildException) NoPermissionException(com.arjuna.mw.wsas.exceptions.NoPermissionException) NoActivityException(com.arjuna.mw.wsas.exceptions.NoActivityException) WrongStateException(com.arjuna.mw.wsas.exceptions.WrongStateException) InvalidActivityException(com.arjuna.mw.wsas.exceptions.InvalidActivityException) ProtocolViolationException(com.arjuna.mw.wsas.exceptions.ProtocolViolationException) HLS(com.arjuna.mw.wsas.activity.HLS)

Example 2 with Outcome

use of com.arjuna.mw.wsas.activity.Outcome in project narayana by jbosstm.

the class UserActivityImple method end.

/**
 * Complete the activity with the completion status provided.
 *
 * @exception InvalidActivityException Thrown if the current activity is
 * invalid in the execution environment.
 * @exception ActiveChildException Thrown if the current activity is a
 * @exception WrongStateException Thrown if the current activity is not in a
 * state that allows it to be completed, or is incompatible with the
 * completion status provided.
 * @exception ProtocolViolationException Thrown if the a violation of the
 * activity service or HLS protocol occurs.
 * @exception NoActivityException Thrown if there is no activity
 * associated with the invoking thread or none with the given type of coordinator.
 * @exception NoPermissionException Thrown if the invoking thread does
 * not have permission to terminate the transaction.
 * @exception SystemException Thrown if some other error occurred.
 *
 * @return the result of completing the activity. Null is valid and must
 * be interpreted within the context of any HLS that may exist.
 *
 * @see com.arjuna.mw.wsas.activity.Outcome
 * @message com.arjuna.mwlabs.wsas.UserActivityImple_2 [com.arjuna.mwlabs.wsas.UserActivityImple_2] - currentActivity.end threw:
 * @message com.arjuna.mwlabs.wsas.UserActivityImple_3 [com.arjuna.mwlabs.wsas.UserActivityImple_3] - Activity.completed caught:
 */
public Outcome end() throws InvalidActivityException, WrongStateException, ProtocolViolationException, SystemException, NoActivityException, SystemException, NoPermissionException, ActiveChildException {
    ActivityImple currentActivity = current();
    if (currentActivity == null) {
        throw new NoActivityException();
    }
    Outcome res = null;
    String serviceType = currentActivity.serviceType();
    try {
        res = currentActivity.end();
    } catch (Exception ex) {
        wsasLogger.i18NLogger.warn_UserActivityImple_1(ex);
    }
    HLS hls = HLSManager.getHighLevelService(serviceType);
    if (hls != null) {
        try {
            hls.completed();
        } catch (SystemException ex) {
            wsasLogger.i18NLogger.warn_UserActivityImple_3(ex);
        }
    }
    pop();
    return res;
}
Also used : SystemException(com.arjuna.mw.wsas.exceptions.SystemException) ActivityImple(com.arjuna.mwlabs.wsas.activity.ActivityImple) Outcome(com.arjuna.mw.wsas.activity.Outcome) NoActivityException(com.arjuna.mw.wsas.exceptions.NoActivityException) EmptyStackException(java.util.EmptyStackException) SystemException(com.arjuna.mw.wsas.exceptions.SystemException) InvalidTimeoutException(com.arjuna.mw.wsas.exceptions.InvalidTimeoutException) ActiveChildException(com.arjuna.mw.wsas.exceptions.ActiveChildException) NoPermissionException(com.arjuna.mw.wsas.exceptions.NoPermissionException) NoActivityException(com.arjuna.mw.wsas.exceptions.NoActivityException) WrongStateException(com.arjuna.mw.wsas.exceptions.WrongStateException) InvalidActivityException(com.arjuna.mw.wsas.exceptions.InvalidActivityException) ProtocolViolationException(com.arjuna.mw.wsas.exceptions.ProtocolViolationException) HLS(com.arjuna.mw.wsas.activity.HLS)

Example 3 with Outcome

use of com.arjuna.mw.wsas.activity.Outcome in project narayana by jbosstm.

the class ActivityImple method end.

/**
 * Complete the activity with the completion status provided.
 *
 * @param cs The CompletionStatus to use.
 *
 * @exception InvalidActivityException
 *                Thrown if the current activity is not known about by the
 *                activity system.
 * @exception WrongStateException
 *                Thrown if the current activity is not in a state that
 *                allows it to be completed, or is incompatible with the
 *                completion status provided.
 * @exception ProtocolViolationException
 *                Thrown if the a violation of the activity service or HLS
 *                protocol occurs.
 * @exception NoPermissionException
 *                Thrown if the invoking thread does not have permission to
 *                terminate the transaction.
 * @exception SystemException
 *                Thrown if some other error occurred.
 *
 * @return the result of completing the activity. Null is valid and must be
 *         interpreted within the context of any HLS that may exist.
 *
 * @see com.arjuna.mw.wsas.Outcome
 */
public Outcome end(com.arjuna.mw.wsas.completionstatus.CompletionStatus cs) throws InvalidActivityException, WrongStateException, ProtocolViolationException, NoPermissionException, SystemException {
    synchronized (this) {
        if (_status.equals(Active.instance())) {
            if (activeChildren()) {
                throw new InvalidActivityException(wsasLogger.i18NLogger.get_activity_ActivityImple_2() + " " + this);
            }
            Outcome result = null;
            try {
                setCompletionStatus(cs);
            } catch (Exception ex) {
            // ignore and complete with the status we have.
            }
            _status = Completing.instance();
            try {
                HLS hls = HLSManager.getHighLevelService(_serviceType);
                if (hls != null) {
                    result = hls.complete(getCompletionStatus());
                } else {
                    result = new OutcomeImple(Failure.instance());
                }
            } catch (SystemException ex) {
                /*
					 * Currently if an exception occurs and we get here, then we
					 * forget all of the other outcomes and just return the
					 * exception. Does this make sense? How will applications be
					 * able to tell which HLSes have processed the outcome and
					 * which have not?
					 */
                result = new OutcomeImple(new HLSException(ex), Failure.instance());
            }
            if (_parent != null) {
                _parent.removeChild(this);
                _parent = null;
            }
            _status = Completed.instance();
            _result = result;
            return _result;
        } else {
            if (_result != null)
                return _result;
            else {
                throw new WrongStateException(wsasLogger.i18NLogger.get_activity_ActivityImple_3() + " " + _status);
            }
        }
    }
}
Also used : InvalidActivityException(com.arjuna.mw.wsas.exceptions.InvalidActivityException) SystemException(com.arjuna.mw.wsas.exceptions.SystemException) Outcome(com.arjuna.mw.wsas.activity.Outcome) WrongStateException(com.arjuna.mw.wsas.exceptions.WrongStateException) HLSException(com.arjuna.mw.wsas.exceptions.HLSException) SystemException(com.arjuna.mw.wsas.exceptions.SystemException) HLSException(com.arjuna.mw.wsas.exceptions.HLSException) InvalidTimeoutException(com.arjuna.mw.wsas.exceptions.InvalidTimeoutException) NoPermissionException(com.arjuna.mw.wsas.exceptions.NoPermissionException) NoActivityException(com.arjuna.mw.wsas.exceptions.NoActivityException) WrongStateException(com.arjuna.mw.wsas.exceptions.WrongStateException) InvalidActivityException(com.arjuna.mw.wsas.exceptions.InvalidActivityException) ProtocolViolationException(com.arjuna.mw.wsas.exceptions.ProtocolViolationException) HLS(com.arjuna.mw.wsas.activity.HLS)

Example 4 with Outcome

use of com.arjuna.mw.wsas.activity.Outcome in project narayana by jbosstm.

the class StatusCheckTest method testStatusCheck.

@Test
public void testStatusCheck() throws Exception {
    UserActivity ua = UserActivityFactory.userActivity();
    if (ua.status() != NoActivity.instance()) {
        fail("Status should be NoActivity " + ua.status());
    }
    ua.start("dummy");
    if (ua.status() != Active.instance()) {
        fail("Status should be Active " + ua.status());
    }
    Outcome res = ua.end();
    if (!res.completedStatus().equals(Failure.instance())) {
        fail("Completed status should be Failure " + res.completedStatus());
    }
}
Also used : Outcome(com.arjuna.mw.wsas.activity.Outcome) UserActivity(com.arjuna.mw.wsas.UserActivity) Test(org.junit.Test)

Aggregations

Outcome (com.arjuna.mw.wsas.activity.Outcome)4 HLS (com.arjuna.mw.wsas.activity.HLS)3 InvalidActivityException (com.arjuna.mw.wsas.exceptions.InvalidActivityException)3 InvalidTimeoutException (com.arjuna.mw.wsas.exceptions.InvalidTimeoutException)3 NoActivityException (com.arjuna.mw.wsas.exceptions.NoActivityException)3 NoPermissionException (com.arjuna.mw.wsas.exceptions.NoPermissionException)3 ProtocolViolationException (com.arjuna.mw.wsas.exceptions.ProtocolViolationException)3 SystemException (com.arjuna.mw.wsas.exceptions.SystemException)3 WrongStateException (com.arjuna.mw.wsas.exceptions.WrongStateException)3 ActiveChildException (com.arjuna.mw.wsas.exceptions.ActiveChildException)2 ActivityImple (com.arjuna.mwlabs.wsas.activity.ActivityImple)2 EmptyStackException (java.util.EmptyStackException)2 UserActivity (com.arjuna.mw.wsas.UserActivity)1 HLSException (com.arjuna.mw.wsas.exceptions.HLSException)1 Test (org.junit.Test)1