Return-Path: Delivered-To: apmail-lucene-java-commits-archive@www.apache.org Received: (qmail 15496 invoked from network); 16 Sep 2008 14:24:39 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 16 Sep 2008 14:24:39 -0000 Received: (qmail 28255 invoked by uid 500); 16 Sep 2008 14:24:35 -0000 Delivered-To: apmail-lucene-java-commits-archive@lucene.apache.org Received: (qmail 28233 invoked by uid 500); 16 Sep 2008 14:24:35 -0000 Mailing-List: contact java-commits-help@lucene.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: java-dev@lucene.apache.org Delivered-To: mailing list java-commits@lucene.apache.org Received: (qmail 28224 invoked by uid 99); 16 Sep 2008 14:24:35 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 16 Sep 2008 07:24:35 -0700 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 16 Sep 2008 14:23:45 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id D72462388A1B; Tue, 16 Sep 2008 07:24:17 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r695899 - in /lucene/java/trunk/src: java/org/apache/lucene/util/CloseableThreadLocal.java test/org/apache/lucene/index/TestCloseableThreadLocal.java Date: Tue, 16 Sep 2008 14:24:17 -0000 To: java-commits@lucene.apache.org From: mikemccand@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20080916142417.D72462388A1B@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org 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