Hi Charles,

I just checked the code with the stack trace, and found this issue may
caused by the java.lang.NullPointerException.

Here is the code snippet of the OsgiComponentResolver.
        try {
            type = getComponent(name);
        } catch (Throwable e) {
            throw new IllegalArgumentException("Invalid URI, no
Component registered for schema : " + name, e);
        }

The getComponent() method just search the bundle entry for the component.

I have no idea why the NPE will be thrown from this getComponent() method.

Willem

Charles Moulliard wrote:
> Hi,
> 
> I'm currently working on the new camel-quickfix component provided by Anton
> Arhipov.
> 
> I have created a camel spring xml file to use it :
> 
>     <camel:camelContext trace="true" xmlns="
> http://camel.apache.org/schema/osgi";>
>         <camel:route>
>             <camel:from uri="quickfix-server:examples/server.cfg"/>
>             <camel:to uri="quickfix-client:examples/client.cfg"/>
>         </camel:route>
>     </camel:camelContext>
> 
> but when the component is launched, I receive the following error :
> 
> 16:25:20,625 | ERROR | xtenderThread-53 | ContextLoaderListener            |
> BundleApplicationContextListener   50 | Application context refresh failed
> (OsgiBundleXmlApplicationContext(bundle=reportincident.quickfix,
> config=osgibundle:/META-INF/spring/*.xml))
> org.apache.camel.ResolveEndpointFailedException: *Failed to resolve
> endpoint: quickfix-server:examples/server.cfg* due to:
> org.apache.camel.RuntimeCamelException: Could not auto create component:
> quickfix-server
>     at
> org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:378)
>     at
> org.apache.camel.util.CamelContextHelper.getMandatoryEndpoint(CamelContextHelper.java:52)
>     at
> org.apache.camel.model.RouteDefinition.resolveEndpoint(RouteDefinition.java:133)
>     at
> org.apache.camel.impl.DefaultRouteContext.resolveEndpoint(DefaultRouteContext.java:103)
>     at
> org.apache.camel.impl.DefaultRouteContext.resolveEndpoint(DefaultRouteContext.java:109)
>     at
> org.apache.camel.model.FromDefinition.resolveEndpoint(FromDefinition.java:72)
>     at
> org.apache.camel.impl.DefaultRouteContext.getEndpoint(DefaultRouteContext.java:78)
>     at
> org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:302)
>     at
> org.apache.camel.model.RouteDefinition.addRoutes(RouteDefinition.java:121)
>     at
> org.apache.camel.impl.DefaultCamelContext.startRoute(DefaultCamelContext.java:481)
>     at
> org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:777)
>     at
> org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:759)
>     at
> org.apache.camel.spring.SpringCamelContext.maybeDoStart(SpringCamelContext.java:165)
>     at
> org.apache.camel.spring.SpringCamelContext.doStart(SpringCamelContext.java:160)
>     at org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:50)
>     at
> org.apache.camel.spring.SpringCamelContext.maybeStart(SpringCamelContext.java:95)
>     at
> org.apache.camel.spring.SpringCamelContext.onApplicationEvent(SpringCamelContext.java:114)
>     at
> org.springframework.context.event.SimpleApplicationEventMulticaster$1.run(SimpleApplicationEventMulticaster.java:78)
>     at
> org.springframework.core.task.SyncTaskExecutor.execute(SyncTaskExecutor.java:49)
>     at
> org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:76)
>     at
> org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:274)
>     at
> org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:736)
>     at
> org.springframework.osgi.context.support.AbstractOsgiBundleApplicationContext.finishRefresh(AbstractOsgiBundleApplicationContext.java:235)
>     at
> org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext$4.run(AbstractDelegatedExecutionApplicationContext.java:358)
>     at
> org.springframework.osgi.util.internal.PrivilegedUtils.executeWithCustomTCCL(PrivilegedUtils.java:85)
>     at
> org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.completeRefresh(AbstractDelegatedExecutionApplicationContext.java:320)
>     at
> org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor$CompleteRefreshTask.run(DependencyWaiterApplicationContextExecutor.java:136)
>     at java.lang.Thread.run(Thread.java:619)
> Caused by: org.apache.camel.RuntimeCamelException: Could not auto create
> component: quickfix-server
>     at
> org.apache.camel.impl.DefaultCamelContext.getComponent(DefaultCamelContext.java:211)
>     at
> org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:354)
>     ... 27 more
> Caused by: java.lang.IllegalArgumentException: *Invalid URI, no Component
> registered for scheme : quickfix-server*
>     at
> org.apache.camel.osgi.OsgiComponentResolver.resolveComponent(OsgiComponentResolver.java:66)
>     at
> org.apache.camel.impl.DefaultCamelContext.getComponent(DefaultCamelContext.java:201)
>     ... 28 more
> Caused by: java.lang.NullPointerException
> When looking in the code provided, I see that Anton has created under the
> directory META-INF/services, the following files :
> 
> org\apache\camel\component\quickfix-server
> 
> class=org.apache.camel.quickfix.QuickfixAcceptor
> 
> org\apache\camel\component\quickfix-client
> 
> class=org.apache.camel.quickfix.QuickfixInitiator
> 
> Is it enough to register new camel endpoints ?
> 
> Regards,
> 
> Charles Moulliard
> Senior Enterprise Architect
> Apache Camel Committer
> 
> *****************************
> blog : http://cmoulliard.blogspot.com
> 

Reply via email to