try {
Enumeration<ObjectNode> enumeration;
Tag tag;
String objectName;
String methodName;
ObjectNode node;
Object[] args;
exprValue = expr.getValue();
// find out, if this object is already printed
enumeration = printed.elements();
while (enumeration.hasMoreElements()) {
ObjectNode node2 = enumeration.nextElement();
if (node2.getObjectValue() == exprValue) {
return;
}
}
node = nodes.get(exprValue);
// find out, if this object has no references to be printed
// System.out.println("---- node.getReferencesNumber() = " +
// node.getReferencesNumber());
// System.out.println("---- node.getReferencedExpressionsNumber() =
// " + node.getReferencedExpressionsNumber());
if (node.getReferencesNumber() == 0) {
return;
}
tag = new Tag("void"); //$NON-NLS-1$
objectName = NameMaker.getInstanceName(exprValue.getClass());
node.setId(objectName);
tag.addAttr("id", objectName); //$NON-NLS-1$
methodName = expr.getMethodName();
args = expr.getArguments();
if (methodName.startsWith("get") //$NON-NLS-1$
&& (args.length == 0 || args.length == 1
&& args[0].getClass() == Integer.class)
|| methodName.startsWith("set") //$NON-NLS-1$
&& (args.length == 1 || args.length == 2
&& args[0].getClass() == Integer.class)) {
String propertyName = methodName.substring(3);
if (propertyName.length() > 0) {
tag.addAttr("property", Introspector //$NON-NLS-1$
.decapitalize(propertyName));
}
if (methodName.startsWith("get") && args.length == 1 //$NON-NLS-1$
|| methodName.startsWith("set") && args.length == 2) { //$NON-NLS-1$
tag.addAttr("index", args[0].toString()); //$NON-NLS-1$
}
} else {
tag.addAttr("method", expr.getMethodName()); //$NON-NLS-1$
}
printBytes(tabCount, tag.toStringOnOpen());
for (int i = tag.hasAttr("index") ? 1 : 0; i < args.length; ++i) { //$NON-NLS-1$
if (args[i] != null) {
ObjectNode node2 = nodes.get(args[i]);
printObjectTag(++tabCount, args[i], node2);
} else {
printNullTag(++tabCount);
}