[ 
https://issues.apache.org/jira/browse/CAMEL-6790?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Eugene Tarasov updated CAMEL-6790:
----------------------------------

    Attachment: CamelContextIdSetting.patch

Hi Claus. Thanks for fixing the problem! Trying the fix I found a further 
problem - when camelContext tag is being parsed, its id is being set to some 
unique value if it wasnt set by user. For setting the id CamelNamespaceHandler 
calls non-namespace-aware method "setAttribute". Its necessary to change it to 
setAttributeNS (I added a patch that does it). With this change the whole 
"refresh" problem becomes solved.

> Resuming a bundle that uses blueprint+camel fails if it was suspended 
> externally
> --------------------------------------------------------------------------------
>
>                 Key: CAMEL-6790
>                 URL: https://issues.apache.org/jira/browse/CAMEL-6790
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-blueprint
>    Affects Versions: 2.12.1
>            Reporter: Eugene Tarasov
>            Assignee: Claus Ibsen
>             Fix For: 2.11.3, 2.12.2, 2.13.0
>
>         Attachments: CamelContextIdSetting.patch
>
>
> There is a problem in this scenario:
> # Karaf is running.
> # Start some bundle that uses blueprint+camel. For convenience will call it 
> <testbundle>.
> # Cause this bundle to be suspended by container, by refreshing a bundle that 
> provides some namespace used by <testbundle> bundle. For example, by 
> refreshing camel-cxf (assuming that <testbundle> uses also blueprint/cxf 
> namespace). In logs one can see something like this:
> bq. Bundle <testbundle> is waiting for namespace handlers 
> [http://camel.apache.org/schema/blueprint/cxf]
> In this case after the missing namespace becomes available again the bundle 
> will fail to resume with exception like:
> bq. Caused by: org.xml.sax.SAXParseException: cvc-complex-type.2.4.c: The 
> matching wildcard is strict, but no declaration can be found for element 
> 'camelContext'.
> The problem is in CamelNamespaceHandler class which is a part of 
> camel-blueprint. When it parses incoming dom it changes namespace of all 
> elements from http://camel.apache.org/schema/blueprint to 
> http://camel.apache.org/schema/spring. So when a bundle that uses 
> blueprint+camel needs to validate its blueprint context again (like if it was 
> waiting for some namespace) the new validation will fail.



--
This message was sent by Atlassian JIRA
(v6.1#6144)

Reply via email to