View Javadoc

    1   /*
    2    * $Id: LinkSubscriptionTag.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
    22
    23  package org.apache.struts.webapp.example2;
    24
    25
    26  import javax.faces.component.UIComponent;
    27  import javax.faces.el.ValueBinding;
    28  import javax.faces.webapp.UIComponentTag;
    29
    30
    31  /**
    32   * Generate a URL-encoded hyperlink to the specified URI, with
    33   * associated query parameters selecting a specified Subscription.
    34   *
    35   * @author Craig R. McClanahan
    36   * @version $Rev: 471754 $ $Date: 2006-11-06 08:55:09 -0600 (Mon, 06 Nov 2006) $
    37   */
    38
    39  public class LinkSubscriptionTag extends UIComponentTag {
    40
    41
    42      // -------------------------------------------------------------- Attributes
    43
    44
    45      /**
    46       * The attribute name.
    47       */
    48      protected String name = "subscription";
    49
    50      public void setName(String name) {
    51          this.name = name;
    52      }
    53
    54
    55      /**
    56       * The context-relative URI.
    57       */
    58      protected String page = null;
    59
    60      public void setPage(String page) {
    61          this.page = page;
    62      }
    63
    64
    65      // ---------------------------------------------------------- Public Methods
    66
    67
    68      /**
    69       * Return the component type for this tag.</p>
    70       */
    71      public String getComponentType() {
    72
    73          return ("Output");
    74
    75      }
    76
    77
    78      /**
    79       * <p>Return the renderer type associated with this tag.</p>
    80       */
    81      public String getRendererType() {
    82
    83          return ("LinkSubscription");
    84
    85      }
    86
    87
    88      /**
    89       * <p>Release resources allocated to this tag instance.</p>
    90       */
    91      public void release() {
    92
    93          super.release();
    94          this.name = "subscription";
    95          this.page = null;
    96
    97      }
    98
    99
    100     // ------------------------------------------------------- Protected Methods
    101
    102
    103     /**
    104      * <p>Override attributes set on this tag instance.</p>
    105      *
    106      * @param component Component whose attributes should be overridden
    107      */
    108     protected void setProperties(UIComponent component) {
    109
    110         super.setProperties(component);
    111         if (name != null) {
    112             if (isValueReference(name)) {
    113                 ValueBinding vb =
    114                     getFacesContext().getApplication().createValueBinding(name);
    115                 component.setValueBinding("name", vb);
    116             } else {
    117                 component.getAttributes().put("name", name);
    118             }
    119         }
    120         if (page != null) {
    121             if (isValueReference(page)) {
    122                 ValueBinding vb =
    123                     getFacesContext().getApplication().createValueBinding(page);
    124                 component.setValueBinding("page", vb);
    125             } else {
    126                 component.getAttributes().put("page", page);
    127             }
    128         }
    129
    130     }
    131
    132
    133 }