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.
> >>
> >>
>
>

Reply via email to