001    /*
002     * Licensed to the Apache Software Foundation (ASF) under one or more
003     * contributor license agreements.  See the NOTICE file distributed with
004     * this work for additional information regarding copyright ownership.
005     * The ASF licenses this file to You under the Apache License, Version 2.0
006     * (the "License"); you may not use this file except in compliance with
007     * the License.  You may obtain a copy of the License at
008     *
009     *     http://www.apache.org/licenses/LICENSE-2.0
010     *
011     * Unless required by applicable law or agreed to in writing, software
012     * distributed under the License is distributed on an "AS IS" BASIS,
013     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014     * See the License for the specific language governing permissions and
015     * limitations under the License.
016     */
017    package org.apache.commons.el;
018    
019    import javax.servlet.jsp.el.ELException;
020    import javax.servlet.jsp.el.FunctionMapper;
021    import javax.servlet.jsp.el.VariableResolver;
022    
023    /**
024     *
025     * <p>Represents a name that can be used as the first element of a
026     * value.
027     * 
028     * @author Nathan Abramson - Art Technology Group
029     * @author Shawn Bayern
030     * @version $Change: 181177 $$DateTime: 2001/06/26 08:45:09 $$Author: bayard $
031     **/
032    
033    public class NamedValue
034      extends Expression
035    {
036      //-------------------------------------
037      // Constants
038      //-------------------------------------
039    
040      //-------------------------------------
041      // Properties
042      //-------------------------------------
043      // property name
044    
045      String mName;
046      public String getName ()
047      { return mName; }
048    
049      //-------------------------------------
050      /**
051       *
052       * Constructor
053       **/
054      public NamedValue (String pName)
055      {
056        mName = pName;
057      }
058    
059      //-------------------------------------
060      // Expression methods
061      //-------------------------------------
062      /**
063       *
064       * Returns the expression in the expression language syntax
065       **/
066      public String getExpressionString ()
067      {
068        return StringLiteral.toIdentifierToken (mName);
069      }
070    
071      //-------------------------------------
072      /**
073       *
074       * Evaluates by looking up the name in the VariableResolver
075       **/
076      public Object evaluate (VariableResolver pResolver, FunctionMapper functions)
077        throws ELException
078      {
079        if (pResolver == null) {
080          return null;
081        }
082        else {
083          return pResolver.resolveVariable (mName);
084        }
085      }
086    
087      public Expression bindFunctions(FunctionMapper functions) throws ELException {
088          return this;
089      }
090    
091      //-------------------------------------
092    }