Package org.apache.struts.tiles.xmlDefinition

Source Code of org.apache.struts.tiles.xmlDefinition.XmlAttribute

/*
* $Header: /home/cvs/jakarta-struts/src/share/org/apache/struts/tiles/xmlDefinition/XmlAttribute.java,v 1.1 2002/06/25 03:15:43 craigmcc Exp $
* $Revision: 1.1 $
* $Date: 2002/06/25 03:15:43 $
*
* ====================================================================
*
* The Apache Software License, Version 1.1
*
* Copyright (c) 1999-2002 The Apache Software Foundation.  All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
*    notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
*    notice, this list of conditions and the following disclaimer in
*    the documentation and/or other materials provided with the
*    distribution.
*
* 3. The end-user documentation included with the redistribution, if
*    any, must include the following acknowlegement:
*       "This product includes software developed by the
*        Apache Software Foundation (http://www.apache.org/)."
*    Alternately, this acknowlegement may appear in the software itself,
*    if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "The Jakarta Project", "Struts", and "Apache Software
*    Foundation" must not be used to endorse or promote products derived
*    from this software without prior written permission. For written
*    permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache"
*    nor may "Apache" appear in their names without prior written
*    permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation.  For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
*/


package org.apache.struts.tiles.xmlDefinition;

import org.apache.struts.tiles.AttributeDefinition;
import org.apache.struts.tiles.DirectStringAttribute;
import org.apache.struts.tiles.PathAttribute;
import org.apache.struts.tiles.DefinitionAttribute;
import org.apache.struts.tiles.DefinitionNameAttribute;
import org.apache.struts.tiles.UntyppedAttribute;

/**
* A property key-value pair.
* This class is used to read configuration files.
*/
public class XmlAttribute
{

  /**
   * Attribute name or key.
   */
  private String name;

  /**
   * Attribute value.
   * Value read from description file.
   */
  private Object value;

  /**
   * Attribute value.
   */
  private String direct=null;
  /**
   * Attribute value.
   */
  private String valueType=null;
  /**
   * Attribute value.
   */
  private String role=null;

  /**
   * Real attribute value.
   * Real value is the value after processing of valueType.
   * I.e. if a type is defined, realValue contains wrapper for this type.
   */
  private Object realValue;

    /**
     * Constructor.
     */
  public XmlAttribute()
    {
    }

    /**
     * Constructor.
     */
  public XmlAttribute( String name, Object value)
    {
    this.name = name;
    this.value = value;
    }

  /**
   * Access method for the name property.
   *
   * @return   the current value of the name property
   */
  public String getName()
    {
    return name;
    }

  /**
   * @return void
   * Sets the value of the name property.
   *
   * @param aName the new value of the name property
   */
  public void setRole(String role)
    {
    this.role = role;
    }

  /**
   * Access method for the name property.
   *
   * @return   the current value of the name property
   */
  public String getRole()
    {
    return role;
    }

  /**
   * @return void
   * Sets the value of the name property.
   *
   * @param aName the new value of the name property
   */
  public void setName(String aName)
    {
    name = aName;
    }

  /**
   * Another access method for the name property.
   *
   * @return   the current value of the name property
   */
  public String getAttribute()
    {
    return name;
    }

  /**
   * Sets the value of the name property.
   *
   * @param aName the new value of the name property
   */
  public void setAttribute(String aName)
    {
    name = aName;
    }

  /**
    * Access method for the value property.
    * Return the value or a QualifiedAttribute containing the value
    * if 'direct' is set.
    *
   * @return   the current value of the value property
   */
  public Object getValue()
    {
      // Compatibility with JSP Template
    if( realValue ==null )
      realValue = computeRealValue();
    return realValue;
    }

  /**
    * Sets the value of the value property.
   *
   * @param aValue the new value of the value property
   */
  public void setValue(Object aValue)
    {
    realValue=null;
    value = aValue;
    }

  /**
    * Sets the value of the value property.
   *
   * @param aValue the new value of the value property
   */
  public void setContent(Object aValue)
    {
    setValue(aValue);
    }
  /**
    * Sets the value of the value property.
   *
   * @param aValue the new value of the value property
   */
  public void setBody(String body)
    {
    if( body.length() == 0 )
      return;
    //System.out.println("body set to'" + body + "'");
    setValue(body);
    }
  /**
    * Sets the value of the value property.
   *
   * @param aValue the new value of the value property
   */
  public void setDirect(String value)
    {
    this.direct = value;
    }
  /**
    * Sets the value of the value property.
   *
   * @param aValue the new value of the value property
   */
  public void setType(String value)
    {
    this.valueType = value;
    }

    /**
     * Compute  real value from attributes setting.
     */
  protected Object computeRealValue()
    {
    Object realValue = value;
      // Is there a type set ?
      // First check direct attribute, and translate it to a valueType.
      // Then, evaluate valueType, and create requested typed attribute.
    if( direct != null )
      {
      if( Boolean.valueOf(direct).booleanValue() == true )
        valueType = "string";
       else
        valueType = "path";
      // end if
    if( value != null && valueType!=null /* && !(value instanceof AttributeDefinition) */ )
      {
      String strValue = value.toString();
        if( valueType.equalsIgnoreCase( "string" ) )
          {
          realValue = new DirectStringAttribute( strValue );
          }
         else if( valueType.equalsIgnoreCase( "page" ) )
          {
          realValue = new PathAttribute( strValue );
          }
         else if( valueType.equalsIgnoreCase( "template" ) )
          {
          realValue = new PathAttribute( strValue );
          }
         else if( valueType.equalsIgnoreCase( "instance" ) )
          {
          realValue = new DefinitionNameAttribute( strValue );
          // end if
        // Set realValue's role value if needed
      if( role !=null )
        ((UntyppedAttribute)realValue).setRole( role );
      } //  end  if

      // Create attribute wrapper to hold role if role is set and no type specified
    if( role!=null && value != null && valueType==null )
      {
      realValue = new UntyppedAttribute( value.toString(), role );
      } // end if

    return realValue;
    }
}
TOP

Related Classes of org.apache.struts.tiles.xmlDefinition.XmlAttribute

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.