Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * 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, 2003, 2004,
  *
  * Arjuna Technologies Limited,
  * Newcastle upon Tyne,
  * Tyne and Wear,
  * UK.
  *
  * $Id: DurableTwoPhaseCommitParticipant.java,v 1.1.2.2 2004/08/09 12:34:24 nmcl Exp $
  */
 
 package com.arjuna.mwlabs.wst.at.participants;
 
 
 
 

Author(s):
Mark Little (mark.little@arjuna.com)
Version:
$Id: DurableTwoPhaseCommitParticipant.java,v 1.1.2.2 2004/08/09 12:34:24 nmcl Exp $
Since:
1.0.
 
 
 public class DurableTwoPhaseCommitParticipant implements Participant
 {
     // default ctor for crash recovery
     public DurableTwoPhaseCommitParticipant() {
     }
 
     public DurableTwoPhaseCommitParticipant (Durable2PCParticipant resourceString identifier)
 	{
 		 = resource;
 		 = identifier;
 	}

    
tell the participant to prepare

Returns:
the participant's vote or a cancel vote the aprticipant is null
 
     public Vote prepare () throws InvalidParticipantException,
 	{
 		try
 		{
 			if ( != null)
 			{
 
 				if (vt instanceof com.arjuna.wst.ReadOnly)
 				{
 					 = true;
 
 					return new VoteReadOnly();
 				}
 				else
 				{
 					if (vt instanceof com.arjuna.wst.Prepared)
 						return new VoteConfirm();
 					else
 					{
 						 = true;
 
 						return new VoteCancel();
					}
				}
			}
			else
				return new VoteCancel();
		}
		//	catch (com.arjuna.mw.wst.exceptions.WrongStateException ex)
		{
			throw new WrongStateException(ex.toString());
		}
		/*
		 * catch (com.arjuna.mw.wst.exceptions.HeuristicHazardException ex {
		 * throw new HeuristicHazardException(ex.toString()); } catch
		 * (com.arjuna.mw.wst.exceptions.HeuristicMixedException ex) { throw new
		 * HeuristicMixedException(ex.toString()); }
		 */
		//	catch (com.arjuna.mw.wst.exceptions.SystemException ex)
		{
            if(ex instanceof com.arjuna.wst.stub.SystemCommunicationException) {
                // log an error here or else the participant may be left hanging
                // waiting for a prepare
                throw new SystemCommunicationException(ex.toString());
            } else {
			throw new SystemException(ex.toString());
            }
        }
	}

    
attempt to commit the participant
    public void confirm () throws InvalidParticipantException,
	{
		if ( != null)
		{
			try
			{
				if (!)
				{
				}
			}
			//	    catch (com.arjuna.mw.wst.exceptions.WrongStateException ex)
			{
				throw new WrongStateException(ex.toString());
			}
			/*
			 * catch (com.arjuna.mw.wst.exceptions.HeuristicHazardException ex) {
			 * throw new HeuristicHazardException(ex.toString()); } catch
			 * (com.arjuna.mw.wst.exceptions.HeuristicMixedException ex) { throw
			 * new HeuristicMixedException(ex.toString()); } catch
			 * (com.arjuna.mw.wst.exceptions.HeuristicRollbackException ex) {
			 * throw new HeuristicCancelException(ex.toString()); }
			 */
			//	    catch (com.arjuna.mw.wst.exceptions.SystemException ex)
			{
                    // log an error here -- we will end up writing a heuristic transaction record too
                    throw new SystemCommunicationException(ex.toString());
                } else {
                    throw new SystemException(ex.toString());
                }
            }
		}
		else
	}

    
attempt to cancel the participant
	public void cancel () throws InvalidParticipantException,
	{
		if ( != null)
		{
			try
			{
			}
			//	    catch (com.arjuna.mw.wst.exceptions.WrongStateException ex)
			{
				throw new WrongStateException(ex.toString());
			}
			/*
			 * catch (com.arjuna.mw.wst.exceptions.HeuristicHazardException ex) {
			 * throw new HeuristicHazardException(ex.toString()); } catch
			 * (com.arjuna.mw.wst.exceptions.HeuristicMixedException ex) { throw
			 * new HeuristicMixedException(ex.toString()); } catch
			 * (com.arjuna.mw.wst.exceptions.HeuristicCommitException ex) {
			 * throw new HeuristicConfirmException(ex.toString()); }
			 */
			//	    catch (com.arjuna.mw.wst.exceptions.SystemException ex)
			{
                if(ex instanceof com.arjuna.wst.stub.SystemCommunicationException) {
                    // log an error here -- if the participant is dead it will retry anyway
                    throw new SystemCommunicationException(ex.toString());
                } else {
                    throw new SystemException(ex.toString());
                }
			}
		}
		else
	}
	// TODO mark ParticipantCancelledException explicitly?
    public void confirmOnePhase () throws InvalidParticipantException,
	{
		if ( != null)
		{
			Vote v = null;
			try
			{
				v = prepare();
			}
            catch (Exception ex)
			{
                // either the prepare timed out or the participant was invalid or in an
                // invalid state
                
                ex.printStackTrace();
				v = new VoteCancel();
			}
                        if (v instanceof VoteReadOnly)
                        {
                             = true;
                        }
                        else if (v instanceof VoteCancel)
			{
				 = false;
                // TODO only do this if we didn't return VoteCancel
                try {
                    cancel();
                } catch (SystemCommunicationException sce) {
                    // if the rollback times out as well as the prepare we
                    // return an exception which indicates a failed transaction
                }
                throw new ParticipantCancelledException();
			}
			else
			{
				if (v instanceof VoteConfirm)
				{
					try
					{
					}
					{
						throw ex;
					}
					{
						throw ex;
					}
					{
						throw ex;
					}
					catch (Exception ex)
					{
					}
				}
				else
				{
					cancel(); // TODO error
				}
			}
		}
		else
	}
	public void forget () throws InvalidParticipantException,
	{
	}
	public void unknown () throws SystemException
	{
		/*
		 * If the transaction is unknown, then we assume it rolled back.
		 */
		try
		{
		}
		catch (Exception ex)
		{
			// TODO
		}
	}
	public String id () throws SystemException
	{
		return ;
	}
	public boolean save_state (OutputObjectState os)
	{
        return PersistableParticipantHelper.save_state(os) ;
	}
	public boolean restore_state (InputObjectState os)
	{
         = (Durable2PCParticipant)PersistableParticipantHelper.restore_state(os) ;
        return true ;
	}
	private String _id;
	private boolean _readonly;
	private boolean _rolledback;
New to GrepCode? Check out our FAQ X