[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