org.apache.camel.view.XmlGraphGenerator Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of camel-core Show documentation
Show all versions of camel-core Show documentation
The Core Camel Java DSL based router
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.camel.view;
import java.io.PrintWriter;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.camel.model.FromDefinition;
import org.apache.camel.model.MulticastDefinition;
import org.apache.camel.model.ProcessorDefinition;
import org.apache.camel.model.RouteDefinition;
import static org.apache.camel.util.ObjectHelper.isEmpty;
import static org.apache.camel.util.StringHelper.xmlEncode;
/**
* @version
*/
@Deprecated
public class XmlGraphGenerator extends GraphGeneratorSupport {
private boolean addUrl = true;
public XmlGraphGenerator(String dir) {
super(dir, ".xml");
}
protected void generateFile(PrintWriter writer, Map> map) {
writer.println("");
writer.println("");
writer.println();
if (map.size() > 0) {
writer.println(" ");
}
printRoutes(writer, map);
writer.println();
writer.println(" ");
}
protected void printRoutes(PrintWriter writer, Map> map) {
Set>> entries = map.entrySet();
for (Map.Entry> entry : entries) {
String group = entry.getKey();
printRoutes(writer, group, entry.getValue());
}
}
protected void printRoutes(PrintWriter writer, String group, List routes) {
group = xmlEncode(group);
if (group != null) {
int idx = group.lastIndexOf('.');
String name = group;
if (idx > 0 && idx < group.length() - 1) {
name = group.substring(idx + 1);
}
writer.println(" ");
writer.println(" ");
}
for (RouteDefinition route : routes) {
List inputs = route.getInputs();
boolean first = true;
for (FromDefinition input : inputs) {
NodeData nodeData = getNodeData(input);
if (first) {
first = false;
if (group != null) {
writer.println(" ");
}
}
printRoute(writer, route, nodeData);
}
writer.println();
}
}
protected void printRoute(PrintWriter writer, final RouteDefinition route, NodeData nodeData) {
printNode(writer, nodeData);
NodeData from = nodeData;
for (ProcessorDefinition output : route.getOutputs()) {
NodeData newData = printNode(writer, from, output);
from = newData;
}
}
protected NodeData printNode(PrintWriter writer, NodeData fromData, ProcessorDefinition node) {
if (node instanceof MulticastDefinition) {
// no need for a multicast node
List> outputs = node.getOutputs();
for (ProcessorDefinition output : outputs) {
printNode(writer, fromData, output);
}
return fromData;
}
NodeData toData = getNodeData(node);
printNode(writer, toData);
if (fromData != null) {
writer.print(" ");
}
// now lets write any children
List> outputs = toData.outputs;
if (outputs != null) {
for (ProcessorDefinition output : outputs) {
NodeData newData = printNode(writer, toData, output);
if (!isMulticastNode(node)) {
toData = newData;
}
}
}
return toData;
}
protected void printNode(PrintWriter writer, NodeData data) {
if (!data.nodeWritten) {
data.nodeWritten = true;
writer.println();
writer.print(" ");
}
}
}