[Mulgara-svn] r1355 - in trunk/src/jar: resolver-lucene/java/org/mulgara/resolver/lucene resolver-memory/java/org/mulgara/resolver/memory resolver-spi/java/org/mulgara/resolver/spi resolver-store/java/org/mulgara/resolver/store

ronald at mulgara.org ronald at mulgara.org
Thu Oct 23 13:12:29 UTC 2008


Author: ronald
Date: 2008-10-23 06:12:28 -0700 (Thu, 23 Oct 2008)
New Revision: 1355

Modified:
   trunk/src/jar/resolver-lucene/java/org/mulgara/resolver/lucene/LuceneResolver.java
   trunk/src/jar/resolver-memory/java/org/mulgara/resolver/memory/MemoryXAResource.java
   trunk/src/jar/resolver-spi/java/org/mulgara/resolver/spi/AbstractXAResource.java
   trunk/src/jar/resolver-store/java/org/mulgara/resolver/store/StatementStoreXAResource.java
Log:
Changed TxInfo creation for AbstractXAResource to be a bit cleaner: subclasses
must now implement an appropriate factory method rather than passing in a
pre-constructed instance. This allows reuse of the XAResource instance.

Modified: trunk/src/jar/resolver-lucene/java/org/mulgara/resolver/lucene/LuceneResolver.java
===================================================================
--- trunk/src/jar/resolver-lucene/java/org/mulgara/resolver/lucene/LuceneResolver.java	2008-10-23 13:12:18 UTC (rev 1354)
+++ trunk/src/jar/resolver-lucene/java/org/mulgara/resolver/lucene/LuceneResolver.java	2008-10-23 13:12:28 UTC (rev 1355)
@@ -435,6 +435,8 @@
    */
   private static class LuceneXAResource
       extends AbstractXAResource<RMInfo<LuceneXAResource.LuceneTxInfo>,LuceneXAResource.LuceneTxInfo> {
+    private final Collection<FullTextStringIndex> indexes;
+
     /**
      * Construct a {@link LuceneXAResource} with a specified transaction timeout.
      *
@@ -443,13 +445,20 @@
      * @param indexes            the list of lucene indexes
      */
     public LuceneXAResource(int transactionTimeout, ResolverFactory resolverFactory, Collection<FullTextStringIndex> indexes) {
-      super(transactionTimeout, resolverFactory, new LuceneTxInfo(indexes));
+      super(transactionTimeout, resolverFactory);
+      this.indexes = indexes;
     }
 
     protected RMInfo<LuceneTxInfo> newResourceManager() {
       return new RMInfo<LuceneTxInfo>();
     }
 
+    protected LuceneTxInfo newTransactionInfo() {
+      LuceneTxInfo txInfo = new LuceneTxInfo();
+      txInfo.indexes = indexes;
+      return txInfo;
+    }
+
     //
     // Methods implementing XAResource
     //
@@ -480,10 +489,6 @@
 
     static class LuceneTxInfo extends TxInfo {
       public Collection<FullTextStringIndex> indexes;
-
-      public LuceneTxInfo(Collection<FullTextStringIndex> indexes) {
-        this.indexes = indexes;
-      }
     }
   }
 }

