[Mulgara-svn] r1164 - trunk/src/jar/resolver/java/org/mulgara/resolver

pag at mulgara.org pag at mulgara.org
Sat Aug 23 01:56:40 UTC 2008


Author: pag
Date: 2008-08-22 18:56:39 -0700 (Fri, 22 Aug 2008)
New Revision: 1164

Modified:
   trunk/src/jar/resolver/java/org/mulgara/resolver/StringPoolSession.java
Log:
Giving the XANodePool to the XAStringPool so that the string pool can ask for the nodes it needs. This is needed for stringpools that manage their own nodes.

Modified: trunk/src/jar/resolver/java/org/mulgara/resolver/StringPoolSession.java
===================================================================
--- trunk/src/jar/resolver/java/org/mulgara/resolver/StringPoolSession.java	2008-08-23 01:55:15 UTC (rev 1163)
+++ trunk/src/jar/resolver/java/org/mulgara/resolver/StringPoolSession.java	2008-08-23 01:56:39 UTC (rev 1164)
@@ -149,6 +149,7 @@
     this.globalLock = globalLock;
     this.state = OBTAIN;
     this.currentThread = null;
+    this.persistentStringPool.setNodePool(this.persistentNodePool);
   }
 
 
@@ -230,8 +231,7 @@
       this.resources = resources;
 
       synchronized (this.globalLock) {
-        this.persistentStringPool.refresh();
-        this.persistentNodePool.refresh();
+        this.persistentStringPool.refresh();  // calls refresh on the node pool
         // !!Review: Call rollback on temporary? NB. Can't rollback non XA-SP/NP.
         //this.temporaryStringPool.refresh();
         //this.temporaryNodePool.refresh();
@@ -261,11 +261,8 @@
     
         state = PREPARE;
     
-        persistentStringPool.prepare();
-        persistentNodePool.prepare();
-        for (int i = 0; i < resources.length; i++) {
-          resources[i].prepare();
-        }
+        persistentStringPool.prepare();  // calls prepare on the node pool
+        for (int i = 0; i < resources.length; i++) resources[i].prepare();
       }
     } finally {
       releaseCurrentThread();
@@ -288,11 +285,8 @@
     
         state = COMMIT;
 
-        persistentStringPool.commit();
-        persistentNodePool.commit();
-        for (int i = 0; i < resources.length; i++) {
-          resources[i].commit();
-        }
+        persistentStringPool.commit();  // calls commit() on the node pool
+        for (int i = 0; i < resources.length; i++) resources[i].commit();
       }
     } finally {
       releaseCurrentThread();
@@ -311,11 +305,8 @@
           throw new SimpleXAResourceException("Attempting to rollback phase outside transaction");
         }
         state = ROLLBACK;
-        persistentStringPool.rollback();
-        persistentNodePool.rollback();
-        for (int i = 0; i < resources.length; i++) {
-          resources[i].rollback();
-        }
+        persistentStringPool.rollback();  // calls rollback on the node pool
+        for (int i = 0; i < resources.length; i++) resources[i].rollback();
       }
     } finally {
       releaseCurrentThread();
@@ -338,15 +329,12 @@
     
         state = RELEASE;
     
-        persistentStringPool.release();
-        persistentNodePool.release();
+        persistentStringPool.release(); // calls release on the node pool
     
         // TODO determine if release() should be called for the temp components.
         //temporaryStringPool.release();
         //temporaryNodePool.release();
-        for (int i = 0; i < resources.length; i++) {
-          resources[i].release();
-        }
+        for (int i = 0; i < resources.length; i++) resources[i].release();
       }
     } finally {
       releaseCurrentThread();
@@ -585,8 +573,7 @@
       if ((flags & WRITE_MASK) == WRITE) {
         // Node does not already exist: create node in requested pool.
         if ((flags & STORE_MASK) == PERSIST) {
-          localNode = persistentNodePool.newNode();
-          persistentStringPool.put(localNode, relativeSPObject);
+          localNode = persistentStringPool.put(relativeSPObject);  // allocates from the internal node pool
           if (logger.isDebugEnabled()) {
             //logger.debug("Inserted " + spObject + " as " + localNode + " into persistent sp");
           }




More information about the Mulgara-svn mailing list