in src/main/java/com/amazonaws/services/simpleworkflow/flow/common/WorkflowExecutionUtils.java [507:599]
private static String prettyPrintObject(Object object, String methodToSkip, boolean skipNullsAndEmptyCollections,
String indentation, boolean skipLevel) {
StringBuffer result = new StringBuffer();
if (object == null) {
return "null";
}
Class<? extends Object> clz = object.getClass();
if (Number.class.isAssignableFrom(clz)) {
return String.valueOf(object);
}
if (Boolean.class.isAssignableFrom(clz)) {
return String.valueOf(object);
}
if (clz.equals(String.class)) {
return (String) object;
}
if (clz.equals(Date.class)) {
return String.valueOf(object);
}
if (Map.class.isAssignableFrom(clz)) {
return String.valueOf(object);
}
if (Collection.class.isAssignableFrom(clz)) {
return String.valueOf(object);
}
if (!skipLevel) {
result.append(" {");
}
Method[] eventMethods = object.getClass().getMethods();
boolean first = true;
for (Method method : eventMethods) {
String name = method.getName();
if (!name.startsWith("get")) {
continue;
}
if (name.equals(methodToSkip) || name.equals("getClass")) {
continue;
}
if (Modifier.isStatic(method.getModifiers())) {
continue;
}
Object value;
try {
value = method.invoke(object, (Object[]) null);
if (value != null && value.getClass().equals(String.class) && name.equals("getDetails")) {
value = printDetails((String) value);
}
}
catch (InvocationTargetException e) {
throw new RuntimeException(e.getTargetException());
}
catch (RuntimeException e) {
throw (RuntimeException) e;
}
catch (Exception e) {
throw new RuntimeException(e);
}
if (skipNullsAndEmptyCollections) {
if (value == null) {
continue;
}
if (value instanceof Map && ((Map<?, ?>) value).isEmpty()) {
continue;
}
if (value instanceof Collection && ((Collection<?>) value).isEmpty()) {
continue;
}
}
if (!skipLevel) {
if (first) {
first = false;
}
else {
result.append(";");
}
result.append("\n");
result.append(indentation);
result.append(" ");
result.append(name.substring(3));
result.append(" = ");
result.append(prettyPrintObject(value, methodToSkip, skipNullsAndEmptyCollections, indentation + " ", false));
}
else {
result.append(prettyPrintObject(value, methodToSkip, skipNullsAndEmptyCollections, indentation, false));
}
}
if (!skipLevel) {
result.append("\n");
result.append(indentation);
result.append("}");
}
return result.toString();
}