From 42a577974aa6889778f84154596b7719fd065a13 Mon Sep 17 00:00:00 2001 From: Pete Muir Date: Mon, 6 Apr 2009 12:21:51 +0000 Subject: [PATCH] WBRI-223 git-svn-id: http://anonsvn.jboss.org/repos/weld/ri/trunk@2313 1c488680-804c-0410-94cd-c6b725194a0e --- .../bean/standard/AbstractFacadeBean.java | 28 +++++++++++++------ .../test/unit/lookup/LookupInstanceTest.java | 24 ++++++++++++++++ 2 files changed, 43 insertions(+), 9 deletions(-) create mode 100644 tests/src/test/java/org/jboss/webbeans/test/unit/lookup/LookupInstanceTest.java diff --git a/impl/src/main/java/org/jboss/webbeans/bean/standard/AbstractFacadeBean.java b/impl/src/main/java/org/jboss/webbeans/bean/standard/AbstractFacadeBean.java index 6d04a1b676a..3cc50b3901d 100644 --- a/impl/src/main/java/org/jboss/webbeans/bean/standard/AbstractFacadeBean.java +++ b/impl/src/main/java/org/jboss/webbeans/bean/standard/AbstractFacadeBean.java @@ -11,9 +11,13 @@ import org.jboss.webbeans.ManagerImpl; import org.jboss.webbeans.context.DependentContext; +import org.jboss.webbeans.log.Log; +import org.jboss.webbeans.log.Logging; public abstract class AbstractFacadeBean extends AbstractStandardBean { + + private static final Log log = Logging.getLog(AbstractFacadeBean.class); protected AbstractFacadeBean(ManagerImpl manager) { @@ -25,16 +29,22 @@ public T create(CreationalContext creationalContext) try { DependentContext.INSTANCE.setActive(true); - //TODO Fix to use IP's manager rather than this bean's InjectionPoint injectionPoint = this.getManager().getInjectionPoint(); - Type genericType = injectionPoint.getType(); - if (genericType instanceof ParameterizedType ) + if (injectionPoint != null) { - Type type = ((ParameterizedType) genericType).getActualTypeArguments()[0]; - if (type instanceof Class) + Type genericType = injectionPoint.getType(); + if (genericType instanceof ParameterizedType ) { - Class clazz = Class.class.cast(type); - return newInstance(clazz, fixBindings(injectionPoint.getBindings())); + Type type = ((ParameterizedType) genericType).getActualTypeArguments()[0]; + if (type instanceof Class) + { + Class clazz = Class.class.cast(type); + return newInstance(clazz, fixBindings(injectionPoint.getBindings())); + } + else + { + throw new IllegalStateException("Must have concrete type argument " + injectionPoint); + } } else { @@ -43,9 +53,9 @@ public T create(CreationalContext creationalContext) } else { - throw new IllegalStateException("Must have concrete type argument " + injectionPoint); + log.warn("Dynamic lookup of " + toString() + " is not supported"); + return null; } - } finally { diff --git a/tests/src/test/java/org/jboss/webbeans/test/unit/lookup/LookupInstanceTest.java b/tests/src/test/java/org/jboss/webbeans/test/unit/lookup/LookupInstanceTest.java new file mode 100644 index 00000000000..3c50f523b3f --- /dev/null +++ b/tests/src/test/java/org/jboss/webbeans/test/unit/lookup/LookupInstanceTest.java @@ -0,0 +1,24 @@ +package org.jboss.webbeans.test.unit.lookup; + +import java.util.List; + +import javax.inject.Instance; +import javax.inject.TypeLiteral; + +import org.jboss.testharness.impl.packaging.Artifact; +import org.jboss.webbeans.literal.ObtainsLiteral; +import org.jboss.webbeans.test.unit.AbstractWebBeansTest; +import org.testng.annotations.Test; + +@Artifact +public class LookupInstanceTest extends AbstractWebBeansTest +{ + + + @Test + public void testLookupInstance() throws Exception + { + assert manager.getInstanceByType(new TypeLiteral>>(){}, new ObtainsLiteral()) == null; + } + +}