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    }