View Javadoc

    1   /*
    2    * $Id: AttributeToScopeTag.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  package org.apache.struts.tiles.taglib;
    23
    24  import javax.servlet.jsp.JspException;
    25  import javax.servlet.jsp.PageContext;
    26  import javax.servlet.jsp.tagext.TagSupport;
    27
    28  import org.apache.struts.tiles.taglib.util.TagUtils;
    29  import org.apache.struts.tiles.ComponentContext;
    30
    31
    32  /**
    33    *  Custom  tag  that  puts  component's  attributes  in  a  scope  (request,  page,  ...).
    34    *  @deprecated  Is  it  still  in  use  ?
    35    */
    36  public  final  class  AttributeToScopeTag  extends  TagSupport  {
    37
    38
    39          //  ----------------------------------------------------- Instance Variables
    40
    41
    42      /**
    43       * The scope name.
    44       */
    45      private String scopeName = null;
    46
    47      /**
    48       * The scope value.
    49       */
    50      private int scope = PageContext.PAGE_SCOPE;
    51
    52
    53
    54      /**
    55       * The property name to be exposed.
    56       */
    57      private String property = null;
    58
    59
    60      // ------------------------------------------------------------- Properties
    61
    62
    63
    64      /**
    65       * Return the property name.
    66       */
    67      public String getProperty()
    68      {
    69      return  (this.property);
    70      }
    71
    72
    73       /**
    74         *  Set  the  property  name.
    75         *
    76         *  @param  property  The  property  name
    77         */
    78      public  void  setProperty(String  property)
    79      {
    80      this.property  =  property;
    81      }
    82
    83      /**
    84        *  Set  the  scope.
    85        *
    86        *  @param  scope  The  new  scope
    87        */
    88      public  void  setScope(String  scope)
    89      {
    90      this.scopeName  =  scope;
    91      }
    92
    93          //  ---------------------------------------------------------  Public  Methods
    94
    95
    96          /**
    97            *  Expose  the  requested  property  from  component  context.
    98            *
    99            *  @exception  JspException  if  a  JSP  exception  has  occurred
    100           */
    101     public  int  doStartTag()  throws  JspException
    102         {
    103         if(  id==null  )
    104             id=property;
    105
    106         ComponentContext  compContext  =  (ComponentContext)pageContext.getAttribute(  ComponentConstants.COMPONENT_CONTEXT,  PageContext.REQUEST_SCOPE);
    107
    108         if(  compContext  ==  null  )
    109             throw  new  JspException  (  "Error  -  tag.useProperty  :  component  context  is  not  defined.  Check  tag  syntax"  );
    110
    111         Object  value  =  compContext.getAttribute(property);
    112         if(  value  ==  null  )
    113             throw  new  JspException  (  "Error  -  tag.useProperty  :  property  '"+  property  +  "'  not  found  in  context.  Check  tag  syntax"  );
    114
    115         if(  scopeName  !=  null  )
    116             {
    117             scope  =  TagUtils.getScope(  scopeName,  PageContext.PAGE_SCOPE  );
    118             pageContext.setAttribute(id,  value,  scope);
    119             }
    120           else
    121             pageContext.setAttribute(id,  value);
    122
    123           //  Continue  processing  this  page
    124         return  SKIP_BODY;
    125         }
    126
    127
    128
    129
    130         /**
    131           *  Clean  up  after  processing  this  enumeration.
    132           *
    133           *  @exception  JspException  if  a  JSP  exception  has  occurred
    134           */
    135     public  int  doEndTag()  throws  JspException
    136         {
    137         return  (EVAL_PAGE);
    138         }
    139
    140         /**
    141           *  Release  all  allocated  resources.
    142           */
    143         public  void  release()  {
    144
    145                 super.release();
    146                 property  =  null;
    147                 scopeName  =  null;
    148                 scope  =  PageContext.PAGE_SCOPE;
    149         }
    150
    151 }