View Javadoc

1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    *
9    *     http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  package org.apache.commons.el;
18  
19  import javax.servlet.jsp.el.ELException;
20  
21  /**
22   *
23   * <p>This is the superclass for all binary operators
24   * 
25   * @author Nathan Abramson - Art Technology Group
26   * @version $Change: 181177 $$DateTime: 2001/06/26 08:45:09 $$Author: bayard $
27   **/
28  
29  public abstract class BinaryOperator
30  {
31    //-------------------------------------
32    /**
33     *
34     * Constructor
35     **/
36    public BinaryOperator ()
37    {
38    }
39  
40    //-------------------------------------
41    // Expression methods
42    //-------------------------------------
43    /**
44     *
45     * Returns the symbol representing the operator
46     **/
47    public abstract String getOperatorSymbol ();
48  
49    //-------------------------------------
50    /**
51     *
52     * Applies the operator to the given pair of values
53     **/
54    public abstract Object apply (Object pLeft,
55  				Object pRight)
56      throws ELException;
57  
58    //-------------------------------------
59    /**
60     *
61     * Returns true if evaluation is necessary given the specified Left
62     * value.  The And/OrOperators make use of this
63     **/
64    public boolean shouldEvaluate (Object pLeft)
65    {
66      return true;
67    }
68  
69    //-------------------------------------
70    /**
71     *
72     * Returns true if the operator expects its arguments to be coerced
73     * to Booleans.  The And/Or operators set this to true.
74     **/
75    public boolean shouldCoerceToBoolean ()
76    {
77      return false;
78    }
79  
80    //-------------------------------------
81  }