Author: struberg
Date: Fri Jun 27 22:18:40 2014
New Revision: 1606260
URL: http://svn.apache.org/r1606260
Log:
OWB-976 remove AbstractBeanManager
Removed:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/AbstractBeanManager.java
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/InjectableBeanManager.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/ExtensionProducer.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ExtensionLoader.java
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/mock/MockManager.java
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java
URL:
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java?rev=1606260&r1=1606259&r2=1606260&view=diff
==============================================================================
---
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java
(original)
+++
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java
Fri Jun 27 22:18:40 2014
@@ -42,18 +42,7 @@ import javax.enterprise.context.spi.Cont
import javax.enterprise.context.spi.CreationalContext;
import javax.enterprise.inject.Default;
import javax.enterprise.inject.Stereotype;
-import javax.enterprise.inject.spi.AnnotatedType;
-import javax.enterprise.inject.spi.Bean;
-import javax.enterprise.inject.spi.BeanManager;
-import javax.enterprise.inject.spi.Decorator;
-import javax.enterprise.inject.spi.EventMetadata;
-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.enterprise.inject.spi.Producer;
+import javax.enterprise.inject.spi.*;
import javax.inject.Scope;
import javax.interceptor.InterceptorBinding;
import javax.naming.NamingException;
@@ -63,9 +52,14 @@ import javax.naming.StringRefAddr;
import org.apache.webbeans.component.AbstractOwbBean;
import org.apache.webbeans.component.EnterpriseBeanMarker;
+import org.apache.webbeans.component.InjectionTargetBean;
import org.apache.webbeans.component.JmsBeanMarker;
import org.apache.webbeans.component.NewBean;
import org.apache.webbeans.component.OwbBean;
+import org.apache.webbeans.component.WebBeansType;
+import org.apache.webbeans.component.creation.BeanAttributesBuilder;
+import org.apache.webbeans.component.creation.FieldProducerFactory;
+import org.apache.webbeans.component.creation.MethodProducerFactory;
import
org.apache.webbeans.component.third.PassivationCapableThirdpartyBeanImpl;
import org.apache.webbeans.component.third.ThirdpartyBeanImpl;
import org.apache.webbeans.config.WebBeansContext;
@@ -76,8 +70,6 @@ import org.apache.webbeans.event.Notific
import org.apache.webbeans.exception.WebBeansConfigurationException;
import org.apache.webbeans.exception.definition.DuplicateDefinitionException;
-import javax.enterprise.inject.spi.DefinitionException;
-
import org.apache.webbeans.plugins.OpenWebBeansJmsPlugin;
import org.apache.webbeans.portable.AnnotatedElementFactory;
import org.apache.webbeans.portable.events.discovery.ErrorStack;
@@ -101,7 +93,7 @@ import org.apache.webbeans.util.WebBeans
* @see BeanManager
*/
@SuppressWarnings("unchecked")
-public class BeanManagerImpl extends AbstractBeanManager implements
BeanManager, Referenceable
+public class BeanManagerImpl implements BeanManager, Referenceable
{
private static final long serialVersionUID = 2L;
@@ -213,7 +205,6 @@ public class BeanManagerImpl extends Abs
annotatedElementFactory = webBeansContext.getAnnotatedElementFactory();
}
- @Override
public WebBeansContext getWebBeansContext()
{
return webBeansContext;
@@ -728,6 +719,66 @@ public class BeanManagerImpl extends Abs
return instance;
}
+ /**
+ * {@inheritDoc}
+ */
+ public BeanAttributes<?> createBeanAttributes(AnnotatedMember<?> member)
+ {
+ if (member instanceof AnnotatedField)
+ {
+ return
BeanAttributesBuilder.forContext(webBeansContext).newBeanAttibutes((AnnotatedField<?>)member).build();
+ }
+ else if (member instanceof AnnotatedMethod)
+ {
+ return
BeanAttributesBuilder.forContext(webBeansContext).newBeanAttibutes((AnnotatedMethod<?>)member).build();
+ }
+ else
+ {
+ throw new IllegalArgumentException("Unsupported member type " +
member.getClass().getName());
+ }
+ }
+
+ public InjectionPoint createInjectionPoint(AnnotatedField<?> field)
+ {
+ return
webBeansContext.getInjectionPointFactory().buildInjectionPoint(null, field);
+ }
+
+ public InjectionPoint createInjectionPoint(AnnotatedParameter<?> parameter)
+ {
+ return
webBeansContext.getInjectionPointFactory().buildInjectionPoint(null, parameter);
+ }
+
+ public <X> ProducerFactory<X> getProducerFactory(AnnotatedField<? super X>
field, Bean<X> bean)
+ {
+ return new FieldProducerFactory<X>(field, bean, webBeansContext);
+ }
+
+ public <X> ProducerFactory<X> getProducerFactory(AnnotatedMethod<? super
X> method, Bean<X> bean)
+ {
+ return new MethodProducerFactory<X>(method, bean, webBeansContext);
+ }
+
+ public <X> InjectionTargetFactory<X>
getInjectionTargetFactory(AnnotatedType<X> type)
+ {
+ return new InjectionTargetFactoryImpl<X>(type, webBeansContext);
+ }
+
+ public <T> Bean<T> createBean(BeanAttributes<T> attributes, Class<T> type,
InjectionTargetFactory<T> factory)
+ {
+ AnnotatedType<T> annotatedType =
webBeansContext.getAnnotatedElementFactory().getAnnotatedType(type);
+ if (annotatedType == null)
+ {
+ annotatedType =
webBeansContext.getAnnotatedElementFactory().newAnnotatedType(type);
+ }
+ return new InjectionTargetBean<T>(
+ webBeansContext,
+ WebBeansType.THIRDPARTY,
+ annotatedType,
+ attributes,
+ type,
+ factory);
+ }
+
private boolean isBeanTypeAssignableToGivenType(Set<Type> beanTypes, Type
givenType, boolean newBean)
{
@@ -917,6 +968,47 @@ public class BeanManagerImpl extends Abs
return
AnnotationUtil.hasAnnotation(annotationType.getDeclaredAnnotations(),
Stereotype.class);
}
+ public boolean areInterceptorBindingsEquivalent(Annotation annotation1,
Annotation annotation2)
+ {
+ return AnnotationUtil.isCdiAnnotationEqual(annotation1, annotation2);
+ }
+
+ public boolean areQualifiersEquivalent(Annotation annotation1, Annotation
annotation2)
+ {
+ return AnnotationUtil.isCdiAnnotationEqual(annotation1, annotation2);
+ }
+
+ public int getInterceptorBindingHashCode(Annotation annotation)
+ {
+ return AnnotationUtil.getCdiAnnotationHashCode(annotation);
+ }
+
+ public int getQualifierHashCode(Annotation annotation)
+ {
+ return AnnotationUtil.getCdiAnnotationHashCode(annotation);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public <T> BeanAttributes<T> createBeanAttributes(AnnotatedType<T> type)
+ {
+ return
BeanAttributesBuilder.forContext(webBeansContext).newBeanAttibutes(type).build();
+ }
+
+
+ public <T, X> Bean<T> createBean(BeanAttributes<T> attributes, Class<X>
type, ProducerFactory<X> factory)
+ {
+ //X TODO we need to add the ProducerFactory stuff
+ return null;
+ //return new AbstractProducerBean<T>(type, webBeansContext,
WebBeansType.THIRDPARTY, attributes, returnType, factory);
+ }
+
+ public <T extends Extension> T getExtension(Class<T> type)
+ {
+ return webBeansContext.getExtensionLoader().getExtension(type);
+ }
+
@Override
public <X> Bean<? extends X> resolve(Set<Bean<? extends X>> beans)
{
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/InjectableBeanManager.java
URL:
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/InjectableBeanManager.java?rev=1606260&r1=1606259&r2=1606260&view=diff
==============================================================================
---
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/InjectableBeanManager.java
(original)
+++
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/InjectableBeanManager.java
Fri Jun 27 22:18:40 2014
@@ -33,15 +33,23 @@ import javax.el.ExpressionFactory;
import javax.enterprise.context.spi.Context;
import javax.enterprise.context.spi.Contextual;
import javax.enterprise.context.spi.CreationalContext;
+import javax.enterprise.inject.spi.AnnotatedField;
+import javax.enterprise.inject.spi.AnnotatedMember;
+import javax.enterprise.inject.spi.AnnotatedMethod;
+import javax.enterprise.inject.spi.AnnotatedParameter;
import javax.enterprise.inject.spi.AnnotatedType;
import javax.enterprise.inject.spi.Bean;
+import javax.enterprise.inject.spi.BeanAttributes;
import javax.enterprise.inject.spi.BeanManager;
import javax.enterprise.inject.spi.Decorator;
+import javax.enterprise.inject.spi.Extension;
import javax.enterprise.inject.spi.InjectionPoint;
import javax.enterprise.inject.spi.InjectionTarget;
+import javax.enterprise.inject.spi.InjectionTargetFactory;
import javax.enterprise.inject.spi.InterceptionType;
import javax.enterprise.inject.spi.Interceptor;
import javax.enterprise.inject.spi.ObserverMethod;
+import javax.enterprise.inject.spi.ProducerFactory;
import org.apache.webbeans.config.WebBeansContext;
@@ -55,7 +63,7 @@ import org.apache.webbeans.config.WebBea
* This class is Serializable and always resolves the current
* instance of the central BeanManager automatically.
*/
-public class InjectableBeanManager extends AbstractBeanManager implements
BeanManager, Serializable, Externalizable
+public class InjectableBeanManager implements BeanManager, Serializable,
Externalizable
{
private static final long serialVersionUID = 1L;
@@ -76,12 +84,6 @@ public class InjectableBeanManager exten
}
@Override
- public WebBeansContext getWebBeansContext()
- {
- return bm.getWebBeansContext();
- }
-
- @Override
public <T> AnnotatedType<T> createAnnotatedType(Class<T> type)
{
return bm.createAnnotatedType(type);
@@ -232,6 +234,90 @@ public class InjectableBeanManager exten
}
@Override
+ public boolean areQualifiersEquivalent(Annotation qualifier1, Annotation
qualifier2)
+ {
+ return bm.areQualifiersEquivalent(qualifier1, qualifier2);
+ }
+
+ @Override
+ public int getQualifierHashCode(Annotation qualifier)
+ {
+ return bm.getQualifierHashCode(qualifier);
+ }
+
+ @Override
+ public boolean areInterceptorBindingsEquivalent(Annotation
interceptorBinding1, Annotation interceptorBinding2)
+ {
+ return bm.areInterceptorBindingsEquivalent(interceptorBinding1,
interceptorBinding2);
+ }
+
+ @Override
+ public int getInterceptorBindingHashCode(Annotation interceptorBinding)
+ {
+ return bm.getInterceptorBindingHashCode(interceptorBinding);
+ }
+
+ @Override
+ public InjectionPoint createInjectionPoint(AnnotatedField<?> field)
+ {
+ return bm.createInjectionPoint(field);
+ }
+
+ @Override
+ public InjectionPoint createInjectionPoint(AnnotatedParameter<?> parameter)
+ {
+ return bm.createInjectionPoint(parameter);
+ }
+
+ @Override
+ public <T> InjectionTargetFactory<T>
getInjectionTargetFactory(AnnotatedType<T> type)
+ {
+ return bm.getInjectionTargetFactory(type);
+ }
+
+ @Override
+ public <X> ProducerFactory<X> getProducerFactory(AnnotatedField<? super X>
field, Bean<X> declaringBean)
+ {
+ return bm.getProducerFactory(field, declaringBean);
+ }
+
+ @Override
+ public <X> ProducerFactory<X> getProducerFactory(AnnotatedMethod<? super
X> method, Bean<X> declaringBean)
+ {
+ return bm.getProducerFactory(method, declaringBean);
+ }
+
+ @Override
+ public <T> BeanAttributes<T> createBeanAttributes(AnnotatedType<T> type)
+ {
+ return bm.createBeanAttributes(type);
+ }
+
+ @Override
+ public BeanAttributes<?> createBeanAttributes(AnnotatedMember<?> member)
+ {
+ return bm.createBeanAttributes(member);
+ }
+
+ @Override
+ public <T> Bean<T> createBean(BeanAttributes<T> attributes, Class<T>
beanClass, InjectionTargetFactory<T> injectionTargetFactory)
+ {
+ return bm.createBean(attributes, beanClass, injectionTargetFactory);
+ }
+
+ @Override
+ public <T, X> Bean<T> createBean(BeanAttributes<T> attributes, Class<X>
beanClass, ProducerFactory<X> producerFactory)
+ {
+ return bm.createBean(attributes, beanClass, producerFactory);
+ }
+
+ @Override
+ public <T extends Extension> T getExtension(Class<T> extensionClass)
+ {
+ return bm.getExtension(extensionClass);
+ }
+
+ @Override
public void writeExternal(ObjectOutput out) throws IOException
{
}
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/ExtensionProducer.java
URL:
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/ExtensionProducer.java?rev=1606260&r1=1606259&r2=1606260&view=diff
==============================================================================
---
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/ExtensionProducer.java
(original)
+++
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/ExtensionProducer.java
Fri Jun 27 22:18:40 2014
@@ -45,6 +45,6 @@ public class ExtensionProducer<R> extend
{
ExtensionLoader loader = webBeansContext.getExtensionLoader();
- return loader.getBeanInstance((Bean<R>)((CreationalContextImpl<R>)
creationalContext).getBean());
+ return (R)
loader.getExtension(creationalContext.getBean().getBeanClass());
}
}
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ExtensionLoader.java
URL:
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ExtensionLoader.java?rev=1606260&r1=1606259&r2=1606260&view=diff
==============================================================================
---
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ExtensionLoader.java
(original)
+++
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ExtensionLoader.java
Fri Jun 27 22:18:40 2014
@@ -30,7 +30,6 @@ import javax.enterprise.inject.spi.Exten
import org.apache.webbeans.config.WebBeansContext;
import org.apache.webbeans.container.BeanManagerImpl;
import org.apache.webbeans.exception.WebBeansException;
-import org.apache.webbeans.util.Asserts;
import org.apache.webbeans.util.WebBeansUtil;
/**
@@ -43,7 +42,7 @@ import org.apache.webbeans.util.WebBeans
public class ExtensionLoader
{
/**Map of extensions*/
- private final Map<Bean<?>, Object> extensions = new
ConcurrentHashMap<Bean<?>, Object>();
+ private final Map<Class<?>, Object> extensions = new
ConcurrentHashMap<Class<?>, Object>();
private final Set<Class<? extends Extension>> extensionClasses = new
HashSet<Class<? extends Extension>>();
private final BeanManagerImpl manager;
@@ -95,20 +94,13 @@ public class ExtensionLoader
/**
* Returns service bean instance.
*
- * @param bean service bean
+ * @param extensionClass class of the extension
* @return service bean instance
*/
@SuppressWarnings("unchecked")
- public <T> T getBeanInstance(Bean<T> bean)
+ public <T> T getExtension(Class<T> extensionClass)
{
- Asserts.assertNotNull(bean,"bean parameter cannot be null");
-
- if(extensions.containsKey(bean))
- {
- return (T) extensions.get(bean);
- }
-
- return null;
+ return (T) extensions.get(extensionClass);
}
@@ -119,7 +111,8 @@ public class ExtensionLoader
public void addExtension(Extension ext)
{
Bean<?> bean =
webBeansContext.getWebBeansUtil().createExtensionComponent(ext.getClass());
- extensions.put(bean, ext);
+ Class<?> extensionClass = ext.getClass();
+ extensions.put(extensionClass, ext);
manager.addBean(bean);
}
Modified:
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/mock/MockManager.java
URL:
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/mock/MockManager.java?rev=1606260&r1=1606259&r2=1606260&view=diff
==============================================================================
---
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/mock/MockManager.java
(original)
+++
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/mock/MockManager.java
Fri Jun 27 22:18:40 2014
@@ -18,7 +18,6 @@
*/
package org.apache.webbeans.test.mock;
-import java.io.InputStream;
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
import java.util.ArrayList;
@@ -30,15 +29,23 @@ import javax.el.ExpressionFactory;
import javax.enterprise.context.spi.Context;
import javax.enterprise.context.spi.Contextual;
import javax.enterprise.context.spi.CreationalContext;
+import javax.enterprise.inject.spi.AnnotatedField;
+import javax.enterprise.inject.spi.AnnotatedMember;
+import javax.enterprise.inject.spi.AnnotatedMethod;
+import javax.enterprise.inject.spi.AnnotatedParameter;
import javax.enterprise.inject.spi.AnnotatedType;
import javax.enterprise.inject.spi.Bean;
+import javax.enterprise.inject.spi.BeanAttributes;
import javax.enterprise.inject.spi.BeanManager;
import javax.enterprise.inject.spi.Decorator;
+import javax.enterprise.inject.spi.Extension;
import javax.enterprise.inject.spi.InjectionPoint;
import javax.enterprise.inject.spi.InjectionTarget;
+import javax.enterprise.inject.spi.InjectionTargetFactory;
import javax.enterprise.inject.spi.InterceptionType;
import javax.enterprise.inject.spi.Interceptor;
import javax.enterprise.inject.spi.ObserverMethod;
+import javax.enterprise.inject.spi.ProducerFactory;
import javax.enterprise.util.TypeLiteral;
import org.apache.webbeans.component.AbstractOwbBean;
@@ -46,11 +53,10 @@ import org.apache.webbeans.component.Bea
import org.apache.webbeans.component.creation.BeanAttributesBuilder;
import org.apache.webbeans.config.WebBeansContext;
import org.apache.webbeans.config.WebBeansFinder;
-import org.apache.webbeans.container.AbstractBeanManager;
import org.apache.webbeans.container.BeanManagerImpl;
import org.apache.webbeans.util.WebBeansUtil;
-public class MockManager extends AbstractBeanManager implements BeanManager
+public class MockManager implements BeanManager
{
private BeanManagerImpl manager = null;
@@ -64,7 +70,6 @@ public class MockManager extends Abstrac
manager.addBean(webBeansContext.getWebBeansUtil().getManagerBean());
}
- @Override
public WebBeansContext getWebBeansContext()
{
return manager.getWebBeansContext();
@@ -298,4 +303,82 @@ public class MockManager extends Abstrac
{
return null;
}
+
+ @Override
+ public boolean areQualifiersEquivalent(Annotation qualifier1, Annotation
qualifier2)
+ {
+ return manager.areQualifiersEquivalent(qualifier1, qualifier2);
+ }
+
+ @Override
+ public int getQualifierHashCode(Annotation qualifier)
+ {
+ return manager.getQualifierHashCode(qualifier);
+ }
+
+ @Override
+ public boolean areInterceptorBindingsEquivalent(Annotation
interceptorBinding1, Annotation interceptorBinding2)
+ {
+ return manager.areInterceptorBindingsEquivalent(interceptorBinding1,
interceptorBinding2);
+ }
+
+ @Override
+ public int getInterceptorBindingHashCode(Annotation interceptorBinding)
+ {
+ return manager.getInterceptorBindingHashCode(interceptorBinding);
+ }
+
+ @Override
+ public InjectionPoint createInjectionPoint(AnnotatedField<?> field)
+ {
+ return manager.createInjectionPoint(field);
+ }
+
+ @Override
+ public InjectionPoint createInjectionPoint(AnnotatedParameter<?> parameter)
+ {
+ return manager.createInjectionPoint(parameter);
+ }
+
+ @Override
+ public <T> InjectionTargetFactory<T>
getInjectionTargetFactory(AnnotatedType<T> type)
+ {
+ return manager.getInjectionTargetFactory(type);
+ }
+
+ @Override
+ public <X> ProducerFactory<X> getProducerFactory(AnnotatedField<? super X>
field, Bean<X> declaringBean)
+ {
+ return manager.getProducerFactory(field, declaringBean);
+ }
+
+ @Override
+ public <X> ProducerFactory<X> getProducerFactory(AnnotatedMethod<? super
X> method, Bean<X> declaringBean)
+ {
+ return manager.getProducerFactory(method, declaringBean);
+ }
+
+ @Override
+ public BeanAttributes<?> createBeanAttributes(AnnotatedMember<?> member)
+ {
+ return manager.createBeanAttributes(member);
+ }
+
+ @Override
+ public <T> Bean<T> createBean(BeanAttributes<T> attributes, Class<T>
beanClass, InjectionTargetFactory<T> injectionTargetFactory)
+ {
+ return manager.createBean(attributes, beanClass,
injectionTargetFactory);
+ }
+
+ @Override
+ public <T, X> Bean<T> createBean(BeanAttributes<T> attributes, Class<X>
beanClass, ProducerFactory<X> producerFactory)
+ {
+ return manager.createBean(attributes, beanClass, producerFactory);
+ }
+
+ @Override
+ public <T extends Extension> T getExtension(Class<T> extensionClass)
+ {
+ return manager.getExtension(extensionClass);
+ }
}