Package com.arjuna.ats.txoj.lockstore

Source Code of com.arjuna.ats.txoj.lockstore.LockStore

/*
* 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) 1998, 1999, 2000,
*
* Arjuna Solutions Limited,
* Newcastle upon Tyne,
* Tyne and Wear,
* UK. 
*
* $Id: LockStore.java 2342 2006-03-30 13:06:17Z  $
*/

package com.arjuna.ats.txoj.lockstore;

import com.arjuna.ats.txoj.TxOJNames;
import com.arjuna.ats.arjuna.ObjectModel;
import com.arjuna.ats.arjuna.gandiva.ClassName;
import com.arjuna.ats.arjuna.common.Uid;
import com.arjuna.common.util.propertyservice.PropertyManager;
import com.arjuna.ats.arjuna.state.*;
import com.arjuna.ats.txoj.common.*;
import com.arjuna.ats.internal.txoj.Implementations;
import com.arjuna.ats.arjuna.gandiva.inventory.Inventory;

import com.arjuna.ats.txoj.exceptions.LockStoreException;

/**
* The lock store interface is the application's route to using
* a specific lock store implementation. The interface dynamically
* binds to an implementation of the right type.
*
* @author Mark Little (mark@arjuna.com)
* @version $Id: LockStore.java 2342 2006-03-30 13:06:17Z  $
* @since JTS 1.0.
*/

public class LockStore
{

    /*
     * Default for single lock store type.
     */
   
public LockStore (String param)
    {
  Object[] resources = new Object[1];
  resources[0] = param;

  if (!singleCheck)
  {
      singleLockStoreType = new ClassName(txojPropertyManager.propertyManager.getProperty(Environment.SINGLE_LOCKSTORE,
                      TxOJNames.Implementation_LockStore_defaultStore().stringForm()));
      singleCheck = true;
  }

  Object ptr = Inventory.inventory().createResources(singleLockStoreType, resources);

  if (ptr instanceof LockStoreImple)
      _imple = (LockStoreImple) ptr;
  else
      _imple = null;
    }

public LockStore (ClassName typeName, String param)
    {
  if (typeName == null)
  {
      if (!singleCheck)
      {
    singleLockStoreType = new ClassName(txojPropertyManager.propertyManager.getProperty(Environment.SINGLE_LOCKSTORE,
                    TxOJNames.Implementation_LockStore_defaultStore().stringForm()));
    singleCheck = true;
      }

      typeName = singleLockStoreType;
  }
     
  Object[] resources = new Object[1];
  resources[0] = param;
 
  Object ptr = Inventory.inventory().createResources(typeName, resources);

  if (ptr instanceof LockStoreImple)
      _imple = (LockStoreImple) ptr;
  else
      _imple = null;
    }

public LockStore (Object[] param)
    {
  if (param.length == 3)
  {
      ClassName typeName = (ClassName) param[0];
      int modelType = ((Integer) param[1]).intValue();
      Object[] resources = new Object[1];

      resources[0] = param[2];

      /*
       * Assume anything in the property field overrides anything given
       * by the application.
       */

      String type = null;
     
      if (modelType == ObjectModel.SINGLE)
      {
    if (!singleCheck)
    {
        type = txojPropertyManager.propertyManager.getProperty(Environment.SINGLE_LOCKSTORE);
        singleCheck = true;

        if (type != null)
      singleLockStoreType = new ClassName(type);
    }

    if (singleLockStoreType != null)
        typeName = singleLockStoreType;
      }
      else
      {
    if (!multipleCheck)
    {
        type = txojPropertyManager.propertyManager.getProperty(Environment.MULTIPLE_LOCKSTORE, null);
        multipleCheck = true;

        if (type != null)
      multipleLockStoreType = new ClassName(type);
    }

    if (multipleLockStoreType != null)
        typeName = multipleLockStoreType;
      }

      Object ptr = Inventory.inventory().createResources(typeName, resources);

      if (ptr instanceof LockStoreImple)
    _imple = (LockStoreImple) ptr;
      else
    _imple = null;
     
  }
  else
      _imple = null;
    }
     
public InputObjectState read_state (Uid u, String tName) throws LockStoreException
    {
  return ((_imple != null) ? _imple.read_state(u, tName) : null);
    }
   
public boolean remove_state (Uid u, String tname)
    {
  return ((_imple != null) ? _imple.remove_state(u, tname) : false);
    }
   
public boolean write_committed (Uid u, String tName, OutputObjectState state)
    {
  return ((_imple != null) ? _imple.write_committed(u, tName, state) : false);
    }

public ClassName className ()
    {
  return ((_imple != null) ? _imple.className() : ClassName.invalid());
    }
   
private LockStoreImple _imple;

private static ClassName singleLockStoreType = null;
private static ClassName multipleLockStoreType = null;
private static boolean   singleCheck = false;
private static boolean   multipleCheck = false;
    static
    {
  /*
   * Make sure the possible implementations are in the
   * inventory. Otherwise this is going to be a very short
   * ride!
   */

  if (!Implementations.added())
      Implementations.initialise();
    }
   
}
TOP

Related Classes of com.arjuna.ats.txoj.lockstore.LockStore

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.