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 <lburgazz...@gmail.com>
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);
+    }
 }

Reply via email to