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 RE: OSGi - CAMEL and Custom Namespace
Date Wed, 09 May 2012 10:27:34 GMT
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.Kieffer@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.ibsen@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.Kieffer@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.Kieffer@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.ibsen@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.Kieffer@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.ibsen@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.Kieffer@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: cibsen@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: cibsen@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: cibsen@fusesource.com
Web: http://fusesource.com
Twitter: davsclaus, fusenews
Blog: http://davsclaus.blogspot.com/
Author of Camel in Action: http://www.manning.com/ibsen/

Mime
View raw message