/* * JBoss, Home of Professional Open Source * Copyright 2006, Red Hat Middleware LLC, and individual contributors * as indicated by the @author tags. * See the copyright.txt in the distribution for a full listing * of individual contributors. * This copyrighted material is made available to anyone wishing to use, * modify, copy, or redistribute it subject to the terms and conditions * of the GNU Lesser General Public License, v. 2.1. * This program is distributed in the hope that it will be useful, but WITHOUT A * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. * You should have received a copy of the GNU Lesser General Public License, * v.2.1 along with this distribution; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * MA 02110-1301, USA. * * (C) 2005-2006, * @author JBoss Inc. */ /* * Copyright (C) 2002, * * Arjuna Technologies Limited, * Newcastle upon Tyne, * Tyne and Wear, * UK. * * $Id: UserCoordinatorService.java,v 1.2 2005/05/19 12:13:20 nmcl Exp $ */ package com.arjuna.mw.wscf.api; import com.arjuna.mw.wscf.common.Qualifier; import com.arjuna.mw.wscf.common.CoordinatorId; import com.arjuna.mw.wsas.activity.Outcome; import com.arjuna.mw.wsas.completionstatus.CompletionStatus; import com.arjuna.mw.wsas.exceptions.SystemException; import com.arjuna.mw.wsas.exceptions.WrongStateException; import com.arjuna.mw.wsas.exceptions.ProtocolViolationException; import com.arjuna.mw.wscf.exceptions.*; /** * This interface defines the operations that implementations of coordination * protocols must provide. The basic interface does not imply any specific * coordination protocol. * * @author Mark Little (mark.little@arjuna.com) * @version $Id: UserCoordinatorService.java,v 1.2 2005/05/19 12:13:20 nmcl Exp $ * @since 1.0. */ public interface UserCoordinatorService { /** * @exception SystemException Thrown if any error occurs. * * @return the status of the current coordinator. If there is no * activity associated with the thread then NoActivity * will be returned. * * @see com.arjuna.mw.wsas.status.Status */ public com.arjuna.mw.wsas.status.Status status () throws SystemException; /** * If the application requires and if the coordination protocol supports * it, then this method can be used to execute a coordination protocol on * the currently enlisted participants at any time prior to the termination * of the coordination scope. * * @param cs The completion status to use when determining * how to execute the protocol. * * @exception WrongStateException Thrown if the coordinator is in a state * the does not allow coordination to occur. * @exception ProtocolViolationException Thrown if the protocol is violated * in some manner during execution. * @exception SystemException Thrown if any other error occurs. * * @return The result of executing the protocol, or null. */ public Outcome coordinate (CompletionStatus cs) throws WrongStateException, ProtocolViolationException, NoCoordinatorException, SystemException; /** * @exception SystemException Thrown if any error occurs. * * @return the complete list of qualifiers that have been registered with * the current coordinator. */ public Qualifier[] qualifiers () throws NoCoordinatorException, SystemException; /** * @exception SystemException Thrown if any error occurs. * * @return The unique identity of the current coordinator. */ public CoordinatorId identifier () throws NoCoordinatorException, SystemException; }