You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by ju...@apache.org on 2006/11/24 21:27:59 UTC
svn commit: r478986 - in
/jackrabbit/branches/1.1/jackrabbit/src/main/java/org/apache/jackrabbit:
core/SearchManager.java core/query/lucene/MultiIndex.java
core/state/XAItemStateManager.java util/Timer.java
Author: jukka
Date: Fri Nov 24 12:27:58 2006
New Revision: 478986
URL: http://svn.apache.org/viewvc?view=rev&rev=478986
Log:
1.1: Merged revisions 467292 and 469412 (JCR-600)
Added:
jackrabbit/branches/1.1/jackrabbit/src/main/java/org/apache/jackrabbit/util/Timer.java
- copied unchanged from r467292, jackrabbit/trunk/jackrabbit/src/main/java/org/apache/jackrabbit/util/Timer.java
Modified:
jackrabbit/branches/1.1/jackrabbit/src/main/java/org/apache/jackrabbit/core/SearchManager.java
jackrabbit/branches/1.1/jackrabbit/src/main/java/org/apache/jackrabbit/core/query/lucene/MultiIndex.java
jackrabbit/branches/1.1/jackrabbit/src/main/java/org/apache/jackrabbit/core/state/XAItemStateManager.java
Modified: jackrabbit/branches/1.1/jackrabbit/src/main/java/org/apache/jackrabbit/core/SearchManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/1.1/jackrabbit/src/main/java/org/apache/jackrabbit/core/SearchManager.java?view=diff&rev=478986&r1=478985&r2=478986
==============================================================================
--- jackrabbit/branches/1.1/jackrabbit/src/main/java/org/apache/jackrabbit/core/SearchManager.java (original)
+++ jackrabbit/branches/1.1/jackrabbit/src/main/java/org/apache/jackrabbit/core/SearchManager.java Fri Nov 24 12:27:58 2006
@@ -35,6 +35,7 @@
import org.apache.jackrabbit.name.NoPrefixDeclaredException;
import org.apache.jackrabbit.name.Path;
import org.apache.jackrabbit.name.PathFormat;
+import org.apache.jackrabbit.util.Timer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -55,8 +56,6 @@
import java.util.NoSuchElementException;
import java.util.Properties;
import java.util.Set;
-import java.util.Timer;
-import java.util.TimerTask;
import java.util.WeakHashMap;
/**
@@ -176,7 +175,7 @@
* Task that checks if the query handler can be shut down because it
* had been idle for {@link #idleTime} seconds.
*/
- private final TimerTask idleChecker;
+ private final Timer.Task idleChecker;
/**
* Idle time in seconds. After the query handler had been idle for this
@@ -267,7 +266,7 @@
// initialize query handler
initializeQueryHandler();
- idleChecker = new TimerTask() {
+ idleChecker = new Timer.Task() {
public void run() {
if (lastAccess + (idleTime * 1000) < System.currentTimeMillis()) {
int inUse = activeQueries.size();
Modified: jackrabbit/branches/1.1/jackrabbit/src/main/java/org/apache/jackrabbit/core/query/lucene/MultiIndex.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/1.1/jackrabbit/src/main/java/org/apache/jackrabbit/core/query/lucene/MultiIndex.java?view=diff&rev=478986&r1=478985&r2=478986
==============================================================================
--- jackrabbit/branches/1.1/jackrabbit/src/main/java/org/apache/jackrabbit/core/query/lucene/MultiIndex.java (original)
+++ jackrabbit/branches/1.1/jackrabbit/src/main/java/org/apache/jackrabbit/core/query/lucene/MultiIndex.java Fri Nov 24 12:27:58 2006
@@ -23,6 +23,7 @@
import org.apache.jackrabbit.core.state.NodeState;
import org.apache.jackrabbit.uuid.Constants;
import org.apache.jackrabbit.uuid.UUID;
+import org.apache.jackrabbit.util.Timer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.lucene.document.Document;
@@ -36,8 +37,6 @@
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
-import java.util.Timer;
-import java.util.TimerTask;
import java.util.Arrays;
import java.util.Set;
import java.util.HashSet;
@@ -167,7 +166,7 @@
* Task that is periodically called by {@link #FLUSH_TIMER} and checks
* if index should be flushed.
*/
- private final TimerTask flushTask;
+ private final Timer.Task flushTask;
/**
* The RedoLog of this <code>MultiIndex</code>.
@@ -288,7 +287,7 @@
}
lastFlushTime = System.currentTimeMillis();
- flushTask = new TimerTask() {
+ flushTask = new Timer.Task() {
public void run() {
checkFlush();
}
Modified: jackrabbit/branches/1.1/jackrabbit/src/main/java/org/apache/jackrabbit/core/state/XAItemStateManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/1.1/jackrabbit/src/main/java/org/apache/jackrabbit/core/state/XAItemStateManager.java?view=diff&rev=478986&r1=478985&r2=478986
==============================================================================
--- jackrabbit/branches/1.1/jackrabbit/src/main/java/org/apache/jackrabbit/core/state/XAItemStateManager.java (original)
+++ jackrabbit/branches/1.1/jackrabbit/src/main/java/org/apache/jackrabbit/core/state/XAItemStateManager.java Fri Nov 24 12:27:58 2006
@@ -31,6 +31,9 @@
import javax.jcr.ReferentialIntegrityException;
import javax.jcr.PropertyType;
import java.util.Iterator;
+import java.util.Map;
+import java.util.IdentityHashMap;
+import java.util.Collections;
/**
* Extension to <code>LocalItemStateManager</code> that remembers changes on
@@ -50,15 +53,11 @@
private static final String DEFAULT_ATTRIBUTE_NAME = "ChangeLog";
/**
- * ThreadLocal that holds the ChangeLog while this state manager is in one
- * of the {@link #prepare}, {@link #commit}, {@link #rollback}
- * methods.
- */
- private ThreadLocal commitLog = new ThreadLocal() {
- protected synchronized Object initialValue() {
- return new CommitLog();
- }
- };
+ * This map holds the ChangeLog on a per thread basis while this state
+ * manager is in one of the {@link #prepare}, {@link #commit}, {@link
+ * #rollback} methods.
+ */
+ private final Map commitLogs = Collections.synchronizedMap(new IdentityHashMap());
/**
* Current instance-local change log.
@@ -134,7 +133,7 @@
public void beforeOperation(TransactionContext tx) {
ChangeLog txLog = (ChangeLog) tx.getAttribute(attributeName);
if (txLog != null) {
- ((CommitLog) commitLog.get()).setChanges(txLog);
+ commitLogs.put(Thread.currentThread(), txLog);
}
}
@@ -195,7 +194,7 @@
* {@inheritDoc}
*/
public void afterOperation(TransactionContext tx) {
- ((CommitLog) commitLog.get()).setChanges(null);
+ commitLogs.remove(Thread.currentThread());
}
/**
@@ -204,7 +203,7 @@
* change log was found.
*/
public ChangeLog getChangeLog() {
- ChangeLog changeLog = ((CommitLog) commitLog.get()).getChanges();
+ ChangeLog changeLog = (ChangeLog) commitLogs.get(Thread.currentThread());
if (changeLog == null) {
changeLog = txLog;
}
@@ -426,43 +425,6 @@
if (refs != null) {
refs.removeReference(sourceId);
virtualProvider.setNodeReferences(refs);
- }
- }
-
- //--------------------------< inner classes >-------------------------------
-
- /**
- * Helper class that serves as a container for a ChangeLog in a ThreadLocal.
- * The <code>CommitLog</code> is associated with a <code>ChangeLog</code>
- * while the <code>TransactionalItemStateManager</code> is in the commit
- * method.
- */
- private static class CommitLog {
-
- /**
- * The changes that are about to be committed
- */
- private ChangeLog changes;
-
- /**
- * Sets changes that are about to be committed.
- *
- * @param changes that are about to be committed, or <code>null</code>
- * if changes have been committed and the commit log should be reset.
- */
- private void setChanges(ChangeLog changes) {
- this.changes = changes;
- }
-
- /**
- * The changes that are about to be committed, or <code>null</code> if
- * the <code>TransactionalItemStateManager</code> is currently not
- * committing any changes.
- *
- * @return the changes about to be committed.
- */
- private ChangeLog getChanges() {
- return changes;
}
}
}