camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From PAC Kieffer Guillaume <Guillaume.Kief...@panalpina.com>
Subject OSGi - CAMEL and Custom Namespace
Date Mon, 07 May 2012 12:34:09 GMT
Hi,

I am using Camel (2.8.4) XML DSL on ServiceMix 4.4.1 (OSGi environment)
I created a bundle exposing a custom namespace; here is the blueprint file:

<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
    <service id="myXMLNamespaceHandler"
             interface="org.apache.aries.blueprint.NamespaceHandler">
        <service-properties>
            <entry key="osgi.service.blueprint.namespace" value="http://www.company.com/xmlns/scs/v1.0.0"/>
        </service-properties>
        <bean class="org.apache.xbean.blueprint.context.impl.XBeanNamespaceHandler">
            <argument value="http://www.company.com/xmlns/scs/v1.0.0"/>
            <argument value="scs.xsd"/>
            <argument ref="blueprintBundle"/>
            <argument value="META-INF/services/blueprint/xmlns/v1.0.0"/>
        </bean>
    </service>
</blueprint>

With 

<Export-Service>org.apache.aries.blueprint.NamespaceHandler;osgi.service.blueprint.namespace="http://www.company.com/xmlns/scs/v${project.version}"</Export-Service>

included in the Manifest.mf file and the XSD files available on the bundle root.
The bundle is started successfully on the environment.

My Route blueprint file contains following declaration of CamelContext:
<camelContext id="scs-ftp-route" trace="true" xmlns="http://camel.apache.org/schema/blueprint"
                     xmlns:scs="http://www.company.com/xmlns/scs/v1.0.0">

One of my route uses this XPath expression: name(/scs:*)='XXXX'
I am getting the following exception while the xpath expression is being evaluated:

org.apache.camel.builder.xml.InvalidXPathExpression: Invalid xpath: name(/scs:*)='XXXX'. Reason:
javax.xml.xpath.XPathExpressionException: org.apache.xpath.domapi.XPathStylesheetDOM3Exception:
Prefix must resolve to a namespace: scs

Referring to http://camel.465427.n5.nabble.com/fail-filter-XPATH-camel-td476424.html adding
the xmlns declaration on the CamelContext Element is sufficient.
But in this case, the namespace handler is customized and deployed on an OSGi env. 

Any idea how to solve that issue: 
Using Namespace aware Xpath within Camel with a custom NamespaceHandler started and declared
as an OSGi Service ?

Thanks for your help ,

Regards,
Guillaume.

Mime
View raw message