[weld-commits] Weld SVN: r5211 - in core/trunk/impl/src/main/java/org/jboss/weld: bean and 13 other directories.

weld-commits at lists.jboss.org weld-commits at lists.jboss.org
Thu Dec 3 13:12:19 EST 2009


Author: pete.muir at jboss.org
Date: 2009-12-03 13:12:17 -0500 (Thu, 03 Dec 2009)
New Revision: 5211

Added:
   core/trunk/impl/src/main/java/org/jboss/weld/util/reflection/HierarchyDiscovery.java
   core/trunk/impl/src/main/java/org/jboss/weld/util/reflection/Reflections.java
Removed:
   core/trunk/impl/src/main/java/org/jboss/weld/util/Reflections.java
Modified:
   core/trunk/impl/src/main/java/org/jboss/weld/BeanManagerImpl.java
   core/trunk/impl/src/main/java/org/jboss/weld/Validator.java
   core/trunk/impl/src/main/java/org/jboss/weld/bean/AbstractBean.java
   core/trunk/impl/src/main/java/org/jboss/weld/bean/AbstractClassBean.java
   core/trunk/impl/src/main/java/org/jboss/weld/bean/AbstractProducerBean.java
   core/trunk/impl/src/main/java/org/jboss/weld/bean/DecoratorImpl.java
   core/trunk/impl/src/main/java/org/jboss/weld/bean/ManagedBean.java
   core/trunk/impl/src/main/java/org/jboss/weld/bean/SessionBean.java
   core/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/CallableMethodHandler.java
   core/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/ExtensionBean.java
   core/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/InstanceImpl.java
   core/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/ee/EEResourceProducerField.java
   core/trunk/impl/src/main/java/org/jboss/weld/bean/interceptor/ClassInterceptionHandlerFactory.java
   core/trunk/impl/src/main/java/org/jboss/weld/bean/proxy/AbstractDecoratorMethodHandler.java
   core/trunk/impl/src/main/java/org/jboss/weld/bean/proxy/ClientProxyMethodHandler.java
   core/trunk/impl/src/main/java/org/jboss/weld/bean/proxy/DecoratorProxyMethodHandler.java
   core/trunk/impl/src/main/java/org/jboss/weld/bean/proxy/EnterpriseBeanProxyMethodHandler.java
   core/trunk/impl/src/main/java/org/jboss/weld/bootstrap/AbstractBeanDeployer.java
   core/trunk/impl/src/main/java/org/jboss/weld/event/EventImpl.java
   core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/AbstractWeldAnnotated.java
   core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/AbstractWeldMember.java
   core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WeldAnnotationImpl.java
   core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WeldClassImpl.java
   core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WeldConstructorImpl.java
   core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WeldFieldImpl.java
   core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WeldMethodImpl.java
   core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WeldParameterImpl.java
   core/trunk/impl/src/main/java/org/jboss/weld/jsf/JsfHelper.java
   core/trunk/impl/src/main/java/org/jboss/weld/metadata/cache/BindingTypeModel.java
   core/trunk/impl/src/main/java/org/jboss/weld/metadata/cache/InterceptorBindingModel.java
   core/trunk/impl/src/main/java/org/jboss/weld/resolution/NewResolvableTransformer.java
   core/trunk/impl/src/main/java/org/jboss/weld/resolution/ResolvableFactory.java
   core/trunk/impl/src/main/java/org/jboss/weld/resolution/ResolvableWeldClass.java
   core/trunk/impl/src/main/java/org/jboss/weld/resolution/TypeSafeBeanResolver.java
   core/trunk/impl/src/main/java/org/jboss/weld/resolution/TypeSafeDecoratorResolver.java
   core/trunk/impl/src/main/java/org/jboss/weld/resolution/TypeSafeDisposerResolver.java
   core/trunk/impl/src/main/java/org/jboss/weld/resolution/TypeSafeObserverResolver.java
   core/trunk/impl/src/main/java/org/jboss/weld/util/Beans.java
   core/trunk/impl/src/main/java/org/jboss/weld/util/Observers.java
   core/trunk/impl/src/main/java/org/jboss/weld/util/Proxies.java
   core/trunk/impl/src/main/java/org/jboss/weld/util/serviceProvider/DefaultServiceLoader.java
Log:
move stuff around

Modified: core/trunk/impl/src/main/java/org/jboss/weld/BeanManagerImpl.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/BeanManagerImpl.java	2009-12-03 18:08:11 UTC (rev 5210)
+++ core/trunk/impl/src/main/java/org/jboss/weld/BeanManagerImpl.java	2009-12-03 18:12:17 UTC (rev 5211)
@@ -94,7 +94,8 @@
 import org.jboss.weld.util.Beans;
 import org.jboss.weld.util.Observers;
 import org.jboss.weld.util.Proxies;
-import org.jboss.weld.util.Reflections;
+import org.jboss.weld.util.reflection.HierarchyDiscovery;
+import org.jboss.weld.util.reflection.Reflections;
 
 import com.google.common.base.Function;
 import com.google.common.base.Supplier;
@@ -661,7 +662,7 @@
       HashSet<Annotation> bindingAnnotations = new HashSet<Annotation>(Arrays.asList(bindings));
       bindingAnnotations.add(new AnyLiteral());
       Set<ObserverMethod<? super T>> observers = new HashSet<ObserverMethod<? super T>>();
