001 /******************************************************************************* 002 * Portions created by Sebastian Thomschke are copyright (c) 2005-2011 Sebastian 003 * Thomschke. 004 * 005 * All Rights Reserved. This program and the accompanying materials 006 * are made available under the terms of the Eclipse Public License v1.0 007 * which accompanies this distribution, and is available at 008 * http://www.eclipse.org/legal/epl-v10.html 009 * 010 * Contributors: 011 * Sebastian Thomschke - initial implementation. 012 *******************************************************************************/ 013 package net.sf.oval.internal.util; 014 015 /** 016 * @author Sebastian Thomschke 017 */ 018 public final class ThreadLocalObjectCache<K, V> extends ThreadLocal<ObjectCache<K, V>> 019 { 020 private final int maxElementsToKeep; 021 022 public ThreadLocalObjectCache() 023 { 024 this.maxElementsToKeep = -1; 025 } 026 027 public ThreadLocalObjectCache(final int maxElementsToKeep) 028 { 029 this.maxElementsToKeep = maxElementsToKeep; 030 } 031 032 /** 033 * {@inheritDoc} 034 */ 035 @Override 036 public ObjectCache<K, V> initialValue() 037 { 038 return new ObjectCache<K, V>(maxElementsToKeep); 039 } 040 }