You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by Kushal Gautam <ku...@gmail.com> on 2020/06/04 13:03:08 UTC
camel-mail does not fetch attachments in Karaf.
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.
Re: camel-mail does not fetch attachments in Karaf.
Posted by Jean-Baptiste Onofre <jb...@nanthrax.net>.
Hi,
Sorry, I was busy with other topics. I will work on the sample later today.
Regards
JB
> Le 12 juin 2020 à 08:38, Kushal Gautam <ku...@gmail.com> a écrit :
>
> 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 <ku...@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 <jb...@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 <ku...@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 <jb...@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 <ku...@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 <jb...@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 <ku...@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.
>>>>>>>
>>>>>>>
>>>>>
>>>>>
>>>
>>>
Re: camel-mail does not fetch attachments in Karaf.
Posted by Kushal Gautam <ku...@gmail.com>.
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 <ku...@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 <jb...@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 <ku...@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 <jb...@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 <ku...@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 <jb...@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 <ku...@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.
>> >>>>
>> >>>>
>> >>
>> >>
>>
>>
Re: camel-mail does not fetch attachments in Karaf.
Posted by Kushal Gautam <ku...@gmail.com>.
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 <jb...@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 <ku...@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 <jb...@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 <ku...@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 <jb...@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 <ku...@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.
> >>>>
> >>>>
> >>
> >>
>
>
Re: camel-mail does not fetch attachments in Karaf.
Posted by Jean-Baptiste Onofre <jb...@nanthrax.net>.
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 <ku...@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 <jb...@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 <ku...@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 <jb...@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 <ku...@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.
>>>>
>>>>
>>
>>
Re: camel-mail does not fetch attachments in Karaf.
Posted by Kushal Gautam <ku...@gmail.com>.
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 <jb...@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 <ku...@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 <jb...@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 <ku...@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.
> >>
> >>
>
>
Re: camel-mail does not fetch attachments in Karaf.
Posted by Jean-Baptiste Onofre <jb...@nanthrax.net>.
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 <ku...@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 <jb...@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 <ku...@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.
>>
>>
Re: camel-mail does not fetch attachments in Karaf.
Posted by Kushal Gautam <ku...@gmail.com>.
Hello JB:
Thank you for getting back.
I tried that out in frustration ;)
Don’t embed activation in your bundle. You have the spec provided.
>
I am using Open JDK 1.8.0_242
Are you using JDK 8 or 11+ ?
>
To clarify and reproduce this issue, I have created a project in github. I
am using a custom karaf distribution. The bundle and karaf distribution are
included in this project.
The route and transformers are located at
https://github.com/cooshal/karaf-camel-mail/tree/master/components/imap-consumer/src/main/java/com/krigosoft/eai/imap/consumer/routing
Thank you.
Regards,
Cooshal.
On Mon, Jun 8, 2020 at 6:32 AM Jean-Baptiste Onofre <jb...@nanthrax.net> wrote:
> Hi,
>
> Don’t embed activation in your bundle. You have the spec provided. Are you
> using JDK 8 or 11+ ?
>
> Regards
> JB
>
> > Le 7 juin 2020 à 10:50, Kushal Gautam <ku...@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 <jb...@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 <ku...@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.
> >>
> >>
>
>
Re: camel-mail does not fetch attachments in Karaf.
Posted by Jean-Baptiste Onofre <jb...@nanthrax.net>.
Hi,
Don’t embed activation in your bundle. You have the spec provided. Are you using JDK 8 or 11+ ?
Regards
JB
> Le 7 juin 2020 à 10:50, Kushal Gautam <ku...@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 <jb...@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 <ku...@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.
>>
>>
Re: camel-mail does not fetch attachments in Karaf.
Posted by Kushal Gautam <ku...@gmail.com>.
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 <jb...@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 <ku...@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.
>
>
Re: camel-mail does not fetch attachments in Karaf.
Posted by Kushal Gautam <ku...@gmail.com>.
Hi JB:
I am not exactly sure about the internals.
https://camel.apache.org/components/latest/others/attachments.html
From the point of view of my code, it is:
...
Map<String, DataHandler> attachments = exchange.getIn().getAttachments();
...
for (String name : attachments.keySet()) {
DataHandler dh = attachments.get(name);
// get the file name
String filename = dh.getName();
...
}
which basically gets the javax.activation.DataHandler instance of the
attachment
Do you know which particular package I need to import?
In my bundle, I had the following configuration as well
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<instructions>
<Import-Package>
javax.activation;version=1.1,
*;resolution:=optional
</Import-Package>
</instructions>
</configuration>
</plugin>
But, this also doesn't seem to help either.
Thank you.
Regards,
Cooshal.
On Thu, Jun 4, 2020 at 3:05 PM Jean-Baptiste Onofre <jb...@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 <ku...@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.
>
>
Re: camel-mail does not fetch attachments in Karaf.
Posted by Jean-Baptiste Onofre <jb...@nanthrax.net>.
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 <ku...@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.