[ 
https://issues.apache.org/activemq/browse/CAMEL-1035?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=46953#action_46953
 ] 

Claus Ibsen commented on CAMEL-1035:
------------------------------------

Well the DefaultClassLoader is OSGi aware but it doesnt expose getBundle or any 
methods to get hold of the OSGI API where we can find entries using the 
existing OSGi resolver code in Camel

> ResolverUtil under Eclipse RPC (OSGi) error: Could not read entries in url: 
> bundleresource://36/org/apache/camel/converter
> --------------------------------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-1035
>                 URL: https://issues.apache.org/activemq/browse/CAMEL-1035
>             Project: Apache Camel
>          Issue Type: Bug
>          Components: camel-core
>    Affects Versions: 1.5.0
>            Reporter: Eduard Hildebrandt
>
> Using Apache Camel 1.5-SNAPSHOT with Eclipse RCP 3.x I get a 
> java.io.FileNotFoundException on loading the converters (see stacktrace 
> below). 
> It seems that issue CAMEL-774 is not fixed. 
> I tried to debug the source code: 
> --- SOURCE: ResolverUtil.java ---- 
>             Method mth = loader.getClass().getMethod("getBundle", new Class[] 
> {}); 
>             if (mth != null) { 
>                 // it's osgi bundle class loader, so we need to load 
> implementation in bundles 
>                 if (LOG.isDebugEnabled()) { 
>                     LOG.debug("Loading from osgi buindle using classloader: " 
> + loader); 
>                 } 
>                 loadImplementationsInBundle(test, packageName, loader, mth); 
>                 return; 
>             } 
> --- END SOURCE --- 
> "loader.getClass().getMethod("getBundle", new Class[] {});" returns null 
> because the loader is of type 
> "org.eclipse.core.runtime.internal.adaptor.ContextFinder" and does not have a 
> "getBundle" method.
> Please see discussion at: 
> http://www.nabble.com/ResolverUtil-under-Eclipse-RPC-(OSGi)-error%3A-Could-not-read-entries-in-url%3A-bundleresource%3A--36-org-apache-camel-converter-to20205017s22882.html
> Sample project can be downloaded at: 
> http://www.fastshare.org/download/eclipse_camel_test.zip
> Unzip the project and import it to you Eclipse Workspace.
> You have to use Eclipse because it's an Eclipse plugin.
> Instructions to start the project:
> 1.    Download, unzip and start an ActiveMQ server.
> 2.    Run "ServiceServer" as "Java-Application".
> 3.    Open plugin.xml and click on "Launch an Eclipse Application";
> 4.    A new Eclipse instance will be start. Select "Sample Menu"  "Sample 
> Action" in the new Eclipse window.
> 5.    Check the errors in the console view.
> --- START TRACE LOG ---
> 28.10.2008 16:18:17 org.apache.camel.util.ResolverUtil findAnnotated
> FEIN: Searching for annotations of org.apache.camel.Converter in packages:
> [org.apache.camel.converter, org.apache.camel.spring.converter]
> 28.10.2008 16:18:17 org.apache.camel.util.ResolverUtil find
> AM FEINSTEN: Searching for: annotated with @Converter in package:
> org/apache/camel/converter using classloader:
> org.eclipse.core.runtime.internal.adaptor.ContextFinder
> 28.10.2008 16:18:17 org.apache.camel.util.ResolverUtil find
> AM FEINSTEN: It's not an osgi bundle classloader
> 28.10.2008 16:18:17 org.apache.camel.util.ResolverUtil getResources
> AM FEINSTEN: Getting resource URL for package: org/apache/camel/converter
> with classloader:
> [EMAIL PROTECTED]
> 28.10.2008 16:18:17 org.apache.camel.util.ResolverUtil find
> AM FEINSTEN: URL from classloader:
> bundleresource://36/org/apache/camel/converter
> 28.10.2008 16:18:17 org.apache.camel.util.ResolverUtil find
> AM FEINSTEN: Decoded urlPath: /org/apache/camel/converter
> 28.10.2008 16:18:17 org.apache.camel.util.ResolverUtil find
> AM FEINSTEN: Scanning for classes in [/org/apache/camel/converter] matching
> criteria: annotated with @Converter
> 28.10.2008 16:18:17 org.apache.camel.util.ResolverUtil find
> WARNUNG: Could not read entries in url:
> bundleresource://36/org/apache/camel/converter
> java.io.FileNotFoundException: \org\apache\camel\converter (Das System kann
> den angegebenen Pfad nicht finden)
>         at java.io.FileInputStream.open(Native Method)
>         at java.io.FileInputStream.<init>(FileInputStream.java:106)
>         at org.apache.camel.util.ResolverUtil.find(ResolverUtil.java:371)
>         at org.apache.camel.util.ResolverUtil.find(ResolverUtil.java:279)
>         at 
> org.apache.camel.util.ResolverUtil.findAnnotated(ResolverUtil.java:255)
>         at
> org.apache.camel.impl.converter.AnnotationTypeConverterLoader.load(AnnotationTypeConverterLoader.java:66)
>         at
> org.apache.camel.impl.converter.DefaultTypeConverter.checkLoaded(DefaultTypeConverter.java:218)
>         at
> org.apache.camel.impl.converter.DefaultTypeConverter.convertTo(DefaultTypeConverter.java:64)
>         at 
> org.apache.camel.impl.MessageSupport.getBody(MessageSupport.java:59)
>         at 
> org.apache.camel.impl.MessageSupport.getBody(MessageSupport.java:50)
>         at
> org.apache.camel.processor.interceptor.TraceFormatter.getBodyAsString(TraceFormatter.java:115)
>         at
> org.apache.camel.processor.interceptor.TraceFormatter.format(TraceFormatter.java:39)
>         at
> org.apache.camel.processor.interceptor.TraceInterceptor.format(TraceInterceptor.java:68)
>         at org.apache.camel.processor.Logger.logMessage(Logger.java:218)
>         at org.apache.camel.processor.Logger.process(Logger.java:88)
>         at
> org.apache.camel.processor.interceptor.TraceInterceptor.logExchange(TraceInterceptor.java:124)
>         at
> org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:55)
>         at
> org.apache.camel.impl.converter.AsyncProcessorTypeConverter$ProcessorToAsyncProcessorBridge.process(AsyncProcessorTypeConverter.java:43)
>         at
> org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:39)
>         at
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:41)
>         at
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:66)
>         at
> org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:47)
>         at 
> org.apache.camel.impl.ProducerCache.sendExchange(ProducerCache.java:149)
>         at org.apache.camel.impl.ProducerCache.send(ProducerCache.java:134)
>         at
> org.apache.camel.impl.DefaultProducerTemplate.send(DefaultProducerTemplate.java:92)
>         at
> org.apache.camel.impl.DefaultProducerTemplate.send(DefaultProducerTemplate.java:74)
>         at
> org.apache.camel.component.cxf.transport.CamelConduit$CamelOutputStream.commitOutputMessage(CamelConduit.java:168)
>         at
> org.apache.camel.component.cxf.transport.CamelConduit$CamelOutputStream.doClose(CamelConduit.java:151)
>         at 
> org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java:156)
>         at
> org.apache.cxf.io.CacheAndWriteOutputStream.postClose(CacheAndWriteOutputStream.java:47)
>         at 
> org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java:159)
>         at 
> org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66)
>         at
> org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
>         at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221)
>         at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:296)
>         at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:242)
>         at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
>         at 
> org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:178)
>         at $Proxy84.gibAlleDimensionenUndDescriptoren(Unknown Source)
>         at
> net.enbw.etg.rcm.pfc.marktdaten.MarktDatenProviderImpl.getAlleDimensionenUndDescriptoren(MarktDatenProviderImpl.java:183)
>         at
> net.enbw.etg.rcm.pfc.proxies.ServiceLocator.getAlleDimensionenUndDeskriptoren(ServiceLocator.java:187)
>         at
> net.enbw.etg.rcm.pfc.view.navigator.Navigator$2.doInBackground(Navigator.java:181)
>         at
> net.enbw.etg.rcm.pfc.view.navigator.Navigator$2.doInBackground(Navigator.java:1)
>         at javax.swing.SwingWorker$1.call(SwingWorker.java:278)
>         at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
>         at java.util.concurrent.FutureTask.run(FutureTask.java:138)
>         at javax.swing.SwingWorker.run(SwingWorker.java:317)
>         at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
>         at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
>         at java.lang.Thread.run(Thread.java:619)
> 28.10.2008 16:18:17 org.apache.camel.util.ResolverUtil find
> AM FEINSTEN: Searching for: annotated with @Converter in package:
> org/apache/camel/converter using classloader:
> org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader
> 28.10.2008 16:18:17 org.apache.camel.util.ResolverUtil find
> AM FEINSTEN: It's not an osgi bundle classloader
> 28.10.2008 16:18:17 org.apache.camel.util.ResolverUtil getResources
> AM FEINSTEN: Getting resource URL for package: org/apache/camel/converter
> with classloader:
> [EMAIL PROTECTED]
> 28.10.2008 16:18:17 org.apache.camel.util.ResolverUtil find
> AM FEINSTEN: URL from classloader:
> bundleresource://36/org/apache/camel/converter
> 28.10.2008 16:18:17 org.apache.camel.util.ResolverUtil find
> AM FEINSTEN: Decoded urlPath: /org/apache/camel/converter
> 28.10.2008 16:18:17 org.apache.camel.util.ResolverUtil find
> AM FEINSTEN: Scanning for classes in [/org/apache/camel/converter] matching
> criteria: annotated with @Converter
> 28.10.2008 16:18:17 org.apache.camel.util.ResolverUtil find
> WARNUNG: Could not read entries in url:
> bundleresource://36/org/apache/camel/converter
> java.io.FileNotFoundException: \org\apache\camel\converter (Das System kann
> den angegebenen Pfad nicht finden)
>         at java.io.FileInputStream.open(Native Method)
>         at java.io.FileInputStream.<init>(FileInputStream.java:106)
>         at org.apache.camel.util.ResolverUtil.find(ResolverUtil.java:371)
>         at org.apache.camel.util.ResolverUtil.find(ResolverUtil.java:279)
>         at 
> org.apache.camel.util.ResolverUtil.findAnnotated(ResolverUtil.java:255)
>         at
> org.apache.camel.impl.converter.AnnotationTypeConverterLoader.load(AnnotationTypeConverterLoader.java:66)
>         at
> org.apache.camel.impl.converter.DefaultTypeConverter.checkLoaded(DefaultTypeConverter.java:218)
>         at
> org.apache.camel.impl.converter.DefaultTypeConverter.convertTo(DefaultTypeConverter.java:64)
>         at 
> org.apache.camel.impl.MessageSupport.getBody(MessageSupport.java:59)
>         at 
> org.apache.camel.impl.MessageSupport.getBody(MessageSupport.java:50)
>         at
> org.apache.camel.processor.interceptor.TraceFormatter.getBodyAsString(TraceFormatter.java:115)
>         at
> org.apache.camel.processor.interceptor.TraceFormatter.format(TraceFormatter.java:39)
>         at
> org.apache.camel.processor.interceptor.TraceInterceptor.format(TraceInterceptor.java:68)
>         at org.apache.camel.processor.Logger.logMessage(Logger.java:218)
>         at org.apache.camel.processor.Logger.process(Logger.java:88)
>         at
> org.apache.camel.processor.interceptor.TraceInterceptor.logExchange(TraceInterceptor.java:124)
>         at
> org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:55)
>         at
> org.apache.camel.impl.converter.AsyncProcessorTypeConverter$ProcessorToAsyncProcessorBridge.process(AsyncProcessorTypeConverter.java:43)
>         at
> org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:39)
>         at
> org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:41)
>         at
> org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:66)
>         at
> org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:47)
>         at 
> org.apache.camel.impl.ProducerCache.sendExchange(ProducerCache.java:149)
>         at org.apache.camel.impl.ProducerCache.send(ProducerCache.java:134)
>         at
> org.apache.camel.impl.DefaultProducerTemplate.send(DefaultProducerTemplate.java:92)
>         at
> org.apache.camel.impl.DefaultProducerTemplate.send(DefaultProducerTemplate.java:74)
>         at
> org.apache.camel.component.cxf.transport.CamelConduit$CamelOutputStream.commitOutputMessage(CamelConduit.java:168)
>         at
> org.apache.camel.component.cxf.transport.CamelConduit$CamelOutputStream.doClose(CamelConduit.java:151)
>         at 
> org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java:156)
>         at
> org.apache.cxf.io.CacheAndWriteOutputStream.postClose(CacheAndWriteOutputStream.java:47)
>         at 
> org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java:159)
>         at 
> org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66)
>         at
> org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
>         at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221)
>         at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:296)
>         at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:242)
>         at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
>         at 
> org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:178)
>         at $Proxy84.gibAlleDimensionenUndDescriptoren(Unknown Source)
>         at
> net.enbw.etg.rcm.pfc.marktdaten.MarktDatenProviderImpl.getAlleDimensionenUndDescriptoren(MarktDatenProviderImpl.java:183)
>         at
> net.enbw.etg.rcm.pfc.proxies.ServiceLocator.getAlleDimensionenUndDeskriptoren(ServiceLocator.java:187)
>         at
> net.enbw.etg.rcm.pfc.view.navigator.Navigator$2.doInBackground(Navigator.java:181)
>         at
> net.enbw.etg.rcm.pfc.view.navigator.Navigator$2.doInBackground(Navigator.java:1)
>         at javax.swing.SwingWorker$1.call(SwingWorker.java:278)
>         at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
>         at java.util.concurrent.FutureTask.run(FutureTask.java:138)
>         at javax.swing.SwingWorker.run(SwingWorker.java:317)
>         at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
>         at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
>         at java.lang.Thread.run(Thread.java:619)
> 28.10.2008 16:18:17 org.apache.camel.util.ResolverUtil find
> AM FEINSTEN: Searching for: annotated with @Converter in package:
> org/apache/camel/spring/converter using classloader:
> org.eclipse.core.runtime.internal.adaptor.ContextFinder
> 28.10.2008 16:18:17 org.apache.camel.util.ResolverUtil find
> AM FEINSTEN: It's not an osgi bundle classloader
> 28.10.2008 16:18:17 org.apache.camel.util.ResolverUtil getResources
> AM FEINSTEN: Getting resource URL for package:
> org/apache/camel/spring/converter with classloader:
> [EMAIL PROTECTED]
> 28.10.2008 16:18:17 org.apache.camel.util.ResolverUtil find
> AM FEINSTEN: No URLs returned by classloader
> 28.10.2008 16:18:17 org.apache.camel.util.ResolverUtil find
> AM FEINSTEN: Searching for: annotated with @Converter in package:
> org/apache/camel/spring/converter using classloader:
> org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader
> 28.10.2008 16:18:17 org.apache.camel.util.ResolverUtil find
> AM FEINSTEN: It's not an osgi bundle classloader
> 28.10.2008 16:18:17 org.apache.camel.util.ResolverUtil getResources
> AM FEINSTEN: Getting resource URL for package:
> org/apache/camel/spring/converter with classloader:
> [EMAIL PROTECTED]
> --- END TRACE LOG ---

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to