Hi,

Regarding the namespace and Camel 2.9

I tried also the Streaming version of the splitter:
<split streaming="true">
        <tokenize token="scs:order" xml="true"/>
...

The token has to be the exact String of the XML instance:
If the element in the instance is <scs:order> ; the token works but if the 
namespace is defined at a higher level, the split does not occur.. And the 
other way around..
The inheritNamespaceTagName did not make any change in the examples I have.

In that case it could be interesting to add a namespaces attribute directly at 
the route level..

Regards,
Guillaume.

-----Original Message-----
From: PAC Kieffer Guillaume [mailto:guillaume.kief...@panalpina.com] 
Sent: Wednesday, May 09, 2012 11:19
To: users@camel.apache.org
Subject: RE: OSGi - CAMEL and Custom Namespace

Adding the namespaces attribute would be a good idea, especially in OSGi 
environment.
It would be more flexible than static XML declaration. 

As a user it would make more sense to define it once, ie at the Route level, to 
avoid too much XML verbosity, if you have tens of xpath expressions, but as it 
is only useful for the xpath element.. 

Regards,
Guillaume.

-----Original Message-----
From: Claus Ibsen [mailto:claus.ib...@gmail.com] 
Sent: Wednesday, May 09, 2012 10:01
To: users@camel.apache.org
Subject: Re: OSGi - CAMEL and Custom Namespace

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