/*******************************************************************************
 * Copyright (c) 2000, 2003 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials 
 * are made available under the terms of the Common Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/cpl-v10.html
 * 
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/
package net.sourceforge.phpdt.internal.core.util;

import java.util.Hashtable;

/**
 * Implementation of data structure remembering an Object value by thread. Its
 * purpose is to ease writing multi-threaded algorithms by providing a per
 * thread data structure.
 */
public class PerThreadObject {

	private Hashtable internalMap = new Hashtable(3); // synchronized map

	/**
	 * Answer the current map for this thread
	 */
	public Object getCurrent() {
		return this.internalMap.get(Thread.currentThread());
	}

	/**
	 * Set the map for this current thread - setting to null is equivalent to
	 * removing it
	 */
	public void setCurrent(Object current) {
		if (current == null) {
			this.internalMap.remove(Thread.currentThread());
		} else {
			this.internalMap.put(Thread.currentThread(), current);
		}
	}
}
