/**
 * Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License 2.0 
 * which accompanies this distribution, and is available at
 * https://www.eclipse.org/legal/epl-2.0/
 *
 * SPDX-License-Identifier: EPL-2.0
 *
 * Contributors:
 *         Florian Pirchner - Initial implementation
 */
package org.eclipse.osbp.runtime.web.common;

// TODO: Auto-generated Javadoc
/**
 * An accessor class that returns objects that are registered with the current
 * thread.
 */
public class ContextAccess {

	/** The Constant webContext. */
	private static final ThreadLocal<IWebContext> webContext = new ThreadLocal<IWebContext>();

	/**
	 * Returns the context that was registered with the current thread. If no
	 * context was registered then <code>null</code> will be returned.
	 *
	 * @return the context
	 */
	public static IWebContext getContext() {
		return webContext.get();
	}

	/**
	 * Registers the given web context with the current thread.
	 *
	 * @param session
	 *            the new context
	 */
	public static void setContext(IWebContext session) {
		webContext.set(session);
	}

}
