KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > commons > jelly > tags > core > SwitchTag


1 /*
2  * Copyright 2002,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 package org.apache.commons.jelly.tags.core;
17
18 import org.apache.commons.jelly.JellyTagException;
19 import org.apache.commons.jelly.MissingAttributeException;
20 import org.apache.commons.jelly.TagSupport;
21 import org.apache.commons.jelly.XMLOutput;
22 import org.apache.commons.jelly.expression.Expression;
23
24
25 /**
26  * Executes the child <case> tag whose value equals my on attribute.
27  * Executes a child <default> tag when present and no <case> tag has
28  * yet matched.
29  *
30  * @see CaseTag
31  * @see DefaultTag
32  *
33  * @author Rodney Waldhoff
34  * @version $Revision: 155420 $ $Date: 2005-02-26 05:06:03 -0800 $
35  */

36 public class SwitchTag extends TagSupport {
37
38     public SwitchTag() {
39     }
40
41     // Tag interface
42
//-------------------------------------------------------------------------
43

44     /**
45      * Sets the value to switch on.
46      * Note that the {@link Expression} is evaluated only once, when the
47      * <switch> tag is evaluated.
48      * @param on the value to switch on
49      */

50     public void setOn(Expression on) {
51         this.on = on;
52     }
53
54     public void doTag(XMLOutput output) throws MissingAttributeException, JellyTagException {
55         this.defaultEncountered = false;
56         this.someCaseMatched = false;
57         this.fallingThru = false;
58                 
59         if(null == on) {
60             throw new MissingAttributeException("on");
61         } else {
62             value = on.evaluate(context);
63             invokeBody(output);
64         }
65     }
66
67     // Protected properties
68
//-------------------------------------------------------------------------
69
protected boolean hasSomeCaseMatched() {
70         return this.someCaseMatched;
71     }
72
73     protected void caseMatched() {
74         this.someCaseMatched = true;
75     }
76
77     protected boolean isFallingThru() {
78         return this.fallingThru;
79     }
80
81     protected void setFallingThru(boolean fallingThru) {
82         this.fallingThru = fallingThru;
83     }
84
85     protected Object JavaDoc getValue() {
86         return value;
87     }
88
89     protected boolean hasDefaultBeenEncountered() {
90         return defaultEncountered;
91     }
92
93     protected void defaultEncountered() {
94         this.defaultEncountered = true;
95     }
96
97     // Attributes
98
//-------------------------------------------------------------------------
99
private boolean someCaseMatched = false;
100     private boolean fallingThru = false;
101     private boolean defaultEncountered = false;
102     private Expression on = null;
103     private Object JavaDoc value = null;
104
105 }
106
Popular Tags