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

org.springframework.aop.framework.AopContext Maven / Gradle / Ivy

There is a newer version: 5.3.34
Show newest version
/*
 * Copyright 2002-2006 the original author or authors.
 *
 * 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.springframework.aop.framework;

/**
 * Class containing static methods used to obtain information about the current AOP invocation.
 *
 * 

The currentProxy() method is usable if the AOP framework is configured to * expose the current proxy (not the default). It returns the AOP proxy in use. Target objects * or advice can use this to make advised calls, in the same way as getEJBObject() * can be used in EJBs. They can also use it to find advice configuration. * *

Spring's AOP framework does not expose proxies by default, as there is a performance cost * in doing so. * *

The functionality in this class might be used by a target object that needed access * to resources on the invocation. However, this approach should not be used when there is * a reasonable alternative, as it makes application code dependent on usage under AOP and * the Spring AOP framework in particular. * * @author Rod Johnson * @author Juergen Hoeller * @since 13.03.2003 */ public abstract class AopContext { /** * ThreadLocal holder for AOP proxy associated with this thread. * Will contain null unless the "exposeProxy" property on * the controlling proxy configuration has been set to "true". * @see ProxyConfig#setExposeProxy */ private static final ThreadLocal currentProxy = new ThreadLocal(); /** * Try to return the current AOP proxy. This method is usable only if the * calling method has been invoked via AOP, and the AOP framework has been set * to expose proxies. Otherwise, this method will throw an IllegalStateException. * @return Object the current AOP proxy (never returns null) * @throws IllegalStateException if the proxy cannot be found, because the * method was invoked outside an AOP invocation context, or because the * AOP framework has not been configured to expose the proxy */ public static Object currentProxy() throws IllegalStateException { Object proxy = currentProxy.get(); if (proxy == null) { throw new IllegalStateException( "Cannot find current proxy: Set 'exposeProxy' property on Advised to 'true' to make it available."); } return proxy; } /** * Make the given proxy available via the currentProxy() method. *

Note that the caller should be careful to keep the old value as appropriate. * @param proxy the proxy to expose (or null to reset it) * @return the old proxy, which may be null if none was bound * @see #currentProxy() */ public static Object setCurrentProxy(Object proxy) { Object old = currentProxy.get(); currentProxy.set(proxy); return old; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy