You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by smokemaker <sm...@mail.ru> on 2013/03/06 09:18:23 UTC

Catch NoSuchComponentException in org.apache.camel.impl.CompositeRegistry#lookup

Hi, all!


I use Camel 2.10.3 in ServiceMix 4.5.0
Could someone please explain how to use
org.apache.camel.impl.CompositeRegistry? 
I've got CamelContext, defined in bundle "A" and want to dynamically add to
it a registry for resolving components from bundle "B".
1. I get the context's registry:

		Registry registry = camelContext().getRegistry();
		if (registry instanceof
org.apache.camel.impl.PropertyPlaceholderDelegateRegistry)
			registry =
((org.apache.camel.impl.PropertyPlaceholderDelegateRegistry)registry).getRegistry();
2. create registry for current bundle:
		BlueprintContainerRegistry selfRegistry = new
BlueprintContainerRegistry(blueprintContainer);
3. add selfRegistry to context's CompositeRegistry:
		if (registry instanceof org.apache.camel.impl.CompositeRegistry) {
		
((org.apache.camel.impl.CompositeRegistry)registry).addRegistry(selfRegistry);
----------------------
Now, what we have in composite registry:
1. OsgiServiceRegistry [for bundle A]
2. BlueprintContainerRegistry [for bundle A]
3. BlueprintContainerRegistry [for bundle B]
---------------------

When trying to lookup component from bundle B I've got exception
org.osgi.service.blueprint.container.NoSuchComponentException

CompositeRegistry#lookup just lookups iterating the rigistries it has. And
gets exception on the second one (BlueprintContainerRegistry [for bundle
A]).

1. Am I using CompositeRegistry not in proper way?
2. If not, may be it's a bug and must be placed into the issue tracker? To
fix it the exception must be caught in CompositeRegistry#lookup

Thanks a lot!






--
View this message in context: http://camel.465427.n5.nabble.com/Catch-NoSuchComponentException-in-org-apache-camel-impl-CompositeRegistry-lookup-tp5728645.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Re: Catch NoSuchComponentException in org.apache.camel.impl.CompositeRegistry#lookup

Posted by Willem jiang <wi...@gmail.com>.
Yes, The CompositeRegistry should keep looking the registry and catch the exception.
I just fill a JIRA[1] for it.

[1]https://issues.apache.org/jira/browse/CAMEL-6135  

--  
Willem Jiang

Red Hat, Inc.
FuseSource is now part of Red Hat
Web: http://www.fusesource.com | http://www.redhat.com
Blog: http://willemjiang.blogspot.com (http://willemjiang.blogspot.com/) (English)
          http://jnn.iteye.com (http://jnn.javaeye.com/) (Chinese)
Twitter: willemjiang  
Weibo: 姜宁willem





On Wednesday, March 6, 2013 at 4:18 PM, smokemaker wrote:

> Hi, all!
>  
>  
> I use Camel 2.10.3 in ServiceMix 4.5.0
> Could someone please explain how to use
> org.apache.camel.impl.CompositeRegistry?  
> I've got CamelContext, defined in bundle "A" and want to dynamically add to
> it a registry for resolving components from bundle "B".
> 1. I get the context's registry:
>  
> Registry registry = camelContext().getRegistry();
> if (registry instanceof
> org.apache.camel.impl.PropertyPlaceholderDelegateRegistry)
> registry =
> ((org.apache.camel.impl.PropertyPlaceholderDelegateRegistry)registry).getRegistry();
> 2. create registry for current bundle:
> BlueprintContainerRegistry selfRegistry = new
> BlueprintContainerRegistry(blueprintContainer);
> 3. add selfRegistry to context's CompositeRegistry:
> if (registry instanceof org.apache.camel.impl.CompositeRegistry) {
>  
> ((org.apache.camel.impl.CompositeRegistry)registry).addRegistry(selfRegistry);
> ----------------------
> Now, what we have in composite registry:
> 1. OsgiServiceRegistry [for bundle A]
> 2. BlueprintContainerRegistry [for bundle A]
> 3. BlueprintContainerRegistry [for bundle B]
> ---------------------
>  
> When trying to lookup component from bundle B I've got exception
> org.osgi.service.blueprint.container.NoSuchComponentException
>  
> CompositeRegistry#lookup just lookups iterating the rigistries it has. And
> gets exception on the second one (BlueprintContainerRegistry [for bundle
> A]).
>  
> 1. Am I using CompositeRegistry not in proper way?
> 2. If not, may be it's a bug and must be placed into the issue tracker? To
> fix it the exception must be caught in CompositeRegistry#lookup
>  
> Thanks a lot!
>  
>  
>  
>  
>  
>  
> --
> View this message in context: http://camel.465427.n5.nabble.com/Catch-NoSuchComponentException-in-org-apache-camel-impl-CompositeRegistry-lookup-tp5728645.html
> Sent from the Camel - Users mailing list archive at Nabble.com (http://Nabble.com).