Kent Fung created CAMEL-15493:
---------------------------------

             Summary: 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


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)

Reply via email to