in core/servicemix-core/src/main/java/org/apache/servicemix/jbi/view/DotViewFlowListener.java [72:136]
protected void generateFile(PrintWriter writer) throws Exception {
writer.println("digraph \"Apache ServiceMix\" {");
writer.println();
writer.println("label = \"Apache ServiceMix flow\";");
writer.println("node [ shape = box, style = \"rounded,filled\", fontname = \"Helvetica-Oblique\", fontsize = 8 ];");
writer.println();
List<String> brokerLinks = new ArrayList<String>();
Registry registry = getContainer().getRegistry();
Collection<ComponentMBeanImpl> components = registry.getComponents();
for (ComponentMBeanImpl component : components) {
ServiceEndpoint[] ses = registry.getEndpointRegistry().getAllEndpointsForComponent(component.getComponentNameSpace());
String name = component.getName();
if (!usedComponents.contains(name)) {
continue;
}
// If we want to display components, create
// a sub graph, grouping all the components
// endpoints
if (isDisplayComponents()) {
String id = encode(name);
writer.println("subgraph cluster_" + id + " {");
writer.println(" label=\"" + name + "\";");
if (componentsAsConsumer.contains(name)) {
writer.println(" " + id + " [ fillcolor = gray, label = \"" + name + "\" ];");
}
}
for (int i = 0; i < ses.length; i++) {
String key = EndpointSupport.getUniqueKey(ses[i]);
String epname = formatEndpoint(key);
if (!isDisplayComponents()) {
epname += "\\n" + name;
}
String color = "lightgray";
if (epname.startsWith("internal")) {
epname = epname.substring(10);
color = "#6699ff";
} else if (epname.startsWith("external")) {
epname = epname.substring(10);
color = "#66ccff";
} else if (epname.startsWith("dynamic")) {
epname = epname.substring(9);
color = "#6666ff";
} else if (epname.startsWith("linked")) {
epname = epname.substring(8);
color = "#66ffff";
} else {
color = "#f3f3f3";
}
String epid = encode(key);
writer.println(" " + epid + " [fillcolor = \"" + color + "\", label=\"" + epname + "\"];");
}
if (isDisplayComponents()) {
writer.println("}");
}
}
writer.println();
generateLinks(writer, brokerLinks);
writer.println();
generateLinks(writer, flowLinks);
writer.println("}");
}