KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > taglibs > standard > lang > jstl > AndOperator


1 /*
2  * Copyright 1999-2004 The Apache Software Foundation.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */

16
17 package org.apache.taglibs.standard.lang.jstl;
18
19 /**
20  *
21  * <p>The implementation of the and operator
22  *
23  * @author Nathan Abramson - Art Technology Group
24  * @version $Change: 181177 $$DateTime: 2001/06/26 08:45:09 $$Author: pierred $
25  **/

26
27 public class AndOperator
28   extends BinaryOperator
29 {
30   //-------------------------------------
31
// Singleton
32
//-------------------------------------
33

34   public static final AndOperator SINGLETON =
35     new AndOperator ();
36
37   //-------------------------------------
38
/**
39    *
40    * Constructor
41    **/

42   public AndOperator ()
43   {
44   }
45
46   //-------------------------------------
47
// Expression methods
48
//-------------------------------------
49
/**
50    *
51    * Returns the symbol representing the operator
52    **/

53   public String JavaDoc getOperatorSymbol ()
54   {
55     return "and";
56   }
57
58   //-------------------------------------
59
/**
60    *
61    * Applies the operator to the given value
62    **/

63   public Object JavaDoc apply (Object JavaDoc pLeft,
64                Object JavaDoc pRight,
65                Object JavaDoc pContext,
66                Logger pLogger)
67     throws ELException
68   {
69     // Coerce the values to booleans
70
boolean left =
71       Coercions.coerceToBoolean (pLeft, pLogger).booleanValue ();
72     boolean right =
73       Coercions.coerceToBoolean (pRight, pLogger).booleanValue ();
74
75     return PrimitiveObjects.getBoolean (left && right);
76   }
77
78   //-------------------------------------
79
/**
80    *
81    * Returns true if evaluation is necessary given the specified Left
82    * value. The And/OrOperators make use of this
83    **/

84   public boolean shouldEvaluate (Object JavaDoc pLeft)
85   {
86     return
87       (pLeft instanceof Boolean JavaDoc) &&
88       ((Boolean JavaDoc) pLeft).booleanValue () == true;
89   }
90
91   //-------------------------------------
92
/**
93    *
94    * Returns true if the operator expects its arguments to be coerced
95    * to Booleans. The And/Or operators set this to true.
96    **/

97   public boolean shouldCoerceToBoolean ()
98   {
99     return true;
100   }
101
102   //-------------------------------------
103
}
104
Popular Tags