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

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

There is a newer version: 5.3.34
Show newest version
/*
 * Copyright 2002-2004 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;

import org.aopalliance.aop.Advice;
import org.aopalliance.intercept.Interceptor;

import org.springframework.aop.Advisor;
import org.springframework.aop.AfterReturningAdvice;
import org.springframework.aop.MethodBeforeAdvice;
import org.springframework.aop.TargetSource;
import org.springframework.aop.ThrowsAdvice;

/**
 * Interface to be implemented by classes that hold the configuration
 * of a factory of AOP proxies. This configuration includes
 * the Interceptors and other advice, and Advisors, and the proxied interfaces.
 *
 * 

Any AOP proxy obtained from Spring can be cast to this interface to allow * manipulation of its AOP advice. * * @author Rod Johnson * @since 13-Mar-2003 * @see org.springframework.aop.framework.AdvisedSupport */ public interface Advised { /** * Return the TargetSource used by this Advised object. */ TargetSource getTargetSource(); /** * Change the TargetSource used by this Advised object. * Only works if the configuration isn't frozen. * @param targetSource new TargetSource to use */ void setTargetSource(TargetSource targetSource); /** * Return whether the factory should expose the proxy as a ThreadLocal. * This can be necessary if a target object needs to invoke a method on itself * benefitting from advice. (If it invokes a method on this no advice * will apply.) Getting the proxy is analogous to an EJB calling getEJBObject(). * @see AopContext */ boolean getExposeProxy(); /** * Should we proxy the target class as well as any interfaces? * Can use this to force CGLIB proxying. */ boolean getProxyTargetClass(); /** * Return the Advisors applying to this proxy. * @return a list of Advisors applying to this proxy. * Cannot return null, but may return the empty array. */ Advisor[] getAdvisors(); /** * Return the interfaces proxied by the AOP proxy. Will not * include the target class, which may also be proxied. * @return the interfaces proxied by the AOP proxy */ Class[] getProxiedInterfaces(); /** * Return whether this interface is proxied. * @param intf interface to test */ boolean isInterfaceProxied(Class intf); /** * Add the given AOP Alliance interceptor to the tail of the advice (interceptor) chain. *

Use the addAdvice method instead. * @param interceptor to add to the tail of the chain * @deprecated in favor of addAdvice * @see #addAdvice(org.aopalliance.aop.Advice) */ void addInterceptor(Interceptor interceptor) throws AopConfigException; /** * Add the given AOP Alliance advice to the tail of the advice (interceptor) chain. * This will be wrapped in a DefaultPointcutAdvisor with a pointcut that always * applies, and returned from the getAdvisors() method in this wrapped form. * @param advice advice to add to the tail of the chain * @see #addAdvice(int, Advice) * @see org.springframework.aop.support.DefaultPointcutAdvisor */ void addAdvice(Advice advice) throws AopConfigException; /** * Add the given AOP Alliance interceptor at the specified position in the * interceptor chain. *

Use the addAdvice method instead. * @param pos index from 0 (head) * @param interceptor interceptor to add at the specified position in the * interceptor chain * @deprecated in favor of addAdvice * @see #addAdvice(int, org.aopalliance.aop.Advice) */ void addInterceptor(int pos, Interceptor interceptor) throws AopConfigException; /** * Add the given AOP Alliance Advice at the specified position in the advice chain. * @param pos index from 0 (head) * @param advice advice to add at the specified position in the advice chain */ void addAdvice(int pos, Advice advice) throws AopConfigException; /** * Add an AfterReturningAdvice to the tail of the advice chain. *

Use the addAdvice method instead. * @param afterReturningAdvice AfterReturningAdvice to add * @throws AopConfigException if the advice cannot be added * (for example, because the proxy configuration is frozen) * @deprecated in favor of addAdvice * @see #addAdvice(org.aopalliance.aop.Advice) */ void addAfterReturningAdvice(AfterReturningAdvice afterReturningAdvice) throws AopConfigException; /** * Add a MethodBeforeAdvice to the tail of the advice chain. *

Use the addAdvice method instead. * @param beforeAdvice MethodBeforeAdvice to add * @throws AopConfigException if the advice cannot be added * (for example, because the proxy configuration is frozen) * @deprecated in favor of addAdvice * @see #addAdvice(org.aopalliance.aop.Advice) */ void addBeforeAdvice(MethodBeforeAdvice beforeAdvice) throws AopConfigException; /** * Add a ThrowsAdvice to the tail of the advice chain. *

Use the addAdvice method instead. * @param throwsAdvice ThrowsAdvice to add * @throws AopConfigException if the advice cannot be added * (for example, because the proxy configuration is frozen) * @deprecated in favor of addAdvice * @see #addAdvice(org.aopalliance.aop.Advice) */ void addThrowsAdvice(ThrowsAdvice throwsAdvice) throws AopConfigException; /** * Add an Advisor at the end of the advisor chain. *

The Advisor may be an IntroductionAdvisor, in which new interfaces * will be available when a proxy is next obtained from the relevant factory. * @param advisor Advisor to add to the end of the chain */ void addAdvisor(Advisor advisor) throws AopConfigException; /** * Add an Advisor at the specified position in the chain. * @param advisor advisor to add at the specified position in the chain * @param pos position in chain (0 is head). Must be valid. */ void addAdvisor(int pos, Advisor advisor) throws AopConfigException; /** * Return the index (from 0) of the given advisor, or -1 if no such * advisor applies to this proxy. *

The return value of this method can be used to index into * the Advisors array. * @param advisor advisor to search for * @return index from 0 of this advisor, or -1 if there's * no such advisor. */ int indexOf(Advisor advisor); /** * Remove the given advisor. * @param advisor advisor to remove * @return true if the advisor was removed; false if the * advisor was not found and hence could not be removed */ boolean removeAdvisor(Advisor advisor) throws AopConfigException; /** * Remove the advisor at the given index. * @param index index of advisor to remove * @throws AopConfigException if the index is invalid */ void removeAdvisor(int index) throws AopConfigException; /** * Remove the Advisor containing the given advice. * @param advice advice to remove * @return whether the Advice was found and removed * (false if there was no such advice) */ boolean removeAdvice(Advice advice) throws AopConfigException; /** * Replace the given advisor. *

NB:If the advisor is an IntroductionAdvisor * and the replacement is not or implements different interfaces, * the proxy will need to be re-obtained or the old interfaces * won't be supported and the new interface won't be implemented. * @param a advisor to replace * @param b advisor to replace it with * @return whether it was replaced. If the advisor wasn't found in the * list of advisors, this method returns false and does nothing. */ boolean replaceAdvisor(Advisor a, Advisor b) throws AopConfigException; /** * Return whether the Advised configuration is frozen, and no * advice changes can be made. */ boolean isFrozen(); /** * As toString() will normally be delegated to the target, * this returns the equivalent for the AOP proxy. * @return a string description of the proxy configuration */ String toProxyConfigString(); }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy