/*
 * Copyright 2002-2015 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;

import org.aopalliance.intercept.MethodInvocation;

import org.springframework.lang.Nullable;

Extension of the AOP Alliance MethodInvocation interface, allowing access to the proxy that the method invocation was made through.

Useful to be able to substitute return values with the proxy, if necessary, for example if the invocation target returned itself.

Author:Juergen Hoeller, Adrian Colyer
See Also:
Since:1.1.3
/** * Extension of the AOP Alliance {@link org.aopalliance.intercept.MethodInvocation} * interface, allowing access to the proxy that the method invocation was made through. * * <p>Useful to be able to substitute return values with the proxy, * if necessary, for example if the invocation target returned itself. * * @author Juergen Hoeller * @author Adrian Colyer * @since 1.1.3 * @see org.springframework.aop.framework.ReflectiveMethodInvocation * @see org.springframework.aop.support.DelegatingIntroductionInterceptor */
public interface ProxyMethodInvocation extends MethodInvocation {
Return the proxy that this method invocation was made through.
Returns:the original proxy object
/** * Return the proxy that this method invocation was made through. * @return the original proxy object */
Object getProxy();
Create a clone of this object. If cloning is done before proceed() is invoked on this object, proceed() can be invoked once per clone to invoke the joinpoint (and the rest of the advice chain) more than once.
Returns:an invocable clone of this invocation. proceed() can be called once per clone.
/** * Create a clone of this object. If cloning is done before {@code proceed()} * is invoked on this object, {@code proceed()} can be invoked once per clone * to invoke the joinpoint (and the rest of the advice chain) more than once. * @return an invocable clone of this invocation. * {@code proceed()} can be called once per clone. */
MethodInvocation invocableClone();
Create a clone of this object. If cloning is done before proceed() is invoked on this object, proceed() can be invoked once per clone to invoke the joinpoint (and the rest of the advice chain) more than once.
Params:
  • arguments – the arguments that the cloned invocation is supposed to use, overriding the original arguments
Returns:an invocable clone of this invocation. proceed() can be called once per clone.
/** * Create a clone of this object. If cloning is done before {@code proceed()} * is invoked on this object, {@code proceed()} can be invoked once per clone * to invoke the joinpoint (and the rest of the advice chain) more than once. * @param arguments the arguments that the cloned invocation is supposed to use, * overriding the original arguments * @return an invocable clone of this invocation. * {@code proceed()} can be called once per clone. */
MethodInvocation invocableClone(Object... arguments);
Set the arguments to be used on subsequent invocations in the any advice in this chain.
Params:
  • arguments – the argument array
/** * Set the arguments to be used on subsequent invocations in the any advice * in this chain. * @param arguments the argument array */
void setArguments(Object... arguments);
Add the specified user attribute with the given value to this invocation.

Such attributes are not used within the AOP framework itself. They are just kept as part of the invocation object, for use in special interceptors.

Params:
  • key – the name of the attribute
  • value – the value of the attribute, or null to reset it
/** * Add the specified user attribute with the given value to this invocation. * <p>Such attributes are not used within the AOP framework itself. They are * just kept as part of the invocation object, for use in special interceptors. * @param key the name of the attribute * @param value the value of the attribute, or {@code null} to reset it */
void setUserAttribute(String key, @Nullable Object value);
Return the value of the specified user attribute.
Params:
  • key – the name of the attribute
See Also:
Returns:the value of the attribute, or null if not set
/** * Return the value of the specified user attribute. * @param key the name of the attribute * @return the value of the attribute, or {@code null} if not set * @see #setUserAttribute */
@Nullable Object getUserAttribute(String key); }