/**
* Copyright (c) 2011-2012, James Zhan 詹波 (jfinal@126.com).
*
* 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 com.jfinal.aop;
import java.lang.reflect.Method;
import com.jfinal.core.ActionInvocation;
import com.jfinal.core.Controller;
/**
* ActionInvocationWrapper invoke the InterceptorStack.
*/
class ActionInvocationWrapper extends ActionInvocation {
private Interceptor[] inters;
private ActionInvocation actionInvocation;
private int index = 0;
ActionInvocationWrapper(ActionInvocation actionInvocation, Interceptor[] inters) {
this.actionInvocation = actionInvocation;
this.inters = inters;
}
/**
* Invoke the action
*/
@Override
public final void invoke() {
if (index < inters.length)
inters[index++].intercept(this);
else
actionInvocation.invoke();
}
@Override
public Controller getController() {
return actionInvocation.getController();
}
@Override
public String getActionKey() {
return actionInvocation.getActionKey();
}
@Override
public String getControllerKey() {
return actionInvocation.getControllerKey();
}
@Override
public Method getMethod() {
return actionInvocation.getMethod();
}
@Override
public String getMethodName() {
return actionInvocation.getMethodName();
}
/**
* Return view path of this controller
*/
@Override
public String getViewPath() {
return actionInvocation.getViewPath();
}
/*
* It should be added method below when com.jfinal.core.ActionInvocation add method, otherwise null will be returned.
*/
}