private void formatRawObject(StringBuilder buf, String indent, String id, boolean isSuper) { if (type.isEnum()) { buf.append(indent); buf.append("<Enum"); formatId(buf, id); buf.append(" class=\""); buf.append(type.getClassName()); buf.append("\" typeId=\""); buf.append(type.getId()); buf.append("\">"); buf.append(enumConstant); buf.append("</Enum>\n"); } else { String indent2 = indent + INDENT; String endTag; buf.append(indent); if (type.isArray()) { buf.append("<Array"); endTag = "</Array>"; } else if (isSuper) { buf.append("<Super"); endTag = "</Super>"; } else { buf.append("<Object"); endTag = "</Object>"; } formatId(buf, id); if (type.isArray()) { buf.append(" length=\""); buf.append(elements.length); buf.append('"'); } buf.append(" class=\""); buf.append(type.getClassName()); buf.append("\" typeId=\""); buf.append(type.getId()); buf.append("\">\n"); if (superObject != null) { superObject.formatRawObject(buf, indent2, null, true); } if (type.isArray()) { for (int i = 0; i < elements.length; i += 1) { formatValue(buf, indent2, String.valueOf(i), elements[i]); } } else { TreeSet<String> keys = new TreeSet<String>(values.keySet()); for (String name : keys) { formatValue(buf, indent2, name, values.get(name)); } } buf.append(indent); buf.append(endTag); buf.append("\n"); } }
private static void formatValue(StringBuilder buf, String indent, String id, Object val) { if (val == null) { buf.append(indent); buf.append("<Null"); formatId(buf, id); buf.append("/>\n"); } else if (val instanceof RawObject) { ((RawObject) val).formatRawObject(buf, indent, id, false); } else { buf.append(indent); buf.append("<Value"); formatId(buf, id); buf.append(" class=\""); buf.append(val.getClass().getName()); buf.append("\">"); buf.append(val.toString()); buf.append("</Value>\n"); } }