You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by st...@apache.org on 2015/06/12 09:03:29 UTC
svn commit: r1685038 -
/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/cdi/util/CDIUtils.java
Author: struberg
Date: Fri Jun 12 07:03:29 2015
New Revision: 1685038
URL: http://svn.apache.org/r1685038
Log:
MYFACES-3999 use BeanManager#resolve instead of iterator.next()
Modified:
myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/cdi/util/CDIUtils.java
Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/cdi/util/CDIUtils.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/cdi/util/CDIUtils.java?rev=1685038&r1=1685037&r2=1685038&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/cdi/util/CDIUtils.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/cdi/util/CDIUtils.java Fri Jun 12 07:03:29 2015
@@ -19,7 +19,8 @@
package org.apache.myfaces.cdi.util;
import java.lang.reflect.Type;
-import java.util.Iterator;
+import java.util.Set;
+
import javax.enterprise.context.spi.CreationalContext;
import javax.enterprise.inject.spi.Bean;
import javax.enterprise.inject.spi.BeanManager;
@@ -27,8 +28,7 @@ import javax.faces.context.ExternalConte
import org.apache.myfaces.webapp.AbstractFacesInitializer;
/**
- *
- * @author Leonardo Uribe
+ * Lookup code for Contextual Instances.
*/
public class CDIUtils
{
@@ -38,62 +38,26 @@ public class CDIUtils
AbstractFacesInitializer.CDI_BEAN_MANAGER_INSTANCE);
}
- /*
- public static BeanManager getBeanManagerFromJNDI()
- {
- try
- {
- // in an application server
- return (BeanManager) InitialContext.doLookup("java:comp/BeanManager");
- }
- catch (NamingException e)
- {
- // silently ignore
- }
-
- try
- {
- // in a servlet container
- return (BeanManager) InitialContext.doLookup("java:comp/env/BeanManager");
- }
- catch (NamingException e)
- {
- // silently ignore
- }
- return null;
- }*/
- @SuppressWarnings("unchecked")
+
public static <T> T lookup(BeanManager bm, Class<T> clazz)
{
- Iterator<Bean< ?>> iter = bm.getBeans(clazz).iterator();
- if (!iter.hasNext())
- {
- throw new IllegalStateException(
- "CDI BeanManager cannot find an instance of requested type " +
- clazz.getName());
- }
- Bean<T> bean = (Bean<T>) iter.next();
- CreationalContext<T> ctx = bm.createCreationalContext(bean);
- T dao = (T) bm.getReference(bean, clazz, ctx);
- return dao;
+ Set<Bean<?>> beans = bm.getBeans(clazz);
+ return resolveInstance(bm, beans, clazz);
}
- @SuppressWarnings(
- {
- "unchecked", "rawtypes"
- })
public static Object lookup(BeanManager bm, String name)
{
- Iterator<Bean< ?>> iter = bm.getBeans(name).iterator();
- if (!iter.hasNext())
- {
- throw new IllegalStateException(
- "CDI BeanManager cannot find an instance of requested type '" + name + "'");
- }
- Bean bean = iter.next();
- CreationalContext ctx = bm.createCreationalContext(bean);
- Type type = (Type) bean.getTypes().iterator().next();
- return bm.getReference(bean, type, ctx);
+ Set<Bean<?>> beans = bm.getBeans(name);
+ return resolveInstance(bm, beans, Object.class);
+ }
+
+ private static <T> T resolveInstance(BeanManager bm, Set<Bean<?>> beans, Type type)
+ {
+ Bean<?> bean = bm.resolve(beans);
+ CreationalContext<?> cc = bm.createCreationalContext(bean);
+ T dao = (T) bm.getReference(bean, type, cc);
+ return dao;
+
}
}
\ No newline at end of file