Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * JBoss, Home of Professional Open Source
   * Copyright 2010, Red Hat, Inc. and/or its affiliates,
   * 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) 2010,
  * @author JBoss, by Red Hat.
  */
 package com.arjuna.ats.arjuna.objectstore;
 
Single point of control for the management of storage instances.

Author(s):
Jonathan Halliday (jonathan.halliday@redhat.com) 2010-07
 
 public class StoreManager
 {
     private static ObjectStoreAPI actionStore = null// for BasicAction i.e. tx logging / recovery
     private static ObjectStoreAPI stateStore = null// for StateManager i.e. object type store.
     private static ObjectStoreAPI communicationStore = null// for IPC e.g. JacOrbRCServiceInit, TransactionStatusManagerItem
 
     public StoreManager(ObjectStoreAPI actionStoreObjectStoreAPI stateStoreObjectStoreAPI communicationStore) {
 
         if(. != null || . != null || . != null) {
             throw new IllegalStateException("store already initialized!");
         }
 
         . = actionStore;
         . = stateStore;
         . = communicationStore;
     }
 
     // should these values be null after stop?
     
     public static final void shutdown() {
         if( != null) {
             .stop();
         }
         if( != null) {
             .stop();
         }
         if( != null) {
             .stop();
         }
     }
 
     public static final RecoveryStore getRecoveryStore ()
     {
         return getActionStore();
     }
 
     public static final TxLog getTxLog() {
         return getActionStore();
     }
 
     /*
      * This is wrong. The participant store should not be the same as the
      * transaction log. Why has this been changed from the default?
      */
     
     public static final ParticipantStore getParticipantStore() {
         return getActionStore();
     }
 
     public static final ParticipantStore getCommunicationStore() {
         if( != null) {
             return ;
         }
 
         synchronized(StoreManager.class) {
             if( != null) {
                 return ;
             }
 
              = initStore("communicationStore");
         }
 
         return ;
     }
 
    private static final ObjectStoreAPI getActionStore()
    {
        if( != null) {
            return ;
        }
        synchronized(StoreManager.class) {
            if( != null) {
                return ;
            }
            
             = initStore(null); // default
        }
        //arjPropertyManager.getCoordinatorEnvironmentBean().isSharedTransactionLog()
        return ;
    }
    /*
     * Why are rootName and shareStatus not used?
     * 
     * @param rootName ignored
     */
    
    public static ParticipantStore setupStore (String rootNameint sharedStatus)
    {
        if( != null) {
            return ;
        }
        synchronized(StoreManager.class) {
            if( != null) {
                return ;
            }
             = initStore("stateStore");
        }
        // arjPropertyManager.getObjectStoreEnvironmentBean().getLocalOSRoot()
        return ;
    }
    private static final ObjectStoreAPI initStore(String name)
    {
        ObjectStoreEnvironmentBean storeEnvBean;
        
        try
        {
            storeEnvBean = BeanPopulator.getNamedInstance(ObjectStoreEnvironmentBean.classname);
        }
        catch (final java.lang.RuntimeException ex)
        {
            if (Utility.isAndroid())
                storeEnvBean = new ObjectStoreEnvironmentBean(); // todo android
            else
                throw ex;
        }
        
        String storeType = storeEnvBean.getObjectStoreType();
        ObjectStoreAPI store = null;
        try
        {
            store = ClassloadingUtility.loadAndInstantiateClass(ObjectStoreAPI.classstoreTypename);
        }
        catch (final java.lang.RuntimeException ex)
        {
            if (Utility.isAndroid())  // todo android
                store = null;
            else            
                throw new FatalError(..get_StoreManager_invalidtype() + " " + storeTypeex);
        }
        // if store is null then we shouldn't get here except for on android
        
        if (store == null)
        {
            try
            {
                Class<?> clazz = Class.forName(storeType);
                
                store = (ObjectStoreAPIclazz.getConstructor(ObjectStoreEnvironmentBean.class).newInstance(storeEnvBean);
            }
            catch (final Throwable ex)
            {
                throw new RuntimeException(ex);
            }
        }
        store.start();
        return store;
    }
    public static ObjectStoreAPI getTxOJStore() {
        return (ObjectStoreAPIsetupStore(null.);
    }
    public static ObjectStoreAPI getEISNameStore() {
        return (ObjectStoreAPIsetupStore(null.);
    }
New to GrepCode? Check out our FAQ X