com.opensymphony.module.sitemesh.html
Class CustomTag

java.lang.Object
  extended by com.opensymphony.module.sitemesh.html.CustomTag
All Implemented Interfaces:
Tag

public class CustomTag
extends Object
implements Tag

A CustomTag provides a mechanism to manipulate the contents of a Tag. The standard Tag implementations are immutable, however CustomTag allows a copy to be taken of an immutable Tag that can then be manipulated.

Author:
Joe Walnes
See Also:
Tag

Field Summary
private  int attributeCount
           
private  String[] attributes
           
private  String name
           
private  int type
           
 
Fields inherited from interface com.opensymphony.module.sitemesh.html.Tag
CLOSE, CLOSE_MAGIC_COMMENT, EMPTY, OPEN, OPEN_MAGIC_COMMENT
 
Constructor Summary
CustomTag(String name, int type)
          Type of tag:
<blah> - Tag.OPEN
</blah> - Tag.CLOSE
<blah/> - Tag.EMPTY
CustomTag(Tag tag)
          Create a CustomTag based on an existing Tag - this takes a copy of the Tag.
 
Method Summary
 int addAttribute(String name, String value)
          Add a new attribute.
 boolean equals(Object o)
           
 int getAttributeCount()
          Number of attributes in tag.
 int getAttributeIndex(String name, boolean caseSensitive)
          Determine which attribute has the specified name.
 String getAttributeName(int index)
          Get name of attribute.
 String getAttributeValue(int index)
          Get value of an attribute.
 String getAttributeValue(String name, boolean caseSensitive)
          Get value of an attribute.
 String getContents()
          Get the complete tag in its original form, preserving original formatting.
 String getName()
          Name of tag (ie.
 int getType()
          Type of tag:
<blah> - Tag.OPEN
</blah> - Tag.CLOSE
<blah/> - Tag.EMPTY
private  void growAttributes()
           
 boolean hasAttribute(String name, boolean caseSensitive)
          Determine if an attribute is present.
 int hashCode()
           
 void removeAttribute(int attributeIndex)
          Remove an attribute.
 void removeAttribute(String name, boolean caseSensitive)
          Change the value of an attribute, or add an attribute if it does not already exist.
 void setAttributeName(int attributeIndex, String name)
          Change the name of an existing attribute.
 void setAttributeValue(int attributeIndex, String value)
          Change the value of an existing attribute.
 void setAttributeValue(String name, boolean caseSensitive, String value)
          Change the value of an attribute, or add an attribute if it does not already exist.
 void setName(String name)
          Change the name of the attribute.
 void setType(int type)
          Change the type of the tag.
 String toString()
           
 void writeTo(CharArray out)
          Write out the complete tag in its original form, preserving original formatting.
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

attributes

private String[] attributes

attributeCount

private int attributeCount

name

private String name

type

private int type
Constructor Detail

CustomTag

public CustomTag(String name,
                 int type)
Type of tag:
<blah> - Tag.OPEN
</blah> - Tag.CLOSE
<blah/> - Tag.EMPTY


CustomTag

public CustomTag(Tag tag)
Create a CustomTag based on an existing Tag - this takes a copy of the Tag.

Method Detail

getContents

public String getContents()
Description copied from interface: Tag
Get the complete tag in its original form, preserving original formatting. This has a slight overhead in that it needs to construct a String. For improved performance, use writeTo() instead.

Specified by:
getContents in interface Tag
See Also:
Tag.writeTo(com.opensymphony.module.sitemesh.html.util.CharArray)

writeTo

public void writeTo(CharArray out)
Description copied from interface: Tag
Write out the complete tag in its original form, preserving original formatting.

Specified by:
writeTo in interface Tag

equals

public boolean equals(Object o)
Overrides:
equals in class Object

hashCode

public int hashCode()
Overrides:
hashCode in class Object

toString

public String toString()
Overrides:
toString in class Object

getAttributeCount

public int getAttributeCount()
Description copied from interface: Tag
Number of attributes in tag.

Specified by:
getAttributeCount in interface Tag

getAttributeIndex

public int getAttributeIndex(String name,
                             boolean caseSensitive)
Description copied from interface: Tag
Determine which attribute has the specified name.

Specified by:
getAttributeIndex in interface Tag

getAttributeName

public String getAttributeName(int index)
Description copied from interface: Tag
Get name of attribute.

Specified by:
getAttributeName in interface Tag

getAttributeValue

public String getAttributeValue(int index)
Description copied from interface: Tag
Get value of an attribute. If this is an empty attribute (i.e. just a name, without a value), null is returned.

Specified by:
getAttributeValue in interface Tag

getAttributeValue

public String getAttributeValue(String name,
                                boolean caseSensitive)
Description copied from interface: Tag
Get value of an attribute. If this is an empty attribute (i.e. just a name, without a value), null is returned.

Specified by:
getAttributeValue in interface Tag

hasAttribute

public boolean hasAttribute(String name,
                            boolean caseSensitive)
Description copied from interface: Tag
Determine if an attribute is present.

Specified by:
hasAttribute in interface Tag

getName

public String getName()
Description copied from interface: Tag
Name of tag (ie. element name).

Specified by:
getName in interface Tag

getType

public int getType()
Type of tag:
<blah> - Tag.OPEN
</blah> - Tag.CLOSE
<blah/> - Tag.EMPTY

Specified by:
getType in interface Tag

setName

public void setName(String name)
Change the name of the attribute.


setType

public void setType(int type)
Change the type of the tag. Type of tag:
<blah> - Tag.OPEN
</blah> - Tag.CLOSE
<blah/> - Tag.EMPTY


growAttributes

private void growAttributes()

addAttribute

public int addAttribute(String name,
                        String value)
Add a new attribute. This does not check for the existence of an attribute with the same name, thus allowing duplicate attributes.

Parameters:
name - Name of attribute to change.
value - New value of attribute or null for an HTML style empty attribute.
Returns:
Index of new attribute.

setAttributeValue

public void setAttributeValue(String name,
                              boolean caseSensitive,
                              String value)
Change the value of an attribute, or add an attribute if it does not already exist.

Parameters:
name - Name of attribute to change.
caseSensitive - Whether the name should be treated as case sensitive when searching for an existing value.
value - New value of attribute or null for an HTML style empty attribute.

setAttributeName

public void setAttributeName(int attributeIndex,
                             String name)
Change the name of an existing attribute.


setAttributeValue

public void setAttributeValue(int attributeIndex,
                              String value)
Change the value of an existing attribute. The value may be null for an HTML style empty attribute.


removeAttribute

public void removeAttribute(int attributeIndex)
Remove an attribute.


removeAttribute

public void removeAttribute(String name,
                            boolean caseSensitive)
Change the value of an attribute, or add an attribute if it does not already exist.

Parameters:
name - Name of attribute to remove.
caseSensitive - Whether the name should be treated as case sensitive.

www.opensymphony.com/sitemesh/