Package com.arjuna.ats.internal.jta.transaction.arjunacore.subordinate.jca

Source Code of com.arjuna.ats.internal.jta.transaction.arjunacore.subordinate.jca.SubordinateAtomicAction

/*
* 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) 2003,
*
* Hewlett-Packard Arjuna Labs, Newcastle upon Tyne, Tyne and Wear, UK.
*
* $Id: SubordinateAtomicAction.java 2342 2006-03-30 13:06:17Z  $
*/

package com.arjuna.ats.internal.jta.transaction.arjunacore.subordinate.jca;

import java.io.IOException;

import javax.transaction.xa.Xid;

import com.arjuna.ats.arjuna.common.Uid;
import com.arjuna.ats.arjuna.state.InputObjectState;
import com.arjuna.ats.arjuna.state.OutputObjectState;
import com.arjuna.ats.jta.xa.XidImple;

/**
* A subordinate JTA transaction; used when importing another transaction
* context via JCA. This overrides the basic subordinate transaction simply so
* that we can ensure JCA transactions are laid out in the right place in the
* object store.
*
* @author mcl
*/

public class SubordinateAtomicAction extends
    com.arjuna.ats.internal.jta.transaction.arjunacore.subordinate.SubordinateAtomicAction
{

  public SubordinateAtomicAction ()
  {
    super()// does start for us

    _activated = true;
  }

  public SubordinateAtomicAction (Uid actId)
  {
    super(actId);
   
    _activated = activate(); // if this fails, we'll retry later.
  }
 
  public SubordinateAtomicAction (int timeout, Xid xid)
  {
    super(timeout); // implicit start (done in base class)
   
    _theXid = new XidImple(xid);
    _activated = true;
  }
 
  /**
   * The type of the class is used to locate the state of the transaction log
   * in the object store.
   *
   * Overloads BasicAction.type()
   *
   * @return a string representation of the hierarchy of the class for storing
   *         logs in the transaction object store.
   */

  public String type ()
  {
    return getType();
  }

  public static final String getType ()
  {
    return "/StateManager/BasicAction/TwoPhaseCoordinator/AtomicAction/SubordinateAtomicAction/JCA";
  }
 
  public final Xid getXid ()
  {
    return _theXid;
  }

  public boolean save_state (OutputObjectState os, int t)
  {
    if (_theXid != null)
    {
      try
      {
        os.packBoolean(true);
       
        ((XidImple) _theXid).packInto(os);
      }
      catch (IOException ex)
      {
        return false;
      }
    }

    return super.save_state(os, t);
  }
 
  public boolean restore_state (InputObjectState os, int t)
  {
    try
    {
      boolean haveXid = os.unpackBoolean();
     
      if (haveXid)
      {
        _theXid = new XidImple();
       
        ((XidImple) _theXid).unpackFrom(os);
      }
    }
    catch (IOException ex)
    {
      return false;
    }
   
    return super.restore_state(os, t);
  }

    public boolean activated ()
    {
      return _activated;
    }

  private Xid _theXid;
    private boolean _activated;
}
TOP

Related Classes of com.arjuna.ats.internal.jta.transaction.arjunacore.subordinate.jca.SubordinateAtomicAction

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.