This is an automated email from the ASF dual-hosted git repository.
lburgazzoli pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
The following commit(s) were added to refs/heads/master by this push:
new 682174e Fix potential NPE
682174e is described below
commit 682174eb44ac8ea45c3a30b79b849ee0654e268a
Author: lburgazzoli <[email protected]>
AuthorDate: Sat Jun 20 22:46:42 2020 +0200
Fix potential NPE
---
.../camel/quarkus/core/RuntimeBeanRepository.java | 67 ++++++++++++----------
1 file changed, 37 insertions(+), 30 deletions(-)
diff --git
a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/RuntimeBeanRepository.java
b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/RuntimeBeanRepository.java
index 3e052bd..9db54a3 100644
---
a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/RuntimeBeanRepository.java
+++
b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/RuntimeBeanRepository.java
@@ -17,6 +17,7 @@
package org.apache.camel.quarkus.core;
import java.lang.annotation.Annotation;
+import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
@@ -31,37 +32,10 @@ import io.quarkus.arc.ArcContainer;
import org.apache.camel.spi.BeanRepository;
public final class RuntimeBeanRepository implements BeanRepository {
- @Override
- public Object lookupByName(String name) {
- return lookupByNameAndType(name, Object.class);
- }
-
- @Override
- public <T> T lookupByNameAndType(String name, Class<T> type) {
- final ArcContainer container = Arc.container();
- final BeanManager manager = container.beanManager();
-
- return getReferenceByName(manager, name, type).orElse(null);
- }
-
- @Override
- public <T> Map<String, T> findByTypeWithName(Class<T> type) {
- return getReferencesByTypeWithName(type);
- }
-
- @Override
- public <T> Set<T> findByType(Class<T> type) {
- final ArcContainer container = Arc.container();
- final BeanManager manager = container.beanManager();
-
- return getReferencesByType(manager, type);
- }
-
private static <T> Map<String, T> getReferencesByTypeWithName(Class<T>
type, Annotation... qualifiers) {
- final ArcContainer container = Arc.container();
- final BeanManager manager = container.beanManager();
-
- return getReferencesByTypeWithName(manager, type, qualifiers);
+ return getBeanManager()
+ .map(manager -> getReferencesByTypeWithName(manager, type,
qualifiers))
+ .orElseGet(Collections::emptyMap);
}
private static <T> Set<T> getReferencesByType(BeanManager manager,
Class<T> type, Annotation... qualifiers) {
@@ -98,4 +72,37 @@ public final class RuntimeBeanRepository implements
BeanRepository {
return answer;
}
+
+ private static Optional<BeanManager> getBeanManager() {
+ ArcContainer container = Arc.container();
+ if (container == null) {
+ return Optional.empty();
+ }
+
+ return Optional.ofNullable(container.beanManager());
+ }
+
+ @Override
+ public Object lookupByName(String name) {
+ return lookupByNameAndType(name, Object.class);
+ }
+
+ @Override
+ public <T> T lookupByNameAndType(String name, Class<T> type) {
+ return getBeanManager()
+ .flatMap(manager -> getReferenceByName(manager, name, type))
+ .orElse(null);
+ }
+
+ @Override
+ public <T> Map<String, T> findByTypeWithName(Class<T> type) {
+ return getReferencesByTypeWithName(type);
+ }
+
+ @Override
+ public <T> Set<T> findByType(Class<T> type) {
+ return getBeanManager()
+ .map(manager -> getReferencesByType(manager, type))
+ .orElseGet(Collections::emptySet);
+ }
}