ggregory 2003/12/28 17:47:02
Modified: lang/src/java/org/apache/commons/lang/builder
ReflectionToStringBuilder.java
Log:
Reformat (Eclipse) for line-length 120 and add missing @throws documentation.
Revision Changes Path
1.16 +467 -299
jakarta-commons/lang/src/java/org/apache/commons/lang/builder/ReflectionToStringBuilder.java
Index: ReflectionToStringBuilder.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/lang/src/java/org/apache/commons/lang/builder/ReflectionToStringBuilder.java,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- ReflectionToStringBuilder.java 2 Dec 2003 19:11:58 -0000 1.15
+++ ReflectionToStringBuilder.java 29 Dec 2003 01:47:02 -0000 1.16
@@ -58,36 +58,53 @@
import java.lang.reflect.Modifier;
import java.util.HashSet;
import java.util.Set;
-
import org.apache.commons.lang.ClassUtils;
/**
- * <p>Assists in implementing [EMAIL PROTECTED] Object#toString()} methods using
reflection.</p>
- *
- * <p>This class uses reflection to determine the fields to append.
- * Because these fields are usually private, the class
- * uses <code>AccessibleObject.setAccessible</code> to
- * change the visibility of the fields. This will fail under a security manager,
- * unless the appropriate permissions are set up correctly.</p>
- *
- * <p>A typical invocation for this method would look like:</p>
+ * <p>
+ * Assists in implementing [EMAIL PROTECTED] Object#toString()}methods using
reflection.
+ * </p>
+ *
+ * <p>
+ * This class uses reflection to determine the fields to append. Because these
+ * fields are usually private, the class uses
+ * [EMAIL PROTECTED]
java.lang.reflect.AccessibleObject#setAccessible(java.lang.reflect.AccessibleObject[],
boolean)}
+ * to change the visibility of the fields. This will fail under a security
+ * manager, unless the appropriate permissions are set up correctly.
+ * </p>
+ *
+ * <p>
+ * A typical invocation for this method would look like:
+ * </p>
+ *
* <pre>
* public String toString() {
* return ReflectionToStringBuilder.toString(this);
* }</pre>
- *
- * <p>You can also use the builder to debug 3rd party objects:</p>
+ *
+ *
+ *
+ * <p>
+ * You can also use the builder to debug 3rd party objects:
+ * </p>
+ *
* <pre>
* System.out.println("An object: " +
ReflectionToStringBuilder.toString(anObject));</pre>
*
- * <p>A subclass can control field output by overriding the methods:
- * <ul>
- * <li>[EMAIL PROTECTED] #accept(java.lang.reflect.Field)}</li>
- * <li>[EMAIL PROTECTED] #getValue(java.lang.reflect.Field)}</li>
+ *
+ *
+ * <p>
+ * A subclass can control field output by overriding the methods:
+ * <ul>
+ * <li>[EMAIL PROTECTED] #accept(java.lang.reflect.Field)}</li>
+ * <li>[EMAIL PROTECTED] #getValue(java.lang.reflect.Field)}</li>
* </ul>
* </p>
- * <p>For example, this method does <i>not</i> include the <code>password</code>
field in the returned
- * <code>String</code>:</p>
+ * <p>
+ * For example, this method does <i>not</i> include the <code>password</code>
+ * field in the returned <code>String</code>:
+ * </p>
+ *
* <pre>
* public String toString() {
* return (new ReflectionToStringBuilder(this) {
@@ -97,250 +114,342 @@
* }).toString();
* }</pre>
*
- * <p>The exact format of the <code>toString</code> is determined by
- * the [EMAIL PROTECTED] ToStringStyle} passed into the constructor.</p>
- *
+ *
+ *
+ * <p>
+ * The exact format of the <code>toString</code> is determined by the
+ * [EMAIL PROTECTED] ToStringStyle}passed into the constructor.
+ * </p>
+ *
* @author Gary Gregory
* @author Stephen Colebourne
* @author Pete Gieser
* @since 2.0
- * @version $Id$
+ * @version $Id: ReflectionToStringBuilder.java,v 1.15 2003/12/02 19:11:58
+ * ggregory Exp $
*/
public class ReflectionToStringBuilder extends ToStringBuilder {
-
/**
- * <p>A registry of objects used by <code>reflectionToString</code> methods
- * to detect cyclical object references and avoid infinite loops.</p>
+ * <p>
+ * A registry of objects used by <code>reflectionToString</code> methods
+ * to detect cyclical object references and avoid infinite loops.
+ * </p>
*/
private static ThreadLocal registry = new ThreadLocal() {
protected synchronized Object initialValue() {
- // The HashSet implementation is not synchronized,
- // which is just what we need here.
- return new HashSet();
+ // The HashSet implementation is not synchronized,
+ // which is just what we need here.
+ return new HashSet();
}
};
/**
- * <p>Returns the registry of objects being traversed by the
- * <code>reflectionToString</code> methods in the current thread.</p>
- *
- * @return Set the registry of objects being traversed
+ * <p>
+ * Returns the registry of objects being traversed by the
<code>reflectionToString</code>
+ * methods in the current thread.
+ * </p>
+ *
+ * @return Set the registry of objects being traversed
*/
static Set getRegistry() {
return (Set) registry.get();
}
/**
- * <p>Returns <code>true</code> if the registry contains the given object.
- * Used by the reflection methods to avoid infinite loops.</p>
- *
- * @param value The object to lookup in the registry.
- * @return boolean <code>true</code> if the registry contains the given object.
+ * <p>
+ * Returns <code>true</code> if the registry contains the given object.
+ * Used by the reflection methods to avoid infinite loops.
+ * </p>
+ *
+ * @param value
+ * The object to lookup in the registry.
+ * @return boolean <code>true</code> if the registry contains the given
+ * object.
*/
static boolean isRegistered(Object value) {
return getRegistry().contains(value);
}
/**
- * <p>Registers the given object.
- * Used by the reflection methods to avoid infinite loops.</p>
+ * <p>
+ * Registers the given object. Used by the reflection methods to avoid
+ * infinite loops.
+ * </p>
*
- * @param value The object to register.
+ * @param value
+ * The object to register.
*/
static void register(Object value) {
getRegistry().add(value);
}
/**
- * <p>This method uses reflection to build a suitable
- * <code>toString</code> using the default <code>ToStringStyle</code>.
- *
- * <p>It uses <code>AccessibleObject.setAccessible</code> to gain access to
private
- * fields. This means that it will throw a security exception if run
- * under a security manager, if the permissions are not set up correctly.
- * It is also not as efficient as testing explicitly.</p>
- *
- * <p>Transient members will be not be included, as they are likely derived.
- * Static fields will not be included. Superclass fields will be appended.</p>
- *
- * @param object the Object to be output
+ * <p>
+ * This method uses reflection to build a suitable <code>toString</code>
+ * using the default <code>ToStringStyle</code>.
+ *
+ * <p>
+ * It uses <code>AccessibleObject.setAccessible</code> to gain access to
+ * private fields. This means that it will throw a security exception if
+ * run under a security manager, if the permissions are not set up
+ * correctly. It is also not as efficient as testing explicitly.
+ * </p>
+ *
+ * <p>
+ * Transient members will be not be included, as they are likely derived.
+ * Static fields will not be included. Superclass fields will be appended.
+ * </p>
+ *
+ * @param object
+ * the Object to be output
* @return the String result
- * @throws IllegalArgumentException if the Object is <code>null</code>
+ * @throws IllegalArgumentException
+ * if the Object is <code>null</code>
*/
public static String toString(Object object) {
return toString(object, null, false, false, null);
}
/**
- * <p>This method uses reflection to build a suitable
- * <code>toString</code>.</p>
- *
- * <p>It uses <code>AccessibleObject.setAccessible</code> to gain access to
private
- * fields. This means that it will throw a security exception if run
- * under a security manager, if the permissions are not set up correctly.
- * It is also not as efficient as testing explicitly.</p>
- *
- * <p>Transient members will be not be included, as they are likely derived.
- * Static fields will not be included. Superclass fields will be appended.</p>
- *
- * <p>If the style is <code>null</code>, the default
- * <code>ToStringStyle</code> is used.</p>
- *
- * @param object the Object to be output
- * @param style the style of the <code>toString</code> to create,
- * may be <code>null</code>
+ * <p>
+ * This method uses reflection to build a suitable <code>toString</code>.
+ * </p>
+ *
+ * <p>
+ * It uses <code>AccessibleObject.setAccessible</code> to gain access to
+ * private fields. This means that it will throw a security exception if
+ * run under a security manager, if the permissions are not set up
+ * correctly. It is also not as efficient as testing explicitly.
+ * </p>
+ *
+ * <p>
+ * Transient members will be not be included, as they are likely derived.
+ * Static fields will not be included. Superclass fields will be appended.
+ * </p>
+ *
+ * <p>
+ * If the style is <code>null</code>, the default <code>ToStringStyle</code>
+ * is used.
+ * </p>
+ *
+ * @param object
+ * the Object to be output
+ * @param style
+ * the style of the <code>toString</code> to create, may be
+ * <code>null</code>
* @return the String result
- * @throws IllegalArgumentException if the Object or
- * <code>ToStringStyle</code> is <code>null</code>
+ * @throws IllegalArgumentException
+ * if the Object or <code>ToStringStyle</code> is
<code>null</code>
*/
public static String toString(Object object, ToStringStyle style) {
return toString(object, style, false, false, null);
}
/**
- * <p>This method uses reflection to build a suitable
- * <code>toString</code>.</p>
- *
- * <p>It uses <code>AccessibleObject.setAccessible</code> to gain access to
private
- * fields. This means that it will throw a security exception if run
- * under a security manager, if the permissions are not set up correctly.
- * It is also not as efficient as testing explicitly. </p>
- *
- * <p>If the <code>outputTransients</code> is <code>true</code>,
- * transient members will be output, otherwise they are ignored,
- * as they are likely derived fields, and not part of the value of the
- * Object.</p>
- *
- * <p>Static fields will not be included. Superclass fields will be
appended.</p>
- *
- * <p>If the style is <code>null</code>, the default
- * <code>ToStringStyle</code> is used.</p>
- *
- * @param object the Object to be output
- * @param style the style of the <code>toString</code> to create,
- * may be <code>null</code>
- * @param outputTransients whether to include transient fields
+ * <p>
+ * This method uses reflection to build a suitable <code>toString</code>.
+ * </p>
+ *
+ * <p>
+ * It uses <code>AccessibleObject.setAccessible</code> to gain access to
+ * private fields. This means that it will throw a security exception if
+ * run under a security manager, if the permissions are not set up
+ * correctly. It is also not as efficient as testing explicitly.
+ * </p>
+ *
+ * <p>
+ * If the <code>outputTransients</code> is <code>true</code>,
+ * transient members will be output, otherwise they are ignored, as they
+ * are likely derived fields, and not part of the value of the Object.
+ * </p>
+ *
+ * <p>
+ * Static fields will not be included. Superclass fields will be appended.
+ * </p>
+ *
+ * <p>
+ * If the style is <code>null</code>, the default <code>ToStringStyle</code>
+ * is used.
+ * </p>
+ *
+ * @param object
+ * the Object to be output
+ * @param style
+ * the style of the <code>toString</code> to create, may be
+ * <code>null</code>
+ * @param outputTransients
+ * whether to include transient fields
* @return the String result
- * @throws IllegalArgumentException if the Object is <code>null</code>
+ * @throws IllegalArgumentException
+ * if the Object is <code>null</code>
*/
public static String toString(Object object, ToStringStyle style, boolean
outputTransients) {
return toString(object, style, outputTransients, false, null);
}
/**
- * <p>This method uses reflection to build a suitable
- * <code>toString</code>.</p>
- *
- * <p>It uses <code>AccessibleObject.setAccessible</code> to gain access to
private
- * fields. This means that it will throw a security exception if run
- * under a security manager, if the permissions are not set up correctly.
- * It is also not as efficient as testing explicitly.</p>
- *
- * <p>If the <code>outputTransients</code> is <code>true</code>,
- * transient fields will be output, otherwise they are ignored,
- * as they are likely derived fields, and not part of the value of the
- * Object.</p>
- *
- * <p>If the <code>outputStatics</code> is <code>true</code>,
- * static fields will be output, otherwise they are ignored.</p>
- *
- * <p>Static fields will not be included. Superclass fields will be
appended.</p>
- *
- * <p>If the style is <code>null</code>, the default
- * <code>ToStringStyle</code> is used.</p>
- *
- * @param object the Object to be output
- * @param style the style of the <code>toString</code> to create,
- * may be <code>null</code>
- * @param outputTransients whether to include transient fields
- * @param outputStatics whether to include transient fields
+ * <p>
+ * This method uses reflection to build a suitable <code>toString</code>.
+ * </p>
+ *
+ * <p>
+ * It uses <code>AccessibleObject.setAccessible</code> to gain access to
+ * private fields. This means that it will throw a security exception if
+ * run under a security manager, if the permissions are not set up
+ * correctly. It is also not as efficient as testing explicitly.
+ * </p>
+ *
+ * <p>
+ * If the <code>outputTransients</code> is <code>true</code>,
+ * transient fields will be output, otherwise they are ignored, as they are
+ * likely derived fields, and not part of the value of the Object.
+ * </p>
+ *
+ * <p>
+ * If the <code>outputStatics</code> is <code>true</code>, static
+ * fields will be output, otherwise they are ignored.
+ * </p>
+ *
+ * <p>
+ * Static fields will not be included. Superclass fields will be appended.
+ * </p>
+ *
+ * <p>
+ * If the style is <code>null</code>, the default <code>ToStringStyle</code>
+ * is used.
+ * </p>
+ *
+ * @param object
+ * the Object to be output
+ * @param style
+ * the style of the <code>toString</code> to create, may be
+ * <code>null</code>
+ * @param outputTransients
+ * whether to include transient fields
+ * @param outputStatics
+ * whether to include transient fields
* @return the String result
- * @throws IllegalArgumentException if the Object is <code>null</code>
+ * @throws IllegalArgumentException
+ * if the Object is <code>null</code>
*/
public static String toString(Object object, ToStringStyle style, boolean
outputTransients, boolean outputStatics) {
return toString(object, style, outputTransients, outputStatics, null);
}
/**
- * <p>This method uses reflection to build a suitable
- * <code>toString</code>.</p>
- *
- * <p>It uses <code>AccessibleObject.setAccessible</code> to gain access to
private
- * fields. This means that it will throw a security exception if run
- * under a security manager, if the permissions are not set up correctly.
- * It is also not as efficient as testing explicitly. </p>
- *
- * <p>If the <code>outputTransients</code> is <code>true</code>,
- * transient fields will be output, otherwise they are ignored,
- * as they are likely derived fields, and not part of the value of the
- * Object.</p>
- *
- * <p>If the <code>outputStatics</code> is <code>true</code>,
- * static fields will be output, otherwise they are ignored.</p>
- *
- * <p>Superclass fields will be appended up to and including the
- * specified superclass. A null superclass is treated as
- * <code>java.lang.Object</code>.</p>
- *
- * <p>If the style is <code>null</code>, the default
- * <code>ToStringStyle</code> is used.</p>
- *
- * @param object the Object to be output
- * @param style the style of the <code>toString</code> to create,
- * may be <code>null</code>
- * @param outputTransients whether to include transient fields
- * @param outputStatics whether to include static fields
- * @param reflectUpToClass the superclass to reflect up to (inclusive),
- * may be <code>null</code>
+ * <p>
+ * This method uses reflection to build a suitable <code>toString</code>.
+ * </p>
+ *
+ * <p>
+ * It uses <code>AccessibleObject.setAccessible</code> to gain access to
+ * private fields. This means that it will throw a security exception if
+ * run under a security manager, if the permissions are not set up
+ * correctly. It is also not as efficient as testing explicitly.
+ * </p>
+ *
+ * <p>
+ * If the <code>outputTransients</code> is <code>true</code>,
+ * transient fields will be output, otherwise they are ignored, as they are
+ * likely derived fields, and not part of the value of the Object.
+ * </p>
+ *
+ * <p>
+ * If the <code>outputStatics</code> is <code>true</code>, static
+ * fields will be output, otherwise they are ignored.
+ * </p>
+ *
+ * <p>
+ * Superclass fields will be appended up to and including the specified
+ * superclass. A null superclass is treated as <code>java.lang.Object</code>.
+ * </p>
+ *
+ * <p>
+ * If the style is <code>null</code>, the default <code>ToStringStyle</code>
+ * is used.
+ * </p>
+ *
+ * @param object
+ * the Object to be output
+ * @param style
+ * the style of the <code>toString</code> to create, may be
+ * <code>null</code>
+ * @param outputTransients
+ * whether to include transient fields
+ * @param outputStatics
+ * whether to include static fields
+ * @param reflectUpToClass
+ * the superclass to reflect up to (inclusive), may be
<code>null</code>
* @return the String result
- * @throws IllegalArgumentException if the Object is <code>null</code>
+ * @throws IllegalArgumentException
+ * if the Object is <code>null</code>
*/
- public static String toString(Object object, ToStringStyle style, boolean
outputTransients, boolean outputStatics, Class reflectUpToClass) {
- return new ReflectionToStringBuilder(object, style, null, reflectUpToClass,
outputTransients, outputStatics).toString();
+ public static String toString(Object object, ToStringStyle style, boolean
outputTransients, boolean outputStatics,
+ Class reflectUpToClass) {
+ return new ReflectionToStringBuilder(object, style, null, reflectUpToClass,
outputTransients, outputStatics)
+ .toString();
}
/**
- * <p>This method uses reflection to build a suitable
- * <code>toString</code>.</p>
- *
- * <p>It uses <code>AccessibleObject.setAccessible</code> to gain access to
private
- * fields. This means that it will throw a security exception if run
- * under a security manager, if the permissions are not set up correctly.
- * It is also not as efficient as testing explicitly. </p>
- *
- * <p>If the <code>outputTransients</code> is <code>true</code>,
- * transient members will be output, otherwise they are ignored,
- * as they are likely derived fields, and not part of the value of the
- * Object.</p>
- *
- * <p>Static fields will not be included. Superclass fields will be appended
- * up to and including the specified superclass. A null superclass is treated
- * as <code>java.lang.Object</code>.</p>
- *
- * <p>If the style is <code>null</code>, the default
- * <code>ToStringStyle</code> is used.</p>
- *
- * @deprecated Use [EMAIL PROTECTED]
#toString(Object,ToStringStyle,boolean,boolean,Class)}
- *
- * @param object the Object to be output
- * @param style the style of the <code>toString</code> to create,
- * may be <code>null</code>
- * @param outputTransients whether to include transient fields
- * @param reflectUpToClass the superclass to reflect up to (inclusive),
- * may be <code>null</code>
+ * <p>
+ * This method uses reflection to build a suitable <code>toString</code>.
+ * </p>
+ *
+ * <p>
+ * It uses <code>AccessibleObject.setAccessible</code> to gain access to
+ * private fields. This means that it will throw a security exception if
+ * run under a security manager, if the permissions are not set up
+ * correctly. It is also not as efficient as testing explicitly.
+ * </p>
+ *
+ * <p>
+ * If the <code>outputTransients</code> is <code>true</code>,
+ * transient members will be output, otherwise they are ignored, as they
+ * are likely derived fields, and not part of the value of the Object.
+ * </p>
+ *
+ * <p>
+ * Static fields will not be included. Superclass fields will be appended
+ * up to and including the specified superclass. A null superclass is
+ * treated as <code>java.lang.Object</code>.
+ * </p>
+ *
+ * <p>
+ * If the style is <code>null</code>, the default <code>ToStringStyle</code>
+ * is used.
+ * </p>
+ *
+ * @deprecated Use
+ * [EMAIL PROTECTED]
#toString(Object,ToStringStyle,boolean,boolean,Class)}
+ *
+ * @param object
+ * the Object to be output
+ * @param style
+ * the style of the <code>toString</code> to create, may be
+ * <code>null</code>
+ * @param outputTransients
+ * whether to include transient fields
+ * @param reflectUpToClass
+ * the superclass to reflect up to (inclusive), may be
<code>null</code>
* @return the String result
- * @throws IllegalArgumentException if the Object is <code>null</code>
+ * @throws IllegalArgumentException
+ * if the Object is <code>null</code>
*/
public static String toString(Object object, ToStringStyle style, boolean
outputTransients, Class reflectUpToClass) {
return new ReflectionToStringBuilder(object, style, null, reflectUpToClass,
outputTransients).toString();
}
/**
- * <p>Unregisters the given object.</p>
- *
- * <p>Used by the reflection methods to avoid infinite loops.</p>
+ * <p>
+ * Unregisters the given object.
+ * </p>
+ *
+ * <p>
+ * Used by the reflection methods to avoid infinite loops.
+ * </p>
*
- * @param value The object to unregister.
+ * @param value
+ * The object to unregister.
*/
static void unregister(Object value) {
getRegistry().remove(value);
@@ -362,51 +471,69 @@
private Class upToClass = null;
/**
- * <p>Constructor.</p>
- *
- * <p>This constructor outputs using the default style set with
- * <code>setDefaultStyle</code>.</p>
- *
- * @param object the Object to build a <code>toString</code> for,
- * must not be <code>null</code>
- * @throws IllegalArgumentException if the Object passed in is
- * <code>null</code>
+ * <p>
+ * Constructor.
+ * </p>
+ *
+ * <p>
+ * This constructor outputs using the default style set with
<code>setDefaultStyle</code>.
+ * </p>
+ *
+ * @param object
+ * the Object to build a <code>toString</code> for, must not
+ * be <code>null</code>
+ * @throws IllegalArgumentException
+ * if the Object passed in is <code>null</code>
*/
public ReflectionToStringBuilder(Object object) {
super(object);
}
/**
- * <p>Constructor.</p>
- *
- * <p>If the style is <code>null</code>, the default style is used.</p>
- *
- * @param object the Object to build a <code>toString</code> for,
- * must not be <code>null</code>
- * @param style the style of the <code>toString</code> to create,
- * may be <code>null</code>
- * @throws IllegalArgumentException if the Object passed in is
- * <code>null</code>
+ * <p>
+ * Constructor.
+ * </p>
+ *
+ * <p>
+ * If the style is <code>null</code>, the default style is used.
+ * </p>
+ *
+ * @param object
+ * the Object to build a <code>toString</code> for, must not
+ * be <code>null</code>
+ * @param style
+ * the style of the <code>toString</code> to create, may be
+ * <code>null</code>
+ * @throws IllegalArgumentException
+ * if the Object passed in is <code>null</code>
*/
public ReflectionToStringBuilder(Object object, ToStringStyle style) {
super(object, style);
}
/**
- * <p>Constructor.</p>
- *
- * <p>If the style is <code>null</code>, the default style is used.</p>
- *
- * <p>If the buffer is <code>null</code>, a new one is created.</p>
- *
- * @param object the Object to build a <code>toString</code> for,
- * must not be <code>null</code>
- * @param style the style of the <code>toString</code> to create,
- * may be <code>null</code>
- * @param buffer the <code>StringBuffer</code> to populate, may be
- * <code>null</code>
- * @throws IllegalArgumentException if the Object passed in is
- * <code>null</code>
+ * <p>
+ * Constructor.
+ * </p>
+ *
+ * <p>
+ * If the style is <code>null</code>, the default style is used.
+ * </p>
+ *
+ * <p>
+ * If the buffer is <code>null</code>, a new one is created.
+ * </p>
+ *
+ * @param object
+ * the Object to build a <code>toString</code> for, must not
+ * be <code>null</code>
+ * @param style
+ * the style of the <code>toString</code> to create, may be
+ * <code>null</code>
+ * @param buffer
+ * the <code>StringBuffer</code> to populate, may be
<code>null</code>
+ * @throws IllegalArgumentException
+ * if the Object passed in is <code>null</code>
*/
public ReflectionToStringBuilder(Object object, ToStringStyle style,
StringBuffer buffer) {
super(object, style, buffer);
@@ -415,24 +542,24 @@
/**
* Constructor.
*
- * @deprecated Use [EMAIL PROTECTED]
#ReflectionToStringBuilder(Object,ToStringStyle,StringBuffer,Class,boolean,boolean)}.
+ * @deprecated Use
+ * [EMAIL PROTECTED]
#ReflectionToStringBuilder(Object,ToStringStyle,StringBuffer,Class,boolean,boolean)}.
*
- * @param object the Object to build a <code>toString</code> for,
- * must not be <code>null</code>
- * @param style the style of the <code>toString</code> to create,
- * may be <code>null</code>
- * @param buffer the <code>StringBuffer</code> to populate, may be
- * <code>null</code>
- * @param reflectUpToClass the superclass to reflect up to (inclusive),
- * may be <code>null</code>
- * @param outputTransients whether to include transient fields
- */
- public ReflectionToStringBuilder(
- Object object,
- ToStringStyle style,
- StringBuffer buffer,
- Class reflectUpToClass,
- boolean outputTransients) {
+ * @param object
+ * the Object to build a <code>toString</code> for, must not
+ * be <code>null</code>
+ * @param style
+ * the style of the <code>toString</code> to create, may be
+ * <code>null</code>
+ * @param buffer
+ * the <code>StringBuffer</code> to populate, may be
<code>null</code>
+ * @param reflectUpToClass
+ * the superclass to reflect up to (inclusive), may be
<code>null</code>
+ * @param outputTransients
+ * whether to include transient fields
+ */
+ public ReflectionToStringBuilder(Object object, ToStringStyle style,
StringBuffer buffer, Class reflectUpToClass,
+ boolean outputTransients) {
super(object, style, buffer);
this.setUpToClass(reflectUpToClass);
this.setAppendTransients(outputTransients);
@@ -441,24 +568,23 @@
/**
* Constructor.
*
- * @param object the Object to build a <code>toString</code> for,
- * must not be <code>null</code>
- * @param style the style of the <code>toString</code> to create,
- * may be <code>null</code>
- * @param buffer the <code>StringBuffer</code> to populate, may be
- * <code>null</code>
- * @param reflectUpToClass the superclass to reflect up to (inclusive),
- * may be <code>null</code>
- * @param outputTransients whether to include transient fields
- * @param outputStatics whether to include static fields
- */
- public ReflectionToStringBuilder(
- Object object,
- ToStringStyle style,
- StringBuffer buffer,
- Class reflectUpToClass,
- boolean outputTransients,
- boolean outputStatics) {
+ * @param object
+ * the Object to build a <code>toString</code> for, must not
+ * be <code>null</code>
+ * @param style
+ * the style of the <code>toString</code> to create, may be
+ * <code>null</code>
+ * @param buffer
+ * the <code>StringBuffer</code> to populate, may be
<code>null</code>
+ * @param reflectUpToClass
+ * the superclass to reflect up to (inclusive), may be
<code>null</code>
+ * @param outputTransients
+ * whether to include transient fields
+ * @param outputStatics
+ * whether to include static fields
+ */
+ public ReflectionToStringBuilder(Object object, ToStringStyle style,
StringBuffer buffer, Class reflectUpToClass,
+ boolean outputTransients, boolean outputStatics) {
super(object, style, buffer);
this.setUpToClass(reflectUpToClass);
this.setAppendTransients(outputTransients);
@@ -468,11 +594,15 @@
/**
* Returns whether or not to append the given <code>Field</code>.
* <ul>
- * <li>Transient fields are appended only if [EMAIL PROTECTED]
#isAppendTransients()} returns <code>true</code>.
- * <li>Static fields are appended only if [EMAIL PROTECTED]
#isAppendStatics()} returns <code>true</code>.
- * <li>Inner class fields are not appened.</li>
+ * <li>Transient fields are appended only if [EMAIL PROTECTED]
#isAppendTransients()}
+ * returns <code>true</code>.
+ * <li>Static fields are appended only if [EMAIL PROTECTED] #isAppendStatics()}
+ * returns <code>true</code>.
+ * <li>Inner class fields are not appened.</li>
* </ul>
- * @param field The Field to test.
+ *
+ * @param field
+ * The Field to test.
* @return Whether or not to append the given <code>Field</code>.
*/
protected boolean accept(Field field) {
@@ -492,19 +622,26 @@
}
/**
- * <p>Appends the fields and values defined by the given object of the
- * given Class.</p>
- *
- * <p>If a cycle is detected as an object is "toString()'ed",
- * such an object is rendered as if <code>Object.toString()</code>
- * had been called and not implemented by the object.</p>
+ * <p>
+ * Appends the fields and values defined by the given object of the given
+ * Class.
+ * </p>
+ *
+ * <p>
+ * If a cycle is detected as an object is "toString()'ed", such
+ * an object is rendered as if <code>Object.toString()</code> had been
+ * called and not implemented by the object.
+ * </p>
*
- * @param clazz The class of object parameter
+ * @param clazz
+ * The class of object parameter
*/
protected void appendFieldsIn(Class clazz) {
if (isRegistered(this.getObject())) {
- // The object has already been appended, therefore we have an object
cycle.
- // Append a simple Object.toString style string. The field name is
already appended at this point.
+ // The object has already been appended, therefore we have an
+ // object cycle.
+ // Append a simple Object.toString style string. The field name is
+ // already appended at this point.
this.appendAsObjectToString(this.getObject());
return;
}
@@ -521,16 +658,18 @@
String fieldName = field.getName();
if (this.accept(field)) {
try {
- // Warning: Field.get(Object) creates wrappers objects for
primitive types.
+ // Warning: Field.get(Object) creates wrappers objects
+ // for primitive types.
Object fieldValue = this.getValue(field);
if (isRegistered(fieldValue) &&
!field.getType().isPrimitive()) {
- // A known field value has already been appended,
therefore we have an object cycle,
+ // A known field value has already been appended,
+ // therefore we have an object cycle,
// append a simple Object.toString style string.
this.getStyle().appendFieldStart(this.getStringBuffer(), fieldName);
this.appendAsObjectToString(fieldValue);
- // The recursion out of
- // builder.append(fieldName, fieldValue);
- // below will append the field
+ // The recursion out of
+ // builder.append(fieldName, fieldValue);
+ // below will append the field
// end marker.
} else {
try {
@@ -541,8 +680,10 @@
}
}
} catch (IllegalAccessException ex) {
- //this can't happen. Would get a Security exception instead
- //throw a runtime exception in case the impossible happens.
+ //this can't happen. Would get a Security exception
+ // instead
+ //throw a runtime exception in case the impossible
+ // happens.
throw new InternalError("Unexpected IllegalAccessException:
" + ex.getMessage());
}
}
@@ -553,7 +694,9 @@
}
/**
- * <p>Gets the last super class to stop appending fields for.</p>
+ * <p>
+ * Gets the last super class to stop appending fields for.
+ * </p>
*
* @return The last super class to stop appending fields for.
*/
@@ -562,13 +705,18 @@
}
/**
- * <p>Calls <code>java.lang.reflect.Field.get(Object)</code>.</p>
- *
- * @param field The Field to query.
+ * <p>
+ * Calls <code>java.lang.reflect.Field.get(Object)</code>.
+ * </p>
+ *
+ * @param field
+ * The Field to query.
* @return The Object from the given Field.
*
* @throws IllegalArgumentException
+ * see [EMAIL PROTECTED] java.lang.reflect.Field#get(Object)}
* @throws IllegalAccessException
+ * see [EMAIL PROTECTED] java.lang.reflect.Field#get(Object)}
*
* @see java.lang.reflect.Field#get(Object)
*/
@@ -577,7 +725,9 @@
}
/**
- * <p>Gets whether or not to append static fields.</p>
+ * <p>
+ * Gets whether or not to append static fields.
+ * </p>
*
* @return Whether or not to append static fields.
*/
@@ -586,7 +736,9 @@
}
/**
- * <p>Gets whether or not to append transient fields.</p>
+ * <p>
+ * Gets whether or not to append transient fields.
+ * </p>
*
* @return Whether or not to append transient fields.
*/
@@ -595,10 +747,12 @@
}
/**
- * <p>Append to the <code>toString</code> an <code>Object</code>
- * array.</p>
- *
- * @param array the array to add to the <code>toString</code>
+ * <p>
+ * Append to the <code>toString</code> an <code>Object</code> array.
+ * </p>
+ *
+ * @param array
+ * the array to add to the <code>toString</code>
* @return this
*/
public ToStringBuilder reflectionAppendArray(Object array) {
@@ -607,43 +761,56 @@
}
/**
- * <p>Registers this builder's source object to avoid infinite
- * loops when processing circular object references.</p>
+ * <p>
+ * Registers this builder's source object to avoid infinite loops when
+ * processing circular object references.
+ * </p>
*/
void registerObject() {
register(this.getObject());
}
/**
- * <p>Sets whether or not to append static fields.</p>
+ * <p>
+ * Sets whether or not to append static fields.
+ * </p>
*
- * @param appendStatics Whether or not to append static fields.
+ * @param appendStatics
+ * Whether or not to append static fields.
*/
public void setAppendStatics(boolean appendStatics) {
this.appendStatics = appendStatics;
}
/**
- * <p>Sets whether or not to append transient fields.</p>
+ * <p>
+ * Sets whether or not to append transient fields.
+ * </p>
*
- * @param appendTransients Whether or not to append transient fields.
+ * @param appendTransients
+ * Whether or not to append transient fields.
*/
public void setAppendTransients(boolean appendTransients) {
this.appendTransients = appendTransients;
}
/**
- * <p>Sets the last super class to stop appending fields for.</p>
+ * <p>
+ * Sets the last super class to stop appending fields for.
+ * </p>
*
- * @param clazz The last super class to stop appending fields for.
+ * @param clazz
+ * The last super class to stop appending fields for.
*/
public void setUpToClass(Class clazz) {
this.upToClass = clazz;
}
/**
- * <p>Gets the String built by this builder.</p>
- *
+ * <p>
+ * Gets the String built by this builder.
+ * </p>
+ *
* @return the built string
*/
public String toString() {
@@ -660,11 +827,12 @@
}
/**
- * <p>Unregisters this builder's source object to avoid infinite
- * loops when processing circular object references.</p>
+ * <p>
+ * Unregisters this builder's source object to avoid infinite loops when
+ * processing circular object references.
+ * </p>
*/
void unregisterObject() {
unregister(this.getObject());
}
-
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]