[weld-commits] Weld SVN: r6746 - extensions/trunk/src/main/java/org/jboss/weld/extensions/util.
weld-commits at lists.jboss.org
weld-commits at lists.jboss.org
Thu Jul 22 05:10:14 EDT 2010
Author: swd847
Date: 2010-07-22 05:10:14 -0400 (Thu, 22 Jul 2010)
New Revision: 6746
Modified:
extensions/trunk/src/main/java/org/jboss/weld/extensions/util/BeanResolver.java
Log:
add more convenience methods
Modified: extensions/trunk/src/main/java/org/jboss/weld/extensions/util/BeanResolver.java
===================================================================
--- extensions/trunk/src/main/java/org/jboss/weld/extensions/util/BeanResolver.java 2010-07-22 08:58:28 UTC (rev 6745)
+++ extensions/trunk/src/main/java/org/jboss/weld/extensions/util/BeanResolver.java 2010-07-22 09:10:14 UTC (rev 6746)
@@ -24,6 +24,8 @@
import javax.enterprise.inject.spi.Bean;
import javax.enterprise.inject.spi.BeanManager;
+import org.jboss.weld.extensions.literal.DefaultLiteral;
+
/**
* Utility class to resolve and acquire references to Beans
*
@@ -55,6 +57,26 @@
}
/**
+ * Resolves a bean with the qualifier @Default
+ *
+ */
+ public static Bean<?> resolveDefaultBean(Type beanType, BeanManager manager) throws AmbiguousBeanException, BeanResolutionException, BeanNotFoundException
+ {
+ Annotation[] qualifiers = new Annotation[1];
+ qualifiers[0] = DefaultLiteral.INSTANCE;
+ Set<Bean<?>> beans = manager.getBeans(beanType, qualifiers);
+ if (beans.size() == 0)
+ {
+ throw new BeanNotFoundException(beanType, qualifiers);
+ }
+ if (beans.size() != 1)
+ {
+ throw new AmbiguousBeanException(beanType, qualifiers, beans);
+ }
+ return beans.iterator().next();
+ }
+
+ /**
* gets a reference to a bean with the given type and qualifiers
*/
public static Object getReference(Type beanType, Annotation[] qualifiers, BeanManager manager) throws AmbiguousBeanException, BeanResolutionException, BeanNotFoundException
@@ -71,4 +93,23 @@
{
return (T) getReference((Type) beanType, qualifiers, manager);
}
+
+ /**
+ * gets a reference to a bean with the given type and qualifier @Default
+ */
+ public static Object getDefaultReference(Type beanType, BeanManager manager) throws AmbiguousBeanException, BeanResolutionException, BeanNotFoundException
+ {
+ Bean<?> bean = resolveDefaultBean(beanType, manager);
+ CreationalContext<?> context = manager.createCreationalContext(bean);
+ return manager.getReference(bean, beanType, context);
+ }
+
+ /**
+ * gets a reference to a bean with the given type and qualifier @Default
+ */
+ public static <T> T getDefaultReference(Class<T> beanType, BeanManager manager) throws AmbiguousBeanException, BeanResolutionException, BeanNotFoundException
+ {
+ return (T) getDefaultReference((Type) beanType, manager);
+ }
+
}
More information about the weld-commits
mailing list