addressed Alex's code review for r217

git-svn-id: https://asterixdb.googlecode.com/svn/branches/asterix_spring_cleaning@238 eaa15691-b419-025a-1212-ee371bd00084
diff --git a/asterix-app/src/main/java/edu/uci/ics/asterix/api/aqlj/server/APIClientThread.java b/asterix-app/src/main/java/edu/uci/ics/asterix/api/aqlj/server/APIClientThread.java
index b9f4d57..dee3ee0 100644
--- a/asterix-app/src/main/java/edu/uci/ics/asterix/api/aqlj/server/APIClientThread.java
+++ b/asterix-app/src/main/java/edu/uci/ics/asterix/api/aqlj/server/APIClientThread.java
@@ -38,7 +38,7 @@
 import edu.uci.ics.asterix.aql.parser.AQLParser;
 import edu.uci.ics.asterix.aql.parser.ParseException;
 import edu.uci.ics.asterix.common.exceptions.AsterixException;
-import edu.uci.ics.asterix.hyracks.bootstrap.APINodeState;
+import edu.uci.ics.asterix.hyracks.bootstrap.AsterixNodeState;
 import edu.uci.ics.asterix.metadata.MetadataManager;
 import edu.uci.ics.asterix.metadata.api.IAsterixStateProxy;
 import edu.uci.ics.asterix.metadata.bootstrap.AsterixProperties;
@@ -93,7 +93,7 @@
 
         // get the port of the node data server that is running on the first nc
         IAsterixStateProxy proxy = (IAsterixStateProxy) appCtx.getDistributedState();
-        nodeDataServerPort = ((APINodeState) proxy.getAsterixNodeState(outputNodeName)).getAPINodeDataServerPort();
+        nodeDataServerPort = ((AsterixNodeState) proxy.getAsterixNodeState(outputNodeName)).getAPINodeDataServerPort();
         nodeDataServerStream = null;
 
         // write the data into the output stores directory of the nc
diff --git a/asterix-app/src/main/java/edu/uci/ics/asterix/file/DatasetOperations.java b/asterix-app/src/main/java/edu/uci/ics/asterix/file/DatasetOperations.java
index 554ce3c..1bc3411 100644
--- a/asterix-app/src/main/java/edu/uci/ics/asterix/file/DatasetOperations.java
+++ b/asterix-app/src/main/java/edu/uci/ics/asterix/file/DatasetOperations.java
@@ -24,7 +24,7 @@
 import edu.uci.ics.asterix.common.config.GlobalConfig;
 import edu.uci.ics.asterix.common.config.OptimizationConfUtil;
 import edu.uci.ics.asterix.common.context.AsterixStorageManagerInterface;
-import edu.uci.ics.asterix.common.context.AsterixTreeRegistryProvider;
+import edu.uci.ics.asterix.common.context.AsterixIndexRegistryProvider;
 import edu.uci.ics.asterix.common.exceptions.AsterixException;
 import edu.uci.ics.asterix.formats.base.IDataFormat;
 import edu.uci.ics.asterix.metadata.declared.AqlCompiledDatasetDecl;
@@ -89,7 +89,7 @@
 
         LOGGER.info("DROP DATASETPATH: " + datasetPath);
 
-        IIndexRegistryProvider<IIndex> btreeRegistryProvider = AsterixTreeRegistryProvider.INSTANCE;
+        IIndexRegistryProvider<IIndex> btreeRegistryProvider = AsterixIndexRegistryProvider.INSTANCE;
         IStorageManagerInterface storageManager = AsterixStorageManagerInterface.INSTANCE;
 
         AqlCompiledDatasetDecl adecl = metadata.findDataset(datasetName);
@@ -201,7 +201,7 @@
         }
         LOGGER.info("LOAD into File Splits: " + sb.toString());
 
