On Wed, May 9, 2012 at 9:17 AM, PAC Kieffer Guillaume
<guillaume.kief...@panalpina.com> wrote:
> Hi,
>
> The Xpath for the Splitter works perfectly with Camel 2.9.2! :)
> imo the problem was related to the processing of Namespace prefix within an 
> OSGi environment...
> Maybe the combination of Karaf + Camel + Blueprint + Namespaces lead to this 
> specific issue.
>

I dont think the blueprint namespace handler, does any lookup in the
OSGi service registry for namespaces.
It uses the namespaces from the XML tags.

I wonder if we should add a namespaces attribute to the <xpath>
element in Camel. And then allow to use the Camel property
placeholders.
<xpath namespaces="foo:{{foo-ns}}">foo://order"</xpath>

So in this case the prefix is foo, and the namespace is a placeholder
with the key {{foo-ns}}

Then you can define your namespaces in Blueprint using its support for
placeholders
http://camel.apache.org/using-propertyplaceholder.html


> Regards,
> Guillaume.
>
>
> -----Original Message-----
> From: PAC Kieffer Guillaume [mailto:guillaume.kief...@panalpina.com]
> Sent: Tuesday, May 08, 2012 15:02
> To: users@camel.apache.org
> Subject: RE: OSGi - CAMEL and Custom Namespace
>
> Hi,
>
> My objective is the following to implement:
> -       A single bundle containing all my beans info (Java Objects + XML 
> bindings for JiBX + Schema files)
> -       Multiple bundles defining CAMEL Routes to process and route these XML 
>  messages (coming from FTP, WS..)
>
> My XML message contains Namespace information,  has to be validated, and 
> filtered using XPath in CAMEL.
> At first, I only added the namespace declaration in the CAMEL Context, but 
> this led to the given exception.
> The local functions (local-name..) are of course working.
>
> As Camel is running within Karaf, I thought that the solution was to make the 
> namespace available through a service providing also the corresponding Schema 
> information. That could also be useful for pure Java bundles later..
>
> Thanks for your help and the clarifications,
>
> Regards,
> Guillaume.
>
> -----Original Message-----
> From: Claus Ibsen [mailto:claus.ib...@gmail.com]
> Sent: Tuesday, May 08, 2012 14:06
> To: users@camel.apache.org
> Subject: Re: OSGi - CAMEL and Custom Namespace
>
> Hi
>
> Whats the use case for using a bundle to expose a namespace. I am not
> sure all this is avail during the namespace parsing.
>
> The usual approach is just to define the namespace mapping in the XML
> stanza, and then refer to it in your xpath
>
>
>
>
> On Tue, May 8, 2012 at 11:15 AM, PAC Kieffer Guillaume
> <guillaume.kief...@panalpina.com> wrote:
>> Hi Claus,
>>
>> I upgraded to 2.8.5 and still the same issue:
>> Caused by: org.apache.xpath.domapi.XPathStylesheetDOM3Exception: Prefix must 
>> resolve to a namespace: scs
>>
>> Is it worh trying 2.9.2 ?
>> I do not know if the upgrade on ServiceMix would be as smooth as 2.8.4 -> 
>> 2.8.5..
>>
>> Regards,
>> Guillaume.
>>
>> -----Original Message-----
>> From: Claus Ibsen [mailto:claus.ib...@gmail.com]
>> Sent: Tuesday, May 08, 2012 08:56
>> To: users@camel.apache.org
>> Subject: Re: OSGi - CAMEL and Custom Namespace
>>
>> Hi
>>
>> Have you tried with 2.8.5 version of Camel ?
>>
>>
>> On Mon, May 7, 2012 at 2:34 PM, PAC Kieffer Guillaume
>> <guillaume.kief...@panalpina.com> wrote:
>>> 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.
>>
>>
>>
>> --
>> Claus Ibsen
>> -----------------
>> CamelOne 2012 Conference, May 15-16, 2012: http://camelone.com
>> FuseSource
>> Email: cib...@fusesource.com
>> Web: http://fusesource.com
>> Twitter: davsclaus, fusenews
>> Blog: http://davsclaus.blogspot.com/
>> Author of Camel in Action: http://www.manning.com/ibsen/
>
>
>
> --
> Claus Ibsen
> -----------------
> CamelOne 2012 Conference, May 15-16, 2012: http://camelone.com
> FuseSource
> Email: cib...@fusesource.com
> Web: http://fusesource.com
> Twitter: davsclaus, fusenews
> Blog: http://davsclaus.blogspot.com/
> Author of Camel in Action: http://www.manning.com/ibsen/



-- 
Claus Ibsen
-----------------
CamelOne 2012 Conference, May 15-16, 2012: http://camelone.com
FuseSource
Email: cib...@fusesource.com
Web: http://fusesource.com
Twitter: davsclaus, fusenews
Blog: http://davsclaus.blogspot.com/
Author of Camel in Action: http://www.manning.com/ibsen/

Reply via email to