001    /*
002     * Licensed to the Apache Software Foundation (ASF) under one
003     * or more contributor license agreements.  See the NOTICE file
004     * distributed with this work for additional information
005     * regarding copyright ownership.  The ASF licenses this file
006     * to you under the Apache License, Version 2.0 (the
007     * "License"); you may not use this file except in compliance
008     * with 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,
013     * software distributed under the License is distributed on an
014     * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
015     * KIND, either express or implied.  See the License for the
016     * specific language governing permissions and limitations
017     * under the License.
018     */
019    
020    //
021    // This source code implements specifications defined by the Java
022    // Community Process. In order to remain compliant with the specification
023    // DO NOT add / change / or delete method signatures!
024    //
025    
026    package javax.servlet.jsp.el;
027    
028    /**
029     * <p>This class is used to customize the way an ExpressionEvaluator resolves
030     * variable references at evaluation time.  For example, instances of this class can
031     * implement their own variable lookup mechanisms, or introduce the
032     * notion of "implicit variables" which override any other variables.
033     * An instance of this class should be passed when evaluating
034     * an expression.</p>
035     *
036     * <p>An instance of this class includes the context against which resolution
037     * will happen</p>
038     *
039     * @since 2.0
040     */
041    public interface VariableResolver
042    {
043      //-------------------------------------
044      /**
045       * Resolves the specified variable.
046       * Returns null if the variable is not found.
047       * 
048       * @param pName the name of the variable to resolve
049       * @return the result of the variable resolution
050       *
051       * @throws ELException if a failure occurred while trying to resolve
052       *     the given variable
053       **/
054      public Object resolveVariable (String pName)
055        throws ELException;
056                                            
057      //-------------------------------------
058    }