[weld-commits] Weld SVN: r3879 - in ri/trunk/impl/src/main/java/org/jboss: weld and 33 other directories.
weld-commits at lists.jboss.org
weld-commits at lists.jboss.org
Wed Oct 7 23:34:50 EDT 2009
Author: shane.bryzak at jboss.com
Date: 2009-10-07 23:34:46 -0400 (Wed, 07 Oct 2009)
New Revision: 3879
Added:
ri/trunk/impl/src/main/java/org/jboss/weld/
ri/trunk/impl/src/main/java/org/jboss/weld/BeanManagerImpl.java
ri/trunk/impl/src/main/java/org/jboss/weld/Container.java
ri/trunk/impl/src/main/java/org/jboss/weld/ContextualStore.java
ri/trunk/impl/src/main/java/org/jboss/weld/DefinitionException.java
ri/trunk/impl/src/main/java/org/jboss/weld/DeploymentException.java
ri/trunk/impl/src/main/java/org/jboss/weld/InconsistentSpecializationException.java
ri/trunk/impl/src/main/java/org/jboss/weld/Logger.java
ri/trunk/impl/src/main/java/org/jboss/weld/NullableDependencyException.java
ri/trunk/impl/src/main/java/org/jboss/weld/SimpleInjectionTarget.java
ri/trunk/impl/src/main/java/org/jboss/weld/SingleThreadExecutorServices.java
ri/trunk/impl/src/main/java/org/jboss/weld/UnserializableDependencyException.java
ri/trunk/impl/src/main/java/org/jboss/weld/Validator.java
ri/trunk/impl/src/main/java/org/jboss/weld/bean/
ri/trunk/impl/src/main/java/org/jboss/weld/bean/AbstractBean.java
ri/trunk/impl/src/main/java/org/jboss/weld/bean/AbstractClassBean.java
ri/trunk/impl/src/main/java/org/jboss/weld/bean/AbstractProducerBean.java
ri/trunk/impl/src/main/java/org/jboss/weld/bean/AbstractReceiverBean.java
ri/trunk/impl/src/main/java/org/jboss/weld/bean/DecoratorImpl.java
ri/trunk/impl/src/main/java/org/jboss/weld/bean/DisposalMethod.java
ri/trunk/impl/src/main/java/org/jboss/weld/bean/ForwardingBean.java
ri/trunk/impl/src/main/java/org/jboss/weld/bean/ForwardingDecorator.java
ri/trunk/impl/src/main/java/org/jboss/weld/bean/InterceptorImpl.java
ri/trunk/impl/src/main/java/org/jboss/weld/bean/ManagedBean.java
ri/trunk/impl/src/main/java/org/jboss/weld/bean/NewBean.java
ri/trunk/impl/src/main/java/org/jboss/weld/bean/NewManagedBean.java
ri/trunk/impl/src/main/java/org/jboss/weld/bean/NewSessionBean.java
ri/trunk/impl/src/main/java/org/jboss/weld/bean/ProducerField.java
ri/trunk/impl/src/main/java/org/jboss/weld/bean/ProducerMethod.java
ri/trunk/impl/src/main/java/org/jboss/weld/bean/RIBean.java
ri/trunk/impl/src/main/java/org/jboss/weld/bean/SessionBean.java
ri/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/
ri/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/AbstractBuiltInBean.java
ri/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/DefaultValidatorBean.java
ri/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/DefaultValidatorFactoryBean.java
ri/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/ExtensionBean.java
ri/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/InjectionPointBean.java
ri/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/ManagerBean.java
ri/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/PrincipalBean.java
ri/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/UserTransactionBean.java
ri/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/facade/
ri/trunk/impl/src/main/java/org/jboss/weld/bean/ee/
ri/trunk/impl/src/main/java/org/jboss/weld/bean/interceptor/
ri/trunk/impl/src/main/java/org/jboss/weld/bean/proxy/
ri/trunk/impl/src/main/java/org/jboss/weld/bootstrap/
ri/trunk/impl/src/main/java/org/jboss/weld/bootstrap/AbstractBeanDeployer.java
ri/trunk/impl/src/main/java/org/jboss/weld/bootstrap/BeanDeployer.java
ri/trunk/impl/src/main/java/org/jboss/weld/bootstrap/BeanDeployerEnvironment.java
ri/trunk/impl/src/main/java/org/jboss/weld/bootstrap/BeanDeployment.java
ri/trunk/impl/src/main/java/org/jboss/weld/bootstrap/ExtensionBeanDeployer.java
ri/trunk/impl/src/main/java/org/jboss/weld/bootstrap/ExtensionBeanDeployerEnvironment.java
ri/trunk/impl/src/main/java/org/jboss/weld/bootstrap/WebBeansBootstrap.java
ri/trunk/impl/src/main/java/org/jboss/weld/bootstrap/events/
ri/trunk/impl/src/main/java/org/jboss/weld/context/
ri/trunk/impl/src/main/java/org/jboss/weld/context/AbstractApplicationContext.java
ri/trunk/impl/src/main/java/org/jboss/weld/context/AbstractContext.java
ri/trunk/impl/src/main/java/org/jboss/weld/context/AbstractMapContext.java
ri/trunk/impl/src/main/java/org/jboss/weld/context/AbstractThreadLocalMapContext.java
ri/trunk/impl/src/main/java/org/jboss/weld/context/ApplicationContext.java
ri/trunk/impl/src/main/java/org/jboss/weld/context/ContextLifecycle.java
ri/trunk/impl/src/main/java/org/jboss/weld/context/ConversationContext.java
ri/trunk/impl/src/main/java/org/jboss/weld/context/CreationalContextImpl.java
ri/trunk/impl/src/main/java/org/jboss/weld/context/DependentContext.java
ri/trunk/impl/src/main/java/org/jboss/weld/context/DependentInstancesStore.java
ri/trunk/impl/src/main/java/org/jboss/weld/context/ForwardingContextual.java
ri/trunk/impl/src/main/java/org/jboss/weld/context/ForwardingWBCreationalContext.java
ri/trunk/impl/src/main/java/org/jboss/weld/context/RequestContext.java
ri/trunk/impl/src/main/java/org/jboss/weld/context/SerializableContextual.java
ri/trunk/impl/src/main/java/org/jboss/weld/context/SerializableContextualInstance.java
ri/trunk/impl/src/main/java/org/jboss/weld/context/SessionContext.java
ri/trunk/impl/src/main/java/org/jboss/weld/context/SingletonContext.java
ri/trunk/impl/src/main/java/org/jboss/weld/context/WBCreationalContext.java
ri/trunk/impl/src/main/java/org/jboss/weld/context/beanstore/
ri/trunk/impl/src/main/java/org/jboss/weld/conversation/
ri/trunk/impl/src/main/java/org/jboss/weld/ejb/
ri/trunk/impl/src/main/java/org/jboss/weld/el/
ri/trunk/impl/src/main/java/org/jboss/weld/event/
ri/trunk/impl/src/main/java/org/jboss/weld/injection/
ri/trunk/impl/src/main/java/org/jboss/weld/introspector/
ri/trunk/impl/src/main/java/org/jboss/weld/introspector/AnnotationStore.java
ri/trunk/impl/src/main/java/org/jboss/weld/introspector/ConstructorSignature.java
ri/trunk/impl/src/main/java/org/jboss/weld/introspector/ForwardingAnnotated.java
ri/trunk/impl/src/main/java/org/jboss/weld/introspector/ForwardingWBAnnotated.java
ri/trunk/impl/src/main/java/org/jboss/weld/introspector/ForwardingWBAnnotation.java
ri/trunk/impl/src/main/java/org/jboss/weld/introspector/ForwardingWBClass.java
ri/trunk/impl/src/main/java/org/jboss/weld/introspector/ForwardingWBConstructor.java
ri/trunk/impl/src/main/java/org/jboss/weld/introspector/ForwardingWBField.java
ri/trunk/impl/src/main/java/org/jboss/weld/introspector/ForwardingWBMember.java
ri/trunk/impl/src/main/java/org/jboss/weld/introspector/ForwardingWBMethod.java
ri/trunk/impl/src/main/java/org/jboss/weld/introspector/ForwardingWBParameter.java
ri/trunk/impl/src/main/java/org/jboss/weld/introspector/MethodSignature.java
ri/trunk/impl/src/main/java/org/jboss/weld/introspector/WBAnnotated.java
ri/trunk/impl/src/main/java/org/jboss/weld/introspector/WBAnnotation.java
ri/trunk/impl/src/main/java/org/jboss/weld/introspector/WBCallable.java
ri/trunk/impl/src/main/java/org/jboss/weld/introspector/WBClass.java
ri/trunk/impl/src/main/java/org/jboss/weld/introspector/WBConstructor.java
ri/trunk/impl/src/main/java/org/jboss/weld/introspector/WBField.java
ri/trunk/impl/src/main/java/org/jboss/weld/introspector/WBMember.java
ri/trunk/impl/src/main/java/org/jboss/weld/introspector/WBMethod.java
ri/trunk/impl/src/main/java/org/jboss/weld/introspector/WBParameter.java
ri/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/
ri/trunk/impl/src/main/java/org/jboss/weld/jsf/
ri/trunk/impl/src/main/java/org/jboss/weld/jsp/
ri/trunk/impl/src/main/java/org/jboss/weld/literal/
ri/trunk/impl/src/main/java/org/jboss/weld/metadata/
ri/trunk/impl/src/main/java/org/jboss/weld/metadata/TypeStore.java
ri/trunk/impl/src/main/java/org/jboss/weld/metadata/cache/
ri/trunk/impl/src/main/java/org/jboss/weld/persistence/
ri/trunk/impl/src/main/java/org/jboss/weld/resolution/
ri/trunk/impl/src/main/java/org/jboss/weld/resources/
ri/trunk/impl/src/main/java/org/jboss/weld/servlet/
ri/trunk/impl/src/main/java/org/jboss/weld/util/
ri/trunk/impl/src/main/java/org/jboss/weld/util/ApiAbstraction.java
ri/trunk/impl/src/main/java/org/jboss/weld/util/Beans.java
ri/trunk/impl/src/main/java/org/jboss/weld/util/Names.java
ri/trunk/impl/src/main/java/org/jboss/weld/util/Observers.java
ri/trunk/impl/src/main/java/org/jboss/weld/util/Proxies.java
ri/trunk/impl/src/main/java/org/jboss/weld/util/Reflections.java
ri/trunk/impl/src/main/java/org/jboss/weld/util/Strings.java
ri/trunk/impl/src/main/java/org/jboss/weld/util/Types.java
ri/trunk/impl/src/main/java/org/jboss/weld/util/collections/
ri/trunk/impl/src/main/java/org/jboss/weld/util/dom/
ri/trunk/impl/src/main/java/org/jboss/weld/util/el/
ri/trunk/impl/src/main/java/org/jboss/weld/util/reflection/
ri/trunk/impl/src/main/java/org/jboss/weld/util/serviceProvider/
ri/trunk/impl/src/main/java/org/jboss/weld/ws/
ri/trunk/impl/src/main/java/org/jboss/weld/xml/
Removed:
ri/trunk/impl/src/main/java/org/jboss/webbeans/
Modified:
ri/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/facade/AbstractFacade.java
ri/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/facade/AbstractFacadeBean.java
ri/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/facade/EventBean.java
ri/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/facade/FacadeBeanResolvableTransformer.java
ri/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/facade/InstanceBean.java
ri/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/facade/InstanceImpl.java
ri/trunk/impl/src/main/java/org/jboss/weld/bean/ee/EEResourceProducerField.java
ri/trunk/impl/src/main/java/org/jboss/weld/bean/ee/PersistenceContextProducerField.java
ri/trunk/impl/src/main/java/org/jboss/weld/bean/interceptor/ClassInterceptionHandlerFactory.java
ri/trunk/impl/src/main/java/org/jboss/weld/bean/interceptor/InterceptorBindingsAdapter.java
ri/trunk/impl/src/main/java/org/jboss/weld/bean/interceptor/InterceptorInterceptionHandlerFactory.java
ri/trunk/impl/src/main/java/org/jboss/weld/bean/proxy/ClientProxyInstance.java
ri/trunk/impl/src/main/java/org/jboss/weld/bean/proxy/ClientProxyMethodHandler.java
ri/trunk/impl/src/main/java/org/jboss/weld/bean/proxy/ClientProxyProvider.java
ri/trunk/impl/src/main/java/org/jboss/weld/bean/proxy/DecoratorProxyMethodHandler.java
ri/trunk/impl/src/main/java/org/jboss/weld/bean/proxy/EnterpriseBeanInstance.java
ri/trunk/impl/src/main/java/org/jboss/weld/bean/proxy/EnterpriseBeanProxyMethodHandler.java
ri/trunk/impl/src/main/java/org/jboss/weld/bean/proxy/Marker.java
ri/trunk/impl/src/main/java/org/jboss/weld/bootstrap/events/AbstractBeanDiscoveryEvent.java
ri/trunk/impl/src/main/java/org/jboss/weld/bootstrap/events/AbstractContainerEvent.java
ri/trunk/impl/src/main/java/org/jboss/weld/bootstrap/events/AfterBeanDiscoveryImpl.java
ri/trunk/impl/src/main/java/org/jboss/weld/bootstrap/events/AfterDeploymentValidationImpl.java
ri/trunk/impl/src/main/java/org/jboss/weld/bootstrap/events/BeforeBeanDiscoveryImpl.java
ri/trunk/impl/src/main/java/org/jboss/weld/bootstrap/events/BeforeShutdownImpl.java
ri/trunk/impl/src/main/java/org/jboss/weld/bootstrap/events/ProcessAnnotatedTypeImpl.java
ri/trunk/impl/src/main/java/org/jboss/weld/bootstrap/events/ProcessObserverMethodImpl.java
ri/trunk/impl/src/main/java/org/jboss/weld/bootstrap/events/ProcessProducerImpl.java
ri/trunk/impl/src/main/java/org/jboss/weld/context/beanstore/AbstractAttributeBackedBeanStore.java
ri/trunk/impl/src/main/java/org/jboss/weld/context/beanstore/HashMapBeanStore.java
ri/trunk/impl/src/main/java/org/jboss/weld/context/beanstore/NamingScheme.java
ri/trunk/impl/src/main/java/org/jboss/weld/conversation/AbstractConversationManager.java
ri/trunk/impl/src/main/java/org/jboss/weld/conversation/ConversationEntry.java
ri/trunk/impl/src/main/java/org/jboss/weld/conversation/ConversationImpl.java
ri/trunk/impl/src/main/java/org/jboss/weld/conversation/JavaSEConversationTerminator.java
ri/trunk/impl/src/main/java/org/jboss/weld/conversation/NumericConversationIdGenerator.java
ri/trunk/impl/src/main/java/org/jboss/weld/conversation/ServletConversationManager.java
ri/trunk/impl/src/main/java/org/jboss/weld/ejb/EJBApiAbstraction.java
ri/trunk/impl/src/main/java/org/jboss/weld/ejb/EjbDescriptors.java
ri/trunk/impl/src/main/java/org/jboss/weld/ejb/InternalEjbDescriptor.java
ri/trunk/impl/src/main/java/org/jboss/weld/ejb/SessionBeanInterceptor.java
ri/trunk/impl/src/main/java/org/jboss/weld/el/AbstractWebBeansELResolver.java
ri/trunk/impl/src/main/java/org/jboss/weld/el/ELCreationalContext.java
ri/trunk/impl/src/main/java/org/jboss/weld/el/ELCreationalContextStack.java
ri/trunk/impl/src/main/java/org/jboss/weld/el/Namespace.java
ri/trunk/impl/src/main/java/org/jboss/weld/el/WebBeansELContextListener.java
ri/trunk/impl/src/main/java/org/jboss/weld/el/WebBeansELResolver.java
ri/trunk/impl/src/main/java/org/jboss/weld/el/WebBeansExpressionFactory.java
ri/trunk/impl/src/main/java/org/jboss/weld/el/WebBeansMethodExpression.java
ri/trunk/impl/src/main/java/org/jboss/weld/el/WebBeansValueExpression.java
ri/trunk/impl/src/main/java/org/jboss/weld/event/AsynchronousTransactionalEventNotification.java
ri/trunk/impl/src/main/java/org/jboss/weld/event/DeferredEventNotification.java
ri/trunk/impl/src/main/java/org/jboss/weld/event/EventImpl.java
ri/trunk/impl/src/main/java/org/jboss/weld/event/ObserverFactory.java
ri/trunk/impl/src/main/java/org/jboss/weld/event/ObserverMethodImpl.java
ri/trunk/impl/src/main/java/org/jboss/weld/event/Status.java
ri/trunk/impl/src/main/java/org/jboss/weld/event/TransactionSynchronizedRunnable.java
ri/trunk/impl/src/main/java/org/jboss/weld/event/TransactionalObserverMethodImpl.java
ri/trunk/impl/src/main/java/org/jboss/weld/injection/ConstructorInjectionPoint.java
ri/trunk/impl/src/main/java/org/jboss/weld/injection/Exceptions.java
ri/trunk/impl/src/main/java/org/jboss/weld/injection/FieldInjectionPoint.java
ri/trunk/impl/src/main/java/org/jboss/weld/injection/InjectionContextImpl.java
ri/trunk/impl/src/main/java/org/jboss/weld/injection/MethodInjectionPoint.java
ri/trunk/impl/src/main/java/org/jboss/weld/injection/ParameterInjectionPoint.java
ri/trunk/impl/src/main/java/org/jboss/weld/injection/WBInjectionPoint.java
ri/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/AbstractWBAnnotated.java
ri/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/AbstractWBCallable.java
ri/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/AbstractWBMember.java
ri/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/ConstructorSignatureImpl.java
ri/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/MethodSignatureImpl.java
ri/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WBAnnotationImpl.java
ri/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WBClassImpl.java
ri/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WBConstructorImpl.java
ri/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WBFieldImpl.java
ri/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WBMethodImpl.java
ri/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WBParameterImpl.java
ri/trunk/impl/src/main/java/org/jboss/weld/jsf/ConversationAwareViewHandler.java
ri/trunk/impl/src/main/java/org/jboss/weld/jsf/FacesUrlTransformer.java
ri/trunk/impl/src/main/java/org/jboss/weld/jsf/JsfApiAbstraction.java
ri/trunk/impl/src/main/java/org/jboss/weld/jsf/JsfHelper.java
ri/trunk/impl/src/main/java/org/jboss/weld/jsf/WebBeansPhaseListener.java
ri/trunk/impl/src/main/java/org/jboss/weld/literal/AnyLiteral.java
ri/trunk/impl/src/main/java/org/jboss/weld/literal/BindingTypeLiteral.java
ri/trunk/impl/src/main/java/org/jboss/weld/literal/DefaultLiteral.java
ri/trunk/impl/src/main/java/org/jboss/weld/literal/InjectLiteral.java
ri/trunk/impl/src/main/java/org/jboss/weld/literal/InterceptorBindingTypeLiteral.java
ri/trunk/impl/src/main/java/org/jboss/weld/literal/NewLiteral.java
ri/trunk/impl/src/main/java/org/jboss/weld/literal/NormalScopeLiteral.java
ri/trunk/impl/src/main/java/org/jboss/weld/literal/ScopeLiteral.java
ri/trunk/impl/src/main/java/org/jboss/weld/literal/StereotypeLiteral.java
ri/trunk/impl/src/main/java/org/jboss/weld/metadata/cache/AnnotationModel.java
ri/trunk/impl/src/main/java/org/jboss/weld/metadata/cache/BindingTypeModel.java
ri/trunk/impl/src/main/java/org/jboss/weld/metadata/cache/InterceptorBindingModel.java
ri/trunk/impl/src/main/java/org/jboss/weld/metadata/cache/MergedStereotypes.java
ri/trunk/impl/src/main/java/org/jboss/weld/metadata/cache/MetaAnnotationStore.java
ri/trunk/impl/src/main/java/org/jboss/weld/metadata/cache/ScopeModel.java
ri/trunk/impl/src/main/java/org/jboss/weld/metadata/cache/StereotypeModel.java
ri/trunk/impl/src/main/java/org/jboss/weld/persistence/PersistenceApiAbstraction.java
ri/trunk/impl/src/main/java/org/jboss/weld/resolution/ForwardingResolvable.java
ri/trunk/impl/src/main/java/org/jboss/weld/resolution/InterceptorResolvable.java
ri/trunk/impl/src/main/java/org/jboss/weld/resolution/NameBasedResolver.java
ri/trunk/impl/src/main/java/org/jboss/weld/resolution/NewResolvableTransformer.java
ri/trunk/impl/src/main/java/org/jboss/weld/resolution/Resolvable.java
ri/trunk/impl/src/main/java/org/jboss/weld/resolution/ResolvableFactory.java
ri/trunk/impl/src/main/java/org/jboss/weld/resolution/ResolvableTransformer.java
ri/trunk/impl/src/main/java/org/jboss/weld/resolution/ResolvableWBClass.java
ri/trunk/impl/src/main/java/org/jboss/weld/resolution/TypeSafeBeanResolver.java
ri/trunk/impl/src/main/java/org/jboss/weld/resolution/TypeSafeDecoratorResolver.java
ri/trunk/impl/src/main/java/org/jboss/weld/resolution/TypeSafeDisposerResolver.java
ri/trunk/impl/src/main/java/org/jboss/weld/resolution/TypeSafeInterceptorResolver.java
ri/trunk/impl/src/main/java/org/jboss/weld/resolution/TypeSafeObserverResolver.java
ri/trunk/impl/src/main/java/org/jboss/weld/resolution/TypeSafeResolver.java
ri/trunk/impl/src/main/java/org/jboss/weld/resources/ClassTransformer.java
ri/trunk/impl/src/main/java/org/jboss/weld/resources/DefaultResourceLoader.java
ri/trunk/impl/src/main/java/org/jboss/weld/resources/ManagerObjectFactory.java
ri/trunk/impl/src/main/java/org/jboss/weld/servlet/ApplicationBeanStore.java
ri/trunk/impl/src/main/java/org/jboss/weld/servlet/ConversationBeanStore.java
ri/trunk/impl/src/main/java/org/jboss/weld/servlet/ConversationPropagationFilter.java
ri/trunk/impl/src/main/java/org/jboss/weld/servlet/HttpRequestSessionBeanStore.java
ri/trunk/impl/src/main/java/org/jboss/weld/servlet/HttpSessionBeanStore.java
ri/trunk/impl/src/main/java/org/jboss/weld/servlet/HttpSessionManager.java
ri/trunk/impl/src/main/java/org/jboss/weld/servlet/ServletApiAbstraction.java
ri/trunk/impl/src/main/java/org/jboss/weld/servlet/ServletHelper.java
ri/trunk/impl/src/main/java/org/jboss/weld/servlet/ServletLifecycle.java
ri/trunk/impl/src/main/java/org/jboss/weld/servlet/WebBeansListener.java
ri/trunk/impl/src/main/java/org/jboss/weld/util/collections/Arrays2.java
ri/trunk/impl/src/main/java/org/jboss/weld/util/collections/ConcurrentCache.java
ri/trunk/impl/src/main/java/org/jboss/weld/util/collections/EnumerationList.java
ri/trunk/impl/src/main/java/org/jboss/weld/util/collections/ListComparator.java
ri/trunk/impl/src/main/java/org/jboss/weld/util/dom/NodeListIterable.java
ri/trunk/impl/src/main/java/org/jboss/weld/util/dom/NodeListIterator.java
ri/trunk/impl/src/main/java/org/jboss/weld/util/el/ForwardingELContext.java
ri/trunk/impl/src/main/java/org/jboss/weld/util/el/ForwardingELResolver.java
ri/trunk/impl/src/main/java/org/jboss/weld/util/el/ForwardingExpressionFactory.java
ri/trunk/impl/src/main/java/org/jboss/weld/util/el/ForwardingMethodExpression.java
ri/trunk/impl/src/main/java/org/jboss/weld/util/el/ForwardingValueExpression.java
ri/trunk/impl/src/main/java/org/jboss/weld/util/reflection/ParameterizedTypeImpl.java
ri/trunk/impl/src/main/java/org/jboss/weld/util/serviceProvider/ServiceLoader.java
ri/trunk/impl/src/main/java/org/jboss/weld/ws/WSApiAbstraction.java
ri/trunk/impl/src/main/java/org/jboss/weld/xml/BeansXmlParser.java
Log:
refactored core packages
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/BeanManagerImpl.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/BeanManagerImpl.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/BeanManagerImpl.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/BeanManagerImpl.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,1426 @@
+/*
+ * 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;
+
+import java.io.Serializable;
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Type;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.Stack;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.concurrent.CopyOnWriteArraySet;
+import java.util.concurrent.atomic.AtomicInteger;
+
+import javax.el.ELResolver;
+import javax.el.ExpressionFactory;
+import javax.enterprise.context.ContextNotActiveException;
+import javax.enterprise.context.spi.Context;
+import javax.enterprise.context.spi.Contextual;
+import javax.enterprise.context.spi.CreationalContext;
+import javax.enterprise.inject.AmbiguousResolutionException;
+import javax.enterprise.inject.InjectionException;
+import javax.enterprise.inject.UnproxyableResolutionException;
+import javax.enterprise.inject.UnsatisfiedResolutionException;
+import javax.enterprise.inject.spi.AnnotatedType;
+import javax.enterprise.inject.spi.Bean;
+import javax.enterprise.inject.spi.Decorator;
+import javax.enterprise.inject.spi.InjectionPoint;
+import javax.enterprise.inject.spi.InjectionTarget;
+import javax.enterprise.inject.spi.InterceptionType;
+import javax.enterprise.inject.spi.Interceptor;
+import javax.enterprise.inject.spi.ObserverMethod;
+import javax.enterprise.inject.spi.PassivationCapable;
+import javax.inject.Qualifier;
+
+import org.jboss.interceptor.registry.InterceptorRegistry;
+import org.jboss.weld.bean.DecoratorImpl;
+import org.jboss.weld.bean.InterceptorImpl;
+import org.jboss.weld.bean.SessionBean;
+import org.jboss.weld.bean.proxy.ClientProxyProvider;
+import org.jboss.weld.bootstrap.api.ServiceRegistry;
+import org.jboss.weld.context.CreationalContextImpl;
+import org.jboss.weld.context.WBCreationalContext;
+import org.jboss.weld.ejb.EjbDescriptors;
+import org.jboss.weld.ejb.spi.EjbDescriptor;
+import org.jboss.weld.el.Namespace;
+import org.jboss.weld.el.WebBeansELResolver;
+import org.jboss.weld.el.WebBeansExpressionFactory;
+import org.jboss.weld.introspector.WBAnnotated;
+import org.jboss.weld.literal.AnyLiteral;
+import org.jboss.weld.literal.DefaultLiteral;
+import org.jboss.weld.log.Log;
+import org.jboss.weld.log.Logging;
+import org.jboss.weld.manager.api.WebBeansManager;
+import org.jboss.weld.metadata.cache.MetaAnnotationStore;
+import org.jboss.weld.metadata.cache.ScopeModel;
+import org.jboss.weld.resolution.NameBasedResolver;
+import org.jboss.weld.resolution.Resolvable;
+import org.jboss.weld.resolution.ResolvableFactory;
+import org.jboss.weld.resolution.ResolvableWBClass;
+import org.jboss.weld.resolution.TypeSafeBeanResolver;
+import org.jboss.weld.resolution.TypeSafeDecoratorResolver;
+import org.jboss.weld.resolution.TypeSafeInterceptorResolver;
+import org.jboss.weld.resolution.TypeSafeObserverResolver;
+import org.jboss.weld.resolution.TypeSafeResolver;
+import org.jboss.weld.resources.ClassTransformer;
+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 com.google.common.base.Function;
+import com.google.common.base.Supplier;
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Iterators;
+import com.google.common.collect.ListMultimap;
+import com.google.common.collect.Multimaps;
+
+/**
+ * Implementation of the Web Beans Manager.
+ *
+ * Essentially a singleton for registering Beans, Contexts, Observers,
+ * Interceptors etc. as well as providing resolution
+ *
+ * @author Pete Muir
+ * @author Marius Bogoevici
+ */
+public class BeanManagerImpl implements WebBeansManager, Serializable
+{
+
+
+ private static class CurrentActivity
+ {
+
+ private final Context context;
+ private final BeanManagerImpl manager;
+
+ public CurrentActivity(Context context, BeanManagerImpl manager)
+ {
+ this.context = context;
+ this.manager = manager;
+ }
+
+ public Context getContext()
+ {
+ return context;
+ }
+
+ public BeanManagerImpl getManager()
+ {
+ return manager;
+ }
+
+ @Override
+ public boolean equals(Object obj)
+ {
+ if (obj instanceof CurrentActivity)
+ {
+ return this.getContext().equals(((CurrentActivity) obj).getContext());
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+ @Override
+ public int hashCode()
+ {
+ return getContext().hashCode();
+ }
+
+ @Override
+ public String toString()
+ {
+ return getContext() + " -> " + getManager();
+ }
+ }
+
+ private static final Log log = Logging.getLog(BeanManagerImpl.class);
+
+ private static final long serialVersionUID = 3021562879133838561L;
+
+ // The JNDI key to place the manager under
+ public static final String JNDI_KEY = "java:app/Manager";
+
+ /*
+ * Application scoped services
+ * ***************************
+ */
+ private transient final ServiceRegistry services;
+
+ /*
+ * Application scoped data structures
+ * ***********************************
+ */
+
+ // Contexts are shared across the application
+ private transient final ListMultimap<Class<? extends Annotation>, Context> contexts;
+
+ // Client proxies can be used application wide
+ private transient final ClientProxyProvider clientProxyProvider;
+
+ // TODO review this structure
+ private transient final Map<String, Bean<?>> passivationCapableBeans;
+
+ // TODO review this structure
+ private transient final Map<EjbDescriptor<?>, SessionBean<?>> enterpriseBeans;
+
+ // TODO This isn't right, specialization should follow accessibility rules, but I think we can enforce these in resolve()
+ private transient final Map<Contextual<?>, Contextual<?>> specializedBeans;
+
+ /*
+ * Archive scoped data structures
+ * ******************************
+ */
+
+ /* These data structures are all non-transitive in terms of bean deployment
+ * archive accessibility, and the configuration for this bean deployment
+ * archive
+ */
+ private transient Collection<Class<?>> enabledPolicyClasses;
+ private transient Collection<Class<? extends Annotation>> enabledPolicyStereotypes;
+ private transient List<Class<?>> enabledDecoratorClasses;
+ private transient List<Class<?>> enabledInterceptorClasses;
+ private transient final Set<CurrentActivity> currentActivities;
+
+ /*
+ * Activity scoped services
+ * *************************
+ */
+
+ /* These services are scoped to this activity only, but use data
+ * structures that are transitive accessible from other bean deployment
+ * archives
+ */
+ private transient final TypeSafeBeanResolver<Bean<?>> beanResolver;
+ private transient final TypeSafeResolver<? extends Resolvable, DecoratorImpl<?>> decoratorResolver;
+ private transient final TypeSafeResolver<? extends Resolvable, InterceptorImpl<?>> interceptorResolver;
+ private transient final TypeSafeResolver<? extends Resolvable, ObserverMethod<?,?>> observerResolver;
+ private transient final NameBasedResolver nameBasedResolver;
+ private transient final ELResolver webbeansELResolver;
+ private transient Namespace rootNamespace;
+
+ /*
+ * Activity scoped data structures
+ * ********************************
+ */
+
+ /* These data structures are scoped to this bean deployment archive activity
+ * only and represent the beans, decorators, interceptors, namespaces and
+ * observers deployed in this bean deployment archive activity
+ */
+ private transient final List<Bean<?>> beans;
+ private transient final List<DecoratorImpl<?>> decorators;
+ private transient final List<InterceptorImpl<?>> interceptors;
+ private transient final List<String> namespaces;
+ private transient final List<ObserverMethod<?,?>> observers;
+
+ /*
+ * These data structures represent the managers *accessible* from this bean
+ * deployment archive activity
+ */
+ private transient final HashSet<BeanManagerImpl> accessibleManagers;
+
+ /*
+ * This data structures represents child activities for this activity, it is
+ * not transitively accessible
+ */
+ private transient final Set<BeanManagerImpl> childActivities;
+
+ private final AtomicInteger childIds;
+ private final String id;
+
+ /*
+ * Runtime data transfer
+ * *********************
+ */
+ private transient final ThreadLocal<Stack<InjectionPoint>> currentInjectionPoint;
+
+ /**
+ * Interception model
+ */
+ private transient final InterceptorRegistry<Class<?>, Interceptor<?>> boundInterceptorsRegistry = new InterceptorRegistry<Class<?>, Interceptor<?>>();
+ private transient final InterceptorRegistry<Class<?>, Class<?>> declaredInterceptorsRegistry = new InterceptorRegistry<Class<?>, Class<?>>();
+
+ /**
+ * Create a new, root, manager
+ *
+ * @param serviceRegistry
+ * @return
+ */
+ public static BeanManagerImpl newRootManager(String id, ServiceRegistry serviceRegistry)
+ {
+ ListMultimap<Class<? extends Annotation>, Context> contexts = Multimaps.newListMultimap(new ConcurrentHashMap<Class<? extends Annotation>, Collection<Context>>(), new Supplier<List<Context>>()
+ {
+
+ public List<Context> get()
+ {
+ return new CopyOnWriteArrayList<Context>();
+ }
+
+ });
+
+ return new BeanManagerImpl(
+ serviceRegistry,
+ new CopyOnWriteArrayList<Bean<?>>(),
+ new CopyOnWriteArrayList<DecoratorImpl<?>>(),
+ new CopyOnWriteArrayList<InterceptorImpl<?>>(),
+ new CopyOnWriteArrayList<ObserverMethod<?,?>>(),
+ new CopyOnWriteArrayList<String>(),
+ new ConcurrentHashMap<EjbDescriptor<?>, SessionBean<?>>(),
+ new ConcurrentHashMap<String, Bean<?>>(),
+ new ClientProxyProvider(),
+ contexts,
+ new CopyOnWriteArraySet<CurrentActivity>(),
+ new HashMap<Contextual<?>, Contextual<?>>(),
+ new ArrayList<Class<?>>(),
+ new ArrayList<Class<? extends Annotation>>(),
+ new ArrayList<Class<?>>(),
+ new ArrayList<Class<?>>(),
+ id,
+ new AtomicInteger());
+ }
+
+ /**
+ * Create a new, root, manager
+ *
+ * @param serviceRegistry
+ * @return
+ */
+ public static BeanManagerImpl newManager(BeanManagerImpl rootManager, String id, ServiceRegistry services)
+ {
+ return new BeanManagerImpl(
+ services,
+ new CopyOnWriteArrayList<Bean<?>>(),
+ new CopyOnWriteArrayList<DecoratorImpl<?>>(),
+ new CopyOnWriteArrayList<InterceptorImpl<?>>(),
+ new CopyOnWriteArrayList<ObserverMethod<?,?>>(),
+ new CopyOnWriteArrayList<String>(),
+ rootManager.getEnterpriseBeans(),
+ new ConcurrentHashMap<String, Bean<?>>(),
+ rootManager.getClientProxyProvider(),
+ rootManager.getContexts(),
+ new CopyOnWriteArraySet<CurrentActivity>(),
+ new HashMap<Contextual<?>, Contextual<?>>(),
+ new ArrayList<Class<?>>(),
+ new ArrayList<Class<? extends Annotation>>(),
+ new ArrayList<Class<?>>(),
+ new ArrayList<Class<?>>(),
+ id,
+ new AtomicInteger());
+ }
+
+ /**
+ * Create a new child manager
+ *
+ * @param parentManager
+ * @return
+ */
+ public static BeanManagerImpl newChildActivityManager(BeanManagerImpl parentManager)
+ {
+ List<Bean<?>> beans = new CopyOnWriteArrayList<Bean<?>>();
+ beans.addAll(parentManager.getBeans());
+
+ List<ObserverMethod<?,?>> registeredObservers = new CopyOnWriteArrayList<ObserverMethod<?,?>>();
+ registeredObservers.addAll(parentManager.getObservers());
+ List<String> namespaces = new CopyOnWriteArrayList<String>();
+ namespaces.addAll(parentManager.getNamespaces());
+
+ return new BeanManagerImpl(
+ parentManager.getServices(),
+ beans,
+ parentManager.getDecorators(),
+ parentManager.getInterceptors(),
+ registeredObservers,
+ namespaces,
+ parentManager.getEnterpriseBeans(),
+ parentManager.getPassivationCapableBeans(),
+ parentManager.getClientProxyProvider(),
+ parentManager.getContexts(),
+ parentManager.getCurrentActivities(),
+ parentManager.getSpecializedBeans(),
+ parentManager.getEnabledPolicyClasses(),
+ parentManager.getEnabledPolicyStereotypes(),
+ parentManager.getEnabledDecoratorClasses(),
+ parentManager.getEnabledInterceptorClasses(),
+ new StringBuilder().append(parentManager.getChildIds().incrementAndGet()).toString(),
+ parentManager.getChildIds());
+ }
+
+ /**
+ * Create a new manager
+ * @param enabledDecoratorClasses
+ *
+ * @param ejbServices the ejbResolver to use
+ */
+ private BeanManagerImpl(
+ ServiceRegistry serviceRegistry,
+ List<Bean<?>> beans,
+ List<DecoratorImpl<?>> decorators,
+ List<InterceptorImpl<?>> interceptors,
+ List<ObserverMethod<?,?>> observers,
+ List<String> namespaces,
+ Map<EjbDescriptor<?>, SessionBean<?>> enterpriseBeans,
+ Map<String, Bean<?>> riBeans,
+ ClientProxyProvider clientProxyProvider,
+ ListMultimap<Class<? extends Annotation>, Context> contexts,
+ Set<CurrentActivity> currentActivities,
+ Map<Contextual<?>, Contextual<?>> specializedBeans,
+ Collection<Class<?>> enabledPolicyClasses,
+ Collection<Class<? extends Annotation>> enabledPolicyStereotypes,
+ List<Class<?>> enabledDecoratorClasses,
+ List<Class<?>> enabledInterceptorClasses,
+ String id,
+ AtomicInteger childIds)
+ {
+ this.services = serviceRegistry;
+ this.beans = beans;
+ this.decorators = decorators;
+ this.interceptors = interceptors;
+ this.enterpriseBeans = enterpriseBeans;
+ this.passivationCapableBeans = riBeans;
+ this.clientProxyProvider = clientProxyProvider;
+ this.contexts = contexts;
+ this.currentActivities = currentActivities;
+ this.specializedBeans = specializedBeans;
+ this.observers = observers;
+ this.enabledPolicyClasses = enabledPolicyClasses;
+ this.enabledPolicyStereotypes = enabledPolicyStereotypes;
+ setEnabledDecoratorClasses(enabledDecoratorClasses);
+ setEnabledInterceptorClasses(enabledInterceptorClasses);
+ this.namespaces = namespaces;
+ this.id = id;
+ this.childIds = new AtomicInteger();
+
+ // Set up the structure to store accessible managers in
+ this.accessibleManagers = new HashSet<BeanManagerImpl>();
+
+
+
+ // TODO Currently we build the accessible bean list on the fly, we need to set it in stone once bootstrap is finished...
+ this.beanResolver = new TypeSafeBeanResolver<Bean<?>>(this, createDynamicAccessibleIterable(Transform.BEAN));
+ this.decoratorResolver = new TypeSafeDecoratorResolver(this, createDynamicAccessibleIterable(Transform.DECORATOR_BEAN));
+ this.interceptorResolver = new TypeSafeInterceptorResolver(this, createDynamicAccessibleIterable(Transform.INTERCEPTOR_BEAN));
+ this.observerResolver = new TypeSafeObserverResolver(this, createDynamicAccessibleIterable(Transform.EVENT_OBSERVER));
+ this.nameBasedResolver = new NameBasedResolver(this, createDynamicAccessibleIterable(Transform.BEAN));
+ this.webbeansELResolver = new WebBeansELResolver(this);
+ this.childActivities = new CopyOnWriteArraySet<BeanManagerImpl>();
+
+ this.currentInjectionPoint = new ThreadLocal<Stack<InjectionPoint>>()
+ {
+ @Override
+ protected Stack<InjectionPoint> initialValue()
+ {
+ return new Stack<InjectionPoint>();
+ }
+ };
+ }
+
+ private <T> Set<Iterable<T>> buildAccessibleClosure(Collection<BeanManagerImpl> hierarchy, Transform<T> transform)
+ {
+ Set<Iterable<T>> result = new HashSet<Iterable<T>>();
+ hierarchy.add(this);
+ result.add(transform.transform(this));
+ for (BeanManagerImpl beanManager : accessibleManagers)
+ {
+ // Only add if we aren't already in the tree (remove cycles)
+ if (!hierarchy.contains(beanManager))
+ {
+ result.addAll(beanManager.buildAccessibleClosure(new ArrayList<BeanManagerImpl>(hierarchy), transform));
+ }
+ }
+ return result;
+ }
+
+ private <T> Iterable<T> createDynamicAccessibleIterable(final Transform<T> transform)
+ {
+ return new Iterable<T>()
+ {
+
+ private Function<Iterable<T>, Iterator<T>> function = new Function<Iterable<T>, Iterator<T>>()
+ {
+
+ public Iterator<T> apply(Iterable<T> iterable)
+ {
+ return iterable.iterator();
+ }
+
+ };
+
+ public Iterator<T> iterator()
+ {
+ Set<Iterable<T>> iterable = buildAccessibleClosure(new ArrayList<BeanManagerImpl>(), transform);
+ return Iterators.concat(Iterators.transform(iterable.iterator(), function));
+ }
+
+ };
+ }
+
+ private <T> Iterable<T> createStaticAccessibleIterable(final Transform<T> transform)
+ {
+ Set<Iterable<T>> iterable = buildAccessibleClosure(new ArrayList<BeanManagerImpl>(), transform);
+ return Iterables.concat(iterable);
+ }
+
+ private static interface Transform<T>
+ {
+
+ public static Transform<Bean<?>> BEAN = new Transform<Bean<?>>()
+ {
+
+ public Iterable<Bean<?>> transform(BeanManagerImpl beanManager)
+ {
+ return beanManager.getBeans();
+ }
+
+ };
+
+ public static Transform<DecoratorImpl<?>> DECORATOR_BEAN = new Transform<DecoratorImpl<?>>()
+ {
+
+ public Iterable<DecoratorImpl<?>> transform(BeanManagerImpl beanManager)
+ {
+ return beanManager.getDecorators();
+ }
+
+ };
+
+ public static Transform<InterceptorImpl<?>> INTERCEPTOR_BEAN = new Transform<InterceptorImpl<?>>()
+ {
+
+ public Iterable<InterceptorImpl<?>> transform(BeanManagerImpl beanManager)
+ {
+ return beanManager.getInterceptors();
+ }
+
+ };
+
+ public static Transform<ObserverMethod<?,?>> EVENT_OBSERVER = new Transform<ObserverMethod<?,?>>()
+ {
+
+ public Iterable<ObserverMethod<?,?>> transform(BeanManagerImpl beanManager)
+ {
+ return beanManager.getObservers();
+ }
+
+ };
+
+ public static Transform<String> NAMESPACE = new Transform<String>()
+ {
+
+ public Iterable<String> transform(BeanManagerImpl beanManager)
+ {
+ return beanManager.getNamespaces();
+ }
+
+ };
+
+ public Iterable<T> transform(BeanManagerImpl beanManager);
+
+ }
+
+ public void addAccessibleBeanManager(BeanManagerImpl accessibleBeanManager)
+ {
+ accessibleManagers.add(accessibleBeanManager);
+ beanResolver.clear();
+ }
+
+ protected Set<BeanManagerImpl> getAccessibleManagers()
+ {
+
+ return accessibleManagers;
+ }
+
+ public void addBean(Bean<?> bean)
+ {
+ if (beans.contains(bean))
+ {
+ return;
+ }
+ if (bean.getClass().equals(SessionBean.class))
+ {
+ SessionBean<?> enterpriseBean = (SessionBean<?>) bean;
+ enterpriseBeans.put(enterpriseBean.getEjbDescriptor(), enterpriseBean);
+ }
+ if (bean instanceof PassivationCapable)
+ {
+ passivationCapableBeans.put(((PassivationCapable) bean).getId(), bean);
+ }
+ registerBeanNamespace(bean);
+ for (BeanManagerImpl childActivity : childActivities)
+ {
+ childActivity.addBean(bean);
+ }
+ this.beans.add(bean);
+ beanResolver.clear();
+ }
+
+ public void addDecorator(DecoratorImpl<?> bean)
+ {
+ decorators.add(bean);
+ passivationCapableBeans.put(bean.getId(), bean);
+ decoratorResolver.clear();
+ }
+
+ public <T> Set<ObserverMethod<?, T>> resolveObserverMethods(T event, Annotation... bindings)
+ {
+ Observers.checkEventObjectType(event);
+ return resolveObserverMethods(event.getClass(), bindings);
+ }
+
+ public void addInterceptor(InterceptorImpl<?> bean)
+ {
+ interceptors.add(bean);
+ //TODO decide if interceptor is passivationCapable
+ interceptorResolver.clear();
+ }
+
+
+ @SuppressWarnings("unchecked")
+ private <T> Set<ObserverMethod<?, T>> resolveObserverMethods(Type eventType, Annotation... bindings)
+ {
+ checkBindingTypes(Arrays.asList(bindings));
+
+ // Manually hack in the default annotations here. We need to redo all the annotation defaulting throughout. PLM
+ HashSet<Annotation> bindingAnnotations = new HashSet<Annotation>(Arrays.asList(bindings));
+ if (bindingAnnotations.size() == 0)
+ {
+ bindingAnnotations.add(new DefaultLiteral());
+ }
+ bindingAnnotations.add(new AnyLiteral());
+ Set<ObserverMethod<?, T>> observers = new HashSet<ObserverMethod<?, T>>();
+ Set<ObserverMethod<?,?>> eventObservers = observerResolver.resolve(ResolvableFactory.of(new Reflections.HierarchyDiscovery(eventType).getFlattenedTypes(), bindingAnnotations, null));
+ for (ObserverMethod<?,?> observer : eventObservers)
+ {
+ observers.add((ObserverMethod<?, T>) observer);
+ }
+ return observers;
+ }
+
+ private void checkBindingTypes(Collection<Annotation> bindings)
+ {
+ HashSet<Annotation> bindingAnnotations = new HashSet<Annotation>(bindings);
+ for (Annotation annotation : bindings)
+ {
+ if (!getServices().get(MetaAnnotationStore.class).getBindingTypeModel(annotation.annotationType()).isValid())
+ {
+ throw new IllegalArgumentException("Not a binding type " + annotation);
+ }
+ }
+ if (bindingAnnotations.size() < bindings.size())
+ {
+ throw new IllegalArgumentException("Duplicate binding types: " + bindings);
+ }
+
+ }
+
+ /**
+ * A collection of enabled policy classes
+ *
+ */
+ public Collection<Class<?>> getEnabledPolicyClasses()
+ {
+ return Collections.unmodifiableCollection(enabledPolicyClasses);
+ }
+
+ /**
+ * @return the enabledPolicySterotypes
+ */
+ public Collection<Class<? extends Annotation>> getEnabledPolicyStereotypes()
+ {
+ return Collections.unmodifiableCollection(enabledPolicyStereotypes);
+ }
+
+ public boolean isBeanEnabled(Bean<?> bean)
+ {
+ return Beans.isBeanEnabled(bean, getEnabledPolicyClasses(), getEnabledPolicyStereotypes());
+ }
+
+ /**
+ * @return the enabledDecoratorClasses
+ */
+ public List<Class<?>> getEnabledDecoratorClasses()
+ {
+ return Collections.unmodifiableList(enabledDecoratorClasses);
+ }
+
+ /**
+ * @return the enabledInterceptorClasses
+ */
+ public List<Class<?>> getEnabledInterceptorClasses()
+ {
+ return Collections.unmodifiableList(enabledInterceptorClasses);
+ }
+
+ public void setEnabledPolicyClasses(Collection<Class<?>> enabledPolicyClasses)
+ {
+ this.enabledPolicyClasses = enabledPolicyClasses;
+ }
+
+ public void setEnabledPolicyStereotypes(Collection<Class<? extends Annotation>> enabledPolicySterotypes)
+ {
+ this.enabledPolicyStereotypes = enabledPolicySterotypes;
+ }
+
+ public void setEnabledDecoratorClasses(List<Class<?>> enabledDecoratorClasses)
+ {
+ this.enabledDecoratorClasses = enabledDecoratorClasses;
+ }
+
+ public void setEnabledInterceptorClasses(List<Class<?>> enabledInterceptorClasses)
+ {
+ this.enabledInterceptorClasses = enabledInterceptorClasses;
+ }
+
+ public Set<Bean<?>> getBeans(Type beanType, Annotation... bindings)
+ {
+ return getBeans(ResolvableWBClass.of(beanType, bindings, this), bindings);
+ }
+
+ public Set<Bean<?>> getBeans(WBAnnotated<?, ?> element, Annotation... bindings)
+ {
+ for (Annotation annotation : element.getAnnotations())
+ {
+ if (!getServices().get(MetaAnnotationStore.class).getBindingTypeModel(annotation.annotationType()).isValid())
+ {
+ throw new IllegalArgumentException("Not a binding type " + annotation);
+ }
+ }
+// for (Type type : element.getActualTypeArguments())
+// {
+// if (type instanceof WildcardType)
+// {
+// throw new IllegalArgumentException("Cannot resolve a type parameterized with a wildcard " + element);
+// }
+// if (type instanceof TypeVariable<?>)
+// {
+// throw new IllegalArgumentException("Cannot resolve a type parameterized with a type parameter " + element);
+// }
+// }
+ if (bindings != null && bindings.length > element.getMetaAnnotations(Qualifier.class).size())
+ {
+ throw new IllegalArgumentException("Duplicate bindings (" + Arrays.asList(bindings) + ") type passed " + element.toString());
+ }
+ return beanResolver.resolve(ResolvableFactory.of(element));
+ }
+
+ public Set<Bean<?>> getInjectableBeans(InjectionPoint injectionPoint)
+ {
+ boolean registerInjectionPoint = !injectionPoint.getType().equals(InjectionPoint.class);
+ try
+ {
+ if (registerInjectionPoint)
+ {
+ currentInjectionPoint.get().push(injectionPoint);
+ }
+ // TODO Do this properly
+ Set<Bean<?>> beans = getBeans(ResolvableWBClass.of(injectionPoint.getType(), injectionPoint.getQualifiers().toArray(new Annotation[0]), this));
+ Set<Bean<?>> injectableBeans = new HashSet<Bean<?>>();
+ for (Bean<?> bean : beans)
+ {
+ if (!(bean instanceof Decorator || bean instanceof Interceptor))
+ {
+ injectableBeans.add(bean);
+ }
+ }
+ return injectableBeans;
+ }
+ finally
+ {
+ if (registerInjectionPoint)
+ {
+ currentInjectionPoint.get().pop();
+ }
+ }
+ }
+
+ protected void registerBeanNamespace(Bean<?> bean)
+ {
+ if (bean.getName() != null && bean.getName().indexOf('.') > 0)
+ {
+ namespaces.add(bean.getName().substring(0, bean.getName().lastIndexOf('.')));
+ }
+ }
+
+ /**
+ * Gets the class-mapped beans. For internal use.
+ *
+ * @return The bean map
+ */
+ public Map<EjbDescriptor<?>, SessionBean<?>> getEnterpriseBeans()
+ {
+ return enterpriseBeans;
+ }
+
+ /**
+ * The beans registered with the Web Bean manager which are resolvable. Does
+ * not include interceptor and decorator beans
+ *
+ * @return The list of known beans
+ */
+ public List<Bean<?>> getBeans()
+ {
+ return Collections.unmodifiableList(beans);
+ }
+
+ public List<DecoratorImpl<?>> getDecorators()
+ {
+ return Collections.unmodifiableList(decorators);
+ }
+
+ public List<InterceptorImpl<?>> getInterceptors()
+ {
+ return Collections.unmodifiableList(interceptors);
+ }
+
+ public Iterable<Bean<?>> getAccessibleBeans()
+ {
+ return createDynamicAccessibleIterable(Transform.BEAN);
+ }
+
+ /**
+ * Get all the spec defined beans, including interceptor beans and decorator
+ * beans. This is behavior is different to getBeans() which returns only
+ * resolvable beans.
+ *
+ * TODO Rename method, merge into whatever we use for passivation capable or
+ * split out decorators
+ *
+ * WARNING, method will go away!
+ *
+ * @return
+ */
+ public Map<String, Bean<?>> getPassivationCapableBeans()
+ {
+ return Collections.unmodifiableMap(passivationCapableBeans);
+ }
+
+ public void addContext(Context context)
+ {
+ contexts.put(context.getScope(), context);
+ }
+
+ /**
+ * Does the actual observer registration
+ *
+ * @param observer
+= */
+ public void addObserver(ObserverMethod<?, ?> observer)
+ {
+ //checkEventType(observer.getObservedType());
+ observers.add(observer);
+ log.trace("Added observer " + observer);
+ for (BeanManagerImpl childActivity : childActivities)
+ {
+ childActivity.addObserver(observer);
+ }
+ }
+
+ /**
+ * Fires an event object with given event object for given bindings
+ *
+ * @param event The event object to pass along
+ * @param bindings The binding types to match
+ *
+ * @see javax.enterprise.inject.spi.BeanManager#fireEvent(java.lang.Object,
+ * java.lang.annotation.Annotation[])
+ */
+ public void fireEvent(Object event, Annotation... qualifiers)
+ {
+ fireEvent(event.getClass(), event, qualifiers);
+ }
+
+ public void fireEvent(Type eventType, Object event, Annotation... qualifiers)
+ {
+ Observers.checkEventObjectType(event);
+ notifyObservers(event, resolveObserverMethods(eventType, qualifiers));
+ }
+
+ private <T> void notifyObservers(final T event, final Set<ObserverMethod<?, T>> observers)
+ {
+ for (ObserverMethod<?, T> observer : observers)
+ {
+ observer.notify(event);
+ }
+ }
+
+ /**
+ * Gets an active context of the given scope. Throws an exception if there
+ * are no active contexts found or if there are too many matches
+ *
+ * @param scopeType The scope to match
+ * @return A single active context of the given scope
+ *
+ * @see javax.enterprise.inject.spi.BeanManager#getContext(java.lang.Class)
+ */
+ public Context getContext(Class<? extends Annotation> scopeType)
+ {
+ List<Context> activeContexts = new ArrayList<Context>();
+ for (Context context : contexts.get(scopeType))
+ {
+ if (context.isActive())
+ {
+ activeContexts.add(context);
+ }
+ }
+ if (activeContexts.isEmpty())
+ {
+ throw new ContextNotActiveException("No active contexts for scope type " + scopeType.getName());
+ }
+ if (activeContexts.size() > 1)
+ {
+ throw new IllegalStateException("More than one context active for scope type " + scopeType.getName());
+ }
+ return activeContexts.iterator().next();
+
+ }
+
+ public Object getReference(Bean<?> bean, CreationalContext<?> creationalContext)
+ {
+ bean = getMostSpecializedBean(bean);
+ if (creationalContext instanceof WBCreationalContext<?>)
+ {
+ creationalContext = ((WBCreationalContext<?>) creationalContext).getCreationalContext(bean);
+ }
+ if (getServices().get(MetaAnnotationStore.class).getScopeModel(bean.getScope()).isNormal())
+ {
+ if (creationalContext != null || getContext(bean.getScope()).get(bean) != null)
+ {
+ return clientProxyProvider.getClientProxy(this, bean);
+ }
+ else
+ {
+ return null;
+ }
+ }
+ else
+ {
+ return getContext(bean.getScope()).get((Contextual) bean, creationalContext);
+ }
+ }
+
+ public Object getReference(Bean<?> bean, Type beanType, CreationalContext<?> creationalContext)
+ {
+
+ if (!Reflections.isAssignableFrom(bean.getTypes(), beanType))
+ {
+ throw new IllegalArgumentException("The given beanType is not a type " + beanType +" of the bean " + bean );
+ }
+ return getReference(bean, creationalContext);
+ }
+
+
+ /**
+ * Get a reference, registering the injection point used.
+ *
+ * @param injectionPoint the injection point to register
+ * @param resolvedBean the bean to get a reference to
+ * @param creationalContext the creationalContext
+ * @return
+ */
+ public Object getReference(InjectionPoint injectionPoint, Bean<?> resolvedBean, CreationalContext<?> creationalContext)
+ {
+ boolean registerInjectionPoint = (injectionPoint != null && !injectionPoint.getType().equals(InjectionPoint.class));
+ try
+ {
+ if (registerInjectionPoint)
+ {
+ currentInjectionPoint.get().push(injectionPoint);
+ }
+ if (getServices().get(MetaAnnotationStore.class).getScopeModel(resolvedBean.getScope()).isNormal() && !Proxies.isTypeProxyable(injectionPoint.getType()))
+ {
+ throw new UnproxyableResolutionException("Attempting to inject an unproxyable normal scoped bean " + resolvedBean + " into " + injectionPoint);
+ }
+ // TODO Can we move this logic to getReference?
+ if (creationalContext instanceof WBCreationalContext<?>)
+ {
+ WBCreationalContext<?> wbCreationalContext = (WBCreationalContext<?>) creationalContext;
+ if (wbCreationalContext.containsIncompleteInstance(resolvedBean))
+ {
+ return wbCreationalContext.getIncompleteInstance(resolvedBean);
+ }
+ else
+ {
+ return getReference(resolvedBean, wbCreationalContext);
+ }
+ }
+ else
+ {
+ return getReference(resolvedBean, creationalContext);
+ }
+ }
+ finally
+ {
+ if (registerInjectionPoint)
+ {
+ currentInjectionPoint.get().pop();
+ }
+ }
+ }
+
+
+ public Object getInjectableReference(InjectionPoint injectionPoint, CreationalContext<?> creationalContext)
+ {
+ WBAnnotated<?, ?> element = ResolvableWBClass.of(injectionPoint.getType(), injectionPoint.getQualifiers().toArray(new Annotation[0]), this);
+ Bean<?> resolvedBean = getBean(element, element.getBindingsAsArray());
+ return getReference(injectionPoint, resolvedBean, creationalContext);
+ }
+
+ /**
+ * Returns an instance by API type and binding types
+ *
+ * @param beanType The API type to match
+ * @param bindings The binding types to match
+ * @return An instance of the bean
+ *
+ */
+ @Deprecated
+ public <T> T getInstanceByType(Class<T> beanType, Annotation... bindings)
+ {
+ Set<Bean<?>> beans = getBeans(beanType, bindings);
+ Bean<?> bean = resolve(beans);
+ Object reference = getReference(bean, beanType, createCreationalContext(bean));
+
+ @SuppressWarnings("unchecked")
+ T instance = (T) reference;
+
+ return instance;
+ }
+
+ public <T> Bean<T> getBean(WBAnnotated<T, ?> element, Annotation... bindings)
+ {
+ Bean<T> bean = (Bean<T>) resolve(getBeans(element, bindings));
+ if (bean == null)
+ {
+ throw new UnsatisfiedResolutionException(element + "Unable to resolve any Web Beans");
+ }
+
+ boolean normalScoped = getServices().get(MetaAnnotationStore.class).getScopeModel(bean.getScope()).isNormal();
+ if (normalScoped && !Beans.isBeanProxyable(bean))
+ {
+ throw new UnproxyableResolutionException("Normal scoped bean " + bean + " is not proxyable");
+ }
+ return bean;
+ }
+
+ public Set<Bean<?>> getBeans(String name)
+ {
+ return nameBasedResolver.resolve(name);
+ }
+
+ /**
+ * Resolves a list of decorators based on API types and binding types
+ *
+ * @param types The set of API types to match
+ * @param bindings The binding types to match
+ * @return A list of matching decorators
+ *
+ * @see javax.enterprise.inject.spi.BeanManager#resolveDecorators(java.util.Set,
+ * java.lang.annotation.Annotation[])
+ */
+ public List<Decorator<?>> resolveDecorators(Set<Type> types, Annotation... bindings)
+ {
+ checkResolveDecoratorsArguments(types, Arrays.asList(bindings));
+ // TODO Fix this cast and make the resolver return a list
+ return new ArrayList<Decorator<?>>(decoratorResolver.resolve(ResolvableFactory.of(types, null, bindings)));
+ }
+
+ public List<Decorator<?>> resolveDecorators(Set<Type> types, Set<Annotation> bindings)
+ {
+ checkResolveDecoratorsArguments(types, bindings);
+ // TODO Fix this cast and make the resolver return a list
+ return new ArrayList<Decorator<?>>(decoratorResolver.resolve(ResolvableFactory.of(types, bindings, null)));
+ }
+
+ private void checkResolveDecoratorsArguments(Set<Type> types, Collection<Annotation> bindings)
+ {
+ if (types.isEmpty())
+ {
+ throw new IllegalArgumentException("No decorator types were specified in the set");
+ }
+ checkBindingTypes(bindings);
+ }
+
+ /**
+ * Resolves a list of interceptors based on interception type and interceptor
+ * bindings
+ *
+ * @param type The interception type to resolve
+ * @param interceptorBindings The binding types to match
+ * @return A list of matching interceptors
+ *
+ * @see javax.enterprise.inject.spi.BeanManager#resolveInterceptors(javax.enterprise.inject.spi.InterceptionType,
+ * java.lang.annotation.Annotation[])
+ */
+ public List<Interceptor<?>> resolveInterceptors(InterceptionType type, Annotation... interceptorBindings)
+ {
+ return new ArrayList<Interceptor<?>>(interceptorResolver.resolve(ResolvableFactory.of(type,interceptorBindings)));
+ }
+
+ /**
+ * Get the web bean resolver. For internal use
+ *
+ * @return The resolver
+ */
+ public TypeSafeBeanResolver<Bean<?>> getBeanResolver()
+ {
+ return beanResolver;
+ }
+
+ /**
+ * Gets a string representation
+ *
+ * @return A string representation
+ */
+ @Override
+ public String toString()
+ {
+ StringBuilder buffer = new StringBuilder();
+ buffer.append("Manager\n");
+ buffer.append("Enabled policies: " + getEnabledPolicyClasses() + " " + getEnabledPolicyStereotypes() + "\n");
+ buffer.append("Registered contexts: " + contexts.keySet() + "\n");
+ buffer.append("Registered beans: " + getBeans().size() + "\n");
+ buffer.append("Specialized beans: " + specializedBeans.size() + "\n");
+ return buffer.toString();
+ }
+
+ public BeanManagerImpl createActivity()
+ {
+ BeanManagerImpl childActivity = newChildActivityManager(this);
+ childActivities.add(childActivity);
+ Container.instance().addActivity(childActivity);
+ return childActivity;
+ }
+
+ public BeanManagerImpl setCurrent(Class<? extends Annotation> scopeType)
+ {
+ if (!getServices().get(MetaAnnotationStore.class).getScopeModel(scopeType).isNormal())
+ {
+ throw new IllegalArgumentException("Scope must be a normal scope type " + scopeType);
+ }
+ currentActivities.add(new CurrentActivity(getContext(scopeType), this));
+ return this;
+ }
+
+ public BeanManagerImpl getCurrent()
+ {
+ List<CurrentActivity> activeCurrentActivities = new ArrayList<CurrentActivity>();
+ for (CurrentActivity currentActivity : currentActivities)
+ {
+ if (currentActivity.getContext().isActive())
+ {
+ activeCurrentActivities.add(currentActivity);
+ }
+ }
+ if (activeCurrentActivities.size() == 0)
+ {
+ return this;
+ }
+ else if (activeCurrentActivities.size() == 1)
+ {
+ return activeCurrentActivities.get(0).getManager();
+ }
+ throw new IllegalStateException("More than one current activity for an active context " + currentActivities);
+ }
+
+ public ServiceRegistry getServices()
+ {
+ return services;
+ }
+
+ /**
+ * The injection point being operated on for this thread
+ *
+ * @return the current injection point
+ */
+ public InjectionPoint getCurrentInjectionPoint()
+ {
+ if (!currentInjectionPoint.get().empty())
+ {
+ return currentInjectionPoint.get().peek();
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ /**
+ * Replaces (or adds) the current injection point. If a current injection
+ * point exists, it will be replaced. If no current injection point exists,
+ * one will be added.
+ *
+ * @param injectionPoint the injection point to use
+ * @return the injection point added, or null if non previous existed
+ */
+ public InjectionPoint replaceOrPushCurrentInjectionPoint(InjectionPoint injectionPoint)
+ {
+ InjectionPoint originalInjectionPoint = null;
+ if (!currentInjectionPoint.get().empty())
+ {
+ originalInjectionPoint = currentInjectionPoint.get().pop();
+ }
+ else
+ {
+ log.trace("No current injection point to replace #0", injectionPoint);
+ }
+ currentInjectionPoint.get().push(injectionPoint);
+ return originalInjectionPoint;
+ }
+
+ /**
+ *
+ * @return
+ */
+ public Map<Contextual<?>, Contextual<?>> getSpecializedBeans()
+ {
+ // TODO make this unmodifiable after deploy!
+ return specializedBeans;
+ }
+
+ // Serialization
+
+ protected Object readResolve()
+ {
+ return Container.instance().activityManager(id);
+ }
+
+ protected ClientProxyProvider getClientProxyProvider()
+ {
+ return clientProxyProvider;
+ }
+
+ protected ListMultimap<Class<? extends Annotation>, Context> getContexts()
+ {
+ return contexts;
+ }
+
+ /**
+ * @return the namespaces
+ */
+ protected List<String> getNamespaces()
+ {
+ return namespaces;
+ }
+
+ public Iterable<String> getAccessibleNamespaces()
+ {
+ // TODO Cache this
+ return createDynamicAccessibleIterable(Transform.NAMESPACE);
+ }
+
+ private Set<CurrentActivity> getCurrentActivities()
+ {
+ return currentActivities;
+ }
+
+ public String getId()
+ {
+ return id;
+ }
+
+ public AtomicInteger getChildIds()
+ {
+ return childIds;
+ }
+
+ public List<ObserverMethod<?,?>> getObservers()
+ {
+ return observers;
+ }
+
+ public Namespace getRootNamespace()
+ {
+ // TODO I don't like this lazy init
+ if (rootNamespace == null)
+ {
+ rootNamespace = new Namespace(createDynamicAccessibleIterable(Transform.NAMESPACE));
+ }
+ return rootNamespace;
+ }
+
+ public <T> InjectionTarget<T> createInjectionTarget(AnnotatedType<T> type)
+ {
+ return new SimpleInjectionTarget<T>(getServices().get(ClassTransformer.class).loadClass(type), this);
+ }
+
+ public <T> InjectionTarget<T> createInjectionTarget(EjbDescriptor<T> descriptor)
+ {
+ return getBean(descriptor);
+ }
+
+ public <X> Bean<? extends X> getMostSpecializedBean(Bean<X> bean)
+ {
+ Contextual<?> key = bean;
+ while (specializedBeans.containsKey(key))
+ {
+ if (key == null)
+ {
+ System.out.println("null key " + bean);
+ }
+ key = specializedBeans.get(key);
+ }
+ return (Bean<X>) key;
+ }
+
+ public void validate(InjectionPoint ij)
+ {
+ try
+ {
+ getServices().get(Validator.class).validateInjectionPoint(ij, this);
+ }
+ catch (DeploymentException e)
+ {
+ throw new InjectionException(e.getMessage(), e.getCause());
+ }
+ }
+
+ public Set<Annotation> getInterceptorBindingTypeDefinition(Class<? extends Annotation> bindingType)
+ {
+ if (getServices().get(MetaAnnotationStore.class).getInterceptorBindingModel(bindingType).isValid())
+ {
+ return getServices().get(MetaAnnotationStore.class).getInterceptorBindingModel(bindingType).getInheritedInterceptionBindingTypes();
+ }
+ else
+ {
+ throw new IllegalArgumentException("Not a interception binding :" + bindingType);
+ }
+ }
+
+ public Bean<?> getPassivationCapableBean(String id)
+ {
+ throw new UnsupportedOperationException("Not yet implemented");
+ }
+
+ public Set<Annotation> getStereotypeDefinition(Class<? extends Annotation> stereotype)
+ {
+ if (getServices().get(MetaAnnotationStore.class).getStereotype(stereotype).isValid())
+ {
+ return getServices().get(MetaAnnotationStore.class).getStereotype(stereotype).getMetaAnnotations();
+ }
+ else
+ {
+ throw new IllegalArgumentException("Not a stereotype " + stereotype);
+ }
+ }
+
+ public boolean isQualifier(Class<? extends Annotation> annotationType)
+ {
+ return getServices().get(MetaAnnotationStore.class).getBindingTypeModel(annotationType).isValid();
+ }
+
+ public boolean isInterceptorBindingType(Class<? extends Annotation> annotationType)
+ {
+ return getServices().get(MetaAnnotationStore.class).getInterceptorBindingModel(annotationType).isValid();
+ }
+
+ public boolean isNormalScope(Class<? extends Annotation> annotationType)
+ {
+ ScopeModel<?> scope = getServices().get(MetaAnnotationStore.class).getScopeModel(annotationType);
+ return scope.isValid() && scope.isNormal();
+ }
+
+ public boolean isPassivatingScope(Class<? extends Annotation> annotationType)
+ {
+ ScopeModel<?> scope = getServices().get(MetaAnnotationStore.class).getScopeModel(annotationType);
+ return scope.isValid() && scope.isPassivating();
+ }
+
+ public boolean isScope(Class<? extends Annotation> annotationType)
+ {
+ return getServices().get(MetaAnnotationStore.class).getScopeModel(annotationType).isValid();
+ }
+
+ public boolean isStereotype(Class<? extends Annotation> annotationType)
+ {
+ return getServices().get(MetaAnnotationStore.class).getStereotype(annotationType).isValid();
+ }
+
+ public ELResolver getELResolver()
+ {
+ return webbeansELResolver;
+ }
+
+ public ExpressionFactory wrapExpressionFactory(ExpressionFactory expressionFactory)
+ {
+ return new WebBeansExpressionFactory(expressionFactory);
+ }
+
+ public <T> WBCreationalContext<T> createCreationalContext(Contextual<T> contextual)
+ {
+ return new CreationalContextImpl<T>(contextual);
+ }
+
+ public <T> AnnotatedType<T> createAnnotatedType(Class<T> type)
+ {
+ return getServices().get(ClassTransformer.class).loadClass(type);
+ }
+
+ public <X> Bean<? extends X> resolve(Set<Bean<? extends X>> beans)
+ {
+ Set<Bean<? extends X>> resolvedBeans = beanResolver.resolve(beans);
+ if (resolvedBeans.size() == 0)
+ {
+ return null;
+ }
+ if (resolvedBeans.size() == 1)
+ {
+ return resolvedBeans.iterator().next();
+ }
+ else
+ {
+ throw new AmbiguousResolutionException("Cannot resolve an ambiguous dependency between " + beans);
+ }
+ }
+
+ public <T> EjbDescriptor<T> getEjbDescriptor(String beanName)
+ {
+ return getServices().get(EjbDescriptors.class).get(beanName);
+ }
+
+ public <T> SessionBean<T> getBean(EjbDescriptor<T> descriptor)
+ {
+ return (SessionBean<T>) getEnterpriseBeans().get(descriptor);
+ }
+
+ public void cleanup()
+ {
+ services.cleanup();
+ this.currentInjectionPoint.remove();
+ }
+
+ public InterceptorRegistry<Class<?>, Interceptor<?>> getBoundInterceptorsRegistry()
+ {
+ return boundInterceptorsRegistry;
+ }
+
+ public InterceptorRegistry<Class<?>, Class<?>> getDeclaredInterceptorsRegistry()
+ {
+ return declaredInterceptorsRegistry;
+ }
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/Container.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/Container.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/Container.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/Container.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,194 @@
+/*
+ * 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;
+
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.concurrent.ConcurrentHashMap;
+
+import org.jboss.weld.bootstrap.BeanDeployment;
+import org.jboss.weld.bootstrap.api.ServiceRegistry;
+import org.jboss.weld.bootstrap.api.Singleton;
+import org.jboss.weld.bootstrap.api.SingletonProvider;
+import org.jboss.weld.bootstrap.spi.BeanDeploymentArchive;
+
+/**
+ * A Web Beans application container
+ *
+ * @author pmuir
+ *
+ */
+public class Container
+{
+
+ private final static Singleton<Container> instance;
+
+ static
+ {
+ instance = SingletonProvider.instance().create(Container.class);
+ }
+
+ /**
+ * Get the container for the current application deployment
+ *
+ * @return
+ */
+ public static Container instance()
+ {
+ return instance.get();
+ }
+
+
+ /**
+ * Initialize the container for the current application deployment
+ *
+ * @param deploymentManager
+ * @param deploymentServices
+ */
+ public static void initialize(BeanManagerImpl deploymentManager, ServiceRegistry deploymentServices)
+ {
+ Container instance = new Container(deploymentManager, deploymentServices);
+ Container.instance.set(instance);
+ }
+
+ // The deployment bean manager
+ private final BeanManagerImpl deploymentManager;
+
+ // A map of managers keyed by ID, used for activities and serialization
+ private final Map<String, BeanManagerImpl> managers;
+
+ // A map of BDA -> bean managers
+ private final Map<BeanDeploymentArchive, BeanManagerImpl> beanDeploymentArchives;
+
+ private final ServiceRegistry deploymentServices;
+
+ private boolean initialized = false;
+
+ public Container(BeanManagerImpl deploymentManager, ServiceRegistry deploymentServices)
+ {
+ this.deploymentManager = deploymentManager;
+ this.managers = new ConcurrentHashMap<String, BeanManagerImpl>();
+ this.managers.put(deploymentManager.getId(), deploymentManager);
+ this.beanDeploymentArchives = new ConcurrentHashMap<BeanDeploymentArchive, BeanManagerImpl>();
+ this.deploymentServices = deploymentServices;
+ }
+
+ /**
+ * Cause the container to be cleaned up, including all registered bean
+ * managers, and all deployment services
+ */
+ public void cleanup()
+ {
+ // TODO We should probably cleanup the bean managers for activities?
+ managers.clear();
+
+ for (BeanManagerImpl beanManager : beanDeploymentArchives.values())
+ {
+ beanManager.cleanup();
+ }
+ beanDeploymentArchives.clear();
+
+ deploymentServices.cleanup();
+ deploymentManager.cleanup();
+ }
+
+ /**
+ * Gets the manager for this application deployment
+ *
+ */
+ public BeanManagerImpl deploymentManager()
+ {
+ return deploymentManager;
+ }
+ public Map<BeanDeploymentArchive, BeanManagerImpl> beanDeploymentArchives()
+ {
+ return beanDeploymentArchives;
+ }
+
+ /**
+ * Get the activity manager for a given key
+ *
+ * @param key
+ * @return
+ */
+ public BeanManagerImpl activityManager(String key)
+ {
+ return managers.get(key);
+ }
+
+ /**
+ * Add an activity
+ *
+ * @param manager
+ * @return
+ */
+ public String addActivity(BeanManagerImpl manager)
+ {
+ String id = manager.getId();
+ if (manager.getId() == null)
+ {
+ throw new IllegalArgumentException("Bean manager must not be null " + manager.toString());
+ }
+ managers.put(id, manager);
+ return id;
+ }
+
+ /**
+ * Get the services for this application deployment
+ *
+ * @return the deploymentServices
+ */
+ public ServiceRegistry deploymentServices()
+ {
+ return deploymentServices;
+ }
+
+ /**
+ * Add sub-deployment units to the container
+ *
+ * @param beanDeployments
+ */
+ public void putBeanDeployments(Map<BeanDeploymentArchive, BeanDeployment> beanDeployments)
+ {
+ for (Entry<BeanDeploymentArchive, BeanDeployment> entry : beanDeployments.entrySet())
+ {
+ beanDeploymentArchives.put(entry.getKey(), entry.getValue().getBeanManager());
+ addActivity(entry.getValue().getBeanManager());
+ }
+ }
+
+ /**
+ * Check if the application container is fully initialized
+ *
+ * @return the initialized
+ */
+ public boolean isInitialized()
+ {
+ return initialized;
+ }
+
+ /**
+ * Put the application container into an initialized state
+ *
+ * @param initialized the initialized to set
+ */
+ public void setInitialized(boolean initialized)
+ {
+ this.initialized = initialized;
+ }
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/ContextualStore.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/ContextualStore.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/ContextualStore.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/ContextualStore.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,124 @@
+/*
+ * 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;
+
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+import java.util.concurrent.atomic.AtomicInteger;
+
+import javax.enterprise.context.spi.Contextual;
+import javax.enterprise.inject.spi.PassivationCapable;
+
+import org.jboss.weld.bootstrap.api.Service;
+
+import com.google.common.collect.BiMap;
+import com.google.common.collect.HashBiMap;
+import com.google.common.collect.Maps;
+
+/**
+ * Application wide contextual identifier service which allows a serializable
+ * reference to a contextual to be obtained, and the contextual to be returned
+ * for a given id.
+ *
+ * If the contextual implements PassivationCapable, the id will be obtained
+ * from it, in which case the Contextual can be activated in any container.
+ * If not, the Contextual can only be activated in this container.
+ *
+ * Note that this allows a Bean object to be loaded regardless
+ * of the bean's accessiblity from the current module, and should not be abused
+ * as a way to ignore accessibility rules enforced during resolution.
+ *
+ * @author Pete Muir
+ *
+ *
+ */
+public class ContextualStore implements Service
+{
+
+ private static final String GENERATED_ID_PREFIX = ContextualStore.class.getName();
+
+ // The map containing container-local contextuals
+ private final BiMap<Contextual<?>, String> contextuals;
+
+ // The map containing passivation capable contextuals
+ private final ConcurrentMap<String, Contextual<?>> passivationCapableContextuals;
+
+ private final AtomicInteger idGenerator;
+
+ public ContextualStore()
+ {
+ this.idGenerator = new AtomicInteger(0);
+ BiMap<Contextual<?>, String> map = HashBiMap.create();
+ // TODO Somehow remove this sync if it shows bad in a profiler
+ this.contextuals = Maps.synchronizedBiMap(map);
+ this.passivationCapableContextuals = new ConcurrentHashMap<String, Contextual<?>>();
+ }
+
+ /**
+ * Given a particular id, return the correct contextual. For contextuals
+ * which aren't passivation capable, the contextual can't be found in another
+ * container, and null will be returned.
+ *
+ * @param id An identifier for the contextual
+ * @return the contextual
+ */
+ @SuppressWarnings("unchecked")
+ public <C extends Contextual<I>, I> C getContextual(String id)
+ {
+ if (id.startsWith(GENERATED_ID_PREFIX))
+ {
+ return (C) contextuals.inverse().get(id);
+ }
+ else
+ {
+ return (C) passivationCapableContextuals.get(id);
+ }
+ }
+
+ /**
+ * Add a contextual (if not already present) to the store, and return
+ * it's id. If the contextual is passivation capable, it's id will
+ * be used, otherwise an id will be generated
+ *
+ * @param contextual the contexutal to add
+ * @return the current id for the contextual
+ */
+ public String putIfAbsent(Contextual<?> contextual)
+ {
+ if (contextual instanceof PassivationCapable)
+ {
+ PassivationCapable passivationCapable = (PassivationCapable) contextual;
+ passivationCapableContextuals.putIfAbsent(passivationCapable.getId(), contextual);
+ return passivationCapable.getId();
+ }
+ else if (contextuals.containsKey(contextual))
+ {
+ return contextuals.get(contextual);
+ }
+ else
+ {
+ String id = new StringBuilder().append(GENERATED_ID_PREFIX).append(idGenerator.incrementAndGet()).toString();
+ contextuals.put(contextual, id);
+ return id;
+ }
+ }
+
+ public void cleanup()
+ {
+ contextuals.clear();
+ }
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/DefinitionException.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/DefinitionException.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/DefinitionException.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/DefinitionException.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,48 @@
+/*
+ * 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;
+
+/**
+ * Thrown if the definition of a bean is incorrect
+ *
+ * @author Pete Muir
+ */
+public class DefinitionException extends RuntimeException
+{
+ private static final long serialVersionUID = 8014646336322875707L;
+
+ public DefinitionException()
+ {
+ super();
+ }
+
+ public DefinitionException(String message, Throwable throwable)
+ {
+ super(message, throwable);
+ }
+
+ public DefinitionException(String message)
+ {
+ super(message);
+ }
+
+ public DefinitionException(Throwable throwable)
+ {
+ super(throwable);
+ }
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/DeploymentException.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/DeploymentException.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/DeploymentException.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/DeploymentException.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,48 @@
+/*
+ * 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;
+
+/**
+ * Thrown if an deployment exception occurs.
+ *
+ * @author Pete Muir
+ */
+public class DeploymentException extends RuntimeException
+{
+ private static final long serialVersionUID = 8014646336322875707L;
+
+ public DeploymentException()
+ {
+ super();
+ }
+
+ public DeploymentException(String message, Throwable throwable)
+ {
+ super(message, throwable);
+ }
+
+ public DeploymentException(String message)
+ {
+ super(message);
+ }
+
+ public DeploymentException(Throwable throwable)
+ {
+ super(throwable);
+ }
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/InconsistentSpecializationException.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/InconsistentSpecializationException.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/InconsistentSpecializationException.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/InconsistentSpecializationException.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,50 @@
+/*
+ * 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;
+
+/**
+ *
+ * @author Pete Muir
+ */
+public class InconsistentSpecializationException extends DeploymentException
+{
+
+ private static final long serialVersionUID = 4359656880524913555L;
+
+ public InconsistentSpecializationException()
+ {
+ super();
+ }
+
+ public InconsistentSpecializationException(String message, Throwable throwable)
+ {
+ super(message, throwable);
+ }
+
+ public InconsistentSpecializationException(String message)
+ {
+ super(message);
+ }
+
+ public InconsistentSpecializationException(Throwable throwable)
+ {
+ super(throwable);
+ }
+
+
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/Logger.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/Logger.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/Logger.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/Logger.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,51 @@
+/*
+ * 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;
+
+/**
+ * @author pmuir
+ *
+ */
+public interface Logger {
+
+ public enum LogMessages {
+
+ WRONG_PASSWORD
+
+ }
+
+ public static class Test {
+
+ public void test()
+ {
+ Logger logger = new Logger()
+ {
+
+ public void warn(Enum<?> message)
+ {
+ // No-op, this is a mock
+ }
+
+ };
+ logger.warn(LogMessages.WRONG_PASSWORD);
+ }
+
+ }
+
+ public void warn(Enum<?> message);
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/NullableDependencyException.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/NullableDependencyException.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/NullableDependencyException.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/NullableDependencyException.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,52 @@
+/*
+ * 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;
+
+/**
+ * Thrown if an injection point of primitive type resolves to a bean which may
+ * be null
+ *
+ * @author Pete Muir
+ */
+public class NullableDependencyException extends DeploymentException
+{
+
+ private static final long serialVersionUID = 6877485218767005761L;
+
+ public NullableDependencyException()
+ {
+ super();
+ }
+
+ public NullableDependencyException(String message, Throwable throwable)
+ {
+ super(message, throwable);
+ }
+
+ public NullableDependencyException(String message)
+ {
+ super(message);
+ }
+
+ public NullableDependencyException(Throwable throwable)
+ {
+ super(throwable);
+ }
+
+
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/SimpleInjectionTarget.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/SimpleInjectionTarget.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/SimpleInjectionTarget.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/SimpleInjectionTarget.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,155 @@
+/*
+ * 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;
+
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import javax.enterprise.context.spi.CreationalContext;
+import javax.enterprise.inject.spi.InjectionPoint;
+import javax.enterprise.inject.spi.InjectionTarget;
+
+import org.jboss.weld.injection.ConstructorInjectionPoint;
+import org.jboss.weld.injection.FieldInjectionPoint;
+import org.jboss.weld.injection.InjectionContextImpl;
+import org.jboss.weld.injection.MethodInjectionPoint;
+import org.jboss.weld.injection.WBInjectionPoint;
+import org.jboss.weld.introspector.WBClass;
+import org.jboss.weld.introspector.WBMethod;
+import org.jboss.weld.util.Beans;
+
+/**
+ * @author pmuir
+ *
+ */
+public class SimpleInjectionTarget<T> implements InjectionTarget<T>
+{
+
+ private final BeanManagerImpl beanManager;
+ private final WBClass<T> type;
+ private final ConstructorInjectionPoint<T> constructor;
+ private final List<Set<FieldInjectionPoint<?, ?>>> injectableFields;
+ private final List<Set<MethodInjectionPoint<?, ?>>> initializerMethods;
+ private final WBMethod<?, ?> postConstruct;
+ private final WBMethod<?, ?> preDestroy;
+ private final Set<InjectionPoint> injectionPoints;
+ private final Set<WBInjectionPoint<?, ?>> ejbInjectionPoints;
+ private final Set<WBInjectionPoint<?, ?>> persistenceContextInjectionPoints;
+ private final Set<WBInjectionPoint<?, ?>> persistenceUnitInjectionPoints;
+ private final Set<WBInjectionPoint<?, ?>> resourceInjectionPoints;
+
+ public SimpleInjectionTarget(WBClass<T> type, BeanManagerImpl beanManager)
+ {
+ this.beanManager = beanManager;
+ this.type = type;
+ this.injectionPoints = new HashSet<InjectionPoint>();
+ ConstructorInjectionPoint<T> constructor = null;
+ try
+ {
+ constructor = Beans.getBeanConstructor(null, type);
+ this.injectionPoints.addAll(Beans.getParameterInjectionPoints(null, constructor));
+ }
+ catch (Exception e)
+ {
+ // this means the bean of a type that cannot be produce()d, but that is non-fatal
+ // unless someone calls produce()
+ }
+ this.constructor = constructor;
+ this.injectableFields = Beans.getFieldInjectionPoints(null, type);
+ this.injectionPoints.addAll(Beans.getFieldInjectionPoints(null, this.injectableFields));
+ this.initializerMethods = Beans.getInitializerMethods(null, type);
+ this.injectionPoints.addAll(Beans.getParameterInjectionPoints(null, initializerMethods));
+ this.postConstruct = Beans.getPostConstruct(type);
+ this.preDestroy = Beans.getPreDestroy(type);
+ this.ejbInjectionPoints = Beans.getEjbInjectionPoints(null, type, beanManager);
+ this.persistenceContextInjectionPoints = Beans.getPersistenceContextInjectionPoints(null, type, beanManager);
+ this.persistenceUnitInjectionPoints = Beans.getPersistenceUnitInjectionPoints(null, type, beanManager);
+ this.resourceInjectionPoints = Beans.getResourceInjectionPoints(null, type, beanManager);
+ }
+
+ public T produce(CreationalContext<T> ctx)
+ {
+ if (constructor == null)
+ {
+ // this means we couldn't find a constructor on instantiation, which
+ // means there isn't one that's spec-compliant
+ // try again so the correct DefinitionException is thrown
+ Beans.getBeanConstructor(null, type);
+ // should not be reached
+ throw new IllegalStateException(
+ "We were not previously able to find the bean constructor, but now are?");
+ }
+ return constructor.newInstance(beanManager, ctx);
+ }
+
+ public void inject(final T instance, final CreationalContext<T> ctx)
+ {
+ new InjectionContextImpl<T>(beanManager, this, instance)
+ {
+
+ public void proceed()
+ {
+ Beans.injectEEFields(instance, beanManager, ejbInjectionPoints, persistenceContextInjectionPoints, persistenceUnitInjectionPoints, resourceInjectionPoints);
+ Beans.injectFieldsAndInitializers(instance, ctx, beanManager, injectableFields, initializerMethods);
+ }
+
+ }.run();
+
+ }
+
+ public void postConstruct(T instance)
+ {
+ if (postConstruct == null)
+ return;
+
+ try
+ {
+ postConstruct.invoke(instance);
+ }
+ catch (Exception e)
+ {
+ throw new RuntimeException("Error invoking postConstruct() " + postConstruct, e);
+ }
+ }
+
+ public void preDestroy(T instance)
+ {
+ if (preDestroy == null)
+ return;
+
+ try
+ {
+ preDestroy.invoke(instance);
+ }
+ catch (Exception e)
+ {
+ throw new RuntimeException("Error invoking preDestroy() " + preDestroy, e);
+ }
+ }
+
+ public void dispose(T instance)
+ {
+ // No-op
+ }
+
+ public Set<InjectionPoint> getInjectionPoints()
+ {
+ return injectionPoints;
+ }
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/SingleThreadExecutorServices.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/SingleThreadExecutorServices.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/SingleThreadExecutorServices.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/SingleThreadExecutorServices.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,70 @@
+/*
+ * 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;
+
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
+
+import org.jboss.weld.manager.api.ExecutorServices;
+
+/**
+ * @author pmuir
+ *
+ */
+public class SingleThreadExecutorServices implements ExecutorServices
+{
+
+ private transient final ExecutorService taskExecutor = Executors.newSingleThreadExecutor();
+
+
+ /**
+ * Provides access to the executor service used for asynchronous tasks.
+ *
+ * @return the ExecutorService for this manager
+ */
+ public ExecutorService getTaskExecutor()
+ {
+ return taskExecutor;
+ }
+
+ public void cleanup()
+ {
+ taskExecutor.shutdown();
+ try
+ {
+ // Wait a while for existing tasks to terminate
+ if (!taskExecutor.awaitTermination(60, TimeUnit.SECONDS))
+ {
+ taskExecutor.shutdownNow(); // Cancel currently executing tasks
+ // Wait a while for tasks to respond to being cancelled
+ if (!taskExecutor.awaitTermination(60, TimeUnit.SECONDS))
+ {
+ // Log the error here
+ }
+ }
+ }
+ catch (InterruptedException ie)
+ {
+ // (Re-)Cancel if current thread also interrupted
+ taskExecutor.shutdownNow();
+ // Preserve interrupt status
+ Thread.currentThread().interrupt();
+ }
+ }
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/UnserializableDependencyException.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/UnserializableDependencyException.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/UnserializableDependencyException.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/UnserializableDependencyException.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,55 @@
+/*
+ * 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;
+
+
+/**
+ * Thrown if a simple bean is dependent scoped and injected into a stateful
+ * session bean, into a non-transient field, bean constructor parameter or
+ * initializer method parameter of a bean which declares a passivating scope, or
+ * into a parameter of a producer method which declares a passivating scope
+ *
+ * @author Pete Muir
+ */
+public class UnserializableDependencyException extends DeploymentException
+{
+
+ private static final long serialVersionUID = -6287506607413810688L;
+
+ public UnserializableDependencyException()
+ {
+ super();
+ }
+
+ public UnserializableDependencyException(String message, Throwable throwable)
+ {
+ super(message, throwable);
+ }
+
+ public UnserializableDependencyException(String message)
+ {
+ super(message);
+ }
+
+ public UnserializableDependencyException(Throwable throwable)
+ {
+ super(throwable);
+ }
+
+
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/Validator.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/Validator.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/Validator.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/Validator.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,344 @@
+/*
+ * 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;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.TypeVariable;
+import java.lang.reflect.WildcardType;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import javax.enterprise.context.Dependent;
+import javax.enterprise.event.Event;
+import javax.enterprise.inject.Alternative;
+import javax.enterprise.inject.IllegalProductException;
+import javax.enterprise.inject.Instance;
+import javax.enterprise.inject.New;
+import javax.enterprise.inject.UnproxyableResolutionException;
+import javax.enterprise.inject.spi.Bean;
+import javax.enterprise.inject.spi.Decorator;
+import javax.enterprise.inject.spi.InjectionPoint;
+
+import org.jboss.weld.bean.AbstractClassBean;
+import org.jboss.weld.bean.AbstractProducerBean;
+import org.jboss.weld.bean.DecoratorImpl;
+import org.jboss.weld.bean.DisposalMethod;
+import org.jboss.weld.bean.NewManagedBean;
+import org.jboss.weld.bean.NewSessionBean;
+import org.jboss.weld.bean.RIBean;
+import org.jboss.weld.bootstrap.BeanDeployerEnvironment;
+import org.jboss.weld.bootstrap.api.Service;
+import org.jboss.weld.introspector.WBAnnotated;
+import org.jboss.weld.metadata.cache.MetaAnnotationStore;
+import org.jboss.weld.resolution.ResolvableWBClass;
+import org.jboss.weld.util.Beans;
+import org.jboss.weld.util.Proxies;
+import org.jboss.weld.util.Reflections;
+
+import com.google.common.base.Supplier;
+import com.google.common.collect.Multimap;
+import com.google.common.collect.Multimaps;
+
+/**
+ * Checks a list of beans for DeploymentExceptions and their subclasses
+ *
+ * @author Nicklas Karlsson
+ *
+ */
+public class Validator implements Service
+{
+
+ private void validateBean(Bean<?> bean, BeanManagerImpl beanManager)
+ {
+ for (InjectionPoint ij : bean.getInjectionPoints())
+ {
+ validateInjectionPoint(ij, beanManager);
+ }
+ boolean normalScoped = beanManager.getServices().get(MetaAnnotationStore.class).getScopeModel(bean.getScope()).isNormal();
+ if (normalScoped && !Beans.isBeanProxyable(bean))
+ {
+ throw new UnproxyableResolutionException("Normal scoped bean " + bean + " is not proxyable");
+ }
+ }
+
+ /**
+ * Validate an RIBean.
+ *
+ * This includes validating whether two beans specialize the same bean
+ *
+ * @param bean the bean to validate
+ * @param beanManager the current manager
+ * @param specializedBeans the existing specialized beans
+ */
+ private void validateRIBean(RIBean<?> bean, BeanManagerImpl beanManager, Collection<RIBean<?>> specializedBeans)
+ {
+ validateBean(bean, beanManager);
+ if (!(bean instanceof NewManagedBean<?>) && !(bean instanceof NewSessionBean<?>))
+ {
+ RIBean<?> abstractBean = bean;
+ if (abstractBean.isSpecializing())
+ {
+ if (specializedBeans.contains(abstractBean.getSpecializedBean()))
+ {
+ throw new InconsistentSpecializationException("Two beans cannot specialize the same bean: " + bean);
+ }
+ specializedBeans.add(abstractBean.getSpecializedBean());
+ }
+ if (Beans.isPassivationCapableBean(bean) && bean instanceof AbstractClassBean<?>)
+ {
+ AbstractClassBean<?> classBean = (AbstractClassBean<?>) bean;
+ if (classBean.hasDecorators())
+ {
+ for (Decorator<?> decorator : classBean.getDecorators())
+ {
+ if (!Reflections.isSerializable(decorator.getBeanClass()))
+ {
+ throw new UnserializableDependencyException("The bean " + bean + " declares a passivating scope but has non-serializable decorator: " + decorator);
+ }
+ for (InjectionPoint ij : decorator.getInjectionPoints())
+ {
+ Bean<?> resolvedBean = beanManager.resolve(beanManager.getInjectableBeans(ij));
+ validateInjectionPointPassivationCapable(ij, resolvedBean, beanManager);
+ }
+ }
+ }
+
+ }
+ }
+ }
+
+ /**
+ * Validate an injection point
+ *
+ * @param ij the injection point to validate
+ * @param declaringBean the bean into which the injectionPoint has been injected, if null, certain validations aren't available
+ * @param beanManager
+ */
+ public void validateInjectionPoint(InjectionPoint ij, BeanManagerImpl beanManager)
+ {
+ if (ij.getAnnotated().getAnnotation(New.class) != null && ij.getQualifiers().size() > 1)
+ {
+ throw new DefinitionException("The injection point " + ij + " is annotated with @New which cannot be combined with other binding types");
+ }
+ if (ij.getType().equals(InjectionPoint.class) && ij.getBean() == null)
+ {
+ throw new DefinitionException("Cannot inject an Injection point into a class which isn't a bean " + ij);
+ }
+ if (ij.getType().equals(InjectionPoint.class) && !Dependent.class.equals(ij.getBean().getScope()))
+ {
+ throw new DefinitionException("Cannot inject an InjectionPoint into a non @Dependent scoped bean " + ij);
+ }
+ if (ij.getType() instanceof TypeVariable<?>)
+ {
+ throw new DefinitionException("Cannot declare an injection point with a type variable " + ij);
+ }
+ checkFacadeInjectionPoint(ij, Instance.class);
+ checkFacadeInjectionPoint(ij, Event.class);
+ Annotation[] bindings = ij.getQualifiers().toArray(new Annotation[0]);
+ WBAnnotated<?, ?> annotatedItem = ResolvableWBClass.of(ij.getType(), bindings, beanManager);
+ Set<?> resolvedBeans = beanManager.getBeanResolver().resolve(beanManager.getInjectableBeans(ij));
+ if (resolvedBeans.isEmpty())
+ {
+ throw new DeploymentException("Injection point has unstatisfied dependencies. Injection point: " + ij.toString() + "; Qualifiers: " + Arrays.toString(bindings));
+ }
+ if (resolvedBeans.size() > 1)
+ {
+ throw new DeploymentException("Injection point has ambiguous dependencies. Injection point: " + ij.toString() + "; Qualifiers: " + Arrays.toString(bindings) +"; Possible dependencies: " + resolvedBeans);
+ }
+ Bean<?> resolvedBean = (Bean<?>) resolvedBeans.iterator().next();
+ if (beanManager.getServices().get(MetaAnnotationStore.class).getScopeModel(resolvedBean.getScope()).isNormal() && !Proxies.isTypeProxyable(ij.getType()))
+ {
+ throw new UnproxyableResolutionException("The injection point " + ij + " has non-proxyable dependencies");
+ }
+ if (Reflections.isPrimitive(annotatedItem.getJavaClass()) && resolvedBean.isNullable())
+ {
+ throw new NullableDependencyException("The injection point " + ij + " has nullable dependencies");
+ }
+ if (ij.getBean() != null && Beans.isPassivatingScope(ij.getBean(), beanManager) && (!ij.isTransient()) && !Beans.isPassivationCapableBean(resolvedBean))
+ {
+ validateInjectionPointPassivationCapable(ij, resolvedBean, beanManager);
+ }
+ }
+
+ public void validateInjectionPointPassivationCapable(InjectionPoint ij, Bean<?> resolvedBean, BeanManagerImpl beanManager)
+ {
+ if (!ij.isTransient() && !Beans.isPassivationCapableBean(resolvedBean))
+ {
+ if (resolvedBean.getScope().equals(Dependent.class) && resolvedBean instanceof AbstractProducerBean<?, ?,?>)
+ {
+ throw new IllegalProductException("The bean " + ij.getBean() + " declares a passivating scope but the producer returned a non-serializable bean for injection: " + resolvedBean);
+ }
+ throw new UnserializableDependencyException("The bean " + ij.getBean() + " declares a passivating scope but has non-serializable dependency: " + resolvedBean);
+ }
+ }
+
+ public void validateDeployment(BeanManagerImpl manager, BeanDeployerEnvironment environment)
+ {
+ validateBeans(manager.getDecorators(), new ArrayList<RIBean<?>>(), manager);
+ validateBeans(manager.getBeans(), new ArrayList<RIBean<?>>(), manager);
+ validateEnabledDecoratorClasses(manager);
+ validateEnabledPolicies(manager);
+ validateDisposalMethods(environment);
+ validateBeanNames(manager);
+ }
+
+ public void validateBeans(Collection<? extends Bean<?>> beans, Collection<RIBean<?>> specializedBeans, BeanManagerImpl manager)
+ {
+ for (Bean<?> bean : beans)
+ {
+ if (bean instanceof RIBean<?>)
+ {
+ validateRIBean((RIBean<?>) bean, manager, specializedBeans);
+ }
+ else
+ {
+ validateBean(bean, manager);
+ }
+ }
+ }
+
+ public void validateBeanNames(BeanManagerImpl beanManager)
+ {
+ Multimap<String, Bean<?>> namedAccessibleBeans = Multimaps.newSetMultimap(new HashMap<String, Collection<Bean<?>>>(), new Supplier<Set<Bean<?>>>()
+ {
+
+ public Set<Bean<?>> get()
+ {
+ return new HashSet<Bean<?>>();
+ }
+
+ });
+ for (Bean<?> bean : beanManager.getAccessibleBeans())
+ {
+ if (bean.getName() != null)
+ {
+ namedAccessibleBeans.put(bean.getName(), bean);
+ }
+ }
+
+ List<String> accessibleNamespaces = new ArrayList<String>();
+ for (String namespace : beanManager.getAccessibleNamespaces())
+ {
+ accessibleNamespaces.add(namespace);
+ }
+
+ for (String name : namedAccessibleBeans.keySet())
+ {
+ Set<Bean<?>> resolvedBeans = beanManager.getBeanResolver().resolve(namedAccessibleBeans.get(name));
+ if (resolvedBeans.size() > 1)
+ {
+ throw new DeploymentException("An unresolvable ambiguous EL name exists for " + name + "; found " + resolvedBeans );
+ }
+ if (accessibleNamespaces.contains(name))
+ {
+ throw new DeploymentException("The bean name " + name + " is used as a prefix for another bean");
+ }
+ }
+ }
+
+ private void validateEnabledDecoratorClasses(BeanManagerImpl beanManager)
+ {
+ // TODO Move building this list to the boot or sth
+ Set<Class<?>> decoratorBeanClasses = new HashSet<Class<?>>();
+ for (DecoratorImpl<?> bean : beanManager.getDecorators())
+ {
+ decoratorBeanClasses.add(bean.getType());
+ }
+ for (Class<?> clazz : beanManager.getEnabledDecoratorClasses())
+ {
+ if (beanManager.getEnabledDecoratorClasses().indexOf(clazz) < beanManager.getEnabledDecoratorClasses().lastIndexOf(clazz))
+ {
+ throw new DeploymentException("Enabled decorator class" + clazz + " specified twice");
+ }
+ if (!decoratorBeanClasses.contains(clazz))
+ {
+ throw new DeploymentException("Enabled decorator class " + clazz + " is not the bean class of at least one decorator bean (detected decorator beans " + decoratorBeanClasses + ")");
+ }
+ }
+ }
+
+ private void validateEnabledPolicies(BeanManagerImpl beanManager)
+ {
+ List<Class<?>> seenPolicies = new ArrayList<Class<?>>();
+ for (Class<? extends Annotation> stereotype : beanManager.getEnabledPolicyStereotypes())
+ {
+ if (!stereotype.isAnnotationPresent(Alternative.class))
+ {
+ throw new DeploymentException("Enabled policy sterotype " + stereotype + " is not annotated @Policy");
+ }
+ if (seenPolicies.contains(stereotype))
+ {
+ throw new DeploymentException("Cannot enable the same policy sterotype " + stereotype + " in beans.xml");
+ }
+ seenPolicies.add(stereotype);
+ }
+ for (Class<?> clazz : beanManager.getEnabledPolicyClasses())
+ {
+ if (!clazz.isAnnotationPresent(Alternative.class))
+ {
+ throw new DeploymentException("Enabled policy bean class " + clazz + " is not annotated @Policy");
+ }
+ if (seenPolicies.contains(clazz))
+ {
+ throw new DeploymentException("Cannot enable the same policy bean class " + clazz + " in beans.xml");
+ }
+ seenPolicies.add(clazz);
+ }
+ }
+
+ private void validateDisposalMethods(BeanDeployerEnvironment environment)
+ {
+ Set<DisposalMethod<?, ?>> beans = environment.getUnresolvedDisposalBeans();
+ if (!beans.isEmpty())
+ {
+ throw new DefinitionException("The following Disposal methods were declared but did not resolved to a producer method " + beans);
+ }
+ }
+
+ private static void checkFacadeInjectionPoint(InjectionPoint injectionPoint, Class<?> type)
+ {
+ if (injectionPoint.getAnnotated().getBaseType().equals(type))
+ {
+ if (injectionPoint.getType() instanceof ParameterizedType)
+ {
+ ParameterizedType parameterizedType = (ParameterizedType) injectionPoint.getType();
+ if (parameterizedType.getActualTypeArguments()[0] instanceof TypeVariable<?>)
+ {
+ throw new DefinitionException("An injection point of type " + type + " cannot have a type variable type parameter " + injectionPoint);
+ }
+ if (parameterizedType.getActualTypeArguments()[0] instanceof WildcardType)
+ {
+ throw new DefinitionException("An injection point of type " + type + " cannot have a wildcard type parameter " + injectionPoint);
+ }
+ }
+ else
+ {
+ throw new DefinitionException("An injection point of type " + type + " must have a type parameter " + injectionPoint);
+ }
+ }
+
+ }
+
+ public void cleanup() {}
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/bean/AbstractBean.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/AbstractBean.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/bean/AbstractBean.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/bean/AbstractBean.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,501 @@
+/*
+ * 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.bean;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Type;
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.decorator.Decorates;
+import javax.enterprise.context.Dependent;
+import javax.enterprise.inject.Alternative;
+import javax.enterprise.inject.Specializes;
+import javax.enterprise.inject.spi.Bean;
+import javax.enterprise.inject.stereotype.Stereotype;
+import javax.inject.Named;
+import javax.inject.Qualifier;
+
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.Container;
+import org.jboss.weld.DefinitionException;
+import org.jboss.weld.bootstrap.BeanDeployerEnvironment;
+import org.jboss.weld.injection.WBInjectionPoint;
+import org.jboss.weld.introspector.WBAnnotated;
+import org.jboss.weld.introspector.WBField;
+import org.jboss.weld.introspector.WBParameter;
+import org.jboss.weld.literal.AnyLiteral;
+import org.jboss.weld.literal.DefaultLiteral;
+import org.jboss.weld.log.Log;
+import org.jboss.weld.log.Logging;
+import org.jboss.weld.metadata.cache.MergedStereotypes;
+import org.jboss.weld.metadata.cache.MetaAnnotationStore;
+import org.jboss.weld.util.Reflections;
+
+/**
+ * An abstract bean representation common for all beans
+ *
+ * @author Pete Muir
+ *
+ * @param <T> the type of bean
+ * @param <E> the Class<?> of the bean type
+ */
+public abstract class AbstractBean<T, E> extends RIBean<T>
+{
+
+ private static final Annotation ANY_LITERAL = new AnyLiteral();
+ private static final Annotation CURRENT_LITERAL = new DefaultLiteral();
+
+ private boolean proxyable;
+
+ // Logger
+ private final Log log = Logging.getLog(AbstractBean.class);
+ // The binding types
+ protected Set<Annotation> bindings;
+ // The name
+ protected String name;
+ // The scope type
+ protected Class<? extends Annotation> scopeType;
+ // The merged stereotypes
+ private MergedStereotypes<T, E> mergedStereotypes;
+ // Is it a policy, either defined by stereotypes or directly?
+ private boolean policy;
+ // The type
+ protected Class<T> type;
+ // The API types
+ protected Set<Type> types;
+ // The injection points
+ private Set<WBInjectionPoint<?, ?>> injectionPoints;
+ private Set<WBInjectionPoint<?, ?>> delegateInjectionPoints;
+ // If the type a primitive?
+ private boolean primitive;
+ // The Web Beans manager
+ protected BeanManagerImpl manager;
+
+ private boolean _serializable;
+
+ private boolean initialized;
+
+
+
+ protected boolean isInitialized()
+ {
+ return initialized;
+ }
+
+ /**
+ * Constructor
+ *
+ * @param manager The Web Beans manager
+ */
+ public AbstractBean(String idSuffix, BeanManagerImpl manager)
+ {
+ super(idSuffix, manager);
+ this.manager = manager;
+ this.injectionPoints = new HashSet<WBInjectionPoint<?, ?>>();
+ this.delegateInjectionPoints = new HashSet<WBInjectionPoint<?,?>>();
+ }
+
+ /**
+ * Initializes the bean and its metadata
+ */
+ @Override
+ public void initialize(BeanDeployerEnvironment environment)
+ {
+ if (isSpecializing())
+ {
+ preSpecialize(environment);
+ specialize(environment);
+ postSpecialize();
+ }
+ initDefaultBindings();
+ initPrimitive();
+ log.trace("Building Web Bean bean metadata for #0", getType());
+ initName();
+ initScopeType();
+ initSerializable();
+ initProxyable();
+ checkDelegateInjectionPoints();
+ }
+
+ protected void initStereotypes()
+ {
+ mergedStereotypes = new MergedStereotypes<T, E>(getAnnotatedItem().getMetaAnnotations(Stereotype.class), manager);
+ }
+
+ protected void checkDelegateInjectionPoints()
+ {
+ if (this.delegateInjectionPoints.size() > 0)
+ {
+ throw new DefinitionException("Cannot place @Decorates at an injection point which is not on a Decorator " + this);
+ }
+ }
+
+ protected void addInjectionPoint(WBInjectionPoint<?, ?> injectionPoint)
+ {
+ if (injectionPoint.isAnnotationPresent(Decorates.class))
+ {
+ this.delegateInjectionPoints.add(injectionPoint);
+ }
+ injectionPoints.add(injectionPoint);
+ }
+
+ protected void addInjectionPoints(Iterable<? extends WBInjectionPoint<?, ?>> injectionPoints)
+ {
+ for (WBInjectionPoint<?, ?> injectionPoint : injectionPoints)
+ {
+ addInjectionPoint(injectionPoint);
+ }
+ }
+
+ protected Set<WBInjectionPoint<?, ?>> getDelegateInjectionPoints()
+ {
+ return delegateInjectionPoints;
+ }
+
+ /**
+ * Initializes the API types
+ */
+ protected void initTypes()
+ {
+ types = getAnnotatedItem().getTypeClosure();
+ }
+
+ /**
+ * Initializes the binding types
+ */
+ protected void initBindings()
+ {
+ this.bindings = new HashSet<Annotation>();
+ this.bindings.addAll(getAnnotatedItem().getMetaAnnotations(Qualifier.class));
+ initDefaultBindings();
+ log.trace("Using binding types " + bindings + " specified by annotations");
+ }
+
+ protected void initDefaultBindings()
+ {
+ if (bindings.size() == 0)
+ {
+ log.trace("Adding default @Current binding type");
+ this.bindings.add(CURRENT_LITERAL);
+ }
+ if (bindings.size() == 1)
+ {
+ if (bindings.iterator().next().annotationType().equals(Named.class))
+ {
+ log.trace("Adding default @Current binding type");
+ this.bindings.add(CURRENT_LITERAL);
+ }
+ }
+ this.bindings.add(ANY_LITERAL);
+ }
+
+ protected void initPolicy()
+ {
+ if (getAnnotatedItem().isAnnotationPresent(Alternative.class))
+ {
+ this.policy = true;
+ }
+ else
+ {
+ this.policy = getMergedStereotypes().isPolicy();
+ }
+ }
+
+ /**
+ * Initializes the name
+ */
+ protected void initName()
+ {
+ boolean beanNameDefaulted = false;
+ if (getAnnotatedItem().isAnnotationPresent(Named.class))
+ {
+ String javaName = getAnnotatedItem().getAnnotation(Named.class).value();
+ if ("".equals(javaName))
+ {
+ log.trace("Using default name (specified by annotations)");
+ beanNameDefaulted = true;
+ }
+ else
+ {
+ if (log.isTraceEnabled())
+ log.trace("Using name " + javaName + " specified by annotations");
+ this.name = javaName;
+ return;
+ }
+ }
+
+ if (beanNameDefaulted || getMergedStereotypes().isBeanNameDefaulted())
+ {
+ this.name = getDefaultName();
+ return;
+ }
+ }
+
+ protected void initProxyable()
+ {
+ proxyable = getAnnotatedItem().isProxyable();
+ }
+
+ /**
+ * Initializes the primitive flag
+ */
+ protected void initPrimitive()
+ {
+ this.primitive = Reflections.isPrimitive(getType());
+ }
+
+ private boolean checkInjectionPointsAreSerializable()
+ {
+ boolean passivating = manager.getServices().get(MetaAnnotationStore.class).getScopeModel(this.getScope()).isPassivating();
+ for (WBInjectionPoint<?, ?> injectionPoint : getAnnotatedInjectionPoints())
+ {
+ Annotation[] bindings = injectionPoint.getMetaAnnotationsAsArray(Qualifier.class);
+ Bean<?> resolvedBean = manager.getBeans(injectionPoint.getJavaClass(), bindings).iterator().next();
+ if (passivating)
+ {
+ if (Dependent.class.equals(resolvedBean.getScope()) && !Reflections.isSerializable(resolvedBean.getBeanClass()) && (((injectionPoint instanceof WBField<?, ?>) && !((WBField<?, ?>) injectionPoint).isTransient()) || (injectionPoint instanceof WBParameter<?, ?>)))
+ {
+ return false;
+ }
+ }
+ }
+ return true;
+ }
+
+ /**
+ * Initializes the scope type
+ */
+ protected abstract void initScopeType();
+
+ protected boolean initScopeTypeFromStereotype()
+ {
+ Set<Annotation> possibleScopeTypes = getMergedStereotypes().getPossibleScopeTypes();
+ if (possibleScopeTypes.size() == 1)
+ {
+ this.scopeType = possibleScopeTypes.iterator().next().annotationType();
+ if (log.isTraceEnabled())
+ log.trace("Scope " + scopeType + " specified by stereotype");
+ return true;
+ }
+ else if (possibleScopeTypes.size() > 1)
+ {
+ throw new DefinitionException("All stereotypes must specify the same scope OR a scope must be specified on " + getAnnotatedItem());
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+ protected void postSpecialize()
+ {
+ if (getAnnotatedItem().isAnnotationPresent(Named.class) && getSpecializedBean().getAnnotatedItem().isAnnotationPresent(Named.class))
+ {
+ throw new DefinitionException("Cannot put name on specializing and specialized class " + getAnnotatedItem());
+ }
+ this.bindings.addAll(getSpecializedBean().getQualifiers());
+ if (isSpecializing() && getSpecializedBean().getAnnotatedItem().isAnnotationPresent(Named.class))
+ {
+ this.name = getSpecializedBean().getName();
+ }
+ manager.getSpecializedBeans().put(getSpecializedBean(), this);
+ }
+
+ protected void preSpecialize(BeanDeployerEnvironment environment)
+ {
+
+ }
+
+ protected void specialize(BeanDeployerEnvironment environment)
+ {
+
+ }
+
+ /**
+ * Returns the annotated time the bean represents
+ *
+ * @return The annotated item
+ */
+ protected abstract WBAnnotated<T, E> getAnnotatedItem();
+
+ /**
+ * Gets the binding types
+ *
+ * @return The set of binding types
+ *
+ * @see org.jboss.webbeans.bean.BaseBean#getQualifiers()
+ */
+ public Set<Annotation> getQualifiers()
+ {
+ return bindings;
+ }
+
+ /**
+ * Gets the default name of the bean
+ *
+ * @return The default name
+ */
+ protected abstract String getDefaultName();
+
+ @Override
+ public abstract AbstractBean<?, ?> getSpecializedBean();
+
+ @Override
+ public Set<WBInjectionPoint<?, ?>> getAnnotatedInjectionPoints()
+ {
+ return injectionPoints;
+ }
+
+ /**
+ * Gets the merged stereotypes of the bean
+ *
+ * @return The set of merged stereotypes
+ */
+ protected MergedStereotypes<T, E> getMergedStereotypes()
+ {
+ return mergedStereotypes;
+ }
+
+ /**
+ * Gets the name of the bean
+ *
+ * @return The name
+ *
+ * @see org.jboss.webbeans.bean.BaseBean#getName()
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * Gets the scope type of the bean
+ *
+ * @return The scope type
+ *
+ * @see org.jboss.webbeans.bean.BaseBean#getScope()
+ */
+ public Class<? extends Annotation> getScope()
+ {
+ return scopeType;
+ }
+
+ /**
+ * Gets the type of the bean
+ *
+ * @return The type
+ */
+ @Override
+ public Class<T> getType()
+ {
+ return type;
+ }
+
+ /**
+ * Gets the API types of the bean
+ *
+ * @return The set of API types
+ *
+ * @see org.jboss.webbeans.bean.BaseBean#getTypeClosure()
+ */
+ public Set<Type> getTypes()
+ {
+ return types;
+ }
+
+ /**
+ * Checks if this beans annotated item is assignable from another annotated
+ * item
+ *
+ * @param annotatedItem The other annotation to check
+ * @return True if assignable, otherwise false
+ */
+ public boolean isAssignableFrom(WBAnnotated<?, ?> annotatedItem)
+ {
+ return this.getAnnotatedItem().isAssignableFrom(annotatedItem);
+ }
+
+ /**
+ * Indicates if bean is nullable
+ *
+ * @return True if nullable, false otherwise
+ *
+ * @see org.jboss.webbeans.bean.BaseBean#isNullable()
+ */
+ public boolean isNullable()
+ {
+ return !isPrimitive();
+ }
+
+ /**
+ * Indicates if bean type is a primitive
+ *
+ * @return True if primitive, false otherwise
+ */
+ @Override
+ public boolean isPrimitive()
+ {
+ return primitive;
+ }
+
+ public boolean isSerializable()
+ {
+ // TODO WTF - why are we not caching the serializability of injection
+ // points!
+ return _serializable && checkInjectionPointsAreSerializable();
+ }
+
+ protected void initSerializable()
+ {
+ _serializable = Reflections.isSerializable(type);
+ }
+
+ @Override
+ public boolean isProxyable()
+ {
+ return proxyable;
+ }
+
+ @Override
+ public boolean isDependent()
+ {
+ return Dependent.class.equals(getScope());
+ }
+
+ public boolean isNormalScoped()
+ {
+ return Container.instance().deploymentServices().get(MetaAnnotationStore.class).getScopeModel(getScope()).isNormal();
+ }
+
+ public boolean isAlternative()
+ {
+ return policy;
+ }
+
+ @Override
+ public boolean isSpecializing()
+ {
+ return getAnnotatedItem().isAnnotationPresent(Specializes.class);
+ }
+
+ public Set<Class<? extends Annotation>> getStereotypes()
+ {
+ return mergedStereotypes.getStereotypes();
+ }
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/bean/AbstractClassBean.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/AbstractClassBean.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/bean/AbstractClassBean.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/bean/AbstractClassBean.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,469 @@
+/*
+ * 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.bean;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Type;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Set;
+
+import javax.enterprise.context.Dependent;
+import javax.enterprise.context.NormalScope;
+import javax.enterprise.context.spi.CreationalContext;
+import javax.enterprise.inject.spi.AnnotatedMethod;
+import javax.enterprise.inject.spi.Decorator;
+import javax.enterprise.inject.spi.InjectionPoint;
+import javax.enterprise.inject.spi.InjectionTarget;
+import javax.enterprise.inject.spi.InterceptionType;
+import javax.enterprise.inject.spi.Interceptor;
+import javax.inject.Scope;
+
+import org.jboss.interceptor.model.InterceptionModelBuilder;
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.DefinitionException;
+import org.jboss.weld.bean.proxy.DecoratorProxyMethodHandler;
+import org.jboss.weld.bootstrap.BeanDeployerEnvironment;
+import org.jboss.weld.context.SerializableContextualInstance;
+import org.jboss.weld.injection.FieldInjectionPoint;
+import org.jboss.weld.injection.MethodInjectionPoint;
+import org.jboss.weld.introspector.WBClass;
+import org.jboss.weld.introspector.WBMethod;
+import org.jboss.weld.log.LogProvider;
+import org.jboss.weld.log.Logging;
+import org.jboss.weld.metadata.cache.MetaAnnotationStore;
+import org.jboss.weld.util.Beans;
+import org.jboss.weld.util.Proxies;
+import org.jboss.weld.util.Strings;
+
+import javassist.util.proxy.ProxyFactory;
+import javassist.util.proxy.ProxyObject;
+
+/**
+ * An abstract bean representation common for class-based beans
+ *
+ * @author Pete Muir
+ *
+ * @param <T>
+ * @param <E>
+ */
+public abstract class AbstractClassBean<T> extends AbstractBean<T, Class<T>> implements InjectionTarget<T>
+{
+ // Logger
+ private static final LogProvider log = Logging.getLogProvider(AbstractClassBean.class);
+ // The item representation
+ protected WBClass<T> annotatedItem;
+ // The injectable fields of each type in the type hierarchy, with the actual type at the bottom
+ private List<Set<FieldInjectionPoint<?, ?>>> injectableFields;
+ // The initializer methods of each type in the type hierarchy, with the actual type at the bottom
+ private List<Set<MethodInjectionPoint<?, ?>>> initializerMethods;
+ private Set<String> dependencies;
+
+ private List<Decorator<?>> decorators;
+
+ private Class<T> proxyClassForDecorators;
+
+ private final ThreadLocal<Integer> decoratorStackPosition;
+ private WBMethod<?, ?> postConstruct;
+ private WBMethod<?, ?> preDestroy;
+
+ /**
+ * Constructor
+ *
+ * @param type The type
+ * @param manager The Web Beans manager
+ */
+ protected AbstractClassBean(WBClass<T> type, String idSuffix, BeanManagerImpl manager)
+ {
+ super(idSuffix, manager);
+ this.annotatedItem = type;
+ this.decoratorStackPosition = new ThreadLocal<Integer>()
+ {
+
+ @Override
+ protected Integer initialValue()
+ {
+ return 0;
+ }
+
+ };
+ initStereotypes();
+ initPolicy();
+ }
+
+ /**
+ * Initializes the bean and its metadata
+ */
+ @Override
+ public void initialize(BeanDeployerEnvironment environment)
+ {
+ initInitializerMethods();
+ initInjectableFields();
+ super.initialize(environment);
+ checkBeanImplementation();
+ initDecorators();
+ checkType();
+ initProxyClassForDecoratedBean();
+ if (isInterceptionCandidate())
+ initInterceptors();
+ }
+
+ protected void checkType()
+ {
+
+ }
+
+ protected void initDecorators()
+ {
+ this.decorators = getManager().resolveDecorators(getTypes(), getQualifiers());
+ }
+
+ public boolean hasDecorators()
+ {
+ return this.decorators != null && this.decorators.size() > 0;
+ }
+
+ protected void initProxyClassForDecoratedBean()
+ {
+ if (hasDecorators())
+ {
+ Set<Type> types = new LinkedHashSet<Type>(getTypes());
+ ProxyFactory proxyFactory = Proxies.getProxyFactory(types);
+
+ @SuppressWarnings("unchecked")
+ Class<T> proxyClass = proxyFactory.createClass();
+
+ this.proxyClassForDecorators = proxyClass;
+ }
+ }
+
+ protected T applyDecorators(T instance, CreationalContext<T> creationalContext, InjectionPoint originalInjectionPoint)
+ {
+ List<SerializableContextualInstance<DecoratorImpl<Object>, Object>> decoratorInstances = new ArrayList<SerializableContextualInstance<DecoratorImpl<Object>,Object>>();
+ InjectionPoint ip = originalInjectionPoint;
+ boolean outside = decoratorStackPosition.get().intValue() == 0;
+ try
+ {
+ int i = decoratorStackPosition.get();
+ while (i < decorators.size())
+ {
+ Decorator<?> decorator = decorators.get(i);
+ if (decorator instanceof DecoratorImpl<?>)
+ {
+ decoratorStackPosition.set(++i);
+
+ @SuppressWarnings("unchecked")
+ DecoratorImpl<Object> decoratorBean = (DecoratorImpl<Object>) decorator;
+
+ Object decoratorInstance = getManager().getReference(ip, decorator, creationalContext);
+ decoratorInstances.add(new SerializableContextualInstance<DecoratorImpl<Object>, Object>(decoratorBean, decoratorInstance, null));
+ ip = decoratorBean.getDelegateInjectionPoint();
+ }
+ else
+ {
+ throw new IllegalStateException("Cannot operate on non container provided decorator " + decorator);
+ }
+ }
+ }
+ finally
+ {
+ if (outside)
+ {
+ decoratorStackPosition.remove();
+ }
+ }
+ try
+ {
+ T proxy = proxyClassForDecorators.newInstance();
+ ((ProxyObject) proxy).setHandler(new DecoratorProxyMethodHandler(decoratorInstances, instance));
+ return proxy;
+ }
+ catch (InstantiationException e)
+ {
+ throw new RuntimeException("Could not instantiate decorator proxy for " + toString(), e);
+ }
+ catch (IllegalAccessException e)
+ {
+ throw new RuntimeException("Could not access bean correctly when creating decorator proxy for " + toString(), e);
+ }
+ }
+
+ public List<Decorator<?>> getDecorators()
+ {
+ return Collections.unmodifiableList(decorators);
+ }
+
+ public void dispose(T instance)
+ {
+ // No-op for class beans
+ }
+
+
+ /**
+ * Initializes the bean type
+ */
+ protected void initType()
+ {
+ log.trace("Bean type specified in Java");
+ this.type = getAnnotatedItem().getJavaClass();
+ this.dependencies = new HashSet<String>();
+ for (Class<?> clazz = type.getSuperclass(); clazz != Object.class; clazz = clazz.getSuperclass())
+ {
+ dependencies.add(clazz.getName());
+ }
+ }
+
+ /**
+ * Initializes the injection points
+ */
+ protected void initInjectableFields()
+ {
+ injectableFields = Beans.getFieldInjectionPoints(this, annotatedItem);
+ addInjectionPoints(Beans.getFieldInjectionPoints(this, injectableFields));
+ }
+
+ /**
+ * Initializes the initializer methods
+ */
+ protected void initInitializerMethods()
+ {
+ initializerMethods = Beans.getInitializerMethods(this, getAnnotatedItem());
+ addInjectionPoints(Beans.getParameterInjectionPoints(this, initializerMethods));
+ }
+
+ @Override
+ protected void initScopeType()
+ {
+ for (WBClass<?> clazz = getAnnotatedItem(); clazz != null; clazz = clazz.getWBSuperclass())
+ {
+ Set<Annotation> scopeTypes = new HashSet<Annotation>();
+ scopeTypes.addAll(clazz.getDeclaredMetaAnnotations(Scope.class));
+ scopeTypes.addAll(clazz.getDeclaredMetaAnnotations(NormalScope.class));
+ if (scopeTypes.size() == 1)
+ {
+ if (getAnnotatedItem().isAnnotationPresent(scopeTypes.iterator().next().annotationType()))
+ {
+ this.scopeType = scopeTypes.iterator().next().annotationType();
+ log.trace("Scope " + scopeType + " specified by annotation");
+ }
+ break;
+ }
+ else if (scopeTypes.size() > 1)
+ {
+ throw new DefinitionException("At most one scope may be specified on " + getAnnotatedItem());
+ }
+ }
+
+ if (this.scopeType == null)
+ {
+ initScopeTypeFromStereotype();
+ }
+
+ if (this.scopeType == null)
+ {
+ this.scopeType = Dependent.class;
+ log.trace("Using default @Dependent scope");
+ }
+ }
+
+ /**
+ * Validates the bean implementation
+ */
+ protected void checkBeanImplementation() {}
+
+ @Override
+ protected void preSpecialize(BeanDeployerEnvironment environment)
+ {
+ super.preSpecialize(environment);
+ if (getAnnotatedItem().getWBSuperclass() == null || getAnnotatedItem().getWBSuperclass().getJavaClass().equals(Object.class))
+ {
+ throw new DefinitionException("Specializing bean must extend another bean " + toString());
+ }
+ }
+
+ /**
+ * Gets the annotated item
+ *
+ * @return The annotated item
+ */
+ @Override
+ public WBClass<T> getAnnotatedItem()
+ {
+ return annotatedItem;
+ }
+
+ /**
+ * Gets the default name
+ *
+ * @return The default name
+ */
+ @Override
+ protected String getDefaultName()
+ {
+ String name = Strings.decapitalize(getAnnotatedItem().getSimpleName());
+ log.trace("Default name of " + type + " is " + name);
+ return name;
+ }
+
+ /**
+ * Gets the annotated methods
+ *
+ * @return The set of annotated methods
+ */
+ public List<? extends Set<? extends MethodInjectionPoint<?, ?>>> getInitializerMethods()
+ {
+ // TODO Make immutable
+ return initializerMethods;
+ }
+
+ /**
+ * @return the injectableFields
+ */
+ public List<? extends Set<FieldInjectionPoint<?, ?>>> getInjectableFields()
+ {
+ // TODO Make immutable
+ return injectableFields;
+ }
+
+ // TODO maybe a better way to expose this?
+ public Set<String> getSuperclasses()
+ {
+ return dependencies;
+ }
+
+ public void postConstruct(T instance)
+ {
+ WBMethod<?, ?> postConstruct = getPostConstruct();
+ if (postConstruct != null)
+ {
+ try
+ {
+ postConstruct.invoke(instance);
+ }
+ catch (Exception e)
+ {
+ throw new RuntimeException("Unable to invoke " + postConstruct + " on " + instance, e);
+ }
+ }
+ }
+
+ public void preDestroy(T instance)
+ {
+ WBMethod<?, ?> preDestroy = getPreDestroy();
+ if (preDestroy != null)
+ {
+ try
+ {
+ // note: RI supports injection into @PreDestroy
+ preDestroy.invoke(instance);
+ }
+ catch (Exception e)
+ {
+ throw new RuntimeException("Unable to invoke " + preDestroy + " on " + instance, e);
+ }
+ }
+ }
+
+ /**
+ * Initializes the post-construct method
+ */
+ protected void initPostConstruct()
+ {
+ this.postConstruct = Beans.getPostConstruct(getAnnotatedItem());
+ }
+
+ /**
+ * Initializes the pre-destroy method
+ */
+ protected void initPreDestroy()
+ {
+ this.preDestroy = Beans.getPreDestroy(getAnnotatedItem());
+ }
+
+ /**
+ * Returns the post-construct method
+ *
+ * @return The post-construct method
+ */
+ public WBMethod<?, ?> getPostConstruct()
+ {
+ return postConstruct;
+ }
+
+ /**
+ * Returns the pre-destroy method
+ *
+ * @return The pre-destroy method
+ */
+ public WBMethod<?, ?> getPreDestroy()
+ {
+ return preDestroy;
+ }
+
+ protected abstract boolean isInterceptionCandidate();
+
+ /**
+ * Extracts the complete set of interception bindings from a given set of annotations.
+ *
+ * @param manager
+ * @param annotations
+ * @return
+ */
+ protected static Set<Annotation> flattenInterceptorBindings(BeanManagerImpl manager, Set<Annotation> annotations)
+ {
+ Set<Annotation> foundInterceptionBindingTypes = new HashSet<Annotation>();
+ for (Annotation annotation: annotations)
+ {
+ if (manager.isInterceptorBindingType(annotation.annotationType()))
+ {
+ foundInterceptionBindingTypes.add(annotation);
+ foundInterceptionBindingTypes.addAll(manager.getServices().get(MetaAnnotationStore.class).getInterceptorBindingModel(annotation.annotationType()).getInheritedInterceptionBindingTypes());
+ }
+ }
+ return foundInterceptionBindingTypes;
+ }
+
+ protected void initInterceptors()
+ {
+ if (manager.getBoundInterceptorsRegistry().getInterceptionModel(getType()) == null)
+ {
+ InterceptionModelBuilder<Class<?>, Interceptor<?>> builder = InterceptionModelBuilder.newBuilderFor(getType(), (Class) Interceptor.class);
+
+ Set<Annotation> classBindingAnnotations = flattenInterceptorBindings(manager, getAnnotatedItem().getAnnotations());
+ for (Class<? extends Annotation> annotation : getStereotypes())
+ {
+ classBindingAnnotations.addAll(flattenInterceptorBindings(manager, manager.getStereotypeDefinition(annotation)));
+ }
+
+ builder.interceptPostConstruct().with(manager.resolveInterceptors(InterceptionType.POST_CONSTRUCT, classBindingAnnotations.toArray(new Annotation[0])).toArray(new Interceptor<?>[]{}));
+ builder.interceptPreDestroy().with(manager.resolveInterceptors(InterceptionType.PRE_DESTROY, classBindingAnnotations.toArray(new Annotation[0])).toArray(new Interceptor<?>[]{}));
+
+ List<WBMethod<?, ?>> businessMethods = Beans.getInterceptableBusinessMethods(getAnnotatedItem());
+ for (WBMethod<?, ?> method : businessMethods)
+ {
+ List<Annotation> methodBindingAnnotations = new ArrayList<Annotation>(classBindingAnnotations);
+ methodBindingAnnotations.addAll(flattenInterceptorBindings(manager, method.getAnnotations()));
+ List<Interceptor<?>> methodBoundInterceptors = manager.resolveInterceptors(InterceptionType.AROUND_INVOKE, methodBindingAnnotations.toArray(new Annotation[]{}));
+ builder.interceptAroundInvoke(((AnnotatedMethod) method).getJavaMember()).with(methodBoundInterceptors.toArray(new Interceptor[]{}));
+ }
+ manager.getBoundInterceptorsRegistry().registerInterceptionModel(getType(), builder.build());
+ }
+ }
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/bean/AbstractProducerBean.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/AbstractProducerBean.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/bean/AbstractProducerBean.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/bean/AbstractProducerBean.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,292 @@
+/*
+ * 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.bean;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Field;
+import java.lang.reflect.Member;
+import java.lang.reflect.Method;
+import java.lang.reflect.Type;
+import java.lang.reflect.TypeVariable;
+import java.lang.reflect.WildcardType;
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.enterprise.context.Dependent;
+import javax.enterprise.context.NormalScope;
+import javax.enterprise.context.spi.CreationalContext;
+import javax.enterprise.inject.IllegalProductException;
+import javax.enterprise.inject.Produces;
+import javax.enterprise.inject.spi.InjectionPoint;
+import javax.enterprise.inject.spi.Producer;
+import javax.inject.Inject;
+import javax.inject.Scope;
+
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.DefinitionException;
+import org.jboss.weld.bootstrap.BeanDeployerEnvironment;
+import org.jboss.weld.introspector.WBMember;
+import org.jboss.weld.log.LogProvider;
+import org.jboss.weld.log.Logging;
+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;
+
+/**
+ * The implicit producer bean
+ *
+ * @author Gavin King
+ *
+ * @param <T>
+ * @param <S>
+ */
+public abstract class AbstractProducerBean<X, T, S extends Member> extends AbstractReceiverBean<X, T, S> implements Producer<T>
+{
+ private static final LogProvider log = Logging.getLogProvider(AbstractProducerBean.class);
+
+ /**
+ * Constructor
+ * @param declaringBean The declaring bean
+ * @param manager The Web Beans manager
+ */
+ public AbstractProducerBean(String idSuffix, AbstractClassBean<X> declaringBean, BeanManagerImpl manager)
+ {
+ super(idSuffix, declaringBean, manager);
+ }
+
+ @Override
+ public abstract WBMember<T, X, S> getAnnotatedItem();
+
+ @Override
+ // Overriden to provide the class of the bean that declares the producer method/field
+ public Class<?> getBeanClass()
+ {
+ return getDeclaringBean().getBeanClass();
+ }
+
+ /**
+ * Initializes the API types
+ */
+ @Override
+ protected void initTypes()
+ {
+ if (getType().isArray() || getType().isPrimitive())
+ {
+ Set<Type> types = new HashSet<Type>();
+ types.add(getType());
+ types.add(Object.class);
+ super.types = types;
+ }
+ else if (getType().isInterface())
+ {
+ Set<Type> types = new HashSet<Type>();
+ types.add(Object.class);
+ types.addAll(getAnnotatedItem().getTypeClosure());
+ super.types = types;
+ }
+ else
+ {
+ super.initTypes();
+ }
+ }
+
+ /**
+ * Initializes the type
+ */
+ protected void initType()
+ {
+ try
+ {
+ this.type = getAnnotatedItem().getJavaClass();
+ }
+ catch (ClassCastException e)
+ {
+ Type type = Beans.getDeclaredBeanType(getClass());
+ throw new RuntimeException(" Cannot cast producer type " + getAnnotatedItem().getJavaClass() + " to bean type " + (type == null ? " unknown " : type), e);
+ }
+ }
+
+ /**
+ * Validates the producer method
+ */
+ protected void checkProducerReturnType()
+ {
+ if (getAnnotatedItem().getBaseType() instanceof TypeVariable<?>)
+ {
+ throw new DefinitionException("Return type must be concrete " + getAnnotatedItem().getBaseType());
+ }
+ if (getAnnotatedItem().getBaseType() instanceof WildcardType)
+ {
+ throw new DefinitionException("Return type must be concrete " + getAnnotatedItem().getBaseType());
+ }
+ for (Type type : getAnnotatedItem().getActualTypeArguments())
+ {
+ if (!(type instanceof Class))
+ {
+ throw new DefinitionException("Producer type cannot be parameterized with type parameter or wildcard:\n" + this.getAnnotatedItem());
+ }
+ }
+ }
+
+ /**
+ * Initializes the bean and its metadata
+ */
+ @Override
+ public void initialize(BeanDeployerEnvironment environment)
+ {
+ getDeclaringBean().initialize(environment);
+ super.initialize(environment);
+ checkProducerReturnType();
+ }
+
+ /**
+ * Validates the return value
+ *
+ * @param instance The instance to validate
+ */
+ protected void checkReturnValue(T instance)
+ {
+ if (instance == null && !isDependent())
+ {
+ throw new IllegalProductException("Cannot return null from a non-dependent producer method");
+ }
+ else if (instance != null)
+ {
+ boolean passivating = manager.getServices().get(MetaAnnotationStore.class).getScopeModel(getScope()).isPassivating();
+ if (passivating && !Reflections.isSerializable(instance.getClass()))
+ {
+ throw new IllegalProductException("Producers cannot declare passivating scope and return a non-serializable class");
+ }
+ InjectionPoint injectionPoint = manager.getCurrentInjectionPoint();
+ if (injectionPoint == null)
+ {
+ return;
+ }
+ if (!Reflections.isSerializable(instance.getClass()) && Beans.isPassivationCapableBean(injectionPoint.getBean()))
+ {
+ if (injectionPoint.getMember() instanceof Field)
+ {
+ if (!Reflections.isTransient(injectionPoint.getMember()) && instance != null && !Reflections.isSerializable(instance.getClass()))
+ {
+ throw new IllegalProductException("Producers cannot produce non-serializable instances for injection into non-transient fields of passivating beans\n\nProducer: " + this.toString() + "\nInjection Point: " + injectionPoint.toString());
+ }
+ }
+ else if (injectionPoint.getMember() instanceof Method)
+ {
+ Method method = (Method) injectionPoint.getMember();
+ if (method.isAnnotationPresent(Inject.class))
+ {
+ throw new IllegalProductException("Producers cannot produce non-serializable instances for injection into parameters of intializers of beans declaring passivating scope. Bean " + toString() + " being injected into " + injectionPoint.toString());
+ }
+ if (method.isAnnotationPresent(Produces.class))
+ {
+ throw new IllegalProductException("Producers cannot produce non-serializable instances for injection into parameters of producer methods declaring passivating scope. Bean " + toString() + " being injected into " + injectionPoint.toString());
+ }
+ }
+ else if (injectionPoint.getMember() instanceof Constructor)
+ {
+ throw new IllegalProductException("Producers cannot produce non-serializable instances for injection into parameters of constructors of beans declaring passivating scope. Bean " + toString() + " being injected into " + injectionPoint.toString());
+ }
+ }
+ }
+ }
+
+ @Override
+ protected void initScopeType()
+ {
+ Set<Annotation> scopeAnnotations = new HashSet<Annotation>();
+ scopeAnnotations.addAll(getAnnotatedItem().getMetaAnnotations(Scope.class));
+ scopeAnnotations.addAll(getAnnotatedItem().getMetaAnnotations(NormalScope.class));
+ if (scopeAnnotations.size() > 1)
+ {
+ throw new DefinitionException("At most one scope may be specified");
+ }
+ if (scopeAnnotations.size() == 1)
+ {
+ this.scopeType = scopeAnnotations.iterator().next().annotationType();
+ log.trace("Scope " + scopeType + " specified by annotation");
+ return;
+ }
+
+ initScopeTypeFromStereotype();
+
+ if (this.scopeType == null)
+ {
+ this.scopeType = Dependent.class;
+ log.trace("Using default @Dependent scope");
+ }
+ }
+
+ @Override
+ protected void initSerializable()
+ {
+ // No-op
+ }
+
+ @Override
+ public boolean isSerializable()
+ {
+ return true;
+ }
+
+ /**
+ * Creates an instance of the bean
+ *
+ * @returns The instance
+ */
+ public T create(final CreationalContext<T> creationalContext)
+ {
+ try
+ {
+ T instance = produce(creationalContext);
+ checkReturnValue(instance);
+ return instance;
+ }
+ finally
+ {
+ if (getDeclaringBean().isDependent())
+ {
+ creationalContext.release();
+ }
+ }
+ }
+
+ /**
+ * Gets a string representation
+ *
+ * @return The string representation
+ */
+ @Override
+ public String getDescription()
+ {
+ StringBuilder buffer = new StringBuilder();
+ buffer.append("Annotated " + Names.scopeTypeToString(getScope()));
+ if (getName() == null)
+ {
+ buffer.append("unnamed producer bean");
+ }
+ else
+ {
+ buffer.append("simple producer bean '" + getName() + "'");
+ }
+ buffer.append(" [" + getBeanClass().getName() + "] for class type [" + getType().getName() + "] API types " + getTypes() + ", binding types " + getQualifiers());
+ return buffer.toString();
+ }
+
+}
\ No newline at end of file
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/bean/AbstractReceiverBean.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/AbstractReceiverBean.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/bean/AbstractReceiverBean.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/bean/AbstractReceiverBean.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,124 @@
+/*
+ * 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.bean;
+
+import java.lang.reflect.Member;
+
+import javax.enterprise.context.spi.CreationalContext;
+import javax.enterprise.inject.Alternative;
+
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.bootstrap.BeanDeployerEnvironment;
+import org.jboss.weld.context.WBCreationalContext;
+import org.jboss.weld.introspector.WBMember;
+import org.jboss.weld.log.LogProvider;
+import org.jboss.weld.log.Logging;
+
+/**
+ * @author pmuir
+ *
+ */
+public abstract class AbstractReceiverBean<X, T, S extends Member> extends AbstractBean<T, S>
+{
+
+ private static final LogProvider log = Logging.getLogProvider(AbstractReceiverBean.class);
+
+ private AbstractClassBean<X> declaringBean;
+ private boolean policy;
+
+ public AbstractReceiverBean(String idSuffix, AbstractClassBean<X> declaringBean, BeanManagerImpl manager)
+ {
+ super(idSuffix, manager);
+ this.declaringBean = declaringBean;
+ }
+
+ @Override
+ public void initialize(BeanDeployerEnvironment environment)
+ {
+ super.initialize(environment);
+ }
+
+ /**
+ * Gets the receiver of the product
+ *
+ * @return The receiver
+ */
+ protected Object getReceiver(CreationalContext<?> creationalContext)
+ {
+ // This is a bit dangerous, as it means that producer methods can end of
+ // executing on partially constructed instances. Also, it's not required
+ // by the spec...
+ if (getAnnotatedItem().isStatic())
+ {
+ return null;
+ }
+ else
+ {
+ if (creationalContext instanceof WBCreationalContext<?>)
+ {
+ WBCreationalContext<?> creationalContextImpl = (WBCreationalContext<?>) creationalContext;
+ if (creationalContextImpl.containsIncompleteInstance(getDeclaringBean()))
+ {
+ log.warn("Executing producer field or method " + getAnnotatedItem() + " on incomplete declaring bean " + getDeclaringBean() + " due to circular injection");
+ return creationalContextImpl.getIncompleteInstance(getDeclaringBean());
+ }
+ }
+ return manager.getReference(getDeclaringBean(), Object.class, creationalContext);
+ }
+ }
+
+
+ /**
+ * Returns the declaring bean
+ *
+ * @return The bean representation
+ */
+ public AbstractClassBean<X> getDeclaringBean()
+ {
+ return declaringBean;
+ }
+
+ /* (non-Javadoc)
+ * @see org.jboss.webbeans.bean.AbstractBean#isPolicy()
+ */
+ @Override
+ public boolean isAlternative()
+ {
+ return policy;
+ }
+
+ @Override
+ protected void initPolicy()
+ {
+ if (getDeclaringBean().isAlternative())
+ {
+ this.policy = true;
+ }
+ else if (getAnnotatedItem().isAnnotationPresent(Alternative.class))
+ {
+ this.policy = true;
+ }
+ else if (getMergedStereotypes().isPolicy())
+ {
+ this.policy = true;
+ }
+ }
+
+ @Override
+ protected abstract WBMember<T, ?, S> getAnnotatedItem();
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/bean/DecoratorImpl.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/DecoratorImpl.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/bean/DecoratorImpl.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/bean/DecoratorImpl.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,228 @@
+/*
+ * 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.bean;
+
+import java.io.Serializable;
+import java.lang.annotation.Annotation;
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.enterprise.inject.spi.Decorator;
+import javax.inject.Inject;
+
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.DefinitionException;
+import org.jboss.weld.bootstrap.BeanDeployerEnvironment;
+import org.jboss.weld.injection.MethodInjectionPoint;
+import org.jboss.weld.injection.WBInjectionPoint;
+import org.jboss.weld.introspector.WBClass;
+
+public class DecoratorImpl<T> extends ManagedBean<T> implements Decorator<T>
+{
+
+ public static <T> Decorator<T> wrapForResolver(final Decorator<T> decorator)
+ {
+ return new ForwardingDecorator<T>()
+ {
+
+ @Override
+ public Set<Annotation> getQualifiers()
+ {
+ return delegate().getDelegateQualifiers();
+ }
+
+ @Override
+ public Set<Type> getTypes()
+ {
+ return delegate().getTypes();
+ }
+
+ @Override
+ protected Decorator<T> delegate()
+ {
+ return decorator;
+ }
+
+ };
+ }
+
+ /**
+ * Creates a decorator bean
+ *
+ * @param <T> The type
+ * @param clazz The class
+ * @param manager the current manager
+ * @return a Bean
+ */
+ public static <T> DecoratorImpl<T> of(WBClass<T> clazz, BeanManagerImpl manager)
+ {
+ return new DecoratorImpl<T>(clazz, manager);
+ }
+
+ private WBInjectionPoint<?, ?> delegateInjectionPoint;
+ private Set<Annotation> delegateBindings;
+ private Type delegateType;
+ private Set<Type> delegateTypes;
+ private Set<Type> decoratedTypes;
+
+ protected DecoratorImpl(WBClass<T> type, BeanManagerImpl manager)
+ {
+ super(type, new StringBuilder().append(Decorator.class.getSimpleName()).append(BEAN_ID_SEPARATOR).append(type.getName()).toString(), manager);
+ }
+
+ @Override
+ public void initialize(BeanDeployerEnvironment environment)
+ {
+ if (!isInitialized())
+ {
+ super.initialize(environment);
+ initDelegateInjectionPoint();
+ initDecoratedTypes();
+ initDelegateBindings();
+ initDelegateType();
+ checkDelegateType();
+ }
+ }
+
+ protected void initDecoratedTypes()
+ {
+ this.decoratedTypes = new HashSet<Type>();
+ this.decoratedTypes.addAll(getAnnotatedItem().getInterfaceOnlyFlattenedTypeHierarchy());
+ this.decoratedTypes.remove(Serializable.class);
+ }
+
+ protected void initDelegateInjectionPoint()
+ {
+ this.delegateInjectionPoint = getDelegateInjectionPoints().iterator().next();
+ }
+
+ @Override
+ protected void checkDelegateInjectionPoints()
+ {
+ for (WBInjectionPoint<?, ?> injectionPoint : getDelegateInjectionPoints())
+ {
+ if (injectionPoint instanceof MethodInjectionPoint<?, ?> && !injectionPoint.isAnnotationPresent(Inject.class))
+ {
+ throw new DefinitionException("Method with @Decorates parameter must be an initializer method " + injectionPoint);
+ }
+ }
+ if (getDelegateInjectionPoints().size() == 0)
+ {
+ throw new DefinitionException("No delegate injection points defined " + this);
+ }
+ else if (getDelegateInjectionPoints().size() > 1)
+ {
+ throw new DefinitionException("Too many delegate injection point defined " + this);
+ }
+ }
+
+ protected void initDelegateBindings()
+ {
+ this.delegateBindings = new HashSet<Annotation>();
+ this.delegateBindings.addAll(this.delegateInjectionPoint.getQualifiers());
+ }
+
+ protected void initDelegateType()
+ {
+ this.delegateType = this.delegateInjectionPoint.getBaseType();
+ this.delegateTypes = new HashSet<Type>();
+ delegateTypes.add(delegateType);
+ }
+
+ protected void checkDelegateType()
+ {
+ for (Type decoratedType : getDecoratedTypes())
+ {
+ if (decoratedType instanceof Class)
+ {
+ if (!((Class<?>) decoratedType).isAssignableFrom(delegateInjectionPoint.getJavaClass()))
+ {
+ throw new DefinitionException("The delegate type must extend or implement every decorated type. Decorated type " + decoratedType + "." + this );
+ }
+ }
+ else if (decoratedType instanceof ParameterizedType)
+ {
+ ParameterizedType parameterizedType = (ParameterizedType) decoratedType;
+ if (!delegateInjectionPoint.isParameterizedType())
+ {
+ throw new DefinitionException("The decorated type is parameterized, but the delegate type isn't. Delegate type " + delegateType + "." + this);
+ }
+ if (!Arrays.equals(delegateInjectionPoint.getActualTypeArguments(), parameterizedType.getActualTypeArguments()))
+ {
+ throw new DefinitionException("The delegate type must have exactly the same type parameters as the decorated type. Decorated type " + decoratedType + "." + this );
+ }
+ Type rawType = ((ParameterizedType) decoratedType).getRawType();
+ if (rawType instanceof Class && !((Class<?>) rawType).isAssignableFrom(delegateInjectionPoint.getJavaClass()))
+ {
+ throw new DefinitionException("The delegate type must extend or implement every decorated type. Decorated type " + decoratedType + "." + this );
+ }
+ else
+ {
+ throw new IllegalStateException("Unable to process " + decoratedType);
+ }
+
+ }
+ }
+ }
+
+ public Set<Annotation> getDelegateQualifiers()
+ {
+ return delegateBindings;
+ }
+
+ public Type getDelegateType()
+ {
+ return delegateType;
+ }
+
+ public Set<Type> getDecoratedTypes()
+ {
+ return decoratedTypes;
+ }
+
+ public WBInjectionPoint<?, ?> getDelegateInjectionPoint()
+ {
+ return delegateInjectionPoint;
+ }
+
+ /**
+ * The type closure of the delegate type
+ *
+ * @return the delegateTypes
+ */
+ public Set<Type> getDelegateTypes()
+ {
+ return delegateTypes;
+ }
+
+ @Override
+ protected void initDecorators()
+ {
+ // No-op, decorators can't have decorators
+ }
+
+ @Override
+ public String getDescription()
+ {
+ // TODO Auto-generated method stub
+ return super.getDescription("decorator");
+ }
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/bean/DisposalMethod.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/DisposalMethod.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/bean/DisposalMethod.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/bean/DisposalMethod.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,250 @@
+/*
+ * 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.bean;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Method;
+import java.lang.reflect.Type;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.enterprise.context.spi.CreationalContext;
+import javax.enterprise.event.Observes;
+import javax.enterprise.inject.Disposes;
+import javax.enterprise.inject.Produces;
+import javax.inject.Inject;
+
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.DefinitionException;
+import org.jboss.weld.bootstrap.BeanDeployerEnvironment;
+import org.jboss.weld.injection.MethodInjectionPoint;
+import org.jboss.weld.introspector.WBMethod;
+
+public class DisposalMethod<X, T> extends AbstractReceiverBean<X, T, Method>
+{
+
+ protected MethodInjectionPoint<T, ?> disposalMethodInjectionPoint;
+
+ protected DisposalMethod(BeanManagerImpl manager, WBMethod<T, X> disposalMethod, AbstractClassBean<X> declaringBean)
+ {
+ super(new StringBuilder().append(DisposalMethod.class.getSimpleName()).append(BEAN_ID_SEPARATOR).append(declaringBean.getAnnotatedItem().getName()).append(disposalMethod.getSignature().toString()).toString(), declaringBean, manager);
+ this.disposalMethodInjectionPoint = MethodInjectionPoint.of(this, disposalMethod);
+ initBindings();
+ initType();
+ initTypes();
+ initStereotypes();
+ initPolicy();
+ }
+
+ @Override
+ public void initialize(BeanDeployerEnvironment environment)
+ {
+ addInjectionPoint(disposalMethodInjectionPoint);
+ super.initialize(environment);
+ checkDisposalMethod();
+ }
+
+ @SuppressWarnings("unchecked")
+ protected void initType()
+ {
+ this.type = (Class<T>) disposalMethodInjectionPoint.getAnnotatedParameters(Disposes.class).get(0).getJavaClass();
+ }
+
+ @Override
+ public WBMethod<T, ?> getAnnotatedItem()
+ {
+ return disposalMethodInjectionPoint;
+ }
+
+ public static <X, T> DisposalMethod<X, T> of(BeanManagerImpl manager, WBMethod<T, X> disposalMethod, AbstractClassBean<X> declaringBean)
+ {
+ return new DisposalMethod<X, T>(manager, disposalMethod, declaringBean);
+ }
+
+ @Override
+ protected void initBindings()
+ {
+ // At least 1 parameter exists, already checked in constructor
+ this.bindings = new HashSet<Annotation>();
+ this.bindings.addAll(disposalMethodInjectionPoint.getWBParameters().get(0).getQualifiers());
+ initDefaultBindings();
+ }
+
+ /**
+ * Initializes the API types
+ */
+ @Override
+ protected void initTypes()
+ {
+ Set<Type> types = new HashSet<Type>();
+ types.addAll(disposalMethodInjectionPoint.getAnnotatedParameters(Disposes.class).get(0).getTypeClosure());
+ types.add(Object.class);
+ super.types = types;
+ }
+
+ @Override
+ public String getName()
+ {
+ return null;
+ }
+
+ @Override
+ public Class<? extends Annotation> getScope()
+ {
+ return null;
+ }
+
+ @Override
+ public Set<Type> getTypes()
+ {
+ return types;
+ }
+
+ @Override
+ public String getDescription()
+ {
+ return disposalMethodInjectionPoint.toString();
+ }
+
+ @Override
+ public boolean isNullable()
+ {
+ // Not relevant
+ return false;
+ }
+
+ @Override
+ public boolean isSerializable()
+ {
+ // Not relevant
+ return false;
+ }
+
+ @Override
+ public boolean isProxyable()
+ {
+ return true;
+ }
+
+ public T create(CreationalContext<T> creationalContext)
+ {
+ // Not Relevant
+ return null;
+ }
+
+ public void invokeDisposeMethod(Object instance)
+ {
+ CreationalContext<T> creationalContext = manager.createCreationalContext(this);
+ Object receiverInstance = getReceiver(creationalContext);
+ if (receiverInstance == null)
+ {
+ disposalMethodInjectionPoint.invokeWithSpecialValue(null, Disposes.class, instance, manager, creationalContext, IllegalArgumentException.class);
+ }
+ else
+ {
+ disposalMethodInjectionPoint.invokeOnInstanceWithSpecialValue(receiverInstance, Disposes.class, instance, manager, creationalContext, IllegalArgumentException.class);
+ }
+ creationalContext.release();
+ }
+
+ private void checkDisposalMethod()
+ {
+ if (!disposalMethodInjectionPoint.getWBParameters().get(0).isAnnotationPresent(Disposes.class))
+ {
+ throw new DefinitionException(disposalMethodInjectionPoint.toString() + " doesn't have @Dispose as first parameter");
+ }
+ if (disposalMethodInjectionPoint.getAnnotatedParameters(Disposes.class).size() > 1)
+ {
+ throw new DefinitionException(disposalMethodInjectionPoint.toString() + " has more than one @Dispose parameters");
+ }
+ if (disposalMethodInjectionPoint.getAnnotatedParameters(Observes.class).size() > 0)
+ {
+ throw new DefinitionException("@Observes is not allowed on disposal method, see " + disposalMethodInjectionPoint.toString());
+ }
+ if (disposalMethodInjectionPoint.getAnnotation(Inject.class) != null)
+ {
+ throw new DefinitionException("@Intitializer is not allowed on a disposal method, see " + disposalMethodInjectionPoint.toString());
+ }
+ if (disposalMethodInjectionPoint.getAnnotation(Produces.class) != null)
+ {
+ throw new DefinitionException("@Produces is not allowed on a disposal method, see " + disposalMethodInjectionPoint.toString());
+ }
+ if (getDeclaringBean() instanceof SessionBean<?>)
+ {
+ boolean methodDeclaredOnTypes = false;
+ // TODO use annotated item?
+ for (Type type : getDeclaringBean().getTypes())
+ {
+ if (type instanceof Class<?>)
+ {
+ Class<?> clazz = (Class<?>) type;
+ try
+ {
+ clazz.getDeclaredMethod(disposalMethodInjectionPoint.getName(), disposalMethodInjectionPoint.getParameterTypesAsArray());
+ methodDeclaredOnTypes = true;
+ }
+ catch (NoSuchMethodException nsme)
+ {
+ // No - op
+ }
+ }
+ }
+ if (!methodDeclaredOnTypes)
+ {
+ throw new DefinitionException("Producer method " + toString() + " must be declared on a business interface of " + getDeclaringBean());
+ }
+ }
+ }
+
+ @Override
+ public Class<T> getType()
+ {
+ return type;
+ }
+
+ @Override
+ protected String getDefaultName()
+ {
+ return disposalMethodInjectionPoint.getPropertyName();
+ }
+
+ public void destroy(T instance, CreationalContext<T> creationalContext)
+ {
+ // No-op. Producer method dependent objects are destroyed in producer method bean
+ }
+
+ @Override
+ public AbstractBean<?, ?> getSpecializedBean()
+ {
+ // Doesn't support specialization
+ return null;
+ }
+
+ @Override
+ protected void initScopeType()
+ {
+ // Disposal methods aren't scoped
+ }
+
+ @Override
+ public Set<Class<? extends Annotation>> getStereotypes()
+ {
+ return Collections.emptySet();
+ }
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/bean/ForwardingBean.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/ForwardingBean.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/bean/ForwardingBean.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/bean/ForwardingBean.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,172 @@
+/*
+ * 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.bean;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Type;
+import java.util.Set;
+
+import javax.enterprise.context.spi.CreationalContext;
+import javax.enterprise.inject.spi.Bean;
+import javax.enterprise.inject.spi.InjectionPoint;
+
+/**
+ * A delegating bean
+ *
+ * @author Pete Muir
+ *
+ * @param <T>
+ */
+public abstract class ForwardingBean<T> implements Bean<T>
+{
+
+ /**
+ * Creates an instance of the delegate
+ *
+ * @return an instance of the delegate
+ */
+ public T create(CreationalContext<T> creationalContext)
+ {
+ return delegate().create(creationalContext);
+ }
+
+ /**
+ * Abstract getter for the delegate
+ *
+ * @return The delegate
+ */
+ protected abstract Bean<T> delegate();
+
+ /**
+ * Destroys an instance through the delegate
+ *
+ * @param instance The instance to destroy
+ */
+ public void destroy(T instance, CreationalContext<T> creationalContext)
+ {
+ delegate().destroy(instance, creationalContext);
+ }
+
+ /**
+ * Compares an object with the delegate
+ *
+ * @return True if equals, false otherwise
+ */
+ @Override
+ public boolean equals(Object obj)
+ {
+ return delegate().equals(obj);
+ }
+
+ public Class<?> getBeanClass()
+ {
+ return delegate().getBeanClass();
+ }
+
+ /**
+ * Gets the binding types of the delegate
+ *
+ * @return The binding types
+ */
+ public Set<Annotation> getQualifiers()
+ {
+ return delegate().getQualifiers();
+ }
+
+ public Set<InjectionPoint> getInjectionPoints()
+ {
+ return delegate().getInjectionPoints();
+ }
+
+ /**
+ * Gets the name of the delegate
+ *
+ * @return The name
+ */
+ public String getName()
+ {
+ return delegate().getName();
+ }
+
+ /**
+ * The stereotypes applied to this bean
+ *
+ * @return stereotypes if any
+ */
+ public Set<Class<? extends Annotation>> getStereotypes()
+ {
+ return delegate().getStereotypes();
+ }
+
+ /**
+ * Gets the scope type of the delegate
+ *
+ * @return The scope type
+ */
+ public Class<? extends Annotation> getScope()
+ {
+ return delegate().getScope();
+ }
+
+ /**
+ * Gets the API types of the delegate
+ *
+ * @return The API types
+ */
+ public Set<Type> getTypes()
+ {
+ return delegate().getTypes();
+ }
+
+ /**
+ * Gets the hash code of the delegate
+ *
+ * @return The hash code
+ */
+ @Override
+ public int hashCode()
+ {
+ return delegate().hashCode();
+ }
+
+ /**
+ * Indicates if the delegate is nullable
+ *
+ * @return True if nullable, false otherwise
+ */
+ public boolean isNullable()
+ {
+ return delegate().isNullable();
+ }
+
+ public boolean isAlternative()
+ {
+ return delegate().isAlternative();
+ }
+
+ /**
+ * Returns a string representation
+ *
+ * @return The string representation
+ */
+ @Override
+ public String toString()
+ {
+ return "ForwardingBean " + getName() + " for " + delegate().toString();
+ }
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/bean/ForwardingDecorator.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/ForwardingDecorator.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/bean/ForwardingDecorator.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/bean/ForwardingDecorator.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,46 @@
+/*
+ * 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.bean;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Type;
+import java.util.Set;
+
+import javax.enterprise.inject.spi.Decorator;
+
+public abstract class ForwardingDecorator<T> extends ForwardingBean<T> implements Decorator<T>
+{
+
+ @Override
+ protected abstract Decorator<T> delegate();
+
+ public Set<Type> getDecoratedTypes()
+ {
+ return delegate().getDecoratedTypes();
+ }
+
+ public Set<Annotation> getDelegateQualifiers()
+ {
+ return delegate().getDelegateQualifiers();
+ }
+
+ public Type getDelegateType()
+ {
+ return delegate().getDelegateType();
+ }
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/bean/InterceptorImpl.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/InterceptorImpl.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/bean/InterceptorImpl.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/bean/InterceptorImpl.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,87 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2009, Red Hat, Inc. and/or its affiliates, 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.bean;
+
+import org.jboss.interceptor.model.InterceptorClassMetadata;
+import org.jboss.interceptor.registry.InterceptorClassMetadataRegistry;
+import org.jboss.interceptor.proxy.DirectClassInterceptionHandler;
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.introspector.WBClass;
+import org.jboss.weld.metadata.cache.MetaAnnotationStore;
+
+import javax.enterprise.inject.spi.InterceptionType;
+import javax.enterprise.inject.spi.Interceptor;
+import javax.interceptor.InvocationContext;
+import java.lang.annotation.Annotation;
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * @author Marius Bogoevici
+ */
+public class InterceptorImpl<T> extends ManagedBean<T> implements Interceptor<T>
+{
+ private final InterceptorClassMetadata interceptorClassMetadata;
+
+ private final Set<Annotation> interceptorBindingTypes;
+
+ protected InterceptorImpl(WBClass<T> type, BeanManagerImpl manager)
+ {
+ super(type, new StringBuilder().append(Interceptor.class.getSimpleName()).append(BEAN_ID_SEPARATOR).append(type.getName()).toString(), manager);
+ this.interceptorClassMetadata = InterceptorClassMetadataRegistry.getRegistry().getInterceptorClassMetadata(type.getJavaClass());
+ this.interceptorBindingTypes = flattenInterceptorBindings(manager, getAnnotatedItem().getAnnotations());
+ }
+
+ public static <T> InterceptorImpl<T> of(WBClass<T> type, BeanManagerImpl manager)
+ {
+ return new InterceptorImpl(type, manager);
+ }
+
+ public Set<Annotation> getInterceptorBindingTypes()
+ {
+ return interceptorBindingTypes;
+ }
+
+ public Object intercept(InterceptionType type, T instance, InvocationContext ctx)
+ {
+ try
+ {
+ return new DirectClassInterceptionHandler(instance, getType()).invoke(ctx.getTarget(), org.jboss.interceptor.model.InterceptionType.valueOf(type.name()), ctx);
+ } catch (Exception e)
+ {
+ throw new RuntimeException(e);
+ }
+ }
+
+ public boolean intercepts(InterceptionType type)
+ {
+ return interceptorClassMetadata.getInterceptorMethods(org.jboss.interceptor.model.InterceptionType.valueOf(type.name())).size() > 0;
+ }
+
+ @Override
+ public void postConstruct(T instance)
+ {
+ // do nothing on PostConstruct
+ }
+
+ @Override
+ public void preDestroy(T instance)
+ {
+ // do nothing on PreDestroy
+ }
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/bean/ManagedBean.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/ManagedBean.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/bean/ManagedBean.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/bean/ManagedBean.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,469 @@
+/*
+ * 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.bean;
+
+import java.util.Set;
+import java.util.List;
+import java.util.ArrayList;
+import java.lang.annotation.Annotation;
+
+import javax.enterprise.context.spi.CreationalContext;
+import javax.enterprise.event.Observes;
+import javax.enterprise.inject.Disposes;
+import javax.enterprise.inject.spi.Decorator;
+import javax.enterprise.inject.spi.InjectionPoint;
+import javax.enterprise.inject.spi.AnnotatedMethod;
+
+import org.jboss.interceptor.proxy.InterceptorProxyCreatorImpl;
+import org.jboss.interceptor.proxy.InterceptionHandlerFactory;
+import org.jboss.interceptor.util.InterceptionUtils;
+import org.jboss.interceptor.model.InterceptionModelBuilder;
+import org.jboss.interceptor.registry.InterceptorRegistry;
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.DefinitionException;
+import org.jboss.weld.DeploymentException;
+import org.jboss.weld.bean.interceptor.ClassInterceptionHandlerFactory;
+import org.jboss.weld.bean.interceptor.InterceptorInterceptionHandlerFactory;
+import org.jboss.weld.bootstrap.BeanDeployerEnvironment;
+import org.jboss.weld.injection.ConstructorInjectionPoint;
+import org.jboss.weld.injection.InjectionContextImpl;
+import org.jboss.weld.injection.WBInjectionPoint;
+import org.jboss.weld.introspector.WBClass;
+import org.jboss.weld.introspector.WBConstructor;
+import org.jboss.weld.introspector.WBField;
+import org.jboss.weld.introspector.WBMethod;
+import org.jboss.weld.log.LogProvider;
+import org.jboss.weld.log.Logging;
+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;
+
+/**
+ * Represents a simple bean
+ *
+ * @author Pete Muir
+ * @author Marius Bogoevici
+ * @param <T> The type (class) of the bean
+ */
+public class ManagedBean<T> extends AbstractClassBean<T>
+{
+ // Logger
+ private static LogProvider log = Logging.getLogProvider(ManagedBean.class);
+
+ // The constructor
+ private ConstructorInjectionPoint<T> constructor;
+ private Set<WBInjectionPoint<?, ?>> ejbInjectionPoints;
+ private Set<WBInjectionPoint<?, ?>> persistenceContextInjectionPoints;
+ private Set<WBInjectionPoint<?, ?>> persistenceUnitInjectionPoints;
+ private Set<WBInjectionPoint<?, ?>> resourceInjectionPoints;
+
+ private ManagedBean<?> specializedBean;
+
+ /**
+ * Creates a simple, annotation defined Web Bean
+ *
+ * @param <T> The type
+ * @param clazz The class
+ * @param manager the current manager
+ * @return A Web Bean
+ */
+ public static <T> ManagedBean<T> of(WBClass<T> clazz, BeanManagerImpl manager)
+ {
+ return new ManagedBean<T>(clazz, new StringBuilder().append(ManagedBean.class.getSimpleName()).append(BEAN_ID_SEPARATOR).append(clazz.getName()).toString(), manager);
+ }
+
+ /**
+ * Constructor
+ *
+ * @param type The type of the bean
+ * @param manager The Web Beans manager
+ */
+ protected ManagedBean(WBClass<T> type, String idSuffix, BeanManagerImpl manager)
+ {
+ super(type, idSuffix, manager);
+ initType();
+ initTypes();
+ initBindings();
+ }
+
+ /**
+ * Creates an instance of the bean
+ *
+ * @return The instance
+ */
+ public T create(CreationalContext<T> creationalContext)
+ {
+ InjectionPoint originalInjectionPoint = null;
+ if (hasDecorators())
+ {
+ originalInjectionPoint = attachCorrectInjectionPoint();
+ }
+ T instance = produce(creationalContext);
+ inject(instance, creationalContext);
+ if (hasDecorators())
+ {
+ instance = applyDecorators(instance, creationalContext, originalInjectionPoint);
+ }
+ if (isInterceptionCandidate() && (hasBoundInterceptors() || hasDeclaredInterceptors()))
+ {
+ instance = applyInterceptors(instance, creationalContext);
+ InterceptionUtils.executePostConstruct(instance);
+ } else
+ {
+ postConstruct(instance);
+ }
+ return instance;
+ }
+
+ public T produce(CreationalContext<T> ctx)
+ {
+ T instance = constructor.newInstance(manager, ctx);
+ if (!hasDecorators())
+ {
+ // This should be safe, but needs verification PLM
+ // Without this, the chaining of decorators will fail as the incomplete instance will be resolved
+ ctx.push(instance);
+ }
+ return instance;
+ }
+
+ public void inject(final T instance, final CreationalContext<T> ctx)
+ {
+ new InjectionContextImpl<T>(getManager(), this, instance)
+ {
+
+ public void proceed()
+ {
+ Beans.injectEEFields(instance, getManager(), ejbInjectionPoints, persistenceContextInjectionPoints, persistenceUnitInjectionPoints, resourceInjectionPoints);
+ Beans.injectFieldsAndInitializers(instance, ctx, getManager(), getInjectableFields(), getInitializerMethods());
+ }
+
+ }.run();
+
+ }
+
+ protected InjectionPoint attachCorrectInjectionPoint()
+ {
+ Decorator<?> decorator = getDecorators().get(getDecorators().size() - 1);
+ if (decorator instanceof DecoratorImpl<?>)
+ {
+ DecoratorImpl<?> decoratorBean = (DecoratorImpl<?>) decorator;
+ InjectionPoint outerDelegateInjectionPoint = decoratorBean.getDelegateInjectionPoint();
+ return getManager().replaceOrPushCurrentInjectionPoint(outerDelegateInjectionPoint);
+ } else
+ {
+ throw new IllegalStateException("Cannot operate on user defined decorator");
+ }
+ }
+
+ /**
+ * Destroys an instance of the bean
+ *
+ * @param instance The instance
+ */
+ public void destroy(T instance, CreationalContext<T> creationalContext)
+ {
+ try
+ {
+ if (!isInterceptionCandidate() || !hasBoundInterceptors())
+ preDestroy(instance);
+ else
+ {
+ InterceptionUtils.executePredestroy(instance);
+ }
+ creationalContext.release();
+ }
+ catch (Exception e)
+ {
+ log.error("Error destroying " + toString(), e);
+ }
+ }
+
+ /**
+ * Initializes the bean and its metadata
+ */
+ @Override
+ public void initialize(BeanDeployerEnvironment environment)
+ {
+ if (!isInitialized())
+ {
+ initConstructor();
+ checkConstructor();
+ super.initialize(environment);
+ initPostConstruct();
+ initPreDestroy();
+ initEEInjectionPoints();
+ if (isInterceptionCandidate())
+ initDeclaredInterceptors();
+ }
+ }
+
+ private void initEEInjectionPoints()
+ {
+ this.ejbInjectionPoints = Beans.getEjbInjectionPoints(this, getAnnotatedItem(), getManager());
+ this.persistenceContextInjectionPoints = Beans.getPersistenceContextInjectionPoints(this, getAnnotatedItem(), getManager());
+ this.persistenceUnitInjectionPoints = Beans.getPersistenceUnitInjectionPoints(this, getAnnotatedItem(), getManager());
+ this.resourceInjectionPoints = Beans.getResourceInjectionPoints(this, getAnnotatedItem(), manager);
+ }
+
+
+ /**
+ * Validates the type
+ */
+ @Override
+ protected void checkType()
+ {
+ if (getAnnotatedItem().isNonStaticMemberClass())
+ {
+ throw new DefinitionException("Simple bean " + type + " cannot be a non-static inner class");
+ }
+ if (!isDependent() && getAnnotatedItem().isParameterizedType())
+ {
+ throw new DefinitionException("Managed bean " + type + " must be @Dependent");
+ }
+ boolean passivating = manager.getServices().get(MetaAnnotationStore.class).getScopeModel(scopeType).isPassivating();
+ if (passivating && !Reflections.isSerializable(getBeanClass()))
+ {
+ throw new DefinitionException("Simple bean declaring a passivating scope must have a serializable implementation class " + toString());
+ }
+ if (hasDecorators())
+ {
+ if (getAnnotatedItem().isFinal())
+ {
+ throw new DefinitionException("Bean class which has decorators cannot be declared final " + this);
+ }
+ for (Decorator<?> decorator : getDecorators())
+ {
+ if (decorator instanceof DecoratorImpl<?>)
+ {
+ DecoratorImpl<?> decoratorBean = (DecoratorImpl<?>) decorator;
+ for (WBMethod<?, ?> decoratorMethod : decoratorBean.getAnnotatedItem().getWBMethods())
+ {
+ WBMethod<?, ?> method = getAnnotatedItem().getWBMethod(decoratorMethod.getSignature());
+ if (method != null && !method.isStatic() && !method.isPrivate() && method.isFinal())
+ {
+ throw new DefinitionException("Decorated bean method " + method + " (decorated by "+ decoratorMethod + ") cannot be declarted final");
+ }
+ }
+ }
+ else
+ {
+ throw new IllegalStateException("Can only operate on container provided decorators " + decorator);
+ }
+ }
+ }
+ }
+
+ @Override
+ protected void checkBeanImplementation()
+ {
+ super.checkBeanImplementation();
+ if (isNormalScoped())
+ {
+ for (WBField<?, ?> field : getAnnotatedItem().getWBFields())
+ {
+ if (field.isPublic() && !field.isStatic())
+ {
+ throw new DefinitionException("Normal scoped Web Bean implementation class has a public field " + getAnnotatedItem());
+ }
+ }
+ }
+ }
+
+ protected void checkConstructor()
+ {
+ if (!constructor.getAnnotatedWBParameters(Disposes.class).isEmpty())
+ {
+ throw new DefinitionException("Managed bean constructor must not have a parameter annotated @Disposes " + constructor);
+ }
+ if (!constructor.getAnnotatedWBParameters(Observes.class).isEmpty())
+ {
+ throw new DefinitionException("Managed bean constructor must not have a parameter annotated @Observes " + constructor);
+ }
+ }
+
+ @Override
+ protected void preSpecialize(BeanDeployerEnvironment environment)
+ {
+ super.preSpecialize(environment);
+ if (environment.getEjbDescriptors().contains(getAnnotatedItem().getWBSuperclass().getJavaClass()))
+ {
+ throw new DefinitionException("Simple bean must specialize a simple bean");
+ }
+ }
+
+ @Override
+ protected void specialize(BeanDeployerEnvironment environment)
+ {
+ if (environment.getClassBean(getAnnotatedItem().getWBSuperclass()) == null)
+ {
+ throw new DefinitionException(toString() + " does not specialize a bean");
+ }
+ AbstractClassBean<?> specializedBean = environment.getClassBean(getAnnotatedItem().getWBSuperclass());
+ if (!(specializedBean instanceof ManagedBean))
+ {
+ throw new DefinitionException(toString() + " doesn't have a simple bean as a superclass " + specializedBean);
+ } else
+ {
+ this.specializedBean = (ManagedBean<?>) specializedBean;
+ }
+ }
+
+
+ /**
+ * Initializes the constructor
+ */
+ protected void initConstructor()
+ {
+ this.constructor = Beans.getBeanConstructor(this, getAnnotatedItem());
+ // TODO We loop unecessarily many times here, I want to probably introduce some callback mechanism. PLM.
+ addInjectionPoints(Beans.getParameterInjectionPoints(this, constructor));
+ }
+
+ /**
+ * Returns the constructor
+ *
+ * @return The constructor
+ */
+ public WBConstructor<T> getConstructor()
+ {
+ return constructor;
+ }
+
+ /**
+ * Gets a string representation
+ *
+ * @return The string representation
+ */
+ @Override
+ public String getDescription()
+ {
+ return getDescription("simple bean");
+ }
+
+ protected String getDescription(String beanType)
+ {
+ StringBuilder buffer = new StringBuilder();
+ buffer.append(Names.scopeTypeToString(getScope()));
+ if (getName() == null)
+ {
+ buffer.append("unnamed ").append(beanType);
+ }
+ else
+ {
+ buffer.append(beanType).append(" '" + getName() + "'");
+ }
+ buffer.append(" ").append(getType().getName()).append(", ");
+ buffer.append(" API types = ").append(Names.typesToString(getTypes())).append(", binding types = " + Names.annotationsToString(getQualifiers()));
+ return buffer.toString();
+ }
+
+ @Override
+ public ManagedBean<?> getSpecializedBean()
+ {
+ return specializedBean;
+ }
+
+ protected boolean isInterceptionCandidate()
+ {
+ return !Beans.isInterceptor(getAnnotatedItem()) && !Beans.isDecorator(getAnnotatedItem());
+ }
+
+ private boolean hasBoundInterceptors()
+ {
+ if (manager.getBoundInterceptorsRegistry().getInterceptionModel(getType()) != null)
+ return manager.getBoundInterceptorsRegistry().getInterceptionModel(getType()).getAllInterceptors().size() > 0;
+ else
+ return false;
+ }
+
+ private boolean hasDeclaredInterceptors()
+ {
+ if (manager.getDeclaredInterceptorsRegistry().getInterceptionModel(getType()) != null)
+ return manager.getDeclaredInterceptorsRegistry().getInterceptionModel(getType()).getAllInterceptors().size() > 0;
+ else
+ return false;
+ }
+
+ protected T applyInterceptors(T instance, final CreationalContext<T> creationalContext)
+ {
+ try
+ {
+ List<InterceptorRegistry<Class<?>, ?>> interceptionRegistries = new ArrayList<InterceptorRegistry<Class<?>,?>>();
+ List<InterceptionHandlerFactory<?>> interceptionHandlerFactories = new ArrayList<InterceptionHandlerFactory<?>>();
+ if (hasDeclaredInterceptors())
+ {
+ interceptionRegistries.add(manager.getDeclaredInterceptorsRegistry());
+ interceptionHandlerFactories.add(new ClassInterceptionHandlerFactory(creationalContext, getManager()));
+ }
+ if (hasBoundInterceptors())
+ {
+ interceptionRegistries.add(manager.getBoundInterceptorsRegistry());
+ interceptionHandlerFactories.add(new InterceptorInterceptionHandlerFactory(creationalContext, manager));
+ }
+ if (interceptionRegistries.size() > 0)
+ instance = new InterceptorProxyCreatorImpl(interceptionRegistries, interceptionHandlerFactories).createProxyFromInstance(instance, getType());
+
+ } catch (Exception e)
+ {
+ throw new DeploymentException(e);
+ }
+ return instance;
+ }
+
+ protected void initDeclaredInterceptors()
+ {
+ if (manager.getDeclaredInterceptorsRegistry().getInterceptionModel(getType()) == null && InterceptionUtils.supportsEjb3InterceptorDeclaration())
+ {
+ InterceptionModelBuilder<Class<?>, Class<?>> builder = InterceptionModelBuilder.newBuilderFor(getType(), (Class) Class.class);
+
+ Class<?>[] classDeclaredInterceptors = null;
+ if (getAnnotatedItem().isAnnotationPresent(InterceptionUtils.getInterceptorsAnnotationClass()))
+ {
+ Annotation interceptorsAnnotation = getType().getAnnotation(InterceptionUtils.getInterceptorsAnnotationClass());
+ classDeclaredInterceptors = Reflections.extractValues(interceptorsAnnotation);
+ }
+ if (classDeclaredInterceptors != null)
+ {
+ builder.interceptPostConstruct().with(classDeclaredInterceptors);
+ builder.interceptPreDestroy().with(classDeclaredInterceptors);
+ }
+
+ List<WBMethod<?, ?>> businessMethods = Beans.getInterceptableBusinessMethods(getAnnotatedItem());
+ for (WBMethod<?, ?> method : businessMethods)
+ {
+ boolean excludeClassInterceptors = method.isAnnotationPresent(InterceptionUtils.getExcludeClassInterceptorsAnnotationClass());
+ Class<?>[] methodDeclaredInterceptors = null;
+ if (method.isAnnotationPresent(InterceptionUtils.getInterceptorsAnnotationClass()))
+ {
+ methodDeclaredInterceptors = Reflections.extractValues(method.getAnnotation(InterceptionUtils.getInterceptorsAnnotationClass()));
+ }
+ if (!excludeClassInterceptors && classDeclaredInterceptors != null)
+ {
+ builder.interceptAroundInvoke(((AnnotatedMethod) method).getJavaMember()).with(classDeclaredInterceptors);
+ }
+ if (methodDeclaredInterceptors != null)
+ {
+ builder.interceptAroundInvoke(((AnnotatedMethod) method).getJavaMember()).with(methodDeclaredInterceptors);
+ }
+ }
+ manager.getDeclaredInterceptorsRegistry().registerInterceptionModel(getType(), builder.build());
+ }
+ }
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/bean/NewBean.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/NewBean.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/bean/NewBean.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/bean/NewBean.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,28 @@
+/*
+ * 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.bean;
+
+/**
+ * Marker interface for @New beans
+ *
+ * @author Pete Muir
+ *
+ */
+public interface NewBean
+{
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/bean/NewManagedBean.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/NewManagedBean.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/bean/NewManagedBean.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/bean/NewManagedBean.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,118 @@
+/*
+ * 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.bean;
+
+import java.lang.annotation.Annotation;
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.enterprise.context.Dependent;
+
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.introspector.WBClass;
+import org.jboss.weld.literal.NewLiteral;
+
+/**
+ * Represents a @New simple bean
+ *
+ * @author Nicklas Karlsson
+ */
+public class NewManagedBean<T> extends ManagedBean<T> implements NewBean
+{
+
+ /**
+ * Creates an instance of a NewSimpleBean from an annotated class
+ *
+ * @param clazz The annotated class
+ * @param manager The Web Beans manager
+ * @return a new NewSimpleBean instance
+ */
+ public static <T> NewManagedBean<T> of(WBClass<T> clazz, BeanManagerImpl manager)
+ {
+ return new NewManagedBean<T>(clazz, new StringBuilder().append(NewManagedBean.class.getSimpleName()).append(BEAN_ID_SEPARATOR).append(clazz.getName()).toString(), manager);
+ }
+
+ private Set<Annotation> bindings;
+
+ /**
+ * Protected constructor
+ *
+ * @param type An annotated class
+ * @param manager The Web Beans manager
+ */
+ protected NewManagedBean(final WBClass<T> type, String idSuffix, BeanManagerImpl manager)
+ {
+ super(type, idSuffix, manager);
+ this.bindings = new HashSet<Annotation>();
+ this.bindings.add(new NewLiteral()
+ {
+
+ @Override
+ public Class<?> value()
+ {
+ return type.getJavaClass();
+ }
+
+ });
+ }
+
+ /**
+ * Gets the scope type
+ *
+ * @return @Dependent
+ */
+ @Override
+ public Class<? extends Annotation> getScope()
+ {
+ return Dependent.class;
+ }
+
+ @Override
+ public boolean isAlternative()
+ {
+ return false;
+ }
+
+ /**
+ * Gets the name of the bean
+ *
+ * @return null
+ */
+ @Override
+ public String getName()
+ {
+ return null;
+ }
+
+ /**
+ * Gets the bindings
+ *
+ * @returns @New
+ */
+ @Override
+ public Set<Annotation> getQualifiers()
+ {
+ return bindings;
+ }
+
+ @Override
+ public boolean isSpecializing()
+ {
+ return false;
+ }
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/bean/NewSessionBean.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/NewSessionBean.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/bean/NewSessionBean.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/bean/NewSessionBean.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,127 @@
+/*
+ * 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.bean;
+
+import java.lang.annotation.Annotation;
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.enterprise.context.Dependent;
+
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.ejb.InternalEjbDescriptor;
+import org.jboss.weld.introspector.WBClass;
+import org.jboss.weld.literal.NewLiteral;
+import org.jboss.weld.resources.ClassTransformer;
+
+/**
+ * Represents a @New enterprise bean
+ *
+ * @author Nicklas Karlsson
+ */
+public class NewSessionBean<T> extends SessionBean<T> implements NewBean
+{
+
+ /**
+ * Creates an instance of a NewEnterpriseBean from an annotated class
+ *
+ * @param clazz The annotated class
+ * @param manager The Web Beans manager
+ * @return a new NewEnterpriseBean instance
+ */
+ public static <T> NewSessionBean<T> of(InternalEjbDescriptor<T> ejbDescriptor, BeanManagerImpl manager)
+ {
+ WBClass<T> type = manager.getServices().get(ClassTransformer.class).loadClass(ejbDescriptor.getBeanClass());
+ return new NewSessionBean<T>(type, ejbDescriptor, new StringBuilder().append(NewSessionBean.class.getSimpleName()).append(BEAN_ID_SEPARATOR).append(ejbDescriptor.getEjbName()).toString(), manager);
+ }
+
+ private Set<Annotation> bindings;
+
+ /**
+ * Protected constructor
+ *
+ * @param type An annotated class
+ * @param manager The Web Beans manager
+ */
+ protected NewSessionBean(final WBClass<T> type, InternalEjbDescriptor<T> ejbDescriptor, String idSuffix, BeanManagerImpl manager)
+ {
+ super(type, ejbDescriptor, idSuffix, manager);
+ this.bindings = new HashSet<Annotation>();
+ this.bindings.add(new NewLiteral()
+ {
+
+ @Override
+ public Class<?> value()
+ {
+ return type.getJavaClass();
+ }
+
+ });
+ }
+
+ /**
+ * Gets the scope type
+ *
+ * @return @Dependent
+ */
+ @Override
+ public Class<? extends Annotation> getScope()
+ {
+ return Dependent.class;
+ }
+
+ @Override
+ public boolean isAlternative()
+ {
+ return false;
+ }
+
+ /**
+ * Gets the name of the bean
+ *
+ * @return null
+ */
+ @Override
+ public String getName()
+ {
+ return null;
+ }
+
+ /**
+ * Gets the bindings
+ *
+ * @returns @New
+ */
+ @Override
+ public Set<Annotation> getQualifiers()
+ {
+ return bindings;
+ }
+
+ @Override
+ public boolean isSpecializing()
+ {
+ return false;
+ }
+
+ @Override
+ protected void checkScopeAllowed()
+ {
+ // No-op
+ }
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/bean/ProducerField.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/ProducerField.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/bean/ProducerField.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/bean/ProducerField.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,169 @@
+/*
+ * 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.bean;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Field;
+import java.util.Collections;
+import java.util.Set;
+
+import javax.enterprise.context.spi.CreationalContext;
+
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.bootstrap.BeanDeployerEnvironment;
+import org.jboss.weld.introspector.WBField;
+import org.jboss.weld.util.Names;
+
+/**
+ * Represents a producer field
+ *
+ * @author Pete Muir
+ *
+ * @param <T>
+ */
+public class ProducerField<X, T> extends AbstractProducerBean<X, T, Field>
+{
+ // The underlying field
+ private WBField<T, X> field;
+ private final String id;
+
+ /**
+ * Creates a producer field
+ *
+ * @param field The underlying method abstraction
+ * @param declaringBean The declaring bean abstraction
+ * @param manager the current manager
+ * @return A producer field
+ */
+ public static <X, T> ProducerField<X, T> of(WBField<T, X> field, AbstractClassBean<X> declaringBean, BeanManagerImpl manager)
+ {
+ return new ProducerField<X, T>(field, declaringBean, manager);
+ }
+
+ /**
+ * Constructor
+ *
+ * @param method The producer field abstraction
+ * @param declaringBean The declaring bean
+ * @param manager The Web Beans manager
+ */
+ protected ProducerField(WBField<T, X> field, AbstractClassBean<X> declaringBean, BeanManagerImpl manager)
+ {
+ super(new StringBuilder().append(ProducerField.class.getSimpleName()).append(BEAN_ID_SEPARATOR).append(declaringBean.getAnnotatedItem().getName()).append(field.getName()).toString(), declaringBean, manager);
+ this.field = field;
+ initType();
+ initTypes();
+ initBindings();
+ this.id = new StringBuilder().append(BEAN_ID_PREFIX).append(getClass().getSimpleName()).append(BEAN_ID_SEPARATOR).append(declaringBean.getAnnotatedItem().getName()).append(getAnnotatedItem().getName()).toString();
+ initStereotypes();
+ initPolicy();
+ }
+
+ @Override
+ public void initialize(BeanDeployerEnvironment environment)
+ {
+ if (!isInitialized())
+ {
+ super.initialize(environment);
+ }
+ }
+
+ public void destroy(T instance, CreationalContext<T> creationalContext)
+ {
+ dispose(instance);
+ }
+
+ public void dispose(T instance)
+ {
+ // No clean up required
+ }
+
+ public T produce(CreationalContext<T> ctx)
+ {
+ return field.get(getReceiver(ctx));
+ }
+
+
+ /**
+ * Gets the annotated item representing the field
+ *
+ * @return The annotated item
+ */
+ @Override
+ public WBField<T, X> getAnnotatedItem()
+ {
+ return field;
+ }
+
+ /**
+ * Returns the default name
+ *
+ * @return The default name
+ */
+ @Override
+ protected String getDefaultName()
+ {
+ return field.getPropertyName();
+ }
+
+ /**
+ * Gets a string representation
+ *
+ * @return The string representation
+ */
+ @Override
+ public String getDescription()
+ {
+ StringBuilder buffer = new StringBuilder();
+ buffer.append("Annotated " + Names.scopeTypeToString(getScope()));
+ if (getName() == null)
+ {
+ buffer.append("unnamed producer field bean");
+ }
+ else
+ {
+ buffer.append("simple producer field bean '" + getName() + "'");
+ }
+ buffer.append(" [" + getBeanClass().getName() + "] for class type [" + getType().getName() + "] API types " + getTypes() + ", binding types " + getQualifiers());
+ return buffer.toString();
+ }
+
+ @Override
+ public AbstractBean<?, ?> getSpecializedBean()
+ {
+ return null;
+ }
+
+ @Override
+ public boolean isSpecializing()
+ {
+ return false;
+ }
+
+ @Override
+ public String getId()
+ {
+ return id;
+ }
+
+ @Override
+ public Set<Class<? extends Annotation>> getStereotypes()
+ {
+ return Collections.emptySet();
+ }
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/bean/ProducerMethod.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/ProducerMethod.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/bean/ProducerMethod.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/bean/ProducerMethod.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,294 @@
+/*
+ * 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.bean;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Method;
+import java.lang.reflect.Type;
+import java.util.Collections;
+import java.util.Set;
+
+import javax.enterprise.context.spi.CreationalContext;
+import javax.enterprise.event.Observes;
+import javax.enterprise.inject.CreationException;
+import javax.enterprise.inject.Disposes;
+
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.DefinitionException;
+import org.jboss.weld.bootstrap.BeanDeployerEnvironment;
+import org.jboss.weld.injection.MethodInjectionPoint;
+import org.jboss.weld.injection.ParameterInjectionPoint;
+import org.jboss.weld.introspector.WBMethod;
+import org.jboss.weld.introspector.WBParameter;
+import org.jboss.weld.util.Names;
+
+/**
+ * Represents a producer method bean
+ *
+ * @author Pete Muir
+ *
+ * @param <T>
+ */
+public class ProducerMethod<X, T> extends AbstractProducerBean<X, T, Method>
+{
+ // The underlying method
+ private MethodInjectionPoint<T, X> method;
+
+ private DisposalMethod<X, ?> disposalMethodBean;
+
+ private ProducerMethod<?, ?> specializedBean;
+
+ private final String id;
+
+ /**
+ * Creates a producer method Web Bean
+ *
+ * @param method The underlying method abstraction
+ * @param declaringBean The declaring bean abstraction
+ * @param manager the current manager
+ * @return A producer Web Bean
+ */
+ public static <X, T> ProducerMethod<X, T> of(WBMethod<T, X> method, AbstractClassBean<X> declaringBean, BeanManagerImpl manager)
+ {
+ return new ProducerMethod<X, T>(method, declaringBean, manager);
+ }
+
+ protected ProducerMethod(WBMethod<T, X> method, AbstractClassBean<X> declaringBean, BeanManagerImpl manager)
+ {
+ super(new StringBuilder().append(ProducerMethod.class.getSimpleName()).append(BEAN_ID_SEPARATOR).append(declaringBean.getAnnotatedItem().getName()).append(".").append(method.getSignature().toString()).toString(), declaringBean, manager);
+ this.method = MethodInjectionPoint.of(this, method);
+ initType();
+ initTypes();
+ initBindings();
+ this.id = new StringBuilder().append(BEAN_ID_PREFIX).append(getClass().getSimpleName()).append(BEAN_ID_SEPARATOR).append(declaringBean.getAnnotatedItem().getName()).append(getAnnotatedItem().getSignature().toString()).toString();
+ initStereotypes();
+ initPolicy();
+ }
+
+ public T produce(CreationalContext<T> creationalContext)
+ {
+ Object receiver = getReceiver(creationalContext);
+ if (receiver != null)
+ {
+ return method.invokeOnInstance(receiver, manager, creationalContext, CreationException.class);
+ }
+ else
+ {
+ return method.invoke(receiver, manager, creationalContext, CreationException.class);
+ }
+ }
+
+ /**
+ * Initializes the bean and its metadata
+ */
+ @Override
+ public void initialize(BeanDeployerEnvironment environment)
+ {
+ if (!isInitialized())
+ {
+ initProducerMethodInjectableParameters();
+ super.initialize(environment);
+ checkProducerMethod();
+ initDisposalMethod(environment);
+ }
+ }
+
+ /**
+ * Initializes the injection points
+ */
+ protected void initProducerMethodInjectableParameters()
+ {
+ for (WBParameter<?, ?> parameter : method.getWBParameters())
+ {
+ addInjectionPoint(ParameterInjectionPoint.of(this, parameter));
+ }
+ }
+
+ /**
+ * Validates the producer method
+ */
+ protected void checkProducerMethod()
+ {
+ if (getAnnotatedItem().getAnnotatedWBParameters(Observes.class).size() > 0)
+ {
+ throw new DefinitionException("Producer method cannot have parameter annotated @Observes");
+ }
+ else if (getAnnotatedItem().getAnnotatedWBParameters(Disposes.class).size() > 0)
+ {
+ throw new DefinitionException("Producer method cannot have parameter annotated @Disposes");
+ }
+ else if (getDeclaringBean() instanceof SessionBean<?>)
+ {
+ boolean methodDeclaredOnTypes = false;
+ // TODO use annotated item?
+ for (Type type : getDeclaringBean().getTypes())
+ {
+ if (type instanceof Class)
+ {
+ Class<?> clazz = (Class<?>) type;
+ try
+ {
+ clazz.getDeclaredMethod(getAnnotatedItem().getName(), getAnnotatedItem().getParameterTypesAsArray());
+ methodDeclaredOnTypes = true;
+ }
+ catch (NoSuchMethodException nsme)
+ {
+ // No - op
+ }
+ }
+ }
+ if (!methodDeclaredOnTypes)
+ {
+ throw new DefinitionException("Producer method " + toString() + " must be declared on a business interface of " + getDeclaringBean());
+ }
+ }
+ }
+
+ /**
+ * Initializes the remove method
+ */
+ protected void initDisposalMethod(BeanDeployerEnvironment environment)
+ {
+ Set<DisposalMethod<X, ?>> disposalBeans = environment.<X>resolveDisposalBeans(getTypes(), getQualifiers(), getDeclaringBean());
+
+ if (disposalBeans.size() == 1)
+ {
+ this.disposalMethodBean = disposalBeans.iterator().next();
+ }
+ else if (disposalBeans.size() > 1)
+ {
+ // TODO List out found disposal methods
+ throw new DefinitionException("Cannot declare multiple disposal methods for this producer method. Producer method: " + this + ". Disposal methods: " + disposalBeans);
+ }
+ }
+
+ public void destroy(T instance, CreationalContext<T> creationalContext)
+ {
+ try
+ {
+ dispose(instance);
+ }
+ finally
+ {
+ if (getDeclaringBean().isDependent())
+ {
+ creationalContext.release();
+ }
+ }
+ }
+
+ public void dispose(T instance)
+ {
+ if (disposalMethodBean != null)
+ {
+ disposalMethodBean.invokeDisposeMethod(instance);
+ }
+ }
+
+ /**
+ * Gets the annotated item representing the method
+ *
+ * @return The annotated item
+ */
+ @Override
+ public WBMethod<T, X> getAnnotatedItem()
+ {
+ return method;
+ }
+
+ /**
+ * Returns the default name
+ *
+ * @return The default name
+ */
+ @Override
+ protected String getDefaultName()
+ {
+ return method.getPropertyName();
+ }
+
+ /**
+ * Returns the disposal method
+ *
+ * @return The method representation
+ */
+ public DisposalMethod<X, ?> getDisposalMethod()
+ {
+ return disposalMethodBean;
+ }
+
+ /**
+ * Gets a string representation
+ *
+ * @return The string representation
+ */
+ @Override
+ public String getDescription()
+ {
+ StringBuilder buffer = new StringBuilder();
+ buffer.append(Names.scopeTypeToString(getScope()));
+ if (getName() == null)
+ {
+ buffer.append("unnamed producer method bean");
+ }
+ else
+ {
+ buffer.append("simple producer method bean '" + getName() + "'");
+ }
+ buffer.append(" [" + getBeanClass().getName() + "] for class type [" + getType().getName() + "] API types " + getTypes() + ", binding types " + getQualifiers());
+ return buffer.toString();
+ }
+
+ @Override
+ public AbstractBean<?, ?> getSpecializedBean()
+ {
+ return specializedBean;
+ }
+
+ @Override
+ protected void preSpecialize(BeanDeployerEnvironment environment)
+ {
+ if (getDeclaringBean().getAnnotatedItem().getWBSuperclass().getDeclaredWBMethod(getAnnotatedItem().getAnnotatedMethod()) == null)
+ {
+ throw new DefinitionException("Specialized producer method does not override a method on the direct superclass");
+ }
+ }
+
+ @Override
+ protected void specialize(BeanDeployerEnvironment environment)
+ {
+ WBMethod<?, ?> superClassMethod = getDeclaringBean().getAnnotatedItem().getWBSuperclass().getWBMethod(getAnnotatedItem().getAnnotatedMethod());
+ if (environment.getProducerMethod(superClassMethod) == null)
+ {
+ throw new IllegalStateException(toString() + " does not specialize a bean");
+ }
+ this.specializedBean = environment.getProducerMethod(superClassMethod);
+ }
+
+ @Override
+ public String getId()
+ {
+ return id;
+ }
+
+ @Override
+ public Set<Class<? extends Annotation>> getStereotypes()
+ {
+ return Collections.emptySet();
+ }
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/bean/RIBean.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/RIBean.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/bean/RIBean.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/bean/RIBean.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,120 @@
+/*
+ * 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.bean;
+
+import java.util.Set;
+
+import javax.enterprise.context.Dependent;
+import javax.enterprise.inject.spi.Bean;
+import javax.enterprise.inject.spi.InjectionPoint;
+import javax.enterprise.inject.spi.PassivationCapable;
+
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.bootstrap.BeanDeployerEnvironment;
+import org.jboss.weld.injection.WBInjectionPoint;
+
+/**
+ * Abstract base class with functions specific to RI built-in beans
+ *
+ * @author Pete Muir
+ */
+public abstract class RIBean<T> implements Bean<T>, PassivationCapable
+{
+
+ public static final String BEAN_ID_PREFIX = RIBean.class.getPackage().getName();
+
+ public static final String BEAN_ID_SEPARATOR = "-";
+
+ private final BeanManagerImpl manager;
+
+ private final String id;
+
+ protected RIBean(String idSuffix, BeanManagerImpl manager)
+ {
+ this.manager = manager;
+ this.id = new StringBuilder().append(BEAN_ID_PREFIX).append(BEAN_ID_SEPARATOR).append(manager.getId()).append(BEAN_ID_SEPARATOR).append(idSuffix).toString();
+ }
+
+ protected BeanManagerImpl getManager()
+ {
+ return manager;
+ }
+
+ public abstract Class<T> getType();
+
+ public Class<?> getBeanClass()
+ {
+ return getType();
+ }
+
+ public abstract void initialize(BeanDeployerEnvironment environment);
+
+ public abstract boolean isSpecializing();
+
+ public boolean isDependent()
+ {
+ return getScope().equals(Dependent.class);
+ }
+
+ public abstract boolean isProxyable();
+
+ public abstract boolean isPrimitive();
+
+ public abstract Set<WBInjectionPoint<?, ?>> getAnnotatedInjectionPoints();
+
+ public Set<InjectionPoint> getInjectionPoints()
+ {
+ return (Set) getAnnotatedInjectionPoints();
+ }
+
+ public abstract RIBean<?> getSpecializedBean();
+
+ @Override
+ public boolean equals(Object obj)
+ {
+ if (obj instanceof RIBean<?>)
+ {
+ RIBean<?> that = (RIBean<?>) obj;
+ return this.getId().equals(that.getId());
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+ @Override
+ public int hashCode()
+ {
+ return getId().hashCode();
+ }
+
+ public String getId()
+ {
+ return id;
+ }
+
+ @Override
+ public String toString()
+ {
+ return id;
+ }
+
+ public abstract String getDescription();
+
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/bean/SessionBean.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/SessionBean.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/bean/SessionBean.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/bean/SessionBean.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,408 @@
+/*
+ * 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.bean;
+
+import java.io.Serializable;
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Method;
+import java.lang.reflect.Type;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.LinkedHashSet;
+import java.util.Set;
+
+import javassist.util.proxy.ProxyFactory;
+import javassist.util.proxy.ProxyObject;
+
+import javax.decorator.Decorator;
+import javax.enterprise.context.ApplicationScoped;
+import javax.enterprise.context.spi.CreationalContext;
+import javax.enterprise.event.Observes;
+import javax.enterprise.inject.CreationException;
+import javax.interceptor.Interceptor;
+
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.DefinitionException;
+import org.jboss.weld.bean.interceptor.InterceptorBindingsAdapter;
+import org.jboss.weld.bean.proxy.EnterpriseBeanInstance;
+import org.jboss.weld.bean.proxy.EnterpriseBeanProxyMethodHandler;
+import org.jboss.weld.bean.proxy.Marker;
+import org.jboss.weld.bootstrap.BeanDeployerEnvironment;
+import org.jboss.weld.ejb.InternalEjbDescriptor;
+import org.jboss.weld.ejb.api.SessionObjectReference;
+import org.jboss.weld.ejb.spi.BusinessInterfaceDescriptor;
+import org.jboss.weld.ejb.spi.EjbServices;
+import org.jboss.weld.injection.InjectionContextImpl;
+import org.jboss.weld.introspector.WBClass;
+import org.jboss.weld.introspector.WBMethod;
+import org.jboss.weld.log.Log;
+import org.jboss.weld.log.Logging;
+import org.jboss.weld.resources.ClassTransformer;
+import org.jboss.weld.util.Beans;
+import org.jboss.weld.util.Proxies;
+import org.jboss.interceptor.model.InterceptionModel;
+
+/**
+ * An enterprise bean representation
+ *
+ * @author Pete Muir
+ *
+ * @param <T> The type (class) of the bean
+ */
+public class SessionBean<T> extends AbstractClassBean<T>
+{
+ private final Log log = Logging.getLog(SessionBean.class);
+
+ // The EJB descriptor
+ private InternalEjbDescriptor<T> ejbDescriptor;
+
+ private Class<T> proxyClass;
+
+ private SessionBean<?> specializedBean;
+
+ /**
+ * Creates a simple, annotation defined Enterprise Web Bean
+ *
+ * @param <T> The type
+ * @param clazz The class
+ * @param manager the current manager
+ * @return An Enterprise Web Bean
+ */
+ public static <T> SessionBean<T> of(InternalEjbDescriptor<T> ejbDescriptor, BeanManagerImpl manager)
+ {
+ WBClass<T> type = manager.getServices().get(ClassTransformer.class).loadClass(ejbDescriptor.getBeanClass());
+ return new SessionBean<T>(type, ejbDescriptor, new StringBuilder().append(SessionBean.class.getSimpleName()).append(BEAN_ID_SEPARATOR).append(ejbDescriptor.getEjbName()).toString(), manager);
+ }
+
+ /**
+ * Constructor
+ *
+ * @param type The type of the bean
+ * @param manager The Web Beans manager
+ */
+ protected SessionBean(WBClass<T> type, InternalEjbDescriptor<T> ejbDescriptor, String idSuffix, BeanManagerImpl manager)
+ {
+ super(type, idSuffix, manager);
+ initType();
+ this.ejbDescriptor = ejbDescriptor;
+ initTypes();
+ initBindings();
+ }
+
+ /**
+ * Initializes the bean and its metadata
+ */
+ @Override
+ public void initialize(BeanDeployerEnvironment environment)
+ {
+ if (!isInitialized())
+ {
+ super.initialize(environment);
+ initProxyClass();
+ checkEJBTypeAllowed();
+ checkConflictingRoles();
+ checkObserverMethods();
+ checkScopeAllowed();
+ registerInterceptors();
+ }
+ }
+
+ @Override
+ protected void initTypes()
+ {
+ Set<Type> types = new LinkedHashSet<Type>();
+ types.add(Object.class);
+ for (BusinessInterfaceDescriptor<?> businessInterfaceDescriptor : ejbDescriptor.getLocalBusinessInterfaces())
+ {
+ types.add(businessInterfaceDescriptor.getInterface());
+ }
+ super.types = types;
+ }
+
+ protected void initProxyClass()
+ {
+ Set<Type> types = new LinkedHashSet<Type>(getTypes());
+ types.add(EnterpriseBeanInstance.class);
+ types.add(Serializable.class);
+ ProxyFactory proxyFactory = Proxies.getProxyFactory(types);
+
+ @SuppressWarnings("unchecked")
+ Class<T> proxyClass = proxyFactory.createClass();
+
+ this.proxyClass = proxyClass;
+ }
+
+ /**
+ * Validates for non-conflicting roles
+ */
+ protected void checkConflictingRoles()
+ {
+ if (getType().isAnnotationPresent(Interceptor.class))
+ {
+ throw new DefinitionException("Enterprise beans cannot be interceptors");
+ }
+ if (getType().isAnnotationPresent(Decorator.class))
+ {
+ throw new DefinitionException("Enterprise beans cannot be decorators");
+ }
+ }
+
+ /**
+ * Check that the scope type is allowed by the stereotypes on the bean and
+ * the bean type
+ */
+ protected void checkScopeAllowed()
+ {
+ if (ejbDescriptor.isStateless() && !isDependent())
+ {
+ throw new DefinitionException("Scope " + getScope() + " is not allowed on stateless enterpise beans for " + getType() + ". Only @Dependent is allowed on stateless enterprise beans");
+ }
+ if (ejbDescriptor.isSingleton() && !(isDependent() || getScope().equals(ApplicationScoped.class)))
+ {
+ throw new DefinitionException("Scope " + getScope() + " is not allowed on singleton enterpise beans for " + getType() + ". Only @Dependent or @ApplicationScoped is allowed on singleton enterprise beans");
+ }
+ }
+
+ /**
+ * Validates specialization
+ */
+ @Override
+ protected void preSpecialize(BeanDeployerEnvironment environment)
+ {
+ super.preSpecialize(environment);
+ // We appear to check this twice?
+ if (!environment.getEjbDescriptors().contains(getAnnotatedItem().getWBSuperclass().getJavaClass()))
+ {
+ throw new DefinitionException("Annotation defined specializing EJB must have EJB superclass");
+ }
+ }
+
+ @Override
+ protected void specialize(BeanDeployerEnvironment environment)
+ {
+ if (environment.getClassBean(getAnnotatedItem().getWBSuperclass()) == null)
+ {
+ throw new IllegalStateException(toString() + " does not specialize a bean");
+ }
+ AbstractClassBean<?> specializedBean = environment.getClassBean(getAnnotatedItem().getWBSuperclass());
+ if (!(specializedBean instanceof SessionBean<?>))
+ {
+ throw new IllegalStateException(toString() + " doesn't have a session bean as a superclass " + specializedBean);
+ }
+ else
+ {
+ this.specializedBean = (SessionBean<?>) specializedBean;
+ }
+ }
+
+ /**
+ * Creates an instance of the bean
+ *
+ * @return The instance
+ */
+ public T create(final CreationalContext<T> creationalContext)
+ {
+ T instance = produce(creationalContext);
+ if (hasDecorators())
+ {
+ instance = applyDecorators(instance, creationalContext, null);
+ }
+ return instance;
+ }
+
+ public void inject(final T instance, final CreationalContext<T> ctx)
+ {
+ new InjectionContextImpl<T>(getManager(), this, instance)
+ {
+
+ public void proceed()
+ {
+ Beans.injectFieldsAndInitializers(instance, ctx, getManager(), getInjectableFields(), getInitializerMethods());
+ }
+
+ }.run();
+
+ }
+
+ public T produce(CreationalContext<T> ctx)
+ {
+ try
+ {
+ T instance = proxyClass.newInstance();
+ ctx.push(instance);
+ ((ProxyObject) instance).setHandler(new EnterpriseBeanProxyMethodHandler<T>(this, ctx));
+ log.trace("Enterprise bean instance created for bean {0}", this);
+ return instance;
+ }
+ catch (InstantiationException e)
+ {
+ throw new RuntimeException("Could not instantiate enterprise proxy for " + toString(), e);
+ }
+ catch (IllegalAccessException e)
+ {
+ throw new RuntimeException("Could not access bean correctly when creating enterprise proxy for " + toString(), e);
+ }
+ catch (Exception e)
+ {
+ throw new CreationException("could not find the EJB in JNDI " + proxyClass, e);
+ }
+ }
+
+ public void destroy(T instance, CreationalContext<T> creationalContext)
+ {
+ if (instance == null)
+ {
+ throw new IllegalArgumentException("instance to destroy cannot be null");
+ }
+ if (!(instance instanceof EnterpriseBeanInstance))
+ {
+ throw new IllegalArgumentException("Cannot destroy session bean instance not created by the container");
+ }
+ EnterpriseBeanInstance enterpiseBeanInstance = (EnterpriseBeanInstance) instance;
+ enterpiseBeanInstance.destroy(Marker.INSTANCE, this, creationalContext);
+ creationalContext.release();
+ }
+
+ /**
+ * Validates the bean type
+ */
+ private void checkEJBTypeAllowed()
+ {
+ if (ejbDescriptor.isMessageDriven())
+ {
+ throw new DefinitionException("Message Driven Beans can't be Web Beans");
+ }
+ }
+
+ /**
+ * Gets a string representation
+ *
+ * @return The string representation
+ */
+ @Override
+ public String getDescription()
+ {
+ StringBuilder buffer = new StringBuilder();
+ // buffer.append("Annotated " + Names.scopeTypeToString(getScopeType()) +
+ // Names.ejbTypeFromMetaData(getEjbMetaData()));
+ if (getName() == null)
+ {
+ buffer.append(" unnamed enterprise bean");
+ }
+ else
+ {
+ buffer.append(" enterprise bean '" + getName() + "'");
+ }
+ buffer.append(" [" + getType().getName() + "] ");
+ buffer.append("API types " + getTypes() + ", binding types " + getQualifiers());
+ return buffer.toString();
+ }
+
+ public void preDestroy(CreationalContext<T> creationalContext)
+ {
+ creationalContext.release();
+ }
+
+ @Override
+ protected void initSerializable()
+ {
+ // No-op
+ }
+
+ @Override
+ public boolean isSerializable()
+ {
+ return true;
+ }
+
+ public InternalEjbDescriptor<T> getEjbDescriptor()
+ {
+ return ejbDescriptor;
+ }
+
+ public boolean isClientCanCallRemoveMethods()
+ {
+ return getEjbDescriptor().isStateful() && isDependent();
+ }
+
+ @Override
+ public AbstractBean<?, ?> getSpecializedBean()
+ {
+ return specializedBean;
+ }
+
+ /**
+ * If there are any observer methods, they must be static or business
+ * methods.
+ */
+ protected void checkObserverMethods()
+ {
+ for (WBMethod<?, ?> method : this.annotatedItem.getDeclaredWBMethodsWithAnnotatedParameters(Observes.class))
+ {
+ if (!method.isStatic())
+ {
+ if (!isMethodExistsOnTypes(method))
+ {
+ throw new DefinitionException("Observer method must be static or business method: " + method + " on " + getAnnotatedItem());
+ }
+ }
+ }
+ }
+
+ // TODO must be a nicer way to do this!
+ public boolean isMethodExistsOnTypes(WBMethod<?, ?> method)
+ {
+ for (Type type : getTypes())
+ {
+ if (type instanceof Class)
+ {
+ for (Method m : ((Class<?>) type).getMethods())
+ {
+ if (method.getName().equals(m.getName()) && Arrays.equals(method.getParameterTypesAsArray(), m.getParameterTypes()))
+ {
+ return true;
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+ public SessionObjectReference createReference()
+ {
+ return manager.getServices().get(EjbServices.class).resolveEjb(getEjbDescriptor().delegate());
+ }
+
+ @Override
+ public Set<Class<? extends Annotation>> getStereotypes()
+ {
+ return Collections.emptySet();
+ }
+
+ protected boolean isInterceptionCandidate()
+ {
+ return true;
+ }
+
+ private void registerInterceptors()
+ {
+ InterceptionModel<Class<?>,javax.enterprise.inject.spi.Interceptor<?>> model = manager.getBoundInterceptorsRegistry().getInterceptionModel(ejbDescriptor.getBeanClass());
+ if (model != null)
+ getManager().getServices().get(EjbServices.class).registerInterceptors(getEjbDescriptor(), new InterceptorBindingsAdapter(model));
+ }
+}
+
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/AbstractBuiltInBean.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/builtin/AbstractBuiltInBean.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/AbstractBuiltInBean.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/AbstractBuiltInBean.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,120 @@
+/*
+ * 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.bean.builtin;
+
+import java.lang.annotation.Annotation;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.enterprise.context.Dependent;
+
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.bean.RIBean;
+import org.jboss.weld.bootstrap.BeanDeployerEnvironment;
+import org.jboss.weld.injection.WBInjectionPoint;
+import org.jboss.weld.literal.AnyLiteral;
+import org.jboss.weld.literal.DefaultLiteral;
+
+public abstract class AbstractBuiltInBean<T> extends RIBean<T>
+{
+
+ private static final String ID_PREFIX = "Built-in";
+
+ private static final Annotation[] DEFAULT_BINDING_ARRAY = { new DefaultLiteral(), new AnyLiteral() };
+ private static final Set<Annotation> DEFAULT_BINDING = new HashSet<Annotation>(Arrays.asList(DEFAULT_BINDING_ARRAY));
+
+ protected AbstractBuiltInBean(String idSuffix, BeanManagerImpl manager)
+ {
+ super(new StringBuilder().append(ID_PREFIX).append(BEAN_ID_SEPARATOR).append(idSuffix).toString(), manager);
+ }
+
+ @Override
+ public void initialize(BeanDeployerEnvironment environment)
+ {
+ // No-op
+ }
+
+
+ public Set<Annotation> getQualifiers()
+ {
+ return DEFAULT_BINDING;
+ }
+
+ public Class<? extends Annotation> getScope()
+ {
+ return Dependent.class;
+ }
+
+ @Override
+ public RIBean<?> getSpecializedBean()
+ {
+ return null;
+ }
+
+ public String getName()
+ {
+ return null;
+ }
+
+ public Set<Class<? extends Annotation>> getStereotypes()
+ {
+ return Collections.emptySet();
+ }
+
+ @Override
+ public Set<WBInjectionPoint<?, ?>> getAnnotatedInjectionPoints()
+ {
+ return Collections.emptySet();
+ }
+
+ public boolean isNullable()
+ {
+ return true;
+ }
+
+ @Override
+ public boolean isPrimitive()
+ {
+ return false;
+ }
+
+ @Override
+ public boolean isSpecializing()
+ {
+ return false;
+ }
+
+ public boolean isAlternative()
+ {
+ return false;
+ }
+
+ @Override
+ public boolean isProxyable()
+ {
+ return false;
+ }
+
+ @Override
+ public String getDescription()
+ {
+ return "Built-in bean " + getClass().getSimpleName();
+ }
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/DefaultValidatorBean.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/builtin/DefaultValidatorBean.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/DefaultValidatorBean.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/DefaultValidatorBean.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,71 @@
+/*
+ * 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.bean.builtin;
+
+import java.lang.reflect.Type;
+import java.util.Set;
+
+import javax.enterprise.context.spi.CreationalContext;
+import javax.validation.Validator;
+
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.util.collections.Arrays2;
+import org.jboss.weld.validation.spi.ValidationServices;
+
+/**
+ * @author pmuir
+ *
+ */
+public class DefaultValidatorBean extends AbstractBuiltInBean<Validator>
+{
+
+ private static final Set<Type> TYPES = Arrays2.<Type>asSet(Object.class, Validator.class);
+
+ public DefaultValidatorBean(BeanManagerImpl manager)
+ {
+ super(Validator.class.getSimpleName(), manager);
+ }
+
+ @Override
+ public Class<Validator> getType()
+ {
+ return Validator.class;
+ }
+
+ public Set<Type> getTypes()
+ {
+ return TYPES;
+ }
+
+ public Validator create(CreationalContext<Validator> creationalContext)
+ {
+ if (getManager().getServices().contains(ValidationServices.class))
+ {
+ return getManager().getServices().get(ValidationServices.class).getDefaultValidatorFactory().getValidator();
+ }
+ else
+ {
+ throw new IllegalStateException("ValidationServices not available");
+ }
+ }
+
+ public void destroy(Validator instance, CreationalContext<Validator> creationalContext)
+ {
+ // No-op
+ }
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/DefaultValidatorFactoryBean.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/builtin/DefaultValidatorFactoryBean.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/DefaultValidatorFactoryBean.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/DefaultValidatorFactoryBean.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,71 @@
+/*
+ * 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.bean.builtin;
+
+import java.lang.reflect.Type;
+import java.util.Set;
+
+import javax.enterprise.context.spi.CreationalContext;
+import javax.validation.ValidatorFactory;
+
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.util.collections.Arrays2;
+import org.jboss.weld.validation.spi.ValidationServices;
+
+/**
+ * @author pmuir
+ *
+ */
+public class DefaultValidatorFactoryBean extends AbstractBuiltInBean<ValidatorFactory>
+{
+
+ private static final Set<Type> TYPES = Arrays2.<Type>asSet(Object.class, ValidatorFactory.class);
+
+ public DefaultValidatorFactoryBean(BeanManagerImpl manager)
+ {
+ super(ValidatorFactory.class.getSimpleName(), manager);
+ }
+
+ @Override
+ public Class<ValidatorFactory> getType()
+ {
+ return ValidatorFactory.class;
+ }
+
+ public Set<Type> getTypes()
+ {
+ return TYPES;
+ }
+
+ public ValidatorFactory create(CreationalContext<ValidatorFactory> creationalContext)
+ {
+ if (getManager().getServices().contains(ValidationServices.class))
+ {
+ return getManager().getServices().get(ValidationServices.class).getDefaultValidatorFactory();
+ }
+ else
+ {
+ throw new IllegalStateException("ValidationServices not available");
+ }
+ }
+
+ public void destroy(ValidatorFactory instance, CreationalContext<ValidatorFactory> creationalContext)
+ {
+ // No-op
+ }
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/ExtensionBean.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/builtin/ExtensionBean.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/ExtensionBean.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/ExtensionBean.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,82 @@
+/*
+ * 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.bean.builtin;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Type;
+import java.util.Set;
+
+import javax.enterprise.context.ApplicationScoped;
+import javax.enterprise.context.spi.CreationalContext;
+import javax.enterprise.inject.spi.Extension;
+
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.introspector.WBClass;
+
+/**
+ * @author pmuir
+ *
+ */
+public class ExtensionBean extends AbstractBuiltInBean<Extension>
+{
+
+ private static final String ID_PREFIX = "Extension";
+
+ private final WBClass<Extension> clazz;
+ private final Extension instance;
+
+ public ExtensionBean(BeanManagerImpl manager, WBClass<Extension> clazz, Extension instance)
+ {
+ super(new StringBuilder().append(ID_PREFIX).append(BEAN_ID_SEPARATOR).append(clazz.getName()).toString(), manager);
+ this.clazz = clazz;
+ this.instance = instance;
+ }
+
+ @Override
+ public Class<Extension> getType()
+ {
+ return clazz.getJavaClass();
+ }
+
+ public Set<Type> getTypes()
+ {
+ return clazz.getTypeClosure();
+ }
+
+ @Override
+ public boolean isProxyable()
+ {
+ return clazz.isProxyable();
+ }
+
+ public Extension create(CreationalContext<Extension> creationalContext)
+ {
+ return instance;
+ }
+
+ public void destroy(Extension instance, CreationalContext<Extension> creationalContext)
+ {
+ // No-op
+ }
+
+ @Override
+ public Class<? extends Annotation> getScope()
+ {
+ return ApplicationScoped.class;
+ }
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/InjectionPointBean.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/builtin/InjectionPointBean.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/InjectionPointBean.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/InjectionPointBean.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,80 @@
+/*
+ * 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.bean.builtin;
+
+import java.lang.reflect.Type;
+import java.util.Set;
+
+import javax.enterprise.context.spi.CreationalContext;
+import javax.enterprise.inject.spi.InjectionPoint;
+
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.util.collections.Arrays2;
+
+/**
+ * Bean for InjectionPoint metadata
+ *
+ * @author David Allen
+ *
+ */
+public class InjectionPointBean extends AbstractBuiltInBean<InjectionPoint>
+{
+
+ private static final Set<Type> TYPES = Arrays2.<Type>asSet(InjectionPoint.class, Object.class);
+
+ /**
+ * Creates an InjectionPoint Web Bean for the injection of the containing bean owning
+ * the field, constructor or method for the annotated item
+ *
+ * @param <T> must be InjectionPoint
+ * @param <S>
+ * @param field The annotated member field/parameter for the injection
+ * @param manager The RI manager implementation
+ */
+ public InjectionPointBean(BeanManagerImpl manager)
+ {
+ super(InjectionPoint.class.getSimpleName(), manager);
+ }
+
+ public InjectionPoint create(CreationalContext<InjectionPoint> creationalContext)
+ {
+ return getManager().getCurrentInjectionPoint();
+ }
+
+ public void destroy(InjectionPoint instance, CreationalContext<InjectionPoint> creationalContext)
+ {
+
+ }
+
+ @Override
+ public Class<InjectionPoint> getType()
+ {
+ return InjectionPoint.class;
+ }
+
+ public Set<Type> getTypes()
+ {
+ return TYPES;
+ }
+
+ @Override
+ public String toString()
+ {
+ return "Built-in javax.inject.manager.InjectionPoint bean";
+ }
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/ManagerBean.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/builtin/ManagerBean.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/ManagerBean.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/ManagerBean.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,66 @@
+/*
+ * 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.bean.builtin;
+
+import java.lang.reflect.Type;
+import java.util.Set;
+
+import javax.enterprise.context.spi.CreationalContext;
+import javax.enterprise.inject.spi.BeanManager;
+
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.util.collections.Arrays2;
+
+public class ManagerBean extends AbstractBuiltInBean<BeanManagerImpl>
+{
+
+ private static final Set<Type> TYPES = Arrays2.<Type>asSet(Object.class, BeanManagerImpl.class, BeanManager.class);
+
+ public ManagerBean(BeanManagerImpl manager)
+ {
+ super(BeanManager.class.getSimpleName(), manager);
+ }
+
+ public BeanManagerImpl create(CreationalContext<BeanManagerImpl> creationalContext)
+ {
+ return getManager().getCurrent();
+ }
+
+ @Override
+ public Class<BeanManagerImpl> getType()
+ {
+ return BeanManagerImpl.class;
+ }
+
+ public Set<Type> getTypes()
+ {
+ return TYPES;
+ }
+
+ public void destroy(BeanManagerImpl instance, CreationalContext<BeanManagerImpl> creationalContext)
+ {
+ // No-op
+ }
+
+ @Override
+ public String toString()
+ {
+ return "Built-in javax.inject.manager.Manager bean";
+ }
+
+
+}
\ No newline at end of file
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/PrincipalBean.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/builtin/PrincipalBean.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/PrincipalBean.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/PrincipalBean.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,71 @@
+/*
+ * 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.bean.builtin;
+
+import java.lang.reflect.Type;
+import java.security.Principal;
+import java.util.Set;
+
+import javax.enterprise.context.spi.CreationalContext;
+
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.security.spi.SecurityServices;
+import org.jboss.weld.util.collections.Arrays2;
+
+/**
+ * @author pmuir
+ *
+ */
+public class PrincipalBean extends AbstractBuiltInBean<Principal>
+{
+
+ private static final Set<Type> TYPES = Arrays2.<Type>asSet(Object.class, Principal.class);
+
+ public PrincipalBean(BeanManagerImpl manager)
+ {
+ super(Principal.class.getSimpleName(), manager);
+ }
+
+ @Override
+ public Class<Principal> getType()
+ {
+ return Principal.class;
+ }
+
+ public Set<Type> getTypes()
+ {
+ return TYPES;
+ }
+
+ public Principal create(CreationalContext<Principal> creationalContext)
+ {
+ if (getManager().getServices().contains(SecurityServices.class))
+ {
+ return getManager().getServices().get(SecurityServices.class).getPrincipal();
+ }
+ else
+ {
+ throw new IllegalStateException("SecurityServices not available");
+ }
+ }
+
+ public void destroy(Principal instance, CreationalContext<Principal> creationalContext)
+ {
+ // No-op
+ }
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/UserTransactionBean.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/builtin/UserTransactionBean.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/UserTransactionBean.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/UserTransactionBean.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,71 @@
+/*
+ * 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.bean.builtin;
+
+import java.lang.reflect.Type;
+import java.util.Set;
+
+import javax.enterprise.context.spi.CreationalContext;
+import javax.transaction.UserTransaction;
+
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.transaction.spi.TransactionServices;
+import org.jboss.weld.util.collections.Arrays2;
+
+/**
+ * @author pmuir
+ *
+ */
+public class UserTransactionBean extends AbstractBuiltInBean<UserTransaction>
+{
+
+ private static final Set<Type> TYPES = Arrays2.<Type>asSet(Object.class, UserTransaction.class);
+
+ public UserTransactionBean(BeanManagerImpl manager)
+ {
+ super(UserTransaction.class.getSimpleName(), manager);
+ }
+
+ @Override
+ public Class<UserTransaction> getType()
+ {
+ return UserTransaction.class;
+ }
+
+ public Set<Type> getTypes()
+ {
+ return TYPES;
+ }
+
+ public UserTransaction create(CreationalContext<UserTransaction> creationalContext)
+ {
+ if (getManager().getServices().contains(TransactionServices.class))
+ {
+ return getManager().getServices().get(TransactionServices.class).getUserTransaction();
+ }
+ else
+ {
+ throw new IllegalStateException("TransactionServices not available");
+ }
+ }
+
+ public void destroy(UserTransaction instance, CreationalContext<UserTransaction> creationalContext)
+ {
+ // No-op
+ }
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/facade (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/builtin/facade)
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/facade/AbstractFacade.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/builtin/facade/AbstractFacade.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/facade/AbstractFacade.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.bean.builtin.facade;
+package org.jboss.weld.bean.builtin.facade;
import java.io.Serializable;
import java.lang.annotation.Annotation;
@@ -23,8 +23,8 @@
import java.util.HashSet;
import java.util.Set;
-import org.jboss.webbeans.BeanManagerImpl;
-import org.jboss.webbeans.metadata.cache.MetaAnnotationStore;
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.metadata.cache.MetaAnnotationStore;
/**
* Common implementation for binding-type-based helpers
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/facade/AbstractFacadeBean.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/builtin/facade/AbstractFacadeBean.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/facade/AbstractFacadeBean.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.bean.builtin.facade;
+package org.jboss.weld.bean.builtin.facade;
import java.lang.annotation.Annotation;
import java.lang.reflect.ParameterizedType;
@@ -24,10 +24,10 @@
import javax.enterprise.context.spi.CreationalContext;
import javax.enterprise.inject.spi.InjectionPoint;
-import org.jboss.webbeans.BeanManagerImpl;
-import org.jboss.webbeans.bean.builtin.AbstractBuiltInBean;
-import org.jboss.webbeans.log.Log;
-import org.jboss.webbeans.log.Logging;
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.bean.builtin.AbstractBuiltInBean;
+import org.jboss.weld.log.Log;
+import org.jboss.weld.log.Logging;
public abstract class AbstractFacadeBean<T> extends AbstractBuiltInBean<T>
{
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/facade/EventBean.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/builtin/facade/EventBean.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/facade/EventBean.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.bean.builtin.facade;
+package org.jboss.weld.bean.builtin.facade;
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
@@ -25,11 +25,11 @@
import javax.enterprise.event.Event;
import javax.enterprise.inject.TypeLiteral;
-import org.jboss.webbeans.BeanManagerImpl;
-import org.jboss.webbeans.event.EventImpl;
-import org.jboss.webbeans.literal.AnyLiteral;
-import org.jboss.webbeans.resolution.ResolvableTransformer;
-import org.jboss.webbeans.util.collections.Arrays2;
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.event.EventImpl;
+import org.jboss.weld.literal.AnyLiteral;
+import org.jboss.weld.resolution.ResolvableTransformer;
+import org.jboss.weld.util.collections.Arrays2;
public class EventBean extends AbstractFacadeBean<Event<?>>
{
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/facade/FacadeBeanResolvableTransformer.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/builtin/facade/FacadeBeanResolvableTransformer.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/facade/FacadeBeanResolvableTransformer.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.bean.builtin.facade;
+package org.jboss.weld.bean.builtin.facade;
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
@@ -24,10 +24,10 @@
import javax.enterprise.inject.Any;
-import org.jboss.webbeans.literal.AnyLiteral;
-import org.jboss.webbeans.resolution.ForwardingResolvable;
-import org.jboss.webbeans.resolution.Resolvable;
-import org.jboss.webbeans.resolution.ResolvableTransformer;
+import org.jboss.weld.literal.AnyLiteral;
+import org.jboss.weld.resolution.ForwardingResolvable;
+import org.jboss.weld.resolution.Resolvable;
+import org.jboss.weld.resolution.ResolvableTransformer;
/**
* AnnotatedItem transformer which can be used for FacadeBeans
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/facade/InstanceBean.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/builtin/facade/InstanceBean.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/facade/InstanceBean.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.bean.builtin.facade;
+package org.jboss.weld.bean.builtin.facade;
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
@@ -27,10 +27,10 @@
import javax.enterprise.inject.TypeLiteral;
import javax.inject.Provider;
-import org.jboss.webbeans.BeanManagerImpl;
-import org.jboss.webbeans.literal.AnyLiteral;
-import org.jboss.webbeans.resolution.ResolvableTransformer;
-import org.jboss.webbeans.util.collections.Arrays2;
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.literal.AnyLiteral;
+import org.jboss.weld.resolution.ResolvableTransformer;
+import org.jboss.weld.util.collections.Arrays2;
public class InstanceBean extends AbstractFacadeBean<Instance<?>>
{
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/facade/InstanceImpl.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/builtin/facade/InstanceImpl.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/bean/builtin/facade/InstanceImpl.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.bean.builtin.facade;
+package org.jboss.weld.bean.builtin.facade;
import java.io.Serializable;
import java.lang.annotation.Annotation;
@@ -30,8 +30,8 @@
import javax.enterprise.inject.TypeLiteral;
import javax.enterprise.inject.spi.Bean;
-import org.jboss.webbeans.BeanManagerImpl;
-import org.jboss.webbeans.resolution.ResolvableWBClass;
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.resolution.ResolvableWBClass;
/**
* Helper implementation for Instance for getting instances
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/bean/ee (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/ee)
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/bean/ee/EEResourceProducerField.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/ee/EEResourceProducerField.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/bean/ee/EEResourceProducerField.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,16 +14,16 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.bean.ee;
+package org.jboss.weld.bean.ee;
-import org.jboss.webbeans.BeanManagerImpl;
-import org.jboss.webbeans.bean.AbstractClassBean;
-import org.jboss.webbeans.bean.ProducerField;
-import org.jboss.webbeans.bootstrap.BeanDeployerEnvironment;
-import org.jboss.webbeans.ejb.EJBApiAbstraction;
-import org.jboss.webbeans.introspector.WBField;
-import org.jboss.webbeans.persistence.PersistenceApiAbstraction;
-import org.jboss.webbeans.ws.WSApiAbstraction;
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.bean.AbstractClassBean;
+import org.jboss.weld.bean.ProducerField;
+import org.jboss.weld.bootstrap.BeanDeployerEnvironment;
+import org.jboss.weld.ejb.EJBApiAbstraction;
+import org.jboss.weld.introspector.WBField;
+import org.jboss.weld.persistence.PersistenceApiAbstraction;
+import org.jboss.weld.ws.WSApiAbstraction;
/**
* @author pmuir
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/bean/ee/PersistenceContextProducerField.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/ee/PersistenceContextProducerField.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/bean/ee/PersistenceContextProducerField.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,13 +14,13 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.bean.ee;
+package org.jboss.weld.bean.ee;
import javax.persistence.EntityManager;
-import org.jboss.webbeans.BeanManagerImpl;
-import org.jboss.webbeans.bean.AbstractClassBean;
-import org.jboss.webbeans.introspector.WBField;
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.bean.AbstractClassBean;
+import org.jboss.weld.introspector.WBField;
/**
* @author pmuir
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/bean/interceptor (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/interceptor)
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/bean/interceptor/ClassInterceptionHandlerFactory.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/interceptor/ClassInterceptionHandlerFactory.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/bean/interceptor/ClassInterceptionHandlerFactory.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -15,15 +15,15 @@
* limitations under the License.
*/
-package org.jboss.webbeans.bean.interceptor;
+package org.jboss.weld.bean.interceptor;
import javax.enterprise.context.spi.CreationalContext;
import org.jboss.interceptor.proxy.InterceptionHandlerFactory;
import org.jboss.interceptor.proxy.InterceptionHandler;
import org.jboss.interceptor.proxy.DirectClassInterceptionHandler;
-import org.jboss.webbeans.DeploymentException;
-import org.jboss.webbeans.BeanManagerImpl;
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.DeploymentException;
/**
* @author Marius Bogoevici
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/bean/interceptor/InterceptorBindingsAdapter.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/interceptor/InterceptorBindingsAdapter.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/bean/interceptor/InterceptorBindingsAdapter.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.jboss.webbeans.bean.interceptor;
+package org.jboss.weld.bean.interceptor;
import java.util.Collection;
import java.util.List;
@@ -28,7 +28,7 @@
import javax.enterprise.inject.spi.Interceptor;
import javax.enterprise.inject.spi.InterceptionType;
-import org.jboss.webbeans.ejb.spi.InterceptorBindings;
+import org.jboss.weld.ejb.spi.InterceptorBindings;
import org.jboss.interceptor.model.InterceptionModel;
/**
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/bean/interceptor/InterceptorInterceptionHandlerFactory.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/interceptor/InterceptorInterceptionHandlerFactory.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/bean/interceptor/InterceptorInterceptionHandlerFactory.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.jboss.webbeans.bean.interceptor;
+package org.jboss.weld.bean.interceptor;
import javax.enterprise.context.spi.CreationalContext;
import javax.enterprise.inject.spi.Interceptor;
@@ -23,7 +23,7 @@
import org.jboss.interceptor.proxy.DirectClassInterceptionHandler;
import org.jboss.interceptor.proxy.InterceptionHandler;
import org.jboss.interceptor.proxy.InterceptionHandlerFactory;
-import org.jboss.webbeans.BeanManagerImpl;
+import org.jboss.weld.BeanManagerImpl;
/**
* @author Marius Bogoevici
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/bean/proxy (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/proxy)
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/bean/proxy/ClientProxyInstance.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/proxy/ClientProxyInstance.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/bean/proxy/ClientProxyInstance.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.bean.proxy;
+package org.jboss.weld.bean.proxy;
/**
* @author pmuir
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/bean/proxy/ClientProxyMethodHandler.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/proxy/ClientProxyMethodHandler.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/bean/proxy/ClientProxyMethodHandler.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.bean.proxy;
+package org.jboss.weld.bean.proxy;
import java.io.Serializable;
import java.lang.reflect.InvocationTargetException;
@@ -26,11 +26,11 @@
import javax.enterprise.context.spi.Context;
import javax.enterprise.inject.spi.Bean;
-import org.jboss.webbeans.BeanManagerImpl;
-import org.jboss.webbeans.context.WBCreationalContext;
-import org.jboss.webbeans.log.LogProvider;
-import org.jboss.webbeans.log.Logging;
-import org.jboss.webbeans.util.Reflections;
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.context.WBCreationalContext;
+import org.jboss.weld.log.LogProvider;
+import org.jboss.weld.log.Logging;
+import org.jboss.weld.util.Reflections;
/**
* A Javassist MethodHandler that delegates method calls to a proxied bean. If
@@ -39,7 +39,7 @@
*
* @author Nicklas Karlsson
*
- * @see org.jboss.webbeans.bean.proxy.ClientProxyProvider
+ * @see org.jboss.weld.bean.proxy.ClientProxyProvider
*/
public class ClientProxyMethodHandler implements MethodHandler, Serializable
{
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/bean/proxy/ClientProxyProvider.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/proxy/ClientProxyProvider.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/bean/proxy/ClientProxyProvider.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.bean.proxy;
+package org.jboss.weld.bean.proxy;
import java.io.Serializable;
import java.lang.reflect.Type;
@@ -26,10 +26,10 @@
import javax.enterprise.inject.spi.Bean;
-import org.jboss.webbeans.BeanManagerImpl;
-import org.jboss.webbeans.DefinitionException;
-import org.jboss.webbeans.util.Proxies;
-import org.jboss.webbeans.util.collections.ConcurrentCache;
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.DefinitionException;
+import org.jboss.weld.util.Proxies;
+import org.jboss.weld.util.collections.ConcurrentCache;
/**
* A proxy pool for holding scope adaptors (client proxies)
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/bean/proxy/DecoratorProxyMethodHandler.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/proxy/DecoratorProxyMethodHandler.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/bean/proxy/DecoratorProxyMethodHandler.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,9 +14,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.bean.proxy;
+package org.jboss.weld.bean.proxy;
-import static org.jboss.webbeans.util.Reflections.ensureAccessible;
+import static org.jboss.weld.util.Reflections.ensureAccessible;
import java.io.Serializable;
import java.lang.reflect.Method;
@@ -24,11 +24,11 @@
import javassist.util.proxy.MethodHandler;
-import org.jboss.webbeans.bean.DecoratorImpl;
-import org.jboss.webbeans.context.SerializableContextualInstance;
-import org.jboss.webbeans.introspector.MethodSignature;
-import org.jboss.webbeans.introspector.WBMethod;
-import org.jboss.webbeans.introspector.jlr.MethodSignatureImpl;
+import org.jboss.weld.bean.DecoratorImpl;
+import org.jboss.weld.context.SerializableContextualInstance;
+import org.jboss.weld.introspector.MethodSignature;
+import org.jboss.weld.introspector.WBMethod;
+import org.jboss.weld.introspector.jlr.MethodSignatureImpl;
/**
* Method handler for decorated beans
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/bean/proxy/EnterpriseBeanInstance.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/proxy/EnterpriseBeanInstance.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/bean/proxy/EnterpriseBeanInstance.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,11 +14,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.bean.proxy;
+package org.jboss.weld.bean.proxy;
import javax.enterprise.context.spi.CreationalContext;
-import org.jboss.webbeans.bean.SessionBean;
+import org.jboss.weld.bean.SessionBean;
/**
* Interface implemented by all enterprise bean proxies to query/control the proxy
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/bean/proxy/EnterpriseBeanProxyMethodHandler.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/proxy/EnterpriseBeanProxyMethodHandler.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/bean/proxy/EnterpriseBeanProxyMethodHandler.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.bean.proxy;
+package org.jboss.weld.bean.proxy;
import java.io.Serializable;
import java.lang.reflect.Method;
@@ -25,13 +25,13 @@
import javax.enterprise.context.spi.CreationalContext;
-import org.jboss.webbeans.bean.SessionBean;
-import org.jboss.webbeans.ejb.api.SessionObjectReference;
-import org.jboss.webbeans.introspector.MethodSignature;
-import org.jboss.webbeans.introspector.jlr.MethodSignatureImpl;
-import org.jboss.webbeans.log.Log;
-import org.jboss.webbeans.log.Logging;
-import org.jboss.webbeans.util.Reflections;
+import org.jboss.weld.bean.SessionBean;
+import org.jboss.weld.ejb.api.SessionObjectReference;
+import org.jboss.weld.introspector.MethodSignature;
+import org.jboss.weld.introspector.jlr.MethodSignatureImpl;
+import org.jboss.weld.log.Log;
+import org.jboss.weld.log.Logging;
+import org.jboss.weld.util.Reflections;
/**
* Method handler for enterprise bean client proxies
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/bean/proxy/Marker.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bean/proxy/Marker.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/bean/proxy/Marker.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -1,4 +1,4 @@
-package org.jboss.webbeans.bean.proxy;
+package org.jboss.weld.bean.proxy;
import java.lang.reflect.Method;
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/bootstrap/AbstractBeanDeployer.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/AbstractBeanDeployer.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/bootstrap/AbstractBeanDeployer.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/bootstrap/AbstractBeanDeployer.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,315 @@
+/*
+ * 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.bootstrap;
+
+import java.util.Set;
+import java.lang.reflect.Member;
+import java.lang.reflect.Type;
+
+import javax.enterprise.event.Observes;
+import javax.enterprise.inject.Disposes;
+import javax.enterprise.inject.Produces;
+import javax.enterprise.inject.spi.ProcessObserverMethod;
+import javax.enterprise.inject.spi.ProcessProducer;
+import javax.enterprise.inject.spi.Interceptor;
+import javax.inject.Inject;
+
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.DefinitionException;
+import org.jboss.weld.bean.AbstractClassBean;
+import org.jboss.weld.bean.AbstractProducerBean;
+import org.jboss.weld.bean.DecoratorImpl;
+import org.jboss.weld.bean.DisposalMethod;
+import org.jboss.weld.bean.InterceptorImpl;
+import org.jboss.weld.bean.ManagedBean;
+import org.jboss.weld.bean.NewManagedBean;
+import org.jboss.weld.bean.NewSessionBean;
+import org.jboss.weld.bean.ProducerField;
+import org.jboss.weld.bean.ProducerMethod;
+import org.jboss.weld.bean.RIBean;
+import org.jboss.weld.bean.SessionBean;
+import org.jboss.weld.bean.ee.EEResourceProducerField;
+import org.jboss.weld.bean.ee.PersistenceContextProducerField;
+import org.jboss.weld.bootstrap.events.ProcessObserverMethodImpl;
+import org.jboss.weld.bootstrap.events.ProcessProducerImpl;
+import org.jboss.weld.ejb.EJBApiAbstraction;
+import org.jboss.weld.ejb.InternalEjbDescriptor;
+import org.jboss.weld.ejb.spi.EjbServices;
+import org.jboss.weld.event.ObserverFactory;
+import org.jboss.weld.event.ObserverMethodImpl;
+import org.jboss.weld.introspector.WBClass;
+import org.jboss.weld.introspector.WBField;
+import org.jboss.weld.introspector.WBMethod;
+import org.jboss.weld.jsf.JsfApiAbstraction;
+import org.jboss.weld.log.LogProvider;
+import org.jboss.weld.log.Logging;
+import org.jboss.weld.persistence.PersistenceApiAbstraction;
+import org.jboss.weld.servlet.ServletApiAbstraction;
+import org.jboss.weld.util.Reflections;
+import org.jboss.weld.util.reflection.ParameterizedTypeImpl;
+import org.jboss.weld.ws.WSApiAbstraction;
+import org.jboss.interceptor.model.InterceptionModel;
+
+public class AbstractBeanDeployer<E extends BeanDeployerEnvironment>
+{
+
+ private static final LogProvider log = Logging.getLogProvider(AbstractBeanDeployer.class);
+
+ private final BeanManagerImpl manager;
+ private final E environment;
+
+ public AbstractBeanDeployer(BeanManagerImpl manager, E environment)
+ {
+ this.manager = manager;
+ this.environment = environment;
+ }
+
+ protected BeanManagerImpl getManager()
+ {
+ return manager;
+ }
+
+ public AbstractBeanDeployer<E> deploy()
+ {
+ Set<? extends RIBean<?>> beans = getEnvironment().getBeans();
+ // ensure that all decorators are initialized before initializing
+ // the rest of the beans
+ for (DecoratorImpl<?> bean : getEnvironment().getDecorators())
+ {
+ bean.initialize(getEnvironment());
+ manager.addDecorator(bean);
+ log.debug("Bean: " + bean);
+ }
+ for (InterceptorImpl<?> bean: getEnvironment().getInterceptors())
+ {
+ bean.initialize(getEnvironment());
+ manager.addInterceptor(bean);
+ log.debug("Interceptor: " + bean);
+ }
+ for (RIBean<?> bean : beans)
+ {
+ bean.initialize(getEnvironment());
+ if (bean instanceof AbstractProducerBean<?, ?, ?>)
+ {
+ AbstractProducerBean<?, ?, Member> producer = (AbstractProducerBean<?, ?, Member>) bean;
+ createAndFireProcessProducerEvent(producer);
+ }
+ manager.addBean(bean);
+ log.debug("Bean: " + bean);
+ }
+ for (ObserverMethodImpl<?, ?> observer : getEnvironment().getObservers())
+ {
+ log.debug("Observer : " + observer);
+ observer.initialize();
+ createAndFireProcessObserverMethodEvent(observer);
+ manager.addObserver(observer);
+ }
+
+ return this;
+ }
+
+ /**
+ * Creates the sub bean for an class (simple or enterprise) bean
+ *
+ * @param bean
+ * The class bean
+ *
+ */
+ protected <T> void createSubBeans(AbstractClassBean<T> bean)
+ {
+ createProducerMethods(bean, bean.getAnnotatedItem());
+ createProducerFields(bean, bean.getAnnotatedItem());
+ if (manager.isBeanEnabled(bean))
+ {
+ createObserverMethods(bean, bean.getAnnotatedItem());
+ }
+ createDisposalMethods(bean, bean.getAnnotatedItem());
+
+ }
+
+ protected <X> void createProducerMethods(AbstractClassBean<X> declaringBean, WBClass<X> annotatedClass)
+ {
+ for (WBMethod<?, X> method : annotatedClass.getDeclaredAnnotatedWBMethods(Produces.class))
+ {
+ createProducerMethod(declaringBean, method);
+ }
+ }
+
+ protected <X> void createDisposalMethods(AbstractClassBean<X> declaringBean, WBClass<X> annotatedClass)
+ {
+ for (WBMethod<?, X> method : annotatedClass.getDeclaredWBMethodsWithAnnotatedParameters(Disposes.class))
+ {
+ DisposalMethod<X, ?> disposalBean = DisposalMethod.of(manager, method, declaringBean);
+ disposalBean.initialize(getEnvironment());
+ getEnvironment().addBean(disposalBean);
+ }
+ }
+
+ protected <X, T> void createProducerMethod(AbstractClassBean<X> declaringBean, WBMethod<T, X> annotatedMethod)
+ {
+ ProducerMethod<X, T> bean = ProducerMethod.of(annotatedMethod, declaringBean, manager);
+ getEnvironment().addBean(bean);
+ }
+
+ protected <X, T> void createProducerField(AbstractClassBean<X> declaringBean, WBField<T, X> field)
+ {
+ ProducerField<X, T> bean;
+ if (isPersistenceContextProducerField(field))
+ {
+ bean = PersistenceContextProducerField.of(field, declaringBean, manager);
+ }
+ else if (isEEResourceProducerField(field))
+ {
+ bean = EEResourceProducerField.of(field, declaringBean, manager);
+ }
+ else
+ {
+ bean = ProducerField.of(field, declaringBean, manager);
+ }
+ getEnvironment().addBean(bean);
+ }
+
+ private <X, T> void createAndFireProcessProducerEvent(AbstractProducerBean<X, T, Member> producer)
+ {
+ ProcessProducerImpl<X, T> payload = new ProcessProducerImpl<X, T>(producer.getAnnotatedItem(), producer) {};
+ fireEvent(payload, ProcessProducer.class, producer.getAnnotatedItem().getDeclaringType().getBaseType(), producer.getAnnotatedItem().getBaseType());
+ if (!payload.getDefinitionErrors().isEmpty())
+ {
+ // FIXME communicate all the captured definition errors in this exception
+ throw new DefinitionException(payload.getDefinitionErrors().get(0));
+ }
+ }
+
+ private void fireEvent(Object payload, Type rawType, Type... actualTypeArguments)
+ {
+ Type eventType = new ParameterizedTypeImpl(rawType, actualTypeArguments, null);
+ manager.fireEvent(eventType, payload);
+ }
+
+ protected <X> void createProducerFields(AbstractClassBean<X> declaringBean, WBClass<X> annotatedClass)
+ {
+ for (WBField<?, X> field : annotatedClass.getDeclaredAnnotatedWBFields(Produces.class))
+ {
+ createProducerField(declaringBean, field);
+ }
+ }
+
+ protected <X> void createObserverMethods(RIBean<X> declaringBean, WBClass<X> annotatedClass)
+ {
+ for (WBMethod<?, X> method : annotatedClass.getDeclaredWBMethodsWithAnnotatedParameters(Observes.class))
+ {
+ createObserverMethod(declaringBean, method);
+ }
+ }
+
+ protected <X, T> void createObserverMethod(RIBean<X> declaringBean, WBMethod<T, X> method)
+ {
+ ObserverMethodImpl<X, T> observer = ObserverFactory.create(method, declaringBean, manager);
+ getEnvironment().addObserver(observer);
+ }
+
+ private <X, T> void createAndFireProcessObserverMethodEvent(ObserverMethodImpl<X, T> observer)
+ {
+ ProcessObserverMethodImpl<X, T> payload = new ProcessObserverMethodImpl<X, T>(observer.getMethod(), observer) {};
+ fireEvent(payload, ProcessObserverMethod.class, observer.getMethod().getDeclaringType().getBaseType(), observer.getObservedType());
+ if (!payload.getDefinitionErrors().isEmpty())
+ {
+ // FIXME communicate all the captured definition errors in this exception
+ throw new DefinitionException(payload.getDefinitionErrors().get(0));
+ }
+ return;
+ }
+
+ protected <T> void createSimpleBean(WBClass<T> annotatedClass)
+ {
+ ManagedBean<T> bean = ManagedBean.of(annotatedClass, manager);
+ getEnvironment().addBean(bean);
+ createSubBeans(bean);
+ getEnvironment().addBean(NewManagedBean.of(annotatedClass, manager));
+ }
+
+ protected <T> void createDecorator(WBClass<T> annotatedClass)
+ {
+ DecoratorImpl<T> bean = DecoratorImpl.of(annotatedClass, manager);
+ getEnvironment().addBean(bean);
+ }
+
+ protected <T> void createInterceptor(WBClass<T> annotatedClass)
+ {
+ InterceptorImpl<T> bean = InterceptorImpl.of(annotatedClass, manager);
+ getEnvironment().addBean(bean);
+ }
+
+ protected <T> void createEnterpriseBean(InternalEjbDescriptor<T> ejbDescriptor)
+ {
+ // TODO Don't create enterprise bean if it has no local interfaces!
+ SessionBean<T> bean = SessionBean.of(ejbDescriptor, manager);
+ getEnvironment().addBean(bean);
+ createSubBeans(bean);
+ getEnvironment().addBean(NewSessionBean.of(ejbDescriptor, manager));
+ }
+
+ /**
+ * Indicates if the type is a simple Web Bean
+ *
+ * @param type
+ * The type to inspect
+ * @return True if simple Web Bean, false otherwise
+ */
+ protected boolean isTypeManagedBeanOrDecorator(WBClass<?> clazz)
+ {
+ Class<?> javaClass = clazz.getJavaClass();
+ EJBApiAbstraction ejbApiAbstraction = manager.getServices().get(EJBApiAbstraction.class);
+ JsfApiAbstraction jsfApiAbstraction = manager.getServices().get(JsfApiAbstraction.class);
+ ServletApiAbstraction servletApiAbstraction = manager.getServices().get(ServletApiAbstraction.class);
+ return !clazz.isNonStaticMemberClass() &&
+ !Reflections.isParamerterizedTypeWithWildcard(javaClass) &&
+ !servletApiAbstraction.SERVLET_CLASS.isAssignableFrom(javaClass) &&
+ !servletApiAbstraction.FILTER_CLASS.isAssignableFrom(javaClass) &&
+ !servletApiAbstraction.SERVLET_CONTEXT_LISTENER_CLASS.isAssignableFrom(javaClass) &&
+ !servletApiAbstraction.HTTP_SESSION_LISTENER_CLASS.isAssignableFrom(javaClass) &&
+ !servletApiAbstraction.SERVLET_REQUEST_LISTENER_CLASS.isAssignableFrom(javaClass) &&
+ !ejbApiAbstraction.ENTERPRISE_BEAN_CLASS.isAssignableFrom(javaClass) &&
+ !jsfApiAbstraction.UICOMPONENT_CLASS.isAssignableFrom(javaClass) &&
+ hasSimpleWebBeanConstructor(clazz);
+ }
+
+ protected boolean isEEResourceProducerField(WBField<?, ?> field)
+ {
+ EJBApiAbstraction ejbApiAbstraction = manager.getServices().get(EJBApiAbstraction.class);
+ PersistenceApiAbstraction persistenceApiAbstraction = manager.getServices().get(PersistenceApiAbstraction.class);
+ WSApiAbstraction wsApiAbstraction = manager.getServices().get(WSApiAbstraction.class);
+ return field.isAnnotationPresent(ejbApiAbstraction.EJB_ANNOTATION_CLASS) || field.isAnnotationPresent(ejbApiAbstraction.RESOURCE_ANNOTATION_CLASS) || field.isAnnotationPresent(persistenceApiAbstraction.PERSISTENCE_UNIT_ANNOTATION_CLASS) || field.isAnnotationPresent(wsApiAbstraction.WEB_SERVICE_REF_ANNOTATION_CLASS);
+ }
+
+ protected boolean isPersistenceContextProducerField(WBField<?, ?> field)
+ {
+ PersistenceApiAbstraction persistenceApiAbstraction = manager.getServices().get(PersistenceApiAbstraction.class);
+ return field.isAnnotationPresent(persistenceApiAbstraction.PERSISTENCE_CONTEXT_ANNOTATION_CLASS);
+ }
+
+ private static boolean hasSimpleWebBeanConstructor(WBClass<?> type)
+ {
+ return type.getNoArgsWBConstructor() != null || type.getAnnotatedWBConstructors(Inject.class).size() > 0;
+ }
+
+ public E getEnvironment()
+ {
+ return environment;
+ }
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/bootstrap/BeanDeployer.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/BeanDeployer.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/bootstrap/BeanDeployer.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/bootstrap/BeanDeployer.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,126 @@
+/*
+ * 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.bootstrap;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.decorator.Decorator;
+import javax.enterprise.inject.spi.AnnotatedType;
+import javax.interceptor.Interceptor;
+
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.Container;
+import org.jboss.weld.bootstrap.events.ProcessAnnotatedTypeImpl;
+import org.jboss.weld.ejb.EjbDescriptors;
+import org.jboss.weld.ejb.InternalEjbDescriptor;
+import org.jboss.weld.introspector.WBClass;
+import org.jboss.weld.resources.ClassTransformer;
+
+/**
+ * @author pmuir
+ *
+ */
+public class BeanDeployer extends AbstractBeanDeployer<BeanDeployerEnvironment>
+{
+
+ private final BeanManagerImpl deploymentManager;
+
+ private final Set<WBClass<?>> classes;
+
+ /**
+ * @param manager
+ * @param ejbDescriptors
+ */
+ public BeanDeployer(BeanManagerImpl manager, BeanManagerImpl deploymentManager, EjbDescriptors ejbDescriptors)
+ {
+ super(manager, new BeanDeployerEnvironment(ejbDescriptors, manager));
+ this.classes = new HashSet<WBClass<?>>();
+ this.deploymentManager = deploymentManager;
+ }
+
+ public BeanDeployer addClass(Class<?> clazz)
+ {
+ ClassTransformer classTransformer = Container.instance().deploymentServices().get(ClassTransformer.class);
+ if (!clazz.isAnnotation() && !clazz.isEnum())
+ {
+ ProcessAnnotatedTypeImpl<?> event = createProcessAnnotatedTypeEvent(clazz, classTransformer);
+ deploymentManager.fireEvent(event);
+ if (!event.isVeto())
+ {
+ if (event.getAnnotatedType() instanceof WBClass<?>)
+ {
+ classes.add((WBClass<?>) event.getAnnotatedType());
+ }
+ else
+ {
+ classes.add(classTransformer.loadClass(event.getAnnotatedType()));
+ }
+ }
+ }
+ return this;
+ }
+
+ private static <X> ProcessAnnotatedTypeImpl<X> createProcessAnnotatedTypeEvent(Class<X> clazz, ClassTransformer classTransformer)
+ {
+ WBClass<X> annotatedType = classTransformer.loadClass(clazz);
+ return new ProcessAnnotatedTypeImpl<X>(annotatedType) {};
+ }
+
+ // TODO Do we need to fire PAT for annotated types added via BBD? Probably not PLM.
+ public BeanDeployer addClass(AnnotatedType<?> clazz)
+ {
+ ClassTransformer classTransformer = Container.instance().deploymentServices().get(ClassTransformer.class);
+ classes.add(classTransformer.loadClass(clazz));
+ return this;
+ }
+
+ public BeanDeployer addClasses(Iterable<Class<?>> classes)
+ {
+ for (Class<?> clazz : classes)
+ {
+ addClass(clazz);
+ }
+ return this;
+ }
+
+ public BeanDeployer createBeans()
+ {
+ for (WBClass<?> clazz : classes)
+ {
+ boolean managedBeanOrDecorator = !getEnvironment().getEjbDescriptors().contains(clazz.getJavaClass()) && isTypeManagedBeanOrDecorator(clazz);
+ if (managedBeanOrDecorator && clazz.isAnnotationPresent(Decorator.class))
+ {
+ createDecorator(clazz);
+ }
+ else if (managedBeanOrDecorator && clazz.isAnnotationPresent(Interceptor.class))
+ {
+ createInterceptor(clazz);
+ }
+ else if (managedBeanOrDecorator && !clazz.isAbstract())
+ {
+ createSimpleBean(clazz);
+ }
+ }
+ for (InternalEjbDescriptor<?> ejbDescriptor : getEnvironment().getEjbDescriptors())
+ {
+ createEnterpriseBean(ejbDescriptor);
+ }
+ return this;
+ }
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/bootstrap/BeanDeployerEnvironment.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/BeanDeployerEnvironment.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/bootstrap/BeanDeployerEnvironment.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/bootstrap/BeanDeployerEnvironment.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,202 @@
+/*
+ * 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.bootstrap;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Type;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.bean.AbstractClassBean;
+import org.jboss.weld.bean.DecoratorImpl;
+import org.jboss.weld.bean.DisposalMethod;
+import org.jboss.weld.bean.InterceptorImpl;
+import org.jboss.weld.bean.NewBean;
+import org.jboss.weld.bean.ProducerField;
+import org.jboss.weld.bean.ProducerMethod;
+import org.jboss.weld.bean.RIBean;
+import org.jboss.weld.bean.builtin.AbstractBuiltInBean;
+import org.jboss.weld.bean.builtin.ExtensionBean;
+import org.jboss.weld.ejb.EjbDescriptors;
+import org.jboss.weld.event.ObserverMethodImpl;
+import org.jboss.weld.introspector.WBClass;
+import org.jboss.weld.introspector.WBMethod;
+import org.jboss.weld.resolution.ResolvableFactory;
+import org.jboss.weld.resolution.TypeSafeDisposerResolver;
+
+public class BeanDeployerEnvironment
+{
+
+ private final Map<WBClass<?>, AbstractClassBean<?>> classBeanMap;
+ private final Map<WBMethod<?, ?>, ProducerMethod<?, ?>> producerMethodBeanMap;
+ private final Set<RIBean<?>> beans;
+ private final Set<ObserverMethodImpl<?, ?>> observers;
+ private final List<DisposalMethod<?, ?>> allDisposalBeans;
+ private final Set<DisposalMethod<?, ?>> resolvedDisposalBeans;
+ private final Set<DecoratorImpl<?>> decorators;
+ private final Set<InterceptorImpl<?>> interceptors;
+ private final EjbDescriptors ejbDescriptors;
+ private final TypeSafeDisposerResolver disposalMethodResolver;
+
+ public BeanDeployerEnvironment(EjbDescriptors ejbDescriptors, BeanManagerImpl manager)
+ {
+ this.classBeanMap = new HashMap<WBClass<?>, AbstractClassBean<?>>();
+ this.producerMethodBeanMap = new HashMap<WBMethod<?, ?>, ProducerMethod<?, ?>>();
+ this.allDisposalBeans = new ArrayList<DisposalMethod<?, ?>>();
+ this.resolvedDisposalBeans = new HashSet<DisposalMethod<?, ?>>();
+ this.beans = new HashSet<RIBean<?>>();
+ this.decorators = new HashSet<DecoratorImpl<?>>();
+ this.interceptors = new HashSet<InterceptorImpl<?>>();
+ this.observers = new HashSet<ObserverMethodImpl<?, ?>>();
+ this.ejbDescriptors = ejbDescriptors;
+ this.disposalMethodResolver = new TypeSafeDisposerResolver(manager, allDisposalBeans);
+ }
+
+ public <X, T> ProducerMethod<X, T> getProducerMethod(WBMethod<X, T> method)
+ {
+ if (!producerMethodBeanMap.containsKey(method))
+ {
+ return null;
+ }
+ else
+ {
+ ProducerMethod<?, ?> bean = producerMethodBeanMap.get(method);
+ bean.initialize(this);
+ return (ProducerMethod<X, T>) bean;
+ }
+ }
+
+ public AbstractClassBean<?> getClassBean(WBClass<?> clazz)
+ {
+ if (!classBeanMap.containsKey(clazz))
+ {
+ return null;
+ }
+ else
+ {
+ AbstractClassBean<?> bean = classBeanMap.get(clazz);
+ bean.initialize(this);
+ return bean;
+ }
+ }
+
+ public void addBean(ProducerMethod<?, ?> bean)
+ {
+ producerMethodBeanMap.put(bean.getAnnotatedItem(), bean);
+ beans.add(bean);
+ }
+
+ public void addBean(ProducerField<?, ?> bean)
+ {
+ beans.add(bean);
+ }
+
+ public void addBean(ExtensionBean bean)
+ {
+ beans.add(bean);
+ }
+
+ public void addBean(AbstractBuiltInBean<?> bean)
+ {
+ beans.add(bean);
+ }
+
+ public void addBean(AbstractClassBean<?> bean)
+ {
+ if (!(bean instanceof NewBean))
+ {
+ classBeanMap.put(bean.getAnnotatedItem(), bean);
+ }
+ beans.add(bean);
+ }
+
+ public void addBean(DecoratorImpl<?> bean)
+ {
+ decorators.add(bean);
+ }
+
+ public void addBean(InterceptorImpl<?> bean)
+ {
+ interceptors.add(bean);
+ }
+
+ public void addBean(DisposalMethod<?, ?> bean)
+ {
+ allDisposalBeans.add(bean);
+ }
+
+ public void addObserver(ObserverMethodImpl<?, ?> observer)
+ {
+ this.observers.add(observer);
+ }
+
+ public Set<? extends RIBean<?>> getBeans()
+ {
+ return Collections.unmodifiableSet(beans);
+ }
+
+ public Set<DecoratorImpl<?>> getDecorators()
+ {
+ return Collections.unmodifiableSet(decorators);
+ }
+
+ public Set<InterceptorImpl<?>> getInterceptors()
+ {
+ return Collections.unmodifiableSet(interceptors);
+ }
+
+ public Set<ObserverMethodImpl<?, ?>> getObservers()
+ {
+ return Collections.unmodifiableSet(observers);
+ }
+
+
+ public Set<DisposalMethod<?, ?>> getUnresolvedDisposalBeans()
+ {
+ Set<DisposalMethod<?, ?>> beans = new HashSet<DisposalMethod<?, ?>>(allDisposalBeans);
+ beans.removeAll(resolvedDisposalBeans);
+ return Collections.unmodifiableSet(beans);
+ }
+
+ public EjbDescriptors getEjbDescriptors()
+ {
+ return ejbDescriptors;
+ }
+
+ /**
+ * Resolve the disposal method for the given producer method. Any resolved
+ * beans will be marked as such for the purpose of validating that all
+ * disposal methods are used. For internal use.
+ *
+ * @param apiType The API type to match
+ * @param bindings The binding types to match
+ * @return The set of matching disposal methods
+ */
+ public <X> Set<DisposalMethod<X, ?>> resolveDisposalBeans(Set<Type> types, Set<Annotation> bindings, AbstractClassBean<X> declaringBean)
+ {
+ Set<DisposalMethod<X, ?>> beans = (Set) disposalMethodResolver.resolve(ResolvableFactory.of(types, bindings, declaringBean));
+ resolvedDisposalBeans.addAll(beans);
+ return Collections.unmodifiableSet(beans);
+ }
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/bootstrap/BeanDeployment.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/BeanDeployment.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/bootstrap/BeanDeployment.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/bootstrap/BeanDeployment.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,176 @@
+/*
+ * 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.bootstrap;
+
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.bean.builtin.DefaultValidatorBean;
+import org.jboss.weld.bean.builtin.DefaultValidatorFactoryBean;
+import org.jboss.weld.bean.builtin.ExtensionBean;
+import org.jboss.weld.bean.builtin.InjectionPointBean;
+import org.jboss.weld.bean.builtin.ManagerBean;
+import org.jboss.weld.bean.builtin.PrincipalBean;
+import org.jboss.weld.bean.builtin.UserTransactionBean;
+import org.jboss.weld.bean.builtin.facade.EventBean;
+import org.jboss.weld.bean.builtin.facade.InstanceBean;
+import org.jboss.weld.bootstrap.api.Environment;
+import org.jboss.weld.bootstrap.api.Environments;
+import org.jboss.weld.bootstrap.api.ServiceRegistry;
+import org.jboss.weld.bootstrap.api.helpers.SimpleServiceRegistry;
+import org.jboss.weld.bootstrap.spi.BeanDeploymentArchive;
+import org.jboss.weld.bootstrap.spi.Deployment;
+import org.jboss.weld.conversation.ConversationImpl;
+import org.jboss.weld.conversation.JavaSEConversationTerminator;
+import org.jboss.weld.conversation.NumericConversationIdGenerator;
+import org.jboss.weld.conversation.ServletConversationManager;
+import org.jboss.weld.ejb.EjbDescriptors;
+import org.jboss.weld.ejb.spi.EjbServices;
+import org.jboss.weld.event.ObserverMethodImpl;
+import org.jboss.weld.log.Log;
+import org.jboss.weld.log.Logging;
+import org.jboss.weld.resources.spi.ResourceLoader;
+import org.jboss.weld.security.spi.SecurityServices;
+import org.jboss.weld.servlet.HttpSessionManager;
+import org.jboss.weld.transaction.spi.TransactionServices;
+import org.jboss.weld.validation.spi.ValidationServices;
+import org.jboss.weld.xml.BeansXmlParser;
+
+/**
+ * @author pmuir
+ *
+ */
+public class BeanDeployment
+{
+
+ private static final Log log = Logging.getLog(BeanDeployment.class);
+
+ private final BeanDeploymentArchive beanDeploymentArchive;
+ private final BeanManagerImpl beanManager;
+ private final ExtensionBeanDeployerEnvironment extensionBeanDeployerEnvironment;
+ private final BeanDeployer beanDeployer;
+ private final Deployment deployment;
+
+ public BeanDeployment(BeanDeploymentArchive beanDeploymentArchive, BeanManagerImpl deploymentManager, Deployment deployment, ExtensionBeanDeployerEnvironment extensionBeanDeployerEnvironment, ServiceRegistry deploymentServices)
+ {
+ this.extensionBeanDeployerEnvironment = extensionBeanDeployerEnvironment;
+ this.deployment = deployment;
+ this.beanDeploymentArchive = beanDeploymentArchive;
+ EjbDescriptors ejbDescriptors = new EjbDescriptors();
+ beanDeploymentArchive.getServices().add(EjbDescriptors.class, ejbDescriptors);
+ ServiceRegistry services = new SimpleServiceRegistry();
+ services.addAll(deploymentServices.entrySet());
+ services.addAll(beanDeploymentArchive.getServices().entrySet());
+ this.beanManager = BeanManagerImpl.newManager(deploymentManager, beanDeploymentArchive.getId(), services);
+ if (beanManager.getServices().contains(EjbServices.class))
+ {
+ // Must populate EJB cache first, as we need it to detect whether a
+ // bean is an EJB!
+ ejbDescriptors.addAll(beanDeploymentArchive.getEjbs());
+ }
+
+ beanDeployer = new BeanDeployer(beanManager, deploymentManager, ejbDescriptors);
+
+ parseBeansXml();
+ }
+
+ public BeanManagerImpl getBeanManager()
+ {
+ return beanManager;
+ }
+
+ public BeanDeployer getBeanDeployer()
+ {
+ return beanDeployer;
+ }
+
+ public BeanDeploymentArchive getBeanDeploymentArchive()
+ {
+ return beanDeploymentArchive;
+ }
+
+
+ private void parseBeansXml()
+ {
+ BeansXmlParser parser = new BeansXmlParser(beanManager.getServices().get(ResourceLoader.class), getBeanDeploymentArchive().getBeansXml());
+ parser.parse();
+
+ if (parser.getEnabledPolicyClasses() != null)
+ {
+ beanManager.setEnabledPolicyClasses(parser.getEnabledPolicyClasses());
+ }
+ if (parser.getEnabledPolicyStereotypes() != null)
+ {
+ beanManager.setEnabledPolicyStereotypes(parser.getEnabledPolicyStereotypes());
+ }
+ if (parser.getEnabledDecoratorClasses() != null)
+ {
+ beanManager.setEnabledDecoratorClasses(parser.getEnabledDecoratorClasses());
+ }
+ if (parser.getEnabledInterceptorClasses() != null)
+ {
+ beanManager.setEnabledInterceptorClasses(parser.getEnabledInterceptorClasses());
+ }
+ log.debug("Enabled policies for " + this + ": " + beanManager.getEnabledPolicyClasses() + " " + beanManager.getEnabledPolicyStereotypes());
+ log.debug("Enabled decorator types for " + beanManager + ": " + beanManager.getEnabledDecoratorClasses());
+ log.debug("Enabled interceptor types for " + beanManager + ": " + beanManager.getEnabledInterceptorClasses());
+ }
+
+ public void deployBeans(Environment environment)
+ {
+ beanDeployer.addClasses(beanDeploymentArchive.getBeanClasses());
+ beanDeployer.getEnvironment().addBean(new ManagerBean(beanManager));
+ beanDeployer.getEnvironment().addBean(new InjectionPointBean(beanManager));
+ beanDeployer.getEnvironment().addBean(new EventBean(beanManager));
+ beanDeployer.getEnvironment().addBean(new InstanceBean(beanManager));
+ if (!environment.equals(Environments.SE))
+ {
+ beanDeployer.addClass(ConversationImpl.class);
+ beanDeployer.addClass(ServletConversationManager.class);
+ beanDeployer.addClass(JavaSEConversationTerminator.class);
+ beanDeployer.addClass(NumericConversationIdGenerator.class);
+ beanDeployer.addClass(HttpSessionManager.class);
+ }
+ if (beanManager.getServices().contains(TransactionServices.class))
+ {
+ beanDeployer.getEnvironment().addBean(new UserTransactionBean(beanManager));
+ }
+ if (beanManager.getServices().contains(SecurityServices.class))
+ {
+ beanDeployer.getEnvironment().addBean(new PrincipalBean(beanManager));
+ }
+ if (beanManager.getServices().contains(ValidationServices.class))
+ {
+ beanDeployer.getEnvironment().addBean(new DefaultValidatorBean(beanManager));
+ beanDeployer.getEnvironment().addBean(new DefaultValidatorFactoryBean(beanManager));
+ }
+ for (ExtensionBean bean : extensionBeanDeployerEnvironment.getBeans())
+ {
+ if (deployment.loadBeanDeploymentArchive(bean.getBeanClass()).equals(beanDeploymentArchive))
+ {
+ beanDeployer.getManager().addBean(bean);
+ }
+ }
+ for (ObserverMethodImpl<?, ?> observerMethod : extensionBeanDeployerEnvironment.getObservers())
+ {
+ if (deployment.loadBeanDeploymentArchive(observerMethod.getBean().getBeanClass()).equals(beanDeploymentArchive))
+ {
+ beanDeployer.getManager().addObserver(observerMethod);
+ }
+ }
+ beanDeployer.createBeans().deploy();
+ }
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/bootstrap/ExtensionBeanDeployer.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/ExtensionBeanDeployer.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/bootstrap/ExtensionBeanDeployer.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/bootstrap/ExtensionBeanDeployer.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,75 @@
+/*
+ * 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.bootstrap;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.enterprise.inject.spi.Extension;
+
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.Container;
+import org.jboss.weld.bean.builtin.ExtensionBean;
+import org.jboss.weld.introspector.WBClass;
+import org.jboss.weld.resources.ClassTransformer;
+
+/**
+ * @author pmuir
+ *
+ */
+public class ExtensionBeanDeployer extends AbstractBeanDeployer<ExtensionBeanDeployerEnvironment>
+{
+
+
+ private final Set<Extension> extensions;
+
+ public ExtensionBeanDeployer(BeanManagerImpl manager, ExtensionBeanDeployerEnvironment environment)
+ {
+ super(manager, environment);
+ this.extensions = new HashSet<Extension>();
+ }
+
+ public ExtensionBeanDeployer createBeans()
+ {
+ ClassTransformer classTransformer = Container.instance().deploymentServices().get(ClassTransformer.class);
+ for (Extension extension : extensions)
+ {
+ @SuppressWarnings("unchecked")
+ WBClass<Extension> clazz = (WBClass<Extension>) classTransformer.loadClass(extension.getClass());
+
+ ExtensionBean bean = new ExtensionBean(getManager(), clazz, extension);
+ this.
+ getEnvironment().addBean(bean);
+ createObserverMethods(bean, clazz);
+ }
+ return this;
+ }
+
+ public void addExtensions(Iterable<Extension> extensions)
+ {
+ for (Extension extension : extensions)
+ {
+ addExtension(extension);
+ }
+ }
+
+ public void addExtension(Extension extension)
+ {
+ this.extensions.add(extension);
+ }
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/bootstrap/ExtensionBeanDeployerEnvironment.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/ExtensionBeanDeployerEnvironment.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/bootstrap/ExtensionBeanDeployerEnvironment.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/bootstrap/ExtensionBeanDeployerEnvironment.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,34 @@
+package org.jboss.weld.bootstrap;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.bean.builtin.ExtensionBean;
+import org.jboss.weld.ejb.EjbDescriptors;
+
+public class ExtensionBeanDeployerEnvironment extends BeanDeployerEnvironment
+{
+
+ private final Set<ExtensionBean> extensionBeans;
+
+
+ public ExtensionBeanDeployerEnvironment(EjbDescriptors ejbDescriptors, BeanManagerImpl manager)
+ {
+ super(ejbDescriptors, manager);
+ this.extensionBeans = new HashSet<ExtensionBean>();
+ }
+
+ @Override
+ public Set<ExtensionBean> getBeans()
+ {
+ return extensionBeans;
+ }
+
+ @Override
+ public void addBean(ExtensionBean bean)
+ {
+ extensionBeans.add(bean);
+ }
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/bootstrap/WebBeansBootstrap.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/WebBeansBootstrap.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/bootstrap/WebBeansBootstrap.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/bootstrap/WebBeansBootstrap.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,439 @@
+/*
+ * 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.bootstrap;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+import java.util.Map.Entry;
+
+import javax.enterprise.inject.spi.BeforeBeanDiscovery;
+import javax.enterprise.inject.spi.BeforeShutdown;
+import javax.enterprise.inject.spi.Extension;
+
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.Container;
+import org.jboss.weld.ContextualStore;
+import org.jboss.weld.DefinitionException;
+import org.jboss.weld.DeploymentException;
+import org.jboss.weld.Validator;
+import org.jboss.weld.bean.builtin.ManagerBean;
+import org.jboss.weld.bootstrap.api.Bootstrap;
+import org.jboss.weld.bootstrap.api.Environment;
+import org.jboss.weld.bootstrap.api.Lifecycle;
+import org.jboss.weld.bootstrap.api.Service;
+import org.jboss.weld.bootstrap.api.ServiceRegistry;
+import org.jboss.weld.bootstrap.api.helpers.ServiceRegistries;
+import org.jboss.weld.bootstrap.api.helpers.SimpleServiceRegistry;
+import org.jboss.weld.bootstrap.events.AfterBeanDiscoveryImpl;
+import org.jboss.weld.bootstrap.events.AfterDeploymentValidationImpl;
+import org.jboss.weld.bootstrap.events.BeforeBeanDiscoveryImpl;
+import org.jboss.weld.bootstrap.events.BeforeShutdownImpl;
+import org.jboss.weld.bootstrap.spi.BeanDeploymentArchive;
+import org.jboss.weld.bootstrap.spi.Deployment;
+import org.jboss.weld.context.AbstractApplicationContext;
+import org.jboss.weld.context.ApplicationContext;
+import org.jboss.weld.context.ContextLifecycle;
+import org.jboss.weld.context.ConversationContext;
+import org.jboss.weld.context.DependentContext;
+import org.jboss.weld.context.RequestContext;
+import org.jboss.weld.context.SessionContext;
+import org.jboss.weld.context.SingletonContext;
+import org.jboss.weld.context.api.BeanStore;
+import org.jboss.weld.ejb.EJBApiAbstraction;
+import org.jboss.weld.ejb.EjbDescriptors;
+import org.jboss.weld.jsf.JsfApiAbstraction;
+import org.jboss.weld.log.Log;
+import org.jboss.weld.log.Logging;
+import org.jboss.weld.metadata.TypeStore;
+import org.jboss.weld.metadata.cache.MetaAnnotationStore;
+import org.jboss.weld.persistence.PersistenceApiAbstraction;
+import org.jboss.weld.resources.ClassTransformer;
+import org.jboss.weld.resources.DefaultResourceLoader;
+import org.jboss.weld.resources.spi.ResourceLoader;
+import org.jboss.weld.servlet.ServletApiAbstraction;
+import org.jboss.weld.transaction.spi.TransactionServices;
+import org.jboss.weld.util.serviceProvider.ServiceLoader;
+import org.jboss.weld.ws.WSApiAbstraction;
+
+/**
+ * Common bootstrapping functionality that is run at application startup and
+ * detects and register beans
+ *
+ * @author Pete Muir
+ */
+public class WebBeansBootstrap implements Bootstrap
+{
+
+ /**
+ *
+ * A Deployment visitor which can find the transitive closure of Bean
+ * Deployment Archives
+ *
+ * @author pmuir
+ *
+ */
+ private static class DeploymentVisitor
+ {
+
+ private final BeanManagerImpl deploymentManager;
+ private final Environment environment;
+ private final Deployment deployment;
+ private final ExtensionBeanDeployerEnvironment extensionBeanDeployerEnvironment;
+
+ public DeploymentVisitor(BeanManagerImpl deploymentManager, Environment environment, Deployment deployment, ExtensionBeanDeployerEnvironment extensionBeanDeployerEnvironment)
+ {
+ this.deploymentManager = deploymentManager;
+ this.environment = environment;
+ this.deployment = deployment;
+ this.extensionBeanDeployerEnvironment = extensionBeanDeployerEnvironment;
+ }
+
+ public Map<BeanDeploymentArchive, BeanDeployment> visit()
+ {
+ Set<BeanDeploymentArchive> seenBeanDeploymentArchives = new HashSet<BeanDeploymentArchive>();
+ Map<BeanDeploymentArchive, BeanDeployment> managerAwareBeanDeploymentArchives = new HashMap<BeanDeploymentArchive, BeanDeployment>();
+ for (BeanDeploymentArchive archvive : deployment.getBeanDeploymentArchives())
+ {
+ visit(archvive, managerAwareBeanDeploymentArchives, seenBeanDeploymentArchives);
+ }
+ return managerAwareBeanDeploymentArchives;
+ }
+
+ private BeanDeployment visit(BeanDeploymentArchive beanDeploymentArchive, Map<BeanDeploymentArchive, BeanDeployment> managerAwareBeanDeploymentArchives, Set<BeanDeploymentArchive> seenBeanDeploymentArchives)
+ {
+ // Check that the required services are specified
+ verifyServices(beanDeploymentArchive.getServices(), environment.getRequiredBeanDeploymentArchiveServices());
+
+ // Check the id is not null
+ if (beanDeploymentArchive.getId() == null)
+ {
+ throw new IllegalArgumentException("BeanDeploymentArchive must not be null " + beanDeploymentArchive);
+ }
+
+ // Create the BeanDeployment and attach
+ BeanDeployment parent = new BeanDeployment(beanDeploymentArchive, deploymentManager, deployment, extensionBeanDeployerEnvironment, deployment.getServices());
+ managerAwareBeanDeploymentArchives.put(beanDeploymentArchive, parent);
+ seenBeanDeploymentArchives.add(beanDeploymentArchive);
+ for (BeanDeploymentArchive archive : beanDeploymentArchive.getBeanDeploymentArchives())
+ {
+ // Cut any circularties
+ if (!seenBeanDeploymentArchives.contains(archive))
+ {
+ BeanDeployment child = visit(archive, managerAwareBeanDeploymentArchives, seenBeanDeploymentArchives);
+ parent.getBeanManager().addAccessibleBeanManager(child.getBeanManager());
+ }
+ }
+ return parent;
+ }
+
+ }
+
+ // The log provider
+ private static Log log = Logging.getLog(WebBeansBootstrap.class);
+
+ static
+ {
+ log.info("Web Beans " + getVersion());
+ }
+
+ // The Web Beans manager
+ private BeanManagerImpl deploymentManager;
+ private Map<BeanDeploymentArchive, BeanDeployment> beanDeployments;
+ private Environment environment;
+ private Deployment deployment;
+ private ExtensionBeanDeployerEnvironment extensionBeanDeployerEnvironment;
+
+ public Bootstrap startContainer(Environment environment, Deployment deployment, BeanStore applicationBeanStore)
+ {
+ synchronized (this)
+ {
+ if (deployment == null)
+ {
+ throw new IllegalArgumentException("Must start the container with a deployment");
+ }
+ if (!deployment.getServices().contains(ResourceLoader.class))
+ {
+ deployment.getServices().add(ResourceLoader.class, new DefaultResourceLoader());
+ }
+
+ verifyServices(deployment.getServices(), environment.getRequiredDeploymentServices());
+
+ if (!deployment.getServices().contains(TransactionServices.class))
+ {
+ log.info("Transactional services not available. Injection of @Current UserTransaction not available. Transactional observers will be invoked synchronously.");
+ }
+ // TODO Reinstate if we can find a good way to detect.
+// if (!deployment.getServices().contains(EjbServices.class))
+// {
+// log.info("EJB services not available. Session beans will be simple beans, CDI-style injection into non-contextual EJBs, injection of remote EJBs and injection of @EJB in simple beans will not be available");
+// }
+// if (!deployment.getServices().contains(JpaInjectionServices.class))
+// {
+// log.info("JPA services not available. Injection of @PersistenceContext will not occur. Entity beans will be discovered as simple beans.");
+// }
+// if (!deployment.getServices().contains(ResourceInjectionServices.class))
+// {
+// log.info("@Resource injection not available.");
+// }
+ if (applicationBeanStore == null)
+ {
+ throw new IllegalStateException("No application context BeanStore set");
+ }
+
+ this.deployment = deployment;
+ ServiceRegistry implementationServices = getImplementationServices(deployment.getServices().get(ResourceLoader.class));
+
+ deployment.getServices().addAll(implementationServices.entrySet());
+
+ ServiceRegistry deploymentServices = new SimpleServiceRegistry();
+ deploymentServices.add(ClassTransformer.class, implementationServices.get(ClassTransformer.class));
+ deploymentServices.add(MetaAnnotationStore.class, implementationServices.get(MetaAnnotationStore.class));
+ deploymentServices.add(TypeStore.class, implementationServices.get(TypeStore.class));
+
+ this.environment = environment;
+ this.deploymentManager = BeanManagerImpl.newRootManager("deployment", deploymentServices);
+
+ Container.initialize(deploymentManager, ServiceRegistries.unmodifiableServiceRegistry(deployment.getServices()));
+
+ createContexts();
+ initializeContexts();
+ // Start the application context
+ Container.instance().deploymentServices().get(ContextLifecycle.class).beginApplication(applicationBeanStore);
+
+ this.extensionBeanDeployerEnvironment = new ExtensionBeanDeployerEnvironment(EjbDescriptors.EMPTY, deploymentManager);
+
+ DeploymentVisitor deploymentVisitor = new DeploymentVisitor(deploymentManager, environment, deployment, extensionBeanDeployerEnvironment);
+ beanDeployments = deploymentVisitor.visit();
+
+ return this;
+ }
+ }
+
+ private ServiceRegistry getImplementationServices(ResourceLoader resourceLoader)
+ {
+ ServiceRegistry services = new SimpleServiceRegistry();
+ services.add(EJBApiAbstraction.class, new EJBApiAbstraction(resourceLoader));
+ services.add(JsfApiAbstraction.class, new JsfApiAbstraction(resourceLoader));
+ services.add(PersistenceApiAbstraction.class, new PersistenceApiAbstraction(resourceLoader));
+ services.add(WSApiAbstraction.class, new WSApiAbstraction(resourceLoader));
+ services.add(ServletApiAbstraction.class, new ServletApiAbstraction(resourceLoader));
+ // Temporary workaround to provide context for building annotated class
+ // TODO expose AnnotatedClass on SPI and allow container to provide impl of this via ResourceLoader
+ services.add(Validator.class, new Validator());
+ services.add(TypeStore.class, new TypeStore());
+ services.add(ClassTransformer.class, new ClassTransformer(services.get(TypeStore.class)));
+ services.add(MetaAnnotationStore.class, new MetaAnnotationStore(services.get(ClassTransformer.class)));
+ services.add(ContextualStore.class, new ContextualStore());
+ return services;
+ }
+
+ public BeanManagerImpl getManager(BeanDeploymentArchive beanDeploymentArchive)
+ {
+ if (beanDeployments.containsKey(beanDeploymentArchive))
+ {
+ return beanDeployments.get(beanDeploymentArchive).getBeanManager();
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ public Bootstrap startInitialization()
+ {
+ synchronized (this)
+ {
+ if (deploymentManager == null)
+ {
+ throw new IllegalStateException("Manager has not been initialized");
+ }
+
+ ExtensionBeanDeployer extensionBeanDeployer = new ExtensionBeanDeployer(deploymentManager, extensionBeanDeployerEnvironment);
+ extensionBeanDeployer.addExtensions(ServiceLoader.load(Extension.class));
+ extensionBeanDeployer.createBeans().deploy();
+
+ // Add the Deployment BeanManager Bean to the Deployment BeanManager
+ deploymentManager.addBean(new ManagerBean(deploymentManager));
+
+ fireBeforeBeanDiscoveryEvent();
+ }
+ return this;
+ }
+
+ public Bootstrap deployBeans()
+ {
+ synchronized (this)
+ {
+ for (Entry<BeanDeploymentArchive, BeanDeployment> entry : beanDeployments.entrySet())
+ {
+ entry.getValue().deployBeans(environment);
+ }
+ fireAfterBeanDiscoveryEvent();
+ log.debug("Web Beans initialized. Validating beans.");
+ }
+ return this;
+ }
+
+ public Bootstrap validateBeans()
+ {
+ synchronized (this)
+ {
+ for (Entry<BeanDeploymentArchive, BeanDeployment> entry : beanDeployments.entrySet())
+ {
+ deployment.getServices().get(Validator.class).validateDeployment(entry.getValue().getBeanManager(), entry.getValue().getBeanDeployer().getEnvironment());
+ }
+ fireAfterDeploymentValidationEvent();
+ }
+ return this;
+ }
+
+ public Bootstrap endInitialization()
+ {
+ synchronized (this)
+ {
+ // Register the managers so external requests can handle them
+ Container.instance().putBeanDeployments(beanDeployments);
+ Container.instance().setInitialized(true);
+ }
+ return this;
+ }
+
+ private void fireBeforeBeanDiscoveryEvent()
+ {
+ BeforeBeanDiscovery event = new BeforeBeanDiscoveryImpl(deploymentManager, deployment, beanDeployments, extensionBeanDeployerEnvironment);
+ try
+ {
+ deploymentManager.fireEvent(event);
+ }
+ catch (Exception e)
+ {
+ throw new DefinitionException(e);
+ }
+ }
+
+ private void fireBeforeShutdownEvent()
+ {
+ BeforeShutdown event = new BeforeShutdownImpl();
+ try
+ {
+ deploymentManager.fireEvent(event);
+ }
+ catch (Exception e)
+ {
+ throw new DeploymentException(e);
+ }
+ }
+
+ private void fireAfterBeanDiscoveryEvent()
+ {
+ AfterBeanDiscoveryImpl event = new AfterBeanDiscoveryImpl(deploymentManager, deployment, beanDeployments, extensionBeanDeployerEnvironment);
+ try
+ {
+ deploymentManager.fireEvent(event);
+ }
+ catch (Exception e)
+ {
+ event.addDefinitionError(e);
+ }
+
+ if (event.getDefinitionErrors().size() > 0)
+ {
+ // FIXME communicate all the captured definition errors in this exception
+ throw new DefinitionException(event.getDefinitionErrors().get(0));
+ }
+ }
+
+ private void fireAfterDeploymentValidationEvent()
+ {
+ AfterDeploymentValidationImpl event = new AfterDeploymentValidationImpl();
+
+ try
+ {
+ deploymentManager.fireEvent(event);
+ }
+ catch (Exception e)
+ {
+ event.addDeploymentProblem(e);
+ }
+
+ if (event.getDeploymentProblems().size() > 0)
+ {
+ // FIXME communicate all the captured deployment problems in this exception
+ throw new DeploymentException(event.getDeploymentProblems().get(0));
+ }
+ }
+
+ /**
+ * Gets version information
+ *
+ * @return The implementation version from the Bootstrap class package.
+ */
+ public static String getVersion()
+ {
+ Package pkg = WebBeansBootstrap.class.getPackage();
+ return pkg != null ? pkg.getImplementationVersion() : null;
+ }
+
+ protected void initializeContexts()
+ {
+ Lifecycle lifecycle = deployment.getServices().get(ContextLifecycle.class);
+ deploymentManager.addContext(lifecycle.getDependentContext());
+ deploymentManager.addContext(lifecycle.getRequestContext());
+ deploymentManager.addContext(lifecycle.getConversationContext());
+ deploymentManager.addContext(lifecycle.getSessionContext());
+ deploymentManager.addContext(lifecycle.getApplicationContext());
+ deploymentManager.addContext(lifecycle.getSingletonContext());
+ }
+
+ protected void createContexts()
+ {
+ AbstractApplicationContext applicationContext = new ApplicationContext();
+ AbstractApplicationContext singletonContext = new SingletonContext();
+ SessionContext sessionContext = new SessionContext();
+ ConversationContext conversationContext = new ConversationContext();
+ RequestContext requestContext = new RequestContext();
+ DependentContext dependentContext = new DependentContext();
+
+ deployment.getServices().add(ContextLifecycle.class, new ContextLifecycle(applicationContext, singletonContext, sessionContext, conversationContext, requestContext, dependentContext));
+ }
+
+ public void shutdown()
+ {
+ try
+ {
+ fireBeforeShutdownEvent();
+ }
+ finally
+ {
+ Container.instance().deploymentServices().get(ContextLifecycle.class).endApplication();
+ }
+ }
+
+ protected static void verifyServices(ServiceRegistry services, Set<Class<? extends Service>> requiredServices)
+ {
+ for (Class<? extends Service> serviceType : requiredServices)
+ {
+ if (!services.contains(serviceType))
+ {
+ throw new IllegalStateException("Required service " + serviceType.getName() + " has not been specified");
+ }
+ }
+ }
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/bootstrap/events (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/events)
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/bootstrap/events/AbstractBeanDiscoveryEvent.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/events/AbstractBeanDiscoveryEvent.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/bootstrap/events/AbstractBeanDiscoveryEvent.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,16 +14,16 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.bootstrap.events;
+package org.jboss.weld.bootstrap.events;
import java.util.Map;
-import org.jboss.webbeans.BeanManagerImpl;
-import org.jboss.webbeans.bootstrap.BeanDeployment;
-import org.jboss.webbeans.bootstrap.ExtensionBeanDeployerEnvironment;
-import org.jboss.webbeans.bootstrap.spi.BeanDeploymentArchive;
-import org.jboss.webbeans.bootstrap.spi.Deployment;
-import org.jboss.webbeans.metadata.TypeStore;
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.bootstrap.BeanDeployment;
+import org.jboss.weld.bootstrap.ExtensionBeanDeployerEnvironment;
+import org.jboss.weld.bootstrap.spi.BeanDeploymentArchive;
+import org.jboss.weld.bootstrap.spi.Deployment;
+import org.jboss.weld.metadata.TypeStore;
/**
* @author pmuir
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/bootstrap/events/AbstractContainerEvent.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/events/AbstractContainerEvent.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/bootstrap/events/AbstractContainerEvent.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.bootstrap.events;
+package org.jboss.weld.bootstrap.events;
import java.util.ArrayList;
import java.util.List;
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/bootstrap/events/AfterBeanDiscoveryImpl.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/events/AfterBeanDiscoveryImpl.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/bootstrap/events/AfterBeanDiscoveryImpl.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.bootstrap.events;
+package org.jboss.weld.bootstrap.events;
import java.util.Collections;
import java.util.List;
@@ -25,11 +25,11 @@
import javax.enterprise.inject.spi.Bean;
import javax.enterprise.inject.spi.ObserverMethod;
-import org.jboss.webbeans.BeanManagerImpl;
-import org.jboss.webbeans.bootstrap.BeanDeployment;
-import org.jboss.webbeans.bootstrap.ExtensionBeanDeployerEnvironment;
-import org.jboss.webbeans.bootstrap.spi.BeanDeploymentArchive;
-import org.jboss.webbeans.bootstrap.spi.Deployment;
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.bootstrap.BeanDeployment;
+import org.jboss.weld.bootstrap.ExtensionBeanDeployerEnvironment;
+import org.jboss.weld.bootstrap.spi.BeanDeploymentArchive;
+import org.jboss.weld.bootstrap.spi.Deployment;
public class AfterBeanDiscoveryImpl extends AbstractBeanDiscoveryEvent implements AfterBeanDiscovery
{
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/bootstrap/events/AfterDeploymentValidationImpl.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/events/AfterDeploymentValidationImpl.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/bootstrap/events/AfterDeploymentValidationImpl.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.bootstrap.events;
+package org.jboss.weld.bootstrap.events;
import java.util.Collections;
import java.util.List;
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/bootstrap/events/BeforeBeanDiscoveryImpl.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/events/BeforeBeanDiscoveryImpl.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/bootstrap/events/BeforeBeanDiscoveryImpl.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.bootstrap.events;
+package org.jboss.weld.bootstrap.events;
import java.lang.annotation.Annotation;
import java.util.Map;
@@ -22,15 +22,15 @@
import javax.enterprise.inject.spi.AnnotatedType;
import javax.enterprise.inject.spi.BeforeBeanDiscovery;
-import org.jboss.webbeans.BeanManagerImpl;
-import org.jboss.webbeans.bootstrap.BeanDeployment;
-import org.jboss.webbeans.bootstrap.ExtensionBeanDeployerEnvironment;
-import org.jboss.webbeans.bootstrap.spi.BeanDeploymentArchive;
-import org.jboss.webbeans.bootstrap.spi.Deployment;
-import org.jboss.webbeans.literal.BindingTypeLiteral;
-import org.jboss.webbeans.literal.InterceptorBindingTypeLiteral;
-import org.jboss.webbeans.literal.NormalScopeLiteral;
-import org.jboss.webbeans.literal.ScopeLiteral;
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.bootstrap.BeanDeployment;
+import org.jboss.weld.bootstrap.ExtensionBeanDeployerEnvironment;
+import org.jboss.weld.bootstrap.spi.BeanDeploymentArchive;
+import org.jboss.weld.bootstrap.spi.Deployment;
+import org.jboss.weld.literal.BindingTypeLiteral;
+import org.jboss.weld.literal.InterceptorBindingTypeLiteral;
+import org.jboss.weld.literal.NormalScopeLiteral;
+import org.jboss.weld.literal.ScopeLiteral;
public class BeforeBeanDiscoveryImpl extends AbstractBeanDiscoveryEvent implements BeforeBeanDiscovery
{
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/bootstrap/events/BeforeShutdownImpl.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/events/BeforeShutdownImpl.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/bootstrap/events/BeforeShutdownImpl.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.bootstrap.events;
+package org.jboss.weld.bootstrap.events;
import javax.enterprise.inject.spi.BeforeShutdown;
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/bootstrap/events/ProcessAnnotatedTypeImpl.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/events/ProcessAnnotatedTypeImpl.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/bootstrap/events/ProcessAnnotatedTypeImpl.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.bootstrap.events;
+package org.jboss.weld.bootstrap.events;
import javax.enterprise.inject.spi.AnnotatedType;
import javax.enterprise.inject.spi.ProcessAnnotatedType;
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/bootstrap/events/ProcessObserverMethodImpl.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/events/ProcessObserverMethodImpl.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/bootstrap/events/ProcessObserverMethodImpl.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.jboss.webbeans.bootstrap.events;
+package org.jboss.weld.bootstrap.events;
import java.util.Collections;
import java.util.List;
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/bootstrap/events/ProcessProducerImpl.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/bootstrap/events/ProcessProducerImpl.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/bootstrap/events/ProcessProducerImpl.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -1,4 +1,4 @@
-package org.jboss.webbeans.bootstrap.events;
+package org.jboss.weld.bootstrap.events;
import java.util.List;
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/context/AbstractApplicationContext.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/context/AbstractApplicationContext.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/context/AbstractApplicationContext.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/context/AbstractApplicationContext.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,111 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
+ *
+ * Use is subject to license terms.
+ *
+ * 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.context;
+
+import java.lang.annotation.Annotation;
+import java.util.concurrent.atomic.AtomicBoolean;
+
+import org.jboss.weld.context.api.BeanStore;
+
+/**
+ * The Application context
+ *
+ * @author Nicklas Karlsson
+ *
+ * @see org.jboss.weld.context.AbstractApplicationContext
+ */
+public abstract class AbstractApplicationContext extends AbstractMapContext
+{
+
+ // The beans
+ private BeanStore beanStore;
+ // Is the context active?
+ private final AtomicBoolean active;
+
+ /**
+ * Constructor
+ */
+ public AbstractApplicationContext(Class<? extends Annotation> scope)
+ {
+ super(scope);
+ this.active = new AtomicBoolean(false);
+ }
+
+ /**
+ * Gets the bean store
+ *
+ * @return The bean store
+ */
+ @Override
+ public BeanStore getBeanStore()
+ {
+ return this.beanStore;
+ }
+
+ /**
+ * Sets the bean store
+ *
+ * @param applicationBeanStore The bean store
+ */
+ public void setBeanStore(BeanStore applicationBeanStore)
+ {
+ this.beanStore = applicationBeanStore;
+ }
+
+ /**
+ * Indicates if the context is active
+ *
+ * @return True if active, false otherwise
+ */
+ @Override
+ public boolean isActive()
+ {
+ return active.get();
+ }
+
+ /**
+ * Sets the active state of the context
+ *
+ * @param active The new state
+ */
+ @Override
+ public void setActive(boolean active)
+ {
+ this.active.set(active);
+ }
+
+ @Override
+ public String toString()
+ {
+ String active = isActive() ? "Active " : "Inactive ";
+ String beanStoreInfo = getBeanStore() == null ? "" : getBeanStore().toString();
+ return active + "application context " + beanStoreInfo;
+ }
+
+ @Override
+ protected boolean isCreationLockRequired()
+ {
+ return true;
+ }
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/context/AbstractContext.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/context/AbstractContext.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/context/AbstractContext.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/context/AbstractContext.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,94 @@
+/*
+ * 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.context;
+
+import java.lang.annotation.Annotation;
+
+import javax.enterprise.context.spi.Context;
+
+/**
+ * Common Context operation
+ *
+ * @author Nicklas Karlsson
+ * @author Pete Muir
+ *
+ */
+public abstract class AbstractContext implements Context
+{
+ // The scope type
+ private Class<? extends Annotation> scopeType;
+ // The active state of the context
+ private ThreadLocal<Boolean> active;
+
+ /**
+ * Constructor
+ *
+ * @param scopeType The scope type
+ */
+ public AbstractContext(Class<? extends Annotation> scopeType)
+ {
+ this.scopeType = scopeType;
+ this.active = new ThreadLocal<Boolean>()
+ {
+ @Override
+ protected Boolean initialValue()
+ {
+ return Boolean.FALSE;
+ }
+ };
+ }
+
+ /**
+ * Get the scope the context is for
+ *
+ * @return The scope type
+ *
+ * @see javax.enterprise.context.spi.Context#getScope()
+ */
+ public Class<? extends Annotation> getScope()
+ {
+ return scopeType;
+ }
+
+ /**
+ * Return true if the context is active
+ *
+ * @return The active state
+ *
+ * @see javax.enterprise.context.spi.Context#isActive()
+ */
+ public boolean isActive()
+ {
+ return active.get().booleanValue();
+ }
+
+ /**
+ * Set the context active, internal API for WBRI
+ *
+ * @param active The new state
+ */
+ public void setActive(boolean active)
+ {
+ this.active.set(Boolean.valueOf(active));
+ }
+
+ public void cleanup()
+ {
+ this.active.remove();
+ }
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/context/AbstractMapContext.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/context/AbstractMapContext.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/context/AbstractMapContext.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/context/AbstractMapContext.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,194 @@
+/*
+ * 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.context;
+
+import java.lang.annotation.Annotation;
+import java.util.concurrent.locks.ReentrantLock;
+
+import javax.enterprise.context.ContextNotActiveException;
+import javax.enterprise.context.spi.Contextual;
+import javax.enterprise.context.spi.CreationalContext;
+
+import org.jboss.weld.Container;
+import org.jboss.weld.ContextualStore;
+import org.jboss.weld.context.api.BeanStore;
+import org.jboss.weld.context.api.ContextualInstance;
+import org.jboss.weld.log.LogProvider;
+import org.jboss.weld.log.Logging;
+
+/**
+ * Base for the Context implementations. Delegates calls to the abstract
+ * getBeanStorage and getActive to allow for different implementations (storage
+ * types and ThreadLocal vs. shared)
+ *
+ * @author Nicklas Karlsson
+ * @author Pete Muir
+ *
+ * @see org.jboss.webbeans.contexts.SharedContext
+ * @see org.jboss.webbeans.context.BasicContext
+ */
+public abstract class AbstractMapContext extends AbstractContext
+{
+ private static LogProvider log = Logging.getLogProvider(AbstractMapContext.class);
+
+ private static ReentrantLock creationLock = new ReentrantLock();
+
+ /**
+ * Constructor
+ *
+ * @param scopeType The scope type
+ */
+ public AbstractMapContext(Class<? extends Annotation> scopeType)
+ {
+ super(scopeType);
+ }
+
+ /**
+ * Get the bean if it exists in the contexts.
+ *
+ * @param create If true, a new instance of the bean will be created if none
+ * exists
+ * @return An instance of the bean
+ * @throws ContextNotActiveException if the context is not active
+ *
+ * @see javax.enterprise.context.spi.Context#get(BaseBean, boolean)
+ */
+ public <T> T get(Contextual<T> contextual, CreationalContext<T> creationalContext)
+ {
+ if (!isActive())
+ {
+ throw new ContextNotActiveException();
+ }
+ if (getBeanStore() == null)
+ {
+ throw new IllegalStateException("No bean store available for " + toString());
+ }
+ if (contextual == null)
+ {
+ throw new IllegalArgumentException("Must provide a contextual to get");
+ }
+ String id = getId(contextual);
+ ContextualInstance<T> beanInstance = getBeanStore().get(id);
+ if (beanInstance != null)
+ {
+ return beanInstance.getInstance();
+ }
+ else if (creationalContext != null)
+ {
+ boolean needCreationLock = isCreationLockRequired();
+ try
+ {
+ if (needCreationLock)
+ {
+ creationLock.lock();
+ beanInstance = getBeanStore().get(id);
+ if (beanInstance != null)
+ {
+ return beanInstance.getInstance();
+ }
+ }
+ T instance = contextual.create(creationalContext);
+ if (instance != null)
+ {
+ beanInstance = new SerializableContextualInstance<Contextual<T>, T>(contextual, instance, creationalContext);
+ getBeanStore().put(id, beanInstance);
+ }
+ return instance;
+ }
+ finally
+ {
+ if (needCreationLock)
+ {
+ creationLock.unlock();
+ }
+ }
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ public <T> T get(Contextual<T> contextual)
+ {
+ return get(contextual, null);
+ }
+
+ private <T> void destroy(String id)
+ {
+ log.trace("Destroying " + id);
+ if (getBeanStore() == null)
+ {
+ throw new IllegalStateException("No bean store available for " + toString());
+ }
+ ContextualInstance<T> beanInstance = getBeanStore().get(id);
+ beanInstance.getContextual().destroy(beanInstance.getInstance(), beanInstance.getCreationalContext());
+ }
+
+
+ /**
+ * Destroys the context
+ */
+ public void destroy()
+ {
+ log.trace("Destroying context");
+ if (getBeanStore() == null)
+ {
+ throw new IllegalStateException("No bean store available for " + toString());
+ }
+ for (String id : getBeanStore().getContextualIds())
+ {
+ destroy(id);
+ }
+ getBeanStore().clear();
+ }
+
+ /**
+ * A method that returns the actual bean store implementation
+ *
+ * @return The bean store
+ */
+ protected abstract BeanStore getBeanStore();
+
+ /**
+ * If Context need to inhibit concurrent instance creation then true, else false.
+ * @return need lock
+ */
+ protected abstract boolean isCreationLockRequired();
+
+
+ @Override
+ public void cleanup()
+ {
+ super.cleanup();
+ if (getBeanStore() != null)
+ {
+ getBeanStore().clear();
+ }
+ }
+
+ protected static <T> Contextual<T> getContextual(String id)
+ {
+ return Container.instance().deploymentServices().get(ContextualStore.class).<Contextual<T>, T>getContextual(id);
+ }
+
+ protected static String getId(Contextual<?> contextual)
+ {
+ return Container.instance().deploymentServices().get(ContextualStore.class).putIfAbsent(contextual);
+ }
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/context/AbstractThreadLocalMapContext.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/context/AbstractThreadLocalMapContext.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/context/AbstractThreadLocalMapContext.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/context/AbstractThreadLocalMapContext.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,72 @@
+/*
+ * 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.context;
+
+import java.lang.annotation.Annotation;
+
+import org.jboss.weld.context.api.BeanStore;
+
+/**
+ * Abstract base class for representing contexts with thread local bean storage
+ *
+ * @author Pete Muir
+ */
+public abstract class AbstractThreadLocalMapContext extends AbstractMapContext
+{
+ private final ThreadLocal<BeanStore> beanStore;
+
+ public AbstractThreadLocalMapContext(Class<? extends Annotation> scopeType)
+ {
+ super(scopeType);
+ this.beanStore = new ThreadLocal<BeanStore>();
+ }
+
+ /**
+ * Gets the bean store
+ *
+ * @returns The bean store
+ */
+ @Override
+ public BeanStore getBeanStore()
+ {
+ return beanStore.get();
+ }
+
+ /**
+ * Sets the bean store
+ *
+ * @param beanStore The bean store
+ */
+ public void setBeanStore(BeanStore beanStore)
+ {
+ this.beanStore.set(beanStore);
+ }
+
+ @Override
+ protected boolean isCreationLockRequired()
+ {
+ return true;
+ }
+
+ @Override
+ public void cleanup()
+ {
+ super.cleanup();
+ beanStore.remove();
+ }
+
+}
\ No newline at end of file
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/context/ApplicationContext.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/context/ApplicationContext.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/context/ApplicationContext.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/context/ApplicationContext.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,13 @@
+package org.jboss.weld.context;
+
+import javax.enterprise.context.ApplicationScoped;
+
+public class ApplicationContext extends AbstractApplicationContext
+{
+
+ public ApplicationContext()
+ {
+ super(ApplicationScoped.class);
+ }
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/context/ContextLifecycle.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/context/ContextLifecycle.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/context/ContextLifecycle.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/context/ContextLifecycle.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,178 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
+ *
+ * Use is subject to license terms.
+ *
+ * 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.context;
+
+import org.jboss.weld.Container;
+import org.jboss.weld.bootstrap.api.Lifecycle;
+import org.jboss.weld.bootstrap.api.Service;
+import org.jboss.weld.context.api.BeanStore;
+import org.jboss.weld.context.api.helpers.ConcurrentHashMapBeanStore;
+import org.jboss.weld.log.LogProvider;
+import org.jboss.weld.log.Logging;
+
+/**
+ * An implementation of the Web Beans lifecycle that supports restoring
+ * and destroying all the built in contexts
+ *
+ * @author Pete Muir
+ *
+ */
+public class ContextLifecycle implements Lifecycle, Service
+{
+
+ public static final LogProvider log = Logging.getLogProvider(ContextLifecycle.class);
+
+ private final AbstractApplicationContext applicationContext;
+ private final AbstractApplicationContext singletonContext;
+ private final SessionContext sessionContext;
+ private final ConversationContext conversationContext;
+ private final RequestContext requestContext;
+ private final DependentContext dependentContext;
+
+ public ContextLifecycle(AbstractApplicationContext applicationContext, AbstractApplicationContext singletonContext, SessionContext sessionContext, ConversationContext conversationContext, RequestContext requestContext, DependentContext dependentContext)
+ {
+ this.applicationContext = applicationContext;
+ this.singletonContext = singletonContext;
+ this.sessionContext = sessionContext;
+ this.conversationContext = conversationContext;
+ this.requestContext = requestContext;
+ this.dependentContext = dependentContext;
+ }
+
+ public void restoreSession(String id, BeanStore sessionBeanStore)
+ {
+ log.trace("Restoring session " + id);
+ sessionContext.setBeanStore(sessionBeanStore);
+ sessionContext.setActive(true);
+ }
+
+ public void endSession(String id, BeanStore sessionBeanStore)
+ {
+ log.trace("Ending session " + id);
+ sessionContext.setActive(true);
+ sessionContext.destroy();
+ sessionContext.setBeanStore(null);
+ sessionContext.setActive(false);
+ }
+
+ public void beginRequest(String id, BeanStore requestBeanStore)
+ {
+ log.trace("Starting request " + id);
+ requestContext.setBeanStore(requestBeanStore);
+ requestContext.setActive(true);
+ dependentContext.setActive(true);
+ }
+
+ public void endRequest(String id, BeanStore requestBeanStore)
+ {
+ log.trace("Ending request " + id);
+ requestContext.setBeanStore(requestBeanStore);
+ dependentContext.setActive(false);
+ requestContext.destroy();
+ requestContext.setActive(false);
+ requestContext.setBeanStore(null);
+ }
+
+ public boolean isRequestActive()
+ {
+ return singletonContext.isActive() && applicationContext.isActive() && requestContext.isActive() && dependentContext.isActive();
+ }
+
+ public boolean isApplicationActive()
+ {
+ return singletonContext.isActive() && applicationContext.isActive() && dependentContext.isActive();
+ }
+
+ public boolean isConversationActive()
+ {
+ return singletonContext.isActive() && applicationContext.isActive() && sessionContext.isActive() && conversationContext.isActive() && dependentContext.isActive();
+ }
+
+ public boolean isSessionActive()
+ {
+ return singletonContext.isActive() && applicationContext.isActive() && sessionContext.isActive() && dependentContext.isActive();
+ }
+
+
+ public void beginApplication(BeanStore applicationBeanStore)
+ {
+ log.trace("Starting application");
+ applicationContext.setBeanStore(applicationBeanStore);
+ applicationContext.setActive(true);
+ singletonContext.setBeanStore(new ConcurrentHashMapBeanStore());
+ singletonContext.setActive(true);
+ }
+
+ public void endApplication()
+ {
+ log.trace("Ending application");
+ applicationContext.destroy();
+ applicationContext.setActive(false);
+ applicationContext.setBeanStore(null);
+ singletonContext.destroy();
+ singletonContext.setActive(false);
+ singletonContext.setBeanStore(null);
+ Container.instance().cleanup();
+ }
+
+ public void cleanup()
+ {
+ dependentContext.cleanup();
+ requestContext.cleanup();
+ conversationContext.cleanup();
+ sessionContext.cleanup();
+ singletonContext.cleanup();
+ applicationContext.cleanup();
+ }
+
+ public AbstractApplicationContext getApplicationContext()
+ {
+ return applicationContext;
+ }
+
+ public AbstractApplicationContext getSingletonContext()
+ {
+ return singletonContext;
+ }
+
+ public SessionContext getSessionContext()
+ {
+ return sessionContext;
+ }
+
+ public ConversationContext getConversationContext()
+ {
+ return conversationContext;
+ }
+
+ public RequestContext getRequestContext()
+ {
+ return requestContext;
+ }
+
+ public DependentContext getDependentContext()
+ {
+ return dependentContext;
+ }
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/context/ConversationContext.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/context/ConversationContext.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/context/ConversationContext.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/context/ConversationContext.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,56 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
+ *
+ * Use is subject to license terms.
+ *
+ * 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.context;
+
+import javax.enterprise.context.ConversationScoped;
+
+import org.jboss.weld.log.LogProvider;
+import org.jboss.weld.log.Logging;
+
+/**
+ * The conversation context
+ *
+ * @author Nicklas Karlsson
+ */
+public class ConversationContext extends AbstractThreadLocalMapContext
+{
+ private static LogProvider log = Logging.getLogProvider(ConversationContext.class);
+
+ /**
+ * Constructor
+ */
+ public ConversationContext()
+ {
+ super(ConversationScoped.class);
+ log.trace("Created conversation context");
+ }
+
+ @Override
+ public String toString()
+ {
+ String active = isActive() ? "Active " : "Inactive ";
+ String beanStoreInfo = getBeanStore() == null ? "" : getBeanStore().toString();
+ return active + "conversation context " + beanStoreInfo;
+ }
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/context/CreationalContextImpl.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/context/CreationalContextImpl.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/context/CreationalContextImpl.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/context/CreationalContextImpl.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,83 @@
+/*
+ * 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.context;
+
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.enterprise.context.spi.Contextual;
+import javax.enterprise.context.spi.CreationalContext;
+
+public class CreationalContextImpl<T> implements CreationalContext<T>, WBCreationalContext<T>, Serializable
+{
+
+ private static final long serialVersionUID = 7375854583908262422L;
+
+ // Only needed for creation, by the time it's serialized we don't need it
+ private final transient Map<Contextual<?>, Object> incompleteInstances;
+ private final transient Contextual<T> contextual;
+
+ private final DependentInstancesStore dependentInstancesStore;
+
+ private final DependentInstancesStore parentDependentInstancesStore;
+
+ public CreationalContextImpl(Contextual<T> contextual)
+ {
+ this(contextual, new HashMap<Contextual<?>, Object>(), new DependentInstancesStore());
+ }
+
+ private CreationalContextImpl(Contextual<T> contextual, Map<Contextual<?>, Object> incompleteInstances, DependentInstancesStore parentDependentInstancesStore)
+ {
+ this.incompleteInstances = incompleteInstances;
+ this.contextual = contextual;
+ this.dependentInstancesStore = new DependentInstancesStore();
+ this.parentDependentInstancesStore = parentDependentInstancesStore;
+ }
+
+ public void push(T incompleteInstance)
+ {
+ incompleteInstances.put(contextual, incompleteInstance);
+ }
+
+ public <S> WBCreationalContext<S> getCreationalContext(Contextual<S> Contextual)
+ {
+ return new CreationalContextImpl<S>(Contextual, new HashMap<Contextual<?>, Object>(incompleteInstances), dependentInstancesStore);
+ }
+
+ public <S> S getIncompleteInstance(Contextual<S> bean)
+ {
+ return (S) incompleteInstances.get(bean);
+ }
+
+ public boolean containsIncompleteInstance(Contextual<?> bean)
+ {
+ return incompleteInstances.containsKey(bean);
+ }
+
+ public DependentInstancesStore getParentDependentInstancesStore()
+ {
+ return parentDependentInstancesStore;
+ }
+
+ public void release()
+ {
+ dependentInstancesStore.destroyDependentInstances();
+ incompleteInstances.clear();
+ }
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/context/DependentContext.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/context/DependentContext.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/context/DependentContext.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/context/DependentContext.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,94 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
+ *
+ * Use is subject to license terms.
+ *
+ * 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.context;
+
+import javax.enterprise.context.ContextNotActiveException;
+import javax.enterprise.context.Dependent;
+import javax.enterprise.context.spi.Contextual;
+import javax.enterprise.context.spi.CreationalContext;
+
+import org.jboss.weld.context.api.ContextualInstance;
+
+/**
+ * The dependent context
+ *
+ * @author Nicklas Karlsson
+ */
+public class DependentContext extends AbstractContext
+{
+
+ /**
+ * Constructor
+ */
+ public DependentContext()
+ {
+ super(Dependent.class);
+ }
+
+ /**
+ * Overridden method always creating a new instance
+ *
+ * @param contextual The bean to create
+ * @param create Should a new one be created
+ */
+ public <T> T get(Contextual<T> contextual, CreationalContext<T> creationalContext)
+ {
+ if (!isActive())
+ {
+ throw new ContextNotActiveException();
+ }
+ if (creationalContext != null)
+ {
+ T instance = contextual.create(creationalContext);
+ if (creationalContext instanceof WBCreationalContext<?>)
+ {
+ WBCreationalContext<T> creationalContextImpl = (WBCreationalContext<T>) creationalContext;
+ ContextualInstance<T> beanInstance = new SerializableContextualInstance<Contextual<T>, T>(contextual, instance, creationalContext);
+ creationalContextImpl.getParentDependentInstancesStore().addDependentInstance(beanInstance);
+ }
+ return instance;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ public <T> T get(Contextual<T> contextual)
+ {
+ return get(contextual, null);
+ }
+
+ @Override
+ public String toString()
+ {
+ return "dependent context";
+ }
+
+ @Override
+ public boolean isActive()
+ {
+ return true;
+ }
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/context/DependentInstancesStore.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/context/DependentInstancesStore.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/context/DependentInstancesStore.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/context/DependentInstancesStore.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,87 @@
+/*
+ * 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.context;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.jboss.weld.context.api.ContextualInstance;
+import org.jboss.weld.log.Log;
+import org.jboss.weld.log.Logging;
+
+/**
+ * A store for dependent instances created under a given key
+ *
+ * @author Nicklas Karlsson
+ */
+public class DependentInstancesStore implements Serializable
+{
+ private static final long serialVersionUID = -2349574791148336833L;
+
+ private static Log log = Logging.getLog(DependentInstancesStore.class);
+
+ // A object -> List of contextual instances mapping
+ private List<ContextualInstance<?>> dependentInstances;
+
+ /**
+ * Creates a new DependentInstancesStore
+ */
+ public DependentInstancesStore()
+ {
+ dependentInstances = Collections.synchronizedList(new ArrayList<ContextualInstance<?>>());
+ }
+
+ /**
+ * Adds a dependent instance under a given key
+ *
+ * @param key The key to store the instance under
+ * @param contextualInstance The instance to store
+ */
+ public <T> void addDependentInstance(ContextualInstance<T> contextualInstance)
+ {
+ log.trace("Registered dependent instance #0", contextualInstance);
+ dependentInstances.add(contextualInstance);
+ }
+
+ /**
+ * Destroys all dependent objects
+ *
+ * @param key The key to remove
+ */
+ public void destroyDependentInstances()
+ {
+ log.trace("Destroying dependent instances");
+ for (ContextualInstance<?> injectedInstance : dependentInstances)
+ {
+ destroy(injectedInstance);
+ }
+ }
+
+ private static <T> void destroy(ContextualInstance<T> beanInstance)
+ {
+ beanInstance.getContextual().destroy(beanInstance.getInstance(), beanInstance.getCreationalContext());
+ }
+
+ @Override
+ public String toString()
+ {
+ return "Dependent Instances: " + dependentInstances;
+ }
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/context/ForwardingContextual.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/context/ForwardingContextual.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/context/ForwardingContextual.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/context/ForwardingContextual.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,40 @@
+package org.jboss.weld.context;
+
+import javax.enterprise.context.spi.Contextual;
+import javax.enterprise.context.spi.CreationalContext;
+
+public abstract class ForwardingContextual<T> implements Contextual<T>
+{
+
+ protected abstract Contextual<T> delegate();
+
+ public T create(CreationalContext<T> creationalContext)
+ {
+ return delegate().create(creationalContext);
+ }
+
+ public void destroy(T instance, CreationalContext<T> creationalContext)
+ {
+ delegate().destroy(instance, creationalContext);
+ }
+
+
+ @Override
+ public boolean equals(Object obj)
+ {
+ return this == obj || delegate().equals(obj);
+ }
+
+ @Override
+ public int hashCode()
+ {
+ return delegate().hashCode();
+ }
+
+ @Override
+ public String toString()
+ {
+ return delegate().toString();
+ }
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/context/ForwardingWBCreationalContext.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/context/ForwardingWBCreationalContext.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/context/ForwardingWBCreationalContext.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/context/ForwardingWBCreationalContext.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,79 @@
+/*
+ * 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.context;
+
+import javax.enterprise.context.spi.Contextual;
+
+
+/**
+ * @author pmuir
+ *
+ */
+public abstract class ForwardingWBCreationalContext<T> implements WBCreationalContext<T>
+{
+
+ protected abstract WBCreationalContext<T> delegate();
+
+ public void push(T incompleteInstance)
+ {
+ delegate().push(incompleteInstance);
+ }
+
+ public void release()
+ {
+ delegate().release();
+ }
+
+ public boolean containsIncompleteInstance(Contextual<?> bean)
+ {
+ return delegate().containsIncompleteInstance(bean);
+ }
+
+ public <S> WBCreationalContext<S> getCreationalContext(Contextual<S> Contextual)
+ {
+ return delegate().getCreationalContext(Contextual);
+ }
+
+ public <S> S getIncompleteInstance(Contextual<S> bean)
+ {
+ return delegate().getIncompleteInstance(bean);
+ }
+
+ public DependentInstancesStore getParentDependentInstancesStore()
+ {
+ return delegate().getParentDependentInstancesStore();
+ }
+
+ @Override
+ public boolean equals(Object obj)
+ {
+ return delegate().equals(obj);
+ }
+
+ @Override
+ public int hashCode()
+ {
+ return delegate().hashCode();
+ }
+
+ @Override
+ public String toString()
+ {
+ return delegate().toString();
+ }
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/context/RequestContext.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/context/RequestContext.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/context/RequestContext.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/context/RequestContext.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,57 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
+ *
+ * Use is subject to license terms.
+ *
+ * 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.context;
+
+import javax.enterprise.context.RequestScoped;
+
+/**
+ * The request context
+ *
+ * @author Nicklas Karlsson
+ */
+public class RequestContext extends AbstractThreadLocalMapContext
+{
+
+ /**
+ * Constructor
+ */
+ public RequestContext()
+ {
+ super(RequestScoped.class);
+ }
+
+ @Override
+ public String toString()
+ {
+ String active = isActive() ? "Active " : "Inactive ";
+ String beanStoreInfo = getBeanStore() == null ? "" : getBeanStore().toString();
+ return active + "request context " + beanStoreInfo;
+ }
+
+ @Override
+ protected boolean isCreationLockRequired()
+ {
+ return false;
+ }
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/context/SerializableContextual.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/context/SerializableContextual.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/context/SerializableContextual.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/context/SerializableContextual.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,94 @@
+package org.jboss.weld.context;
+
+import java.io.Serializable;
+
+import javax.enterprise.context.spi.Contextual;
+
+import org.jboss.weld.Container;
+import org.jboss.weld.ContextualStore;
+
+/**
+ * A serializable version of contextual that knows how to restore the
+ * original bean if necessary
+ *
+ * @author pmuir
+ *
+ */
+public class SerializableContextual<C extends Contextual<I>, I> extends ForwardingContextual<I> implements Serializable
+{
+
+ @Override
+ protected Contextual<I> delegate()
+ {
+ return get();
+ }
+
+ private static final long serialVersionUID = 9161034819867283482L;
+
+ // A directly serializable contextual
+ private C serialiazable;
+
+ // A cached, transient version of the contextual
+ private transient C cached;
+
+ // the id of a non-serializable, passivation capable contextual
+ private String id;
+
+ public SerializableContextual(C contextual)
+ {
+ if (contextual instanceof Serializable)
+ {
+ // the contextual is serializable, so we can just use it
+ this.serialiazable = contextual;
+ }
+ else
+ {
+ // otherwise, generate an id (may not be portable between container instances
+ this.id = Container.instance().deploymentServices().get(ContextualStore.class).putIfAbsent(contextual);
+ }
+ // cache the contextual
+ this.cached = contextual;
+ }
+
+ public C get()
+ {
+ if (cached == null)
+ {
+ loadContextual();
+ }
+ return cached;
+ }
+
+ private void loadContextual()
+ {
+ if (serialiazable != null)
+ {
+ this.cached = serialiazable;
+ }
+ else if (id != null)
+ {
+ this.cached = Container.instance().deploymentServices().get(ContextualStore.class).<C, I>getContextual(id);
+ }
+ }
+
+ @Override
+ public boolean equals(Object obj)
+ {
+ // if the arriving object is also a SerializableContextual, then unwrap it
+ if (obj instanceof SerializableContextual<?, ?>)
+ {
+ return delegate().equals(((SerializableContextual<?, ?>) obj).get());
+ }
+ else
+ {
+ return delegate().equals(obj);
+ }
+ }
+
+ @Override
+ public int hashCode()
+ {
+ return delegate().hashCode();
+ }
+
+}
\ No newline at end of file
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/context/SerializableContextualInstance.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/context/SerializableContextualInstance.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/context/SerializableContextualInstance.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/context/SerializableContextualInstance.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,63 @@
+/*
+ * 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.context;
+
+import java.io.Serializable;
+
+import javax.enterprise.context.spi.Contextual;
+import javax.enterprise.context.spi.CreationalContext;
+
+import org.jboss.weld.context.api.ContextualInstance;
+
+public class SerializableContextualInstance<C extends Contextual<I>, I> implements ContextualInstance<I>, Serializable
+{
+
+ private static final long serialVersionUID = -6366271037267396256L;
+
+ private final SerializableContextual<C, I> contextual;
+ private final I instance;
+ private final CreationalContext<I> creationalContext;
+
+ public SerializableContextualInstance(C contextual, I instance, CreationalContext<I> creationalContext)
+ {
+ this.contextual = new SerializableContextual<C, I>(contextual);
+ this.instance = instance;
+ this.creationalContext = creationalContext;
+ }
+
+ public SerializableContextual<C, I> getContextual()
+ {
+ return contextual;
+ }
+
+ public I getInstance()
+ {
+ return instance;
+ }
+
+ public CreationalContext<I> getCreationalContext()
+ {
+ return creationalContext;
+ }
+
+ @Override
+ public String toString()
+ {
+ return "Bean: " + contextual + "; Instance: " + instance + "; CreationalContext: " + creationalContext;
+ }
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/context/SessionContext.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/context/SessionContext.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/context/SessionContext.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/context/SessionContext.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,69 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
+ *
+ * Use is subject to license terms.
+ *
+ * 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.context;
+
+import javax.enterprise.context.SessionScoped;
+
+import org.jboss.weld.context.api.BeanStore;
+import org.jboss.weld.log.LogProvider;
+import org.jboss.weld.log.Logging;
+
+/**
+ * The session context
+ *
+ * @author Nicklas Karlsson
+ */
+public class SessionContext extends AbstractThreadLocalMapContext
+{
+ private static LogProvider log = Logging.getLogProvider(SessionContext.class);
+
+ /**
+ * Constructor
+ */
+ public SessionContext()
+ {
+ super(SessionScoped.class);
+ log.trace("Created session context");
+ }
+
+ @Override
+ public String toString()
+ {
+ String active = isActive() ? "Active " : "Inactive ";
+ String beanStoreInfo = getBeanStore() == null ? "" : getBeanStore().toString();
+ return active + "session context " + beanStoreInfo;
+ }
+
+ @Override
+ public void setActive(boolean active)
+ {
+ super.setActive(active);
+ }
+
+ @Override
+ public void setBeanStore(BeanStore beanStore)
+ {
+ super.setBeanStore(beanStore);
+ }
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/context/SingletonContext.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/context/SingletonContext.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/context/SingletonContext.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/context/SingletonContext.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,13 @@
+package org.jboss.weld.context;
+
+import javax.inject.Singleton;
+
+public class SingletonContext extends AbstractApplicationContext
+{
+
+ public SingletonContext()
+ {
+ super(Singleton.class);
+ }
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/context/WBCreationalContext.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/context/WBCreationalContext.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/context/WBCreationalContext.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/context/WBCreationalContext.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,42 @@
+/*
+ * 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.context;
+
+import javax.enterprise.context.spi.Contextual;
+import javax.enterprise.context.spi.CreationalContext;
+
+/**
+ * @author pmuir
+ *
+ * @param <T>
+ */
+public interface WBCreationalContext<T> extends CreationalContext<T>
+{
+
+ public abstract void push(T incompleteInstance);
+
+ public abstract <S> WBCreationalContext<S> getCreationalContext(Contextual<S> Contextual);
+
+ public abstract <S> S getIncompleteInstance(Contextual<S> bean);
+
+ public abstract boolean containsIncompleteInstance(Contextual<?> bean);
+
+ public abstract DependentInstancesStore getParentDependentInstancesStore();
+
+ public abstract void release();
+
+}
\ No newline at end of file
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/context/beanstore (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/context/beanstore)
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/context/beanstore/AbstractAttributeBackedBeanStore.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/context/beanstore/AbstractAttributeBackedBeanStore.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/context/beanstore/AbstractAttributeBackedBeanStore.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,19 +14,19 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.context.beanstore;
+package org.jboss.weld.context.beanstore;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Enumeration;
import java.util.List;
-import org.jboss.webbeans.context.api.BeanStore;
-import org.jboss.webbeans.context.api.ContextualInstance;
-import org.jboss.webbeans.log.LogProvider;
-import org.jboss.webbeans.log.Logging;
-import org.jboss.webbeans.util.Names;
-import org.jboss.webbeans.util.collections.EnumerationList;
+import org.jboss.weld.context.api.BeanStore;
+import org.jboss.weld.context.api.ContextualInstance;
+import org.jboss.weld.log.LogProvider;
+import org.jboss.weld.log.Logging;
+import org.jboss.weld.util.Names;
+import org.jboss.weld.util.collections.EnumerationList;
/**
* Provides common BeanStore operations
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/context/beanstore/HashMapBeanStore.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/context/beanstore/HashMapBeanStore.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/context/beanstore/HashMapBeanStore.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.jboss.webbeans.context.beanstore;
+package org.jboss.weld.context.beanstore;
import java.io.Serializable;
import java.util.HashMap;
@@ -23,8 +23,8 @@
import javax.enterprise.context.spi.Contextual;
-import org.jboss.webbeans.context.api.ContextualInstance;
-import org.jboss.webbeans.context.api.helpers.AbstractMapBackedBeanStore;
+import org.jboss.weld.context.api.ContextualInstance;
+import org.jboss.weld.context.api.helpers.AbstractMapBackedBeanStore;
/**
* A BeanStore that uses a HashMap as backing storage
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/context/beanstore/NamingScheme.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/context/beanstore/NamingScheme.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/context/beanstore/NamingScheme.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.context.beanstore;
+package org.jboss.weld.context.beanstore;
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/conversation (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/conversation)
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/conversation/AbstractConversationManager.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/conversation/AbstractConversationManager.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/conversation/AbstractConversationManager.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -20,7 +20,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.conversation;
+package org.jboss.weld.conversation;
import java.util.Collections;
import java.util.HashSet;
@@ -33,12 +33,12 @@
import javax.enterprise.inject.Any;
import javax.inject.Inject;
-import org.jboss.webbeans.Container;
-import org.jboss.webbeans.context.ContextLifecycle;
-import org.jboss.webbeans.context.ConversationContext;
-import org.jboss.webbeans.context.api.BeanStore;
-import org.jboss.webbeans.log.LogProvider;
-import org.jboss.webbeans.log.Logging;
+import org.jboss.weld.Container;
+import org.jboss.weld.context.ContextLifecycle;
+import org.jboss.weld.context.ConversationContext;
+import org.jboss.weld.context.api.BeanStore;
+import org.jboss.weld.log.LogProvider;
+import org.jboss.weld.log.Logging;
/**
* An abstract conversation manager
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/conversation/ConversationEntry.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/conversation/ConversationEntry.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/conversation/ConversationEntry.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,16 +14,16 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.conversation;
+package org.jboss.weld.conversation;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.ReentrantLock;
-import org.jboss.webbeans.context.ConversationContext;
-import org.jboss.webbeans.context.api.BeanStore;
-import org.jboss.webbeans.log.LogProvider;
-import org.jboss.webbeans.log.Logging;
+import org.jboss.weld.context.ConversationContext;
+import org.jboss.weld.context.api.BeanStore;
+import org.jboss.weld.log.LogProvider;
+import org.jboss.weld.log.Logging;
/**
* Represents a long-running conversation entry
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/conversation/ConversationImpl.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/conversation/ConversationImpl.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/conversation/ConversationImpl.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.conversation;
+package org.jboss.weld.conversation;
import java.io.Serializable;
@@ -24,8 +24,8 @@
import javax.inject.Inject;
import javax.inject.Named;
-import org.jboss.webbeans.log.LogProvider;
-import org.jboss.webbeans.log.Logging;
+import org.jboss.weld.log.LogProvider;
+import org.jboss.weld.log.Logging;
/**
* The current conversation implementation
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/conversation/JavaSEConversationTerminator.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/conversation/JavaSEConversationTerminator.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/conversation/JavaSEConversationTerminator.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.conversation;
+package org.jboss.weld.conversation;
import java.io.Serializable;
import java.util.concurrent.Executors;
@@ -24,8 +24,8 @@
import javax.enterprise.context.SessionScoped;
-import org.jboss.webbeans.log.LogProvider;
-import org.jboss.webbeans.log.Logging;
+import org.jboss.weld.log.LogProvider;
+import org.jboss.weld.log.Logging;
/**
* A ConversationTerminator implementation using Java SE scheduling
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/conversation/NumericConversationIdGenerator.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/conversation/NumericConversationIdGenerator.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/conversation/NumericConversationIdGenerator.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,15 +14,15 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.conversation;
+package org.jboss.weld.conversation;
import java.io.Serializable;
import java.util.concurrent.atomic.AtomicInteger;
import javax.enterprise.context.SessionScoped;
-import org.jboss.webbeans.log.LogProvider;
-import org.jboss.webbeans.log.Logging;
+import org.jboss.weld.log.LogProvider;
+import org.jboss.weld.log.Logging;
/**
* A ConversationIdGenerator implementation using running numerical values
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/conversation/ServletConversationManager.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/conversation/ServletConversationManager.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/conversation/ServletConversationManager.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -20,7 +20,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.conversation;
+package org.jboss.weld.conversation;
import java.io.Serializable;
@@ -30,10 +30,10 @@
import javax.inject.Inject;
import javax.servlet.http.HttpSession;
-import org.jboss.webbeans.context.api.BeanStore;
-import org.jboss.webbeans.log.LogProvider;
-import org.jboss.webbeans.log.Logging;
-import org.jboss.webbeans.servlet.ConversationBeanStore;
+import org.jboss.weld.context.api.BeanStore;
+import org.jboss.weld.log.LogProvider;
+import org.jboss.weld.log.Logging;
+import org.jboss.weld.servlet.ConversationBeanStore;
/**
* The HTTP session based conversation manager
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/ejb (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/ejb)
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/ejb/EJBApiAbstraction.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/ejb/EJBApiAbstraction.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/ejb/EJBApiAbstraction.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,13 +14,13 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.ejb;
+package org.jboss.weld.ejb;
import java.lang.annotation.Annotation;
-import org.jboss.webbeans.bootstrap.api.Service;
-import org.jboss.webbeans.resources.spi.ResourceLoader;
-import org.jboss.webbeans.util.ApiAbstraction;
+import org.jboss.weld.bootstrap.api.Service;
+import org.jboss.weld.resources.spi.ResourceLoader;
+import org.jboss.weld.util.ApiAbstraction;
/**
* Utility class for EJB classes etc. EJB metadata should NOT be inspected here
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/ejb/EjbDescriptors.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/ejb/EjbDescriptors.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/ejb/EjbDescriptors.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.ejb;
+package org.jboss.weld.ejb;
import java.util.Collection;
import java.util.HashMap;
@@ -22,8 +22,8 @@
import java.util.Iterator;
import java.util.Map;
-import org.jboss.webbeans.bootstrap.api.Service;
-import org.jboss.webbeans.ejb.spi.EjbDescriptor;
+import org.jboss.weld.bootstrap.api.Service;
+import org.jboss.weld.ejb.spi.EjbDescriptor;
/**
* EJB descriptors by EJB implementation class or name
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/ejb/InternalEjbDescriptor.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/ejb/InternalEjbDescriptor.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/ejb/InternalEjbDescriptor.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,18 +14,18 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.ejb;
+package org.jboss.weld.ejb;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
-import org.jboss.webbeans.ejb.spi.BusinessInterfaceDescriptor;
-import org.jboss.webbeans.ejb.spi.EjbDescriptor;
-import org.jboss.webbeans.ejb.spi.helpers.ForwardingEjbDescriptor;
-import org.jboss.webbeans.introspector.MethodSignature;
-import org.jboss.webbeans.introspector.jlr.MethodSignatureImpl;
+import org.jboss.weld.ejb.spi.BusinessInterfaceDescriptor;
+import org.jboss.weld.ejb.spi.EjbDescriptor;
+import org.jboss.weld.ejb.spi.helpers.ForwardingEjbDescriptor;
+import org.jboss.weld.introspector.MethodSignature;
+import org.jboss.weld.introspector.jlr.MethodSignatureImpl;
/**
* More powerful version of {@link EjbDescriptor} that exposes Maps for some
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/ejb/SessionBeanInterceptor.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/ejb/SessionBeanInterceptor.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/ejb/SessionBeanInterceptor.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,18 +14,18 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.ejb;
+package org.jboss.weld.ejb;
import java.io.Serializable;
import javax.interceptor.AroundInvoke;
import javax.interceptor.InvocationContext;
-import org.jboss.webbeans.Container;
-import org.jboss.webbeans.bootstrap.api.Lifecycle;
-import org.jboss.webbeans.context.ContextLifecycle;
-import org.jboss.webbeans.context.api.BeanStore;
-import org.jboss.webbeans.context.beanstore.HashMapBeanStore;
+import org.jboss.weld.Container;
+import org.jboss.weld.bootstrap.api.Lifecycle;
+import org.jboss.weld.context.ContextLifecycle;
+import org.jboss.weld.context.api.BeanStore;
+import org.jboss.weld.context.beanstore.HashMapBeanStore;
/**
* Interceptor for ensuring the request context is active during requests to EJBs.
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/el (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/el)
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/el/AbstractWebBeansELResolver.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/el/AbstractWebBeansELResolver.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/el/AbstractWebBeansELResolver.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,9 +14,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.el;
+package org.jboss.weld.el;
-import static org.jboss.webbeans.el.ELCreationalContextStack.getCreationalContextStore;
+import static org.jboss.weld.el.ELCreationalContextStack.getCreationalContextStore;
import java.beans.FeatureDescriptor;
import java.util.Iterator;
@@ -26,7 +26,7 @@
import javax.el.ELResolver;
import javax.enterprise.inject.spi.Bean;
-import org.jboss.webbeans.BeanManagerImpl;
+import org.jboss.weld.BeanManagerImpl;
/**
* An EL-resolver against the named beans
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/el/ELCreationalContext.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/el/ELCreationalContext.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/el/ELCreationalContext.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -1,4 +1,4 @@
-package org.jboss.webbeans.el;
+package org.jboss.weld.el;
import java.util.HashMap;
import java.util.Map;
@@ -7,8 +7,8 @@
import javax.enterprise.context.Dependent;
import javax.enterprise.inject.spi.Bean;
-import org.jboss.webbeans.context.ForwardingWBCreationalContext;
-import org.jboss.webbeans.context.WBCreationalContext;
+import org.jboss.weld.context.ForwardingWBCreationalContext;
+import org.jboss.weld.context.WBCreationalContext;
abstract class ELCreationalContext<T> extends ForwardingWBCreationalContext<T>
{
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/el/ELCreationalContextStack.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/el/ELCreationalContextStack.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/el/ELCreationalContextStack.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -1,4 +1,4 @@
-package org.jboss.webbeans.el;
+package org.jboss.weld.el;
import java.util.Stack;
@@ -6,7 +6,7 @@
import javax.enterprise.context.spi.Contextual;
import javax.enterprise.context.spi.CreationalContext;
-import org.jboss.webbeans.Container;
+import org.jboss.weld.Container;
class ELCreationalContextStack extends Stack<ELCreationalContext<?>>
{
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/el/Namespace.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/el/Namespace.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/el/Namespace.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.el;
+package org.jboss.weld.el;
import java.util.HashMap;
import java.util.Map;
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/el/WebBeansELContextListener.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/el/WebBeansELContextListener.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/el/WebBeansELContextListener.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.el;
+package org.jboss.weld.el;
import javax.el.ELContextEvent;
import javax.el.ELContextListener;
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/el/WebBeansELResolver.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/el/WebBeansELResolver.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/el/WebBeansELResolver.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,11 +14,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.el;
+package org.jboss.weld.el;
import javax.el.ELContext;
-import org.jboss.webbeans.BeanManagerImpl;
+import org.jboss.weld.BeanManagerImpl;
/**
* @author pmuir
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/el/WebBeansExpressionFactory.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/el/WebBeansExpressionFactory.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/el/WebBeansExpressionFactory.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,14 +14,14 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.el;
+package org.jboss.weld.el;
import javax.el.ELContext;
import javax.el.ExpressionFactory;
import javax.el.MethodExpression;
import javax.el.ValueExpression;
-import org.jboss.webbeans.util.el.ForwardingExpressionFactory;
+import org.jboss.weld.util.el.ForwardingExpressionFactory;
/**
* @author pmuir
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/el/WebBeansMethodExpression.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/el/WebBeansMethodExpression.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/el/WebBeansMethodExpression.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,9 +14,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.el;
+package org.jboss.weld.el;
-import static org.jboss.webbeans.el.ELCreationalContextStack.getCreationalContextStore;
+import static org.jboss.weld.el.ELCreationalContextStack.getCreationalContextStore;
import javax.el.ELContext;
import javax.el.MethodExpression;
@@ -24,8 +24,8 @@
import javax.enterprise.context.spi.Contextual;
import javax.enterprise.context.spi.CreationalContext;
-import org.jboss.webbeans.Container;
-import org.jboss.webbeans.util.el.ForwardingMethodExpression;
+import org.jboss.weld.Container;
+import org.jboss.weld.util.el.ForwardingMethodExpression;
/**
* @author pmuir
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/el/WebBeansValueExpression.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/el/WebBeansValueExpression.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/el/WebBeansValueExpression.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,17 +14,17 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.el;
+package org.jboss.weld.el;
-import static org.jboss.webbeans.el.ELCreationalContextStack.getCreationalContextStore;
+import static org.jboss.weld.el.ELCreationalContextStack.getCreationalContextStore;
import javax.el.ELContext;
import javax.el.ValueExpression;
import javax.enterprise.context.spi.Contextual;
import javax.enterprise.context.spi.CreationalContext;
-import org.jboss.webbeans.Container;
-import org.jboss.webbeans.util.el.ForwardingValueExpression;
+import org.jboss.weld.Container;
+import org.jboss.weld.util.el.ForwardingValueExpression;
/**
* @author pmuir
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/event (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/event)
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/event/AsynchronousTransactionalEventNotification.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/event/AsynchronousTransactionalEventNotification.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/event/AsynchronousTransactionalEventNotification.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,10 +14,10 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.event;
+package org.jboss.weld.event;
-import org.jboss.webbeans.log.Log;
-import org.jboss.webbeans.log.Logging;
+import org.jboss.weld.log.Log;
+import org.jboss.weld.log.Logging;
/**
* A deferred event notification that will be delivered during the appropriate
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/event/DeferredEventNotification.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/event/DeferredEventNotification.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/event/DeferredEventNotification.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,15 +14,15 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.event;
+package org.jboss.weld.event;
-import org.jboss.webbeans.Container;
-import org.jboss.webbeans.bootstrap.api.Lifecycle;
-import org.jboss.webbeans.context.ContextLifecycle;
-import org.jboss.webbeans.context.api.BeanStore;
-import org.jboss.webbeans.context.api.helpers.ConcurrentHashMapBeanStore;
-import org.jboss.webbeans.log.Log;
-import org.jboss.webbeans.log.Logging;
+import org.jboss.weld.Container;
+import org.jboss.weld.bootstrap.api.Lifecycle;
+import org.jboss.weld.context.ContextLifecycle;
+import org.jboss.weld.context.api.BeanStore;
+import org.jboss.weld.context.api.helpers.ConcurrentHashMapBeanStore;
+import org.jboss.weld.log.Log;
+import org.jboss.weld.log.Logging;
/**
* A task that will notify the observer of a specific event at some future time.
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/event/EventImpl.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/event/EventImpl.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/event/EventImpl.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.event;
+package org.jboss.weld.event;
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
@@ -25,10 +25,10 @@
import javax.enterprise.event.Event;
import javax.enterprise.inject.TypeLiteral;
-import org.jboss.webbeans.BeanManagerImpl;
-import org.jboss.webbeans.bean.builtin.facade.AbstractFacade;
-import org.jboss.webbeans.util.Observers;
-import org.jboss.webbeans.util.Strings;
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.bean.builtin.facade.AbstractFacade;
+import org.jboss.weld.util.Observers;
+import org.jboss.weld.util.Strings;
/**
* Implementation of the Event interface
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/event/ObserverFactory.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/event/ObserverFactory.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/event/ObserverFactory.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,16 +14,16 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.event;
+package org.jboss.weld.event;
import javax.enterprise.event.Observes;
import javax.enterprise.event.TransactionPhase;
-import org.jboss.webbeans.BeanManagerImpl;
-import org.jboss.webbeans.bean.RIBean;
-import org.jboss.webbeans.introspector.WBMethod;
-import org.jboss.webbeans.introspector.WBParameter;
-import org.jboss.webbeans.transaction.spi.TransactionServices;
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.bean.RIBean;
+import org.jboss.weld.introspector.WBMethod;
+import org.jboss.weld.introspector.WBParameter;
+import org.jboss.weld.transaction.spi.TransactionServices;
/**
* Basic factory class that produces implicit observers for observer methods.
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/event/ObserverMethodImpl.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/event/ObserverMethodImpl.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/event/ObserverMethodImpl.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.event;
+package org.jboss.weld.event;
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
@@ -36,14 +36,14 @@
import javax.enterprise.inject.spi.ObserverMethod;
import javax.inject.Inject;
-import org.jboss.webbeans.BeanManagerImpl;
-import org.jboss.webbeans.Container;
-import org.jboss.webbeans.DefinitionException;
-import org.jboss.webbeans.bean.RIBean;
-import org.jboss.webbeans.injection.MethodInjectionPoint;
-import org.jboss.webbeans.introspector.WBMethod;
-import org.jboss.webbeans.introspector.WBParameter;
-import org.jboss.webbeans.manager.api.ExecutorServices;
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.Container;
+import org.jboss.weld.DefinitionException;
+import org.jboss.weld.bean.RIBean;
+import org.jboss.weld.injection.MethodInjectionPoint;
+import org.jboss.weld.introspector.WBMethod;
+import org.jboss.weld.introspector.WBParameter;
+import org.jboss.weld.manager.api.ExecutorServices;
/**
* <p>
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/event/Status.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/event/Status.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/event/Status.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.jboss.webbeans.event;
+package org.jboss.weld.event;
/**
* An enumeration of the possible outcomes for a transaction. This is used
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/event/TransactionSynchronizedRunnable.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/event/TransactionSynchronizedRunnable.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/event/TransactionSynchronizedRunnable.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.event;
+package org.jboss.weld.event;
import static javax.transaction.Status.STATUS_COMMITTED;
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/event/TransactionalObserverMethodImpl.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/event/TransactionalObserverMethodImpl.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/event/TransactionalObserverMethodImpl.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,15 +14,15 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.event;
+package org.jboss.weld.event;
import javax.enterprise.event.TransactionPhase;
import javax.transaction.Synchronization;
-import org.jboss.webbeans.BeanManagerImpl;
-import org.jboss.webbeans.bean.RIBean;
-import org.jboss.webbeans.introspector.WBMethod;
-import org.jboss.webbeans.transaction.spi.TransactionServices;
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.bean.RIBean;
+import org.jboss.weld.introspector.WBMethod;
+import org.jboss.weld.transaction.spi.TransactionServices;
/**
* @author David Allen
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/injection (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/injection)
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/injection/ConstructorInjectionPoint.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/injection/ConstructorInjectionPoint.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/injection/ConstructorInjectionPoint.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,9 +14,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.injection;
+package org.jboss.weld.injection;
-import static org.jboss.webbeans.injection.Exceptions.rethrowException;
+import static org.jboss.weld.injection.Exceptions.rethrowException;
import java.lang.annotation.Annotation;
import java.lang.reflect.Constructor;
@@ -34,10 +34,10 @@
import javax.enterprise.inject.spi.Bean;
import javax.enterprise.inject.spi.Decorator;
-import org.jboss.webbeans.BeanManagerImpl;
-import org.jboss.webbeans.introspector.ForwardingWBConstructor;
-import org.jboss.webbeans.introspector.WBConstructor;
-import org.jboss.webbeans.introspector.WBParameter;
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.introspector.ForwardingWBConstructor;
+import org.jboss.weld.introspector.WBConstructor;
+import org.jboss.weld.introspector.WBParameter;
public class ConstructorInjectionPoint<T> extends ForwardingWBConstructor<T> implements WBInjectionPoint<T, Constructor<T>>
{
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/injection/Exceptions.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/injection/Exceptions.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/injection/Exceptions.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.injection;
+package org.jboss.weld.injection;
import java.lang.reflect.InvocationTargetException;
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/injection/FieldInjectionPoint.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/injection/FieldInjectionPoint.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/injection/FieldInjectionPoint.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,9 +14,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.injection;
+package org.jboss.weld.injection;
-import static org.jboss.webbeans.injection.Exceptions.rethrowException;
+import static org.jboss.weld.injection.Exceptions.rethrowException;
import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
@@ -30,9 +30,9 @@
import javax.enterprise.inject.spi.Bean;
import javax.enterprise.inject.spi.Decorator;
-import org.jboss.webbeans.BeanManagerImpl;
-import org.jboss.webbeans.introspector.ForwardingWBField;
-import org.jboss.webbeans.introspector.WBField;
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.introspector.ForwardingWBField;
+import org.jboss.weld.introspector.WBField;
public class FieldInjectionPoint<T, X> extends ForwardingWBField<T, X> implements WBInjectionPoint<T, Field>
{
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/injection/InjectionContextImpl.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/injection/InjectionContextImpl.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/injection/InjectionContextImpl.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,13 +14,13 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.injection;
+package org.jboss.weld.injection;
import javax.enterprise.inject.spi.InjectionTarget;
-import org.jboss.webbeans.BeanManagerImpl;
-import org.jboss.webbeans.injection.spi.InjectionContext;
-import org.jboss.webbeans.injection.spi.InjectionServices;
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.injection.spi.InjectionContext;
+import org.jboss.weld.injection.spi.InjectionServices;
/**
* @author pmuir
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/injection/MethodInjectionPoint.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/injection/MethodInjectionPoint.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/injection/MethodInjectionPoint.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,9 +14,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.injection;
+package org.jboss.weld.injection;
-import static org.jboss.webbeans.injection.Exceptions.rethrowException;
+import static org.jboss.weld.injection.Exceptions.rethrowException;
import java.lang.annotation.Annotation;
import java.lang.reflect.InvocationTargetException;
@@ -34,10 +34,10 @@
import javax.enterprise.inject.spi.Bean;
import javax.enterprise.inject.spi.Decorator;
-import org.jboss.webbeans.BeanManagerImpl;
-import org.jboss.webbeans.introspector.ForwardingWBMethod;
-import org.jboss.webbeans.introspector.WBMethod;
-import org.jboss.webbeans.introspector.WBParameter;
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.introspector.ForwardingWBMethod;
+import org.jboss.weld.introspector.WBMethod;
+import org.jboss.weld.introspector.WBParameter;
public class MethodInjectionPoint<T, X> extends ForwardingWBMethod<T, X> implements WBInjectionPoint<T, Method>
{
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/injection/ParameterInjectionPoint.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/injection/ParameterInjectionPoint.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/injection/ParameterInjectionPoint.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.injection;
+package org.jboss.weld.injection;
import java.lang.annotation.Annotation;
import java.lang.reflect.Member;
@@ -27,9 +27,9 @@
import javax.enterprise.inject.spi.Bean;
import javax.enterprise.inject.spi.Decorator;
-import org.jboss.webbeans.BeanManagerImpl;
-import org.jboss.webbeans.introspector.ForwardingWBParameter;
-import org.jboss.webbeans.introspector.WBParameter;
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.introspector.ForwardingWBParameter;
+import org.jboss.weld.introspector.WBParameter;
public class ParameterInjectionPoint<T, X> extends ForwardingWBParameter<T, X> implements WBInjectionPoint<T, Object>
{
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/injection/WBInjectionPoint.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/injection/WBInjectionPoint.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/injection/WBInjectionPoint.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,11 +14,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.injection;
+package org.jboss.weld.injection;
import javax.enterprise.inject.spi.InjectionPoint;
-import org.jboss.webbeans.introspector.WBAnnotated;
+import org.jboss.weld.introspector.WBAnnotated;
public interface WBInjectionPoint<T, S> extends InjectionPoint, WBAnnotated<T, S>
{
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/introspector/AnnotationStore.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/AnnotationStore.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/introspector/AnnotationStore.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/introspector/AnnotationStore.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,288 @@
+/*
+ * 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.introspector;
+
+import static org.jboss.weld.introspector.WBAnnotated.MAPPED_METAANNOTATIONS;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.AnnotatedElement;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import javax.inject.Qualifier;
+
+import org.jboss.weld.literal.DefaultLiteral;
+import org.jboss.weld.metadata.TypeStore;
+
+import com.google.common.base.Supplier;
+import com.google.common.collect.Multimaps;
+import com.google.common.collect.SetMultimap;
+
+public class AnnotationStore
+{
+
+ // The array of default binding types
+ private static final Annotation[] DEFAULT_BINDING_ARRAY = { new DefaultLiteral() };
+ // The set of default binding types
+ private static final Set<Annotation> DEFAULT_BINDING = new HashSet<Annotation>(Arrays.asList(DEFAULT_BINDING_ARRAY));
+
+ private static final Annotation[] EMPTY_ANNOTATION_ARRAY = new Annotation[0];
+
+ /**
+ * Builds the annotation map (annotation type -> annotation)
+ *
+ * @param annotations The array of annotations to map
+ * @return The annotation map
+ */
+ protected static Map<Class<? extends Annotation>, Annotation> buildAnnotationMap(Annotation[] annotations)
+ {
+ Map<Class<? extends Annotation>, Annotation> annotationMap = new HashMap<Class<? extends Annotation>, Annotation>();
+ for (Annotation annotation : annotations)
+ {
+ annotationMap.put(annotation.annotationType(), annotation);
+ }
+ return annotationMap;
+ }
+
+ /**
+ * Builds the annotation map (annotation type -> annotation)
+ *
+ * @param annotations The array of annotations to map
+ * @return The annotation map
+ */
+ protected static Map<Class<? extends Annotation>, Annotation> buildAnnotationMap(Iterable<Annotation> annotations)
+ {
+ Map<Class<? extends Annotation>, Annotation> annotationMap = new HashMap<Class<? extends Annotation>, Annotation>();
+ for (Annotation annotation : annotations)
+ {
+ annotationMap.put(annotation.annotationType(), annotation);
+ }
+ return annotationMap;
+ }
+
+ /**
+ * Build an AnnotatedItemHelper from a class
+ *
+ * @param annotatedElement
+ * @return
+ */
+ public static AnnotationStore of(AnnotatedElement annotatedElement, TypeStore typeStore)
+ {
+ return new AnnotationStore(buildAnnotationMap(annotatedElement.getAnnotations()), buildAnnotationMap(annotatedElement.getDeclaredAnnotations()), typeStore);
+ }
+
+ public static AnnotationStore of(AnnotatedElement annotatedElement, Set<Annotation> extraAnnotations, Set<Annotation> extraDeclaredAnnotations, TypeStore typeStore)
+ {
+ Map<Class<? extends Annotation>, Annotation> annotationMap = new HashMap<Class<? extends Annotation>, Annotation>();
+ annotationMap.putAll(buildAnnotationMap(annotatedElement.getAnnotations()));
+ annotationMap.putAll(buildAnnotationMap(extraAnnotations));
+
+ Map<Class<? extends Annotation>, Annotation> declaredAnnotationMap = new HashMap<Class<? extends Annotation>, Annotation>();
+ declaredAnnotationMap.putAll(buildAnnotationMap(annotatedElement.getDeclaredAnnotations()));
+ declaredAnnotationMap.putAll(buildAnnotationMap(extraDeclaredAnnotations));
+
+ return new AnnotationStore(annotationMap, declaredAnnotationMap, typeStore);
+ }
+
+ public static AnnotationStore of(Annotation[] annotations, Annotation[] declaredAnnotations, TypeStore typeStore)
+ {
+ return new AnnotationStore(buildAnnotationMap(annotations), buildAnnotationMap(declaredAnnotations), typeStore);
+ }
+
+ public static AnnotationStore of(Set<Annotation> annotations, Set<Annotation> declaredAnnotations, TypeStore typeStore)
+ {
+ return new AnnotationStore(buildAnnotationMap(annotations), buildAnnotationMap(declaredAnnotations), typeStore);
+ }
+
+ public static AnnotationStore wrap(AnnotationStore annotationStore, Set<Annotation> annotations, Set<Annotation> declaredAnnotations, TypeStore typeStore)
+ {
+ Map<Class<? extends Annotation>, Annotation> annotationMap = new HashMap<Class<? extends Annotation>, Annotation>();
+ annotationMap.putAll(buildAnnotationMap(annotations));
+ annotationMap.putAll(annotationStore.getAnnotationMap());
+
+ Map<Class<? extends Annotation>, Annotation> declaredAnnotationMap = new HashMap<Class<? extends Annotation>, Annotation>();
+ declaredAnnotationMap.putAll(buildAnnotationMap(declaredAnnotations));
+ declaredAnnotationMap.putAll(annotationStore.getDeclaredAnnotationMap());
+
+ return new AnnotationStore(annotationMap, declaredAnnotationMap, typeStore);
+ }
+
+ // The annotation map (annotation type -> annotation) of the item
+ private final Map<Class<? extends Annotation>, Annotation> annotationMap;
+ // The meta-annotation map (annotation type -> set of annotations containing
+ // meta-annotation) of the item
+ private final SetMultimap<Class<? extends Annotation>, Annotation> metaAnnotationMap;
+ // The set of all annotations on the item
+ private final Set<Annotation> annotationSet;
+
+ // The annotation map (annotation type -> annotation) of the item
+ private final Map<Class<? extends Annotation>, Annotation> declaredAnnotationMap;
+ // The meta-annotation map (annotation type -> set of annotations containing
+ // meta-annotation) of the item
+ private final SetMultimap<Class<? extends Annotation>, Annotation> declaredMetaAnnotationMap;
+ // The set of all annotations on the item
+ private final Set<Annotation> declaredAnnotationSet;
+
+ /**
+ * Constructor
+ *
+ * Also builds the meta-annotation map. Throws a NullPointerException if
+ * trying to register a null map
+ *
+ * @param annotationMap A map of annotation to register
+ *
+ */
+ protected AnnotationStore(Map<Class<? extends Annotation>, Annotation> annotationMap, Map<Class<? extends Annotation>, Annotation> declaredAnnotationMap, TypeStore typeStore)
+ {
+ if (annotationMap == null)
+ {
+ throw new NullPointerException("annotationMap cannot be null");
+ }
+ this.annotationMap = annotationMap;
+ this.annotationSet = new HashSet<Annotation>();
+ this.metaAnnotationMap = Multimaps.newSetMultimap(new HashMap<Class<? extends Annotation>, Collection<Annotation>>(), new Supplier<Set<Annotation>>()
+ {
+
+ public Set<Annotation> get()
+ {
+ return new HashSet<Annotation>();
+ }
+ });
+ for (Annotation annotation : annotationMap.values())
+ {
+ addMetaAnnotations(metaAnnotationMap, annotation, annotation.annotationType().getAnnotations());
+ addMetaAnnotations(metaAnnotationMap, annotation, typeStore.get(annotation.annotationType()));
+ annotationSet.add(annotation);
+ }
+
+ if (declaredAnnotationMap == null)
+ {
+ throw new NullPointerException("declaredAnnotationMap cannot be null");
+ }
+ this.declaredAnnotationMap = declaredAnnotationMap;
+ this.declaredAnnotationSet = new HashSet<Annotation>();
+ this.declaredMetaAnnotationMap = Multimaps.newSetMultimap(new HashMap<Class<? extends Annotation>, Collection<Annotation>>(), new Supplier<Set<Annotation>>()
+ {
+
+ public Set<Annotation> get()
+ {
+ return new HashSet<Annotation>();
+ }
+ });
+ for (Annotation declaredAnnotation : declaredAnnotationMap.values())
+ {
+ addMetaAnnotations(declaredMetaAnnotationMap, declaredAnnotation, declaredAnnotation.annotationType().getAnnotations());
+ addMetaAnnotations(declaredMetaAnnotationMap, declaredAnnotation, typeStore.get(declaredAnnotation.annotationType()));
+ declaredAnnotationSet.add(declaredAnnotation);
+ }
+ }
+
+ private static void addMetaAnnotations(SetMultimap<Class<? extends Annotation>, Annotation> metaAnnotationMap, Annotation annotation, Annotation[] metaAnnotations)
+ {
+ for (Annotation metaAnnotation : metaAnnotations)
+ {
+ addMetaAnnotation(metaAnnotationMap, annotation, metaAnnotation.annotationType());
+ }
+ }
+
+ private static void addMetaAnnotations(SetMultimap<Class<? extends Annotation>, Annotation> metaAnnotationMap, Annotation annotation, Iterable<Annotation> metaAnnotations)
+ {
+ for (Annotation metaAnnotation : metaAnnotations)
+ {
+ addMetaAnnotation(metaAnnotationMap, annotation, metaAnnotation.annotationType());
+ }
+ }
+
+ private static void addMetaAnnotation(SetMultimap<Class<? extends Annotation>, Annotation> metaAnnotationMap, Annotation annotation, Class<? extends Annotation> metaAnnotationType)
+ {
+ // Only map meta-annotations we are interested in
+ if (MAPPED_METAANNOTATIONS.contains(metaAnnotationType))
+ {
+ metaAnnotationMap.put(metaAnnotationType, annotation);
+ }
+ }
+
+ public Set<Annotation> getAnnotations()
+ {
+ return Collections.unmodifiableSet(annotationSet);
+ }
+
+ public Set<Annotation> getMetaAnnotations(Class<? extends Annotation> metaAnnotationType)
+ {
+ return Collections.unmodifiableSet(metaAnnotationMap.get(metaAnnotationType));
+ }
+
+ public Set<Annotation> getDeclaredMetaAnnotations(Class<? extends Annotation> metaAnnotationType)
+ {
+ return Collections.unmodifiableSet(declaredMetaAnnotationMap.get(metaAnnotationType));
+ }
+
+ public Annotation[] getMetaAnnotationsAsArray(Class<? extends Annotation> metaAnnotationType)
+ {
+ return getMetaAnnotations(metaAnnotationType).toArray(EMPTY_ANNOTATION_ARRAY);
+ }
+
+ @Deprecated
+ public Set<Annotation> getBindings()
+ {
+ if (getMetaAnnotations(Qualifier.class).size() > 0)
+ {
+ return Collections.unmodifiableSet(getMetaAnnotations(Qualifier.class));
+ }
+ else
+ {
+ return Collections.unmodifiableSet(DEFAULT_BINDING);
+ }
+ }
+
+ @Deprecated
+ public Annotation[] getBindingsAsArray()
+ {
+ return getBindings().toArray(EMPTY_ANNOTATION_ARRAY);
+ }
+
+ public <A extends Annotation> A getAnnotation(Class<? extends A> annotationType)
+ {
+ return annotationType.cast(annotationMap.get(annotationType));
+ }
+
+ public boolean isAnnotationPresent(Class<? extends Annotation> annotationType)
+ {
+ return annotationMap.containsKey(annotationType);
+ }
+
+ public boolean isDeclaredAnnotationPresent(Class<? extends Annotation> annotationType)
+ {
+ return declaredAnnotationMap.containsKey(annotationType);
+ }
+
+ Map<Class<? extends Annotation>, Annotation> getAnnotationMap()
+ {
+ return annotationMap;
+ }
+
+ Map<Class<? extends Annotation>, Annotation> getDeclaredAnnotationMap()
+ {
+ return declaredAnnotationMap;
+ }
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/introspector/ConstructorSignature.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/ConstructorSignature.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/introspector/ConstructorSignature.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/introspector/ConstructorSignature.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,26 @@
+/*
+ * 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.introspector;
+
+import java.io.Serializable;
+
+public interface ConstructorSignature extends Serializable
+{
+
+ public String[] getParameterTypes();
+
+}
\ No newline at end of file
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/introspector/ForwardingAnnotated.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotated.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/introspector/ForwardingAnnotated.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/introspector/ForwardingAnnotated.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,81 @@
+/*
+ * 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.introspector;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Type;
+import java.util.Set;
+
+import javax.enterprise.inject.spi.Annotated;
+
+/**
+ * Base class to allow implementation of the decorator pattern
+ *
+ * @author Pete Muir
+ *
+ * @param <T> the base type
+ * @param <S> the annotated element type
+ */
+public abstract class ForwardingAnnotated<T, S> implements Annotated
+{
+
+ protected abstract Annotated delegate();
+
+ public <A extends Annotation> A getAnnotation(Class<A> annotationType)
+ {
+ return delegate().getAnnotation(annotationType);
+ }
+
+ public Set<Annotation> getAnnotations()
+ {
+ return delegate().getAnnotations();
+ }
+
+ public boolean isAnnotationPresent(Class<? extends Annotation> annotationType)
+ {
+ return delegate().isAnnotationPresent(annotationType);
+ }
+
+ public Type getBaseType()
+ {
+ return delegate().getBaseType();
+ }
+
+ public Set<Type> getTypeClosure()
+ {
+ return delegate().getTypeClosure();
+ }
+
+ @Override
+ public boolean equals(Object obj)
+ {
+ return delegate().equals(obj);
+ }
+
+ @Override
+ public int hashCode()
+ {
+ return delegate().hashCode();
+ }
+
+ @Override
+ public String toString()
+ {
+ return delegate().toString();
+ }
+
+}
\ No newline at end of file
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/introspector/ForwardingWBAnnotated.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/ForwardingWBAnnotated.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/introspector/ForwardingWBAnnotated.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/introspector/ForwardingWBAnnotated.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,139 @@
+/*
+ * 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.introspector;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Type;
+import java.util.Set;
+
+/**
+ * Provides an abstraction for delegating access to an annotated item
+ *
+ * @author Pete Muir
+ *
+ * @param <T>
+ * @param <S>
+ */
+public abstract class ForwardingWBAnnotated<T, S> extends ForwardingAnnotated<T, S> implements WBAnnotated<T, S>
+{
+
+ public Type[] getActualTypeArguments()
+ {
+ return delegate().getActualTypeArguments();
+ }
+
+ public Set<Annotation> getMetaAnnotations(Class<? extends Annotation> metaAnnotationType)
+ {
+ return delegate().getMetaAnnotations(metaAnnotationType);
+ }
+
+ public Annotation[] getMetaAnnotationsAsArray(Class<? extends Annotation> metaAnnotationType)
+ {
+ return delegate().getMetaAnnotationsAsArray(metaAnnotationType);
+ }
+
+ @Deprecated
+ public Set<Annotation> getQualifiers()
+ {
+ return delegate().getQualifiers();
+ }
+
+ @Deprecated
+ public Annotation[] getBindingsAsArray()
+ {
+ return delegate().getBindingsAsArray();
+ }
+
+ public Set<Annotation> getDeclaredMetaAnnotations(Class<? extends Annotation> metaAnnotationType)
+ {
+ return delegate().getDeclaredMetaAnnotations(metaAnnotationType);
+ }
+
+ public String getName()
+ {
+ return delegate().getName();
+ }
+
+ public Class<T> getJavaClass()
+ {
+ return delegate().getJavaClass();
+ }
+
+ public boolean isAssignableFrom(WBAnnotated<?, ?> that)
+ {
+ return delegate().isAssignableFrom(that);
+ }
+
+ public boolean isAssignableFrom(Class<?> type, Type[] actualTypeArguments)
+ {
+ return delegate().isAssignableFrom(type, actualTypeArguments);
+ }
+
+ public boolean isFinal()
+ {
+ return delegate().isFinal();
+ }
+
+ public boolean isStatic()
+ {
+ return delegate().isStatic();
+ }
+
+ public boolean isProxyable()
+ {
+ return delegate().isProxyable();
+ }
+
+ public boolean isPublic()
+ {
+ return delegate().isPublic();
+ }
+
+ public boolean isPrivate()
+ {
+ return delegate().isPrivate();
+ }
+
+ public boolean isPackagePrivate()
+ {
+ return delegate().isPackagePrivate();
+ }
+
+ public Package getPackage()
+ {
+ return delegate().getPackage();
+ }
+
+ @Override
+ protected abstract WBAnnotated<T, S> delegate();
+
+ public boolean isDeclaredAnnotationPresent(Class<? extends Annotation> annotationType)
+ {
+ return delegate().isDeclaredAnnotationPresent(annotationType);
+ }
+
+ public Set<Type> getInterfaceOnlyFlattenedTypeHierarchy()
+ {
+ return delegate().getInterfaceOnlyFlattenedTypeHierarchy();
+ }
+
+ public boolean isParameterizedType()
+ {
+ return delegate().isParameterizedType();
+ }
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/introspector/ForwardingWBAnnotation.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/ForwardingWBAnnotation.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/introspector/ForwardingWBAnnotation.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/introspector/ForwardingWBAnnotation.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,38 @@
+/*
+ * 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.introspector;
+
+import java.lang.annotation.Annotation;
+import java.util.Set;
+
+public abstract class ForwardingWBAnnotation<T extends Annotation> extends ForwardingWBClass<T> implements WBAnnotation<T>
+{
+
+ @Override
+ protected abstract WBAnnotation<T> delegate();
+
+ public Set<WBMethod<?, ?>> getAnnotatedMembers(Class<? extends Annotation> annotationType)
+ {
+ return delegate().getAnnotatedMembers(annotationType);
+ }
+
+ public Set<WBMethod<?, ?>> getMembers()
+ {
+ return delegate().getMembers();
+ }
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/introspector/ForwardingWBClass.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/ForwardingWBClass.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/introspector/ForwardingWBClass.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/introspector/ForwardingWBClass.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,172 @@
+/*
+ * 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.introspector;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Method;
+import java.util.Set;
+
+public abstract class ForwardingWBClass<T> extends ForwardingWBAnnotated<T, Class<T>> implements WBClass<T>
+{
+
+ @Override
+ protected abstract WBClass<T> delegate();
+
+ public Set<WBConstructor<T>> getAnnotatedWBConstructors(Class<? extends Annotation> annotationType)
+ {
+ return delegate().getAnnotatedWBConstructors(annotationType);
+ }
+
+ public Set<WBField<?, ?>> getAnnotatedWBFields(Class<? extends Annotation> annotationType)
+ {
+ return delegate().getAnnotatedWBFields(annotationType);
+ }
+
+ public Set<WBMethod<?, ?>> getAnnotatedWBMethods(Class<? extends Annotation> annotationType)
+ {
+ return delegate().getAnnotatedWBMethods(annotationType);
+ }
+
+ public WBConstructor<T> getNoArgsWBConstructor()
+ {
+ return delegate().getNoArgsWBConstructor();
+ }
+
+ public Set<WBConstructor<T>> getWBConstructors()
+ {
+ return delegate().getWBConstructors();
+ }
+
+ public Set<WBMethod<?, ?>> getWBMethods()
+ {
+ return delegate().getWBMethods();
+ }
+
+ public Set<WBField<?, T>> getDeclaredAnnotatedWBFields(Class<? extends Annotation> annotationType)
+ {
+ return delegate().getDeclaredAnnotatedWBFields(annotationType);
+ }
+
+ public Set<WBMethod<?, T>> getDeclaredAnnotatedWBMethods(Class<? extends Annotation> annotationType)
+ {
+ return delegate().getDeclaredAnnotatedWBMethods(annotationType);
+ }
+
+ public Set<WBMethod<?, T>> getDeclaredWBMethodsWithAnnotatedParameters(Class<? extends Annotation> annotationType)
+ {
+ return delegate().getDeclaredWBMethodsWithAnnotatedParameters(annotationType);
+ }
+
+ public Set<WBField<?, ?>> getWBFields()
+ {
+ return delegate().getWBFields();
+ }
+
+ public Set<WBField<?, ?>> getMetaAnnotatedWBFields(Class<? extends Annotation> metaAnnotationType)
+ {
+ return delegate().getMetaAnnotatedWBFields(metaAnnotationType);
+ }
+
+ @Deprecated
+ public WBMethod<?, ?> getWBMethod(Method method)
+ {
+ return delegate().getWBMethod(method);
+ }
+
+ public <M> WBMethod<M, ?> getWBMethod(MethodSignature signature)
+ {
+ return delegate().getWBMethod(signature);
+ }
+
+ public Set<WBMethod<?, ?>> getWBMethodsWithAnnotatedParameters(Class<? extends Annotation> annotationType)
+ {
+ return delegate().getWBMethodsWithAnnotatedParameters(annotationType);
+ }
+
+ public Set<WBConstructor<?>> getWBConstructorsWithAnnotatedParameters(Class<? extends Annotation> annotationType)
+ {
+ return delegate().getWBConstructorsWithAnnotatedParameters(annotationType);
+ }
+
+ public WBClass<?> getWBSuperclass()
+ {
+ return delegate().getWBSuperclass();
+ }
+
+ public boolean isNonStaticMemberClass()
+ {
+ return delegate().isNonStaticMemberClass();
+ }
+
+ @Override
+ public boolean isParameterizedType()
+ {
+ return delegate().isParameterizedType();
+ }
+
+ public boolean isAbstract()
+ {
+ return delegate().isAbstract();
+ }
+
+ public boolean isEnum()
+ {
+ return delegate().isEnum();
+ }
+
+ @Deprecated
+ public WBMethod<?, ?> getDeclaredWBMethod(Method method)
+ {
+ return delegate().getDeclaredWBMethod(method);
+ }
+
+ public <F> WBField<F, ?> getDeclaredWBField(String fieldName, WBClass<F> expectedType)
+ {
+ return delegate().getDeclaredWBField(fieldName, expectedType);
+ }
+
+ public <M> WBMethod<M, ?> getDeclaredWBMethod(MethodSignature signature, WBClass<M> expectedReturnType)
+ {
+ return delegate().getDeclaredWBMethod(signature, expectedReturnType);
+ }
+
+ public WBConstructor<T> getDeclaredWBConstructor(ConstructorSignature signature)
+ {
+ return delegate().getDeclaredWBConstructor(signature);
+ }
+
+ public <U> WBClass<? extends U> asWBSubclass(WBClass<U> clazz)
+ {
+ return delegate().asWBSubclass(clazz);
+ }
+
+ public <S> S cast(Object object)
+ {
+ return delegate().<S>cast(object);
+ }
+
+ public boolean isEquivalent(Class<?> clazz)
+ {
+ return delegate().isEquivalent(clazz);
+ }
+
+ public String getSimpleName()
+ {
+ return delegate().getSimpleName();
+ }
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/introspector/ForwardingWBConstructor.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/ForwardingWBConstructor.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/introspector/ForwardingWBConstructor.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/introspector/ForwardingWBConstructor.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,62 @@
+/*
+ * 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.introspector;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
+import java.util.List;
+
+import javax.enterprise.inject.spi.AnnotatedParameter;
+
+public abstract class ForwardingWBConstructor<T> extends ForwardingWBMember<T, T, Constructor<T>> implements WBConstructor<T>
+{
+
+ @Override
+ protected abstract WBConstructor<T> delegate();
+
+ public List<WBParameter<?, ?>> getAnnotatedWBParameters(Class<? extends Annotation> annotationType)
+ {
+ return delegate().getAnnotatedWBParameters(annotationType);
+ }
+
+ public WBClass<T> getDeclaringType()
+ {
+ return delegate().getDeclaringType();
+ }
+
+ public List<? extends WBParameter<?, ?>> getWBParameters()
+ {
+ return delegate().getWBParameters();
+ }
+
+ public T newInstance(Object... parameters) throws IllegalArgumentException, InstantiationException, IllegalAccessException, InvocationTargetException
+ {
+ return delegate().newInstance(parameters);
+ }
+
+ public ConstructorSignature getSignature()
+ {
+ return delegate().getSignature();
+ }
+
+ public List<AnnotatedParameter<T>> getParameters()
+ {
+ return delegate().getParameters();
+ }
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/introspector/ForwardingWBField.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/ForwardingWBField.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/introspector/ForwardingWBField.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/introspector/ForwardingWBField.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,52 @@
+/*
+ * 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.introspector;
+
+import java.lang.reflect.Field;
+
+public abstract class ForwardingWBField<T, X> extends ForwardingWBMember<T, X, Field> implements WBField<T, X>
+{
+
+ @Override
+ protected abstract WBField<T, X> delegate();
+
+ public T get(Object instance)
+ {
+ return delegate().get(instance);
+ }
+
+ public WBClass<X> getDeclaringType()
+ {
+ return delegate().getDeclaringType();
+ }
+
+ public String getPropertyName()
+ {
+ return delegate().getPropertyName();
+ }
+
+ public void set(Object declaringInstance, Object value) throws IllegalArgumentException, IllegalAccessException
+ {
+ delegate().set(declaringInstance, value);
+ }
+
+ public boolean isTransient()
+ {
+ return delegate().isTransient();
+ }
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/introspector/ForwardingWBMember.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/ForwardingWBMember.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/introspector/ForwardingWBMember.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/introspector/ForwardingWBMember.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,37 @@
+/*
+ * 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.introspector;
+
+import java.lang.reflect.Member;
+
+public abstract class ForwardingWBMember<T, X, S extends Member> extends ForwardingWBAnnotated<T, S> implements WBMember<T, X, S>
+{
+
+ @Override
+ protected abstract WBMember<T, X, S> delegate();
+
+ public S getJavaMember()
+ {
+ return delegate().getJavaMember();
+ }
+
+ public WBClass<X> getDeclaringType()
+ {
+ return delegate().getDeclaringType();
+ }
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/introspector/ForwardingWBMethod.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/ForwardingWBMethod.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/introspector/ForwardingWBMethod.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/introspector/ForwardingWBMethod.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,87 @@
+/*
+ * 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.introspector;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.List;
+
+import javax.enterprise.inject.spi.AnnotatedParameter;
+
+public abstract class ForwardingWBMethod<T, X> extends ForwardingWBMember<T,X, Method> implements WBMethod<T, X>
+{
+
+ @Override
+ protected abstract WBMethod<T, X> delegate();
+
+ public Method getAnnotatedMethod()
+ {
+ return delegate().getAnnotatedMethod();
+ }
+
+ public List<WBParameter<?, ?>> getAnnotatedParameters(Class<? extends Annotation> metaAnnotationType)
+ {
+ return delegate().getAnnotatedWBParameters(metaAnnotationType);
+ }
+
+ public Class<?>[] getParameterTypesAsArray()
+ {
+ return delegate().getParameterTypesAsArray();
+ }
+
+ public List<? extends WBParameter<?, ?>> getWBParameters()
+ {
+ return delegate().getWBParameters();
+ }
+
+ public String getPropertyName()
+ {
+ return delegate().getPropertyName();
+ }
+
+ public T invoke(Object instance, Object... parameters) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException
+ {
+ return delegate().invoke(instance, parameters);
+ }
+
+ public T invokeOnInstance(Object instance, Object... parameters) throws IllegalArgumentException, SecurityException, IllegalAccessException, InvocationTargetException, NoSuchMethodException
+ {
+ return delegate().invokeOnInstance(instance, parameters);
+ }
+
+ public boolean isEquivalent(Method method)
+ {
+ return delegate().isEquivalent(method);
+ }
+
+ public MethodSignature getSignature()
+ {
+ return delegate().getSignature();
+ }
+
+ public List<WBParameter<?, ?>> getAnnotatedWBParameters(Class<? extends Annotation> metaAnnotationType)
+ {
+ return delegate().getAnnotatedWBParameters(metaAnnotationType);
+ }
+
+ public List<AnnotatedParameter<X>> getParameters()
+ {
+ return delegate().getParameters();
+ }
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/introspector/ForwardingWBParameter.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/ForwardingWBParameter.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/introspector/ForwardingWBParameter.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/introspector/ForwardingWBParameter.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,38 @@
+/*
+ * 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.introspector;
+
+import javax.enterprise.inject.spi.AnnotatedCallable;
+
+
+public abstract class ForwardingWBParameter<T, X> extends ForwardingWBAnnotated<T, Object> implements WBParameter<T, X>
+{
+
+ @Override
+ protected abstract WBParameter<T, X> delegate();
+
+ public AnnotatedCallable<X> getDeclaringCallable()
+ {
+ return delegate().getDeclaringCallable();
+ }
+
+ public int getPosition()
+ {
+ return delegate().getPosition();
+ }
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/introspector/MethodSignature.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/MethodSignature.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/introspector/MethodSignature.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/introspector/MethodSignature.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,28 @@
+/*
+ * 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.introspector;
+
+import java.io.Serializable;
+
+public interface MethodSignature extends Serializable
+{
+
+ public String getMethodName();
+
+ public String[] getParameterTypes();
+
+}
\ No newline at end of file
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/introspector/WBAnnotated.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/WBAnnotated.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/introspector/WBAnnotated.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/introspector/WBAnnotated.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,198 @@
+/*
+ * 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.introspector;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Type;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.enterprise.context.NormalScope;
+import javax.enterprise.inject.spi.Annotated;
+import javax.enterprise.inject.stereotype.Stereotype;
+import javax.inject.Qualifier;
+import javax.inject.Scope;
+import javax.interceptor.InterceptorBinding;
+
+/**
+ * AnnotatedItem provides a uniform access to the annotations on an annotated
+ * item defined either in Java or XML
+ *
+ * @author Pete Muir
+ *
+ */
+public interface WBAnnotated<T, S> extends Annotated
+{
+
+ // The set of meta-annotations to map
+ @SuppressWarnings("unchecked")
+ public static final Set<Class<? extends Annotation>> MAPPED_METAANNOTATIONS = new HashSet<Class<? extends Annotation>>(Arrays.asList(Qualifier.class, Stereotype.class, Scope.class, NormalScope.class, InterceptorBinding.class));
+
+ /**
+ * Gets all annotations which are annotated with the given meta annotation
+ * type
+ *
+ * @param The meta annotation to match
+ * @return A set of matching meta-annotations. Returns an empty set if there
+ * are no matches.
+ */
+ public Set<Annotation> getMetaAnnotations(Class<? extends Annotation> metaAnnotationType);
+
+ /**
+ * Gets all annotations which are declared on this annotated item with the
+ * given meta annotation type
+ *
+ * @param The meta annotation to match
+ * @return A set of matching meta-annotations. Returns an empty set if there
+ * are no matches.
+ */
+ public Set<Annotation> getDeclaredMetaAnnotations(Class<? extends Annotation> metaAnnotationType);
+
+ /**
+ * Gets all annotations which are annotated with the given meta annotation
+ * type
+ *
+ * @param The meta annotation to match
+ * @return An array of matching meta-annotations. Returns an empty array if
+ * there are no matches.
+ */
+ public Annotation[] getMetaAnnotationsAsArray(Class<? extends Annotation> metaAnnotationType);
+
+ /**
+ * Gets the binding types for this element
+ *
+ * @returns A set of binding types present on the type. Returns an empty set
+ * if there are no matches.
+ * @deprecated This reflection type should not know about JSR-299 binding
+ * types
+ */
+ @Deprecated
+ public Set<Annotation> getQualifiers();
+
+ /**
+ * Gets the binding types for this element
+ *
+ * @returns An array of binding types present on the type. Returns an empty
+ * array if there are no matches.
+ * @deprecated This reflection type should not know about JSR-299 binding
+ * types
+ */
+ @Deprecated
+ public Annotation[] getBindingsAsArray();
+
+ /**
+ * Get the type hierarchy of any interfaces implemented by this class.
+ *
+ * Interface hierarchies from super classes are not included.
+ *
+ * The returned types should have any type parameters resolved to their
+ * actual types.
+ *
+ * @return the type hierarchy
+ */
+ public Set<Type> getInterfaceOnlyFlattenedTypeHierarchy();
+
+ /**
+ * Indicates if an annotation type specified is present
+ *
+ * @param annotationType The annotation to match
+ * @return True if present, false if not
+ */
+ public boolean isDeclaredAnnotationPresent(Class<? extends Annotation> annotationType);
+
+ /**
+ * Gets the type of the element
+ *
+ * @return The type of the element
+ */
+ public Class<T> getJavaClass();
+
+ /**
+ * Extends Java Class assignability such that actual type parameters are also
+ * considered
+ *
+ * @param that The other item to check assignability against
+ * @return True if assignable, false otherwise.
+ */
+ public boolean isAssignableFrom(WBAnnotated<?, ?> that);
+
+ /**
+ * Extends Java Class assignability such that actual type parameters are also
+ * considered
+ *
+ * @param type The type to compare against
+ * @param actualTypeArguments The type arguments
+ * @return True is assignable, false otherwise
+ */
+ public boolean isAssignableFrom(Class<?> type, Type[] actualTypeArguments);
+
+ /**
+ * Gets the actual type arguments for any parameterized types that this
+ * AnnotatedItem represents.
+ *
+ * @return An array of type arguments
+ */
+ public Type[] getActualTypeArguments();
+
+ /**
+ * Indicates if this AnnotatedItem represents a static element
+ *
+ * @return True if static, false otherwise
+ */
+ public boolean isStatic();
+
+ /**
+ * Indicates if this AnnotatedItem represents a final element
+ *
+ * @return True if final, false otherwise
+ */
+ public boolean isFinal();
+
+ /**
+ * Indicates if this AnnotatedItem can be proxyed
+ *
+ * @return True if proxyable, false otherwise
+ */
+ public boolean isProxyable();
+
+ /**
+ * Indicates if this annotated item is public
+ *
+ * @return if public, returns true
+ */
+ public boolean isPublic();
+
+ public boolean isPrivate();
+
+ public boolean isPackagePrivate();
+
+ public Package getPackage();
+
+ /**
+ * Gets the name of this AnnotatedItem
+ *
+ * If it is not possible to determine the name of the underling element, a
+ * IllegalArgumentException is thrown
+ *
+ * @return The name
+ */
+ public String getName();
+
+ public boolean isParameterizedType();
+
+}
\ No newline at end of file
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/introspector/WBAnnotation.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/WBAnnotation.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/introspector/WBAnnotation.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/introspector/WBAnnotation.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,53 @@
+/*
+ * 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.introspector;
+
+import java.lang.annotation.Annotation;
+import java.util.Set;
+
+/**
+ * Represents a meta annotation
+ *
+ * @author Pete Muir
+ *
+ */
+public interface WBAnnotation<T extends Annotation> extends WBClass<T>
+{
+ /**
+ * Gets all members
+ *
+ * @return A set of abstracted members
+ */
+ public Set<WBMethod<?, ?>> getMembers();
+
+ /**
+ * Gets all the members annotated with annotationType
+ *
+ * @param annotationType The annotation type to match
+ * @return A set of abstracted members with the annotation type
+ */
+ public Set<WBMethod<?, ?>> getAnnotatedMembers(Class<? extends Annotation> annotationType);
+
+ /**
+ * Get an annotation member by name
+ *
+ * @param memberName
+ * @return
+ */
+ public <A> WBMethod<A, ?> getMember(String memberName, WBClass<A> expectedType);
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/introspector/WBCallable.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/WBCallable.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/introspector/WBCallable.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/introspector/WBCallable.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,49 @@
+/*
+ * 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.introspector;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Member;
+import java.util.List;
+
+import javax.enterprise.inject.spi.AnnotatedCallable;
+
+/**
+ * @author pmuir
+ *
+ */
+public interface WBCallable<T, X, S extends Member> extends WBMember<T, X, S>, AnnotatedCallable<X>
+{
+
+ /**
+ * Gets the abstracted parameters of the method
+ *
+ * @return A list of parameters. Returns an empty list if no parameters are
+ * present.
+ */
+ public List<? extends WBParameter<?, ?>> getWBParameters();
+
+ /**
+ * Gets the list of annotated parameters for a given annotation
+ *
+ * @param metaAnnotationType The annotation to match
+ * @return A set of matching parameter abstractions. Returns an empty list if
+ * there are no matches.
+ */
+ public List<WBParameter<?, ?>> getAnnotatedWBParameters(Class<? extends Annotation> metaAnnotationType);
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/introspector/WBClass.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/WBClass.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/introspector/WBClass.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/introspector/WBClass.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,235 @@
+/*
+ * 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.introspector;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Method;
+import java.util.Set;
+
+import javax.enterprise.inject.spi.AnnotatedType;
+
+/**
+ * Represents a Class
+ *
+ * @author Pete Muir
+ *
+ */
+public interface WBClass<T> extends WBAnnotated<T, Class<T>>, AnnotatedType<T>
+{
+
+ /**
+ * Gets all fields on the type
+ *
+ * @return A set of abstracted fields
+ */
+ public Set<WBField<?, ?>> getWBFields();
+
+ /**
+ * Gets all fields on the type
+ *
+ * @return A set of abstracted fields
+ */
+ public Set<WBMethod<?, ?>> getWBMethods();
+
+ /**
+ * Gets all fields on the type
+ *
+ * @return A set of abstracted fields
+ */
+ public Set<WBMethod<?, ?>> getDeclaredWBMethods();
+
+ /**
+ * Get a field by name
+ *
+ * @param <F> the expected type of the field
+ * @param fieldName the field name
+ * @param expectedType the expected type of the field
+ * @return the field
+ */
+ public <F> WBField<F, ?> getDeclaredWBField(String fieldName, WBClass<F> expectedType);
+
+ /**
+ * Gets all fields which are annotated with the given annotation type on this
+ * class and all super classes
+ *
+ * @param annotationType The annotation to match
+ * @return A set of abstracted fields with the given annotation. Returns an
+ * empty set if there are no matches
+ */
+ public Set<WBField<?, ?>> getAnnotatedWBFields(Class<? extends Annotation> annotationType);
+
+ /**
+ * Gets all fields which are annotated with the given annotation type on this
+ * class only.
+ *
+ * @param annotationType The annotation to match
+ * @return A set of abstracted fields with the given annotation. Returns an
+ * empty set if there are no matches
+ */
+ public Set<WBField<?, T>> getDeclaredAnnotatedWBFields(Class<? extends Annotation> annotationType);
+
+ /**
+ * Gets all fields which are meta-annotated with metaAnnotationType
+ *
+ * @param metaAnnotationType The meta annotation to match
+ * @return A set of abstracted fields with the given meta-annotation. Returns
+ * an empty set if there are no matches
+ */
+ public Set<WBField<?, ?>> getMetaAnnotatedWBFields(Class<? extends Annotation> metaAnnotationType);
+
+ /**
+ * Gets all constructors which are annotated with annotationType
+ *
+ * @param annotationType The annotation type to match
+ * @return A set of abstracted fields with the given annotation. Returns an
+ * empty set if there are no matches
+ */
+ public Set<WBConstructor<T>> getAnnotatedWBConstructors(Class<? extends Annotation> annotationType);
+
+ /**
+ * Gets all constructors
+ *
+ * @return A set of abstracted constructors
+ */
+ public Set<WBConstructor<T>> getWBConstructors();
+
+ /**
+ * Gets the no-args constructor
+ *
+ * @return The no-args constructor, or null if not defined
+ */
+ public WBConstructor<T> getNoArgsWBConstructor();
+
+ /**
+ * Get the constructor which matches the argument list provided
+ *
+ * @param parameterTypes the parameters of the constructor
+ * @return the matching constructor, or null if not defined
+ */
+ public WBConstructor<T> getDeclaredWBConstructor(ConstructorSignature signature);
+
+ /**
+ * Gets all methods annotated with annotationType
+ *
+ * @param annotationType The annotation to match
+ * @return A set of abstracted methods with the given annotation. Returns an
+ * empty set if there are no matches
+ */
+ public Set<WBMethod<?, ?>> getAnnotatedWBMethods(Class<? extends Annotation> annotationType);
+
+ /**
+ * Gets all methods annotated with annotationType
+ *
+ * @param annotationType The annotation to match
+ * @return A set of abstracted methods with the given annotation. Returns an
+ * empty set if there are no matches
+ */
+ public Set<WBMethod<?, T>> getDeclaredAnnotatedWBMethods(Class<? extends Annotation> annotationType);
+
+ /**
+ * Find the annotated method for a given methodDescriptor
+ *
+ * @param methodDescriptor
+ * @return
+ *
+ */
+ public WBMethod<?, ?> getWBMethod(Method method);
+
+ /**
+ * Get a method by name
+ *
+ * @param <M> the expected return type
+ * @param signature the name of the method
+ * @param expectedReturnType the expected return type
+ * @return the method, or null if it doesn't exist
+ */
+ public <M> WBMethod<M, ?> getDeclaredWBMethod(MethodSignature signature, WBClass<M> expectedReturnType);
+
+ /**
+ * Get a method by name
+ *
+ * @param <M> the expected return type
+ * @param signature the name of the method
+ * @return the method, or null if it doesn't exist
+ */
+ public <M> WBMethod<M, ?> getWBMethod(MethodSignature signature);
+
+ // TODO Replace with AnnotatedMethod variant
+ @Deprecated
+ public WBMethod<?, ?> getDeclaredWBMethod(Method method);
+
+ /**
+ * Gets all with parameters annotated with annotationType
+ *
+ * @param annotationType The annotation to match
+ * @return A set of abstracted methods with the given annotation. Returns an
+ * empty set if there are no matches
+ */
+ public Set<WBMethod<?, ?>> getWBMethodsWithAnnotatedParameters(Class<? extends Annotation> annotationType);
+
+ /**
+ * Gets all with constructors annotated with annotationType
+ *
+ * @param annotationType The annotation to match
+ * @return A set of abstracted constructors with the given annotation. Returns an
+ * empty set if there are no matches
+ */
+ public Set<WBConstructor<?>> getWBConstructorsWithAnnotatedParameters(Class<? extends Annotation> annotationType);
+
+ /**
+ * Gets all with parameters annotated with annotationType
+ *
+ * @param annotationType The annotation to match
+ * @return A set of abstracted methods with the given annotation. Returns an
+ * empty set if there are no matches
+ */
+ public Set<WBMethod<?, T>> getDeclaredWBMethodsWithAnnotatedParameters(Class<? extends Annotation> annotationType);
+
+ /**
+ * Gets the superclass.
+ *
+ * @return The abstracted superclass, null if there is no superclass
+ */
+ public WBClass<?> getWBSuperclass();
+
+ /**
+ * Determine if this is a non-static member class
+ *
+ * @return true if this is a non-static member
+ */
+ public boolean isNonStaticMemberClass();
+
+ public boolean isParameterizedType();
+
+ public boolean isAbstract();
+
+ public boolean isEnum();
+
+ public <S> S cast(Object object);
+
+ public <U> WBClass<? extends U> asWBSubclass(WBClass<U> clazz);
+
+ /**
+ * Check if this is equivalent to a java class
+ * @param clazz The Java class
+ * @return true if equivalent
+ */
+ public boolean isEquivalent(Class<?> clazz);
+
+ public String getSimpleName();
+
+}
\ No newline at end of file
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/introspector/WBConstructor.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/WBConstructor.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/introspector/WBConstructor.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/introspector/WBConstructor.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,50 @@
+/*
+ * 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.introspector;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.decorator.Decorates;
+import javax.enterprise.inject.spi.AnnotatedConstructor;
+
+/**
+ * Represents a Class Constructor
+ *
+ * @author Pete Muir
+ *
+ */
+public interface WBConstructor<T> extends WBCallable<T, T, Constructor<T>>, AnnotatedConstructor<T>
+{
+
+ @SuppressWarnings("unchecked")
+ public static final Set<Class<? extends Annotation>> MAPPED_PARAMETER_ANNOTATIONS = new HashSet<Class<? extends Annotation>>(Arrays.asList(Decorates.class));
+
+ /**
+ * Creates a new instance of the class, using this constructor
+ *
+ * @return The created instance
+ */
+ public T newInstance(Object... parameters) throws IllegalArgumentException, InstantiationException, IllegalAccessException, InvocationTargetException;
+
+ public ConstructorSignature getSignature();
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/introspector/WBField.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/WBField.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/introspector/WBField.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/introspector/WBField.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,53 @@
+/*
+ * 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.introspector;
+
+import java.lang.reflect.Field;
+
+import javax.enterprise.inject.spi.AnnotatedField;
+
+/**
+ * AnnotatedField provides a uniform access to the annotations on an annotated
+ * field
+ *
+ * @author Pete Muir
+ *
+ */
+public interface WBField<T, X> extends WBMember<T, X, Field>, AnnotatedField<X>
+{
+
+ /**
+ * Injects an instance
+ *
+ *
+ * @param declaringInstance The instance to inject into
+ * @param value The value to inject
+ */
+ public void set(Object declaringInstance, Object value) throws IllegalArgumentException, IllegalAccessException;
+
+ public T get(Object instance);
+
+ /**
+ * Gets the property name of the field
+ *
+ * @return The name
+ */
+ public String getPropertyName();
+
+ public boolean isTransient();
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/introspector/WBMember.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/WBMember.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/introspector/WBMember.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/introspector/WBMember.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,40 @@
+/*
+ * 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.introspector;
+
+import java.lang.reflect.Member;
+
+import javax.enterprise.inject.spi.AnnotatedMember;
+/**
+ * AnnotedMember provides enhanced access to an annotated member
+ *
+ * @author Pete Muir
+ *
+ */
+public interface WBMember<T, X, S extends Member> extends WBAnnotated<T, S>, AnnotatedMember<X>
+{
+
+ public S getJavaMember();
+
+ /**
+ * Gets an abstraction of the declaring class
+ *
+ * @return The declaring class
+ */
+ public WBClass<X> getDeclaringType();
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/introspector/WBMethod.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/WBMethod.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/introspector/WBMethod.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/introspector/WBMethod.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,85 @@
+/*
+ * 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.introspector;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.enterprise.event.Observes;
+import javax.enterprise.inject.Disposes;
+import javax.enterprise.inject.spi.AnnotatedMethod;
+
+/**
+ * AnnotatedType provides a uniform access to the annotations on an annotated
+ * class defined either in Java or XML
+ *
+ * @author Pete Muir
+ *
+ */
+public interface WBMethod<T, X> extends WBCallable<T, X, Method>, AnnotatedMethod<X>
+{
+ @SuppressWarnings("unchecked")
+ public static final Set<Class<? extends Annotation>> MAPPED_PARAMETER_ANNOTATIONS = new HashSet<Class<? extends Annotation>>(Arrays.asList(Disposes.class, Observes.class, Disposes.class));
+
+ /**
+ * Get the parameter types as an array
+ */
+ public Class<?>[] getParameterTypesAsArray();
+
+ /**
+ * Invokes the method
+ *
+ * @param instance The instance to invoke
+ * @param parameters The method parameters
+ * @return A reference to the instance
+ */
+ public T invoke(Object instance, Object... parameters) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException;
+
+ /**
+ * Invokes the method on the class of the passed instance, not the declaring
+ * class. Useful with proxies
+ *
+ * @param instance The instance to invoke
+ * @param manager The Web Beans manager
+ * @return A reference to the instance
+ */
+ public T invokeOnInstance(Object instance, Object... parameters) throws IllegalArgumentException, SecurityException, IllegalAccessException, InvocationTargetException, NoSuchMethodException;
+
+ /**
+ * Gets the property name
+ *
+ * @return The name
+ */
+ public String getPropertyName();
+
+ /**
+ * Checks if a this is equivalent to a JLR method
+ *
+ * @param method The JLR method
+ * @return true if equivalent
+ */
+ public boolean isEquivalent(Method method);
+
+ public Method getAnnotatedMethod();
+
+ public MethodSignature getSignature();
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/introspector/WBParameter.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/WBParameter.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/introspector/WBParameter.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/introspector/WBParameter.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,31 @@
+/*
+ * 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.introspector;
+
+import javax.enterprise.inject.spi.AnnotatedParameter;
+
+/**
+ * AnnotatedParameter provides a uniform access to a method parameter defined
+ * either in Java or XML
+ *
+ * @author Pete Muir
+ * @param <T>
+ */
+public interface WBParameter<T, X> extends WBAnnotated<T, Object>, AnnotatedParameter<X>
+{
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/jlr)
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/AbstractWBAnnotated.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/jlr/AbstractWBAnnotated.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/AbstractWBAnnotated.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.introspector.jlr;
+package org.jboss.weld.introspector.jlr;
import java.lang.annotation.Annotation;
import java.lang.reflect.ParameterizedType;
@@ -24,10 +24,10 @@
import java.util.HashSet;
import java.util.Set;
-import org.jboss.webbeans.introspector.AnnotationStore;
-import org.jboss.webbeans.introspector.WBAnnotated;
-import org.jboss.webbeans.util.Proxies;
-import org.jboss.webbeans.util.Reflections;
+import org.jboss.weld.introspector.AnnotationStore;
+import org.jboss.weld.introspector.WBAnnotated;
+import org.jboss.weld.util.Proxies;
+import org.jboss.weld.util.Reflections;
/**
* Represents functionality common for all annotated items, mainly different
@@ -41,7 +41,7 @@
* @param <T>
* @param <S>
*
- * @see org.jboss.webbeans.introspector.WBAnnotated
+ * @see org.jboss.weld.introspector.WBAnnotated
*/
public abstract class AbstractWBAnnotated<T, S> implements WBAnnotated<T, S>
{
@@ -144,7 +144,7 @@
* @param annotatedType The annotation type to check for
* @return True if present, false otherwise.
*
- * @see org.jboss.webbeans.introspector.WBAnnotated#isAnnotationPresent(Class)
+ * @see org.jboss.weld.introspector.WBAnnotated#isAnnotationPresent(Class)
*/
public boolean isAnnotationPresent(Class<? extends Annotation> annotatedType)
{
@@ -175,7 +175,7 @@
* @param that The other annotated item to check against
* @return True if assignable, false otherwise
*
- * @see org.jboss.webbeans.introspector.WBAnnotated#isAssignableFrom(WBAnnotated)
+ * @see org.jboss.weld.introspector.WBAnnotated#isAssignableFrom(WBAnnotated)
*/
public boolean isAssignableFrom(WBAnnotated<?, ?> that)
{
@@ -233,7 +233,7 @@
*
* @return An array of (binding type) annotations
*
- * @see org.jboss.webbeans.introspector.WBAnnotated#getBindingsAsArray()
+ * @see org.jboss.weld.introspector.WBAnnotated#getBindingsAsArray()
*/
@Deprecated
public Annotation[] getBindingsAsArray()
@@ -246,7 +246,7 @@
*
* @return True if proxyable, false otherwise.
*
- * @see org.jboss.webbeans.introspector.WBAnnotated#isProxyable()
+ * @see org.jboss.weld.introspector.WBAnnotated#isProxyable()
*/
public boolean isProxyable()
{
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/AbstractWBCallable.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/jlr/AbstractWBCallable.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/AbstractWBCallable.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,14 +14,14 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.introspector.jlr;
+package org.jboss.weld.introspector.jlr;
import java.lang.reflect.Member;
import java.lang.reflect.Type;
-import org.jboss.webbeans.introspector.AnnotationStore;
-import org.jboss.webbeans.introspector.WBCallable;
-import org.jboss.webbeans.introspector.WBClass;
+import org.jboss.weld.introspector.AnnotationStore;
+import org.jboss.weld.introspector.WBCallable;
+import org.jboss.weld.introspector.WBClass;
/**
* @author pmuir
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/AbstractWBMember.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/jlr/AbstractWBMember.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/AbstractWBMember.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,17 +14,17 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.introspector.jlr;
+package org.jboss.weld.introspector.jlr;
import java.lang.reflect.Member;
import java.lang.reflect.Modifier;
import java.lang.reflect.Type;
-import org.jboss.webbeans.introspector.AnnotationStore;
-import org.jboss.webbeans.introspector.ForwardingWBMember;
-import org.jboss.webbeans.introspector.WBClass;
-import org.jboss.webbeans.introspector.WBMember;
-import org.jboss.webbeans.util.Reflections;
+import org.jboss.weld.introspector.AnnotationStore;
+import org.jboss.weld.introspector.ForwardingWBMember;
+import org.jboss.weld.introspector.WBClass;
+import org.jboss.weld.introspector.WBMember;
+import org.jboss.weld.util.Reflections;
/**
* Represents an abstract annotated memeber (field, method or constructor)
@@ -76,7 +76,7 @@
*
* @return True if static, false otherwise
*
- * @see org.jboss.webbeans.introspector.WBAnnotated#isStatic()
+ * @see org.jboss.weld.introspector.WBAnnotated#isStatic()
*/
public boolean isStatic()
{
@@ -88,7 +88,7 @@
*
* @return True if final, false otherwise
*
- * @see org.jboss.webbeans.introspector.WBAnnotated#isFinal()
+ * @see org.jboss.weld.introspector.WBAnnotated#isFinal()
*/
public boolean isFinal()
{
@@ -136,7 +136,7 @@
*
* @returns The name
*
- * @see org.jboss.webbeans.introspector.WBAnnotated#getName()
+ * @see org.jboss.weld.introspector.WBAnnotated#getName()
*/
public String getName()
{
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/ConstructorSignatureImpl.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/jlr/ConstructorSignatureImpl.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/ConstructorSignatureImpl.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,12 +14,12 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.introspector.jlr;
+package org.jboss.weld.introspector.jlr;
import java.util.Arrays;
-import org.jboss.webbeans.introspector.ConstructorSignature;
-import org.jboss.webbeans.introspector.WBConstructor;
+import org.jboss.weld.introspector.ConstructorSignature;
+import org.jboss.weld.introspector.WBConstructor;
public class ConstructorSignatureImpl implements ConstructorSignature
{
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/MethodSignatureImpl.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/jlr/MethodSignatureImpl.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/MethodSignatureImpl.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,13 +14,13 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.introspector.jlr;
+package org.jboss.weld.introspector.jlr;
import java.lang.reflect.Method;
import java.util.Arrays;
-import org.jboss.webbeans.introspector.MethodSignature;
-import org.jboss.webbeans.introspector.WBMethod;
+import org.jboss.weld.introspector.MethodSignature;
+import org.jboss.weld.introspector.WBMethod;
public class MethodSignatureImpl implements MethodSignature
{
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WBAnnotationImpl.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/jlr/WBAnnotationImpl.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WBAnnotationImpl.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.introspector.jlr;
+package org.jboss.weld.introspector.jlr;
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
@@ -25,12 +25,12 @@
import java.util.Map;
import java.util.Set;
-import org.jboss.webbeans.introspector.AnnotationStore;
-import org.jboss.webbeans.introspector.WBAnnotation;
-import org.jboss.webbeans.introspector.WBClass;
-import org.jboss.webbeans.introspector.WBMethod;
-import org.jboss.webbeans.resources.ClassTransformer;
-import org.jboss.webbeans.util.Names;
+import org.jboss.weld.introspector.AnnotationStore;
+import org.jboss.weld.introspector.WBAnnotation;
+import org.jboss.weld.introspector.WBClass;
+import org.jboss.weld.introspector.WBMethod;
+import org.jboss.weld.resources.ClassTransformer;
+import org.jboss.weld.util.Names;
import com.google.common.base.Supplier;
import com.google.common.collect.Multimaps;
@@ -107,7 +107,7 @@
*
* @return The set of abstracted members
*
- * @see org.jboss.webbeans.introspector.WBAnnotation#getMembers()
+ * @see org.jboss.weld.introspector.WBAnnotation#getMembers()
*/
public Set<WBMethod<?, ?>> getMembers()
{
@@ -123,7 +123,7 @@
* @return The set of abstracted members with the given annotation type
* present. An empty set is returned if no matches are found
*
- * @see org.jboss.webbeans.introspector.WBAnnotation#getAnnotatedMembers(Class)
+ * @see org.jboss.weld.introspector.WBAnnotation#getAnnotatedMembers(Class)
*/
public Set<WBMethod<?, ?>> getAnnotatedMembers(Class<? extends Annotation> annotationType)
{
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WBClassImpl.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/jlr/WBClassImpl.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WBClassImpl.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.introspector.jlr;
+package org.jboss.weld.introspector.jlr;
import java.lang.annotation.Annotation;
import java.lang.reflect.Constructor;
@@ -37,16 +37,16 @@
import javax.enterprise.inject.spi.AnnotatedMethod;
import javax.enterprise.inject.spi.AnnotatedType;
-import org.jboss.webbeans.introspector.AnnotationStore;
-import org.jboss.webbeans.introspector.ConstructorSignature;
-import org.jboss.webbeans.introspector.MethodSignature;
-import org.jboss.webbeans.introspector.WBClass;
-import org.jboss.webbeans.introspector.WBConstructor;
-import org.jboss.webbeans.introspector.WBField;
-import org.jboss.webbeans.introspector.WBMethod;
-import org.jboss.webbeans.resources.ClassTransformer;
-import org.jboss.webbeans.util.Names;
-import org.jboss.webbeans.util.Reflections;
+import org.jboss.weld.introspector.AnnotationStore;
+import org.jboss.weld.introspector.ConstructorSignature;
+import org.jboss.weld.introspector.MethodSignature;
+import org.jboss.weld.introspector.WBClass;
+import org.jboss.weld.introspector.WBConstructor;
+import org.jboss.weld.introspector.WBField;
+import org.jboss.weld.introspector.WBMethod;
+import org.jboss.weld.resources.ClassTransformer;
+import org.jboss.weld.util.Names;
+import org.jboss.weld.util.Reflections;
import com.google.common.base.Supplier;
import com.google.common.collect.Multimaps;
@@ -556,7 +556,7 @@
* @return A set of matching method abstractions. Returns an empty set if no
* matches are found.
*
- * @see org.jboss.webbeans.introspector.WBClass#getAnnotatedWBMethods(Class)
+ * @see org.jboss.weld.introspector.WBClass#getAnnotatedWBMethods(Class)
*/
public Set<WBMethod<?, ?>> getAnnotatedWBMethods(Class<? extends Annotation> annotationType)
{
@@ -576,7 +576,7 @@
* the constructors set is empty, initialize it first. Returns an
* empty set if there are no matches.
*
- * @see org.jboss.webbeans.introspector.WBClass#getAnnotatedWBConstructors(Class)
+ * @see org.jboss.weld.introspector.WBClass#getAnnotatedWBConstructors(Class)
*/
public Set<WBConstructor<T>> getAnnotatedWBConstructors(Class<? extends Annotation> annotationType)
{
@@ -672,7 +672,7 @@
*
* @return True if static, false otherwise
*
- * @see org.jboss.webbeans.introspector.WBAnnotated#isStatic()
+ * @see org.jboss.weld.introspector.WBAnnotated#isStatic()
*/
public boolean isStatic()
{
@@ -684,7 +684,7 @@
*
* @return True if final, false otherwise
*
- * @see org.jboss.webbeans.introspector.WBAnnotated#isFinal()
+ * @see org.jboss.weld.introspector.WBAnnotated#isFinal()
*/
public boolean isFinal()
{
@@ -701,7 +701,7 @@
*
* @returns The name
*
- * @see org.jboss.webbeans.introspector.WBAnnotated#getName()
+ * @see org.jboss.weld.introspector.WBAnnotated#getName()
*/
public String getName()
{
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WBConstructorImpl.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/jlr/WBConstructorImpl.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WBConstructorImpl.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,9 +14,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.introspector.jlr;
+package org.jboss.weld.introspector.jlr;
-import static org.jboss.webbeans.util.Reflections.ensureAccessible;
+import static org.jboss.weld.util.Reflections.ensureAccessible;
import java.lang.annotation.Annotation;
import java.lang.reflect.Constructor;
@@ -32,13 +32,13 @@
import javax.enterprise.inject.spi.AnnotatedConstructor;
import javax.enterprise.inject.spi.AnnotatedParameter;
-import org.jboss.webbeans.BeanManagerImpl;
-import org.jboss.webbeans.introspector.AnnotationStore;
-import org.jboss.webbeans.introspector.ConstructorSignature;
-import org.jboss.webbeans.introspector.WBClass;
-import org.jboss.webbeans.introspector.WBConstructor;
-import org.jboss.webbeans.introspector.WBParameter;
-import org.jboss.webbeans.resources.ClassTransformer;
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.introspector.AnnotationStore;
+import org.jboss.weld.introspector.ConstructorSignature;
+import org.jboss.weld.introspector.WBClass;
+import org.jboss.weld.introspector.WBConstructor;
+import org.jboss.weld.introspector.WBParameter;
+import org.jboss.weld.resources.ClassTransformer;
import com.google.common.base.Supplier;
import com.google.common.collect.ListMultimap;
@@ -192,7 +192,7 @@
*
* @return A list of annotated parameter abstractions
*
- * @see org.jboss.webbeans.introspector.WBConstructor#getWBParameters()
+ * @see org.jboss.weld.introspector.WBConstructor#getWBParameters()
*/
public List<WBParameter<?, ?>> getWBParameters()
{
@@ -208,7 +208,7 @@
* @return A list of matching parameter abstractions. An empty list is
* returned if there are no matches.
*
- * @see org.jboss.webbeans.introspector.WBConstructor#getAnnotatedWBParameters(Class)
+ * @see org.jboss.weld.introspector.WBConstructor#getAnnotatedWBParameters(Class)
*/
public List<WBParameter<?, ?>> getAnnotatedWBParameters(Class<? extends Annotation> annotationType)
{
@@ -225,7 +225,7 @@
* @throws InstantiationException
* @throws IllegalArgumentException
*
- * @see org.jboss.webbeans.introspector.WBConstructor#newInstance(BeanManagerImpl)
+ * @see org.jboss.weld.introspector.WBConstructor#newInstance(BeanManagerImpl)
*/
public T newInstance(Object... parameters) throws IllegalArgumentException, InstantiationException, IllegalAccessException, InvocationTargetException
{
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WBFieldImpl.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/jlr/WBFieldImpl.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WBFieldImpl.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,19 +14,19 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.introspector.jlr;
+package org.jboss.weld.introspector.jlr;
-import static org.jboss.webbeans.util.Reflections.ensureAccessible;
+import static org.jboss.weld.util.Reflections.ensureAccessible;
import java.lang.reflect.Field;
import javax.enterprise.inject.spi.AnnotatedField;
-import org.jboss.webbeans.introspector.AnnotationStore;
-import org.jboss.webbeans.introspector.WBClass;
-import org.jboss.webbeans.introspector.WBField;
-import org.jboss.webbeans.resources.ClassTransformer;
-import org.jboss.webbeans.util.Reflections;
+import org.jboss.weld.introspector.AnnotationStore;
+import org.jboss.weld.introspector.WBClass;
+import org.jboss.weld.introspector.WBField;
+import org.jboss.weld.resources.ClassTransformer;
+import org.jboss.weld.util.Reflections;
/**
* Represents an annotated field
@@ -111,7 +111,7 @@
*
* @return The property name
*
- * @see org.jboss.webbeans.introspector.WBField#getName()
+ * @see org.jboss.weld.introspector.WBField#getName()
*/
public String getPropertyName()
{
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WBMethodImpl.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/jlr/WBMethodImpl.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WBMethodImpl.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,9 +14,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.introspector.jlr;
+package org.jboss.weld.introspector.jlr;
-import static org.jboss.webbeans.util.Reflections.ensureAccessible;
+import static org.jboss.weld.util.Reflections.ensureAccessible;
import java.lang.annotation.Annotation;
import java.lang.reflect.InvocationTargetException;
@@ -33,13 +33,13 @@
import javax.enterprise.inject.spi.AnnotatedMethod;
import javax.enterprise.inject.spi.AnnotatedParameter;
-import org.jboss.webbeans.introspector.AnnotationStore;
-import org.jboss.webbeans.introspector.MethodSignature;
-import org.jboss.webbeans.introspector.WBClass;
-import org.jboss.webbeans.introspector.WBMethod;
-import org.jboss.webbeans.introspector.WBParameter;
-import org.jboss.webbeans.resources.ClassTransformer;
-import org.jboss.webbeans.util.Reflections;
+import org.jboss.weld.introspector.AnnotationStore;
+import org.jboss.weld.introspector.MethodSignature;
+import org.jboss.weld.introspector.WBClass;
+import org.jboss.weld.introspector.WBMethod;
+import org.jboss.weld.introspector.WBParameter;
+import org.jboss.weld.resources.ClassTransformer;
+import org.jboss.weld.util.Reflections;
import com.google.common.base.Supplier;
import com.google.common.collect.ListMultimap;
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WBParameterImpl.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/introspector/jlr/WBParameterImpl.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/introspector/jlr/WBParameterImpl.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.introspector.jlr;
+package org.jboss.weld.introspector.jlr;
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
@@ -22,10 +22,10 @@
import javax.enterprise.inject.spi.AnnotatedCallable;
-import org.jboss.webbeans.introspector.AnnotationStore;
-import org.jboss.webbeans.introspector.WBCallable;
-import org.jboss.webbeans.introspector.WBParameter;
-import org.jboss.webbeans.resources.ClassTransformer;
+import org.jboss.weld.introspector.AnnotationStore;
+import org.jboss.weld.introspector.WBCallable;
+import org.jboss.weld.introspector.WBParameter;
+import org.jboss.weld.resources.ClassTransformer;
/**
* Represents a parameter
@@ -84,7 +84,7 @@
*
* @return True if final, false otherwise
*
- * @see org.jboss.webbeans.introspector.WBAnnotated#isFinal()
+ * @see org.jboss.weld.introspector.WBAnnotated#isFinal()
*/
public boolean isFinal()
{
@@ -96,7 +96,7 @@
*
* @return True if static, false otherwise
*
- * @see org.jboss.webbeans.introspector.WBAnnotated#isStatic()
+ * @see org.jboss.weld.introspector.WBAnnotated#isStatic()
*/
public boolean isStatic()
{
@@ -128,7 +128,7 @@
*
* @throws IllegalArgumentException (not supported)
*
- * @see org.jboss.webbeans.introspector.WBAnnotated#getName()
+ * @see org.jboss.weld.introspector.WBAnnotated#getName()
*/
public String getName()
{
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/jsf (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/jsf)
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/jsf/ConversationAwareViewHandler.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/jsf/ConversationAwareViewHandler.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/jsf/ConversationAwareViewHandler.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,15 +14,15 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.jsf;
+package org.jboss.weld.jsf;
-import static org.jboss.webbeans.jsf.JsfHelper.getModuleBeanManager;
+import static org.jboss.weld.jsf.JsfHelper.getModuleBeanManager;
import javax.faces.application.ViewHandler;
import javax.faces.application.ViewHandlerWrapper;
import javax.faces.context.FacesContext;
-import org.jboss.webbeans.conversation.ConversationImpl;
+import org.jboss.weld.conversation.ConversationImpl;
/**
* <p>
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/jsf/FacesUrlTransformer.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/jsf/FacesUrlTransformer.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/jsf/FacesUrlTransformer.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,14 +14,14 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.jsf;
+package org.jboss.weld.jsf;
-import static org.jboss.webbeans.jsf.JsfHelper.getModuleBeanManager;
+import static org.jboss.weld.jsf.JsfHelper.getModuleBeanManager;
import javax.enterprise.inject.AnnotationLiteral;
import javax.faces.context.FacesContext;
-import org.jboss.webbeans.conversation.ConversationIdName;
+import org.jboss.weld.conversation.ConversationIdName;
/**
* Helper class for preparing JSF URLs which include the conversation id.
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/jsf/JsfApiAbstraction.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/jsf/JsfApiAbstraction.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/jsf/JsfApiAbstraction.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,11 +14,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.jsf;
+package org.jboss.weld.jsf;
-import org.jboss.webbeans.bootstrap.api.Service;
-import org.jboss.webbeans.resources.spi.ResourceLoader;
-import org.jboss.webbeans.util.ApiAbstraction;
+import org.jboss.weld.bootstrap.api.Service;
+import org.jboss.weld.resources.spi.ResourceLoader;
+import org.jboss.weld.util.ApiAbstraction;
/**
* Utility class for JSF related components, concepts etc. It can also
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/jsf/JsfHelper.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/jsf/JsfHelper.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/jsf/JsfHelper.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,20 +14,20 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.jsf;
+package org.jboss.weld.jsf;
import javax.enterprise.inject.AnnotationLiteral;
import javax.faces.context.FacesContext;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpSession;
-import org.jboss.webbeans.BeanManagerImpl;
-import org.jboss.webbeans.Container;
-import org.jboss.webbeans.conversation.ConversationIdName;
-import org.jboss.webbeans.log.LogProvider;
-import org.jboss.webbeans.log.Logging;
-import org.jboss.webbeans.servlet.ServletHelper;
-import org.jboss.webbeans.util.Reflections;
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.Container;
+import org.jboss.weld.conversation.ConversationIdName;
+import org.jboss.weld.log.LogProvider;
+import org.jboss.weld.log.Logging;
+import org.jboss.weld.servlet.ServletHelper;
+import org.jboss.weld.util.Reflections;
/**
* Helper class for JSF related operations
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/jsf/WebBeansPhaseListener.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/jsf/WebBeansPhaseListener.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/jsf/WebBeansPhaseListener.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -20,11 +20,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.jsf;
+package org.jboss.weld.jsf;
-import static org.jboss.webbeans.jsf.JsfHelper.getConversationId;
-import static org.jboss.webbeans.jsf.JsfHelper.getHttpSession;
-import static org.jboss.webbeans.jsf.JsfHelper.getModuleBeanManager;
+import static org.jboss.weld.jsf.JsfHelper.getConversationId;
+import static org.jboss.weld.jsf.JsfHelper.getHttpSession;
+import static org.jboss.weld.jsf.JsfHelper.getModuleBeanManager;
import javax.faces.context.FacesContext;
import javax.faces.event.PhaseEvent;
@@ -32,17 +32,17 @@
import javax.faces.event.PhaseListener;
import javax.servlet.http.HttpSession;
-import org.jboss.webbeans.BeanManagerImpl;
-import org.jboss.webbeans.Container;
-import org.jboss.webbeans.context.ContextLifecycle;
-import org.jboss.webbeans.context.ConversationContext;
-import org.jboss.webbeans.context.SessionContext;
-import org.jboss.webbeans.conversation.ConversationImpl;
-import org.jboss.webbeans.conversation.ConversationManager;
-import org.jboss.webbeans.log.LogProvider;
-import org.jboss.webbeans.log.Logging;
-import org.jboss.webbeans.servlet.ConversationBeanStore;
-import org.jboss.webbeans.servlet.HttpSessionManager;
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.Container;
+import org.jboss.weld.context.ContextLifecycle;
+import org.jboss.weld.context.ConversationContext;
+import org.jboss.weld.context.SessionContext;
+import org.jboss.weld.conversation.ConversationImpl;
+import org.jboss.weld.conversation.ConversationManager;
+import org.jboss.weld.log.LogProvider;
+import org.jboss.weld.log.Logging;
+import org.jboss.weld.servlet.ConversationBeanStore;
+import org.jboss.weld.servlet.HttpSessionManager;
/**
* <p>
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/jsp (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/jsp)
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/literal (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/literal)
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/literal/AnyLiteral.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/literal/AnyLiteral.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/literal/AnyLiteral.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.literal;
+package org.jboss.weld.literal;
import javax.enterprise.inject.AnnotationLiteral;
import javax.enterprise.inject.Any;
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/literal/BindingTypeLiteral.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/literal/BindingTypeLiteral.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/literal/BindingTypeLiteral.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.literal;
+package org.jboss.weld.literal;
import javax.enterprise.inject.AnnotationLiteral;
import javax.inject.Qualifier;
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/literal/DefaultLiteral.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/literal/DefaultLiteral.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/literal/DefaultLiteral.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.literal;
+package org.jboss.weld.literal;
import javax.enterprise.inject.AnnotationLiteral;
import javax.enterprise.inject.Default;
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/literal/InjectLiteral.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/literal/InjectLiteral.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/literal/InjectLiteral.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.literal;
+package org.jboss.weld.literal;
import javax.enterprise.inject.AnnotationLiteral;
import javax.inject.Inject;
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/literal/InterceptorBindingTypeLiteral.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/literal/InterceptorBindingTypeLiteral.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/literal/InterceptorBindingTypeLiteral.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.literal;
+package org.jboss.weld.literal;
import javax.enterprise.inject.AnnotationLiteral;
import javax.interceptor.InterceptorBinding;
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/literal/NewLiteral.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/literal/NewLiteral.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/literal/NewLiteral.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.literal;
+package org.jboss.weld.literal;
import javax.enterprise.inject.AnnotationLiteral;
import javax.enterprise.inject.New;
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/literal/NormalScopeLiteral.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/literal/NormalScopeLiteral.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/literal/NormalScopeLiteral.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.literal;
+package org.jboss.weld.literal;
import javax.enterprise.context.NormalScope;
import javax.enterprise.inject.AnnotationLiteral;
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/literal/ScopeLiteral.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/literal/ScopeLiteral.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/literal/ScopeLiteral.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.literal;
+package org.jboss.weld.literal;
import javax.enterprise.inject.AnnotationLiteral;
import javax.inject.Scope;
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/literal/StereotypeLiteral.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/literal/StereotypeLiteral.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/literal/StereotypeLiteral.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.literal;
+package org.jboss.weld.literal;
import javax.enterprise.inject.AnnotationLiteral;
import javax.enterprise.inject.stereotype.Stereotype;
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/metadata/TypeStore.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/metadata/TypeStore.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/metadata/TypeStore.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/metadata/TypeStore.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,70 @@
+/*
+ * 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.metadata;
+
+import java.lang.annotation.Annotation;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.jboss.weld.bootstrap.api.Service;
+
+import com.google.common.base.Supplier;
+import com.google.common.collect.Multimaps;
+import com.google.common.collect.SetMultimap;
+
+/**
+ * @author pmuir
+ *
+ */
+public class TypeStore implements Service
+{
+
+ private final SetMultimap<Class<? extends Annotation>, Annotation> extraAnnotations;
+
+ public TypeStore()
+ {
+ this.extraAnnotations = Multimaps.synchronizedSetMultimap(Multimaps.newSetMultimap(new HashMap<Class<? extends Annotation>, Collection<Annotation>>(), new Supplier<Set<Annotation>>()
+ {
+
+ public Set<Annotation> get()
+ {
+ return new HashSet<Annotation>();
+ }
+
+ }));
+ }
+
+ public Set<Annotation> get(Class<? extends Annotation> annotationType)
+ {
+ return extraAnnotations.get(annotationType);
+ }
+
+ public void add(Class<? extends Annotation> annotationType, Annotation annotation)
+ {
+ this.extraAnnotations.put(annotationType, annotation);
+ }
+
+ public void addAll(Class<? extends Annotation> annotationType, Set<Annotation> annotations)
+ {
+ this.extraAnnotations.get(annotationType).addAll(annotations);
+ }
+
+ public void cleanup() {}
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/metadata/cache (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/metadata/cache)
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/metadata/cache/AnnotationModel.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/metadata/cache/AnnotationModel.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/metadata/cache/AnnotationModel.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,18 +14,18 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.metadata.cache;
+package org.jboss.weld.metadata.cache;
import java.lang.annotation.Annotation;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.Set;
-import org.jboss.webbeans.DefinitionException;
-import org.jboss.webbeans.introspector.WBAnnotation;
-import org.jboss.webbeans.log.Log;
-import org.jboss.webbeans.log.Logging;
-import org.jboss.webbeans.resources.ClassTransformer;
+import org.jboss.weld.DefinitionException;
+import org.jboss.weld.introspector.WBAnnotation;
+import org.jboss.weld.log.Log;
+import org.jboss.weld.log.Logging;
+import org.jboss.weld.resources.ClassTransformer;
/**
* Abstract representation of an annotation model
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/metadata/cache/BindingTypeModel.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/metadata/cache/BindingTypeModel.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/metadata/cache/BindingTypeModel.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.metadata.cache;
+package org.jboss.weld.metadata.cache;
import java.lang.annotation.Annotation;
import java.lang.reflect.InvocationTargetException;
@@ -23,13 +23,13 @@
import javax.enterprise.inject.Nonbinding;
import javax.inject.Qualifier;
-import org.jboss.webbeans.DefinitionException;
-import org.jboss.webbeans.introspector.WBMethod;
-import org.jboss.webbeans.log.Log;
-import org.jboss.webbeans.log.Logging;
-import org.jboss.webbeans.resources.ClassTransformer;
-import org.jboss.webbeans.util.Reflections;
-import org.jboss.webbeans.util.collections.Arrays2;
+import org.jboss.weld.DefinitionException;
+import org.jboss.weld.introspector.WBMethod;
+import org.jboss.weld.log.Log;
+import org.jboss.weld.log.Logging;
+import org.jboss.weld.resources.ClassTransformer;
+import org.jboss.weld.util.Reflections;
+import org.jboss.weld.util.collections.Arrays2;
/**
*
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/metadata/cache/InterceptorBindingModel.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/metadata/cache/InterceptorBindingModel.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/metadata/cache/InterceptorBindingModel.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -15,13 +15,13 @@
* limitations under the License.
*/
-package org.jboss.webbeans.metadata.cache;
+package org.jboss.weld.metadata.cache;
-import org.jboss.webbeans.resources.ClassTransformer;
-import org.jboss.webbeans.util.collections.Arrays2;
-import org.jboss.webbeans.log.Log;
-import org.jboss.webbeans.log.Logging;
-import org.jboss.webbeans.introspector.WBMethod;
+import org.jboss.weld.introspector.WBMethod;
+import org.jboss.weld.log.Log;
+import org.jboss.weld.log.Logging;
+import org.jboss.weld.resources.ClassTransformer;
+import org.jboss.weld.util.collections.Arrays2;
import javax.interceptor.InterceptorBinding;
import javax.enterprise.inject.Nonbinding;
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/metadata/cache/MergedStereotypes.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/metadata/cache/MergedStereotypes.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/metadata/cache/MergedStereotypes.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,13 +14,13 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.metadata.cache;
+package org.jboss.weld.metadata.cache;
import java.lang.annotation.Annotation;
import java.util.HashSet;
import java.util.Set;
-import org.jboss.webbeans.BeanManagerImpl;
+import org.jboss.weld.BeanManagerImpl;
/**
* Meta model for the merged stereotype for a bean
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/metadata/cache/MetaAnnotationStore.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/metadata/cache/MetaAnnotationStore.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/metadata/cache/MetaAnnotationStore.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,14 +14,14 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.metadata.cache;
+package org.jboss.weld.metadata.cache;
import java.lang.annotation.Annotation;
import java.util.concurrent.Callable;
-import org.jboss.webbeans.bootstrap.api.Service;
-import org.jboss.webbeans.resources.ClassTransformer;
-import org.jboss.webbeans.util.collections.ConcurrentCache;
+import org.jboss.weld.bootstrap.api.Service;
+import org.jboss.weld.resources.ClassTransformer;
+import org.jboss.weld.util.collections.ConcurrentCache;
/**
* Metadata singleton for holding EJB metadata, scope models etc.
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/metadata/cache/ScopeModel.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/metadata/cache/ScopeModel.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/metadata/cache/ScopeModel.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.metadata.cache;
+package org.jboss.weld.metadata.cache;
import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.ElementType.METHOD;
@@ -27,10 +27,10 @@
import javax.enterprise.context.NormalScope;
import javax.inject.Scope;
-import org.jboss.webbeans.log.Log;
-import org.jboss.webbeans.log.Logging;
-import org.jboss.webbeans.resources.ClassTransformer;
-import org.jboss.webbeans.util.collections.Arrays2;
+import org.jboss.weld.log.Log;
+import org.jboss.weld.log.Logging;
+import org.jboss.weld.resources.ClassTransformer;
+import org.jboss.weld.util.collections.Arrays2;
/**
*
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/metadata/cache/StereotypeModel.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/metadata/cache/StereotypeModel.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/metadata/cache/StereotypeModel.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.metadata.cache;
+package org.jboss.weld.metadata.cache;
import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.ElementType.METHOD;
@@ -33,11 +33,11 @@
import javax.inject.Scope;
import javax.interceptor.InterceptorBinding;
-import org.jboss.webbeans.DefinitionException;
-import org.jboss.webbeans.log.Log;
-import org.jboss.webbeans.log.Logging;
-import org.jboss.webbeans.resources.ClassTransformer;
-import org.jboss.webbeans.util.collections.Arrays2;
+import org.jboss.weld.DefinitionException;
+import org.jboss.weld.log.Log;
+import org.jboss.weld.log.Logging;
+import org.jboss.weld.resources.ClassTransformer;
+import org.jboss.weld.util.collections.Arrays2;
/**
* A meta model for a stereotype, allows us to cache a stereotype and to
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/persistence (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/persistence)
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/persistence/PersistenceApiAbstraction.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/persistence/PersistenceApiAbstraction.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/persistence/PersistenceApiAbstraction.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,13 +14,13 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.persistence;
+package org.jboss.weld.persistence;
import java.lang.annotation.Annotation;
-import org.jboss.webbeans.bootstrap.api.Service;
-import org.jboss.webbeans.resources.spi.ResourceLoader;
-import org.jboss.webbeans.util.ApiAbstraction;
+import org.jboss.weld.bootstrap.api.Service;
+import org.jboss.weld.resources.spi.ResourceLoader;
+import org.jboss.weld.util.ApiAbstraction;
public class PersistenceApiAbstraction extends ApiAbstraction implements Service
{
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/resolution (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution)
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/resolution/ForwardingResolvable.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/ForwardingResolvable.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/resolution/ForwardingResolvable.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,13 +14,13 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.resolution;
+package org.jboss.weld.resolution;
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
import java.util.Set;
-import org.jboss.webbeans.bean.AbstractClassBean;
+import org.jboss.weld.bean.AbstractClassBean;
public abstract class ForwardingResolvable implements Resolvable
{
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/resolution/InterceptorResolvable.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/InterceptorResolvable.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/resolution/InterceptorResolvable.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.jboss.webbeans.resolution;
+package org.jboss.weld.resolution;
import javax.enterprise.inject.spi.InterceptionType;
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/resolution/NameBasedResolver.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/NameBasedResolver.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/resolution/NameBasedResolver.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.resolution;
+package org.jboss.weld.resolution;
import java.util.HashSet;
import java.util.Set;
@@ -22,9 +22,9 @@
import javax.enterprise.inject.spi.Bean;
-import org.jboss.webbeans.BeanManagerImpl;
-import org.jboss.webbeans.util.Beans;
-import org.jboss.webbeans.util.collections.ConcurrentCache;
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.util.Beans;
+import org.jboss.weld.util.collections.ConcurrentCache;
/**
* Implementation of name based bean resolution
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/resolution/NewResolvableTransformer.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/NewResolvableTransformer.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/resolution/NewResolvableTransformer.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.resolution;
+package org.jboss.weld.resolution;
import java.lang.annotation.Annotation;
import java.util.HashSet;
@@ -22,7 +22,7 @@
import javax.enterprise.inject.New;
-import org.jboss.webbeans.literal.NewLiteral;
+import org.jboss.weld.literal.NewLiteral;
/**
* @author pmuir
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/resolution/Resolvable.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/Resolvable.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/resolution/Resolvable.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,13 +14,13 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.resolution;
+package org.jboss.weld.resolution;
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
import java.util.Set;
-import org.jboss.webbeans.bean.AbstractClassBean;
+import org.jboss.weld.bean.AbstractClassBean;
/**
* Something that is resovable by the resolver. A resolvable is defined by it's
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/resolution/ResolvableFactory.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/ResolvableFactory.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/resolution/ResolvableFactory.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.resolution;
+package org.jboss.weld.resolution;
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
@@ -25,10 +25,10 @@
import java.util.Set;
import java.util.Collections;
-import org.jboss.webbeans.bean.AbstractClassBean;
-import org.jboss.webbeans.introspector.WBAnnotated;
-import org.jboss.webbeans.literal.DefaultLiteral;
-import org.jboss.webbeans.util.Reflections;
+import org.jboss.weld.bean.AbstractClassBean;
+import org.jboss.weld.introspector.WBAnnotated;
+import org.jboss.weld.literal.DefaultLiteral;
+import org.jboss.weld.util.Reflections;
import javax.enterprise.inject.spi.InterceptionType;
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/resolution/ResolvableTransformer.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/ResolvableTransformer.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/resolution/ResolvableTransformer.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.resolution;
+package org.jboss.weld.resolution;
public interface ResolvableTransformer
{
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/resolution/ResolvableWBClass.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/ResolvableWBClass.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/resolution/ResolvableWBClass.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.resolution;
+package org.jboss.weld.resolution;
import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
@@ -30,15 +30,15 @@
import javax.enterprise.inject.TypeLiteral;
import javax.enterprise.inject.spi.InjectionPoint;
-import org.jboss.webbeans.BeanManagerImpl;
-import org.jboss.webbeans.bean.AbstractClassBean;
-import org.jboss.webbeans.injection.WBInjectionPoint;
-import org.jboss.webbeans.introspector.AnnotationStore;
-import org.jboss.webbeans.introspector.WBAnnotated;
-import org.jboss.webbeans.introspector.jlr.AbstractWBAnnotated;
-import org.jboss.webbeans.metadata.TypeStore;
-import org.jboss.webbeans.util.Names;
-import org.jboss.webbeans.util.Reflections;
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.bean.AbstractClassBean;
+import org.jboss.weld.injection.WBInjectionPoint;
+import org.jboss.weld.introspector.AnnotationStore;
+import org.jboss.weld.introspector.WBAnnotated;
+import org.jboss.weld.introspector.jlr.AbstractWBAnnotated;
+import org.jboss.weld.metadata.TypeStore;
+import org.jboss.weld.util.Names;
+import org.jboss.weld.util.Reflections;
public class ResolvableWBClass<T> extends AbstractWBAnnotated<T, Class<T>> implements Resolvable
{
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/resolution/TypeSafeBeanResolver.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/TypeSafeBeanResolver.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/resolution/TypeSafeBeanResolver.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.resolution;
+package org.jboss.weld.resolution;
import java.util.Collection;
import java.util.HashSet;
@@ -23,12 +23,12 @@
import javax.enterprise.inject.spi.Bean;
-import org.jboss.webbeans.BeanManagerImpl;
-import org.jboss.webbeans.bean.builtin.facade.EventBean;
-import org.jboss.webbeans.bean.builtin.facade.InstanceBean;
-import org.jboss.webbeans.util.Beans;
-import org.jboss.webbeans.util.Reflections;
-import org.jboss.webbeans.util.collections.ConcurrentCache;
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.bean.builtin.facade.EventBean;
+import org.jboss.weld.bean.builtin.facade.InstanceBean;
+import org.jboss.weld.util.Beans;
+import org.jboss.weld.util.Reflections;
+import org.jboss.weld.util.collections.ConcurrentCache;
/**
* @author pmuir
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/resolution/TypeSafeDecoratorResolver.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/TypeSafeDecoratorResolver.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/resolution/TypeSafeDecoratorResolver.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,17 +14,17 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.resolution;
+package org.jboss.weld.resolution;
import java.util.Comparator;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
-import org.jboss.webbeans.BeanManagerImpl;
-import org.jboss.webbeans.bean.DecoratorImpl;
-import org.jboss.webbeans.util.Beans;
-import org.jboss.webbeans.util.Reflections;
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.bean.DecoratorImpl;
+import org.jboss.weld.util.Beans;
+import org.jboss.weld.util.Reflections;
/**
* @author pmuir
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/resolution/TypeSafeDisposerResolver.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/TypeSafeDisposerResolver.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/resolution/TypeSafeDisposerResolver.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,15 +14,15 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.resolution;
+package org.jboss.weld.resolution;
import java.util.Collections;
import java.util.Set;
-import org.jboss.webbeans.BeanManagerImpl;
-import org.jboss.webbeans.bean.DisposalMethod;
-import org.jboss.webbeans.util.Beans;
-import org.jboss.webbeans.util.Reflections;
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.bean.DisposalMethod;
+import org.jboss.weld.util.Beans;
+import org.jboss.weld.util.Reflections;
/**
* @author pmuir
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/resolution/TypeSafeInterceptorResolver.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/TypeSafeInterceptorResolver.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/resolution/TypeSafeInterceptorResolver.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.jboss.webbeans.resolution;
+package org.jboss.weld.resolution;
import java.util.Collections;
import java.util.Comparator;
@@ -23,9 +23,9 @@
import java.util.Set;
import java.util.TreeSet;
-import org.jboss.webbeans.BeanManagerImpl;
-import org.jboss.webbeans.bean.InterceptorImpl;
-import org.jboss.webbeans.util.Beans;
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.bean.InterceptorImpl;
+import org.jboss.weld.util.Beans;
/**
* @author <a href="mailto:mariusb at redhat.com">Marius Bogoevici</a>
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/resolution/TypeSafeObserverResolver.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/TypeSafeObserverResolver.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/resolution/TypeSafeObserverResolver.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,16 +14,16 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.resolution;
+package org.jboss.weld.resolution;
import java.util.Collections;
import java.util.Set;
import javax.enterprise.inject.spi.ObserverMethod;
-import org.jboss.webbeans.BeanManagerImpl;
-import org.jboss.webbeans.util.Beans;
-import org.jboss.webbeans.util.Reflections;
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.util.Beans;
+import org.jboss.weld.util.Reflections;
/**
* @author pmuir
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/resolution/TypeSafeResolver.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/resolution/TypeSafeResolver.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/resolution/TypeSafeResolver.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,14 +14,14 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.resolution;
+package org.jboss.weld.resolution;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
import java.util.concurrent.Callable;
-import org.jboss.webbeans.util.collections.ConcurrentCache;
+import org.jboss.weld.util.collections.ConcurrentCache;
/**
* Implementation of type safe bean resolution
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/resources (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/resources)
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/resources/ClassTransformer.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/resources/ClassTransformer.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/resources/ClassTransformer.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,20 +14,20 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.resources;
+package org.jboss.weld.resources;
import java.lang.annotation.Annotation;
import java.util.concurrent.Callable;
import javax.enterprise.inject.spi.AnnotatedType;
-import org.jboss.webbeans.bootstrap.api.Service;
-import org.jboss.webbeans.introspector.WBAnnotation;
-import org.jboss.webbeans.introspector.WBClass;
-import org.jboss.webbeans.introspector.jlr.WBAnnotationImpl;
-import org.jboss.webbeans.introspector.jlr.WBClassImpl;
-import org.jboss.webbeans.metadata.TypeStore;
-import org.jboss.webbeans.util.collections.ConcurrentCache;
+import org.jboss.weld.bootstrap.api.Service;
+import org.jboss.weld.introspector.WBAnnotation;
+import org.jboss.weld.introspector.WBClass;
+import org.jboss.weld.introspector.jlr.WBAnnotationImpl;
+import org.jboss.weld.introspector.jlr.WBClassImpl;
+import org.jboss.weld.metadata.TypeStore;
+import org.jboss.weld.util.collections.ConcurrentCache;
public class ClassTransformer implements Service
{
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/resources/DefaultResourceLoader.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/resources/DefaultResourceLoader.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/resources/DefaultResourceLoader.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,15 +14,15 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.resources;
+package org.jboss.weld.resources;
import java.io.IOException;
import java.net.URL;
import java.util.Collection;
-import org.jboss.webbeans.resources.spi.ResourceLoader;
-import org.jboss.webbeans.resources.spi.ResourceLoadingException;
-import org.jboss.webbeans.util.collections.EnumerationList;
+import org.jboss.weld.resources.spi.ResourceLoader;
+import org.jboss.weld.resources.spi.ResourceLoadingException;
+import org.jboss.weld.util.collections.EnumerationList;
/**
* A simple resource loader.
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/resources/ManagerObjectFactory.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/resources/ManagerObjectFactory.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/resources/ManagerObjectFactory.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.resources;
+package org.jboss.weld.resources;
import java.util.Hashtable;
@@ -22,7 +22,7 @@
import javax.naming.Name;
import javax.naming.spi.ObjectFactory;
-import org.jboss.webbeans.Container;
+import org.jboss.weld.Container;
public class ManagerObjectFactory implements ObjectFactory
{
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/servlet (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/servlet)
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/servlet/ApplicationBeanStore.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/servlet/ApplicationBeanStore.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/servlet/ApplicationBeanStore.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,23 +14,23 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.servlet;
+package org.jboss.weld.servlet;
import java.util.Collection;
import java.util.Enumeration;
import javax.servlet.ServletContext;
-import org.jboss.webbeans.context.AbstractApplicationContext;
-import org.jboss.webbeans.context.beanstore.AbstractAttributeBackedBeanStore;
-import org.jboss.webbeans.context.beanstore.NamingScheme;
+import org.jboss.weld.context.AbstractApplicationContext;
+import org.jboss.weld.context.beanstore.AbstractAttributeBackedBeanStore;
+import org.jboss.weld.context.beanstore.NamingScheme;
/**
* A BeanStore that uses a servlet context as backing storage
*
* @author Nicklas Karlsson
*
- * @see org.jboss.webbeans.context.AbstractApplicationContext
+ * @see org.jboss.weld.context.AbstractApplicationContext
*/
public class ApplicationBeanStore extends AbstractAttributeBackedBeanStore
{
@@ -52,7 +52,7 @@
}
/**
- * @see org.jboss.webbeans.context.beanstore.AbstractAttributeBackedBeanStore#getAttribute()
+ * @see org.jboss.weld.context.beanstore.AbstractAttributeBackedBeanStore#getAttribute()
*/
@Override
protected Object getAttribute(String key)
@@ -61,7 +61,7 @@
}
/**
- * @see org.jboss.webbeans.context.beanstore.AbstractAttributeBackedBeanStore#getAttributeNames()
+ * @see org.jboss.weld.context.beanstore.AbstractAttributeBackedBeanStore#getAttributeNames()
*/
@SuppressWarnings("unchecked")
@Override
@@ -71,7 +71,7 @@
}
/**
- * @see org.jboss.webbeans.context.beanstore.AbstractAttributeBackedBeanStore#removeAttributes()
+ * @see org.jboss.weld.context.beanstore.AbstractAttributeBackedBeanStore#removeAttributes()
*/
@Override
protected void removeAttribute(String key)
@@ -80,7 +80,7 @@
}
/**
- * @see org.jboss.webbeans.context.beanstore.AbstractAttributeBackedBeanStore#setAttribute()
+ * @see org.jboss.weld.context.beanstore.AbstractAttributeBackedBeanStore#setAttribute()
*/
@Override
protected void setAttribute(String key, Object instance)
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/servlet/ConversationBeanStore.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/servlet/ConversationBeanStore.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/servlet/ConversationBeanStore.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,12 +14,12 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.servlet;
+package org.jboss.weld.servlet;
import javax.servlet.http.HttpSession;
-import org.jboss.webbeans.context.ConversationContext;
-import org.jboss.webbeans.context.beanstore.NamingScheme;
+import org.jboss.weld.context.ConversationContext;
+import org.jboss.weld.context.beanstore.NamingScheme;
/**
* A HTTP session backed bean store for the conversational scope
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/servlet/ConversationPropagationFilter.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/servlet/ConversationPropagationFilter.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/servlet/ConversationPropagationFilter.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,9 +14,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.servlet;
+package org.jboss.weld.servlet;
-import static org.jboss.webbeans.servlet.ServletHelper.getModuleBeanManager;
+import static org.jboss.weld.servlet.ServletHelper.getModuleBeanManager;
import java.io.IOException;
@@ -33,10 +33,10 @@
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletResponseWrapper;
-import org.jboss.webbeans.conversation.ConversationIdName;
-import org.jboss.webbeans.conversation.ConversationImpl;
-import org.jboss.webbeans.conversation.ConversationManager;
-import org.jboss.webbeans.jsf.FacesUrlTransformer;
+import org.jboss.weld.conversation.ConversationIdName;
+import org.jboss.weld.conversation.ConversationImpl;
+import org.jboss.weld.conversation.ConversationManager;
+import org.jboss.weld.jsf.FacesUrlTransformer;
/**
* <p>A Filter for handling conversation propagation over redirects.</p>
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/servlet/HttpRequestSessionBeanStore.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/servlet/HttpRequestSessionBeanStore.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/servlet/HttpRequestSessionBeanStore.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -4,7 +4,7 @@
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
-package org.jboss.webbeans.servlet;
+package org.jboss.weld.servlet;
import java.util.Collections;
import java.util.Enumeration;
@@ -12,9 +12,9 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
-import org.jboss.webbeans.context.SessionContext;
-import org.jboss.webbeans.context.beanstore.AbstractAttributeBackedBeanStore;
-import org.jboss.webbeans.context.beanstore.NamingScheme;
+import org.jboss.weld.context.SessionContext;
+import org.jboss.weld.context.beanstore.AbstractAttributeBackedBeanStore;
+import org.jboss.weld.context.beanstore.NamingScheme;
/**
* Abstracts the servlet API specific session context
@@ -40,7 +40,7 @@
}
/**
- * @see org.jboss.webbeans.context.beanstore.AbstractAttributeBackedBeanStore#getAttribute()
+ * @see org.jboss.weld.context.beanstore.AbstractAttributeBackedBeanStore#getAttribute()
*/
@Override
protected Object getAttribute(String key)
@@ -50,7 +50,7 @@
}
/**
- * @see org.jboss.webbeans.context.beanstore.AbstractAttributeBackedBeanStore#getAttributeNames()
+ * @see org.jboss.weld.context.beanstore.AbstractAttributeBackedBeanStore#getAttributeNames()
*/
@SuppressWarnings("unchecked")
@Override
@@ -68,7 +68,7 @@
}
/**
- * @see org.jboss.webbeans.context.beanstore.AbstractAttributeBackedBeanStore#removeAttributes()
+ * @see org.jboss.weld.context.beanstore.AbstractAttributeBackedBeanStore#removeAttributes()
*/
@Override
protected void removeAttribute(String key)
@@ -81,7 +81,7 @@
}
/**
- * @see org.jboss.webbeans.context.beanstore.AbstractAttributeBackedBeanStore#setAttribute()
+ * @see org.jboss.weld.context.beanstore.AbstractAttributeBackedBeanStore#setAttribute()
*/
@Override
protected void setAttribute(String key, Object instance)
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/servlet/HttpSessionBeanStore.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/servlet/HttpSessionBeanStore.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/servlet/HttpSessionBeanStore.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,22 +14,22 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.servlet;
+package org.jboss.weld.servlet;
import java.util.Enumeration;
import javax.servlet.http.HttpSession;
-import org.jboss.webbeans.context.SessionContext;
-import org.jboss.webbeans.context.beanstore.AbstractAttributeBackedBeanStore;
-import org.jboss.webbeans.context.beanstore.NamingScheme;
+import org.jboss.weld.context.SessionContext;
+import org.jboss.weld.context.beanstore.AbstractAttributeBackedBeanStore;
+import org.jboss.weld.context.beanstore.NamingScheme;
/**
* A BeanStore that uses a HTTP session as backing storage
*
* @author Nicklas Karlsson
*
- * @see org.jboss.webbeans.context.AbstractApplicationContext
+ * @see org.jboss.weld.context.AbstractApplicationContext
*/
public class HttpSessionBeanStore extends AbstractAttributeBackedBeanStore
{
@@ -51,7 +51,7 @@
}
/**
- * @see org.jboss.webbeans.context.beanstore.AbstractAttributeBackedBeanStore#getAttribute()
+ * @see org.jboss.weld.context.beanstore.AbstractAttributeBackedBeanStore#getAttribute()
*/
@Override
protected Object getAttribute(String key)
@@ -60,7 +60,7 @@
}
/**
- * @see org.jboss.webbeans.context.beanstore.AbstractAttributeBackedBeanStore#getAttributeNames()
+ * @see org.jboss.weld.context.beanstore.AbstractAttributeBackedBeanStore#getAttributeNames()
*/
@SuppressWarnings("unchecked")
@Override
@@ -70,7 +70,7 @@
}
/**
- * @see org.jboss.webbeans.context.beanstore.AbstractAttributeBackedBeanStore#removeAttributes()
+ * @see org.jboss.weld.context.beanstore.AbstractAttributeBackedBeanStore#removeAttributes()
*/
@Override
protected void removeAttribute(String key)
@@ -79,7 +79,7 @@
}
/**
- * @see org.jboss.webbeans.context.beanstore.AbstractAttributeBackedBeanStore#setAttribute()
+ * @see org.jboss.weld.context.beanstore.AbstractAttributeBackedBeanStore#setAttribute()
*/
@Override
protected void setAttribute(String key, Object instance)
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/servlet/HttpSessionManager.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/servlet/HttpSessionManager.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/servlet/HttpSessionManager.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.servlet;
+package org.jboss.weld.servlet;
import javax.enterprise.context.RequestScoped;
import javax.enterprise.inject.Produces;
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/servlet/ServletApiAbstraction.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/servlet/ServletApiAbstraction.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/servlet/ServletApiAbstraction.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,11 +14,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.servlet;
+package org.jboss.weld.servlet;
-import org.jboss.webbeans.bootstrap.api.Service;
-import org.jboss.webbeans.resources.spi.ResourceLoader;
-import org.jboss.webbeans.util.ApiAbstraction;
+import org.jboss.weld.bootstrap.api.Service;
+import org.jboss.weld.resources.spi.ResourceLoader;
+import org.jboss.weld.util.ApiAbstraction;
/**
* Abstraction for classes in the Servlet API
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/servlet/ServletHelper.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/servlet/ServletHelper.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/servlet/ServletHelper.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,14 +14,14 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.servlet;
+package org.jboss.weld.servlet;
import javax.servlet.ServletContext;
-import org.jboss.webbeans.BeanManagerImpl;
-import org.jboss.webbeans.Container;
-import org.jboss.webbeans.bootstrap.spi.BeanDeploymentArchive;
-import org.jboss.webbeans.servlet.api.ServletServices;
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.Container;
+import org.jboss.weld.bootstrap.spi.BeanDeploymentArchive;
+import org.jboss.weld.servlet.api.ServletServices;
/**
* @author pmuir
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/servlet/ServletLifecycle.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/servlet/ServletLifecycle.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/servlet/ServletLifecycle.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -20,19 +20,19 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.servlet;
+package org.jboss.weld.servlet;
-import static org.jboss.webbeans.servlet.ServletHelper.getModuleBeanManager;
+import static org.jboss.weld.servlet.ServletHelper.getModuleBeanManager;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
-import org.jboss.webbeans.context.ContextLifecycle;
-import org.jboss.webbeans.context.api.BeanStore;
-import org.jboss.webbeans.context.api.helpers.ConcurrentHashMapBeanStore;
-import org.jboss.webbeans.conversation.ConversationManager;
-import org.jboss.webbeans.log.LogProvider;
-import org.jboss.webbeans.log.Logging;
+import org.jboss.weld.context.ContextLifecycle;
+import org.jboss.weld.context.api.BeanStore;
+import org.jboss.weld.context.api.helpers.ConcurrentHashMapBeanStore;
+import org.jboss.weld.conversation.ConversationManager;
+import org.jboss.weld.log.LogProvider;
+import org.jboss.weld.log.Logging;
/**
* Implementation of the Web Beans lifecycle that can react to servlet events
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/servlet/WebBeansListener.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/servlet/WebBeansListener.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/servlet/WebBeansListener.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -20,15 +20,15 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.servlet;
+package org.jboss.weld.servlet;
import javax.servlet.ServletRequestEvent;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSessionEvent;
-import org.jboss.webbeans.Container;
-import org.jboss.webbeans.context.ContextLifecycle;
-import org.jboss.webbeans.servlet.api.helpers.AbstractServletListener;
+import org.jboss.weld.Container;
+import org.jboss.weld.context.ContextLifecycle;
+import org.jboss.weld.servlet.api.helpers.AbstractServletListener;
/**
* The Web Beans listener
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/util/ApiAbstraction.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/util/ApiAbstraction.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/util/ApiAbstraction.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/util/ApiAbstraction.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,131 @@
+/*
+ * 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 java.lang.annotation.Annotation;
+
+import org.jboss.weld.resources.spi.ResourceLoader;
+import org.jboss.weld.resources.spi.ResourceLoadingException;
+
+/**
+ * A base class for utility classes that represent annotations, classes etc
+ *
+ * @author Pete Muir
+ */
+public class ApiAbstraction
+{
+
+ private static final Class<DummyAnnotation> DUMMY_ANNOTATION = DummyAnnotation.class;
+
+ private static final Class<Dummy> DUMMY_CLASS = Dummy.class;
+ private static final Class<Object> OBJECT_CLASS = Object.class;
+
+ private ResourceLoader resourceLoader;
+
+ /**
+ * "Not found" annotation
+ */
+ public @interface DummyAnnotation
+ {
+ }
+
+ /**
+ * "Not found" class
+ */
+ public interface Dummy
+ {
+ }
+
+ /**
+ * "Not found" enumeration value.
+ */
+ public enum DummyEnum
+ {
+ DUMMY_VALUE
+ }
+
+ /**
+ * Constructor
+ *
+ * @param resourceLoader The root resource loaderS
+ */
+ public ApiAbstraction(ResourceLoader resourceLoader)
+ {
+ this.resourceLoader = resourceLoader;
+ }
+
+ /**
+ * Initializes an annotation class
+ *
+ * @param name The name of the annotation class
+ * @return The instance of the annotation. Returns a dummy if the class was
+ * not found
+ */
+ @SuppressWarnings("unchecked")
+ protected Class<? extends Annotation> annotationTypeForName(String name)
+ {
+ try
+ {
+ return (Class<? extends Annotation>) resourceLoader.classForName(name);
+ }
+ catch (ResourceLoadingException cnfe)
+ {
+ return DUMMY_ANNOTATION;
+ }
+ }
+
+ /**
+ * Initializes a type
+ *
+ * @param name The name of the class
+ * @return The instance of the class. Returns a dummy if the class was not
+ * found.
+ */
+ @SuppressWarnings("unchecked")
+ protected Class<?> classForName(String name)
+ {
+ try
+ {
+ return resourceLoader.classForName(name);
+ }
+ catch (ResourceLoadingException cnfe)
+ {
+ return DUMMY_CLASS;
+ }
+ }
+
+ protected Object enumValue(Class<?> clazz, String memberName)
+ {
+ if (!clazz.isEnum())
+ {
+ throw new IllegalArgumentException(clazz + " is not an enum!");
+ }
+ try
+ {
+ return clazz.getField(memberName);
+ }
+ catch (SecurityException e)
+ {
+ return null;
+ }
+ catch (NoSuchFieldException e)
+ {
+ return null;
+ }
+ }
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/util/Beans.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/util/Beans.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/util/Beans.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/util/Beans.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,724 @@
+/*
+ * 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 java.lang.annotation.Annotation;
+import java.lang.reflect.Type;
+import java.lang.reflect.Member;
+import java.lang.reflect.Modifier;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import javax.decorator.Decorates;
+import javax.decorator.Decorator;
+import javax.enterprise.context.spi.Contextual;
+import javax.enterprise.context.spi.CreationalContext;
+import javax.enterprise.event.Observes;
+import javax.enterprise.inject.CreationException;
+import javax.enterprise.inject.Disposes;
+import javax.enterprise.inject.Produces;
+import javax.enterprise.inject.spi.Bean;
+import javax.enterprise.inject.spi.Interceptor;
+import javax.enterprise.inject.spi.AnnotatedMethod;
+import javax.inject.Inject;
+import javax.interceptor.AroundInvoke;
+
+import org.jboss.weld.BeanManagerImpl;
+import org.jboss.weld.DefinitionException;
+import org.jboss.weld.bean.AbstractProducerBean;
+import org.jboss.weld.bean.RIBean;
+import org.jboss.weld.bean.SessionBean;
+import org.jboss.weld.ejb.EJBApiAbstraction;
+import org.jboss.weld.injection.ConstructorInjectionPoint;
+import org.jboss.weld.injection.FieldInjectionPoint;
+import org.jboss.weld.injection.MethodInjectionPoint;
+import org.jboss.weld.injection.ParameterInjectionPoint;
+import org.jboss.weld.injection.WBInjectionPoint;
+import org.jboss.weld.injection.spi.EjbInjectionServices;
+import org.jboss.weld.injection.spi.JpaInjectionServices;
+import org.jboss.weld.injection.spi.ResourceInjectionServices;
+import org.jboss.weld.introspector.*;
+import org.jboss.weld.log.Log;
+import org.jboss.weld.log.Logging;
+import org.jboss.weld.metadata.cache.BindingTypeModel;
+import org.jboss.weld.metadata.cache.InterceptorBindingModel;
+import org.jboss.weld.metadata.cache.MetaAnnotationStore;
+import org.jboss.weld.persistence.PersistenceApiAbstraction;
+import org.jboss.interceptor.model.InterceptionType;
+import org.jboss.interceptor.model.InterceptionTypeRegistry;
+
+import com.google.common.base.Supplier;
+import com.google.common.collect.Multimap;
+import com.google.common.collect.Multimaps;
+
+/**
+ * Helper class for bean inspection
+ *
+ * @author Pete Muir
+ * @author David Allen
+ *
+ */
+public class Beans
+{
+
+ private static final Log log = Logging.getLog(Beans.class);
+
+ /**
+ * Indicates if a bean's scope type is passivating
+ *
+ * @param bean The bean to inspect
+ * @return True if the scope is passivating, false otherwise
+ */
+ public static boolean isPassivatingScope(Bean<?> bean, BeanManagerImpl manager)
+ {
+ if (bean instanceof SessionBean<?>)
+ {
+ return ((SessionBean<?>) bean).getEjbDescriptor().isStateful();
+ }
+ else
+ {
+ return manager.getServices().get(MetaAnnotationStore.class).getScopeModel(bean.getScope()).isPassivating();
+ }
+ }
+
+ /**
+ * Tests if a bean is capable of having its state temporarily stored to
+ * secondary storage
+ *
+ * @param bean The bean to inspect
+ * @return True if the bean is passivation capable
+ */
+ public static boolean isPassivationCapableBean(Bean<?> bean)
+ {
+ if (bean instanceof SessionBean<?>)
+ {
+ return ((SessionBean<?>) bean).getEjbDescriptor().isStateful();
+ }
+ else if (bean instanceof AbstractProducerBean<?, ?, ?>)
+ {
+ return Reflections.isSerializable(((AbstractProducerBean<?, ?, ?>) bean).getType());
+ }
+ else
+ {
+ return Reflections.isSerializable(bean.getBeanClass());
+ }
+ }
+
+ /**
+ * Indicates if a bean is proxyable
+ *
+ * @param bean The bean to test
+ * @return True if proxyable, false otherwise
+ */
+ public static boolean isBeanProxyable(Bean<?> bean)
+ {
+ if (bean instanceof RIBean<?>)
+ {
+ return ((RIBean<?>) bean).isProxyable();
+ }
+ else
+ {
+ return Proxies.isTypesProxyable(bean.getTypes());
+ }
+ }
+
+ public static List<Set<FieldInjectionPoint<?, ?>>> getFieldInjectionPoints(Bean<?> declaringBean, WBClass<?> type)
+ {
+ List<Set<FieldInjectionPoint<?, ?>>> injectableFieldsList = new ArrayList<Set<FieldInjectionPoint<?, ?>>>();
+ WBClass<?> t = type;
+ while (!t.getJavaClass().equals(Object.class))
+ {
+ Set<FieldInjectionPoint<?, ?>> fields = new HashSet<FieldInjectionPoint<?,?>>();
+ injectableFieldsList.add(0, fields);
+ for (WBField<?, ?> annotatedField : t.getDeclaredAnnotatedWBFields(Inject.class))
+ {
+ if (!annotatedField.isStatic())
+ {
+ addFieldInjectionPoint(annotatedField, fields, declaringBean);
+ }
+ }
+ for (WBField<?, ?> annotatedField : t.getAnnotatedWBFields(Decorates.class))
+ {
+ if (!annotatedField.isStatic())
+ {
+ addFieldInjectionPoint(annotatedField, fields, declaringBean);
+ }
+ }
+ t = t.getWBSuperclass();
+ }
+ return injectableFieldsList;
+ }
+
+ public static Set<FieldInjectionPoint<?, ?>> getFieldInjectionPoints(Bean<?> declaringBean, List<? extends Set<? extends FieldInjectionPoint<?, ?>>> fieldInjectionPoints)
+ {
+ Set<FieldInjectionPoint<?, ?>> injectionPoints = new HashSet<FieldInjectionPoint<?,?>>();
+ for (Set<? extends FieldInjectionPoint<?, ?>> i : fieldInjectionPoints)
+ {
+ injectionPoints.addAll(i);
+ }
+ return injectionPoints;
+ }
+
+ public static WBMethod<?, ?> getPostConstruct(WBClass<?> type)
+ {
+ Set<WBMethod<?, ?>> postConstructMethods = type.getAnnotatedWBMethods(PostConstruct.class);
+ log.trace("Found " + postConstructMethods + " constructors annotated with @Initializer for " + type);
+ if (postConstructMethods.size() > 1)
+ {
+ throw new DefinitionException("Cannot have more than one post construct method annotated with @PostConstruct for " + type);
+ }
+ else if (postConstructMethods.size() == 1)
+ {
+ WBMethod<?, ?> postConstruct = postConstructMethods.iterator().next();
+ log.trace("Exactly one post construct method (" + postConstruct + ") for " + type);
+ return postConstruct;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ public static WBMethod<?, ?> getPreDestroy(WBClass<?> type)
+ {
+ Set<WBMethod<?, ?>> preDestroyMethods = type.getAnnotatedWBMethods(PreDestroy.class);
+ log.trace("Found " + preDestroyMethods + " constructors annotated with @Initializer for " + type);
+ if (preDestroyMethods.size() > 1)
+ {
+ // TODO actually this is wrong, in EJB you can have @PreDestroy methods
+ // on the superclass, though the Web Beans spec is silent on the issue
+ throw new DefinitionException("Cannot have more than one pre destroy method annotated with @PreDestroy for " + type);
+ }
+ else if (preDestroyMethods.size() == 1)
+ {
+ WBMethod<?, ?> preDestroy = preDestroyMethods.iterator().next();
+ log.trace("Exactly one post construct method (" + preDestroy + ") for " + type);
+ return preDestroy;
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+ public static List<WBMethod<?,?>> getInterceptableBusinessMethods(WBClass<?> type)
+ {
+ List<WBMethod<?, ?>> annotatedMethods = new ArrayList<WBMethod<?, ?>>();
+ for (WBMethod<?, ?> annotatedMethod : type.getWBMethods())
+ {
+ int modifiers = ((WBMember) annotatedMethod).getJavaMember().getModifiers();
+ boolean businessMethod = !annotatedMethod.isStatic()
+ && (Modifier.isPublic(modifiers)
+ || Modifier.isProtected(modifiers))
+ && !annotatedMethod.isAnnotationPresent(Inject.class)
+ && !annotatedMethod.isAnnotationPresent(Produces.class)
+ && annotatedMethod.getAnnotatedWBParameters(Disposes.class).isEmpty()
+ && annotatedMethod.getAnnotatedWBParameters(Observes.class).isEmpty();
+
+ if (businessMethod)
+ {
+ for (InterceptionType interceptionType : InterceptionTypeRegistry.getSupportedInterceptionTypes())
+ {
+ businessMethod = !annotatedMethod.isAnnotationPresent(InterceptionTypeRegistry.getAnnotationClass(interceptionType));
+ if (!businessMethod)
+ break;
+ }
+ if (businessMethod)
+ annotatedMethods.add(annotatedMethod);
+ }
+ }
+ return annotatedMethods;
+ }
+
+
+ public static Set<WBInjectionPoint<?, ?>> getEjbInjectionPoints(Bean<?> declaringBean, WBClass<?> type, BeanManagerImpl manager)
+ {
+ if (manager.getServices().contains(EjbInjectionServices.class))
+ {
+ Class<? extends Annotation> ejbAnnotationType = manager.getServices().get(EJBApiAbstraction.class).EJB_ANNOTATION_CLASS;
+ Set<WBInjectionPoint<?, ?>> ejbInjectionPoints = new HashSet<WBInjectionPoint<?, ?>>();
+ for (WBField<?, ?> field : type.getAnnotatedWBFields(ejbAnnotationType))
+ {
+ ejbInjectionPoints.add(FieldInjectionPoint.of(declaringBean, field));
+ }
+ return ejbInjectionPoints;
+ }
+ else
+ {
+ return Collections.emptySet();
+ }
+ }
+
+ public static Set<WBInjectionPoint<?, ?>> getPersistenceContextInjectionPoints(Bean<?> declaringBean, WBClass<?> type, BeanManagerImpl manager)
+ {
+ if (manager.getServices().contains(JpaInjectionServices.class))
+ {
+ Set<WBInjectionPoint<?, ?>> jpaInjectionPoints = new HashSet<WBInjectionPoint<?, ?>>();
+ Class<? extends Annotation> persistenceContextAnnotationType = manager.getServices().get(PersistenceApiAbstraction.class).PERSISTENCE_CONTEXT_ANNOTATION_CLASS;
+ for (WBField<?, ?> field : type.getAnnotatedWBFields(persistenceContextAnnotationType))
+ {
+ jpaInjectionPoints.add(FieldInjectionPoint.of(declaringBean, field));
+ }
+ return jpaInjectionPoints;
+ }
+ else
+ {
+ return Collections.emptySet();
+ }
+ }
+
+ public static Set<WBInjectionPoint<?, ?>> getPersistenceUnitInjectionPoints(Bean<?> declaringBean, WBClass<?> type, BeanManagerImpl manager)
+ {
+ if (manager.getServices().contains(JpaInjectionServices.class))
+ {
+ Set<WBInjectionPoint<?, ?>> jpaInjectionPoints = new HashSet<WBInjectionPoint<?, ?>>();
+ Class<? extends Annotation> persistenceUnitAnnotationType = manager.getServices().get(PersistenceApiAbstraction.class).PERSISTENCE_UNIT_ANNOTATION_CLASS;
+ for (WBField<?, ?> field : type.getAnnotatedWBFields(persistenceUnitAnnotationType))
+ {
+ jpaInjectionPoints.add(FieldInjectionPoint.of(declaringBean, field));
+ }
+ return jpaInjectionPoints;
+ }
+ else
+ {
+ return Collections.emptySet();
+ }
+ }
+
+ public static Set<WBInjectionPoint<?, ?>> getResourceInjectionPoints(Bean<?> declaringBean, WBClass<?> type, BeanManagerImpl manager)
+ {
+ if (manager.getServices().contains(ResourceInjectionServices.class))
+ {
+ Class<? extends Annotation> resourceAnnotationType = manager.getServices().get(EJBApiAbstraction.class).RESOURCE_ANNOTATION_CLASS;
+ Set<WBInjectionPoint<?, ?>> resourceInjectionPoints = new HashSet<WBInjectionPoint<?, ?>>();
+ for (WBField<?, ?> field : type.getAnnotatedWBFields(resourceAnnotationType))
+ {
+ resourceInjectionPoints.add(FieldInjectionPoint.of(declaringBean, field));
+ }
+ return resourceInjectionPoints;
+ }
+ else
+ {
+ return Collections.emptySet();
+ }
+ }
+
+ public static List<Set<MethodInjectionPoint<?, ?>>> getInitializerMethods(Bean<?> declaringBean, WBClass<?> type)
+ {
+ List<Set<MethodInjectionPoint<?, ?>>> initializerMethodsList = new ArrayList<Set<MethodInjectionPoint<?, ?>>>();
+ // Keep track of all seen methods so we can ignore overridden methods
+ Multimap<MethodSignature, Package> seenMethods = Multimaps.newSetMultimap(new HashMap<MethodSignature, Collection<Package>>(), new Supplier<Set<Package>>()
+ {
+
+ public Set<Package> get()
+ {
+ return new HashSet<Package>();
+ }
+
+ });
+ WBClass<?> t = type;
+ while (!t.getJavaClass().equals(Object.class))
+ {
+ Set<MethodInjectionPoint<?, ?>> initializerMethods = new HashSet<MethodInjectionPoint<?,?>>();
+ initializerMethodsList.add(0, initializerMethods);
+ for (WBMethod<?, ?> method : t.getDeclaredWBMethods())
+ {
+ if (method.isAnnotationPresent(Inject.class) && !method.isStatic())
+ {
+ if (method.getAnnotation(Produces.class) != null)
+ {
+ throw new DefinitionException("Initializer method " + method.toString() + " cannot be annotated @Produces on " + type);
+ }
+ else if (method.getAnnotatedWBParameters(Disposes.class).size() > 0)
+ {
+ throw new DefinitionException("Initializer method " + method.toString() + " cannot have parameters annotated @Disposes on " + type);
+ }
+ else if (method.getAnnotatedWBParameters(Observes.class).size() > 0)
+ {
+ throw new DefinitionException("Initializer method " + method.toString() + " cannot be annotated @Observes on " + type);
+ }
+ else
+ {
+ if (!isOverridden(method, seenMethods))
+ {
+ MethodInjectionPoint<?, ?> initializerMethod = MethodInjectionPoint.of(declaringBean, method);
+ initializerMethods.add(initializerMethod);
+ }
+ }
+ }
+ seenMethods.put(method.getSignature(), method.getPackage());
+ }
+ t = t.getWBSuperclass();
+ }
+ return initializerMethodsList;
+ }
+
+ private static boolean isOverridden(WBMethod<?, ?> method, Multimap<MethodSignature, Package> seenMethods)
+ {
+ if (method.isPrivate())
+ {
+ return false;
+ }
+ else if (method.isPackagePrivate() && seenMethods.containsKey(method.getSignature()))
+ {
+ return seenMethods.get(method.getSignature()).contains(method.getPackage());
+ }
+ else
+ {
+ return seenMethods.containsKey(method.getSignature());
+ }
+ }
+
+ public static Set<ParameterInjectionPoint<?, ?>> getParameterInjectionPoints(Bean<?> declaringBean, WBConstructor<?> constructor)
+ {
+ Set<ParameterInjectionPoint<?,?>> injectionPoints = new HashSet<ParameterInjectionPoint<?,?>>();
+ for (WBParameter<?, ?> parameter : constructor.getWBParameters())
+ {
+ injectionPoints.add(ParameterInjectionPoint.of(declaringBean, parameter));
+ }
+ return injectionPoints;
+ }
+
+ public static Set<ParameterInjectionPoint<?, ?>> getParameterInjectionPoints(Bean<?> declaringBean, List<Set<MethodInjectionPoint<?, ?>>> methodInjectionPoints)
+ {
+ Set<ParameterInjectionPoint<?, ?>> injectionPoints = new HashSet<ParameterInjectionPoint<?,?>>();
+ for (Set<MethodInjectionPoint<?, ?>> i : methodInjectionPoints)
+ {
+ for (MethodInjectionPoint<?, ?> method : i)
+ {
+ for (WBParameter<?, ?> parameter : method.getWBParameters())
+ {
+ injectionPoints.add(ParameterInjectionPoint.of(declaringBean, parameter));
+ }
+ }
+ }
+ return injectionPoints;
+ }
+
+ private static void addFieldInjectionPoint(WBField<?, ?> annotatedField, Set<FieldInjectionPoint<?, ?>> injectableFields, Bean<?> declaringBean)
+ {
+ if (!annotatedField.isAnnotationPresent(Produces.class))
+ {
+ if (annotatedField.isFinal())
+ {
+ throw new DefinitionException("Don't place binding annotations on final fields " + annotatedField);
+ }
+ FieldInjectionPoint<?, ?> fieldInjectionPoint = FieldInjectionPoint.of(declaringBean, annotatedField);
+ injectableFields.add(fieldInjectionPoint);
+ }
+ }
+
+ /**
+ * Checks if binding criteria fulfill all binding types
+ *
+ * @param element The binding criteria to check
+ * @param bindings2 The binding types to check
+ * @return True if all matches, false otherwise
+ */
+ public static boolean containsAllBindings(Set<Annotation> bindings1, Set<Annotation> bindings2, BeanManagerImpl manager)
+ {
+ for (Annotation binding : bindings1)
+ {
+ BindingTypeModel<?> bindingType = manager.getServices().get(MetaAnnotationStore.class).getBindingTypeModel(binding.annotationType());
+ boolean matchFound = false;
+ // TODO Something wrong with annotation proxy hashcode in JDK/AnnotationLiteral hashcode, so always do a full check, don't use contains
+ for (Annotation otherBinding : bindings2)
+ {
+ if (bindingType.isEqual(binding, otherBinding))
+ {
+ matchFound = true;
+ }
+ }
+ if (!matchFound)
+ {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public static boolean containsAllInterceptionBindings(Set<Annotation> expectedBindings, Set<Annotation> existingBindings, BeanManagerImpl manager)
+ {
+ for (Annotation binding : expectedBindings)
+ {
+ InterceptorBindingModel<?> bindingType = manager.getServices().get(MetaAnnotationStore.class).getInterceptorBindingModel(binding.annotationType());
+ boolean matchFound = false;
+ // TODO Something wrong with annotation proxy hashcode in JDK/AnnotationLiteral hashcode, so always do a full check, don't use contains
+ for (Annotation otherBinding : existingBindings)
+ {
+ if (bindingType.isEqual(binding, otherBinding))
+ {
+ matchFound = true;
+ }
+ }
+ if (!matchFound)
+ {
+ return false;
+ }
+ }
+ return true;
+ }
+
+
+ /**
+ * Retains only beans which have deployment type X.
+ *
+ * The deployment type X is
+ *
+ * @param <T>
+ * @param beans The beans to filter
+ * @param enabledDeploymentTypes The enabled deployment types
+ * @return The filtered beans
+ */
+ public static <T extends Bean<?>> Set<T> retainEnabledPolicies(Set<T> beans, Collection<Class<?>> enabledPolicyClasses, Collection<Class<? extends Annotation>> enabledPolicySterotypes)
+ {
+ if (beans.size() == 0)
+ {
+ return beans;
+ }
+ else
+ {
+ Set<T> enabledBeans = new HashSet<T>();
+ for (T bean : beans)
+ {
+ if (isBeanEnabled(bean, enabledPolicyClasses, enabledPolicySterotypes))
+ {
+ enabledBeans.add(bean);
+ }
+ }
+ return enabledBeans;
+ }
+ }
+
+ public static boolean isBeanEnabled(Bean<?> bean, Collection<Class<?>> enabledPolicyClasses, Collection<Class<? extends Annotation>> enabledPolicySterotypes)
+ {
+ if (bean.isAlternative())
+ {
+ if (enabledPolicyClasses.contains(bean.getBeanClass()))
+ {
+ return true;
+ }
+ else
+ {
+ for (Class<? extends Annotation> stereotype : bean.getStereotypes())
+ {
+ if (enabledPolicySterotypes.contains(stereotype))
+ {
+ return true;
+ }
+ }
+ }
+ }
+ else
+ {
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * Check if any of the beans is a policy
+ *
+ * @param beans
+ * @return
+ */
+ public static <X> boolean isPolicyPresent(Set<Bean<? extends X>> beans)
+ {
+ for (Bean<?> bean : beans)
+ {
+ if (bean.isAlternative())
+ {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Check if bean is specialized by any of beans
+ *
+ * @param bean
+ * @param beans
+ * @param specializedBeans
+ * @return
+ */
+ public static <X> boolean isSpecialized(Bean<? extends X> bean, Set<Bean<? extends X>> beans, Map<Contextual<?>, Contextual<?>> specializedBeans)
+ {
+ if (specializedBeans.containsKey(bean))
+ {
+ if (beans.contains(specializedBeans.get(bean)))
+ {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public static <T> ConstructorInjectionPoint<T> getBeanConstructor(Bean<?> declaringBean, WBClass<T> type)
+ {
+ ConstructorInjectionPoint<T> constructor = null;
+ Set<WBConstructor<T>> initializerAnnotatedConstructors = type.getAnnotatedWBConstructors(Inject.class);
+ log.trace("Found " + initializerAnnotatedConstructors + " constructors annotated with @Initializer for " + type);
+ if (initializerAnnotatedConstructors.size() > 1)
+ {
+ if (initializerAnnotatedConstructors.size() > 1)
+ {
+ throw new DefinitionException("Cannot have more than one constructor annotated with @Initializer for " + type);
+ }
+ }
+ else if (initializerAnnotatedConstructors.size() == 1)
+ {
+ constructor = ConstructorInjectionPoint.of(declaringBean, initializerAnnotatedConstructors.iterator().next());
+ log.trace("Exactly one constructor (" + constructor + ") annotated with @Initializer defined, using it as the bean constructor for " + type);
+ }
+ else if (type.getNoArgsWBConstructor() != null)
+ {
+
+ constructor = ConstructorInjectionPoint.of(declaringBean, type.getNoArgsWBConstructor());
+ log.trace("Exactly one constructor (" + constructor + ") defined, using it as the bean constructor for " + type);
+ }
+
+ if (constructor == null)
+ {
+ throw new DefinitionException("Cannot determine constructor to use for " + type);
+ }
+ else
+ {
+ return constructor;
+ }
+ }
+
+ /**
+ * Injects EJBs and common fields
+ */
+ public static <T> void injectEEFields(T beanInstance, BeanManagerImpl manager, Iterable<WBInjectionPoint<?, ?>> ejbInjectionPoints, Iterable<WBInjectionPoint<?, ?>> persistenceContextInjectionPoints, Iterable<WBInjectionPoint<?, ?>> persistenceUnitInjectionPoints, Iterable<WBInjectionPoint<?, ?>> resourceInjectionPoints)
+ {
+ EjbInjectionServices ejbServices = manager.getServices().get(EjbInjectionServices.class);
+ JpaInjectionServices jpaServices = manager.getServices().get(JpaInjectionServices.class);
+ ResourceInjectionServices resourceServices = manager.getServices().get(ResourceInjectionServices.class);
+
+ if (ejbServices != null)
+ {
+ for (WBInjectionPoint<?, ?> injectionPoint : ejbInjectionPoints)
+ {
+ Object ejbInstance = ejbServices.resolveEjb(injectionPoint);
+ injectionPoint.inject(beanInstance, ejbInstance);
+ }
+ }
+
+ if (jpaServices != null)
+ {
+ for (WBInjectionPoint<?, ?> injectionPoint : persistenceContextInjectionPoints)
+ {
+ Object pcInstance = jpaServices.resolvePersistenceContext(injectionPoint);
+ injectionPoint.inject(beanInstance, pcInstance);
+ }
+ for (WBInjectionPoint<?, ?> injectionPoint : persistenceUnitInjectionPoints)
+ {
+ Object puInstance = jpaServices.resolvePersistenceUnit(injectionPoint);
+ injectionPoint.inject(beanInstance, puInstance);
+ }
+ }
+
+ if (resourceServices != null)
+ {
+ for (WBInjectionPoint<?, ?> injectionPoint : resourceInjectionPoints)
+ {
+ Object resourceInstance = resourceServices.resolveResource(injectionPoint);
+ injectionPoint.inject(beanInstance, resourceInstance);
+ }
+ }
+ }
+
+
+ /**
+ * Gets the declared bean type
+ *
+ * @return The bean type
+ */
+ public static Type getDeclaredBeanType(Class<? extends Bean> clazz)
+ {
+ Type[] actualTypeArguments = Reflections.getActualTypeArguments(clazz);
+ if (actualTypeArguments.length == 1)
+ {
+ return actualTypeArguments[0];
+ }
+ else
+ {
+ return null;
+ }
+ }
+
+
+ /**
+ * Injects bound fields
+ *
+ * @param instance The instance to inject into
+ */
+ public static <T> void injectBoundFields(T instance, CreationalContext<T> creationalContext, BeanManagerImpl manager, Iterable<? extends FieldInjectionPoint<?, ?>> injectableFields)
+ {
+ for (FieldInjectionPoint<?, ?> injectableField : injectableFields)
+ {
+ injectableField.inject(instance, manager, creationalContext);
+ }
+ }
+
+ public static<T> void injectFieldsAndInitializers(T instance, CreationalContext<T> ctx, BeanManagerImpl beanManager, List<? extends Iterable<? extends FieldInjectionPoint<?, ?>>> injectableFields, List<? extends Iterable<? extends MethodInjectionPoint<?, ?>>>initializerMethods)
+ {
+ if (injectableFields.size() != initializerMethods.size())
+ {
+ throw new IllegalArgumentException("injectableFields and initializerMethods must have the same size. InjectableFields: " + injectableFields + "; InitializerMethods: " + initializerMethods);
+ }
+ for (int i = 0; i < injectableFields.size(); i++)
+ {
+ injectBoundFields(instance, ctx, beanManager, injectableFields.get(i));
+ callInitializers(instance, ctx, beanManager, initializerMethods.get(i));
+ }
+ }
+
+ /**
+ * Calls all initializers of the bean
+ *
+ * @param instance The bean instance
+ */
+ public static <T> void callInitializers(T instance, CreationalContext<T> creationalContext, BeanManagerImpl manager, Iterable<? extends MethodInjectionPoint<?, ?>> initializerMethods)
+ {
+ for (MethodInjectionPoint<?, ?> initializer : initializerMethods)
+ {
+ initializer.invoke(instance, manager, creationalContext, CreationException.class);
+ }
+ }
+
+ public static <T> boolean isInterceptor(WBClass<T> annotatedItem)
+ {
+ return annotatedItem.isAnnotationPresent(javax.interceptor.Interceptor.class);
+ }
+
+ public static <T> boolean isDecorator(WBClass<T> annotatedItem)
+ {
+ return annotatedItem.isAnnotationPresent(Decorator.class);
+ }
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/util/Names.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/util/Names.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/util/Names.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/util/Names.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,336 @@
+/*
+ * 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 java.lang.annotation.Annotation;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import java.lang.reflect.Type;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * Utility class to produce friendly names e.g. for debugging
+ *
+ * @author Pete Muir
+ *
+ */
+public class Names
+{
+ // Pattern for recognizing strings with leading capital letter
+ private static Pattern CAPITAL_LETTERS = Pattern.compile("\\p{Upper}{1}\\p{Lower}*");
+
+ /**
+ * Gets a string representation of the scope type annotation
+ *
+ * @param scopeType The scope type
+ * @return A string representation
+ */
+ public static String scopeTypeToString(Class<? extends Annotation> scopeType)
+ {
+ StringBuilder result = new StringBuilder();
+ if (scopeType != null)
+ {
+ String scopeName = scopeType.getSimpleName();
+ Matcher matcher = CAPITAL_LETTERS.matcher(scopeName);
+ int i = 0;
+ while (matcher.find())
+ {
+ String name = matcher.group();
+ if (i > 0)
+ {
+ name = name.toLowerCase();
+ }
+ result.append(name).append(" ");
+ i++;
+ }
+ }
+ return result.toString();
+ }
+
+ /**
+ * Counts item in an iteratble
+ *
+ * @param iterable The iteraboe
+ * @return The count
+ */
+ public static int count(final Iterable<?> iterable)
+ {
+ int count = 0;
+ for (Iterator<?> i = iterable.iterator(); i.hasNext();)
+ {
+ count++;
+ }
+ return count;
+ }
+
+ /**
+ * Converts a list of strings to a String with given delimeter
+ *
+ * @param list The list
+ * @param delimiter The delimeter
+ * @return The string representation
+ */
+ private static String listToString(List<String> list, String delimiter)
+ {
+ StringBuilder buffer = new StringBuilder();
+ for (String item : list)
+ {
+ buffer.append(item);
+ buffer.append(delimiter);
+ }
+ return buffer.toString();
+ }
+
+ /**
+ * Parses a reflection modifier to a list of string
+ *
+ * @param modifier The modifier to parse
+ * @return The resulting string list
+ */
+ private static List<String> parseModifiers(int modifier)
+ {
+ List<String> modifiers = new ArrayList<String>();
+ if (Modifier.isPrivate(modifier))
+ {
+ modifiers.add("private");
+ }
+ if (Modifier.isProtected(modifier))
+ {
+ modifiers.add("protected");
+ }
+ if (Modifier.isPublic(modifier))
+ {
+ modifiers.add("public");
+ }
+ if (Modifier.isAbstract(modifier))
+ {
+ modifiers.add("abstract");
+ }
+ if (Modifier.isFinal(modifier))
+ {
+ modifiers.add("final");
+ }
+ if (Modifier.isNative(modifier))
+ {
+ modifiers.add("native");
+ }
+ if (Modifier.isStatic(modifier))
+ {
+ modifiers.add("static");
+ }
+ if (Modifier.isStrict(modifier))
+ {
+ modifiers.add("strict");
+ }
+ if (Modifier.isSynchronized(modifier))
+ {
+ modifiers.add("synchronized");
+ }
+ if (Modifier.isTransient(modifier))
+ {
+ modifiers.add("transient");
+ }
+ if (Modifier.isVolatile(modifier))
+ {
+ modifiers.add("volatile");
+ }
+ if (Modifier.isInterface(modifier))
+ {
+ modifiers.add("interface");
+ }
+ return modifiers;
+ }
+
+ /**
+ * Gets a string representation from an array of annotations
+ *
+ * @param annotations The annotations
+ * @return The string representation
+ */
+ private static String annotationsToString(Annotation[] annotations)
+ {
+ StringBuilder buffer = new StringBuilder();
+ for (Annotation annotation : annotations)
+ {
+ buffer.append("@" + annotation.annotationType().getSimpleName());
+ buffer.append(" ");
+ }
+ return buffer.toString();
+ }
+
+ /**
+ * Gets a string representation from a field
+ *
+ * @param field The field
+ * @return The string representation
+ */
+ public static String fieldToString(Field field)
+ {
+ if (!field.isAccessible())
+ {
+ field.setAccessible(true);
+ }
+ return " Field " + annotationsToString(field.getAnnotations()) + listToString(parseModifiers(field.getModifiers()), " ") + field.getName();
+ }
+
+ /**
+ * Gets the string representation from a method
+ *
+ * @param method The method
+ * @return The string representation
+ */
+ public static String methodToString(Method method)
+ {
+ if (!method.isAccessible())
+ {
+ method.setAccessible(true);
+ }
+ return " Method " + method.getReturnType().getSimpleName() + " " + annotationsToString(method.getAnnotations()) + listToString(parseModifiers(method.getModifiers()), " ") + method.getName() + "(" + parametersToString(method.getParameterTypes(), method.getParameterAnnotations(), false) + ");\n";
+ }
+
+ /**
+ * Gets a string representation from an annotation
+ *
+ * @param annotation The annotation
+ * @return The string representation
+ */
+ public static String annotationToString(Annotation annotation)
+ {
+ return "Annotation " + annotationsToString(annotation.annotationType().getAnnotations()) + annotation.annotationType().getSimpleName();
+ }
+
+ /**
+ * Gets a string representation from a method
+ *
+ * @param constructor The method
+ * @return The string representation
+ */
+ public static String constructorToString(Constructor<?> constructor)
+ {
+ return " Constructor " + annotationsToString(constructor.getAnnotations()) + listToString(parseModifiers(constructor.getModifiers()), " ") + constructor.getDeclaringClass().getSimpleName() + "(" + parametersToString(constructor.getParameterTypes(), constructor.getParameterAnnotations(), true) + ");\n";
+ }
+
+ /**
+ * Gets a string representation from a list of parameters and their
+ * annotations
+ *
+ * @param parameterTypes The parameters
+ * @param annotations The annotation map
+ * @return The string representation
+ */
+ private static String parametersToString(Class<?>[] parameterTypes, Annotation[][] annotations, boolean constructor)
+ {
+ StringBuilder buffer = new StringBuilder();
+ int start = constructor ? 1 : 0;
+ for (int i = start; i < parameterTypes.length; i++)
+ {
+ if (i > start)
+ {
+ buffer.append(", ");
+ }
+ buffer.append(annotationsToString(annotations[i]) + typeToString(parameterTypes[i]));
+ }
+ return buffer.toString();
+ }
+
+ /**
+ * Gets a string representation from a type
+ *
+ * @param clazz The type
+ * @return The string representation
+ */
+ private static String typeToString(Class<?> clazz)
+ {
+ return annotationsToString(clazz.getAnnotations()) + clazz.getSimpleName();
+ }
+
+ /**
+ * Gets a string representation from a class
+ *
+ * @param clazz The class
+ * @return The string representation
+ */
+ public static String classToString(Class<?> clazz)
+ {
+ StringBuilder buffer = new StringBuilder();
+ buffer.append("Class " + typeToString(clazz) + "\n");
+ for (Field field : clazz.getFields())
+ {
+ buffer.append(fieldToString(field));
+ }
+ for (Constructor<?> constructor : clazz.getConstructors())
+ {
+ buffer.append(constructorToString(constructor));
+ }
+ for (Method method : clazz.getMethods())
+ {
+ buffer.append(methodToString(method));
+ }
+ return buffer.toString();
+ }
+
+ public static String typesToString(Set<? extends Type> types)
+ {
+ StringBuilder buffer = new StringBuilder();
+ int i = 0;
+ buffer.append("[");
+ for (Type type : types)
+ {
+ if (i > 0)
+ {
+ buffer.append(", ");
+ }
+ if (type instanceof Class<?>)
+ {
+ buffer.append(((Class<?>) type).getSimpleName());
+ }
+ else
+ {
+ buffer.append(type.toString());
+ }
+ i++;
+ }
+ buffer.append("]");
+ return buffer.toString();
+ }
+
+ public static String annotationsToString(Set<Annotation> annotations)
+ {
+ StringBuilder buffer = new StringBuilder();
+ int i = 0;
+ buffer.append("[");
+ for (Annotation annotation : annotations)
+ {
+ if (i > 0)
+ {
+ buffer.append(", ");
+ }
+ buffer.append("@").append(annotation.annotationType().getSimpleName());
+ i++;
+ }
+ buffer.append("]");
+ return buffer.toString();
+ }
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/util/Observers.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/util/Observers.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/util/Observers.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/util/Observers.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,60 @@
+/*
+ * 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 java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
+import java.lang.reflect.TypeVariable;
+
+/**
+ * @author pmuir
+ *
+ */
+public class Observers
+{
+
+ public static void checkEventObjectType(Type eventType)
+ {
+ Type[] types;
+ Type resolvedType = new Reflections.HierarchyDiscovery(eventType).getResolvedType();
+ if (resolvedType instanceof Class<?>)
+ {
+ types = new Type[0];
+ }
+ else if (resolvedType instanceof ParameterizedType)
+ {
+ types = ((ParameterizedType) resolvedType).getActualTypeArguments();
+ }
+ else
+ {
+ throw new IllegalArgumentException("Event type " + resolvedType + " is not allowed");
+ }
+ for (Type type : types)
+ {
+ if (type instanceof TypeVariable<?>)
+ {
+ throw new IllegalArgumentException("Cannot provide an event type parameterized with a type parameter " + resolvedType);
+ }
+ }
+ }
+
+ public static void checkEventObjectType(Object event)
+ {
+ checkEventObjectType(event.getClass());
+
+ }
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/util/Proxies.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/util/Proxies.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/util/Proxies.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/util/Proxies.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,242 @@
+/*
+ * 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 java.lang.reflect.Constructor;
+import java.lang.reflect.Modifier;
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
+import java.util.Iterator;
+import java.util.LinkedHashSet;
+import java.util.Set;
+
+import javassist.util.proxy.ProxyFactory;
+
+/**
+ * Utilties for working with Javassist proxies
+ *
+ * @author Nicklas Karlsson
+ * @author Pete Muir
+ *
+ */
+public class Proxies
+{
+
+ public static class TypeInfo
+ {
+
+ private static final Class<?>[] EMPTY_INTERFACES_ARRAY = new Class<?>[0];
+
+ private final Set<Class<?>> interfaces;
+ private final Set<Class<?>> classes;
+
+ private TypeInfo()
+ {
+ super();
+ this.interfaces = new LinkedHashSet<Class<?>>();
+ this.classes = new LinkedHashSet<Class<?>>();
+ }
+
+ public Class<?> getSuperClass()
+ {
+ if (classes.isEmpty())
+ {
+ return null;
+ }
+ Iterator<Class<?>> it = classes.iterator();
+ Class<?> superclass = it.next();
+ while (it.hasNext())
+ {
+ Class<?> clazz = it.next();
+ if (superclass.isAssignableFrom(clazz))
+ {
+ superclass = clazz;
+ }
+ }
+ return superclass;
+ }
+
+ private Class<?>[] getInterfaces()
+ {
+ return interfaces.toArray(EMPTY_INTERFACES_ARRAY);
+ }
+
+ public ProxyFactory createProxyFactory()
+ {
+ ProxyFactory proxyFactory = new ProxyFactory();
+ Class<?> superClass = getSuperClass();
+ if(superClass != null && superClass != Object.class)
+ {
+ proxyFactory.setSuperclass(superClass);
+ }
+ proxyFactory.setInterfaces(getInterfaces());
+ return proxyFactory;
+ }
+
+ private void add(Type type)
+ {
+ if (type instanceof Class)
+ {
+ Class<?> clazz = (Class<?>) type;
+ if (clazz.isInterface())
+ {
+ interfaces.add(clazz);
+ }
+ else
+ {
+ classes.add(clazz);
+ }
+ }
+ else if (type instanceof ParameterizedType)
+ {
+ add(((ParameterizedType)type).getRawType());
+ }
+ else
+ {
+ throw new IllegalArgumentException("Cannot proxy non-Class Type " + type);
+ }
+ }
+
+ public static TypeInfo ofTypes(Set<? extends Type> types)
+ {
+ TypeInfo typeInfo = new TypeInfo();
+ for (Type type : types)
+ {
+ typeInfo.add(type);
+ }
+ return typeInfo;
+ }
+
+ public static TypeInfo ofClasses(Set<Class<?>> classes)
+ {
+ TypeInfo typeInfo = new TypeInfo();
+ for (Class<?> type : classes)
+ {
+ typeInfo.add(type);
+ }
+ return typeInfo;
+ }
+
+ }
+
+ /**
+ * Get the proxy factory for the given set of types
+ *
+ * @param types The types to create the proxy factory for
+ * @param classes Additional interfaces the proxy should implement
+ * @return the proxy factory
+ */
+ public static ProxyFactory getProxyFactory(Set<Type> types)
+ {
+ return TypeInfo.ofTypes(types).createProxyFactory();
+ }
+
+ /**
+ * Indicates if a class is proxyable
+ *
+ * @param type The class to test
+ * @return True if proxyable, false otherwise
+ */
+ public static boolean isTypeProxyable(Type type)
+ {
+ if (type instanceof Class)
+ {
+ return isClassProxyable((Class<?>) type);
+ }
+ else if (type instanceof ParameterizedType)
+ {
+ Type rawType = ((ParameterizedType) type).getRawType();
+ if (rawType instanceof Class)
+ {
+ return isClassProxyable((Class<?>) rawType);
+ }
+ }
+ return false;
+ }
+
+
+ /**
+ * Indicates if a set of types are all proxyable
+ *
+ * @param types The types to test
+ * @return True if proxyable, false otherwise
+ */
+ public static boolean isTypesProxyable(Iterable<? extends Type> types)
+ {
+ for (Type apiType : types)
+ {
+ if (Object.class.equals(apiType))
+ {
+ continue;
+ }
+ if (!isTypeProxyable(apiType))
+ {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ private static boolean isClassProxyable(Class<?> clazz)
+ {
+ if (clazz.isInterface())
+ {
+ return true;
+ }
+ else
+ {
+ Constructor<?> constructor = Reflections.getDeclaredConstructor(clazz);
+ if (constructor == null)
+ {
+ return false;
+ }
+ else if (Modifier.isPrivate(constructor.getModifiers()))
+ {
+ return false;
+ }
+ else if (Reflections.isTypeOrAnyMethodFinal(clazz))
+ {
+ return false;
+ }
+ else if (Reflections.isPrimitive(clazz))
+ {
+ return false;
+ }
+ else if (Reflections.isArrayType(clazz))
+ {
+ return false;
+ }
+ else
+ {
+ return true;
+ }
+ }
+ }
+
+ /**
+ * Indicates if an instance is a Javassist proxy
+ *
+ * @param instance The instance to examine
+ * @return True if proxy, false otherwise
+ */
+ public static boolean isProxy(Object instance)
+ {
+ return instance.getClass().getName().indexOf("_$$_javassist_") > 0;
+ }
+
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/util/Reflections.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/util/Reflections.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/util/Reflections.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/util/Reflections.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,917 @@
+/*
+ * 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 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.HashSet;
+import java.util.Set;
+
+import javax.inject.Qualifier;
+
+import org.jboss.weld.DeploymentException;
+import org.jboss.weld.log.Log;
+import org.jboss.weld.log.Logging;
+import org.jboss.weld.util.reflection.ParameterizedTypeImpl;
+
+/**
+ * Utility class for static reflection-type operations
+ *
+ * @author Pete Muir
+ *
+ */
+public class Reflections
+{
+
+ private static final Log log = Logging.getLog(Reflections.class);
+
+ public static final Type[] EMPTY_TYPES = {};
+
+ public static final Annotation[] EMPTY_ANNOTATIONS = {};
+
+ public static class HierarchyDiscovery
+ {
+
+ private final Type type;
+
+ private Set<Type> types;
+
+ public HierarchyDiscovery(Type type)
+ {
+ this.type = type;
+ }
+
+ protected void add(Type type)
+ {
+ types.add(type);
+ }
+
+ public Set<Type> getFlattenedTypes()
+ {
+ if (types == null)
+ {
+ this.types = new HashSet<Type>();
+ discoverTypes(type);
+ }
+ return types;
+ }
+
+ 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(resolveType(clazz));
+ discoverFromClass(clazz);
+ }
+ else
+ {
+ if (type instanceof ParameterizedType)
+ {
+ Type rawType = ((ParameterizedType) type).getRawType();
+ if (rawType instanceof Class)
+ {
+ discoverFromClass((Class<?>) rawType);
+ }
+ }
+ add(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.getName(), 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))
+ {
+ 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;
+ }
+
+ }
+
+ /**
+ * 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());
+ }
+
+ /**
+ * 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 class is a non-static inner one
+ *
+ * @param clazz Class to Check
+ * @return True if static, false otherwise
+ */
+ public static boolean isNonStaticInnerClass(Class<?> clazz)
+ {
+ return (clazz.isMemberClass() || clazz.isAnonymousClass()) && !isStatic(clazz);
+ }
+
+ /**
+ * 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 RuntimeException("Error accessing constructor (with parameters " + Arrays.toString(parameterTypes) + ") of " + clazz, e);
+ }
+ }
+
+ /**
+ * 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 Set<Type> createTypeClosure(Class<?> rawType, Type[] actualTypeArguments)
+ {
+ Type type = new ParameterizedTypeImpl(rawType, actualTypeArguments, rawType.getDeclaringClass());
+ return new HierarchyDiscovery(type).getFlattenedTypes();
+ }
+
+ /**
+ * Invokes a method and wraps exceptions
+ *
+ * @param method The method to invoke
+ * @param instance The instance to invoke on
+ * @param parameters The parameters
+ * @return The return value
+ */
+ public static Object invokeAndWrap(Method method, Object instance, Object... parameters)
+ {
+ try
+ {
+ method.setAccessible(true);
+ return method.invoke(instance, parameters);
+ }
+ catch (IllegalArgumentException e)
+ {
+ throw new RuntimeException("Error invoking method " + method.getName() + " on " + method.getDeclaringClass(), e);
+ }
+ catch (IllegalAccessException e)
+ {
+ throw new RuntimeException("Error invoking method " + method.getName() + " on " + method.getDeclaringClass(), e);
+ }
+ catch (InvocationTargetException e)
+ {
+ throw new RuntimeException("Error invoking method " + method.getName() + " on " + method.getDeclaringClass(), e);
+ }
+ }
+
+ public static Object invokeAndWrap(String methodName, Object instance, Object... parameters)
+ {
+ Class<?>[] parameterTypes = new Class<?>[parameters.length];
+ for (int i = 0; i < parameters.length; i++)
+ {
+ parameterTypes[i] = parameters[i].getClass();
+ }
+ try
+ {
+ return invokeAndWrap(instance.getClass().getMethod(methodName, parameterTypes), instance, parameters);
+ }
+ catch (SecurityException e)
+ {
+ throw new RuntimeException("Error invoking method " + methodName + " on " + instance.getClass(), e);
+ }
+ catch (NoSuchMethodException e)
+ {
+ throw new RuntimeException("Error invoking method " + methodName + " on " + instance.getClass(), e);
+ }
+ }
+
+ /**
+ * 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 RuntimeException("Error getting field " + field.getName() + " on " + field.getDeclaringClass(), e);
+ }
+ catch (IllegalAccessException e)
+ {
+ throw new RuntimeException("Error getting field " + field.getName() + " on " + field.getDeclaringClass(), e);
+ }
+ }
+
+ public static Object getAndWrap(String fieldName, Object target)
+ {
+ try
+ {
+ return getAndWrap(target.getClass().getField(fieldName), target);
+ }
+ catch (SecurityException e)
+ {
+ throw new RuntimeException("Error getting field " + fieldName + " on " + target.getClass(), e);
+ }
+ catch (NoSuchFieldException e)
+ {
+ throw new RuntimeException("Error getting field " + fieldName + " on " + target.getClass(), 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 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 IllegalArgumentException(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("Method " + methodName + Arrays.asList(parameterTypes).toString().replace("[", "(").replace("]", ")") + " not implemented by instance " + 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 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 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 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;
+ }
+
+ /**
+ * 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 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("Cannot access values() on annotation", e);
+ }
+ }
+
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/util/Strings.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/util/Strings.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/util/Strings.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/util/Strings.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,133 @@
+/*
+ * 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 java.beans.Introspector;
+import java.util.Collection;
+import java.util.Map;
+import java.util.StringTokenizer;
+import java.util.Map.Entry;
+
+
+/**
+ * String utilities
+ *
+ * @author Pete Muir
+ *
+ */
+public class Strings
+{
+
+ /**
+ * Decapitalizes a String
+ *
+ * @param camelCase The String
+ * @return The decapitalized result
+ */
+ public static String decapitalize(String camelCase)
+ {
+ return Introspector.decapitalize(camelCase);
+ }
+
+ /**
+ * Split a string into parts
+ *
+ * @param strings The sources
+ * @param delims The delimeter
+ * @return The parts
+ */
+ public static String[] split(String strings, String delims)
+ {
+ if (strings == null)
+ {
+ return new String[0];
+ }
+ else
+ {
+ StringTokenizer tokens = new StringTokenizer(strings, delims);
+ String[] result = new String[tokens.countTokens()];
+ int i = 0;
+ while (tokens.hasMoreTokens())
+ {
+ result[i++] = tokens.nextToken();
+ }
+ return result;
+ }
+ }
+
+ /**
+ * Returns a textual representation of a map for debug purposes
+ *
+ * @param header The description of the map
+ * @param map The map
+ * @return A textual representation
+ */
+ public static String mapToString(String header, Map<?, ?> map)
+ {
+ StringBuilder buffer = new StringBuilder();
+ if (map == null)
+ {
+ buffer.append(header).append("null\n");
+ return buffer.toString();
+ }
+ buffer.append(header).append("[").append(map.size()).append(" entries]\n");
+ int i = 0;
+ for (Entry<?, ?> entry: map.entrySet())
+ {
+ Object value = entry.getValue();
+ buffer.append(" #").append(++i).append(": ").append(entry.getKey()).append(" -> ");
+ if (value instanceof Iterable<?>)
+ {
+ buffer.append("\n");
+ for (Object subValue : (Iterable<?>) value)
+ {
+ buffer.append(" ").append(subValue.toString()).append("\n");
+ }
+ }
+ else
+ {
+ buffer.append(value.toString()).append("\n");
+ }
+ }
+ return buffer.toString();
+ }
+
+ /**
+ * Returns a textual representation of a collection for debug purposes
+ *
+ * @param header The description of the collection
+ * @param collection The collection
+ * @return A textual representation
+ */
+ public static String collectionToString(String header, Collection<?> collection)
+ {
+ StringBuilder buffer = new StringBuilder();
+ if (collection == null)
+ {
+ buffer.append(header + "null\n");
+ return buffer.toString();
+ }
+ buffer.append(header + "[" + collection.size() + " entries]\n");
+ int i = 0;
+ for (Object item : collection)
+ {
+ buffer.append(" #" + ++i + ": " + item.toString() + "\n");
+ }
+ return buffer.toString();
+ }
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/util/Types.java (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/util/Types.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/weld/util/Types.java (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/util/Types.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -0,0 +1,90 @@
+/*
+ * 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 java.lang.reflect.Type;
+
+/**
+ * Utility class for Types
+ *
+ * @author Pete Muir
+ */
+public class Types
+{
+
+ /**
+ * Gets the boxed type of a class
+ *
+ * @param type The type
+ * @return The boxed type
+ */
+ public static Type boxedType(Type type)
+ {
+ if (type instanceof Class)
+ {
+ return boxedClass((Class<?>) type);
+ }
+ else
+ {
+ return type;
+ }
+ }
+
+ public static Class<?> boxedClass(Class<?> type)
+ {
+ if (type.equals(Boolean.TYPE))
+ {
+ return Boolean.class;
+ }
+ else if (type.equals(Character.TYPE))
+ {
+ return Character.class;
+ }
+ else if (type.equals(Byte.TYPE))
+ {
+ return Byte.class;
+ }
+ else if (type.equals(Short.TYPE))
+ {
+ return Short.class;
+ }
+ else if (type.equals(Integer.TYPE))
+ {
+ return Integer.class;
+ }
+ else if (type.equals(Long.TYPE))
+ {
+ return Long.class;
+ }
+ else if (type.equals(Float.TYPE))
+ {
+ return Float.class;
+ }
+ else if (type.equals(Double.TYPE))
+ {
+ return Double.class;
+ }
+ else if (type.equals(Void.TYPE))
+ {
+ return Void.class;
+ }
+ return type;
+ }
+
+
+
+}
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/util/collections (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/util/collections)
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/util/collections/Arrays2.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/util/collections/Arrays2.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/util/collections/Arrays2.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.util.collections;
+package org.jboss.weld.util.collections;
import java.util.Arrays;
import java.util.HashSet;
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/util/collections/ConcurrentCache.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/util/collections/ConcurrentCache.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/util/collections/ConcurrentCache.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.util.collections;
+package org.jboss.weld.util.collections;
import java.util.Map;
import java.util.concurrent.Callable;
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/util/collections/EnumerationList.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/util/collections/EnumerationList.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/util/collections/EnumerationList.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.util.collections;
+package org.jboss.weld.util.collections;
import java.util.ArrayList;
import java.util.Enumeration;
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/util/collections/ListComparator.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/util/collections/ListComparator.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/util/collections/ListComparator.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.util.collections;
+package org.jboss.weld.util.collections;
import java.util.Comparator;
import java.util.List;
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/util/dom (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/util/dom)
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/util/dom/NodeListIterable.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/util/dom/NodeListIterable.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/util/dom/NodeListIterable.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.util.dom;
+package org.jboss.weld.util.dom;
import java.util.Iterator;
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/util/dom/NodeListIterator.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/util/dom/NodeListIterator.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/util/dom/NodeListIterator.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.util.dom;
+package org.jboss.weld.util.dom;
import java.util.Iterator;
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/util/el (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/util/el)
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/util/el/ForwardingELContext.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/util/el/ForwardingELContext.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/util/el/ForwardingELContext.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.util.el;
+package org.jboss.weld.util.el;
import java.util.Locale;
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/util/el/ForwardingELResolver.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/util/el/ForwardingELResolver.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/util/el/ForwardingELResolver.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.util.el;
+package org.jboss.weld.util.el;
import java.beans.FeatureDescriptor;
import java.util.Iterator;
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/util/el/ForwardingExpressionFactory.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/util/el/ForwardingExpressionFactory.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/util/el/ForwardingExpressionFactory.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.util.el;
+package org.jboss.weld.util.el;
import javax.el.ELContext;
import javax.el.ExpressionFactory;
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/util/el/ForwardingMethodExpression.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/util/el/ForwardingMethodExpression.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/util/el/ForwardingMethodExpression.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.util.el;
+package org.jboss.weld.util.el;
import javax.el.ELContext;
import javax.el.MethodExpression;
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/util/el/ForwardingValueExpression.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/util/el/ForwardingValueExpression.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/util/el/ForwardingValueExpression.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.util.el;
+package org.jboss.weld.util.el;
import javax.el.ELContext;
import javax.el.ValueExpression;
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/util/reflection (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/util/reflection)
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/util/reflection/ParameterizedTypeImpl.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/util/reflection/ParameterizedTypeImpl.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/util/reflection/ParameterizedTypeImpl.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.util.reflection;
+package org.jboss.weld.util.reflection;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/util/serviceProvider (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/util/serviceProvider)
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/util/serviceProvider/ServiceLoader.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/util/serviceProvider/ServiceLoader.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/util/serviceProvider/ServiceLoader.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.util.serviceProvider;
+package org.jboss.weld.util.serviceProvider;
import java.io.BufferedReader;
import java.io.IOException;
@@ -27,9 +27,9 @@
import java.util.Iterator;
import java.util.Set;
-import org.jboss.webbeans.log.Log;
-import org.jboss.webbeans.log.Logging;
-import org.jboss.webbeans.util.Reflections;
+import org.jboss.weld.log.Log;
+import org.jboss.weld.log.Logging;
+import org.jboss.weld.util.Reflections;
/**
* This class handles looking up service providers on the class path. It
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/ws (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/ws)
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/ws/WSApiAbstraction.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/ws/WSApiAbstraction.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/ws/WSApiAbstraction.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,13 +14,13 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.ws;
+package org.jboss.weld.ws;
import java.lang.annotation.Annotation;
-import org.jboss.webbeans.bootstrap.api.Service;
-import org.jboss.webbeans.resources.spi.ResourceLoader;
-import org.jboss.webbeans.util.ApiAbstraction;
+import org.jboss.weld.bootstrap.api.Service;
+import org.jboss.weld.resources.spi.ResourceLoader;
+import org.jboss.weld.util.ApiAbstraction;
public class WSApiAbstraction extends ApiAbstraction implements Service
{
Copied: ri/trunk/impl/src/main/java/org/jboss/weld/xml (from rev 3872, ri/trunk/impl/src/main/java/org/jboss/webbeans/xml)
Modified: ri/trunk/impl/src/main/java/org/jboss/weld/xml/BeansXmlParser.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/xml/BeansXmlParser.java 2009-10-07 21:43:49 UTC (rev 3872)
+++ ri/trunk/impl/src/main/java/org/jboss/weld/xml/BeansXmlParser.java 2009-10-08 03:34:46 UTC (rev 3879)
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.jboss.webbeans.xml;
+package org.jboss.weld.xml;
import java.io.IOException;
import java.io.InputStream;
@@ -29,10 +29,10 @@
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
-import org.jboss.webbeans.DeploymentException;
-import org.jboss.webbeans.resources.spi.ResourceLoader;
-import org.jboss.webbeans.resources.spi.ResourceLoadingException;
-import org.jboss.webbeans.util.dom.NodeListIterable;
+import org.jboss.weld.DeploymentException;
+import org.jboss.weld.resources.spi.ResourceLoader;
+import org.jboss.weld.resources.spi.ResourceLoadingException;
+import org.jboss.weld.util.dom.NodeListIterable;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
More information about the weld-commits
mailing list