[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