From 94455cdf54a406db89e5faa35dbd6fd3b8a1339d Mon Sep 17 00:00:00 2001 From: Shane Bryzak Date: Mon, 8 Aug 2011 14:30:27 +1000 Subject: [PATCH] moved BeanManagerUtils from persistence modules --- .../solder/beanManager/BeanManagerUtils.java | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 impl/src/main/java/org/jboss/seam/solder/beanManager/BeanManagerUtils.java diff --git a/impl/src/main/java/org/jboss/seam/solder/beanManager/BeanManagerUtils.java b/impl/src/main/java/org/jboss/seam/solder/beanManager/BeanManagerUtils.java new file mode 100644 index 00000000..baa3f576 --- /dev/null +++ b/impl/src/main/java/org/jboss/seam/solder/beanManager/BeanManagerUtils.java @@ -0,0 +1,43 @@ +package org.jboss.seam.solder.beanManager; + +import javax.enterprise.context.spi.CreationalContext; +import javax.enterprise.inject.spi.Bean; +import javax.enterprise.inject.spi.BeanManager; +import javax.enterprise.inject.spi.InjectionTarget; +import java.lang.annotation.Annotation; + +/** + * @author Lincoln Baxter, III + */ +public abstract class BeanManagerUtils +{ + @SuppressWarnings("unchecked") + public static T getContextualInstance(final BeanManager manager, final Class type, Annotation... qualifiers) + { + T result = null; + Bean bean = (Bean) manager.resolve(manager.getBeans(type, qualifiers)); + if (bean != null) + { + CreationalContext context = manager.createCreationalContext(bean); + if (context != null) + { + result = (T) manager.getReference(bean, type, context); + } + } + return result; + } + + @SuppressWarnings("unchecked") + public static CreationalContext injectNonContextualInstance(final BeanManager manager, final Object instance) + { + if (instance != null) + { + CreationalContext creationalContext = manager.createCreationalContext(null); + InjectionTarget injectionTarget = (InjectionTarget) manager + .createInjectionTarget(manager.createAnnotatedType(instance.getClass())); + injectionTarget.inject(instance, creationalContext); + return creationalContext; + } + return null; + } +} \ No newline at end of file