protected void generateFile()

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("}");
    }