You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-commits@lucene.apache.org by mi...@apache.org on 2008/09/16 16:24:17 UTC
svn commit: r695899 - in /lucene/java/trunk/src:
java/org/apache/lucene/util/CloseableThreadLocal.java
test/org/apache/lucene/index/TestCloseableThreadLocal.java
Author: mikemccand
Date: Tue Sep 16 07:24:17 2008
New Revision: 695899
URL: http://svn.apache.org/viewvc?rev=695899&view=rev
Log:
LUCENE-1388: add initialValue() method to CloseableThreadLocal
Added:
lucene/java/trunk/src/test/org/apache/lucene/index/TestCloseableThreadLocal.java (with props)
Modified:
lucene/java/trunk/src/java/org/apache/lucene/util/CloseableThreadLocal.java
Modified: lucene/java/trunk/src/java/org/apache/lucene/util/CloseableThreadLocal.java
URL: http://svn.apache.org/viewvc/lucene/java/trunk/src/java/org/apache/lucene/util/CloseableThreadLocal.java?rev=695899&r1=695898&r2=695899&view=diff
==============================================================================
--- lucene/java/trunk/src/java/org/apache/lucene/util/CloseableThreadLocal.java (original)
+++ lucene/java/trunk/src/java/org/apache/lucene/util/CloseableThreadLocal.java Tue Sep 16 07:24:17 2008
@@ -42,17 +42,26 @@
* references are cleared and then GC is freely able to
* reclaim space by objects stored in it. */
-public final class CloseableThreadLocal {
+public class CloseableThreadLocal {
private ThreadLocal t = new ThreadLocal();
private Map hardRefs = new HashMap();
-
+
+ protected Object initialValue() {
+ return null;
+ }
+
public Object get() {
WeakReference weakRef = (WeakReference) t.get();
- if (weakRef == null)
- return null;
- else {
+ if (weakRef == null) {
+ Object iv = initialValue();
+ if (iv != null) {
+ set(iv);
+ return iv;
+ } else
+ return null;
+ } else {
Object v = weakRef.get();
// This can never be null, because we hold a hard
// reference to the underlying object:
Added: lucene/java/trunk/src/test/org/apache/lucene/index/TestCloseableThreadLocal.java
URL: http://svn.apache.org/viewvc/lucene/java/trunk/src/test/org/apache/lucene/index/TestCloseableThreadLocal.java?rev=695899&view=auto
==============================================================================
--- lucene/java/trunk/src/test/org/apache/lucene/index/TestCloseableThreadLocal.java (added)
+++ lucene/java/trunk/src/test/org/apache/lucene/index/TestCloseableThreadLocal.java Tue Sep 16 07:24:17 2008
@@ -0,0 +1,20 @@
+package org.apache.lucene.index;
+
+import org.apache.lucene.util.CloseableThreadLocal;
+import org.apache.lucene.util.LuceneTestCase;
+
+public class TestCloseableThreadLocal extends LuceneTestCase {
+ public static final String TEST_VALUE = "initvaluetest";
+
+ public void testInitValue() {
+ InitValueThreadLocal tl = new InitValueThreadLocal();
+ String str = (String)tl.get();
+ assertEquals(TEST_VALUE, str);
+ }
+
+ public class InitValueThreadLocal extends CloseableThreadLocal {
+ protected Object initialValue() {
+ return TEST_VALUE;
+ }
+ }
+}
Propchange: lucene/java/trunk/src/test/org/apache/lucene/index/TestCloseableThreadLocal.java
------------------------------------------------------------------------------
svn:eol-style = native