-        IIndexRegistryProvider<IIndex> btreeRegistryProvider = AsterixTreeRegistryProvider.INSTANCE;
+        IIndexRegistryProvider<IIndex> btreeRegistryProvider = AsterixIndexRegistryProvider.INSTANCE;
         IStorageManagerInterface storageManager = AsterixStorageManagerInterface.INSTANCE;
         TreeIndexBulkLoadOperatorDescriptor btreeBulkLoad = new TreeIndexBulkLoadOperatorDescriptor(spec,
                 storageManager, btreeRegistryProvider, splitsAndConstraint.first, typeTraits, comparatorFactories,
diff --git a/asterix-app/src/main/java/edu/uci/ics/asterix/file/IndexOperations.java b/asterix-app/src/main/java/edu/uci/ics/asterix/file/IndexOperations.java
index cbd34de..fbb6a6f 100644
--- a/asterix-app/src/main/java/edu/uci/ics/asterix/file/IndexOperations.java
+++ b/asterix-app/src/main/java/edu/uci/ics/asterix/file/IndexOperations.java
@@ -8,7 +8,7 @@
 import edu.uci.ics.asterix.common.config.DatasetConfig.DatasetType;
 import edu.uci.ics.asterix.common.config.OptimizationConfUtil;
 import edu.uci.ics.asterix.common.context.AsterixStorageManagerInterface;
-import edu.uci.ics.asterix.common.context.AsterixTreeRegistryProvider;
+import edu.uci.ics.asterix.common.context.AsterixIndexRegistryProvider;
 import edu.uci.ics.asterix.common.exceptions.AsterixException;
 import edu.uci.ics.asterix.dataflow.data.nontagged.valueproviders.AqlPrimitiveValueProviderFactory;
 import edu.uci.ics.asterix.formats.nontagged.AqlBinaryComparatorFactoryProvider;
@@ -106,7 +106,7 @@
         String indexName = deleteStmt.getIndexName();
 
         JobSpecification spec = new JobSpecification();
-        IIndexRegistryProvider<IIndex> btreeRegistryProvider = AsterixTreeRegistryProvider.INSTANCE;
+        IIndexRegistryProvider<IIndex> btreeRegistryProvider = AsterixIndexRegistryProvider.INSTANCE;
         IStorageManagerInterface storageManager = AsterixStorageManagerInterface.INSTANCE;
 
         Pair<IFileSplitProvider, AlgebricksPartitionConstraint> splitsAndConstraint = datasetDecls
@@ -145,7 +145,7 @@
         int numPrimaryKeys = DatasetUtils.getPartitioningFunctions(compiledDatasetDecl).size();
 
         // ---------- START GENERAL BTREE STUFF
-        IIndexRegistryProvider<IIndex> treeRegistryProvider = AsterixTreeRegistryProvider.INSTANCE;
+        IIndexRegistryProvider<IIndex> treeRegistryProvider = AsterixIndexRegistryProvider.INSTANCE;
         IStorageManagerInterface storageManager = AsterixStorageManagerInterface.INSTANCE;
 
         // ---------- END GENERAL BTREE STUFF
@@ -351,7 +351,7 @@
 
         // ---------- START GENERAL BTREE STUFF
 
-        IIndexRegistryProvider<IIndex> treeRegistryProvider = AsterixTreeRegistryProvider.INSTANCE;
+        IIndexRegistryProvider<IIndex> treeRegistryProvider = AsterixIndexRegistryProvider.INSTANCE;
         IStorageManagerInterface storageManager = AsterixStorageManagerInterface.INSTANCE;
 
         // ---------- END GENERAL BTREE STUFF
@@ -578,7 +578,7 @@
 
         // ---------- START GENERAL BTREE STUFF
 
-        IIndexRegistryProvider<IIndex> treeRegistryProvider = AsterixTreeRegistryProvider.INSTANCE;
+        IIndexRegistryProvider<IIndex> treeRegistryProvider = AsterixIndexRegistryProvider.INSTANCE;
         IStorageManagerInterface storageManager = AsterixStorageManagerInterface.INSTANCE;
 
         // ---------- END GENERAL BTREE STUFF
diff --git a/asterix-app/src/main/java/edu/uci/ics/asterix/file/TestKeywordIndexJob.java b/asterix-app/src/main/java/edu/uci/ics/asterix/file/TestKeywordIndexJob.java
index a96ccee..2c18192 100644
--- a/asterix-app/src/main/java/edu/uci/ics/asterix/file/TestKeywordIndexJob.java
+++ b/asterix-app/src/main/java/edu/uci/ics/asterix/file/TestKeywordIndexJob.java
@@ -7,7 +7,7 @@
 import java.util.List;
 
 import edu.uci.ics.asterix.common.context.AsterixStorageManagerInterface;
-import edu.uci.ics.asterix.common.context.AsterixTreeRegistryProvider;
+import edu.uci.ics.asterix.common.context.AsterixIndexRegistryProvider;
 import edu.uci.ics.asterix.common.exceptions.AsterixException;
 import edu.uci.ics.asterix.dataflow.data.nontagged.comparators.AObjectAscBinaryComparatorFactory;
 import edu.uci.ics.asterix.dataflow.data.nontagged.serde.AObjectSerializerDeserializer;
@@ -66,7 +66,7 @@
 
         // ---------- START GENERAL BTREE STUFF
 
-        IIndexRegistryProvider<IIndex> btreeRegistryProvider = AsterixTreeRegistryProvider.INSTANCE;
+        IIndexRegistryProvider<IIndex> btreeRegistryProvider = AsterixIndexRegistryProvider.INSTANCE;
         IStorageManagerInterface storageManager = AsterixStorageManagerInterface.INSTANCE;
 
         // ---------- END GENERAL BTREE STUFF
diff --git a/asterix-app/src/main/java/edu/uci/ics/asterix/file/TestSecondaryIndexJob.java b/asterix-app/src/main/java/edu/uci/ics/asterix/file/TestSecondaryIndexJob.java
index 01279f3..7fec3ef 100644
--- a/asterix-app/src/main/java/edu/uci/ics/asterix/file/TestSecondaryIndexJob.java
+++ b/asterix-app/src/main/java/edu/uci/ics/asterix/file/TestSecondaryIndexJob.java
@@ -7,7 +7,7 @@
 import java.util.List;
 
 import edu.uci.ics.asterix.common.context.AsterixStorageManagerInterface;
-import edu.uci.ics.asterix.common.context.AsterixTreeRegistryProvider;
+import edu.uci.ics.asterix.common.context.AsterixIndexRegistryProvider;
 import edu.uci.ics.asterix.common.exceptions.AsterixException;
 import edu.uci.ics.asterix.dataflow.data.nontagged.comparators.AObjectAscBinaryComparatorFactory;
 import edu.uci.ics.asterix.dataflow.data.nontagged.serde.AObjectSerializerDeserializer;
@@ -66,7 +66,7 @@
 
         // ---------- START GENERAL BTREE STUFF
 
-        IIndexRegistryProvider<IIndex> btreeRegistryProvider = AsterixTreeRegistryProvider.INSTANCE;
+        IIndexRegistryProvider<IIndex> btreeRegistryProvider = AsterixIndexRegistryProvider.INSTANCE;
         IStorageManagerInterface storageManager = AsterixStorageManagerInterface.INSTANCE;
 
         // ---------- END GENERAL BTREE STUFF
diff --git a/asterix-app/src/main/java/edu/uci/ics/asterix/hyracks/bootstrap/APINodeState.java b/asterix-app/src/main/java/edu/uci/ics/asterix/hyracks/bootstrap/AsterixNodeState.java
similarity index 94%
rename from asterix-app/src/main/java/edu/uci/ics/asterix/hyracks/bootstrap/APINodeState.java
rename to asterix-app/src/main/java/edu/uci/ics/asterix/hyracks/bootstrap/AsterixNodeState.java
index 0d8981e..dbf1625 100644
--- a/asterix-app/src/main/java/edu/uci/ics/asterix/hyracks/bootstrap/APINodeState.java
+++ b/asterix-app/src/main/java/edu/uci/ics/asterix/hyracks/bootstrap/AsterixNodeState.java
@@ -16,7 +16,7 @@
 
 import java.io.Serializable;
 
-public class APINodeState implements Serializable {
+public class AsterixNodeState implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
diff --git a/asterix-app/src/main/java/edu/uci/ics/asterix/hyracks/bootstrap/CCBootstrapImpl.java b/asterix-app/src/main/java/edu/uci/ics/asterix/hyracks/bootstrap/CCBootstrapImpl.java
index 2b9f84a..ccba498 100644
--- a/asterix-app/src/main/java/edu/uci/ics/asterix/hyracks/bootstrap/CCBootstrapImpl.java
+++ b/asterix-app/src/main/java/edu/uci/ics/asterix/hyracks/bootstrap/CCBootstrapImpl.java
@@ -117,7 +117,7 @@
             Set<String> nodeNames = entry.getValue();
             Iterator<String> it = nodeNames.iterator();
             while (it.hasNext()) {
-                APINodeState ns = new APINodeState();
+                AsterixNodeState ns = new AsterixNodeState();
                 ns.setAPINodeDataServerPort(startPort++);
                 proxy.setAsterixNodeState(it.next(), ns);
             }
diff --git a/asterix-app/src/main/java/edu/uci/ics/asterix/hyracks/bootstrap/NCBootstrapImpl.java b/asterix-app/src/main/java/edu/uci/ics/asterix/hyracks/bootstrap/NCBootstrapImpl.java
index d469dd0..b1e7481 100644
--- a/asterix-app/src/main/java/edu/uci/ics/asterix/hyracks/bootstrap/NCBootstrapImpl.java
+++ b/asterix-app/src/main/java/edu/uci/ics/asterix/hyracks/bootstrap/NCBootstrapImpl.java
@@ -14,58 +14,46 @@
  */
 package edu.uci.ics.asterix.hyracks.bootstrap;
 
+import java.rmi.RemoteException;
 import java.rmi.server.UnicastRemoteObject;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
 import edu.uci.ics.asterix.api.aqlj.server.NodeDataClientThreadFactory;
 import edu.uci.ics.asterix.api.aqlj.server.ThreadedServer;
-import edu.uci.ics.asterix.common.api.INodeApplicationState;
 import edu.uci.ics.asterix.common.context.AsterixAppRuntimeContext;
-import edu.uci.ics.asterix.common.context.NodeApplicationState;
-import edu.uci.ics.asterix.common.exceptions.AsterixException;
 import edu.uci.ics.asterix.metadata.MetadataManager;
 import edu.uci.ics.asterix.metadata.MetadataNode;
 import edu.uci.ics.asterix.metadata.api.IAsterixStateProxy;
 import edu.uci.ics.asterix.metadata.api.IMetadataNode;
 import edu.uci.ics.asterix.metadata.bootstrap.MetadataBootstrap;
-import edu.uci.ics.asterix.transaction.management.service.transaction.TransactionProvider;
 import edu.uci.ics.hyracks.api.application.INCApplicationContext;
 import edu.uci.ics.hyracks.api.application.INCBootstrap;
 
 public class NCBootstrapImpl implements INCBootstrap {
     private static final Logger LOGGER = Logger.getLogger(NCBootstrapImpl.class.getName());
 
-    private final INodeApplicationState applicationState = new NodeApplicationState();
-    
     private INCApplicationContext ncApplicationContext = null;
+    private AsterixAppRuntimeContext runtimeContext;
     private String nodeId;
     private boolean isMetadataNode = false;
     private ThreadedServer apiNodeDataServer;
 
     @Override
     public void start() throws Exception {
-        ncApplicationContext.setApplicationObject(applicationState);
         nodeId = ncApplicationContext.getNodeId();
-
         if (LOGGER.isLoggable(Level.INFO)) {
             LOGGER.info("Starting Asterix node controller: " + nodeId);
         }
 
-        // Check if this node is the metadata node
-        IAsterixStateProxy proxy = (IAsterixStateProxy) ncApplicationContext.getDistributedState();
-        isMetadataNode = nodeId.equals(proxy.getAsterixProperties().getMetadataNodeName());
-
-        // Initialize the runtime context
-        AsterixAppRuntimeContext runtimeContext = new AsterixAppRuntimeContext(ncApplicationContext);
-        applicationState.setApplicationRuntimeContext(runtimeContext);
+        runtimeContext = new AsterixAppRuntimeContext(ncApplicationContext);
         runtimeContext.initialize();
 
-        // Initialize the transaction sub-system
-        TransactionProvider provider = new TransactionProvider(nodeId);
-        applicationState.setTransactionProvider(provider);
+        ncApplicationContext.setApplicationObject(runtimeContext);
 
         // Initialize metadata if this node is the metadata node
+        IAsterixStateProxy proxy = (IAsterixStateProxy) ncApplicationContext.getDistributedState();
+        isMetadataNode = nodeId.equals(proxy.getAsterixProperties().getMetadataNodeName());
         if (isMetadataNode) {
             registerRemoteMetadataNode(proxy);
 
@@ -83,19 +71,15 @@
         // API server that lives on the CC and never by a client wishing to execute AQL.
         // TODO: The API sub-system will change dramatically in the future and this code will go away, 
         // but leave it for now.
-        APINodeState ns = (APINodeState) proxy.getAsterixNodeState(nodeId);
+        AsterixNodeState ns = (AsterixNodeState) proxy.getAsterixNodeState(nodeId);
         apiNodeDataServer = new ThreadedServer(ns.getAPINodeDataServerPort(), new NodeDataClientThreadFactory());
         apiNodeDataServer.start();
     }
 
-    public void registerRemoteMetadataNode(IAsterixStateProxy proxy) throws Exception {
+    public void registerRemoteMetadataNode(IAsterixStateProxy proxy) throws RemoteException {
         IMetadataNode stub = null;
-        try {
-            MetadataNode.INSTANCE = new MetadataNode(applicationState);
-            stub = (IMetadataNode) UnicastRemoteObject.exportObject(MetadataNode.INSTANCE, 0);
-        } catch (Exception e) {
-            throw new AsterixException(e);
-        }
+        MetadataNode.INSTANCE.initialize(runtimeContext);
+        stub = (IMetadataNode) UnicastRemoteObject.exportObject(MetadataNode.INSTANCE, 0);
         proxy.setMetadataNode(stub);
 
         if (LOGGER.isLoggable(Level.INFO)) {
@@ -115,7 +99,7 @@
         }
 
         apiNodeDataServer.shutdown();
-        applicationState.getApplicationRuntimeContext().deinitialize();
+        runtimeContext.deinitialize();
     }
 
     @Override
diff --git a/asterix-common/src/main/java/edu/uci/ics/asterix/common/api/AsterixAppContextInfoImpl.java b/asterix-common/src/main/java/edu/uci/ics/asterix/common/api/AsterixAppContextInfoImpl.java
index 39642d1..20d4c48 100644
--- a/asterix-common/src/main/java/edu/uci/ics/asterix/common/api/AsterixAppContextInfoImpl.java
+++ b/asterix-common/src/main/java/edu/uci/ics/asterix/common/api/AsterixAppContextInfoImpl.java
@@ -4,7 +4,7 @@
 import java.util.Set;
 
 import edu.uci.ics.asterix.common.context.AsterixStorageManagerInterface;
-import edu.uci.ics.asterix.common.context.AsterixTreeRegistryProvider;
+import edu.uci.ics.asterix.common.context.AsterixIndexRegistryProvider;
 import edu.uci.ics.asterix.common.dataflow.IAsterixApplicationContextInfo;
 import edu.uci.ics.hyracks.storage.am.common.dataflow.IIndex;
 import edu.uci.ics.hyracks.storage.am.common.dataflow.IIndexRegistryProvider;
@@ -21,7 +21,7 @@
 
     @Override
     public IIndexRegistryProvider<IIndex> getTreeRegisterProvider() {
-        return AsterixTreeRegistryProvider.INSTANCE;
+        return AsterixIndexRegistryProvider.INSTANCE;
     }
 
     @Override
diff --git a/asterix-common/src/main/java/edu/uci/ics/asterix/common/api/INodeApplicationState.java b/asterix-common/src/main/java/edu/uci/ics/asterix/common/api/INodeApplicationState.java
deleted file mode 100644
index d1d1a43..0000000
--- a/asterix-common/src/main/java/edu/uci/ics/asterix/common/api/INodeApplicationState.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package edu.uci.ics.asterix.common.api;
-
-import edu.uci.ics.asterix.common.context.AsterixAppRuntimeContext;
-import edu.uci.ics.asterix.transaction.management.service.transaction.TransactionProvider;
-
-public interface INodeApplicationState {
-    public AsterixAppRuntimeContext getApplicationRuntimeContext();
-    
-    public void setApplicationRuntimeContext(AsterixAppRuntimeContext context);
-    
-    public TransactionProvider getTransactionProvider();
-    
-    public void setTransactionProvider(TransactionProvider provider);
-}
diff --git a/asterix-common/src/main/java/edu/uci/ics/asterix/common/config/GlobalConfig.java b/asterix-common/src/main/java/edu/uci/ics/asterix/common/config/GlobalConfig.java
index 201166e..bb39f90 100644
--- a/asterix-common/src/main/java/edu/uci/ics/asterix/common/config/GlobalConfig.java
+++ b/asterix-common/src/main/java/edu/uci/ics/asterix/common/config/GlobalConfig.java
@@ -3,14 +3,13 @@
 import java.util.logging.Logger;
 
 public class GlobalConfig {
-
     public static final boolean DEBUG = true;
+    
     public static final String ASTERIX_LOGGER_NAME = "edu.uci.ics.asterix";
+    
     public static final Logger ASTERIX_LOGGER = Logger.getLogger(ASTERIX_LOGGER_NAME);
-    // public static Level ASTERIX_LOG_LEVEL = Level.FINEST;
 
     public static final String ASTERIX_LOGFILE_PATTERN = "%t/asterix.log";
-    // "%t/asterix%g.log";
 
     public static final String DEFAULT_CONFIG_FILE_NAME = "test.properties";
 
@@ -22,9 +21,9 @@
 
     public static final String BUFFER_CACHE_PAGE_SIZE_PROPERTY = "BufferCachePageSize";
 
-    public static final String BUFFER_CACHE_SIZE_PROPERTY = "BufferCacheSize";
+    public static final String BUFFER_CACHE_NUM_PAGES_PROPERTY = "BufferCacheNumPages";
 
-    public static final int DEFAULT_BUFFER_CACHE_SIZE = 4096;
+    public static final int DEFAULT_BUFFER_CACHE_NUM_PAGES = 4096;
 
     public static final String HYRACKS_APP_NAME = "asterix";
 
@@ -33,18 +32,6 @@
     public static final String FRAME_SIZE_PROPERTY = "FrameSize";
 
     public static final float DEFAULT_BTREE_FILL_FACTOR = 1.00f;
+    
     public static int DEFAULT_INPUT_DATA_COLUMN = 0;
-
-    // static {
-    // Handler h;
-    // try {
-    // h = new ConsoleHandler();
-    // h.setFormatter(new SysoutFormatter());
-    // } catch (Exception e) {
-    // h = new ConsoleHandler();
-    // }
-    // h.setLevel(ASTERIX_LOG_LEVEL);
-    // ASTERIX_LOGGER.addHandler(h);
-    // ASTERIX_LOGGER.setLevel(ASTERIX_LOG_LEVEL);
-    // }
 }
diff --git a/asterix-common/src/main/java/edu/uci/ics/asterix/common/context/AsterixAppRuntimeContext.java b/asterix-common/src/main/java/edu/uci/ics/asterix/common/context/AsterixAppRuntimeContext.java
index 3f07e5b..36e8a4c 100644
--- a/asterix-common/src/main/java/edu/uci/ics/asterix/common/context/AsterixAppRuntimeContext.java
+++ b/asterix-common/src/main/java/edu/uci/ics/asterix/common/context/AsterixAppRuntimeContext.java
@@ -4,6 +4,8 @@
 import java.util.logging.Level;
 
 import edu.uci.ics.asterix.common.config.GlobalConfig;
+import edu.uci.ics.asterix.transaction.management.exception.ACIDException;
+import edu.uci.ics.asterix.transaction.management.service.transaction.TransactionProvider;
 import edu.uci.ics.hyracks.api.application.INCApplicationContext;
 import edu.uci.ics.hyracks.api.io.IIOManager;
 import edu.uci.ics.hyracks.storage.am.common.dataflow.IIndex;
@@ -18,18 +20,20 @@
 import edu.uci.ics.hyracks.storage.common.file.IFileMapProvider;
 
 public class AsterixAppRuntimeContext {
-    private INCApplicationContext ncApplicationContext;
+    private final INCApplicationContext ncApplicationContext;
+    
     private IndexRegistry<IIndex> indexRegistry;
     private IFileMapManager fileMapManager;
     private IBufferCache bufferCache;
+    private TransactionProvider provider;
 
-    public AsterixAppRuntimeContext(INCApplicationContext ncAppContext) {
-        this.ncApplicationContext = ncAppContext;
+    public AsterixAppRuntimeContext(INCApplicationContext ncApplicationContext) {
+        this.ncApplicationContext = ncApplicationContext;
     }
 
-    public void initialize() throws IOException {
+    public void initialize() throws IOException, ACIDException {
         int pageSize = getBufferCachePageSize();
-        int cacheSize = getBufferCacheSize();
+        int numPages = getBufferCacheNumPages();
 
         // Initialize file map manager
         fileMapManager = new AsterixFileMapManager();
@@ -38,10 +42,13 @@
         ICacheMemoryAllocator allocator = new HeapBufferAllocator();
         IPageReplacementStrategy prs = new ClockPageReplacementStrategy();
         IIOManager ioMgr = ncApplicationContext.getRootContext().getIOManager();
-        bufferCache = new BufferCache(ioMgr, allocator, prs, fileMapManager, pageSize, cacheSize, Integer.MAX_VALUE);
+        bufferCache = new BufferCache(ioMgr, allocator, prs, fileMapManager, pageSize, numPages, Integer.MAX_VALUE);
 
         // Initialize the index registry
         indexRegistry = new IndexRegistry<IIndex>();
+
+        // Initialize the transaction sub-system
+        provider = new TransactionProvider(ncApplicationContext.getNodeId());
     }
 
     private int getBufferCachePageSize() {
@@ -55,7 +62,6 @@
                     GlobalConfig.ASTERIX_LOGGER.warning("Wrong buffer cache page size argument. "
                             + "Using default value: " + pageSize);
                 }
-                return pageSize;
             }
         }
 
@@ -66,26 +72,26 @@
         return pageSize;
     }
 
-    private int getBufferCacheSize() {
-        int cacheSize = GlobalConfig.DEFAULT_BUFFER_CACHE_SIZE;
-        String cacheSizeStr = System.getProperty(GlobalConfig.BUFFER_CACHE_SIZE_PROPERTY, null);
-        if (cacheSizeStr != null) {
+    private int getBufferCacheNumPages() {
+        int numPages = GlobalConfig.DEFAULT_BUFFER_CACHE_NUM_PAGES;
+        String numPagesStr = System.getProperty(GlobalConfig.BUFFER_CACHE_NUM_PAGES_PROPERTY, null);
+        if (numPagesStr != null) {
             try {
-                cacheSize = Integer.parseInt(cacheSizeStr);
+                numPages = Integer.parseInt(numPagesStr);
             } catch (NumberFormatException nfe) {
                 if (GlobalConfig.ASTERIX_LOGGER.isLoggable(Level.WARNING)) {
                     GlobalConfig.ASTERIX_LOGGER.warning("Wrong buffer cache size argument. " + "Using default value: "
-                            + cacheSize);
+                            + numPages);
                 }
-                return cacheSize;
+                return numPages;
             }
         }
 
         if (GlobalConfig.ASTERIX_LOGGER.isLoggable(Level.INFO)) {
-            GlobalConfig.ASTERIX_LOGGER.info("Buffer cache size: " + cacheSize);
+            GlobalConfig.ASTERIX_LOGGER.info("Buffer cache size (number of pages): " + numPages);
         }
 
-        return cacheSize;
+        return numPages;
     }
 
     public void deinitialize() {
@@ -104,4 +110,8 @@
         return indexRegistry;
     }
 
+    public TransactionProvider getTransactionProvider() {
+        return provider;
+    }
+
 }
\ No newline at end of file
diff --git a/asterix-common/src/main/java/edu/uci/ics/asterix/common/context/AsterixIndexRegistryProvider.java b/asterix-common/src/main/java/edu/uci/ics/asterix/common/context/AsterixIndexRegistryProvider.java
new file mode 100644
index 0000000..bc59291
--- /dev/null
+++ b/asterix-common/src/main/java/edu/uci/ics/asterix/common/context/AsterixIndexRegistryProvider.java
@@ -0,0 +1,23 @@
+package edu.uci.ics.asterix.common.context;
+
+import edu.uci.ics.hyracks.api.context.IHyracksTaskContext;
+import edu.uci.ics.hyracks.storage.am.common.dataflow.IIndex;
+import edu.uci.ics.hyracks.storage.am.common.dataflow.IIndexRegistryProvider;
+import edu.uci.ics.hyracks.storage.am.common.dataflow.IndexRegistry;
+
+public class AsterixIndexRegistryProvider implements IIndexRegistryProvider<IIndex> {
+
+    private static final long serialVersionUID = 1L;
+
+    public static final AsterixIndexRegistryProvider INSTANCE = new AsterixIndexRegistryProvider();
+
+    private AsterixIndexRegistryProvider() {
+    }
+
+    @Override
+    public IndexRegistry<IIndex> getRegistry(IHyracksTaskContext ctx) {
+        return ((AsterixAppRuntimeContext) ctx.getJobletContext().getApplicationContext().getApplicationObject())
+                .getIndexRegistry();
+    }
+
+}
diff --git a/asterix-common/src/main/java/edu/uci/ics/asterix/common/context/AsterixStorageManagerInterface.java b/asterix-common/src/main/java/edu/uci/ics/asterix/common/context/AsterixStorageManagerInterface.java
index befcfe8..a1b5a94 100644
--- a/asterix-common/src/main/java/edu/uci/ics/asterix/common/context/AsterixStorageManagerInterface.java
+++ b/asterix-common/src/main/java/edu/uci/ics/asterix/common/context/AsterixStorageManagerInterface.java
@@ -1,6 +1,5 @@
 package edu.uci.ics.asterix.common.context;
 
-import edu.uci.ics.asterix.common.api.INodeApplicationState;
 import edu.uci.ics.hyracks.api.context.IHyracksTaskContext;
 import edu.uci.ics.hyracks.storage.common.IStorageManagerInterface;
 import edu.uci.ics.hyracks.storage.common.buffercache.IBufferCache;
@@ -13,15 +12,13 @@
 
     @Override
     public IBufferCache getBufferCache(IHyracksTaskContext ctx) {
-        INodeApplicationState applicationState = (INodeApplicationState) ctx.getJobletContext().getApplicationContext()
-                .getApplicationObject();
-        return applicationState.getApplicationRuntimeContext().getBufferCache();
+        return ((AsterixAppRuntimeContext) ctx.getJobletContext().getApplicationContext().getApplicationObject())
+                .getBufferCache();
     }
 
     @Override
     public IFileMapProvider getFileMapProvider(IHyracksTaskContext ctx) {
-        INodeApplicationState applicationState = (INodeApplicationState) ctx.getJobletContext().getApplicationContext()
-                .getApplicationObject();
-        return applicationState.getApplicationRuntimeContext().getFileMapManager();
+        return ((AsterixAppRuntimeContext) ctx.getJobletContext().getApplicationContext().getApplicationObject())
+                .getFileMapManager();
     }
 }
diff --git a/asterix-common/src/main/java/edu/uci/ics/asterix/common/context/AsterixTreeRegistryProvider.java b/asterix-common/src/main/java/edu/uci/ics/asterix/common/context/AsterixTreeRegistryProvider.java
deleted file mode 100644
index 9055c4a..0000000
--- a/asterix-common/src/main/java/edu/uci/ics/asterix/common/context/AsterixTreeRegistryProvider.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package edu.uci.ics.asterix.common.context;
-
-import edu.uci.ics.asterix.common.api.INodeApplicationState;
-import edu.uci.ics.hyracks.api.context.IHyracksTaskContext;
-import edu.uci.ics.hyracks.storage.am.common.dataflow.IIndex;
-import edu.uci.ics.hyracks.storage.am.common.dataflow.IIndexRegistryProvider;
-import edu.uci.ics.hyracks.storage.am.common.dataflow.IndexRegistry;
-
-public class AsterixTreeRegistryProvider implements IIndexRegistryProvider<IIndex> {
-
-    private static final long serialVersionUID = 1L;
-
-    public static final AsterixTreeRegistryProvider INSTANCE = new AsterixTreeRegistryProvider();
-
-    private AsterixTreeRegistryProvider() {
-    }
-
-    @Override
-    public IndexRegistry<IIndex> getRegistry(IHyracksTaskContext ctx) {
-        INodeApplicationState applicationState = (INodeApplicationState) ctx.getJobletContext().getApplicationContext()
-                .getApplicationObject();
-        return applicationState.getApplicationRuntimeContext().getIndexRegistry();
-    }
-
-}
diff --git a/asterix-common/src/main/java/edu/uci/ics/asterix/common/context/NodeApplicationState.java b/asterix-common/src/main/java/edu/uci/ics/asterix/common/context/NodeApplicationState.java
deleted file mode 100644
index c5cf752..0000000
--- a/asterix-common/src/main/java/edu/uci/ics/asterix/common/context/NodeApplicationState.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package edu.uci.ics.asterix.common.context;
-
-import edu.uci.ics.asterix.common.api.INodeApplicationState;
-import edu.uci.ics.asterix.transaction.management.service.transaction.TransactionProvider;
-
-public class NodeApplicationState implements INodeApplicationState {
-
-    private AsterixAppRuntimeContext appRuntimeContext;
-    private TransactionProvider provider;
-    
-    @Override
-    public AsterixAppRuntimeContext getApplicationRuntimeContext() {
-        return appRuntimeContext;
-    }
-
-    @Override
-    public void setApplicationRuntimeContext(AsterixAppRuntimeContext context) {
-        this.appRuntimeContext = context;
-    }
-
-    @Override
-    public TransactionProvider getTransactionProvider() {
-        return provider;
-    }
-
-    @Override
-    public void setTransactionProvider(TransactionProvider provider) {
-        this.provider = provider;
-    }
-
-}
diff --git a/asterix-hyracks-glue/pom.xml b/asterix-hyracks-glue/pom.xml
index 416ae58..5f991a4 100644
--- a/asterix-hyracks-glue/pom.xml
+++ b/asterix-hyracks-glue/pom.xml
@@ -38,11 +38,6 @@
        <scope>compile</scope>
     </dependency>
     <dependency>
-       <groupId>edu.uci.ics.hyracks</groupId>
-       <artifactId>hyracks-storage-am-btree</artifactId>
-       <version>0.2.1-SNAPSHOT</version>
-    </dependency>
-    <dependency>
     	<groupId>edu.uci.ics.asterix</groupId>
     	<artifactId>asterix-common</artifactId>
     	<version>0.0.4-SNAPSHOT</version>
diff --git a/asterix-hyracks-glue/src/main/java/edu/uci/ics/asterix/runtime/transaction/TreeIndexInsertUpdateDeleteOperatorDescriptor.java b/asterix-hyracks-glue/src/main/java/edu/uci/ics/asterix/runtime/transaction/TreeIndexInsertUpdateDeleteOperatorDescriptor.java
index ffc9a9a..6718287 100644
--- a/asterix-hyracks-glue/src/main/java/edu/uci/ics/asterix/runtime/transaction/TreeIndexInsertUpdateDeleteOperatorDescriptor.java
+++ b/asterix-hyracks-glue/src/main/java/edu/uci/ics/asterix/runtime/transaction/TreeIndexInsertUpdateDeleteOperatorDescriptor.java
@@ -15,11 +15,10 @@
 
 package edu.uci.ics.asterix.runtime.transaction;
 
-import edu.uci.ics.asterix.common.api.INodeApplicationState;
+import edu.uci.ics.asterix.common.context.AsterixAppRuntimeContext;
 import edu.uci.ics.asterix.transaction.management.exception.ACIDException;
 import edu.uci.ics.asterix.transaction.management.service.transaction.ITransactionManager;
 import edu.uci.ics.asterix.transaction.management.service.transaction.TransactionContext;
-import edu.uci.ics.asterix.transaction.management.service.transaction.TransactionProvider;
 import edu.uci.ics.hyracks.api.context.IHyracksTaskContext;
 import edu.uci.ics.hyracks.api.dataflow.IOperatorNodePushable;
 import edu.uci.ics.hyracks.api.dataflow.value.IBinaryComparatorFactory;
@@ -64,9 +63,8 @@
             IRecordDescriptorProvider recordDescProvider, int partition, int nPartitions) {
         TransactionContext txnContext;
         try {
-            INodeApplicationState applicationState = (INodeApplicationState) ctx.getJobletContext()
-                    .getApplicationContext().getApplicationObject();
-            ITransactionManager transactionManager = applicationState.getTransactionProvider().getTransactionManager();
+            ITransactionManager transactionManager = ((AsterixAppRuntimeContext) ctx.getJobletContext().getApplicationContext()
+                    .getApplicationObject()).getTransactionProvider().getTransactionManager();
             txnContext = transactionManager.getTransactionContext(transactionId);
         } catch (ACIDException ae) {
             throw new RuntimeException(" could not obtain context for invalid transaction id " + transactionId);
diff --git a/asterix-hyracks-glue/src/main/java/edu/uci/ics/asterix/runtime/transaction/TreeIndexInsertUpdateDeleteOperatorNodePushable.java b/asterix-hyracks-glue/src/main/java/edu/uci/ics/asterix/runtime/transaction/TreeIndexInsertUpdateDeleteOperatorNodePushable.java
index 2d03101..dd1c747 100644
--- a/asterix-hyracks-glue/src/main/java/edu/uci/ics/asterix/runtime/transaction/TreeIndexInsertUpdateDeleteOperatorNodePushable.java
+++ b/asterix-hyracks-glue/src/main/java/edu/uci/ics/asterix/runtime/transaction/TreeIndexInsertUpdateDeleteOperatorNodePushable.java
@@ -16,7 +16,7 @@
 
 import java.nio.ByteBuffer;
 
-import edu.uci.ics.asterix.common.api.INodeApplicationState;
+import edu.uci.ics.asterix.common.context.AsterixAppRuntimeContext;
 import edu.uci.ics.asterix.transaction.management.exception.ACIDException;
 import edu.uci.ics.asterix.transaction.management.resource.ICloseable;
 import edu.uci.ics.asterix.transaction.management.resource.TransactionalResourceRepository;
@@ -54,7 +54,7 @@
     private IIndexAccessor indexAccessor;
     private ILockManager lockManager;
     private final TransactionContext txnContext;
-    private TreeLogger bTreeLogger;
+    private TreeLogger treeLogger;
     private final TransactionProvider transactionProvider;
 
     public TreeIndexInsertUpdateDeleteOperatorNodePushable(TransactionContext txnContext,
@@ -68,9 +68,8 @@
         this.op = op;
         tuple.setFieldPermutation(fieldPermutation);
         this.txnContext = txnContext;
-        INodeApplicationState applicationState = (INodeApplicationState) ctx.getJobletContext().getApplicationContext()
-                .getApplicationObject();
-        transactionProvider = applicationState.getTransactionProvider();
+        AsterixAppRuntimeContext runtimeContext = (AsterixAppRuntimeContext) ctx.getJobletContext().getApplicationContext().getApplicationObject();
+        transactionProvider = runtimeContext.getTransactionProvider();
     }
 
     public void initializeTransactionSupport() {
@@ -85,7 +84,7 @@
         transactionProvider.getTransactionalResourceRepository().registerTransactionalResource(resourceId,
                 treeIndexHelper.getIndex());
         lockManager = transactionProvider.getLockManager();
-        bTreeLogger = transactionProvider.getTreeLoggerRepository().getTreeLogger(resourceId);
+        treeLogger = transactionProvider.getTreeLoggerRepository().getTreeLogger(resourceId);
     }
 
     @Override
@@ -123,7 +122,7 @@
                         lockManager.lock(txnContext, resourceId,
                                 TransactionManagementConstants.LockManagerConstants.LockMode.EXCLUSIVE);
                         indexAccessor.insert(tuple);
-                        bTreeLogger.generateLogRecord(transactionProvider, txnContext, op, tuple);
+                        treeLogger.generateLogRecord(transactionProvider, txnContext, op, tuple);
                         break;
                     }
 
@@ -131,7 +130,7 @@
                         lockManager.lock(txnContext, resourceId,
                                 TransactionManagementConstants.LockManagerConstants.LockMode.EXCLUSIVE);
                         indexAccessor.delete(tuple);
-                        bTreeLogger.generateLogRecord(transactionProvider, txnContext, op, tuple);
+                        treeLogger.generateLogRecord(transactionProvider, txnContext, op, tuple);
                         break;
                     }
 
diff --git a/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/MetadataNode.java b/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/MetadataNode.java
index 3bc7b75..6ac37c3 100644
--- a/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/MetadataNode.java
+++ b/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/MetadataNode.java
@@ -19,9 +19,9 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import edu.uci.ics.asterix.common.api.INodeApplicationState;
 import edu.uci.ics.asterix.common.config.DatasetConfig.DatasetType;
 import edu.uci.ics.asterix.common.config.DatasetConfig.IndexType;
+import edu.uci.ics.asterix.common.context.AsterixAppRuntimeContext;
 import edu.uci.ics.asterix.common.exceptions.AsterixException;
 import edu.uci.ics.asterix.formats.nontagged.AqlSerializerDeserializerProvider;
 import edu.uci.ics.asterix.metadata.api.IMetadataIndex;
@@ -83,15 +83,18 @@
     // TODO: Temporary transactional resource id for metadata.
     private static final byte[] metadataResourceId = MetadataNode.class.toString().getBytes();
 
-    private final IndexRegistry<IIndex> indexRegistry;
-    private final TransactionProvider transactionProvider;
+    private IndexRegistry<IIndex> indexRegistry;
+    private TransactionProvider transactionProvider;
 
-    public static MetadataNode INSTANCE;
+    public static final MetadataNode INSTANCE = new MetadataNode();
 
-    public MetadataNode(INodeApplicationState applicationState) {
+    private MetadataNode() {
         super();
-        this.transactionProvider = applicationState.getTransactionProvider();
-        this.indexRegistry = applicationState.getApplicationRuntimeContext().getIndexRegistry();
+    }
+    
+    public void initialize(AsterixAppRuntimeContext runtimeContext) {
+        this.transactionProvider = runtimeContext.getTransactionProvider();
+        this.indexRegistry = runtimeContext.getIndexRegistry();
     }
 
     @Override
diff --git a/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/bootstrap/MetadataBootstrap.java b/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/bootstrap/MetadataBootstrap.java
index daa5fd0..6c388c2 100644
--- a/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/bootstrap/MetadataBootstrap.java
+++ b/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/bootstrap/MetadataBootstrap.java
@@ -23,7 +23,6 @@
 import java.util.List;
 import java.util.logging.Logger;
 
-import edu.uci.ics.asterix.common.api.INodeApplicationState;
 import edu.uci.ics.asterix.common.config.DatasetConfig.DatasetType;
 import edu.uci.ics.asterix.common.config.DatasetConfig.IndexType;
 import edu.uci.ics.asterix.common.context.AsterixAppRuntimeContext;
@@ -103,10 +102,10 @@
                 MetadataSecondaryIndexes.DATATYPENAME_ON_DATATYPE_INDEX };
     }
 
-    public static void startUniverse(AsterixProperties asterixProperities, INCApplicationContext ncApplicationContext)
+    public static void startUniverse(AsterixProperties asterixProperties, INCApplicationContext ncApplicationContext)
             throws Exception {
-        INodeApplicationState applicationState = (INodeApplicationState) ncApplicationContext.getApplicationObject();
-        AsterixAppRuntimeContext runtimeContext = applicationState.getApplicationRuntimeContext();
+        AsterixAppRuntimeContext runtimeContext = (AsterixAppRuntimeContext) ncApplicationContext
+                .getApplicationObject();
 
         // Initialize static metadata objects, such as record types and metadata
         // index descriptors.
@@ -118,18 +117,18 @@
         initLocalIndexArrays();
 
         boolean isNewUniverse = true;
-        TransactionalResourceRepository resourceRepository = applicationState.getTransactionProvider()
+        TransactionalResourceRepository resourceRepository = runtimeContext.getTransactionProvider()
                 .getTransactionalResourceRepository();
         resourceRepository.registerTransactionalResourceManager(TreeResourceManager.ID, new TreeResourceManager(
-                applicationState.getTransactionProvider()));
+                runtimeContext.getTransactionProvider()));
 
-        metadataNodeName = asterixProperities.getMetadataNodeName();
-        isNewUniverse = asterixProperities.isNewUniverse();
-        metadataStore = asterixProperities.getMetadataStore();
-        nodeNames = asterixProperities.getNodeNames();
+        metadataNodeName = asterixProperties.getMetadataNodeName();
+        isNewUniverse = asterixProperties.isNewUniverse();
+        metadataStore = asterixProperties.getMetadataStore();
+        nodeNames = asterixProperties.getNodeNames();
         // nodeStores = asterixProperity.getStores();
 
-        outputDir = asterixProperities.getOutputDir();
+        outputDir = asterixProperties.getOutputDir();
         if (outputDir != null) {
             (new File(outputDir)).mkdirs();
         }
diff --git a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/job/listener/JobEventListenerFactory.java b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/job/listener/JobEventListenerFactory.java
index 13839cd..2d49982 100644
--- a/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/job/listener/JobEventListenerFactory.java
+++ b/asterix-runtime/src/main/java/edu/uci/ics/asterix/runtime/job/listener/JobEventListenerFactory.java
@@ -1,10 +1,9 @@
 package edu.uci.ics.asterix.runtime.job.listener;
 
-import edu.uci.ics.asterix.common.api.INodeApplicationState;
+import edu.uci.ics.asterix.common.context.AsterixAppRuntimeContext;
 import edu.uci.ics.asterix.transaction.management.exception.ACIDException;
 import edu.uci.ics.asterix.transaction.management.service.transaction.ITransactionManager;
 import edu.uci.ics.asterix.transaction.management.service.transaction.TransactionContext;
-import edu.uci.ics.asterix.transaction.management.service.transaction.TransactionProvider;
 import edu.uci.ics.asterix.transaction.management.service.transaction.TransactionContext.TransactionType;
 import edu.uci.ics.hyracks.api.context.IHyracksJobletContext;
 import edu.uci.ics.hyracks.api.job.IJobletEventListener;
@@ -29,8 +28,8 @@
             @Override
             public void jobletFinish(JobStatus jobStatus) {
                 try {
-                    INodeApplicationState applicationState = (INodeApplicationState) jobletContext.getApplicationContext().getApplicationObject();
-                    ITransactionManager txnManager = applicationState.getTransactionProvider().getTransactionManager();
+                    ITransactionManager txnManager = ((AsterixAppRuntimeContext) jobletContext.getApplicationContext()
+                            .getApplicationObject()).getTransactionProvider().getTransactionManager();
                     TransactionContext txnContext = txnManager.getTransactionContext(txnId);
                     txnContext.setTransactionType(transactionalWrite ? TransactionType.READ_WRITE
                             : TransactionType.READ);
diff --git a/asterix-transactions/pom.xml b/asterix-transactions/pom.xml
index 6e38100..d7703fd 100644
--- a/asterix-transactions/pom.xml
+++ b/asterix-transactions/pom.xml
@@ -25,11 +25,12 @@
 	</build>
 
 	<dependencies>
-		<dependency>
-			<groupId>edu.uci.ics.hyracks</groupId>
-			<artifactId>hyracks-storage-am-btree</artifactId>
-			<version>0.2.1-SNAPSHOT</version>
-			<scope>compile</scope>
-		</dependency>
+	    <dependency>
+  		<groupId>edu.uci.ics.hyracks</groupId>
+  		<artifactId>hyracks-storage-am-common</artifactId>
+  		<version>0.2.1-SNAPSHOT</version>
+  		<type>jar</type>
+  		<scope>compile</scope>
+  	</dependency>
 	</dependencies>
 </project>
diff --git a/asterix-transactions/src/main/java/edu/uci/ics/asterix/transaction/management/resource/TransactionalResourceRepository.java b/asterix-transactions/src/main/java/edu/uci/ics/asterix/transaction/management/resource/TransactionalResourceRepository.java
index 2bbcc92..25309e1 100644
--- a/asterix-transactions/src/main/java/edu/uci/ics/asterix/transaction/management/resource/TransactionalResourceRepository.java
+++ b/asterix-transactions/src/main/java/edu/uci/ics/asterix/transaction/management/resource/TransactionalResourceRepository.java
@@ -33,35 +33,19 @@
 public class TransactionalResourceRepository {
 
     private Map<ByteBuffer, Object> resourceRepository = new HashMap<ByteBuffer, Object>(); // repository
-    // containing
-    // resources
-    // that
-    // participate
-    // in
-    // transactions
 
     private Map<Byte, IResourceManager> resourceMgrRepository = new HashMap<Byte, IResourceManager>(); // repository
 
-    // containing
-    // resource
-    // managers
-
     public void registerTransactionalResource(byte[] resourceBytes, Object resource) {
+        // convert to ByteBuffer so that a byte[] can be used as a key in a hash map.
         ByteBuffer resourceId = ByteBuffer.wrap(resourceBytes); // need to
-        // convert to
-        // ByteBuffer so
-        // that a byte[]
-        // can be used
-        // as a key in a
-        // hash map.
+
         synchronized (resourceRepository) {
             if (resourceRepository.get(resourceId) == null) {
                 resourceRepository.put(resourceId, resource);
-                resourceRepository.notifyAll(); // notify all reader threads
-                // that are waiting to retrieve
-                // a resource from the
-                // repository
-
+                
+                // wake up threads waiting for the resource
+                resourceRepository.notifyAll();
             }
         }
     }
@@ -70,11 +54,9 @@
         synchronized (resourceMgrRepository) {
             if (resourceMgrRepository.get(id) == null) {
                 resourceMgrRepository.put(id, resourceMgr);
-                resourceMgrRepository.notifyAll(); // notify all reader threads
-                // that are waiting to
-                // retrieve a resource
-                // manager from the
-                // repository
+                
+                // wake up threads waiting for the resource manager
+                resourceMgrRepository.notifyAll();
             }
         }
     }
@@ -97,15 +79,6 @@
 
     public IResourceManager getTransactionalResourceMgr(byte id) {
         synchronized (resourceMgrRepository) {
-//            while (resourceMgrRepository.get(id) == null) {
-//                try {
-//                    resourceMgrRepository.wait();
-//                } catch (InterruptedException ie) {
-//                    ie.printStackTrace();
-//                    break; // the thread might be interrupted due to other
-//                    // failures occurring elsewhere, break from the loop
-//                }
-//            }
             return resourceMgrRepository.get(id);
         }