Modified: trunk/src/jar/resolver-memory/java/org/mulgara/resolver/memory/MemoryXAResource.java
===================================================================
--- trunk/src/jar/resolver-memory/java/org/mulgara/resolver/memory/MemoryXAResource.java	2008-10-23 13:12:18 UTC (rev 1354)
+++ trunk/src/jar/resolver-memory/java/org/mulgara/resolver/memory/MemoryXAResource.java	2008-10-23 13:12:28 UTC (rev 1355)
@@ -49,6 +49,8 @@
  */
 public class MemoryXAResource
     extends AbstractXAResource<RMInfo<MemoryXAResource.MemoryTxInfo>,MemoryXAResource.MemoryTxInfo> {
+  private final XAResolverSession session;
+
   //
   // Constructor
   //
@@ -63,14 +65,15 @@
   public MemoryXAResource(int transactionTimeout,
                           XAResolverSession session,
                           ResolverFactory resolverFactory) {
-    super(transactionTimeout, resolverFactory, newTxInfo(session));
+    super(transactionTimeout, resolverFactory);
+    this.session = session;
   }
 
   protected RMInfo<MemoryTxInfo> newResourceManager() {
     return new RMInfo<MemoryTxInfo>();
   }
 
-  private static MemoryTxInfo newTxInfo(XAResolverSession session) {
+  protected MemoryTxInfo newTransactionInfo() {
     MemoryTxInfo ti = new MemoryTxInfo();
     ti.session = session;
     return ti;

Modified: trunk/src/jar/resolver-spi/java/org/mulgara/resolver/spi/AbstractXAResource.java
===================================================================
--- trunk/src/jar/resolver-spi/java/org/mulgara/resolver/spi/AbstractXAResource.java	2008-10-23 13:12:18 UTC (rev 1354)
+++ trunk/src/jar/resolver-spi/java/org/mulgara/resolver/spi/AbstractXAResource.java	2008-10-23 13:12:28 UTC (rev 1355)
@@ -52,7 +52,6 @@
     new WeakHashMap<ResolverFactory,RMInfo<? extends TxInfo>>();
 
   protected final R resourceManager;
-  protected final T tmpTxInfo;
 
 
   //
@@ -64,11 +63,8 @@
    *
    * @param transactionTimeout  transaction timeout period, in seconds
    * @param resolverFactory     the resolver-factory we belong to
-   * @param txInfo              the initial transaction-info
    */
-  public AbstractXAResource(int transactionTimeout,
-                            ResolverFactory resolverFactory,
-                            T txInfo) {
+  public AbstractXAResource(int transactionTimeout, ResolverFactory resolverFactory) {
     super(transactionTimeout);
 
     synchronized (resourceManagers) {
@@ -78,8 +74,6 @@
         resourceManagers.put(resolverFactory, rmgr = newResourceManager());
       this.resourceManager = rmgr;
     }
-
-    this.tmpTxInfo = txInfo;
   }
 
   /**
@@ -89,6 +83,12 @@
    */
   protected abstract R newResourceManager();
 
+  /**
+   * Create a new transaction-info instance. This is invoked whenever a new
+   * transaction is started.
+   */
+  protected abstract T newTransactionInfo();
+
   //
   // Methods implementing XAResource
   //
@@ -121,7 +121,7 @@
 
       case XAResource.TMJOIN:
         if (tx == null) {
-          resourceManager.transactions.put(new XidWrapper(xid), tx = tmpTxInfo);
+          resourceManager.transactions.put(new XidWrapper(xid), tx = newTransactionInfo());
           tx.xid = xid;
           isNew = true;
         }

Modified: trunk/src/jar/resolver-store/java/org/mulgara/resolver/store/StatementStoreXAResource.java
===================================================================
--- trunk/src/jar/resolver-store/java/org/mulgara/resolver/store/StatementStoreXAResource.java	2008-10-23 13:12:18 UTC (rev 1354)
+++ trunk/src/jar/resolver-store/java/org/mulgara/resolver/store/StatementStoreXAResource.java	2008-10-23 13:12:28 UTC (rev 1355)
@@ -66,6 +66,10 @@
   // Set of session's that have been prepared.
   public static Set<XAResolverSession> preparing = new HashSet<XAResolverSession>();
 
+  private final XAResolverSession session;
+
+  private final SimpleXAResource[] resources;
+
   //
   // Constructor
   //
@@ -82,15 +86,16 @@
                                   XAResolverSession session,
                                   SimpleXAResource[] resources,
                                   ResolverFactory resolverFactory) {
-    super(transactionTimeout, resolverFactory, newTxInfo(session, resources));
+    super(transactionTimeout, resolverFactory);
+    this.session = session;
+    this.resources = resources;
   }
 
   protected RMInfo<StatementStoreTxInfo> newResourceManager() {
     return new RMInfo<StatementStoreTxInfo>();
   }
 
-  private static StatementStoreTxInfo newTxInfo(XAResolverSession session,
-                                                SimpleXAResource[] resources) {
+  protected StatementStoreTxInfo newTransactionInfo() {
     StatementStoreTxInfo ti = new StatementStoreTxInfo();
     ti.session = session;
     ti.resources = resources;




More information about the Mulgara-svn mailing list