You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Andrea Cosentino (Jira)" <ji...@apache.org> on 2020/09/01 12:19:00 UTC

[jira] [Commented] (CAMEL-15493) Camel-Cdi throws NPE when attempting to inject an array property using Microprofile Config

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

Andrea Cosentino commented on CAMEL-15493:
------------------------------------------

Contributions are welcome [~kentfung] :)

> Camel-Cdi throws NPE when attempting to inject an array property using Microprofile Config
> ------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-15493
>                 URL: https://issues.apache.org/jira/browse/CAMEL-15493
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-cdi
>    Affects Versions: 3.4.3
>         Environment: JDK 1.8, Tomee 8.0.4 microprofile
>            Reporter: Kent Fung
>            Priority: Major
>
> Microprofile Configuration supports CDI injection of properties as lists or arrays and can cause the Camel Cdi extension to throw a NPE during container startup:
>  
> {noformat}
> Caused by: org.apache.webbeans.exception.WebBeansException: java.lang.NullPointerException
>  at org.apache.webbeans.event.ObserverMethodImpl.notify(ObserverMethodImpl.java:371)
>  at org.apache.webbeans.event.NotificationManager.invokeObserverMethod(NotificationManager.java:819)
>  at org.apache.webbeans.event.NotificationManager.fireEvent(NotificationManager.java:715)
>  ... 53 more
>  Caused by: java.lang.NullPointerException
>  at org.apache.camel.cdi.CdiCamelExtension.lambda$shouldDeployDefaultCamelContext$9(CdiCamelExtension.java:320)
>  at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:174)
>  at java.util.HashMap$KeySpliterator.tryAdvance(HashMap.java:1569)
>  at java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:126)
>  at java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:498)
>  at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:485)
>  at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
>  at java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:230)
>  at java.util.stream.MatchOps$MatchOp.evaluateSequential(MatchOps.java:196)
>  at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
>  at java.util.stream.ReferencePipeline.anyMatch(ReferencePipeline.java:449)
>  at org.apache.camel.cdi.CdiCamelExtension.shouldDeployDefaultCamelContext(CdiCamelExtension.java:325)
>  at org.apache.camel.cdi.CdiCamelExtension.afterBeanDiscovery(CdiCamelExtension.java:276)
>  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.webbeans.event.ObserverMethodImpl.invoke(ObserverMethodImpl.java:404)
>  at org.apache.webbeans.event.ContainerEventObserverMethodImpl.invoke(ContainerEventObserverMethodImpl.java:85)
>  at org.apache.webbeans.event.ObserverMethodImpl.notify(ObserverMethodImpl.java:365)
>  ... 55 more{noformat}
>  
> This occurs when CdiCamelExtension.shouldDeployDefaultCamelContext encounters a bean for an array type because the Class.getPackage method returns null for arrays:
> {code:java}
> private boolean shouldDeployDefaultCamelContext(Set<Bean<?>> beans) {
>  return beans.stream()
>  // Is there a Camel bean with the @Default qualifier?
>  // Excluding internal components...
>  .filter(bean -> !bean.getBeanClass().getPackage().equals(getClass().getPackage()))
> {code}
>  
> Switching around the equals check should fix it.
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)