001: /*
002: * $Id: ConditionalTagBase.java 471754 2006-11-06 14:55:09Z husted $
003: *
004: * Licensed to the Apache Software Foundation (ASF) under one
005: * or more contributor license agreements. See the NOTICE file
006: * distributed with this work for additional information
007: * regarding copyright ownership. The ASF licenses this file
008: * to you under the Apache License, Version 2.0 (the
009: * "License"); you may not use this file except in compliance
010: * with the License. You may obtain a copy of the License at
011: *
012: * http://www.apache.org/licenses/LICENSE-2.0
013: *
014: * Unless required by applicable law or agreed to in writing,
015: * software distributed under the License is distributed on an
016: * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
017: * KIND, either express or implied. See the License for the
018: * specific language governing permissions and limitations
019: * under the License.
020: */
021: package org.apache.struts.taglib.logic;
022:
023: import org.apache.struts.util.MessageResources;
024:
025: import javax.servlet.jsp.JspException;
026: import javax.servlet.jsp.tagext.TagSupport;
027:
028: /**
029: * Abstract base class for the various conditional evaluation tags.
030: *
031: * @version $Rev: 471754 $ $Date: 2004-10-16 12:38:42 -0400 (Sat, 16 Oct 2004)
032: * $
033: */
034: public abstract class ConditionalTagBase extends TagSupport {
035: /**
036: * The message resources for this package.
037: */
038: protected static MessageResources messages = MessageResources
039: .getMessageResources("org.apache.struts.taglib.logic.LocalStrings");
040:
041: // ------------------------------------------------------------- Properties
042:
043: /**
044: * The name of the cookie to be used as a variable.
045: */
046: protected String cookie = null;
047:
048: /**
049: * The name of the HTTP request header to be used as a variable.
050: */
051: protected String header = null;
052:
053: /**
054: * The name of the JSP bean to be used as a variable (if
055: * <code>property</code> is not specified), or whose property is to be
056: * accessed (if <code>property</code> is specified).
057: */
058: protected String name = null;
059:
060: /**
061: * The name of the HTTP request parameter to be used as a variable.
062: */
063: protected String parameter = null;
064:
065: /**
066: * The name of the bean property to be used as a variable.
067: */
068: protected String property = null;
069:
070: /**
071: * The name of the security role to be checked for.
072: */
073: protected String role = null;
074:
075: /**
076: * The scope to search for the bean named by the name property, or "any
077: * scope" if null.
078: */
079: protected String scope = null;
080:
081: /**
082: * The user principal name to be checked for.
083: */
084: protected String user = null;
085:
086: public String getCookie() {
087: return (this .cookie);
088: }
089:
090: public void setCookie(String cookie) {
091: this .cookie = cookie;
092: }
093:
094: public String getHeader() {
095: return (this .header);
096: }
097:
098: public void setHeader(String header) {
099: this .header = header;
100: }
101:
102: public String getName() {
103: return (this .name);
104: }
105:
106: public void setName(String name) {
107: this .name = name;
108: }
109:
110: public String getParameter() {
111: return (this .parameter);
112: }
113:
114: public void setParameter(String parameter) {
115: this .parameter = parameter;
116: }
117:
118: public String getProperty() {
119: return (this .property);
120: }
121:
122: public void setProperty(String property) {
123: this .property = property;
124: }
125:
126: public String getRole() {
127: return (this .role);
128: }
129:
130: public void setRole(String role) {
131: this .role = role;
132: }
133:
134: public String getScope() {
135: return (this .scope);
136: }
137:
138: public void setScope(String scope) {
139: this .scope = scope;
140: }
141:
142: public String getUser() {
143: return (this .user);
144: }
145:
146: public void setUser(String user) {
147: this .user = user;
148: }
149:
150: // --------------------------------------------------------- Public Methods
151:
152: /**
153: * Perform the test required for this particular tag, and either evaluate
154: * or skip the body of this tag.
155: *
156: * @throws JspException if a JSP exception occurs
157: */
158: public int doStartTag() throws JspException {
159: if (condition()) {
160: return (EVAL_BODY_INCLUDE);
161: } else {
162: return (SKIP_BODY);
163: }
164: }
165:
166: /**
167: * Evaluate the remainder of the current page normally.
168: *
169: * @throws JspException if a JSP exception occurs
170: */
171: public int doEndTag() throws JspException {
172: return (EVAL_PAGE);
173: }
174:
175: /**
176: * Release all allocated resources.
177: */
178: public void release() {
179: super .release();
180: cookie = null;
181: header = null;
182: name = null;
183: parameter = null;
184: property = null;
185: role = null;
186: scope = null;
187: user = null;
188: }
189:
190: // ------------------------------------------------------ Protected Methods
191:
192: /**
193: * Evaluate the condition that is being tested by this particular tag, and
194: * return <code>true</code> if the nested body content of this tag should
195: * be evaluated, or <code>false</code> if it should be skipped. This
196: * method must be implemented by concrete subclasses.
197: *
198: * @throws JspException if a JSP exception occurs
199: */
200: protected abstract boolean condition() throws JspException;
201: }
|