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
commit c23864cbcedafe8ad7260de65e65ef0fa07d01aa Author: lburgazzoli <lburgazz...@gmail.com> AuthorDate: Sat Oct 5 09:16:50 2019 +0200 inline BeanManagerHelper in RuntimeBeanRepository #9 --- .../camel/quarkus/core/BeanManagerHelper.java | 95 ---------------------- .../camel/quarkus/core/RuntimeBeanRepository.java | 62 +++++++++++++- 2 files changed, 59 insertions(+), 98 deletions(-) diff --git a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/BeanManagerHelper.java b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/BeanManagerHelper.java deleted file mode 100644 index 89d87e8..0000000 --- a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/BeanManagerHelper.java +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.camel.quarkus.core; - -import java.lang.annotation.Annotation; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.Optional; -import java.util.Set; -import javax.enterprise.inject.Vetoed; -import javax.enterprise.inject.spi.Bean; -import javax.enterprise.inject.spi.BeanManager; - -import io.quarkus.arc.Arc; -import io.quarkus.arc.ArcContainer; - -/** - * Helper methods to retrieve beans from the {@link Arc} container. - */ -@Vetoed -final class BeanManagerHelper { - - private BeanManagerHelper() { - } - - static <T> Set<T> getReferencesByType(Class<T> type, Annotation... qualifiers) { - final ArcContainer container = Arc.container(); - final BeanManager manager = container.beanManager(); - - return getReferencesByType(manager, type, qualifiers); - } - - static <T> Optional<T> getReferenceByName(String name, Class<T> type) { - final ArcContainer container = Arc.container(); - final BeanManager manager = container.beanManager(); - - return getReferenceByName(manager, name, type); - } - - 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); - } - - static <T> Set<T> getReferencesByType(BeanManager manager, Class<T> type, Annotation... qualifiers) { - Set<T> answer = new HashSet<>(); - - for (Bean<?> bean: manager.getBeans(type, qualifiers)) { - T ref = getReference(manager, type, bean); - if (ref != null) { - answer.add(ref); - } - } - - return answer; - } - - static <T> Optional<T> getReferenceByName(BeanManager manager, String name, Class<T> type) { - return Optional.ofNullable(manager.resolve(manager.getBeans(name))).map(bean -> getReference(manager, type, bean)); - } - - static <T> T getReference(BeanManager manager, Class<T> type, Bean<?> bean) { - return type.cast(manager.getReference(bean, type, manager.createCreationalContext(bean))); - } - - static <T> Map<String, T> getReferencesByTypeWithName(BeanManager manager, Class<T> type, Annotation... qualifiers) { - Map<String, T> answer = new HashMap<>(); - - for (Bean<?> bean: manager.getBeans(type, qualifiers)) { - T ref = getReference(manager, type, bean); - if (ref != null) { - answer.put(bean.getName(), ref); - } - } - - return answer; - } -} diff --git a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/RuntimeBeanRepository.java b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/RuntimeBeanRepository.java index 61d5e80..d7dc274 100644 --- a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/RuntimeBeanRepository.java +++ b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/RuntimeBeanRepository.java @@ -16,9 +16,18 @@ */ package org.apache.camel.quarkus.core; +import java.lang.annotation.Annotation; +import java.util.HashMap; +import java.util.HashSet; import java.util.Map; +import java.util.Optional; import java.util.Set; +import javax.enterprise.inject.spi.Bean; +import javax.enterprise.inject.spi.BeanManager; + +import io.quarkus.arc.Arc; +import io.quarkus.arc.ArcContainer; import org.apache.camel.spi.BeanRepository; public final class RuntimeBeanRepository implements BeanRepository { @@ -29,16 +38,63 @@ public final class RuntimeBeanRepository implements BeanRepository { @Override public <T> T lookupByNameAndType(String name, Class<T> type) { - return BeanManagerHelper.getReferenceByName(name, type).orElse(null); + 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 BeanManagerHelper.getReferencesByTypeWithName(type); + return getReferencesByTypeWithName(type); } @Override public <T> Set<T> findByType(Class<T> type) { - return BeanManagerHelper.getReferencesByType(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); + } + + private static <T> Set<T> getReferencesByType(BeanManager manager, Class<T> type, Annotation... qualifiers) { + Set<T> answer = new HashSet<>(); + + for (Bean<?> bean: manager.getBeans(type, qualifiers)) { + T ref = getReference(manager, type, bean); + if (ref != null) { + answer.add(ref); + } + } + + return answer; + } + + private static <T> Optional<T> getReferenceByName(BeanManager manager, String name, Class<T> type) { + return Optional.ofNullable(manager.resolve(manager.getBeans(name))).map(bean -> getReference(manager, type, bean)); + } + + private static <T> T getReference(BeanManager manager, Class<T> type, Bean<?> bean) { + return type.cast(manager.getReference(bean, type, manager.createCreationalContext(bean))); + } + + private static <T> Map<String, T> getReferencesByTypeWithName(BeanManager manager, Class<T> type, Annotation... qualifiers) { + Map<String, T> answer = new HashMap<>(); + + for (Bean<?> bean: manager.getBeans(type, qualifiers)) { + T ref = getReference(manager, type, bean); + if (ref != null) { + answer.put(bean.getName(), ref); + } + } + + return answer; } }