@Override public void nodeProperties(PolymorphicSpecializeGraph graph, PolymorphicSpecializeGraph.DumpNode node, Map<String, ? super Object> properties) { properties.put("label", node.node.toString()); properties.put("ROOT?", node.node instanceof RootNode); properties.put("LEAF?", node.edge == null); properties.put("RootNode", node.node.getRootNode()); properties.putAll(node.node.getDebugProperties()); properties.put("SourceSection", node.node.getSourceSection()); if (Introspection.isIntrospectable(node.node)) { final List<Introspection.SpecializationInfo> specializations = Introspection.getSpecializations(node.node); for (Introspection.SpecializationInfo specialization : specializations) { properties.put(specialization.getMethodName() + ".isActive", specialization.isActive()); properties.put(specialization.getMethodName() + ".isExcluded", specialization.isExcluded()); properties.put(specialization.getMethodName() + ".instances", specialization.getInstances()); } } }
private static void setBasicProperties(Map<String, ? super Object> properties, Node source) { String className = className(source.getClass()); properties.put("label", dropNodeSuffix(className)); properties.put("cost", source.getCost()); NodeInfo nodeInfo = source.getClass().getAnnotation(NodeInfo.class); if (nodeInfo != null) { if (!nodeInfo.shortName().isEmpty()) { properties.put("shortName", nodeInfo.shortName()); } } if (Introspection.isIntrospectable(source)) { final List<Introspection.SpecializationInfo> specializations = Introspection.getSpecializations(source); for (Introspection.SpecializationInfo specialization : specializations) { final String methodName = specialization.getMethodName(); properties.put(methodName + ".isActive", specialization.isActive()); properties.put(methodName + ".isExcluded", specialization.isExcluded()); properties.put(methodName + ".instances", specialization.getInstances()); for (int i = 0; i < specialization.getInstances(); i++) { final List<Object> cachedData = specialization.getCachedData(i); for (Object o : cachedData) { properties.put(methodName + "-cachedData[" + i + "]", o); } } } } }