-      Set<ObserverMethod<?>> eventObservers = observerResolver.resolve(ResolvableFactory.of(new Reflections.HierarchyDiscovery(eventType).getTypeClosure(),  bindingAnnotations, null));
+      Set<ObserverMethod<?>> eventObservers = observerResolver.resolve(ResolvableFactory.of(new HierarchyDiscovery(eventType).getTypeClosure(),  bindingAnnotations, null));
       for (ObserverMethod<?> observer : eventObservers)
       {
          observers.add((ObserverMethod<T>) observer);

Modified: core/trunk/impl/src/main/java/org/jboss/weld/Validator.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/Validator.java	2009-12-03 18:08:11 UTC (rev 5210)
+++ core/trunk/impl/src/main/java/org/jboss/weld/Validator.java	2009-12-03 18:12:17 UTC (rev 5211)
@@ -58,7 +58,7 @@
 import org.jboss.weld.resolution.ResolvableWeldClass;
 import org.jboss.weld.util.Beans;
 import org.jboss.weld.util.Proxies;
-import org.jboss.weld.util.Reflections;
+import org.jboss.weld.util.reflection.Reflections;
 
 import com.google.common.base.Supplier;
 import com.google.common.collect.Multimap;

Modified: core/trunk/impl/src/main/java/org/jboss/weld/bean/AbstractBean.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/bean/AbstractBean.java	2009-12-03 18:08:11 UTC (rev 5210)
+++ core/trunk/impl/src/main/java/org/jboss/weld/bean/AbstractBean.java	2009-12-03 18:12:17 UTC (rev 5211)
@@ -58,7 +58,7 @@
 import org.jboss.weld.metadata.cache.MergedStereotypes;
 import org.jboss.weld.metadata.cache.MetaAnnotationStore;
 import org.jboss.weld.util.Beans;
-import org.jboss.weld.util.Reflections;
+import org.jboss.weld.util.reflection.Reflections;
 import org.slf4j.cal10n.LocLogger;
 
 /**

Modified: core/trunk/impl/src/main/java/org/jboss/weld/bean/AbstractClassBean.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/bean/AbstractClassBean.java	2009-12-03 18:08:11 UTC (rev 5210)
+++ core/trunk/impl/src/main/java/org/jboss/weld/bean/AbstractClassBean.java	2009-12-03 18:12:17 UTC (rev 5211)
@@ -72,9 +72,9 @@
 import org.jboss.weld.serialization.spi.helpers.SerializableContextualInstance;
 import org.jboss.weld.util.Beans;
 import org.jboss.weld.util.Proxies;
-import org.jboss.weld.util.Reflections;
 import org.jboss.weld.util.Strings;
 import org.jboss.weld.util.Proxies.TypeInfo;
+import org.jboss.weld.util.reflection.Reflections;
 import org.slf4j.cal10n.LocLogger;
 
 /**

Modified: core/trunk/impl/src/main/java/org/jboss/weld/bean/AbstractProducerBean.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/bean/AbstractProducerBean.java	2009-12-03 18:08:11 UTC (rev 5210)
+++ core/trunk/impl/src/main/java/org/jboss/weld/bean/AbstractProducerBean.java	2009-12-03 18:12:17 UTC (rev 5211)
@@ -61,7 +61,7 @@
 import org.jboss.weld.metadata.cache.MetaAnnotationStore;
 import org.jboss.weld.util.Beans;
 import org.jboss.weld.util.Names;
-import org.jboss.weld.util.Reflections;
+import org.jboss.weld.util.reflection.Reflections;
 import org.slf4j.cal10n.LocLogger;
 
 /**

Modified: core/trunk/impl/src/main/java/org/jboss/weld/bean/DecoratorImpl.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/bean/DecoratorImpl.java	2009-12-03 18:08:11 UTC (rev 5210)
+++ core/trunk/impl/src/main/java/org/jboss/weld/bean/DecoratorImpl.java	2009-12-03 18:12:17 UTC (rev 5211)
@@ -55,7 +55,7 @@
 import org.jboss.weld.introspector.jlr.WeldConstructorImpl;
 import org.jboss.weld.resources.ClassTransformer;
 import org.jboss.weld.util.Proxies;
-import org.jboss.weld.util.Reflections;
+import org.jboss.weld.util.reflection.Reflections;
 
 public class DecoratorImpl<T> extends ManagedBean<T> implements Decorator<T>
 {

Modified: core/trunk/impl/src/main/java/org/jboss/weld/bean/ManagedBean.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/bean/ManagedBean.java	2009-12-03 18:08:11 UTC (rev 5210)
+++ core/trunk/impl/src/main/java/org/jboss/weld/bean/ManagedBean.java	2009-12-03 18:12:17 UTC (rev 5211)
@@ -64,7 +64,7 @@
 import org.jboss.weld.serialization.spi.helpers.SerializableContextual;
 import org.jboss.weld.util.Beans;
 import org.jboss.weld.util.Names;
-import org.jboss.weld.util.Reflections;
+import org.jboss.weld.util.reflection.Reflections;
 import org.slf4j.cal10n.LocLogger;
 import org.slf4j.ext.XLogger;
 import org.slf4j.ext.XLogger.Level;

Modified: core/trunk/impl/src/main/java/org/jboss/weld/bean/SessionBean.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/bean/SessionBean.java	2009-12-03 18:08:11 UTC (rev 5210)
+++ core/trunk/impl/src/main/java/org/jboss/weld/bean/SessionBean.java	2009-12-03 18:12:17 UTC (rev 5211)
@@ -73,7 +73,7 @@
 import org.jboss.weld.util.Beans;
 import org.jboss.weld.util.Proxies;
 import org.jboss.weld.util.Proxies.TypeInfo;
-import org.jboss.weld.util.Reflections.HierarchyDiscovery;
+import org.jboss.weld.util.reflection.HierarchyDiscovery;
 
 /**
  * An enterprise bean representation

Modified: core/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/CallableMethodHandler.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/CallableMethodHandler.java	2009-12-03 18:08:11 UTC (rev 5210)
+++ core/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/CallableMethodHandler.java	2009-12-03 18:12:17 UTC (rev 5211)
@@ -18,7 +18,7 @@
 import org.jboss.weld.Container;
 import org.jboss.weld.NullInstanceException;
 import org.jboss.weld.bootstrap.api.Service;
-import org.jboss.weld.util.Reflections;
+import org.jboss.weld.util.reflection.Reflections;
 import org.slf4j.cal10n.LocLogger;
 
 public class CallableMethodHandler implements MethodHandler, Serializable

Modified: core/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/ExtensionBean.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/ExtensionBean.java	2009-12-03 18:08:11 UTC (rev 5210)
+++ core/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/ExtensionBean.java	2009-12-03 18:12:17 UTC (rev 5211)
@@ -26,7 +26,7 @@
 
 import org.jboss.weld.BeanManagerImpl;
 import org.jboss.weld.introspector.WeldClass;
-import org.jboss.weld.util.Reflections;
+import org.jboss.weld.util.reflection.Reflections;
 
 /**
  * @author pmuir

Modified: core/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/InstanceImpl.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/InstanceImpl.java	2009-12-03 18:08:11 UTC (rev 5210)
+++ core/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/InstanceImpl.java	2009-12-03 18:12:17 UTC (rev 5211)
@@ -17,7 +17,7 @@
 package org.jboss.weld.bean.builtin;
 
 import static org.jboss.weld.logging.messages.BeanMessage.PROXY_REQUIRED;
-import static org.jboss.weld.util.Reflections.EMPTY_ANNOTATIONS;
+import static org.jboss.weld.util.reflection.Reflections.EMPTY_ANNOTATIONS;
 
 import java.io.ObjectInputStream;
 import java.io.ObjectStreamException;

Modified: core/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/ee/EEResourceProducerField.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/ee/EEResourceProducerField.java	2009-12-03 18:08:11 UTC (rev 5210)
+++ core/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/ee/EEResourceProducerField.java	2009-12-03 18:12:17 UTC (rev 5211)
@@ -40,8 +40,8 @@
 import org.jboss.weld.persistence.PersistenceApiAbstraction;
 import org.jboss.weld.serialization.spi.ContextualStore;
 import org.jboss.weld.util.Proxies;
-import org.jboss.weld.util.Reflections;
 import org.jboss.weld.util.Proxies.TypeInfo;
+import org.jboss.weld.util.reflection.Reflections;
 import org.jboss.weld.ws.WSApiAbstraction;
 
 /**

Modified: core/trunk/impl/src/main/java/org/jboss/weld/bean/interceptor/ClassInterceptionHandlerFactory.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/bean/interceptor/ClassInterceptionHandlerFactory.java	2009-12-03 18:08:11 UTC (rev 5210)
+++ core/trunk/impl/src/main/java/org/jboss/weld/bean/interceptor/ClassInterceptionHandlerFactory.java	2009-12-03 18:12:17 UTC (rev 5211)
@@ -26,7 +26,7 @@
 import org.jboss.interceptor.proxy.DirectClassInterceptionHandler;
 import org.jboss.weld.BeanManagerImpl;
 import org.jboss.weld.DeploymentException;
-import org.jboss.weld.util.Reflections;
+import org.jboss.weld.util.reflection.Reflections;
 
 /**
  * @author Marius Bogoevici

Modified: core/trunk/impl/src/main/java/org/jboss/weld/bean/proxy/AbstractDecoratorMethodHandler.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/bean/proxy/AbstractDecoratorMethodHandler.java	2009-12-03 18:08:11 UTC (rev 5210)
+++ core/trunk/impl/src/main/java/org/jboss/weld/bean/proxy/AbstractDecoratorMethodHandler.java	2009-12-03 18:12:17 UTC (rev 5211)
@@ -26,7 +26,7 @@
 import org.jboss.weld.injection.ParameterInjectionPoint;
 import org.jboss.weld.introspector.WeldClass;
 import org.jboss.weld.introspector.jlr.MethodSignatureImpl;
-import org.jboss.weld.util.Reflections;
+import org.jboss.weld.util.reflection.Reflections;
 
 /**
  * {@link MethodHandler} for Abstract decorators.

Modified: core/trunk/impl/src/main/java/org/jboss/weld/bean/proxy/ClientProxyMethodHandler.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/bean/proxy/ClientProxyMethodHandler.java	2009-12-03 18:08:11 UTC (rev 5210)
+++ core/trunk/impl/src/main/java/org/jboss/weld/bean/proxy/ClientProxyMethodHandler.java	2009-12-03 18:12:17 UTC (rev 5211)
@@ -33,7 +33,7 @@
 import org.jboss.weld.Container;
 import org.jboss.weld.context.WeldCreationalContext;
 import org.jboss.weld.serialization.spi.ContextualStore;
-import org.jboss.weld.util.Reflections;
+import org.jboss.weld.util.reflection.Reflections;
 import org.slf4j.cal10n.LocLogger;
 
 /**

Modified: core/trunk/impl/src/main/java/org/jboss/weld/bean/proxy/DecoratorProxyMethodHandler.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/bean/proxy/DecoratorProxyMethodHandler.java	2009-12-03 18:08:11 UTC (rev 5210)
+++ core/trunk/impl/src/main/java/org/jboss/weld/bean/proxy/DecoratorProxyMethodHandler.java	2009-12-03 18:12:17 UTC (rev 5211)
@@ -17,7 +17,7 @@
 package org.jboss.weld.bean.proxy;
 
 import static org.jboss.weld.logging.messages.BeanMessage.UNEXPECTED_UNWRAPPED_CUSTOM_DECORATOR;
-import static org.jboss.weld.util.Reflections.ensureAccessible;
+import static org.jboss.weld.util.reflection.Reflections.ensureAccessible;
 
 import java.lang.reflect.Method;
 import java.util.List;

Modified: core/trunk/impl/src/main/java/org/jboss/weld/bean/proxy/EnterpriseBeanProxyMethodHandler.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/bean/proxy/EnterpriseBeanProxyMethodHandler.java	2009-12-03 18:08:11 UTC (rev 5210)
+++ core/trunk/impl/src/main/java/org/jboss/weld/bean/proxy/EnterpriseBeanProxyMethodHandler.java	2009-12-03 18:12:17 UTC (rev 5211)
@@ -36,7 +36,7 @@
 import org.jboss.weld.ejb.api.SessionObjectReference;
 import org.jboss.weld.introspector.MethodSignature;
 import org.jboss.weld.introspector.jlr.MethodSignatureImpl;
-import org.jboss.weld.util.Reflections;
+import org.jboss.weld.util.reflection.Reflections;
 import org.slf4j.cal10n.LocLogger;
 
 /**

Modified: core/trunk/impl/src/main/java/org/jboss/weld/bootstrap/AbstractBeanDeployer.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/bootstrap/AbstractBeanDeployer.java	2009-12-03 18:08:11 UTC (rev 5210)
+++ core/trunk/impl/src/main/java/org/jboss/weld/bootstrap/AbstractBeanDeployer.java	2009-12-03 18:12:17 UTC (rev 5211)
@@ -66,7 +66,7 @@
 import org.jboss.weld.jsf.JsfApiAbstraction;
 import org.jboss.weld.persistence.PersistenceApiAbstraction;
 import org.jboss.weld.servlet.ServletApiAbstraction;
-import org.jboss.weld.util.Reflections;
+import org.jboss.weld.util.reflection.Reflections;
 import org.jboss.weld.ws.WSApiAbstraction;
 import org.slf4j.cal10n.LocLogger;
 

Modified: core/trunk/impl/src/main/java/org/jboss/weld/event/EventImpl.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/event/EventImpl.java	2009-12-03 18:08:11 UTC (rev 5210)
+++ core/trunk/impl/src/main/java/org/jboss/weld/event/EventImpl.java	2009-12-03 18:12:17 UTC (rev 5211)
@@ -17,7 +17,7 @@
 package org.jboss.weld.event;
 
 import static org.jboss.weld.logging.messages.EventMessage.PROXY_REQUIRED;
-import static org.jboss.weld.util.Reflections.EMPTY_ANNOTATIONS;
+import static org.jboss.weld.util.reflection.Reflections.EMPTY_ANNOTATIONS;
 
 import java.io.ObjectInputStream;
 import java.io.ObjectStreamException;

Modified: core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/AbstractWeldAnnotated.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/AbstractWeldAnnotated.java	2009-12-03 18:08:11 UTC (rev 5210)
+++ core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/AbstractWeldAnnotated.java	2009-12-03 18:12:17 UTC (rev 5211)
@@ -28,8 +28,9 @@
 import org.jboss.weld.introspector.AnnotationStore;
 import org.jboss.weld.introspector.WeldAnnotated;
 import org.jboss.weld.util.Proxies;
-import org.jboss.weld.util.Reflections;
 import org.jboss.weld.util.collections.Arrays2;
+import org.jboss.weld.util.reflection.HierarchyDiscovery;
+import org.jboss.weld.util.reflection.Reflections;
 
 /**
  * Represents functionality common for all annotated items, mainly different
@@ -93,7 +94,7 @@
       this.interfaceOnlyFlattenedTypes = new HashSet<Type>();
       for (Type t : rawType.getGenericInterfaces())
       {
-         interfaceOnlyFlattenedTypes.addAll(new Reflections.HierarchyDiscovery(t).getTypeClosure());
+         interfaceOnlyFlattenedTypes.addAll(new HierarchyDiscovery(t).getTypeClosure());
       }
       this.typeClosureAsMap = Reflections.buildTypeMap(typeClosure);
       this.typeClosureAsSet = typeClosure;

Modified: core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/AbstractWeldMember.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/AbstractWeldMember.java	2009-12-03 18:08:11 UTC (rev 5210)
+++ core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/AbstractWeldMember.java	2009-12-03 18:12:17 UTC (rev 5211)
@@ -25,7 +25,7 @@
 import org.jboss.weld.introspector.ForwardingWeldMember;
 import org.jboss.weld.introspector.WeldClass;
 import org.jboss.weld.introspector.WeldMember;
-import org.jboss.weld.util.Reflections;
+import org.jboss.weld.util.reflection.Reflections;
 
 /**
  * Represents an abstract annotated memeber (field, method or constructor)

Modified: core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WeldAnnotationImpl.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WeldAnnotationImpl.java	2009-12-03 18:08:11 UTC (rev 5210)
+++ core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WeldAnnotationImpl.java	2009-12-03 18:12:17 UTC (rev 5211)
@@ -31,7 +31,7 @@
 import org.jboss.weld.introspector.WeldMethod;
 import org.jboss.weld.resources.ClassTransformer;
 import org.jboss.weld.util.Names;
-import org.jboss.weld.util.Reflections;
+import org.jboss.weld.util.reflection.HierarchyDiscovery;
 
 import com.google.common.base.Supplier;
 import com.google.common.collect.Multimaps;
@@ -75,7 +75,7 @@
     */
    protected WeldAnnotationImpl(Class<T> annotationType, ClassTransformer classTransformer)
    {
-      super(annotationType, annotationType, null, new Reflections.HierarchyDiscovery(annotationType).getTypeClosure(), AnnotationStore.of(annotationType, classTransformer.getTypeStore().get(annotationType), classTransformer.getTypeStore().get(annotationType), classTransformer.getTypeStore()), classTransformer);
+      super(annotationType, annotationType, null, new HierarchyDiscovery(annotationType).getTypeClosure(), AnnotationStore.of(annotationType, classTransformer.getTypeStore().get(annotationType), classTransformer.getTypeStore().get(annotationType), classTransformer.getTypeStore()), classTransformer);
       this.clazz = annotationType;
       this.toString = "class " + Names.classToString(getDelegate());
       members = new HashSet<WeldMethod<?, ?>>();

Modified: core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WeldClassImpl.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WeldClassImpl.java	2009-12-03 18:08:11 UTC (rev 5210)
+++ core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WeldClassImpl.java	2009-12-03 18:12:17 UTC (rev 5211)
@@ -46,7 +46,8 @@
 import org.jboss.weld.introspector.WeldMethod;
 import org.jboss.weld.resources.ClassTransformer;
 import org.jboss.weld.util.Names;
-import org.jboss.weld.util.Reflections;
+import org.jboss.weld.util.reflection.HierarchyDiscovery;
+import org.jboss.weld.util.reflection.Reflections;
 
 import com.google.common.base.Supplier;
 import com.google.common.collect.Multimaps;
@@ -130,7 +131,7 @@
    public static <T> WeldClass<T> of(Class<T> clazz, ClassTransformer classTransformer)
    {
       AnnotationStore annotationStore = AnnotationStore.of(clazz.getAnnotations(), clazz.getDeclaredAnnotations(), classTransformer.getTypeStore());
-      return new WeldClassImpl<T>(clazz, clazz, null, new Reflections.HierarchyDiscovery(clazz).getTypeClosure(), annotationStore, classTransformer);
+      return new WeldClassImpl<T>(clazz, clazz, null, new HierarchyDiscovery(clazz).getTypeClosure(), annotationStore, classTransformer);
    }
 
    public static <T> WeldClass<T> of(AnnotatedType<T> annotatedType, ClassTransformer classTransformer)
@@ -142,7 +143,7 @@
    public static <T> WeldClass<T> of(Class<T> rawType, Type type, ClassTransformer classTransformer)
    {
       AnnotationStore annotationStore = AnnotationStore.of(rawType.getAnnotations(), rawType.getDeclaredAnnotations(), classTransformer.getTypeStore());
-      return new WeldClassImpl<T>(rawType, type, null, new Reflections.HierarchyDiscovery(type).getTypeClosure(), annotationStore, classTransformer);
+      return new WeldClassImpl<T>(rawType, type, null, new HierarchyDiscovery(type).getTypeClosure(), annotationStore, classTransformer);
    }
 
    protected WeldClassImpl(Class<T> rawType, Type type, AnnotatedType<T> annotatedType, Set<Type> typeClosure, AnnotationStore annotationStore, ClassTransformer classTransformer)

Modified: core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WeldConstructorImpl.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WeldConstructorImpl.java	2009-12-03 18:08:11 UTC (rev 5210)
+++ core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WeldConstructorImpl.java	2009-12-03 18:12:17 UTC (rev 5211)
@@ -16,7 +16,7 @@
  */
 package org.jboss.weld.introspector.jlr;
 
-import static org.jboss.weld.util.Reflections.ensureAccessible;
+import static org.jboss.weld.util.reflection.Reflections.ensureAccessible;
 
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Constructor;
@@ -40,7 +40,8 @@
 import org.jboss.weld.introspector.WeldConstructor;
 import org.jboss.weld.introspector.WeldParameter;
 import org.jboss.weld.resources.ClassTransformer;
-import org.jboss.weld.util.Reflections;
+import org.jboss.weld.util.reflection.HierarchyDiscovery;
+import org.jboss.weld.util.reflection.Reflections;
 
 import com.google.common.base.Supplier;
 import com.google.common.collect.ListMultimap;
@@ -74,7 +75,7 @@
    public static <T> WeldConstructor<T> of(Constructor<T> constructor, WeldClass<T> declaringClass, ClassTransformer classTransformer)
    {
       AnnotationStore annotationStore = AnnotationStore.of(constructor, classTransformer.getTypeStore());
-      return new WeldConstructorImpl<T>(ensureAccessible(constructor), constructor.getDeclaringClass(), constructor.getDeclaringClass(), null, new Reflections.HierarchyDiscovery(constructor.getDeclaringClass()).getTypeClosure(), annotationStore, declaringClass, classTransformer);
+      return new WeldConstructorImpl<T>(ensureAccessible(constructor), constructor.getDeclaringClass(), constructor.getDeclaringClass(), null, new HierarchyDiscovery(constructor.getDeclaringClass()).getTypeClosure(), annotationStore, declaringClass, classTransformer);
    }
    
    public static <T> WeldConstructor<T> of(AnnotatedConstructor<T> annotatedConstructor,  WeldClass<T> declaringClass, ClassTransformer classTransformer)

Modified: core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WeldFieldImpl.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WeldFieldImpl.java	2009-12-03 18:08:11 UTC (rev 5210)
+++ core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WeldFieldImpl.java	2009-12-03 18:12:17 UTC (rev 5211)
@@ -16,7 +16,7 @@
  */
 package org.jboss.weld.introspector.jlr;
 
-import static org.jboss.weld.util.Reflections.ensureAccessible;
+import static org.jboss.weld.util.reflection.Reflections.ensureAccessible;
 
 import java.lang.reflect.Field;
 import java.lang.reflect.Type;
@@ -28,7 +28,8 @@
 import org.jboss.weld.introspector.WeldClass;
 import org.jboss.weld.introspector.WeldField;
 import org.jboss.weld.resources.ClassTransformer;
-import org.jboss.weld.util.Reflections;
+import org.jboss.weld.util.reflection.HierarchyDiscovery;
+import org.jboss.weld.util.reflection.Reflections;
 
 /**
  * Represents an annotated field
@@ -51,7 +52,7 @@
    public static <T, X> WeldFieldImpl<T, X> of(Field field, WeldClass<X> declaringClass, ClassTransformer classTransformer)
    {
       AnnotationStore annotationStore = AnnotationStore.of(field, classTransformer.getTypeStore());
-      return new WeldFieldImpl<T, X>(ensureAccessible(field), (Class<T>) field.getType(), field.getGenericType(), new Reflections.HierarchyDiscovery(field.getGenericType()).getTypeClosure(),  annotationStore, declaringClass, classTransformer);
+      return new WeldFieldImpl<T, X>(ensureAccessible(field), (Class<T>) field.getType(), field.getGenericType(), new HierarchyDiscovery(field.getGenericType()).getTypeClosure(),  annotationStore, declaringClass, classTransformer);
    }
    
    public static <T, X> WeldFieldImpl<T, X> of(AnnotatedField<? super X> annotatedField, WeldClass<X> declaringClass, ClassTransformer classTransformer)

Modified: core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WeldMethodImpl.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WeldMethodImpl.java	2009-12-03 18:08:11 UTC (rev 5210)
+++ core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WeldMethodImpl.java	2009-12-03 18:12:17 UTC (rev 5211)
@@ -16,7 +16,7 @@
  */
 package org.jboss.weld.introspector.jlr;
 
-import static org.jboss.weld.util.Reflections.ensureAccessible;
+import static org.jboss.weld.util.reflection.Reflections.ensureAccessible;
 
 import java.lang.annotation.Annotation;
 import java.lang.reflect.InvocationTargetException;
@@ -40,7 +40,8 @@
 import org.jboss.weld.introspector.WeldMethod;
 import org.jboss.weld.introspector.WeldParameter;
 import org.jboss.weld.resources.ClassTransformer;
-import org.jboss.weld.util.Reflections;
+import org.jboss.weld.util.reflection.HierarchyDiscovery;
+import org.jboss.weld.util.reflection.Reflections;
 
 import com.google.common.base.Supplier;
 import com.google.common.collect.ListMultimap;
@@ -78,7 +79,7 @@
    public static <T, X> WeldMethodImpl<T, X> of(Method method, WeldClass<X> declaringClass, ClassTransformer classTransformer)
    {
       AnnotationStore annotationStore = AnnotationStore.of(method, classTransformer.getTypeStore());
-      return new WeldMethodImpl<T, X>(ensureAccessible(method), (Class<T>) method.getReturnType(), method.getGenericReturnType(), new Reflections.HierarchyDiscovery(method.getGenericReturnType()).getTypeClosure(), null, annotationStore, declaringClass, classTransformer);
+      return new WeldMethodImpl<T, X>(ensureAccessible(method), (Class<T>) method.getReturnType(), method.getGenericReturnType(), new HierarchyDiscovery(method.getGenericReturnType()).getTypeClosure(), null, annotationStore, declaringClass, classTransformer);
    }
    
    public static <T, X> WeldMethodImpl<T, X> of(AnnotatedMethod<T> method, WeldClass<X> declaringClass, ClassTransformer classTransformer)

Modified: core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WeldParameterImpl.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WeldParameterImpl.java	2009-12-03 18:08:11 UTC (rev 5210)
+++ core/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WeldParameterImpl.java	2009-12-03 18:12:17 UTC (rev 5211)
@@ -29,7 +29,7 @@
 import org.jboss.weld.introspector.WeldCallable;
 import org.jboss.weld.introspector.WeldParameter;
 import org.jboss.weld.resources.ClassTransformer;
-import org.jboss.weld.util.Reflections;
+import org.jboss.weld.util.reflection.HierarchyDiscovery;
 
 /**
  * Represents a parameter
@@ -60,12 +60,12 @@
    
    public static <T, X> WeldParameter<T, X> of(Annotation[] annotations, Class<T> rawType, Type type, WeldCallable<?, X, ?> declaringMember, int position, ClassTransformer classTransformer)
    {
-      return new WeldParameterImpl<T, X>(annotations, rawType, type, new Reflections.HierarchyDiscovery(type).getTypeClosure(), declaringMember, position, classTransformer);
+      return new WeldParameterImpl<T, X>(annotations, rawType, type, new HierarchyDiscovery(type).getTypeClosure(), declaringMember, position, classTransformer);
    }
    
    public static <T, X> WeldParameter<T, X> of(Set<Annotation> annotations, Class<T> rawType, Type type, WeldCallable<?, X, ?> declaringMember, int position, ClassTransformer classTransformer)
    {
-      return new WeldParameterImpl<T, X>(annotations.toArray(EMPTY_ANNOTATION_ARRAY), rawType, type, new Reflections.HierarchyDiscovery(type).getTypeClosure(), declaringMember, position, classTransformer);
+      return new WeldParameterImpl<T, X>(annotations.toArray(EMPTY_ANNOTATION_ARRAY), rawType, type, new HierarchyDiscovery(type).getTypeClosure(), declaringMember, position, classTransformer);
    }
 
    /**

Modified: core/trunk/impl/src/main/java/org/jboss/weld/jsf/JsfHelper.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/jsf/JsfHelper.java	2009-12-03 18:08:11 UTC (rev 5210)
+++ core/trunk/impl/src/main/java/org/jboss/weld/jsf/JsfHelper.java	2009-12-03 18:12:17 UTC (rev 5211)
@@ -34,7 +34,7 @@
 import org.jboss.weld.ForbiddenStateException;
 import org.jboss.weld.conversation.ConversationIdName;
 import org.jboss.weld.servlet.ServletHelper;
-import org.jboss.weld.util.Reflections;
+import org.jboss.weld.util.reflection.Reflections;
 import org.slf4j.cal10n.LocLogger;
 
 /**

Modified: core/trunk/impl/src/main/java/org/jboss/weld/metadata/cache/BindingTypeModel.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/metadata/cache/BindingTypeModel.java	2009-12-03 18:08:11 UTC (rev 5210)
+++ core/trunk/impl/src/main/java/org/jboss/weld/metadata/cache/BindingTypeModel.java	2009-12-03 18:12:17 UTC (rev 5211)
@@ -30,8 +30,8 @@
 import org.jboss.weld.WeldException;
 import org.jboss.weld.introspector.WeldMethod;
 import org.jboss.weld.resources.ClassTransformer;
-import org.jboss.weld.util.Reflections;
 import org.jboss.weld.util.collections.Arrays2;
+import org.jboss.weld.util.reflection.Reflections;
 import org.slf4j.cal10n.LocLogger;
 
 /**

Modified: core/trunk/impl/src/main/java/org/jboss/weld/metadata/cache/InterceptorBindingModel.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/metadata/cache/InterceptorBindingModel.java	2009-12-03 18:08:11 UTC (rev 5210)
+++ core/trunk/impl/src/main/java/org/jboss/weld/metadata/cache/InterceptorBindingModel.java	2009-12-03 18:12:17 UTC (rev 5211)
@@ -37,8 +37,8 @@
 import org.jboss.weld.WeldException;
 import org.jboss.weld.introspector.WeldMethod;
 import org.jboss.weld.resources.ClassTransformer;
-import org.jboss.weld.util.Reflections;
 import org.jboss.weld.util.collections.Arrays2;
+import org.jboss.weld.util.reflection.Reflections;
 import org.slf4j.cal10n.LocLogger;
 
 /**

Modified: core/trunk/impl/src/main/java/org/jboss/weld/resolution/NewResolvableTransformer.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/resolution/NewResolvableTransformer.java	2009-12-03 18:08:11 UTC (rev 5210)
+++ core/trunk/impl/src/main/java/org/jboss/weld/resolution/NewResolvableTransformer.java	2009-12-03 18:12:17 UTC (rev 5211)
@@ -24,7 +24,7 @@
 import javax.enterprise.inject.New;
 
 import org.jboss.weld.literal.NewLiteral;
-import org.jboss.weld.util.Reflections;
+import org.jboss.weld.util.reflection.HierarchyDiscovery;
 
 /**
  * @author pmuir
@@ -86,7 +86,7 @@
          else
          {
             final Class<?> javaClass = originalNewAnnotation.value();
-            final Set<Type> typeClosure = new Reflections.HierarchyDiscovery(javaClass).getTypeClosure();
+            final Set<Type> typeClosure = new HierarchyDiscovery(javaClass).getTypeClosure();
             return new ForwardingResolvable()
             {
                

Modified: core/trunk/impl/src/main/java/org/jboss/weld/resolution/ResolvableFactory.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/resolution/ResolvableFactory.java	2009-12-03 18:08:11 UTC (rev 5210)
+++ core/trunk/impl/src/main/java/org/jboss/weld/resolution/ResolvableFactory.java	2009-12-03 18:12:17 UTC (rev 5211)
@@ -28,7 +28,7 @@
 import org.jboss.weld.bean.AbstractClassBean;
 import org.jboss.weld.introspector.WeldAnnotated;
 import org.jboss.weld.literal.DefaultLiteral;
-import org.jboss.weld.util.Reflections;
+import org.jboss.weld.util.reflection.Reflections;
 
 import javax.enterprise.inject.spi.InterceptionType;
 

Modified: core/trunk/impl/src/main/java/org/jboss/weld/resolution/ResolvableWeldClass.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/resolution/ResolvableWeldClass.java	2009-12-03 18:08:11 UTC (rev 5210)
+++ core/trunk/impl/src/main/java/org/jboss/weld/resolution/ResolvableWeldClass.java	2009-12-03 18:12:17 UTC (rev 5211)
@@ -44,7 +44,7 @@
 import org.jboss.weld.introspector.jlr.AbstractWeldAnnotated;
 import org.jboss.weld.metadata.TypeStore;
 import org.jboss.weld.util.Names;
-import org.jboss.weld.util.Reflections;
+import org.jboss.weld.util.reflection.Reflections;
 
 public class ResolvableWeldClass<T> extends AbstractWeldAnnotated<T, Class<T>> implements Resolvable
 {

Modified: core/trunk/impl/src/main/java/org/jboss/weld/resolution/TypeSafeBeanResolver.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/resolution/TypeSafeBeanResolver.java	2009-12-03 18:08:11 UTC (rev 5210)
+++ core/trunk/impl/src/main/java/org/jboss/weld/resolution/TypeSafeBeanResolver.java	2009-12-03 18:12:17 UTC (rev 5211)
@@ -27,8 +27,8 @@
 import org.jboss.weld.bean.builtin.EventBean;
 import org.jboss.weld.bean.builtin.InstanceBean;
 import org.jboss.weld.util.Beans;
-import org.jboss.weld.util.Reflections;
 import org.jboss.weld.util.collections.ConcurrentCache;
+import org.jboss.weld.util.reflection.Reflections;
 
 /**
  * @author pmuir

Modified: core/trunk/impl/src/main/java/org/jboss/weld/resolution/TypeSafeDecoratorResolver.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/resolution/TypeSafeDecoratorResolver.java	2009-12-03 18:08:11 UTC (rev 5210)
+++ core/trunk/impl/src/main/java/org/jboss/weld/resolution/TypeSafeDecoratorResolver.java	2009-12-03 18:12:17 UTC (rev 5211)
@@ -27,7 +27,7 @@
 import org.jboss.weld.BeanManagerImpl;
 import org.jboss.weld.bean.DecoratorImpl;
 import org.jboss.weld.util.Beans;
-import org.jboss.weld.util.Reflections;
+import org.jboss.weld.util.reflection.Reflections;
 
 /**
  * @author pmuir

Modified: core/trunk/impl/src/main/java/org/jboss/weld/resolution/TypeSafeDisposerResolver.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/resolution/TypeSafeDisposerResolver.java	2009-12-03 18:08:11 UTC (rev 5210)
+++ core/trunk/impl/src/main/java/org/jboss/weld/resolution/TypeSafeDisposerResolver.java	2009-12-03 18:12:17 UTC (rev 5211)
@@ -22,7 +22,7 @@
 import org.jboss.weld.BeanManagerImpl;
 import org.jboss.weld.bean.DisposalMethod;
 import org.jboss.weld.util.Beans;
-import org.jboss.weld.util.Reflections;
+import org.jboss.weld.util.reflection.Reflections;
 
 /**
  * @author pmuir

Modified: core/trunk/impl/src/main/java/org/jboss/weld/resolution/TypeSafeObserverResolver.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/resolution/TypeSafeObserverResolver.java	2009-12-03 18:08:11 UTC (rev 5210)
+++ core/trunk/impl/src/main/java/org/jboss/weld/resolution/TypeSafeObserverResolver.java	2009-12-03 18:12:17 UTC (rev 5211)
@@ -23,7 +23,7 @@
 
 import org.jboss.weld.BeanManagerImpl;
 import org.jboss.weld.util.Beans;
-import org.jboss.weld.util.Reflections;
+import org.jboss.weld.util.reflection.Reflections;
 
 /**
  * @author pmuir

Modified: core/trunk/impl/src/main/java/org/jboss/weld/util/Beans.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/util/Beans.java	2009-12-03 18:08:11 UTC (rev 5210)
+++ core/trunk/impl/src/main/java/org/jboss/weld/util/Beans.java	2009-12-03 18:12:17 UTC (rev 5211)
@@ -94,6 +94,7 @@
 import org.jboss.weld.metadata.cache.MergedStereotypes;
 import org.jboss.weld.metadata.cache.MetaAnnotationStore;
 import org.jboss.weld.persistence.PersistenceApiAbstraction;
+import org.jboss.weld.util.reflection.Reflections;
 import org.slf4j.cal10n.LocLogger;
 
 import com.google.common.base.Supplier;

Modified: core/trunk/impl/src/main/java/org/jboss/weld/util/Observers.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/util/Observers.java	2009-12-03 18:08:11 UTC (rev 5210)
+++ core/trunk/impl/src/main/java/org/jboss/weld/util/Observers.java	2009-12-03 18:12:17 UTC (rev 5211)
@@ -24,6 +24,7 @@
 import java.lang.reflect.TypeVariable;
 
 import org.jboss.weld.ForbiddenArgumentException;
+import org.jboss.weld.util.reflection.HierarchyDiscovery;
 
 /**
  * @author pmuir
@@ -35,7 +36,7 @@
    public static void checkEventObjectType(Type eventType)
    {
       Type[] types;
-      Type resolvedType = new Reflections.HierarchyDiscovery(eventType).getResolvedType();
+      Type resolvedType = new HierarchyDiscovery(eventType).getResolvedType();
       if (resolvedType instanceof Class<?>)
       {
          types = new Type[0];

Modified: core/trunk/impl/src/main/java/org/jboss/weld/util/Proxies.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/util/Proxies.java	2009-12-03 18:08:11 UTC (rev 5210)
+++ core/trunk/impl/src/main/java/org/jboss/weld/util/Proxies.java	2009-12-03 18:12:17 UTC (rev 5211)
@@ -32,6 +32,7 @@
 import javassist.util.proxy.ProxyObject;
 
 import org.jboss.weld.ForbiddenArgumentException;
+import org.jboss.weld.util.reflection.Reflections;
 
 /**
  * Utilties for working with Javassist proxies

Deleted: core/trunk/impl/src/main/java/org/jboss/weld/util/Reflections.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/util/Reflections.java	2009-12-03 18:08:11 UTC (rev 5210)
+++ core/trunk/impl/src/main/java/org/jboss/weld/util/Reflections.java	2009-12-03 18:12:17 UTC (rev 5211)
@@ -1,1064 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2008, Red Hat Middleware LLC, and individual contributors
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * http://www.apache.org/licenses/LICENSE-2.0
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jboss.weld.util;
-
-import static org.jboss.weld.logging.Category.UTIL;
-import static org.jboss.weld.logging.LoggerFactory.loggerFactory;
-import static org.jboss.weld.logging.messages.UtilMessage.ACCESS_ERROR_ON_CONSTRUCTOR;
-import static org.jboss.weld.logging.messages.UtilMessage.ACCESS_ERROR_ON_FIELD;
-import static org.jboss.weld.logging.messages.UtilMessage.ANNOTATION_VALUES_INACCESSIBLE;
-import static org.jboss.weld.logging.messages.UtilMessage.NO_SUCH_METHOD;
-import static org.jboss.weld.logging.messages.UtilMessage.SECURITY_EXCEPTION_SCANNING;
-
-import java.beans.Introspector;
-import java.io.Serializable;
-import java.lang.annotation.Annotation;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Field;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Member;
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.lang.reflect.ParameterizedType;
-import java.lang.reflect.Type;
-import java.lang.reflect.TypeVariable;
-import java.lang.reflect.WildcardType;
-import java.security.AccessControlException;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Set;
-
-import javax.inject.Qualifier;
-
-import org.jboss.weld.DeploymentException;
-import org.jboss.weld.ForbiddenArgumentException;
-import org.jboss.weld.WeldException;
-import org.jboss.weld.util.reflection.ParameterizedTypeImpl;
-import org.slf4j.cal10n.LocLogger;
-import org.slf4j.ext.XLogger;
-import org.slf4j.ext.XLogger.Level;
-
-import ch.qos.cal10n.IMessageConveyor;
-
-import com.google.common.collect.BiMap;
-import com.google.common.collect.HashBiMap;
-
-/**
- * Utility class for static reflection-type operations
- * 
- * @author Pete Muir
- * 
- */
-public class Reflections
-{
-
-   private static final LocLogger log = loggerFactory().getLogger(UTIL);
-   private static final XLogger xLog = loggerFactory().getXLogger(UTIL);
-
-   // Exception messages
-   private static final IMessageConveyor messageConveyer = loggerFactory().getMessageConveyor();
-
-   public static final Type[] EMPTY_TYPES = {};
-
-   public static final Annotation[] EMPTY_ANNOTATIONS = {};
-
-   public static class HierarchyDiscovery
-   {
-
-      private final Type type;
-
-      private BiMap<Type, Class<?>> types;
-
-      public HierarchyDiscovery(Type type)
-      {
-         this.type = type;
-      }
-
-      protected void add(Class<?> clazz, Type type)
-      {
-         types.forcePut(type, clazz);
-      }
-
-      public Set<Type> getTypeClosure()
-      {
-         if (types == null)
-         {
-            init();
-         }
-         return types.keySet();
-      }
-      
-      public Map<Class<?>, Type> getTypeMap()
-      {
-         if (types == null)
-         {
-            init();
-         }
-         return types.inverse();
-      }
-      
-      private void init()
-      {
-         this.types = HashBiMap.create();
-         discoverTypes(type);
-      }
-
-      public Type getResolvedType()
-      {
-         if (type instanceof Class<?>)
-         {
-            Class<?> clazz = (Class<?>) type;
-            return resolveType(clazz);
-         }
-         return type;
-      }
-
-      private void discoverTypes(Type type)
-      {
-         if (type != null)
-         {
-            if (type instanceof Class<?>)
-            {
-               Class<?> clazz = (Class<?>) type;
-               add(clazz, resolveType(clazz));
-               discoverFromClass(clazz);
-            }
-            else
-            {
-               Class<?> clazz = null;
-               if (type instanceof ParameterizedType)
-               {
-                  Type rawType = ((ParameterizedType) type).getRawType();
-                  if (rawType instanceof Class<?>)
-                  {
-                     discoverFromClass((Class<?>) rawType);
-                     clazz = (Class<?>) rawType;
-                  }
-               }
-               add(clazz, type);
-            }
-         }
-      }
-
-      private Type resolveType(Class<?> clazz)
-      {
-         if (clazz.getTypeParameters().length > 0)
-         {
-            TypeVariable<?>[] actualTypeParameters = clazz.getTypeParameters();
-            ParameterizedType parameterizedType = new ParameterizedTypeImpl(clazz, actualTypeParameters, clazz.getDeclaringClass());
-            return parameterizedType;
-         }
-         else
-         {
-            return clazz;
-         }
-      }
-
-      @SuppressWarnings("unchecked")
-      private void discoverFromClass(Class<?> clazz)
-      {
-         try
-         {
-            discoverTypes(resolveType(type, clazz.getGenericSuperclass()));
-            for (Type c : clazz.getGenericInterfaces())
-            {
-               discoverTypes(resolveType(type, c));
-            }
-         }
-         catch (AccessControlException e)
-         {
-            // TODO Hmm, is this a hack?
-            log.trace(SECURITY_EXCEPTION_SCANNING, clazz);
-            xLog.throwing(Level.TRACE, e);
-         }
-      }
-
-      /**
-       * Gets the actual types by resolving TypeParameters.
-       * 
-       * @param beanType
-       * @param type
-       * @return actual type
-       */
-      private Type resolveType(Type beanType, Type type)
-      {
-         if (type instanceof ParameterizedType)
-         {
-            if (beanType instanceof ParameterizedType)
-            {
-               return resolveParameterizedType((ParameterizedType) beanType, (ParameterizedType) type);
-            }
-            if (beanType instanceof Class<?>)
-            {
-               return resolveType(((Class<?>) beanType).getGenericSuperclass(), type);
-            }
-         }
-
-         if (type instanceof TypeVariable<?>)
-         {
-            if (beanType instanceof ParameterizedType)
-            {
-               return resolveTypeParameter((ParameterizedType) beanType, (TypeVariable<?>) type);
-            }
-            if (beanType instanceof Class<?>)
-            {
-               return resolveType(((Class<?>) beanType).getGenericSuperclass(), type);
-            }
-         }
-         return type;
-      }
-
-      private Type resolveParameterizedType(ParameterizedType beanType, ParameterizedType parameterizedType)
-      {
-         Type rawType = parameterizedType.getRawType();
-         Type[] actualTypes = parameterizedType.getActualTypeArguments();
-
-         Type resolvedRawType = resolveType(beanType, rawType);
-         Type[] resolvedActualTypes = new Type[actualTypes.length];
-
-         for (int i = 0; i < actualTypes.length; i++)
-         {
-            resolvedActualTypes[i] = resolveType(beanType, actualTypes[i]);
-         }
-         // reconstruct ParameterizedType by types resolved TypeVariable.
-         return new ParameterizedTypeImpl(resolvedRawType, resolvedActualTypes, parameterizedType.getOwnerType());
-      }
-
-      private Type resolveTypeParameter(ParameterizedType beanType, TypeVariable<?> typeVariable)
-      {
-         // step1. raw type
-         Class<?> actualType = (Class<?>) beanType.getRawType();
-         TypeVariable<?>[] typeVariables = actualType.getTypeParameters();
-         Type[] actualTypes = beanType.getActualTypeArguments();
-         for (int i = 0; i < typeVariables.length; i++)
-         {
-            if (typeVariables[i].equals(typeVariable) && !actualTypes[i].equals(typeVariable))
-            {
-               return resolveType(type, actualTypes[i]);
-            }
-         }
-
-         // step2. generic super class
-         Type genericSuperType = actualType.getGenericSuperclass();
-         Type type = resolveType(genericSuperType, typeVariable);
-         if (!(type instanceof TypeVariable<?>))
-         {
-            return type;
-         }
-
-         // step3. generic interfaces
-         for (Type interfaceType : actualType.getGenericInterfaces())
-         {
-            Type resolvedType = resolveType(interfaceType, typeVariable);
-            if (!(resolvedType instanceof TypeVariable<?>))
-            {
-               return resolvedType;
-            }
-         }
-
-         // don't resolve type variable
-         return typeVariable;
-      }
-
-   }
-   
-   public static Map<Class<?>, Type> buildTypeMap(Set<Type> types)
-   {
-      Map<Class<?>, Type> map = new HashMap<Class<?>, Type>();
-      for (Type type : types)
-      {
-         if (type instanceof Class<?>)
-         {
-            map.put((Class<?>) type, type);
-         }
-         else if (type instanceof ParameterizedType)
-         {
-            if (((ParameterizedType) type).getRawType() instanceof Class<?>)
-            {
-               map.put((Class<?>) ((ParameterizedType) type).getRawType(), type);
-            }
-         }
-      }
-      return map;
-   }
-
-   /**
-    * Gets the property name from a getter method
-    * 
-    * @param method The getter method
-    * @return The name of the property. Returns null if method wasn't JavaBean
-    *         getter-styled
-    */
-   public static String getPropertyName(Method method)
-   {
-      String methodName = method.getName();
-      if (methodName.matches("^(get).*") && method.getParameterTypes().length == 0)
-      {
-         return Introspector.decapitalize(methodName.substring(3));
-      }
-      else if (methodName.matches("^(is).*") && method.getParameterTypes().length == 0)
-      {
-         return Introspector.decapitalize(methodName.substring(2));
-      }
-      else
-      {
-         return null;
-      }
-
-   }
-
-   /**
-    * Checks if class is final
-    * 
-    * @param clazz The class to check
-    * @return True if final, false otherwise
-    */
-   public static boolean isFinal(Class<?> clazz)
-   {
-      return Modifier.isFinal(clazz.getModifiers());
-   }
-   
-   public static int getNesting(Class<?> clazz)
-   {
-      if (clazz.isMemberClass() && !isStatic(clazz))
-      {
-         return 1 + getNesting(clazz.getDeclaringClass());
-      }
-      else
-      {
-         return 0;
-      }
-   }
-
-   /**
-    * Checks if member is final
-    * 
-    * @param member The member to check
-    * @return True if final, false otherwise
-    */
-   public static boolean isFinal(Member member)
-   {
-      return Modifier.isFinal(member.getModifiers());
-   }
-
-   /**
-    * Checks if type or member is final
-    * 
-    * @param type Type or member
-    * @return True if final, false otherwise
-    */
-   public static boolean isTypeOrAnyMethodFinal(Class<?> type)
-   {
-      if (isFinal(type))
-      {
-         return true;
-      }
-      for (Method method : type.getDeclaredMethods())
-      {
-         if (isFinal(method))
-         {
-            return true;
-         }
-      }
-      return false;
-   }
-
-   /**
-    * Checks if type is primitive
-    * 
-    * @param type Type to check
-    * @return True if primitive, false otherwise
-    */
-   public static boolean isPrimitive(Class<?> type)
-   {
-      return type.isPrimitive();
-   }
-
-   public static boolean isPackagePrivate(int mod)
-   {
-      return !(Modifier.isPrivate(mod) || Modifier.isProtected(mod) || Modifier.isPublic(mod));
-   }
-
-   /**
-    * Checks if type is static
-    * 
-    * @param type Type to check
-    * @return True if static, false otherwise
-    */
-   public static boolean isStatic(Class<?> type)
-   {
-      return Modifier.isStatic(type.getModifiers());
-   }
-
-   /**
-    * Checks if member is static
-    * 
-    * @param member Member to check
-    * @return True if static, false otherwise
-    */
-   public static boolean isStatic(Member member)
-   {
-      return Modifier.isStatic(member.getModifiers());
-   }
-
-   public static boolean isTransient(Member member)
-   {
-      return Modifier.isTransient(member.getModifiers());
-   }
-
-   /**
-    * Checks if clazz is abstract
-    * 
-    * @param clazz Class to check
-    * @return True if abstract, false otherwise
-    */
-   public static boolean isAbstract(Class<?> clazz)
-   {
-      return Modifier.isAbstract(clazz.getModifiers());
-   }
-
-   /**
-    * Checks if a method is abstract
-    *
-    * @param method
-    * @return
-    */
-   public static boolean isAbstract(Method method)
-   {
-      return Modifier.isAbstract(method.getModifiers());
-   }
-
-   /**
-    * Gets a constructor with matching parameter types
-    * 
-    * @param <T> The type
-    * @param clazz The class
-    * @param parameterTypes The parameter types
-    * @return The matching constructor. Null is returned if none is found
-    */
-   public static <T> Constructor<T> getDeclaredConstructor(Class<T> clazz, Class<?>... parameterTypes)
-   {
-      try
-      {
-         return clazz.getDeclaredConstructor(parameterTypes);
-      }
-      catch (NoSuchMethodException e)
-      {
-         return null;
-      }
-      catch (Exception e)
-      {
-         throw new WeldException(ACCESS_ERROR_ON_CONSTRUCTOR, e, clazz);
-      }
-   }
-
-   /**
-    * Gets the actual type arguments of a class
-    * 
-    * @param clazz The class to examine
-    * @return The type arguments
-    */
-   public static Type[] getActualTypeArguments(Class<?> clazz)
-   {
-      Type type = new HierarchyDiscovery(clazz).getResolvedType();
-      if (type instanceof ParameterizedType)
-      {
-         return ((ParameterizedType) type).getActualTypeArguments();
-      }
-      else
-      {
-         return EMPTY_TYPES;
-      }
-   }
-
-   /**
-    * Checks if raw type is array type
-    * 
-    * @param rawType The raw type to check
-    * @return True if array, false otherwise
-    */
-   public static boolean isArrayType(Class<?> rawType)
-   {
-      return rawType.isArray();
-   }
-
-   /**
-    * Checks if type is parameterized type
-    * 
-    * @param type The type to check
-    * @return True if parameterized, false otherwise
-    */
-   public static boolean isParameterizedType(Class<?> type)
-   {
-      return type.getTypeParameters().length > 0;
-   }
-
-   public static boolean isParamerterizedTypeWithWildcard(Class<?> type)
-   {
-      if (isParameterizedType(type))
-      {
-         return containsWildcards(type.getTypeParameters());
-      }
-      else
-      {
-         return false;
-      }
-   }
-
-   public static boolean containsWildcards(Type[] types)
-   {
-      for (Type type : types)
-      {
-         if (type instanceof WildcardType)
-         {
-            return true;
-         }
-      }
-      return false;
-   }
-
-   public static Object invoke(Method method, Object instance, Object... parameters) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException
-   {
-      ensureAccessible(method);
-      return method.invoke(instance, parameters);
-   }
-
-   public static Object invoke(String methodName, Object instance, Object... parameters) throws SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException
-   {
-      Class<?>[] parameterTypes = new Class<?>[parameters.length];
-      for (int i = 0; i < parameters.length; i++)
-      {
-         parameterTypes[i] = parameters[i].getClass();
-      }
-      Method method = instance.getClass().getMethod(methodName, parameterTypes);
-      return invoke(method, instance, parameters);
-   }
-
-
-   /**
-    * Gets value of a field and wraps exceptions
-    * 
-    * @param field The field to set on
-    * @param target The instance to set on
-    * @return The value to set
-    */
-   public static Object getAndWrap(Field field, Object target)
-   {
-      try
-      {
-         return field.get(target);
-      }
-      catch (IllegalArgumentException e)
-      {
-         throw new WeldException(ACCESS_ERROR_ON_FIELD, e, field.getName(), field.getDeclaringClass());
-      }
-      catch (IllegalAccessException e)
-      {
-         throw new WeldException(ACCESS_ERROR_ON_FIELD, e, field.getName(), field.getDeclaringClass());
-      }
-   }
-
-   public static Object getAndWrap(String fieldName, Object target)
-   {
-      try
-      {
-         return getAndWrap(target.getClass().getField(fieldName), target);
-      }
-      catch (SecurityException e)
-      {
-         throw new WeldException(ACCESS_ERROR_ON_FIELD, e, fieldName, target.getClass());
-      }
-      catch (NoSuchFieldException e)
-      {
-         throw new WeldException(ACCESS_ERROR_ON_FIELD, e, fieldName, target.getClass());
-      }
-   }
-
-   /**
-    * Looks up a method in the type hierarchy of an instance
-    * 
-    * @param method The method to look for
-    * @param instance The instance to start from
-    * @return The method found
-    * @throws IllegalArgumentException if the method is not found
-    */
-   public static Method lookupMethod(Method method, Object instance)
-   {
-      try
-      {
-         return lookupMethod(method.getName(), method.getParameterTypes(), instance);
-      }
-      catch (NoSuchMethodException e)
-      {
-         throw new ForbiddenArgumentException(e);
-      }
-   }
-
-   /**
-    * Looks up a method in the type hierarchy of an instance
-    * 
-    * @param method The method to look for
-    * @param instance The instance to start from
-    * @return the method
-    * @throws NoSuchMethodException if the method is not found
-    */
-   public static Method lookupMethod(String methodName, Class<?>[] parameterTypes, Object instance) throws NoSuchMethodException
-   {
-      return lookupMethod(methodName, parameterTypes, instance.getClass());
-   }
-
-   private static Method lookupMethod(String methodName, Class<?>[] parameterTypes, Class<?> c) throws NoSuchMethodException
-   {
-      for (Class<? extends Object> clazz = c; clazz != null; clazz = clazz.getSuperclass())
-      {
-         for (Class<?> intf : clazz.getInterfaces())
-         {
-            try
-            {
-               return lookupMethod(methodName, parameterTypes, intf);
-            }
-            catch (NoSuchMethodException e)
-            {
-               // Expected
-            }
-         }
-         try
-         {
-            Method targetMethod = clazz.getDeclaredMethod(methodName, parameterTypes);
-            if (!targetMethod.isAccessible())
-            {
-               targetMethod.setAccessible(true);
-            }
-            return targetMethod;
-         }
-         catch (NoSuchMethodException nsme)
-         {
-            // Expected, nothing to see here.
-         }
-      }
-      throw new NoSuchMethodException(messageConveyer.getMessage(NO_SUCH_METHOD, methodName + Arrays.asList(parameterTypes).toString().replace("[", "(").replace("]", ")"), c.getName()));
-   }
-
-   /**
-    * Checks the bindingType to make sure the annotation was declared properly
-    * as a binding type (annotated with @BindingType) and that it has a runtime
-    * retention policy.
-    * 
-    * @param binding The binding type to check
-    * @return true only if the annotation is really a binding type
-    */
-   @Deprecated
-   // TODO Replace usage of this with metadatacache
-   public static boolean isBindings(Annotation binding)
-   {
-      boolean isBindingAnnotation = false;
-      if (binding.annotationType().isAnnotationPresent(Qualifier.class) && binding.annotationType().isAnnotationPresent(Retention.class) && binding.annotationType().getAnnotation(Retention.class).value().equals(RetentionPolicy.RUNTIME))
-      {
-         isBindingAnnotation = true;
-      }
-      return isBindingAnnotation;
-   }
-
-   /**
-    * Check the assignability of one type to another, taking into account the
-    * actual type arguements
-    * 
-    * @param rawType1 the raw type of the class to check
-    * @param actualTypeArguments1 the actual type arguements to check, or an
-    *           empty array if not a parameterized type
-    * @param rawType2 the raw type of the class to check
-    * @param actualTypeArguments2 the actual type arguements to check, or an
-    *           empty array if not a parameterized type
-    * @return
-    */
-   public static boolean isAssignableFrom(Class<?> rawType1, Type[] actualTypeArguments1, Class<?> rawType2, Type[] actualTypeArguments2)
-   {
-      return Types.boxedClass(rawType1).isAssignableFrom(Types.boxedClass(rawType2)) && isAssignableFrom(actualTypeArguments1, actualTypeArguments2);
-   }
-   
-   public static boolean matches(Class<?> rawType1, Type[] actualTypeArguments1, Class<?> rawType2, Type[] actualTypeArguments2)
-   {
-      return Types.boxedClass(rawType1).equals(Types.boxedClass(rawType2)) && isAssignableFrom(actualTypeArguments1, actualTypeArguments2);
-   }
-
-   public static boolean isAssignableFrom(Type[] actualTypeArguments1, Type[] actualTypeArguments2)
-   {
-      for (int i = 0; i < actualTypeArguments1.length; i++)
-      {
-         Type type1 = actualTypeArguments1[i];
-         Type type2 = Object.class;
-         if (actualTypeArguments2.length > i)
-         {
-            type2 = actualTypeArguments2[i];
-         }
-         if (!isAssignableFrom(type1, type2))
-         {
-            return false;
-         }
-      }
-      return true;
-   }
-
-   public static boolean isAssignableFrom(Type type1, Set<? extends Type> types2)
-   {
-      for (Type type2 : types2)
-      {
-         if (isAssignableFrom(type1, type2))
-         {
-            return true;
-         }
-      }
-      return false;
-   }
-   
-   public static boolean matches(Type type1, Set<? extends Type> types2)
-   {
-      for (Type type2 : types2)
-      {
-         if (matches(type1, type2))
-         {
-            return true;
-         }
-      }
-      return false;
-   }
-
-   public static boolean isAssignableFrom(Type type1, Type[] types2)
-   {
-      for (Type type2 : types2)
-      {
-         if (isAssignableFrom(type1, type2))
-         {
-            return true;
-         }
-      }
-      return false;
-   }
-
-   public static boolean isAssignableFrom(Type type1, Type type2)
-   {
-      if (type1 instanceof Class)
-      {
-         Class<?> clazz = (Class<?>) type1;
-         if (isAssignableFrom(clazz, EMPTY_TYPES, type2))
-         {
-            return true;
-         }
-      }
-      if (type1 instanceof ParameterizedType)
-      {
-         ParameterizedType parameterizedType1 = (ParameterizedType) type1;
-         if (parameterizedType1.getRawType() instanceof Class)
-         {
-            if (isAssignableFrom((Class<?>) parameterizedType1.getRawType(), parameterizedType1.getActualTypeArguments(), type2))
-            {
-               return true;
-            }
-         }
-      }
-      if (type1 instanceof WildcardType)
-      {
-         WildcardType wildcardType = (WildcardType) type1;
-         if (isTypeBounded(type2, wildcardType.getLowerBounds(), wildcardType.getUpperBounds()))
-         {
-            return true;
-         }
-      }
-      if (type2 instanceof WildcardType)
-      {
-         WildcardType wildcardType = (WildcardType) type2;
-         if (isTypeBounded(type1, wildcardType.getUpperBounds(), wildcardType.getLowerBounds()))
-         {
-            return true;
-         }
-      }
-      if (type1 instanceof TypeVariable<?>)
-      {
-         TypeVariable<?> typeVariable = (TypeVariable<?>) type1;
-         if (isTypeBounded(type2, EMPTY_TYPES, typeVariable.getBounds()))
-         {
-            return true;
-         }
-      }
-      if (type2 instanceof TypeVariable<?>)
-      {
-         TypeVariable<?> typeVariable = (TypeVariable<?>) type2;
-         if (isTypeBounded(type1, typeVariable.getBounds(), EMPTY_TYPES))
-         {
-            return true;
-         }
-      }
-      return false;
-   }
-   
-   public static boolean matches(Type type1, Type type2)
-   {
-      if (type1 instanceof Class<?>)
-      {
-         Class<?> clazz = (Class<?>) type1;
-         if (matches(clazz, EMPTY_TYPES, type2))
-         {
-            return true;
-         }
-      }
-      if (type1 instanceof ParameterizedType)
-      {
-         ParameterizedType parameterizedType1 = (ParameterizedType) type1;
-         if (parameterizedType1.getRawType() instanceof Class)
-         {
-            if (matches((Class<?>) parameterizedType1.getRawType(), parameterizedType1.getActualTypeArguments(), type2))
-            {
-               return true;
-            }
-         }
-      }
-      if (type1 instanceof WildcardType)
-      {
-         WildcardType wildcardType = (WildcardType) type1;
-         if (isTypeBounded(type2, wildcardType.getLowerBounds(), wildcardType.getUpperBounds()))
-         {
-            return true;
-         }
-      }
-      if (type2 instanceof WildcardType)
-      {
-         WildcardType wildcardType = (WildcardType) type2;
-         if (isTypeBounded(type1, wildcardType.getUpperBounds(), wildcardType.getLowerBounds()))
-         {
-            return true;
-         }
-      }
-      if (type1 instanceof TypeVariable<?>)
-      {
-         TypeVariable<?> typeVariable = (TypeVariable<?>) type1;
-         if (isTypeBounded(type2, EMPTY_TYPES, typeVariable.getBounds()))
-         {
-            return true;
-         }
-      }
-      if (type2 instanceof TypeVariable<?>)
-      {
-         TypeVariable<?> typeVariable = (TypeVariable<?>) type2;
-         if (isTypeBounded(type1, typeVariable.getBounds(), EMPTY_TYPES))
-         {
-            return true;
-         }
-      }
-      return false;
-   }
-
-   public static boolean isTypeBounded(Type type, Type[] lowerBounds, Type[] upperBounds)
-   {
-      if (lowerBounds.length > 0)
-      {
-         if (!isAssignableFrom(type, lowerBounds))
-         {
-            return false;
-         }
-      }
-      if (upperBounds.length > 0)
-      {
-         if (!isAssignableFrom(upperBounds, type))
-         {
-            return false;
-         }
-      }
-      return true;
-   }
-
-   public static boolean isAssignableFrom(Class<?> rawType1, Type[] actualTypeArguments1, Type type2)
-   {
-      if (type2 instanceof ParameterizedType)
-      {
-         ParameterizedType parameterizedType = (ParameterizedType) type2;
-         if (parameterizedType.getRawType() instanceof Class)
-         {
-            if (isAssignableFrom(rawType1, actualTypeArguments1, (Class<?>) parameterizedType.getRawType(), parameterizedType.getActualTypeArguments()))
-            {
-               return true;
-            }
-         }
-      }
-      else if (type2 instanceof Class)
-      {
-         Class<?> clazz = (Class<?>) type2;
-         if (isAssignableFrom(rawType1, actualTypeArguments1, clazz, EMPTY_TYPES))
-         {
-            return true;
-         }
-      }
-      return false;
-   }
-   
-   public static boolean matches(Class<?> rawType1, Type[] actualTypeArguments1, Type type2)
-   {
-      if (type2 instanceof ParameterizedType)
-      {
-         ParameterizedType parameterizedType = (ParameterizedType) type2;
-         if (parameterizedType.getRawType() instanceof Class<?>)
-         {
-            if (matches(rawType1, actualTypeArguments1, (Class<?>) parameterizedType.getRawType(), parameterizedType.getActualTypeArguments()))
-            {
-               return true;
-            }
-         }
-      }
-      else if (type2 instanceof Class<?>)
-      {
-         Class<?> clazz = (Class<?>) type2;
-         if (matches(rawType1, actualTypeArguments1, clazz, EMPTY_TYPES))
-         {
-            return true;
-         }
-      }
-      return false;
-   }
-
-   /**
-    * Check the assiginability of a set of <b>flattened</b> types. This
-    * algorithm will check whether any of the types1 matches a type in types2
-    * 
-    * @param types1
-    * @param types2
-    * @return
-    */
-   public static boolean isAssignableFrom(Set<Type> types1, Set<Type> types2)
-   {
-      for (Type type : types1)
-      {
-         if (isAssignableFrom(type, types2))
-         {
-            return true;
-         }
-      }
-      return false;
-   }
-   
-   /**
-    * Check whether whether any of the types1 matches a type in types2
-    * 
-    * @param types1
-    * @param types2
-    * @return
-    */
-   public static boolean matches(Set<Type> types1, Set<Type> types2)
-   {
-      for (Type type : types1)
-      {
-         if (matches(type, types2))
-         {
-            return true;
-         }
-      }
-      return false;
-   }
-
-   /**
-    * Check the assiginability of a set of <b>flattened</b> types. This
-    * algorithm will check whether any of the types1 matches a type in types2
-    * 
-    * @param types1
-    * @param types2
-    * @return
-    */
-   public static boolean isAssignableFrom(Set<Type> types1, Type type2)
-   {
-      for (Type type : types1)
-      {
-         if (isAssignableFrom(type, type2))
-         {
-            return true;
-         }
-      }
-      return false;
-   }
-
-   public static boolean isAssignableFrom(Type[] types1, Type type2)
-   {
-      for (Type type : types1)
-      {
-         if (isAssignableFrom(type, type2))
-         {
-            return true;
-         }
-      }
-      return false;
-   }
-
-   public static boolean isSerializable(Class<?> clazz)
-   {
-      return clazz.isPrimitive() || Serializable.class.isAssignableFrom(clazz);
-   }
-
-   public static Field ensureAccessible(Field field)
-   {
-      if (!field.isAccessible() && !isIgnorePackage(field.getDeclaringClass().getPackage()))
-      {
-         field.setAccessible(true);
-      }
-      return field;
-   }
-
-   public static Method ensureAccessible(Method method)
-   {
-      if (!method.isAccessible() && !isIgnorePackage(method.getDeclaringClass().getPackage()))
-      {
-         method.setAccessible(true);
-      }
-      return method;
-   }
-
-   public static <T> Constructor<T> ensureAccessible(Constructor<T> constructor)
-   {
-      Class<?> c = constructor.getDeclaringClass();
-      Package p = c.getPackage();
-      if (!constructor.isAccessible() && !isIgnorePackage(p))
-      {
-         constructor.setAccessible(true);
-      }
-      return constructor;
-   }
-
-   private static boolean isIgnorePackage(Package pkg)
-   {
-      if (pkg != null)
-      {
-         return pkg.getName().startsWith("java.lang");
-      }
-      else
-      {
-         return false;
-      }
-   }
-
-   public static Class<?>[] extractValues(Annotation annotation)
-   {
-      try
-      {
-         Class<?>[] valueClasses = (Class<?>[]) annotation.annotationType().getMethod("value").invoke(annotation);
-         return valueClasses;
-      }
-      catch (Exception e)
-      {
-         throw new DeploymentException(ANNOTATION_VALUES_INACCESSIBLE, e);
-      }
-   }
-
-}

Added: core/trunk/impl/src/main/java/org/jboss/weld/util/reflection/HierarchyDiscovery.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/util/reflection/HierarchyDiscovery.java	                        (rev 0)
+++ core/trunk/impl/src/main/java/org/jboss/weld/util/reflection/HierarchyDiscovery.java	2009-12-03 18:12:17 UTC (rev 5211)
@@ -0,0 +1,218 @@
+/**
+ * 
+ */
+package org.jboss.weld.util.reflection;
+
+import static org.jboss.weld.logging.messages.UtilMessage.SECURITY_EXCEPTION_SCANNING;
+
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
+import java.lang.reflect.TypeVariable;
+import java.security.AccessControlException;
+import java.util.Map;
+import java.util.Set;
+
+import org.slf4j.ext.XLogger.Level;
+
+import com.google.common.collect.BiMap;
+import com.google.common.collect.HashBiMap;
+
+public class HierarchyDiscovery
+{
+
+   private final Type type;
+
+   private BiMap<Type, Class<?>> types;
+
+   public HierarchyDiscovery(Type type)
+   {
+      this.type = type;
+   }
+
+   protected void add(Class<?> clazz, Type type)
+   {
+      types.forcePut(type, clazz);
+   }
+
+   public Set<Type> getTypeClosure()
+   {
+      if (types == null)
+      {
+         init();
+      }
+      return types.keySet();
+   }
+   
+   public Map<Class<?>, Type> getTypeMap()
+   {
+      if (types == null)
+      {
+         init();
+      }
+      return types.inverse();
+   }
+   
+   private void init()
+   {
+      this.types = HashBiMap.create();
+      discoverTypes(type);
+   }
+
+   public Type getResolvedType()
+   {
+      if (type instanceof Class<?>)
+      {
+         Class<?> clazz = (Class<?>) type;
+         return resolveType(clazz);
+      }
+      return type;
+   }
+
+   private void discoverTypes(Type type)
+   {
+      if (type != null)
+      {
+         if (type instanceof Class<?>)
+         {
+            Class<?> clazz = (Class<?>) type;
+            add(clazz, resolveType(clazz));
+            discoverFromClass(clazz);
+         }
+         else
+         {
+            Class<?> clazz = null;
+            if (type instanceof ParameterizedType)
+            {
+               Type rawType = ((ParameterizedType) type).getRawType();
+               if (rawType instanceof Class<?>)
+               {
+                  discoverFromClass((Class<?>) rawType);
+                  clazz = (Class<?>) rawType;
+               }
+            }
+            add(clazz, type);
+         }
+      }
+   }
+
+   private Type resolveType(Class<?> clazz)
+   {
+      if (clazz.getTypeParameters().length > 0)
+      {
+         TypeVariable<?>[] actualTypeParameters = clazz.getTypeParameters();
+         ParameterizedType parameterizedType = new ParameterizedTypeImpl(clazz, actualTypeParameters, clazz.getDeclaringClass());
+         return parameterizedType;
+      }
+      else
+      {
+         return clazz;
+      }
+   }
+
+   @SuppressWarnings("unchecked")
+   private void discoverFromClass(Class<?> clazz)
+   {
+      try
+      {
+         discoverTypes(resolveType(type, clazz.getGenericSuperclass()));
+         for (Type c : clazz.getGenericInterfaces())
+         {
+            discoverTypes(resolveType(type, c));
+         }
+      }
+      catch (AccessControlException e)
+      {
+         // TODO Hmm, is this a hack?
+         Reflections.log.trace(SECURITY_EXCEPTION_SCANNING, clazz);
+         Reflections.xLog.throwing(Level.TRACE, e);
+      }
+   }
+
+   /**
+    * Gets the actual types by resolving TypeParameters.
+    * 
+    * @param beanType
+    * @param type
+    * @return actual type
+    */
+   private Type resolveType(Type beanType, Type type)
+   {
+      if (type instanceof ParameterizedType)
+      {
+         if (beanType instanceof ParameterizedType)
+         {
+            return resolveParameterizedType((ParameterizedType) beanType, (ParameterizedType) type);
+         }
+         if (beanType instanceof Class<?>)
+         {
+            return resolveType(((Class<?>) beanType).getGenericSuperclass(), type);
+         }
+      }
+
+      if (type instanceof TypeVariable<?>)
+      {
+         if (beanType instanceof ParameterizedType)
+         {
+            return resolveTypeParameter((ParameterizedType) beanType, (TypeVariable<?>) type);
+         }
+         if (beanType instanceof Class<?>)
+         {
+            return resolveType(((Class<?>) beanType).getGenericSuperclass(), type);
+         }
+      }
+      return type;
+   }
+
+   private Type resolveParameterizedType(ParameterizedType beanType, ParameterizedType parameterizedType)
+   {
+      Type rawType = parameterizedType.getRawType();
+      Type[] actualTypes = parameterizedType.getActualTypeArguments();
+
+      Type resolvedRawType = resolveType(beanType, rawType);
+      Type[] resolvedActualTypes = new Type[actualTypes.length];
+
+      for (int i = 0; i < actualTypes.length; i++)
+      {
+         resolvedActualTypes[i] = resolveType(beanType, actualTypes[i]);
+      }
+      // reconstruct ParameterizedType by types resolved TypeVariable.
+      return new ParameterizedTypeImpl(resolvedRawType, resolvedActualTypes, parameterizedType.getOwnerType());
+   }
+
+   private Type resolveTypeParameter(ParameterizedType beanType, TypeVariable<?> typeVariable)
+   {
+      // step1. raw type
+      Class<?> actualType = (Class<?>) beanType.getRawType();
+      TypeVariable<?>[] typeVariables = actualType.getTypeParameters();
+      Type[] actualTypes = beanType.getActualTypeArguments();
+      for (int i = 0; i < typeVariables.length; i++)
+      {
+         if (typeVariables[i].equals(typeVariable) && !actualTypes[i].equals(typeVariable))
+         {
+            return resolveType(type, actualTypes[i]);
+         }
+      }
+
+      // step2. generic super class
+      Type genericSuperType = actualType.getGenericSuperclass();
+      Type type = resolveType(genericSuperType, typeVariable);
+      if (!(type instanceof TypeVariable<?>))
+      {
+         return type;
+      }
+
+      // step3. generic interfaces
+      for (Type interfaceType : actualType.getGenericInterfaces())
+      {
+         Type resolvedType = resolveType(interfaceType, typeVariable);
+         if (!(resolvedType instanceof TypeVariable<?>))
+         {
+            return resolvedType;
+         }
+      }
+
+      // don't resolve type variable
+      return typeVariable;
+   }
+
+}
\ No newline at end of file


Property changes on: core/trunk/impl/src/main/java/org/jboss/weld/util/reflection/HierarchyDiscovery.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain
Name: svn:eol-style
   + native

Copied: core/trunk/impl/src/main/java/org/jboss/weld/util/reflection/Reflections.java (from rev 5210, core/trunk/impl/src/main/java/org/jboss/weld/util/Reflections.java)
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/util/reflection/Reflections.java	                        (rev 0)
+++ core/trunk/impl/src/main/java/org/jboss/weld/util/reflection/Reflections.java	2009-12-03 18:12:17 UTC (rev 5211)
@@ -0,0 +1,859 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jboss.weld.util.reflection;
+
+import static org.jboss.weld.logging.Category.UTIL;
+import static org.jboss.weld.logging.LoggerFactory.loggerFactory;
+import static org.jboss.weld.logging.messages.UtilMessage.ACCESS_ERROR_ON_CONSTRUCTOR;
+import static org.jboss.weld.logging.messages.UtilMessage.ACCESS_ERROR_ON_FIELD;
+import static org.jboss.weld.logging.messages.UtilMessage.ANNOTATION_VALUES_INACCESSIBLE;
+import static org.jboss.weld.logging.messages.UtilMessage.NO_SUCH_METHOD;
+
+import java.beans.Introspector;
+import java.io.Serializable;
+import java.lang.annotation.Annotation;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Member;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
+import java.lang.reflect.TypeVariable;
+import java.lang.reflect.WildcardType;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+
+import javax.inject.Qualifier;
+
+import org.jboss.weld.DeploymentException;
+import org.jboss.weld.ForbiddenArgumentException;
+import org.jboss.weld.WeldException;
+import org.jboss.weld.util.Types;
+import org.slf4j.cal10n.LocLogger;
+import org.slf4j.ext.XLogger;
+
+import ch.qos.cal10n.IMessageConveyor;
+
+
+/**
+ * Utility class for static reflection-type operations
+ * 
+ * @author Pete Muir
+ * 
+ */
+public class Reflections
+{
+
+   static final LocLogger log = loggerFactory().getLogger(UTIL);
+   static final XLogger xLog = loggerFactory().getXLogger(UTIL);
+
+   // Exception messages
+   private static final IMessageConveyor messageConveyer = loggerFactory().getMessageConveyor();
+
+   public static final Type[] EMPTY_TYPES = {};
+
+   public static final Annotation[] EMPTY_ANNOTATIONS = {};
+
+   public static Map<Class<?>, Type> buildTypeMap(Set<Type> types)
+   {
+      Map<Class<?>, Type> map = new HashMap<Class<?>, Type>();
+      for (Type type : types)
+      {
+         if (type instanceof Class<?>)
+         {
+            map.put((Class<?>) type, type);
+         }
+         else if (type instanceof ParameterizedType)
+         {
+            if (((ParameterizedType) type).getRawType() instanceof Class<?>)
+            {
+               map.put((Class<?>) ((ParameterizedType) type).getRawType(), type);
+            }
+         }
+      }
+      return map;
+   }
+
+   /**
+    * Gets the property name from a getter method
+    * 
+    * @param method The getter method
+    * @return The name of the property. Returns null if method wasn't JavaBean
+    *         getter-styled
+    */
+   public static String getPropertyName(Method method)
+   {
+      String methodName = method.getName();
+      if (methodName.matches("^(get).*") && method.getParameterTypes().length == 0)
+      {
+         return Introspector.decapitalize(methodName.substring(3));
+      }
+      else if (methodName.matches("^(is).*") && method.getParameterTypes().length == 0)
+      {
+         return Introspector.decapitalize(methodName.substring(2));
+      }
+      else
+      {
+         return null;
+      }
+
+   }
+
+   /**
+    * Checks if class is final
+    * 
+    * @param clazz The class to check
+    * @return True if final, false otherwise
+    */
+   public static boolean isFinal(Class<?> clazz)
+   {
+      return Modifier.isFinal(clazz.getModifiers());
+   }
+   
+   public static int getNesting(Class<?> clazz)
+   {
+      if (clazz.isMemberClass() && !isStatic(clazz))
+      {
+         return 1 + getNesting(clazz.getDeclaringClass());
+      }
+      else
+      {
+         return 0;
+      }
+   }
+
+   /**
+    * Checks if member is final
+    * 
+    * @param member The member to check
+    * @return True if final, false otherwise
+    */
+   public static boolean isFinal(Member member)
+   {
+      return Modifier.isFinal(member.getModifiers());
+   }
+
+   /**
+    * Checks if type or member is final
+    * 
+    * @param type Type or member
+    * @return True if final, false otherwise
+    */
+   public static boolean isTypeOrAnyMethodFinal(Class<?> type)
+   {
+      if (isFinal(type))
+      {
+         return true;
+      }
+      for (Method method : type.getDeclaredMethods())
+      {
+         if (isFinal(method))
+         {
+            return true;
+         }
+      }
+      return false;
+   }
+
+   /**
+    * Checks if type is primitive
+    * 
+    * @param type Type to check
+    * @return True if primitive, false otherwise
+    */
+   public static boolean isPrimitive(Class<?> type)
+   {
+      return type.isPrimitive();
+   }
+
+   public static boolean isPackagePrivate(int mod)
+   {
+      return !(Modifier.isPrivate(mod) || Modifier.isProtected(mod) || Modifier.isPublic(mod));
+   }
+
+   /**
+    * Checks if type is static
+    * 
+    * @param type Type to check
+    * @return True if static, false otherwise
+    */
+   public static boolean isStatic(Class<?> type)
+   {
+      return Modifier.isStatic(type.getModifiers());
+   }
+
+   /**
+    * Checks if member is static
+    * 
+    * @param member Member to check
+    * @return True if static, false otherwise
+    */
+   public static boolean isStatic(Member member)
+   {
+      return Modifier.isStatic(member.getModifiers());
+   }
+
+   public static boolean isTransient(Member member)
+   {
+      return Modifier.isTransient(member.getModifiers());
+   }
+
+   /**
+    * Checks if clazz is abstract
+    * 
+    * @param clazz Class to check
+    * @return True if abstract, false otherwise
+    */
+   public static boolean isAbstract(Class<?> clazz)
+   {
+      return Modifier.isAbstract(clazz.getModifiers());
+   }
+
+   /**
+    * Checks if a method is abstract
+    *
+    * @param method
+    * @return
+    */
+   public static boolean isAbstract(Method method)
+   {
+      return Modifier.isAbstract(method.getModifiers());
+   }
+
+   /**
+    * Gets a constructor with matching parameter types
+    * 
+    * @param <T> The type
+    * @param clazz The class
+    * @param parameterTypes The parameter types
+    * @return The matching constructor. Null is returned if none is found
+    */
+   public static <T> Constructor<T> getDeclaredConstructor(Class<T> clazz, Class<?>... parameterTypes)
+   {
+      try
+      {
+         return clazz.getDeclaredConstructor(parameterTypes);
+      }
+      catch (NoSuchMethodException e)
+      {
+         return null;
+      }
+      catch (Exception e)
+      {
+         throw new WeldException(ACCESS_ERROR_ON_CONSTRUCTOR, e, clazz);
+      }
+   }
+
+   /**
+    * Gets the actual type arguments of a class
+    * 
+    * @param clazz The class to examine
+    * @return The type arguments
+    */
+   public static Type[] getActualTypeArguments(Class<?> clazz)
+   {
+      Type type = new HierarchyDiscovery(clazz).getResolvedType();
+      if (type instanceof ParameterizedType)
+      {
+         return ((ParameterizedType) type).getActualTypeArguments();
+      }
+      else
+      {
+         return EMPTY_TYPES;
+      }
+   }
+
+   /**
+    * Checks if raw type is array type
+    * 
+    * @param rawType The raw type to check
+    * @return True if array, false otherwise
+    */
+   public static boolean isArrayType(Class<?> rawType)
+   {
+      return rawType.isArray();
+   }
+
+   /**
+    * Checks if type is parameterized type
+    * 
+    * @param type The type to check
+    * @return True if parameterized, false otherwise
+    */
+   public static boolean isParameterizedType(Class<?> type)
+   {
+      return type.getTypeParameters().length > 0;
+   }
+
+   public static boolean isParamerterizedTypeWithWildcard(Class<?> type)
+   {
+      if (isParameterizedType(type))
+      {
+         return containsWildcards(type.getTypeParameters());
+      }
+      else
+      {
+         return false;
+      }
+   }
+
+   public static boolean containsWildcards(Type[] types)
+   {
+      for (Type type : types)
+      {
+         if (type instanceof WildcardType)
+         {
+            return true;
+         }
+      }
+      return false;
+   }
+
+   public static Object invoke(Method method, Object instance, Object... parameters) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException
+   {
+      ensureAccessible(method);
+      return method.invoke(instance, parameters);
+   }
+
+   public static Object invoke(String methodName, Object instance, Object... parameters) throws SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException
+   {
+      Class<?>[] parameterTypes = new Class<?>[parameters.length];
+      for (int i = 0; i < parameters.length; i++)
+      {
+         parameterTypes[i] = parameters[i].getClass();
+      }
+      Method method = instance.getClass().getMethod(methodName, parameterTypes);
+      return invoke(method, instance, parameters);
+   }
+
+
+   /**
+    * Gets value of a field and wraps exceptions
+    * 
+    * @param field The field to set on
+    * @param target The instance to set on
+    * @return The value to set
+    */
+   public static Object getAndWrap(Field field, Object target)
+   {
+      try
+      {
+         return field.get(target);
+      }
+      catch (IllegalArgumentException e)
+      {
+         throw new WeldException(ACCESS_ERROR_ON_FIELD, e, field.getName(), field.getDeclaringClass());
+      }
+      catch (IllegalAccessException e)
+      {
+         throw new WeldException(ACCESS_ERROR_ON_FIELD, e, field.getName(), field.getDeclaringClass());
+      }
+   }
+
+   public static Object getAndWrap(String fieldName, Object target)
+   {
+      try
+      {
+         return getAndWrap(target.getClass().getField(fieldName), target);
+      }
+      catch (SecurityException e)
+      {
+         throw new WeldException(ACCESS_ERROR_ON_FIELD, e, fieldName, target.getClass());
+      }
+      catch (NoSuchFieldException e)
+      {
+         throw new WeldException(ACCESS_ERROR_ON_FIELD, e, fieldName, target.getClass());
+      }
+   }
+
+   /**
+    * Looks up a method in the type hierarchy of an instance
+    * 
+    * @param method The method to look for
+    * @param instance The instance to start from
+    * @return The method found
+    * @throws IllegalArgumentException if the method is not found
+    */
+   public static Method lookupMethod(Method method, Object instance)
+   {
+      try
+      {
+         return lookupMethod(method.getName(), method.getParameterTypes(), instance);
+      }
+      catch (NoSuchMethodException e)
+      {
+         throw new ForbiddenArgumentException(e);
+      }
+   }
+
+   /**
+    * Looks up a method in the type hierarchy of an instance
+    * 
+    * @param method The method to look for
+    * @param instance The instance to start from
+    * @return the method
+    * @throws NoSuchMethodException if the method is not found
+    */
+   public static Method lookupMethod(String methodName, Class<?>[] parameterTypes, Object instance) throws NoSuchMethodException
+   {
+      return lookupMethod(methodName, parameterTypes, instance.getClass());
+   }
+
+   private static Method lookupMethod(String methodName, Class<?>[] parameterTypes, Class<?> c) throws NoSuchMethodException
+   {
+      for (Class<? extends Object> clazz = c; clazz != null; clazz = clazz.getSuperclass())
+      {
+         for (Class<?> intf : clazz.getInterfaces())
+         {
+            try
+            {
+               return lookupMethod(methodName, parameterTypes, intf);
+            }
+            catch (NoSuchMethodException e)
+            {
+               // Expected
+            }
+         }
+         try
+         {
+            Method targetMethod = clazz.getDeclaredMethod(methodName, parameterTypes);
+            if (!targetMethod.isAccessible())
+            {
+               targetMethod.setAccessible(true);
+            }
+            return targetMethod;
+         }
+         catch (NoSuchMethodException nsme)
+         {
+            // Expected, nothing to see here.
+         }
+      }
+      throw new NoSuchMethodException(messageConveyer.getMessage(NO_SUCH_METHOD, methodName + Arrays.asList(parameterTypes).toString().replace("[", "(").replace("]", ")"), c.getName()));
+   }
+
+   /**
+    * Checks the bindingType to make sure the annotation was declared properly
+    * as a binding type (annotated with @BindingType) and that it has a runtime
+    * retention policy.
+    * 
+    * @param binding The binding type to check
+    * @return true only if the annotation is really a binding type
+    */
+   @Deprecated
+   // TODO Replace usage of this with metadatacache
+   public static boolean isBindings(Annotation binding)
+   {
+      boolean isBindingAnnotation = false;
+      if (binding.annotationType().isAnnotationPresent(Qualifier.class) && binding.annotationType().isAnnotationPresent(Retention.class) && binding.annotationType().getAnnotation(Retention.class).value().equals(RetentionPolicy.RUNTIME))
+      {
+         isBindingAnnotation = true;
+      }
+      return isBindingAnnotation;
+   }
+
+   /**
+    * Check the assignability of one type to another, taking into account the
+    * actual type arguements
+    * 
+    * @param rawType1 the raw type of the class to check
+    * @param actualTypeArguments1 the actual type arguements to check, or an
+    *           empty array if not a parameterized type
+    * @param rawType2 the raw type of the class to check
+    * @param actualTypeArguments2 the actual type arguements to check, or an
+    *           empty array if not a parameterized type
+    * @return
+    */
+   public static boolean isAssignableFrom(Class<?> rawType1, Type[] actualTypeArguments1, Class<?> rawType2, Type[] actualTypeArguments2)
+   {
+      return Types.boxedClass(rawType1).isAssignableFrom(Types.boxedClass(rawType2)) && isAssignableFrom(actualTypeArguments1, actualTypeArguments2);
+   }
+   
+   public static boolean matches(Class<?> rawType1, Type[] actualTypeArguments1, Class<?> rawType2, Type[] actualTypeArguments2)
+   {
+      return Types.boxedClass(rawType1).equals(Types.boxedClass(rawType2)) && isAssignableFrom(actualTypeArguments1, actualTypeArguments2);
+   }
+
+   public static boolean isAssignableFrom(Type[] actualTypeArguments1, Type[] actualTypeArguments2)
+   {
+      for (int i = 0; i < actualTypeArguments1.length; i++)
+      {
+         Type type1 = actualTypeArguments1[i];
+         Type type2 = Object.class;
+         if (actualTypeArguments2.length > i)
+         {
+            type2 = actualTypeArguments2[i];
+         }
+         if (!isAssignableFrom(type1, type2))
+         {
+            return false;
+         }
+      }
+      return true;
+   }
+
+   public static boolean isAssignableFrom(Type type1, Set<? extends Type> types2)
+   {
+      for (Type type2 : types2)
+      {
+         if (isAssignableFrom(type1, type2))
+         {
+            return true;
+         }
+      }
+      return false;
+   }
+   
+   public static boolean matches(Type type1, Set<? extends Type> types2)
+   {
+      for (Type type2 : types2)
+      {
+         if (matches(type1, type2))
+         {
+            return true;
+         }
+      }
+      return false;
+   }
+
+   public static boolean isAssignableFrom(Type type1, Type[] types2)
+   {
+      for (Type type2 : types2)
+      {
+         if (isAssignableFrom(type1, type2))
+         {
+            return true;
+         }
+      }
+      return false;
+   }
+
+   public static boolean isAssignableFrom(Type type1, Type type2)
+   {
+      if (type1 instanceof Class)
+      {
+         Class<?> clazz = (Class<?>) type1;
+         if (isAssignableFrom(clazz, EMPTY_TYPES, type2))
+         {
+            return true;
+         }
+      }
+      if (type1 instanceof ParameterizedType)
+      {
+         ParameterizedType parameterizedType1 = (ParameterizedType) type1;
+         if (parameterizedType1.getRawType() instanceof Class)
+         {
+            if (isAssignableFrom((Class<?>) parameterizedType1.getRawType(), parameterizedType1.getActualTypeArguments(), type2))
+            {
+               return true;
+            }
+         }
+      }
+      if (type1 instanceof WildcardType)
+      {
+         WildcardType wildcardType = (WildcardType) type1;
+         if (isTypeBounded(type2, wildcardType.getLowerBounds(), wildcardType.getUpperBounds()))
+         {
+            return true;
+         }
+      }
+      if (type2 instanceof WildcardType)
+      {
+         WildcardType wildcardType = (WildcardType) type2;
+         if (isTypeBounded(type1, wildcardType.getUpperBounds(), wildcardType.getLowerBounds()))
+         {
+            return true;
+         }
+      }
+      if (type1 instanceof TypeVariable<?>)
+      {
+         TypeVariable<?> typeVariable = (TypeVariable<?>) type1;
+         if (isTypeBounded(type2, EMPTY_TYPES, typeVariable.getBounds()))
+         {
+            return true;
+         }
+      }
+      if (type2 instanceof TypeVariable<?>)
+      {
+         TypeVariable<?> typeVariable = (TypeVariable<?>) type2;
+         if (isTypeBounded(type1, typeVariable.getBounds(), EMPTY_TYPES))
+         {
+            return true;
+         }
+      }
+      return false;
+   }
+   
+   public static boolean matches(Type type1, Type type2)
+   {
+      if (type1 instanceof Class<?>)
+      {
+         Class<?> clazz = (Class<?>) type1;
+         if (matches(clazz, EMPTY_TYPES, type2))
+         {
+            return true;
+         }
+      }
+      if (type1 instanceof ParameterizedType)
+      {
+         ParameterizedType parameterizedType1 = (ParameterizedType) type1;
+         if (parameterizedType1.getRawType() instanceof Class)
+         {
+            if (matches((Class<?>) parameterizedType1.getRawType(), parameterizedType1.getActualTypeArguments(), type2))
+            {
+               return true;
+            }
+         }
+      }
+      if (type1 instanceof WildcardType)
+      {
+         WildcardType wildcardType = (WildcardType) type1;
+         if (isTypeBounded(type2, wildcardType.getLowerBounds(), wildcardType.getUpperBounds()))
+         {
+            return true;
+         }
+      }
+      if (type2 instanceof WildcardType)
+      {
+         WildcardType wildcardType = (WildcardType) type2;
+         if (isTypeBounded(type1, wildcardType.getUpperBounds(), wildcardType.getLowerBounds()))
+         {
+            return true;
+         }
+      }
+      if (type1 instanceof TypeVariable<?>)
+      {
+         TypeVariable<?> typeVariable = (TypeVariable<?>) type1;
+         if (isTypeBounded(type2, EMPTY_TYPES, typeVariable.getBounds()))
+         {
+            return true;
+         }
+      }
+      if (type2 instanceof TypeVariable<?>)
+      {
+         TypeVariable<?> typeVariable = (TypeVariable<?>) type2;
+         if (isTypeBounded(type1, typeVariable.getBounds(), EMPTY_TYPES))
+         {
+            return true;
+         }
+      }
+      return false;
+   }
+
+   public static boolean isTypeBounded(Type type, Type[] lowerBounds, Type[] upperBounds)
+   {
+      if (lowerBounds.length > 0)
+      {
+         if (!isAssignableFrom(type, lowerBounds))
+         {
+            return false;
+         }
+      }
+      if (upperBounds.length > 0)
+      {
+         if (!isAssignableFrom(upperBounds, type))
+         {
+            return false;
+         }
+      }
+      return true;
+   }
+
+   public static boolean isAssignableFrom(Class<?> rawType1, Type[] actualTypeArguments1, Type type2)
+   {
+      if (type2 instanceof ParameterizedType)
+      {
+         ParameterizedType parameterizedType = (ParameterizedType) type2;
+         if (parameterizedType.getRawType() instanceof Class)
+         {
+            if (isAssignableFrom(rawType1, actualTypeArguments1, (Class<?>) parameterizedType.getRawType(), parameterizedType.getActualTypeArguments()))
+            {
+               return true;
+            }
+         }
+      }
+      else if (type2 instanceof Class)
+      {
+         Class<?> clazz = (Class<?>) type2;
+         if (isAssignableFrom(rawType1, actualTypeArguments1, clazz, EMPTY_TYPES))
+         {
+            return true;
+         }
+      }
+      return false;
+   }
+   
+   public static boolean matches(Class<?> rawType1, Type[] actualTypeArguments1, Type type2)
+   {
+      if (type2 instanceof ParameterizedType)
+      {
+         ParameterizedType parameterizedType = (ParameterizedType) type2;
+         if (parameterizedType.getRawType() instanceof Class<?>)
+         {
+            if (matches(rawType1, actualTypeArguments1, (Class<?>) parameterizedType.getRawType(), parameterizedType.getActualTypeArguments()))
+            {
+               return true;
+            }
+         }
+      }
+      else if (type2 instanceof Class<?>)
+      {
+         Class<?> clazz = (Class<?>) type2;
+         if (matches(rawType1, actualTypeArguments1, clazz, EMPTY_TYPES))
+         {
+            return true;
+         }
+      }
+      return false;
+   }
+
+   /**
+    * Check the assiginability of a set of <b>flattened</b> types. This
+    * algorithm will check whether any of the types1 matches a type in types2
+    * 
+    * @param types1
+    * @param types2
+    * @return
+    */
+   public static boolean isAssignableFrom(Set<Type> types1, Set<Type> types2)
+   {
+      for (Type type : types1)
+      {
+         if (isAssignableFrom(type, types2))
+         {
+            return true;
+         }
+      }
+      return false;
+   }
+   
+   /**
+    * Check whether whether any of the types1 matches a type in types2
+    * 
+    * @param types1
+    * @param types2
+    * @return
+    */
+   public static boolean matches(Set<Type> types1, Set<Type> types2)
+   {
+      for (Type type : types1)
+      {
+         if (matches(type, types2))
+         {
+            return true;
+         }
+      }
+      return false;
+   }
+
+   /**
+    * Check the assiginability of a set of <b>flattened</b> types. This
+    * algorithm will check whether any of the types1 matches a type in types2
+    * 
+    * @param types1
+    * @param types2
+    * @return
+    */
+   public static boolean isAssignableFrom(Set<Type> types1, Type type2)
+   {
+      for (Type type : types1)
+      {
+         if (isAssignableFrom(type, type2))
+         {
+            return true;
+         }
+      }
+      return false;
+   }
+
+   public static boolean isAssignableFrom(Type[] types1, Type type2)
+   {
+      for (Type type : types1)
+      {
+         if (isAssignableFrom(type, type2))
+         {
+            return true;
+         }
+      }
+      return false;
+   }
+
+   public static boolean isSerializable(Class<?> clazz)
+   {
+      return clazz.isPrimitive() || Serializable.class.isAssignableFrom(clazz);
+   }
+
+   public static Field ensureAccessible(Field field)
+   {
+      if (!field.isAccessible() && !isIgnorePackage(field.getDeclaringClass().getPackage()))
+      {
+         field.setAccessible(true);
+      }
+      return field;
+   }
+
+   public static Method ensureAccessible(Method method)
+   {
+      if (!method.isAccessible() && !isIgnorePackage(method.getDeclaringClass().getPackage()))
+      {
+         method.setAccessible(true);
+      }
+      return method;
+   }
+
+   public static <T> Constructor<T> ensureAccessible(Constructor<T> constructor)
+   {
+      Class<?> c = constructor.getDeclaringClass();
+      Package p = c.getPackage();
+      if (!constructor.isAccessible() && !isIgnorePackage(p))
+      {
+         constructor.setAccessible(true);
+      }
+      return constructor;
+   }
+
+   private static boolean isIgnorePackage(Package pkg)
+   {
+      if (pkg != null)
+      {
+         return pkg.getName().startsWith("java.lang");
+      }
+      else
+      {
+         return false;
+      }
+   }
+
+   public static Class<?>[] extractValues(Annotation annotation)
+   {
+      try
+      {
+         Class<?>[] valueClasses = (Class<?>[]) annotation.annotationType().getMethod("value").invoke(annotation);
+         return valueClasses;
+      }
+      catch (Exception e)
+      {
+         throw new DeploymentException(ANNOTATION_VALUES_INACCESSIBLE, e);
+      }
+   }
+
+}


Property changes on: core/trunk/impl/src/main/java/org/jboss/weld/util/reflection/Reflections.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain
Name: svn:eol-style
   + native

Modified: core/trunk/impl/src/main/java/org/jboss/weld/util/serviceProvider/DefaultServiceLoader.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/util/serviceProvider/DefaultServiceLoader.java	2009-12-03 18:08:11 UTC (rev 5210)
+++ core/trunk/impl/src/main/java/org/jboss/weld/util/serviceProvider/DefaultServiceLoader.java	2009-12-03 18:12:17 UTC (rev 5211)
@@ -31,7 +31,7 @@
 
 import org.jboss.weld.ForbiddenStateException;
 import org.jboss.weld.InvalidOperationException;
-import org.jboss.weld.util.Reflections;
+import org.jboss.weld.util.reflection.Reflections;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.slf4j.ext.XLogger;



More information about the weld-commits mailing list