Repository: camel Updated Branches: refs/heads/master 46ccfab4a -> dec2bbfcc
CAMEL-7354: Added to camel-blueprint so it can find camel componetns in embedded rest routes. Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/dec2bbfc Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/dec2bbfc Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/dec2bbfc Branch: refs/heads/master Commit: dec2bbfcc2cbecf44f3c85c099afa8ab8a0702a9 Parents: 46ccfab Author: Claus Ibsen <davscl...@apache.org> Authored: Tue Jul 29 17:59:39 2014 +0200 Committer: Claus Ibsen <davscl...@apache.org> Committed: Tue Jul 29 17:59:39 2014 +0200 ---------------------------------------------------------------------- .../handler/CamelNamespaceHandler.java | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/dec2bbfc/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/handler/CamelNamespaceHandler.java ---------------------------------------------------------------------- diff --git a/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/handler/CamelNamespaceHandler.java b/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/handler/CamelNamespaceHandler.java index ab0005a..bd1eb67 100644 --- a/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/handler/CamelNamespaceHandler.java +++ b/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/handler/CamelNamespaceHandler.java @@ -32,6 +32,9 @@ import javax.xml.bind.Binder; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; +import org.apache.camel.model.ToDefinition; +import org.apache.camel.model.rest.RestDefinition; +import org.apache.camel.model.rest.VerbDefinition; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; @@ -870,10 +873,27 @@ public class CamelNamespaceHandler implements NamespaceHandler { Set<String> components = new HashSet<String>(); Set<String> languages = new HashSet<String>(); Set<String> dataformats = new HashSet<String>(); + + // regular camel routes for (RouteDefinition rd : camelContext.getRouteDefinitions()) { findInputComponents(rd.getInputs(), components, languages, dataformats); findOutputComponents(rd.getOutputs(), components, languages, dataformats); } + + // rest services can have embedded routes or a singular to + for (RestDefinition rd : camelContext.getRestDefinitions()) { + for (VerbDefinition vd : rd.getVerbs()) { + Object o = vd.getToOrRoute(); + if (o instanceof RouteDefinition) { + RouteDefinition route = (RouteDefinition) o; + findInputComponents(route.getInputs(), components, languages, dataformats); + findOutputComponents(route.getOutputs(), components, languages, dataformats); + } else if (o instanceof ToDefinition) { + findUriComponent(((ToDefinition) o).getUri(), components); + } + } + } + // We can only add service references to resolvers, but we can't make the factory depends on those // because the factory has already been instantiated try {