Added javadoc

Added protected getters and setters for fields
Made fields private


git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/lang/trunk@137050 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Stephen Colebourne 2002-09-19 19:44:10 +00:00
parent 4ff3b6c75c
commit 1aded675b6
1 changed files with 441 additions and 38 deletions

View File

@ -60,19 +60,22 @@
import org.apache.commons.lang.SystemUtils;
/**
* <code>ToStringStyle</code> works with ToStringBuilder to create a
* toString.
* toString. The main public interface is always via ToStringBuilder.
* <p>
* These classes are intended to be used as singletons. There is no need
* to instantiate a new style each time. A prohram will generally use one
* to instantiate a new style each time. A program will generally use one
* of the predefined constants on this class. Alternatively, the
* {@link StandardToStringStyle} class can be used to set the individual
* settings.
* <P>
* If necessary, this class can be subclassed to provide specific toString
* designs. The main public interface is always via ToStringBuilder however.
* settings. Thus most styles can be achieved without subclassing.
* <p>
* If required, a subclass can override as many or as few of the methods as
* it requires.Each object type (from boolean to long to Object to int[]) has
* its own methods to output it. Most have two versions, detail and summary. For
* example, the detail version of the array based methods will output the
* whole array, whereas the summary method will just output the array length.
*
* @author <a href="mailto:scolebourne@joda.org">Stephen Colebourne</a>
* @version $Id: ToStringStyle.java,v 1.2 2002/09/17 22:09:11 scolebourne Exp $
* @version $Id: ToStringStyle.java,v 1.3 2002/09/19 19:44:10 scolebourne Exp $
*/
public abstract class ToStringStyle implements Serializable {
@ -96,76 +99,76 @@ public abstract class ToStringStyle implements Serializable {
/**
* Whether to use the field names 'true'
*/
protected boolean useFieldNames = true;
private boolean useFieldNames = true;
/**
* Whether to use the class name 'true'
*/
protected boolean useClassName = true;
private boolean useClassName = true;
/**
* Whether to use short class names 'false'
*/
protected boolean useShortClassName = false;
private boolean useShortClassName = false;
/**
* Whether to use the identity hash code 'true'
*/
protected boolean useIdentityHashCode = true;
private boolean useIdentityHashCode = true;
/**
* The content start '['
*/
protected String contentStart = "[";
private String contentStart = "[";
/**
* The content end ']'
*/
protected String contentEnd = "]";
private String contentEnd = "]";
/**
* The field name value separator '='
*/
protected String fieldNameValueSeparator = "=";
private String fieldNameValueSeparator = "=";
/**
* The field separator ','
*/
protected String fieldSeparator = ",";
private String fieldSeparator = ",";
/**
* The array start '{'
*/
protected String arrayStart = "{";
private String arrayStart = "{";
/**
* The array separator ','
*/
protected String arraySeparator = ",";
private String arraySeparator = ",";
/**
* The detail for array content
*/
protected boolean arrayContentDetail = true;
private boolean arrayContentDetail = true;
/**
* The array end '}'
*/
protected String arrayEnd = "}";
private String arrayEnd = "}";
/**
* The value to use when fullDetail is null 'true'
*/
protected boolean defaultFullDetail = true;
private boolean defaultFullDetail = true;
/**
* The null text '<null>'
*/
protected String nullText = "<null>";
private String nullText = "<null>";
/**
* The summary size text start '<size'
*/
protected String sizeStartText = "<size=";
private String sizeStartText = "<size=";
/**
* The summary size text start '>'
*/
protected String sizeEndText = ">";
private String sizeEndText = ">";
/**
* The summary object text start '<'
*/
protected String summaryObjectStartText = "<";
private String summaryObjectStartText = "<";
/**
* The summary object text start '>'
*/
protected String summaryObjectEndText = ">";
private String summaryObjectEndText = ">";
//----------------------------------------------------------------------------
@ -226,6 +229,10 @@ public void append(StringBuffer buffer, String fieldName, Object value, Boolean
/**
* Append to the toString an Object, correctly interpretting its type.
* <p>
* This method performs the main lookup by Class type to correctly route
* arrays, collections, maps and objects to the appropriate method. Either
* detail or summary views can be specified.
*
* @param buffer the StringBuffer to populate
* @param fieldName the field name, typically not used as already appended
@ -1171,6 +1178,10 @@ protected void appendFieldEnd(StringBuffer buffer, String fieldName) {
/**
* Append to the toString a size summary.
* <p>
* The size summary is used to summarize the contents of collections, maps
* and arrays. The text output is a prefix, the size (passed in) and a suffix.
* The default format is '&lt;size=n&gt;'.
*
* @param buffer the StringBuffer to populate
* @param fieldName the field name, typically not used as already appended
@ -1184,6 +1195,11 @@ protected void appendSummarySize(StringBuffer buffer, String fieldName, int size
/**
* Is this field to be output in full detail.
* <p>
* This method converts a detail request into a detail level. The calling code
* may request full detail (true), but a subclass might ignore that and always
* return false. The calling code may pass in null indicating that it doesn't
* care about the detail level. In this case the default detail level is used.
*
* @param fullDetail the detail level requested
* @return whether full detail is to be shown
@ -1197,6 +1213,8 @@ protected boolean isFullDetail(Boolean fullDetailRequest) {
/**
* Gets the short class name for a class.
* <p>
* The short class name is the name excluding the package name.
*
* @param cls the class to get the short name of
* @return the short name
@ -1210,6 +1228,391 @@ protected String getShortClassName(Class cls) {
return name.substring(pos + 1);
}
// Setters and getters for the customizable parts of the style
// These methods are not expected to be overridden, except to make public
// (They are not public so that immutable subclasses can be written)
//---------------------------------------------------------------------
/**
* Gets whether to use the class name.
* @return the current useClassName flag
*/
protected boolean isUseClassName() {
return useClassName;
}
/**
* Sets whether to use the class name.
* @param useClassName the new useClassName flag
*/
protected void setUseClassName(boolean useClassName) {
this.useClassName = useClassName;
}
//---------------------------------------------------------------------
/**
* Gets whether to output short or long class names.
* @return the current shortClassName flag
*/
protected boolean isShortClassName() {
return useShortClassName;
}
/**
* Sets whether to output short or long class names.
* @param shortClassName the new shortClassName flag
*/
protected void setShortClassName(boolean shortClassName) {
this.useShortClassName = shortClassName;
}
//---------------------------------------------------------------------
/**
* Gets whether to use the identity hash code.
* @return the current useIdentityHashCode flag
*/
protected boolean isUseIdentityHashCode() {
return useIdentityHashCode;
}
/**
* Sets whether to use the identity hash code.
* @param useFieldNames the new useIdentityHashCode flag
*/
protected void setUseIdentityHashCode(boolean useIdentityHashCode) {
this.useIdentityHashCode = useIdentityHashCode;
}
//---------------------------------------------------------------------
/**
* Gets whether to use the field names passed in.
* @return the current useFieldNames flag
*/
protected boolean isUseFieldNames() {
return useFieldNames;
}
/**
* Sets whether to use the field names passed in.
* @param useFieldNames the new useFieldNames flag
*/
protected void setUseFieldNames(boolean useFieldNames) {
this.useFieldNames = useFieldNames;
}
//---------------------------------------------------------------------
/**
* Gets whether to use full detail when the caller doesn't specify.
* @return the current defaultFullDetail flag
*/
protected boolean isDefaultFullDetail() {
return defaultFullDetail;
}
/**
* Sets whether to use full detail when the caller doesn't specify.
* @param defaultFullDetail the new defaultFullDetail flag
*/
protected void setDefaultFullDetail(boolean defaultFullDetail) {
this.defaultFullDetail = defaultFullDetail;
}
//---------------------------------------------------------------------
/**
* Gets whether to output array content detail.
* @return the current array content detail setting
*/
protected boolean isArrayContentDetail() {
return arrayContentDetail;
}
/**
* Sets whether to output array content detail.
* @param arrayContentDetail the new arrayContentDetail flag
*/
protected void setArrayContentDetail(boolean arrayContentDetail) {
this.arrayContentDetail = arrayContentDetail;
}
//---------------------------------------------------------------------
/**
* Gets the array start text.
* @return the current array start text
*/
protected String getArrayStart() {
return arrayStart;
}
/**
* Sets the array start text.
* Null is accepted, but will be converted to a blank string.
* @param arrayStart the new array start text
*/
protected void setArrayStart(String arrayStart) {
if (arrayStart == null) {
arrayStart = "";
}
this.arrayStart = arrayStart;
}
//---------------------------------------------------------------------
/**
* Gets the array end text.
* @return the current array end text
*/
protected String getArrayEnd() {
return arrayEnd;
}
/**
* Sets the array end text.
* Null is accepted, but will be converted to a blank string.
* @param arrayEnd the new array end text
*/
protected void setArrayEnd(String arrayEnd) {
if (arrayStart == null) {
arrayStart = "";
}
this.arrayEnd = arrayEnd;
}
//---------------------------------------------------------------------
/**
* Gets the array separator text.
* @return the current array separator text
*/
protected String getArraySeparator() {
return arraySeparator;
}
/**
* Sets the array separator text.
* Null is accepted, but will be converted to a blank string.
* @param arraySeparator the new array separator text
*/
protected void setArraySeparator(String arraySeparator) {
if (arraySeparator == null) {
arraySeparator = "";
}
this.arraySeparator = arraySeparator;
}
//---------------------------------------------------------------------
/**
* Gets the content start text.
* @return the current content start text
*/
protected String getContentStart() {
return contentStart;
}
/**
* Sets the content start text.
* Null is accepted, but will be converted to a blank string.
* @param contentStart the new content start text
*/
protected void setContentStart(String contentStart) {
if (contentStart == null) {
contentStart = "";
}
this.contentStart = contentStart;
}
//---------------------------------------------------------------------
/**
* Gets the content end text.
* @return the current content end text
*/
protected String getContentEnd() {
return contentEnd;
}
/**
* Sets the content end text.
* Null is accepted, but will be converted to a blank string.
* @param contentEnd the new content end text
*/
protected void setContentEnd(String contentEnd) {
if (contentEnd == null) {
contentEnd = "";
}
this.contentEnd = contentEnd;
}
//---------------------------------------------------------------------
/**
* Gets the field name value separator text.
* @return the current field name value separator text
*/
protected String getFieldNameValueSeparator() {
return fieldNameValueSeparator;
}
/**
* Sets the field name value separator text.
* Null is accepted, but will be converted to a blank string.
* @param fieldNameValueSeparator the new field name value separator text
*/
protected void setFieldNameValueSeparator(String fieldNameValueSeparator) {
if (fieldNameValueSeparator == null) {
fieldNameValueSeparator = "";
}
this.fieldNameValueSeparator = fieldNameValueSeparator;
}
//---------------------------------------------------------------------
/**
* Gets the field separator text.
* @return the current field separator text
*/
protected String getFieldSeparator() {
return fieldSeparator;
}
/**
* Sets the field separator text.
* Null is accepted, but will be converted to a blank string.
* @param fieldSeparator the new field separator text
*/
protected void setFieldSeparator(String fieldSeparator) {
if (fieldSeparator == null) {
fieldSeparator = "";
}
this.fieldSeparator = fieldSeparator;
}
//---------------------------------------------------------------------
/**
* Gets the text to output when null found.
* @return the current text to output when null found
*/
protected String getNullText() {
return nullText;
}
/**
* Sets the text to output when null found.
* Null is accepted, but will be converted to a blank string.
* @param nullText the new text to output when null found
*/
protected void setNullText(String nullText) {
if (nullText == null) {
nullText = "";
}
this.nullText = nullText;
}
//---------------------------------------------------------------------
/**
* Gets the text to output when a Collection, Map or Array size is output.
* This is output before the size value.
* @return the current start of size text
*/
protected String getSizeStartText() {
return sizeStartText;
}
/**
* Sets the text to output when a Collection, Map or Array size is output.
* This is output before the size value.
* Null is accepted, but will be converted to a blank string.
* @param sizeStartText the new start of size text
*/
protected void setSizeStartText(String sizeStartText) {
if (sizeStartText == null) {
sizeStartText = "";
}
this.sizeStartText = sizeStartText;
}
//---------------------------------------------------------------------
/**
* Gets the text to output when a Collection, Map or Array size is output.
* This is output after the size value.
* @return the current end of size text
*/
protected String getSizeEndText() {
return sizeEndText;
}
/**
* Sets the text to output when a Collection, Map or Array size is output.
* This is output after the size value.
* Null is accepted, but will be converted to a blank string.
* @param sizeEndText the new end of size text
*/
protected void setSizeEndText(String sizeEndText) {
if (sizeEndText == null) {
sizeEndText = "";
}
this.sizeEndText = sizeEndText;
}
//---------------------------------------------------------------------
/**
* Gets the text to output when an Object is output in summary mode.
* This is output before the size value.
* @return the current start of summary text
*/
protected String getSummaryObjectStartText() {
return summaryObjectStartText;
}
/**
* Sets the text to output when an Object is output in summary mode.
* This is output before the size value.
* Null is accepted, but will be converted to a blank string.
* @param summaryObjectStartText the new start of summary text
*/
protected void setSummaryObjectStartText(String summaryObjectStartText) {
if (summaryObjectStartText == null) {
summaryObjectStartText = "";
}
this.summaryObjectStartText = summaryObjectStartText;
}
//---------------------------------------------------------------------
/**
* Gets the text to output when an Object is output in summary mode.
* This is output after the size value.
* @return the current end of summary text
*/
protected String getSummaryObjectEndText() {
return summaryObjectEndText;
}
/**
* Sets the text to output when an Object is output in summary mode.
* This is output after the size value.
* Null is accepted, but will be converted to a blank string.
* @param summaryObjectEndText the new end of summary text
*/
protected void setSummaryObjectEndText(String summaryObjectEndText) {
if (summaryObjectEndText == null) {
summaryObjectEndText = "";
}
this.summaryObjectEndText = summaryObjectEndText;
}
//---------------------------------------------------------------------
//----------------------------------------------------------------------------
/**
@ -1217,7 +1620,7 @@ protected String getShortClassName(Class cls) {
* This is an inner class rather than using StandardToStringStyle to
* ensure its immutability.
*/
private static class DefaultToStringStyle extends ToStringStyle {
private static final class DefaultToStringStyle extends ToStringStyle {
/**
* Constructor - use the static constant rather than instantiating.
@ -1242,14 +1645,14 @@ private Object readResolve() {
* This is an inner class rather than using StandardToStringStyle to
* ensure its immutability.
*/
private static class NoFieldNameToStringStyle extends ToStringStyle {
private static final class NoFieldNameToStringStyle extends ToStringStyle {
/**
* Constructor - use the static constant rather than instantiating.
*/
private NoFieldNameToStringStyle() {
super();
useFieldNames = false;
setUseFieldNames(false);
}
/**
@ -1269,18 +1672,18 @@ private Object readResolve() {
* This is an inner class rather than using StandardToStringStyle to
* ensure its immutability.
*/
private static class SimpleToStringStyle extends ToStringStyle {
private static final class SimpleToStringStyle extends ToStringStyle {
/**
* Constructor - use the static constant rather than instantiating.
*/
private SimpleToStringStyle() {
super();
useClassName = false;
useIdentityHashCode = false;
useFieldNames = false;
contentStart = "";
contentEnd = "";
setUseClassName(false);
setUseIdentityHashCode(false);
setUseFieldNames(false);
setContentStart("");
setContentEnd("");
}
/**
@ -1299,16 +1702,16 @@ private Object readResolve() {
* This is an inner class rather than using StandardToStringStyle to
* ensure its immutability.
*/
private static class MultiLineToStringStyle extends ToStringStyle {
private static final class MultiLineToStringStyle extends ToStringStyle {
/**
* Constructor - use the static constant rather than instantiating.
*/
private MultiLineToStringStyle() {
super();
contentStart = "[" + SystemUtils.LINE_SEPARATOR + " ";
fieldSeparator = SystemUtils.LINE_SEPARATOR + " ";
contentEnd = SystemUtils.LINE_SEPARATOR + "]";
setContentStart("[" + SystemUtils.LINE_SEPARATOR + " ");
setFieldSeparator(SystemUtils.LINE_SEPARATOR + " ");
setContentEnd(SystemUtils.LINE_SEPARATOR + "]");
}
/**