You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Kent Fung (Jira)" <ji...@apache.org> on 2020/09/01 11:25:00 UTC
[jira] [Created] (CAMEL-15493) Camel-Cdi throws NPE when attempting
to inject an array property using Microprofile Config
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)