package org.testng.collections; import org.testng.util.Strings; import java.util.List; public final class Objects { private Objects() {} private static class ValueHolder { private String m_name; private String m_value; public ValueHolder(String name, String value) { m_name = name; m_value = value; } boolean isNull() { return m_value == null; } @Override public String toString() { return m_name + "=" + m_value; } public boolean isEmptyString() { return Strings.isNullOrEmpty(m_value); } } public static class ToStringHelper { private String m_className; private List<ValueHolder> values = Lists.newArrayList(); private boolean m_omitNulls = false; private boolean m_omitEmptyStrings = false; public ToStringHelper(String className) { m_className = className; } public ToStringHelper omitNulls() { m_omitNulls = true; return this; } public ToStringHelper omitEmptyStrings() { m_omitEmptyStrings = true; return this; } public ToStringHelper add(String name, String value) { values.add(new ValueHolder(name, s(value))); return this; } public ToStringHelper add(String name, Object value) { values.add(new ValueHolder(name, s(value))); return this; } private String s(Object o) { return o != null ? (o.toString().isEmpty() ? "\"\"" : o.toString()) : "{null}"; } @Override public String toString() { StringBuilder result = new StringBuilder("[" + m_className + " "); for (int i = 0; i < values.size(); i++) { ValueHolder vh = values.get(i); if (m_omitNulls && vh.isNull()) continue; if (m_omitEmptyStrings && vh.isEmptyString()) continue; if (i > 0) { result.append(" "); } result.append(vh.toString()); } result.append("]"); return result.toString(); } } public static ToStringHelper toStringHelper(Class<?> class1) { return new ToStringHelper(class1.getSimpleName()); } }