[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