All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.acegisecurity.context.SecurityContextHolder Maven / Gradle / Ivy

There is a newer version: 1.0.7
Show newest version
/* Copyright 2004, 2005 Acegi Technology Pty Limited
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.acegisecurity.context;

import org.springframework.util.Assert;


/**
 * Associates a given {@link SecurityContext} with the current execution
 * thread and any new threads the current execution thread may spawn.
 * 
 * 

* To guarantee that {@link #getContext()} never returns null, this * class defaults to returning SecurityContextImpl if no * SecurityContext has ever been associated with the current * thread of execution. Despite this behaviour, in general another class will * select the concrete SecurityContext implementation to use and * expressly set an instance of that implementation against the * SecurityContextHolder. *

* * @author Ben Alex * @version $Id: SecurityContextHolder.java,v 1.5 2006/02/08 23:27:45 luke_t Exp $ * * @see java.lang.ThreadLocal * @see org.acegisecurity.context.HttpSessionContextIntegrationFilter */ public class SecurityContextHolder { //~ Static fields/initializers ============================================= private static ThreadLocal contextHolder = new ThreadLocal(); //~ Methods ================================================================ /** * Associates a new SecurityContext with the current thread of * execution. * * @param context the new SecurityContext (may not be * null) */ public static void setContext(SecurityContext context) { Assert.notNull(context, "Only non-null SecurityContext instances are permitted"); contextHolder.set(context); } /** * Obtains the SecurityContext associated with the current * thread of execution. If no SecurityContext has been * associated with the current thread of execution, a new instance of * {@link SecurityContextImpl} is associated with the current thread and * then returned. * * @return the current SecurityContext (guaranteed to never be * null) */ public static SecurityContext getContext() { if (contextHolder.get() == null) { contextHolder.set(new SecurityContextImpl()); } return (SecurityContext) contextHolder.get(); } /** * Explicitly clears the context value from thread local storage. * Typically used on completion of a request to prevent potential * misuse of the associated context information if the thread is * reused. */ public static void clearContext() { // Internally set the context value to null. This is never visible // outside the class. contextHolder.set(null); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy