in core/camel-core-engine/src/main/java/org/apache/camel/impl/DefaultDumpRoutesStrategy.java [397:593]
protected void doDumpRoutesAsXml(CamelContext camelContext) {
final ModelToXMLDumper dumper = PluginHelper.getModelToXMLDumper(camelContext);
final Model model = camelContext.getCamelContextExtension().getContextPlugin(Model.class);
final DummyResource dummy = new DummyResource(null, null);
final Set<String> files = new HashSet<>();
if (include.contains("*") || include.contains("all") || include.contains("beans")) {
int size = model.getCustomBeans().size();
if (size > 0) {
Map<Resource, List<BeanFactoryDefinition>> groups = new LinkedHashMap<>();
for (BeanFactoryDefinition bean : model.getCustomBeans()) {
Resource res = bean.getResource();
if (res == null) {
res = dummy;
}
List<BeanFactoryDefinition> beans = groups.computeIfAbsent(res, resource -> new ArrayList<>());
beans.add(bean);
}
StringBuilder sbLog = new StringBuilder();
for (Map.Entry<Resource, List<BeanFactoryDefinition>> entry : groups.entrySet()) {
List<BeanFactoryDefinition> beans = entry.getValue();
Resource resource = entry.getKey();
StringBuilder sbLocal = new StringBuilder();
doDumpXmlBeans(camelContext, beans, resource == dummy ? null : resource, dumper, "beans", sbLocal, sbLog);
// dump each resource into its own file
doDumpToDirectory(resource, sbLocal, "beans", "xml", files);
}
if (!sbLog.isEmpty() && log) {
LOG.info("Dumping {} beans as XML", size);
LOG.info("{}", sbLog);
}
}
}
if (include.contains("*") || include.contains("all") || include.contains("dataFormats")) {
int size = model.getDataFormats().size();
if (size > 0) {
Map<Resource, Map<String, DataFormatDefinition>> groups = new LinkedHashMap<>();
for (Map.Entry<String, DataFormatDefinition> entry : model.getDataFormats().entrySet()) {
Resource res = entry.getValue().getResource();
if (res == null) {
res = dummy;
}
Map<String, DataFormatDefinition> dfs = groups.computeIfAbsent(res, resource -> new LinkedHashMap<>());
dfs.put(entry.getKey(), entry.getValue());
}
StringBuilder sbLog = new StringBuilder();
for (Map.Entry<Resource, Map<String, DataFormatDefinition>> entry : groups.entrySet()) {
Map<String, DataFormatDefinition> dfs = entry.getValue();
Resource resource = entry.getKey();
StringBuilder sbLocal = new StringBuilder();
doDumpXmlDataFormats(camelContext, dfs, resource == dummy ? null : resource, dumper, "dataFormats", sbLocal,
sbLog);
// dump each resource into its own file
doDumpToDirectory(resource, sbLocal, "dataFormats", "xml", files);
}
if (!sbLog.isEmpty() && log) {
LOG.info("Dumping {} data formats as XML", size);
LOG.info("{}", sbLog);
}
}
}
if (include.contains("*") || include.contains("all") || include.contains("rests")) {
int size = model.getRestDefinitions().size();
if (size > 0) {
Map<Resource, RestsDefinition> groups = new LinkedHashMap<>();
for (RestDefinition rest : model.getRestDefinitions()) {
Resource res = rest.getResource();
if (res == null) {
res = dummy;
}
RestsDefinition routes = groups.computeIfAbsent(res, resource -> new RestsDefinition());
routes.getRests().add(rest);
}
StringBuilder sbLog = new StringBuilder();
for (Map.Entry<Resource, RestsDefinition> entry : groups.entrySet()) {
RestsDefinition def = entry.getValue();
Resource resource = entry.getKey();
StringBuilder sbLocal = new StringBuilder();
doDumpXml(camelContext, def, resource == dummy ? null : resource, dumper, "rest", "rests", sbLocal, sbLog);
// dump each resource into its own file
doDumpToDirectory(resource, sbLocal, "rests", "xml", files);
}
if (!sbLog.isEmpty() && log) {
LOG.info("Dumping {} rests as XML", size);
LOG.info("{}", sbLog);
}
}
}
if (include.contains("*") || include.contains("all") || include.contains("routeConfigurations")
|| include.contains("route-configurations")) {
int size = model.getRouteConfigurationDefinitions().size();
if (size > 0) {
Map<Resource, RouteConfigurationsDefinition> groups = new LinkedHashMap<>();
for (RouteConfigurationDefinition config : model.getRouteConfigurationDefinitions()) {
Resource res = config.getResource();
if (res == null) {
res = dummy;
}
RouteConfigurationsDefinition routes
= groups.computeIfAbsent(res, resource -> new RouteConfigurationsDefinition());
routes.getRouteConfigurations().add(config);
}
StringBuilder sbLog = new StringBuilder();
for (Map.Entry<Resource, RouteConfigurationsDefinition> entry : groups.entrySet()) {
RouteConfigurationsDefinition def = entry.getValue();
Resource resource = entry.getKey();
StringBuilder sbLocal = new StringBuilder();
doDumpXml(camelContext, def, resource == dummy ? null : resource, dumper, "routeConfiguration",
"route-configurations",
sbLocal, sbLog);
// dump each resource into its own file
doDumpToDirectory(resource, sbLocal, "route-configurations", "xml", files);
}
if (!sbLog.isEmpty() && log) {
LOG.info("Dumping {} route-configurations as XML", size);
LOG.info("{}", sbLog);
}
}
}
if (include.contains("*") || include.contains("all") || include.contains("routeTemplates")
|| include.contains("route-templates")) {
int size = model.getRouteTemplateDefinitions().size();
if (size > 0) {
Map<Resource, RouteTemplatesDefinition> groups = new LinkedHashMap<>();
for (RouteTemplateDefinition rt : model.getRouteTemplateDefinitions()) {
Resource res = rt.getResource();
if (res == null) {
res = dummy;
}
RouteTemplatesDefinition routes = groups.computeIfAbsent(res, resource -> new RouteTemplatesDefinition());
routes.getRouteTemplates().add(rt);
}
StringBuilder sbLog = new StringBuilder();
for (Map.Entry<Resource, RouteTemplatesDefinition> entry : groups.entrySet()) {
RouteTemplatesDefinition def = entry.getValue();
Resource resource = entry.getKey();
StringBuilder sbLocal = new StringBuilder();
doDumpXml(camelContext, def, resource == dummy ? null : resource, dumper, "routeTemplate",
"route-templates", sbLocal, sbLog);
// dump each resource into its own file
doDumpToDirectory(resource, sbLocal, "route-templates", "xml", files);
}
if (!sbLog.isEmpty() && log) {
LOG.info("Dumping {} route-templates as XML", size);
LOG.info("{}", sbLog);
}
}
}
if (include.contains("*") || include.contains("all") || include.contains("routes")) {
int size = model.getRouteDefinitions().size();
if (size > 0) {
Map<Resource, RoutesDefinition> groups = new LinkedHashMap<>();
for (RouteDefinition route : model.getRouteDefinitions()) {
if ((route.isRest() != null && route.isRest()) || (route.isTemplate() != null && route.isTemplate())) {
// skip routes that are rest/templates
continue;
}
Resource res = route.getResource();
if (res == null) {
res = dummy;
}
RoutesDefinition routes = groups.computeIfAbsent(res, resource -> new RoutesDefinition());
routes.getRoutes().add(route);
}
StringBuilder sbLog = new StringBuilder();
for (Map.Entry<Resource, RoutesDefinition> entry : groups.entrySet()) {
RoutesDefinition def = entry.getValue();
Resource resource = entry.getKey();
StringBuilder sbLocal = new StringBuilder();
doDumpXml(camelContext, def, resource == dummy ? null : resource, dumper, "route", "routes", sbLocal,
sbLog);
// dump each resource into its own file
doDumpToDirectory(resource, sbLocal, "routes", "xml", files);
}
if (!sbLog.isEmpty() && log) {
LOG.info("Dumping {} routes as XML", size);
LOG.info("{}", sbLog);
}
}
}
if (output != null && !files.isEmpty()) {
// all XML files need to have <camel> as root tag
doAdjustXmlFiles(files);
}
}