001    /* $Id$ */
002    /*
003     * Licensed to the Apache Software Foundation (ASF) under one or more
004     * contributor license agreements.  See the NOTICE file distributed with
005     * this work for additional information regarding copyright ownership.
006     * The ASF licenses this file to You under the Apache License, Version 2.0
007     * (the "License"); you may not use this file except in compliance with
008     * the License.  You may obtain a copy of the License at
009     *
010     *     http://www.apache.org/licenses/LICENSE-2.0
011     *
012     * Unless required by applicable law or agreed to in writing, software
013     * distributed under the License is distributed on an "AS IS" BASIS,
014     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015     * See the License for the specific language governing permissions and
016     * limitations under the License.
017    */
018    package org.apache.commons.el;
019    
020    import java.lang.reflect.Method;
021    import java.util.List;
022    
023    import javax.servlet.jsp.el.ELException;
024    import javax.servlet.jsp.el.FunctionMapper;
025    
026    /**
027     * A subclass of <code>FunctionInvocation</code> which is bound
028     * to a particular <code>Method</code>.  A bound function does
029     * not require a <code>FunctionMapper</code> to be evaluated.
030     * 
031     * @author Jamie Taylor
032     */
033    public class BoundFunctionInvocation extends FunctionInvocation {
034        private final Method method;
035        
036        /**
037         * @param functionName
038         * @param argumentList
039         */
040        public BoundFunctionInvocation(
041                final Method method,
042                final String functionName, 
043                final List argumentList) 
044        {
045            super(functionName, argumentList);
046            this.method = method;
047        }
048    
049        /**
050         * Returns the <code>Method</code>supplied to the constructor.
051         * @param functions unused
052         */
053        protected Method resolveFunction(FunctionMapper functions)
054                throws ELException {
055            return method;
056        }
057    }