View Javadoc

    1   /*
    2    * $Id: ConditionalTagBase.java 471754 2006-11-06 14:55:09Z husted $
    3    *
    4    * Licensed to the Apache Software Foundation (ASF) under one
    5    * or more contributor license agreements.  See the NOTICE file
    6    * distributed with this work for additional information
    7    * regarding copyright ownership.  The ASF licenses this file
    8    * to you under the Apache License, Version 2.0 (the
    9    * "License"); you may not use this file except in compliance
    10   * with the License.  You may obtain a copy of the License at
    11   *
    12   *  http://www.apache.org/licenses/LICENSE-2.0
    13   *
    14   * Unless required by applicable law or agreed to in writing,
    15   * software distributed under the License is distributed on an
    16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    17   * KIND, either express or implied.  See the License for the
    18   * specific language governing permissions and limitations
    19   * under the License.
    20   */
    21  package org.apache.struts.taglib.logic;
    22
    23  import org.apache.struts.util.MessageResources;
    24
    25  import javax.servlet.jsp.JspException;
    26  import javax.servlet.jsp.tagext.TagSupport;
    27
    28  /**
    29   * Abstract base class for the various conditional evaluation tags.
    30   *
    31   * @version $Rev: 471754 $ $Date: 2004-10-16 12:38:42 -0400 (Sat, 16 Oct 2004)
    32   *          $
    33   */
    34  public abstract class ConditionalTagBase extends TagSupport {
    35      /**
    36       * The message resources for this package.
    37       */
    38      protected static MessageResources messages =
    39          MessageResources.getMessageResources(
    40              "org.apache.struts.taglib.logic.LocalStrings");
    41
    42      // ------------------------------------------------------------- Properties
    43
    44      /**
    45       * The name of the cookie to be used as a variable.
    46       */
    47      protected String cookie = null;
    48
    49      /**
    50       * The name of the HTTP request header to be used as a variable.
    51       */
    52      protected String header = null;
    53
    54      /**
    55       * The name of the JSP bean to be used as a variable (if
    56       * <code>property</code> is not specified), or whose property is to be
    57       * accessed (if <code>property</code> is specified).
    58       */
    59      protected String name = null;
    60
    61      /**
    62       * The name of the HTTP request parameter to be used as a variable.
    63       */
    64      protected String parameter = null;
    65
    66      /**
    67       * The name of the bean property to be used as a variable.
    68       */
    69      protected String property = null;
    70
    71      /**
    72       * The name of the security role to be checked for.
    73       */
    74      protected String role = null;
    75
    76      /**
    77       * The scope to search for the bean named by the name property, or "any
    78       * scope" if null.
    79       */
    80      protected String scope = null;
    81
    82      /**
    83       * The user principal name to be checked for.
    84       */
    85      protected String user = null;
    86
    87      public String getCookie() {
    88          return (this.cookie);
    89      }
    90
    91      public void setCookie(String cookie) {
    92          this.cookie = cookie;
    93      }
    94
    95      public String getHeader() {
    96          return (this.header);
    97      }
    98
    99      public void setHeader(String header) {
    100         this.header = header;
    101     }
    102
    103     public String getName() {
    104         return (this.name);
    105     }
    106
    107     public void setName(String name) {
    108         this.name = name;
    109     }
    110
    111     public String getParameter() {
    112         return (this.parameter);
    113     }
    114
    115     public void setParameter(String parameter) {
    116         this.parameter = parameter;
    117     }
    118
    119     public String getProperty() {
    120         return (this.property);
    121     }
    122
    123     public void setProperty(String property) {
    124         this.property = property;
    125     }
    126
    127     public String getRole() {
    128         return (this.role);
    129     }
    130
    131     public void setRole(String role) {
    132         this.role = role;
    133     }
    134
    135     public String getScope() {
    136         return (this.scope);
    137     }
    138
    139     public void setScope(String scope) {
    140         this.scope = scope;
    141     }
    142
    143     public String getUser() {
    144         return (this.user);
    145     }
    146
    147     public void setUser(String user) {
    148         this.user = user;
    149     }
    150
    151     // --------------------------------------------------------- Public Methods
    152
    153     /**
    154      * Perform the test required for this particular tag, and either evaluate
    155      * or skip the body of this tag.
    156      *
    157      * @throws JspException if a JSP exception occurs
    158      */
    159     public int doStartTag() throws JspException {
    160         if (condition()) {
    161             return (EVAL_BODY_INCLUDE);
    162         } else {
    163             return (SKIP_BODY);
    164         }
    165     }
    166
    167     /**
    168      * Evaluate the remainder of the current page normally.
    169      *
    170      * @throws JspException if a JSP exception occurs
    171      */
    172     public int doEndTag() throws JspException {
    173         return (EVAL_PAGE);
    174     }
    175
    176     /**
    177      * Release all allocated resources.
    178      */
    179     public void release() {
    180         super.release();
    181         cookie = null;
    182         header = null;
    183         name = null;
    184         parameter = null;
    185         property = null;
    186         role = null;
    187         scope = null;
    188         user = null;
    189     }
    190
    191     // ------------------------------------------------------ Protected Methods
    192
    193     /**
    194      * Evaluate the condition that is being tested by this particular tag, and
    195      * return <code>true</code> if the nested body content of this tag should
    196      * be evaluated, or <code>false</code> if it should be skipped. This
    197      * method must be implemented by concrete subclasses.
    198      *
    199      * @throws JspException if a JSP exception occurs
    200      */
    201     protected abstract boolean condition()
    202         throws JspException;
    203 }