Hi JB: Sorry to bug you again. Any solutions or suggestions on this issue?
I tried a few other things as well, but I am pretty much stuck. Thank you. Regards, Kushal. On Mon, Jun 8, 2020 at 2:18 PM Kushal Gautam <kushal.gau...@gmail.com> wrote: > Hi JB: > > Thanks. > > I have already set up a sample project located at > https://github.com/cooshal/karaf-camel-mail > > The project contains a custom karaf distribution ( > https://github.com/cooshal/karaf-camel-mail/tree/master/asssembly/karaf-assembly > ). > > My bundle is located at > https://github.com/cooshal/karaf-camel-mail/tree/master/components/imap-consumer > > I am using Open JDK 8 for this project. > > Kindly, please let me know if I should provide anything more. > > Thank you again. > > Regards, > Cooshal. > > On Mon, Jun 8, 2020 at 2:11 PM Jean-Baptiste Onofre <j...@nanthrax.net> > wrote: > >> Sure, the easiest is probably to create a sample project. Do you already >> have one or do you want me to create one ? >> >> Regards >> JB >> >> > Le 8 juin 2020 à 13:46, Kushal Gautam <kushal.gau...@gmail.com> a >> écrit : >> > >> > Hi JB: >> > >> > Thank you for the pointers. >> > >> > However, I do not know where and how exactly should I change the context >> > loader in my code. >> > >> > I tried but I do not know where. >> > >> > Could you please help me out? >> > >> > Thank you. >> > >> > Regards, >> > Cooshal. >> > >> > On Mon, Jun 8, 2020 at 9:34 AM Jean-Baptiste Onofre <j...@nanthrax.net> >> wrote: >> > >> >> You can find some details about similar issue in the following thread: >> >> >> >> >> >> >> http://karaf.922171.n3.nabble.com/java-mail-inside-Karaf-td4057507.html#a4057524 >> >> < >> >> >> http://karaf.922171.n3.nabble.com/java-mail-inside-Karaf-td4057507.html#a4057524 >> >>> >> >> >> >> Let me know if it doesn’t help, I will fix your bundle for you. >> >> >> >> Regards >> >> JB >> >> >> >>> Le 7 juin 2020 à 10:50, Kushal Gautam <kushal.gau...@gmail.com> a >> écrit >> >> : >> >>> >> >>> Hi again: >> >>> >> >>> I have the following error when I try to start my bundle in karaf: >> >>> >> >>> Ignoring converter type: >> org.apache.camel.converter.AttachmentConverter >> >> as >> >>> a dependent class could not be found: java.lang.NoClassDefFoundError: >> >>> javax/activation/DataHandler >> >>> java.lang.NoClassDefFoundError: javax/activation/DataHandler >> >>> at java.lang.Class.getDeclaredMethods0(Native Method) ~[?:?] >> >>> at java.lang.Class.privateGetDeclaredMethods(Class.java:2701) ~[?:?] >> >>> at java.lang.Class.getDeclaredMethods(Class.java:1975) ~[?:?] >> >>> at >> >>> >> >> >> org.apache.camel.impl.converter.AnnotationTypeConverterLoader.loadConverterMethods(AnnotationTypeConverterLoader.java:262) >> >>> [62:org.apache.camel.camel-core:2.20.3] >> >>> at >> >>> >> >> >> org.apache.camel.impl.converter.AnnotationTypeConverterLoader.load(AnnotationTypeConverterLoader.java:130) >> >>> [62:org.apache.camel.camel-core:2.20.3] >> >>> at >> >>> >> >> >> org.apache.camel.impl.converter.BaseTypeConverterRegistry.loadCoreTypeConverters(BaseTypeConverterRegistry.java:632) >> >>> [62:org.apache.camel.camel-core:2.20.3] >> >>> at >> >>> >> >> >> org.apache.camel.core.osgi.OsgiTypeConverter.createRegistry(OsgiTypeConverter.java:218) >> >>> [60:org.apache.camel.camel-blueprint:2.20.3] >> >>> at >> >>> >> >> >> org.apache.camel.core.osgi.OsgiTypeConverter.getDelegate(OsgiTypeConverter.java:197) >> >>> [60:org.apache.camel.camel-blueprint:2.20.3] >> >>> at >> >>> >> >> >> org.apache.camel.core.osgi.OsgiTypeConverter.mandatoryConvertTo(OsgiTypeConverter.java:124) >> >>> [60:org.apache.camel.camel-blueprint:2.20.3] >> >>> at >> >>> >> >> >> org.apache.camel.impl.CamelPostProcessorHelper.getInjectionPropertyValue(CamelPostProcessorHelper.java:278) >> >>> [62:org.apache.camel.camel-core:2.20.3] >> >>> at >> >>> >> >> >> org.apache.camel.impl.DefaultCamelBeanPostProcessor.injectFieldProperty(DefaultCamelBeanPostProcessor.java:211) >> >>> [62:org.apache.camel.camel-core:2.20.3] >> >>> at >> >>> >> >> >> org.apache.camel.impl.DefaultCamelBeanPostProcessor$1.doWith(DefaultCamelBeanPostProcessor.java:171) >> >>> [62:org.apache.camel.camel-core:2.20.3] >> >>> at >> >>> >> >> >> org.apache.camel.util.ReflectionHelper.doWithFields(ReflectionHelper.java:74) >> >>> [62:org.apache.camel.camel-core:2.20.3] >> >>> at >> >>> >> >> >> org.apache.camel.impl.DefaultCamelBeanPostProcessor.injectFields(DefaultCamelBeanPostProcessor.java:167) >> >>> [62:org.apache.camel.camel-core:2.20.3] >> >>> at >> >>> >> >> >> org.apache.camel.impl.DefaultCamelBeanPostProcessor.postProcessBeforeInitialization(DefaultCamelBeanPostProcessor.java:82) >> >>> [62:org.apache.camel.camel-core:2.20.3] >> >>> at >> >>> >> >> >> org.apache.camel.impl.DefaultInjector.newInstance(DefaultInjector.java:48) >> >>> [62:org.apache.camel.camel-core:2.20.3] >> >>> at >> >>> >> >> >> org.apache.camel.blueprint.PackageScanRouteBuilderFinder.instantiateBuilder(PackageScanRouteBuilderFinder.java:110) >> >>> [60:org.apache.camel.camel-blueprint:2.20.3] >> >>> at >> >>> >> >> >> org.apache.camel.blueprint.PackageScanRouteBuilderFinder.appendBuilders(PackageScanRouteBuilderFinder.java:72) >> >>> [60:org.apache.camel.camel-blueprint:2.20.3] >> >>> at >> >>> >> >> >> org.apache.camel.blueprint.CamelContextFactoryBean.findRouteBuildersByPackageScan(CamelContextFactoryBean.java:325) >> >>> [60:org.apache.camel.camel-blueprint:2.20.3] >> >>> at >> >>> >> >> >> org.apache.camel.core.xml.AbstractCamelContextFactoryBean.findRouteBuilders(AbstractCamelContextFactoryBean.java:1087) >> >>> [60:org.apache.camel.camel-blueprint:2.20.3] >> >>> at >> >>> >> >> >> org.apache.camel.core.xml.AbstractCamelContextFactoryBean.setupRoutes(AbstractCamelContextFactoryBean.java:450) >> >>> [60:org.apache.camel.camel-blueprint:2.20.3] >> >>> at >> >>> >> >> >> org.apache.camel.blueprint.CamelContextFactoryBean.afterPropertiesSet(CamelContextFactoryBean.java:355) >> >>> [60:org.apache.camel.camel-blueprint:2.20.3] >> >>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?] >> >>> at >> >>> >> >> >> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) >> >>> ~[?:?] >> >>> at >> >>> >> >> >> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) >> >>> ~[?:?] >> >>> at java.lang.reflect.Method.invoke(Method.java:498) ~[?:?] >> >>> at >> >>> >> >> >> org.apache.aries.blueprint.utils.ReflectionUtils.invoke(ReflectionUtils.java:331) >> >>> [43:org.apache.aries.blueprint.core:1.9.0] >> >>> at >> >>> >> >> >> org.apache.aries.blueprint.container.BeanRecipe.invoke(BeanRecipe.java:838) >> >>> [43:org.apache.aries.blueprint.core:1.9.0] >> >>> at >> >>> >> >> >> org.apache.aries.blueprint.container.BeanRecipe.runBeanProcInit(BeanRecipe.java:591) >> >>> [43:org.apache.aries.blueprint.core:1.9.0] >> >>> at >> >>> >> >> >> org.apache.aries.blueprint.container.BeanRecipe.internalCreate2(BeanRecipe.java:703) >> >>> [43:org.apache.aries.blueprint.core:1.9.0] >> >>> at >> >>> >> >> >> org.apache.aries.blueprint.container.BeanRecipe.internalCreate(BeanRecipe.java:666) >> >>> [43:org.apache.aries.blueprint.core:1.9.0] >> >>> at >> >>> >> >> >> org.apache.aries.blueprint.di.AbstractRecipe$1.call(AbstractRecipe.java:81) >> >>> [43:org.apache.aries.blueprint.core:1.9.0] >> >>> at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:?] >> >>> at >> >>> >> >> >> org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:90) >> >>> [43:org.apache.aries.blueprint.core:1.9.0] >> >>> at >> >>> >> >> >> org.apache.aries.blueprint.container.BlueprintRepository.createInstances(BlueprintRepository.java:360) >> >>> [43:org.apache.aries.blueprint.core:1.9.0] >> >>> at >> >>> >> >> >> org.apache.aries.blueprint.container.BlueprintRepository.createInstance(BlueprintRepository.java:338) >> >>> [43:org.apache.aries.blueprint.core:1.9.0] >> >>> at >> >>> >> >> >> org.apache.aries.blueprint.container.BlueprintRepository.create(BlueprintRepository.java:152) >> >>> [43:org.apache.aries.blueprint.core:1.9.0] >> >>> at >> >>> >> >> >> org.apache.aries.blueprint.container.BlueprintContainerImpl.getComponentInstance(BlueprintContainerImpl.java:788) >> >>> [43:org.apache.aries.blueprint.core:1.9.0] >> >>> at >> >>> >> >> >> org.apache.camel.blueprint.handler.CamelNamespaceHandler$CamelDependenciesFinder.process(CamelNamespaceHandler.java:988) >> >>> [60:org.apache.camel.camel-blueprint:2.20.3] >> >>> at >> >>> >> >> >> org.apache.aries.blueprint.container.BlueprintContainerImpl.processProcessors(BlueprintContainerImpl.java:552) >> >>> [43:org.apache.aries.blueprint.core:1.9.0] >> >>> at >> >>> >> >> >> org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:397) >> >>> [43:org.apache.aries.blueprint.core:1.9.0] >> >>> at >> >>> >> >> >> org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:278) >> >>> [43:org.apache.aries.blueprint.core:1.9.0] >> >>> at >> >>> >> >> >> org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:299) >> >>> [43:org.apache.aries.blueprint.core:1.9.0] >> >>> at >> >>> >> >> >> org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:268) >> >>> [43:org.apache.aries.blueprint.core:1.9.0] >> >>> at >> >>> >> >> >> org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:264) >> >>> [43:org.apache.aries.blueprint.core:1.9.0] >> >>> at >> >>> >> >> >> org.apache.aries.blueprint.container.BlueprintExtender.modifiedBundle(BlueprintExtender.java:254) >> >>> [43:org.apache.aries.blueprint.core:1.9.0] >> >>> at >> >>> >> >> >> org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.customizerModified(BundleHookBundleTracker.java:500) >> >>> [43:org.apache.aries.blueprint.core:1.9.0] >> >>> at >> >>> >> >> >> org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.customizerModified(BundleHookBundleTracker.java:433) >> >>> [43:org.apache.aries.blueprint.core:1.9.0] >> >>> at >> >>> >> >> >> org.apache.aries.util.tracker.hook.BundleHookBundleTracker$AbstractTracked.track(BundleHookBundleTracker.java:725) >> >>> [43:org.apache.aries.blueprint.core:1.9.0] >> >>> at >> >>> >> >> >> org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.bundleChanged(BundleHookBundleTracker.java:463) >> >>> [43:org.apache.aries.blueprint.core:1.9.0] >> >>> at >> >>> >> >> >> org.apache.aries.util.tracker.hook.BundleHookBundleTracker$BundleEventHook.event(BundleHookBundleTracker.java:422) >> >>> [43:org.apache.aries.blueprint.core:1.9.0] >> >>> at >> >>> >> >> >> org.apache.felix.framework.util.SecureAction.invokeBundleEventHook(SecureAction.java:1179) >> >>> [?:?] >> >>> at >> >>> >> >> >> org.apache.felix.framework.EventDispatcher.createWhitelistFromHooks(EventDispatcher.java:730) >> >>> [?:?] >> >>> at >> >>> >> >> >> org.apache.felix.framework.EventDispatcher.fireBundleEvent(EventDispatcher.java:485) >> >>> [?:?] >> >>> at org.apache.felix.framework.Felix.fireBundleEvent(Felix.java:4579) >> >> [?:?] >> >>> at org.apache.felix.framework.Felix.startBundle(Felix.java:2174) [?:?] >> >>> at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:998) >> [?:?] >> >>> at >> >>> >> >> >> org.apache.felix.fileinstall.internal.DirectoryWatcher.startBundle(DirectoryWatcher.java:1260) >> >>> [7:org.apache.felix.fileinstall:3.6.4] >> >>> at >> >>> >> >> >> org.apache.felix.fileinstall.internal.DirectoryWatcher.startBundles(DirectoryWatcher.java:1233) >> >>> [7:org.apache.felix.fileinstall:3.6.4] >> >>> at >> >>> >> >> >> org.apache.felix.fileinstall.internal.DirectoryWatcher.startAllBundles(DirectoryWatcher.java:1221) >> >>> [7:org.apache.felix.fileinstall:3.6.4] >> >>> at >> >>> >> >> >> org.apache.felix.fileinstall.internal.DirectoryWatcher.doProcess(DirectoryWatcher.java:515) >> >>> [7:org.apache.felix.fileinstall:3.6.4] >> >>> at >> >>> >> >> >> org.apache.felix.fileinstall.internal.DirectoryWatcher.process(DirectoryWatcher.java:365) >> >>> [7:org.apache.felix.fileinstall:3.6.4] >> >>> at >> >>> >> >> >> org.apache.felix.fileinstall.internal.DirectoryWatcher.run(DirectoryWatcher.java:316) >> >>> [7:org.apache.felix.fileinstall:3.6.4] >> >>> Caused by: java.lang.ClassNotFoundException: >> javax.activation.DataHandler >> >>> not found by org.apache.camel.camel-core [62] >> >>> at >> >>> >> >> >> org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1639) >> >>> ~[?:?] >> >>> at >> >>> >> >> >> org.apache.felix.framework.BundleWiringImpl.access$200(BundleWiringImpl.java:80) >> >>> ~[?:?] >> >>> at >> >>> >> >> >> org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:2053) >> >>> ~[?:?] >> >>> at java.lang.ClassLoader.loadClass(ClassLoader.java:352) ~[?:?] >> >>> >> >>> Just to test out, I also tried including javax.activation in the >> >>> dependencies >> >>> >> >>> <dependency> >> >>> <groupId>javax.activation</groupId> >> >>> <artifactId>activation</artifactId> >> >>> <version>1.1</version> >> >>> </dependency> >> >>> >> >>> and embedding it in the bundle >> >>> >> >>> <build> >> >>> <plugins> >> >>> <plugin> >> >>> <groupId>org.apache.felix</groupId> >> >>> <artifactId>maven-bundle-plugin</artifactId> >> >>> <extensions>true</extensions> >> >>> <configuration> >> >>> <instructions> >> >>> <Embed-Dependency>activation</Embed-Dependency> >> >>> <Import-Package> >> >>> *;resolution:=optional >> >>> </Import-Package> >> >>> </instructions> >> >>> </configuration> >> >>> </plugin> >> >>> </plugins> >> >>> </build> >> >>> >> >>> but, either ways, it does not work. >> >>> >> >>> Have I misconfigured anything wrong, in this case? >> >>> >> >>> Any inputs/pointers would be very helpful. >> >>> >> >>> >> >>> Thank you. >> >>> >> >>> Regards, >> >>> Cooshal. >> >>> >> >>> On Thu, Jun 4, 2020 at 3:05 PM Jean-Baptiste Onofre <j...@nanthrax.net> >> >> wrote: >> >>> >> >>>> Hi, >> >>>> >> >>>> How are you looking for the attachment ? In the class loader >> resource or >> >>>> using path ? >> >>>> >> >>>> I guess your attachement files are not found (either because it’s not >> >>>> private package of your bundle, or not imported correctly). >> >>>> >> >>>> Regards >> >>>> JB >> >>>> >> >>>>> Le 4 juin 2020 à 15:03, Kushal Gautam <kushal.gau...@gmail.com> a >> >> écrit >> >>>> : >> >>>>> >> >>>>> Camel Version: 2.20.3 >> >>>>> Java: Open JDK 1.8.0_242 >> >>>>> Karaf: 4.2.0 >> >>>>> >> >>>>> Hi: >> >>>>> >> >>>>> Currently, I am using camel-mail to fetch mails via IMAP. >> >>>>> >> >>>>> The route is pretty simple and looks like: >> >>>>> >> >>>>> from("imaps://{{IMAP_SERVER_URL}}" >> >>>>> + "?username={{IMAP_EMAIL_USER}}" >> >>>>> + "&password={{IMAP_EMAIL_PASS}}" >> >>>>> + "&unseen=true" >> >>>>> + "&delete=false" >> >>>>> + "&initialDelay=100" >> >>>>> + "&delay={{IMAP_POLL_DURATION}}") >> >>>>> ..... >> >>>>> >> >>>>> My custom processor looks something like below (most of the stuffs >> >> taken >> >>>>> from the attachments example): >> >>>>> >> >>>>> ... >> >>>>> @Override >> >>>>> public void process(Exchange exchange) throws Exception { >> >>>>> >> >>>>> exchange.getIn().setHeader("HAS_ATTACHMENTS", false); >> >>>>> >> >>>>> Map<String, DataHandler> attachments = >> >>>>> exchange.getIn().getAttachments(); >> >>>>> >> >>>>> if (attachments.size() > 0) { >> >>>>> for (String name : attachments.keySet()) { >> >>>>> DataHandler dh = attachments.get(name); >> >>>>> // get the file name >> >>>>> String filename = dh.getName(); >> >>>>> >> >>>>> System.out.println(filename); >> >>>>> >> >>>>> // check if the attachment is an xml file >> >>>>> // if not continue to another attachment >> >>>>> if(!filename.endsWith(".xml")) { >> >>>>> continue; >> >>>>> } >> >>>>> >> >>>>> System.out.println("email has an xml attachment"); >> >>>>> >> >>>>> // get the content and convert it to byte[] >> >>>>> byte[] data = exchange >> >>>>> .getContext() >> >>>>> .getTypeConverter() >> >>>>> .convertTo(byte[].class, dh.getInputStream()); >> >>>>> >> >>>>> exchange.getIn().setHeader("FILE_NAME", filename); >> >>>>> exchange.getIn().setHeader("HAS_ATTACHMENTS", true); >> >>>>> >> >>>>> exchange.getIn().setBody(data); >> >>>>> break; >> >>>>> } >> >>>>> } >> >>>>> ... >> >>>>> >> >>>>> If I send an email with some attachments, this code works perfectly >> >> fine >> >>>>> when I execute it via Netbeans. But, attachments.size() returns 0 >> for >> >> the >> >>>>> same code and same email inside Karaf. >> >>>>> >> >>>>> Do I need to configure something specific for this? >> >>>>> >> >>>>> Any inputs on this would be helpful. >> >>>>> >> >>>>> Thanks, >> >>>>> Cooshal. >> >>>> >> >>>> >> >> >> >> >> >>