diff options
author | Paul Duffin <paulduffin@google.com> | 2015-01-19 12:46:40 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2015-01-19 12:46:40 +0000 |
commit | aab56800fcb95e9b1a2d653588b14158080cc6b4 (patch) | |
tree | 7365392c3ea77742021cf187acfd465f9bb774ab /guava/src/com/google/common/base/Objects.java | |
parent | 6fa98dbaae182b511fbeb331e08f5fb827715ea8 (diff) | |
parent | 84fb43aa6a1e752487f2624055ff26b1b6b7c043 (diff) | |
download | android_external_guava-aab56800fcb95e9b1a2d653588b14158080cc6b4.tar.gz android_external_guava-aab56800fcb95e9b1a2d653588b14158080cc6b4.tar.bz2 android_external_guava-aab56800fcb95e9b1a2d653588b14158080cc6b4.zip |
am 84fb43aa: Merge "Revert "Upgraded Guava to unmodified v14.0.1""
* commit '84fb43aa6a1e752487f2624055ff26b1b6b7c043':
Revert "Upgraded Guava to unmodified v14.0.1"
Diffstat (limited to 'guava/src/com/google/common/base/Objects.java')
-rw-r--r-- | guava/src/com/google/common/base/Objects.java | 142 |
1 files changed, 51 insertions, 91 deletions
diff --git a/guava/src/com/google/common/base/Objects.java b/guava/src/com/google/common/base/Objects.java index c65f84b..ffac9c4 100644 --- a/guava/src/com/google/common/base/Objects.java +++ b/guava/src/com/google/common/base/Objects.java @@ -27,10 +27,6 @@ import javax.annotation.Nullable; /** * Helper functions that can operate on any {@code Object}. * - * <p>See the Guava User Guide on <a - * href="http://code.google.com/p/guava-libraries/wiki/CommonObjectUtilitiesExplained">writing - * {@code Object} methods with {@code Objects}</a>. - * * @author Laurence Gonsalves * @since 2.0 (imported from Google Collections Library) */ @@ -98,14 +94,6 @@ public final class Objects { * .add("x", 1) * .add("y", "foo") * .toString(); - * }} - * - * // Returns "ClassName{x=1}" - * Objects.toStringHelper(this) - * .omitNullValues() - * .add("x", 1) - * .add("y", null) - * .toString(); * }}</pre> * * <p>Note that in GWT, class names are often obfuscated. @@ -193,38 +181,25 @@ public final class Objects { * @since 2.0 */ public static final class ToStringHelper { - private final String className; - private ValueHolder holderHead = new ValueHolder(); - private ValueHolder holderTail = holderHead; - private boolean omitNullValues = false; + private final StringBuilder builder; + private boolean needsSeparator = false; /** * Use {@link Objects#toStringHelper(Object)} to create an instance. */ private ToStringHelper(String className) { - this.className = checkNotNull(className); - } - - /** - * Configures the {@link ToStringHelper} so {@link #toString()} will ignore - * properties with null value. The order of calling this method, relative - * to the {@code add()}/{@code addValue()} methods, is not significant. - * - * @since 12.0 - */ - public ToStringHelper omitNullValues() { - omitNullValues = true; - return this; + checkNotNull(className); + this.builder = new StringBuilder(32).append(className).append('{'); } /** * Adds a name/value pair to the formatted output in {@code name=value} * format. If {@code value} is {@code null}, the string {@code "null"} - * is used, unless {@link #omitNullValues()} is called, in which case this - * name/value pair will not be added. + * is used. */ public ToStringHelper add(String name, @Nullable Object value) { - return addHolder(name, value); + checkNameAndAppend(name).append(value); + return this; } /** @@ -234,7 +209,8 @@ public final class Objects { * @since 11.0 (source-compatible since 2.0) */ public ToStringHelper add(String name, boolean value) { - return addHolder(name, String.valueOf(value)); + checkNameAndAppend(name).append(value); + return this; } /** @@ -244,7 +220,8 @@ public final class Objects { * @since 11.0 (source-compatible since 2.0) */ public ToStringHelper add(String name, char value) { - return addHolder(name, String.valueOf(value)); + checkNameAndAppend(name).append(value); + return this; } /** @@ -254,7 +231,8 @@ public final class Objects { * @since 11.0 (source-compatible since 2.0) */ public ToStringHelper add(String name, double value) { - return addHolder(name, String.valueOf(value)); + checkNameAndAppend(name).append(value); + return this; } /** @@ -264,7 +242,8 @@ public final class Objects { * @since 11.0 (source-compatible since 2.0) */ public ToStringHelper add(String name, float value) { - return addHolder(name, String.valueOf(value)); + checkNameAndAppend(name).append(value); + return this; } /** @@ -274,7 +253,8 @@ public final class Objects { * @since 11.0 (source-compatible since 2.0) */ public ToStringHelper add(String name, int value) { - return addHolder(name, String.valueOf(value)); + checkNameAndAppend(name).append(value); + return this; } /** @@ -284,7 +264,13 @@ public final class Objects { * @since 11.0 (source-compatible since 2.0) */ public ToStringHelper add(String name, long value) { - return addHolder(name, String.valueOf(value)); + checkNameAndAppend(name).append(value); + return this; + } + + private StringBuilder checkNameAndAppend(String name) { + checkNotNull(name); + return maybeAppendSeparator().append(name).append('='); } /** @@ -294,7 +280,8 @@ public final class Objects { * and give value a readable name. */ public ToStringHelper addValue(@Nullable Object value) { - return addHolder(value); + maybeAppendSeparator().append(value); + return this; } /** @@ -306,7 +293,8 @@ public final class Objects { * @since 11.0 (source-compatible since 2.0) */ public ToStringHelper addValue(boolean value) { - return addHolder(String.valueOf(value)); + maybeAppendSeparator().append(value); + return this; } /** @@ -318,7 +306,8 @@ public final class Objects { * @since 11.0 (source-compatible since 2.0) */ public ToStringHelper addValue(char value) { - return addHolder(String.valueOf(value)); + maybeAppendSeparator().append(value); + return this; } /** @@ -330,7 +319,8 @@ public final class Objects { * @since 11.0 (source-compatible since 2.0) */ public ToStringHelper addValue(double value) { - return addHolder(String.valueOf(value)); + maybeAppendSeparator().append(value); + return this; } /** @@ -342,7 +332,8 @@ public final class Objects { * @since 11.0 (source-compatible since 2.0) */ public ToStringHelper addValue(float value) { - return addHolder(String.valueOf(value)); + maybeAppendSeparator().append(value); + return this; } /** @@ -354,7 +345,8 @@ public final class Objects { * @since 11.0 (source-compatible since 2.0) */ public ToStringHelper addValue(int value) { - return addHolder(String.valueOf(value)); + maybeAppendSeparator().append(value); + return this; } /** @@ -366,63 +358,31 @@ public final class Objects { * @since 11.0 (source-compatible since 2.0) */ public ToStringHelper addValue(long value) { - return addHolder(String.valueOf(value)); + maybeAppendSeparator().append(value); + return this; } /** * Returns a string in the format specified by {@link * Objects#toStringHelper(Object)}. - * - * <p>After calling this method, you can keep adding more properties to later - * call toString() again and get a more complete representation of the - * same object; but properties cannot be removed, so this only allows - * limited reuse of the helper instance. The helper allows duplication of - * properties (multiple name/value pairs with the same name can be added). */ @Override public String toString() { - // create a copy to keep it consistent in case value changes - boolean omitNullValuesSnapshot = omitNullValues; - String nextSeparator = ""; - StringBuilder builder = new StringBuilder(32).append(className) - .append('{'); - for (ValueHolder valueHolder = holderHead.next; valueHolder != null; - valueHolder = valueHolder.next) { - if (!omitNullValuesSnapshot || valueHolder.value != null) { - builder.append(nextSeparator); - nextSeparator = ", "; - - if (valueHolder.name != null) { - builder.append(valueHolder.name).append('='); - } - builder.append(valueHolder.value); - } + try { + return builder.append('}').toString(); + } finally { + // Slice off the closing brace in case there are additional calls to + // #add or #addValue. + builder.setLength(builder.length() - 1); } - return builder.append('}').toString(); } - private ValueHolder addHolder() { - ValueHolder valueHolder = new ValueHolder(); - holderTail = holderTail.next = valueHolder; - return valueHolder; - } - - private ToStringHelper addHolder(@Nullable Object value) { - ValueHolder valueHolder = addHolder(); - valueHolder.value = value; - return this; - } - - private ToStringHelper addHolder(String name, @Nullable Object value) { - ValueHolder valueHolder = addHolder(); - valueHolder.value = value; - valueHolder.name = checkNotNull(name); - return this; - } - - private static final class ValueHolder { - String name; - Object value; - ValueHolder next; + private StringBuilder maybeAppendSeparator() { + if (needsSeparator) { + return builder.append(", "); + } else { + needsSeparator = true; + return builder; + } } } } |