diff --git a/common/camel/src/main/java/org/switchyard/component/camel/common/handler/InboundHandler.java b/common/camel/src/main/java/org/switchyard/component/camel/common/handler/InboundHandler.java index fdacb7115..4b9e44bd1 100644 --- a/common/camel/src/main/java/org/switchyard/component/camel/common/handler/InboundHandler.java +++ b/common/camel/src/main/java/org/switchyard/component/camel/common/handler/InboundHandler.java @@ -45,6 +45,8 @@ */ public class InboundHandler extends BaseServiceHandler { + private static final String NAMESPACE_POLICY_REF = "org.switchyard.namespaceContextPolicy"; + private final T _camelBindingModel; private final SwitchYardCamelContext _camelContext; private final QName _serviceName; @@ -83,7 +85,11 @@ protected RouteDefinition createRouteDefinition() { .setProperty(CamelConstants.APPLICATION_NAMESPACE).constant(_serviceName.getNamespaceURI()) .process(new MessageComposerProcessor(getBindingModel())) .process(new OperationSelectorProcessor(getServiceName(), getBindingModel())); - return addTransactionPolicy(route); + + addNamespacePolicy(route); + addTransactionPolicy(route); + + return route; } /** @@ -122,6 +128,17 @@ protected RouteDefinition addTransactionPolicy(final RouteDefinition route) { return route; } + /** + * Only add a namespace policy if the policy ref can be resolved, which will + * be the case on EAP but not on Karaf. + */ + protected RouteDefinition addNamespacePolicy(final RouteDefinition route) { + if (_camelContext.getRegistry().lookup(NAMESPACE_POLICY_REF) != null) { + route.routePolicyRef(NAMESPACE_POLICY_REF); + } + return route; + } + protected URI getComponentUri() { return getBindingModel().getComponentURI(); }