/*
* Copyright 2004-2015 the Seasar Foundation and the Others.
*
* 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.seasar.framework.container.impl;
import java.lang.reflect.Method;
import org.seasar.framework.container.ArgDef;
import org.seasar.framework.container.Expression;
import org.seasar.framework.container.MethodDef;
import org.seasar.framework.container.S2Container;
import org.seasar.framework.container.util.ArgDefSupport;
/**
* {@link MethodDef}の抽象クラスです。
*
* @author higa
*
*/
public abstract class MethodDefImpl implements MethodDef {
private Method method;
private String methodName;
private ArgDefSupport argDefSupport = new ArgDefSupport();
private S2Container container;
private Expression expression;
/**
* {@link MethodDefImpl}を作成します。
*/
public MethodDefImpl() {
}
/**
* {@link MethodDefImpl}を作成します。
*
* @param method
*/
public MethodDefImpl(Method method) {
this.method = method;
}
/**
* {@link MethodDefImpl}を作成します。
*
* @param methodName
*/
public MethodDefImpl(String methodName) {
this.methodName = methodName;
}
public Method getMethod() {
return method;
}
/**
* @see org.seasar.framework.container.MethodDef#getMethodName()
*/
public String getMethodName() {
return methodName;
}
/**
* @see org.seasar.framework.container.MethodDef#addArgDef(org.seasar.framework.container.ArgDef)
*/
public void addArgDef(ArgDef argDef) {
argDefSupport.addArgDef(argDef);
}
/**
* @see org.seasar.framework.container.ArgDefAware#getArgDefSize()
*/
public int getArgDefSize() {
return argDefSupport.getArgDefSize();
}
/**
* @see org.seasar.framework.container.ArgDefAware#getArgDef(int)
*/
public ArgDef getArgDef(int index) {
return argDefSupport.getArgDef(index);
}
/**
* @see org.seasar.framework.container.MethodDef#getArgs()
*/
public Object[] getArgs() {
Object[] args = new Object[getArgDefSize()];
for (int i = 0; i < getArgDefSize(); ++i) {
args[i] = getArgDef(i).getValue();
}
return args;
}
/**
* @see org.seasar.framework.container.MethodDef#getContainer()
*/
public S2Container getContainer() {
return container;
}
/**
* @see org.seasar.framework.container.MethodDef#setContainer(org.seasar.framework.container.S2Container)
*/
public void setContainer(S2Container container) {
this.container = container;
argDefSupport.setContainer(container);
}
/**
* @see org.seasar.framework.container.MethodDef#getExpression()
*/
public Expression getExpression() {
return expression;
}
/**
* @see org.seasar.framework.container.MethodDef#setExpression(Expression)
*/
public void setExpression(Expression expression) {
this.expression = expression;
}
}