Skip to content

Commit

Permalink
WBRI-215
Browse files Browse the repository at this point in the history
git-svn-id: http://anonsvn.jboss.org/repos/weld/ri/trunk@2297 1c488680-804c-0410-94cd-c6b725194a0e
  • Loading branch information
pmuir committed Apr 4, 2009
1 parent 9b106f1 commit c52a6bb
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 25 deletions.
17 changes: 10 additions & 7 deletions impl/src/main/java/org/jboss/webbeans/RootManager.java
Expand Up @@ -67,20 +67,19 @@
import org.jboss.webbeans.context.ApplicationContext;
import org.jboss.webbeans.context.ContextMap;
import org.jboss.webbeans.context.CreationalContextImpl;
import org.jboss.webbeans.ejb.EjbDescriptorCache;
import org.jboss.webbeans.event.EventManager;
import org.jboss.webbeans.event.ObserverImpl;
import org.jboss.webbeans.injection.NonContextualInjector;
import org.jboss.webbeans.injection.resolution.ResolvableAnnotatedClass;
import org.jboss.webbeans.injection.resolution.Resolver;
import org.jboss.webbeans.introspector.AnnotatedItem;
import org.jboss.webbeans.introspector.AnnotatedMethod;
import org.jboss.webbeans.log.Log;
import org.jboss.webbeans.log.Logging;
import org.jboss.webbeans.manager.api.WebBeansManager;
import org.jboss.webbeans.metadata.MetaDataCache;
import org.jboss.webbeans.resources.spi.NamingContext;
import org.jboss.webbeans.util.Beans;
import org.jboss.webbeans.util.Proxies;
import org.jboss.webbeans.util.Reflections;

/**
Expand Down Expand Up @@ -661,22 +660,26 @@ public <T> T getInstanceToInject(InjectionPoint injectionPoint, CreationalContex
currentInjectionPoint.get().push(injectionPoint);
}
AnnotatedItem<T, ?> element = ResolvableAnnotatedClass.of(injectionPoint.getType(), injectionPoint.getBindings().toArray(new Annotation[0]));
Bean<T> bean = getBeanByType(element, element.getBindingsAsArray());
Bean<T> resolvedBean = getBeanByType(element, element.getBindingsAsArray());
if (getServices().get(MetaDataCache.class).getScopeModel(resolvedBean.getScopeType()).isNormal() && !Proxies.isTypeProxyable(injectionPoint.getType()))
{
throw new UnproxyableDependencyException("Attempting to inject an unproxyable normal scoped bean " + resolvedBean + " into " + injectionPoint);
}
if (creationalContext instanceof CreationalContextImpl)
{
CreationalContextImpl<?> ctx = (CreationalContextImpl<?>) creationalContext;
if (ctx.containsIncompleteInstance(bean))
if (ctx.containsIncompleteInstance(resolvedBean))
{
return ctx.getIncompleteInstance(bean);
return ctx.getIncompleteInstance(resolvedBean);
}
else
{
return getInstance(bean, ctx.getCreationalContext(bean));
return getInstance(resolvedBean, ctx.getCreationalContext(resolvedBean));
}
}
else
{
return getInstance(bean);
return getInstance(resolvedBean);
}
}
finally
Expand Down
44 changes: 27 additions & 17 deletions impl/src/main/java/org/jboss/webbeans/util/Proxies.java
Expand Up @@ -16,6 +16,8 @@
*/
package org.jboss.webbeans.util;

import java.lang.reflect.Constructor;
import java.lang.reflect.Modifier;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.Iterator;
Expand Down Expand Up @@ -195,25 +197,33 @@ private static boolean isClassProxyable(Class<?> clazz)
{
return true;
}
else if (Reflections.getConstructor(clazz) == null)
{
return false;
}
else if (Reflections.isTypeOrAnyMethodFinal(clazz))
{
return false;
}
else if (Reflections.isPrimitive(clazz))
{
return false;
}
else if (Reflections.isArrayType(clazz))
{
return false;
}
else
{
return true;
Constructor<?> constructor = Reflections.getDeclaredConstructor(clazz);
if (constructor == null)
{
return false;
}
else if (Modifier.isPrivate(constructor.getModifiers()))
{
return false;
}
else if (Reflections.isTypeOrAnyMethodFinal(clazz))
{
return false;
}
else if (Reflections.isPrimitive(clazz))
{
return false;
}
else if (Reflections.isArrayType(clazz))
{
return false;
}
else
{
return true;
}
}
}

Expand Down
Expand Up @@ -336,7 +336,7 @@ public static boolean isNonMemberInnerClass(Class<?> clazz)
* @param parameterTypes The parameter types
* @return The matching constructor. Null is returned if none is found
*/
public static <T> Constructor<T> getConstructor(Class<T> clazz, Class<?>... parameterTypes)
public static <T> Constructor<T> getDeclaredConstructor(Class<T> clazz, Class<?>... parameterTypes)
{
try
{
Expand Down

0 comments on commit c52a6bb

Please sign in to comment.