You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by ge...@apache.org on 2009/07/01 22:27:50 UTC
svn commit: r790362 [1/2] - in /incubator/openwebbeans/trunk/webbeans-impl:
./ src/main/java/org/apache/webbeans/component/
src/main/java/org/apache/webbeans/component/third/
src/main/java/org/apache/webbeans/config/
src/main/java/org/apache/webbeans/c...
Author: gerdogdu
Date: Wed Jul 1 20:27:48 2009
New Revision: 790362
URL: http://svn.apache.org/viewvc?rev=790362&view=rev
Log:
Updating for reflecting API changes.
Modified:
incubator/openwebbeans/trunk/webbeans-impl/pom.xml
incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractComponent.java
incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/Component.java
incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ComponentImpl.java
incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerComponentImpl.java
incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerFieldComponent.java
incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/third/ThirdpartyBeanImpl.java
incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/DefinitionUtil.java
incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/WebBeansContainerDeployer.java
incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/ChildActivityManager.java
incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/InjectionResolver.java
incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/ManagerImpl.java
incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/ResolutionUtil.java
incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/AbstractContext.java
incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/WebBeansContext.java
incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/creational/CreationalContextFactory.java (contents, props changed)
incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/creational/CreationalContextImpl.java
incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationManager.java
incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/decorator/WebBeansDecorator.java
incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/el/WebBeansELResolver.java
incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/BeanObserverImpl.java
incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/xml/BeanObserverXMLImpl.java
incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/instance/InstanceImpl.java
incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/webbeans/WebBeansInterceptor.java
incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/proxy/JavassistProxyFactory.java
incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/ClassUtil.java
incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java
incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/xml/XMLDefinitionUtil.java
incubator/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/containertests/ComponentResolutionByTypeTest.java
incubator/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/mock/MockManager.java
incubator/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/dependent/DependentComponentTest.java
incubator/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/typedliteral/TypedLiteralComponentTest.java
Modified: incubator/openwebbeans/trunk/webbeans-impl/pom.xml
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/pom.xml?rev=790362&r1=790361&r2=790362&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/pom.xml (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/pom.xml Wed Jul 1 20:27:48 2009
@@ -52,7 +52,6 @@
<dependency>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-el_1.0_spec</artifactId>
- <scope>provided</scope>
</dependency>
<dependency>
<groupId>javassist</groupId>
Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractComponent.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractComponent.java?rev=790362&r1=790361&r2=790362&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractComponent.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractComponent.java Wed Jul 1 20:27:48 2009
@@ -19,11 +19,8 @@
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.HashSet;
-import java.util.Iterator;
import java.util.List;
-import java.util.Map;
import java.util.Set;
-import java.util.WeakHashMap;
import javax.enterprise.context.spi.CreationalContext;
import javax.enterprise.inject.CreationException;
@@ -33,8 +30,10 @@
import org.apache.webbeans.config.inheritance.BeanInheritedMetaData;
import org.apache.webbeans.config.inheritance.IBeanInheritedMetaData;
import org.apache.webbeans.container.ManagerImpl;
+import org.apache.webbeans.context.creational.CreationalContextImpl;
import org.apache.webbeans.deployment.DeploymentTypeManager;
import org.apache.webbeans.intercept.InterceptorData;
+import org.apache.webbeans.logger.WebBeansLogger;
import org.apache.webbeans.util.ClassUtil;
/**
@@ -47,6 +46,9 @@
*/
public abstract class AbstractComponent<T> extends Component<T>
{
+ /**Logger instance*/
+ private final WebBeansLogger logger = WebBeansLogger.getLogger(getClass());
+
/** Name of the component */
protected String name;
@@ -68,9 +70,6 @@
/** Return type of the component */
protected Class<T> returnType;
- /** Dependent object map of the component */
- protected Map<Object, Bean<?>> dependentObjects = new WeakHashMap<Object, Bean<?>>();
-
/** Stereotypes of the component */
protected Set<Annotation> stereoTypes = new HashSet<Annotation>();
@@ -100,6 +99,9 @@
/**Tracks dependent injection point owner, can be null*/
protected InjectionPoint dependentOwnerInjectionPoint;
+
+ /**Creational context*/
+ protected CreationalContext<T> creationalContext = null;
/**
* Constructor definiton. Each subclass redefines its own constructor with
@@ -149,8 +151,8 @@
T instance = null;
try
{
-
- instance = createInstance(creationalContext);
+ this.creationalContext = creationalContext;
+ instance = createInstance(this.creationalContext);
}
catch (Exception re)
@@ -185,20 +187,28 @@
* (non-Javadoc)
* @see javax.webbeans.component.Component#destroy(java.lang.Object)
*/
- public void destroy(T instance)
+ public void destroy(T instance, CreationalContext<T> creationalContext)
{
- //Destory dependent instances
- destroyDependents();
-
- //Destroy instance, call @PreDestroy
- destroyInstance(instance);
-
- //Clear Decorator and Interceptor Stack
- this.decoratorStack.clear();
- this.interceptorStack.clear();
-
- //Reset it
- this.dependentOwnerInjectionPoint = null;
+ try
+ {
+ //Destory dependent instances
+ this.creationalContext.release();
+
+ //Destroy instance, call @PreDestroy
+ destroyInstance(instance);
+
+ //Clear Decorator and Interceptor Stack
+ this.decoratorStack.clear();
+ this.interceptorStack.clear();
+
+ //Reset it
+ this.dependentOwnerInjectionPoint = null;
+
+ }catch(Exception e)
+ {
+ logger.fatal("Exception is thrown while destroying bean instance : " + toString());
+ e.printStackTrace();
+ }
}
/**
@@ -330,7 +340,7 @@
*
* @return stereotypes of the component
*/
- public Set<Annotation> getStereotypes()
+ public Set<Annotation> getOwbStereotypes()
{
return this.stereoTypes;
}
@@ -420,9 +430,11 @@
//Get dependent instance
object = ManagerImpl.getManager().getInstance(dependentComponent);
-
+
+ CreationalContextImpl<T> cc = (CreationalContextImpl<T>)this.creationalContext;
+
//Put this into the dependent map
- this.dependentObjects.put(object, dependentComponent);
+ cc.addDependent(dependentComponent, object);
return object;
}
@@ -483,24 +495,6 @@
{
return this.serializable;
}
-
- @SuppressWarnings("unchecked")
- protected <K> void destroyDependents()
- {
- Set<Object> keySet = this.dependentObjects.keySet();
- Iterator<Object> it = keySet.iterator();
-
- K instance = null;
-
- while (it.hasNext())
- {
- instance = (K) it.next();
- Bean<K> bean = (Bean<K>) this.dependentObjects.get(instance);
- bean.destroy(instance);
- }
-
- this.dependentObjects.clear();
- }
public void addInjectionPoint(InjectionPoint injectionPoint)
{
@@ -554,6 +548,24 @@
return points;
}
+ public Set<Class<? extends Annotation>> getStereotypes()
+ {
+ Set<Class<? extends Annotation>> set = new HashSet<Class<? extends Annotation>>();
+
+ for(Annotation ann : this.stereoTypes)
+ {
+ set.add(ann.annotationType());
+ }
+
+ return set;
+ }
+
+ //TODO Replaces @Deploymeny Types, no starting work for now!
+ public boolean isPolicy()
+ {
+ return false;
+ }
+
public String toString()
{
StringBuilder builder = new StringBuilder();
Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/Component.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/Component.java?rev=790362&r1=790361&r2=790362&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/Component.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/Component.java Wed Jul 1 20:27:48 2009
@@ -138,7 +138,7 @@
/**
* Gets stereotypes annotations.
*/
- public abstract Set<Annotation> getStereotypes();
+ public abstract Set<Annotation> getOwbStereotypes();
/**
* Sets name of the bean.
Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ComponentImpl.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ComponentImpl.java?rev=790362&r1=790361&r2=790362&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ComponentImpl.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ComponentImpl.java Wed Jul 1 20:27:48 2009
@@ -18,7 +18,7 @@
import javax.enterprise.context.spi.CreationalContext;
import javax.enterprise.inject.spi.Bean;
-import org.apache.webbeans.context.creational.CreationalContextFactory;
+import org.apache.webbeans.context.creational.CreationalContextImpl;
import org.apache.webbeans.exception.WebBeansException;
import org.apache.webbeans.inject.InjectableConstructor;
import org.apache.webbeans.intercept.InterceptorType;
@@ -73,7 +73,6 @@
* {@inheritDoc}
*/
@Override
- @SuppressWarnings("unchecked")
protected void destroyComponentInstance(T instance)
{
if (WebBeansUtil.isContainsInterceptorMethod(getInterceptorStack(), InterceptorType.PRE_DESTROY))
@@ -92,7 +91,8 @@
}
//Remove it from creational context, if any
- CreationalContextFactory.getInstance().removeCreationalContext(this);
+ CreationalContextImpl<T> cc = (CreationalContextImpl<T>)this.creationalContext;
+ cc.remove();
}
/**
Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerComponentImpl.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerComponentImpl.java?rev=790362&r1=790361&r2=790362&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerComponentImpl.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerComponentImpl.java Wed Jul 1 20:27:48 2009
@@ -170,7 +170,9 @@
Bean<K> destroy = (Bean<K>) bean;
K inst = (K) instance;
- destroy.destroy(inst);
+ CreationalContext<K> cc = (CreationalContext<K>)this.creationalContext;
+
+ destroy.destroy(inst,cc);
}
/*
@@ -221,15 +223,15 @@
Annotation[] anns = new Annotation[this.parent.getBindings().size()];
anns = this.parent.getBindings().toArray(anns);
- AbstractComponent<T> specialize = WebBeansUtil.getMostSpecializedBean(getManager(), (AbstractComponent<T>)this.parent);
+ Bean<?> specialize = WebBeansUtil.getMostSpecializedBean(getManager(), (AbstractComponent<T>)this.parent);
if(specialize != null)
{
- parentInstance = getManager().getInstance(specialize);
+ parentInstance = getManager().getReference(specialize, null, null);
}
else
{
- parentInstance = getManager().getInstance(this.parent);
+ parentInstance = getManager().getReference(this.parent, null, null);
}
return parentInstance;
Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerFieldComponent.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerFieldComponent.java?rev=790362&r1=790361&r2=790362&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerFieldComponent.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerFieldComponent.java Wed Jul 1 20:27:48 2009
@@ -124,7 +124,8 @@
Bean<K> destroy = (Bean<K>) bean;
K inst = (K) instance;
- destroy.destroy(inst);
+ CreationalContext<K> cc = (CreationalContext<K>)this.creationalContext;
+ destroy.destroy(inst,cc);
}
@SuppressWarnings("unchecked")
@@ -138,15 +139,15 @@
Annotation[] anns = new Annotation[this.ownerComponent.getBindings().size()];
anns = this.ownerComponent.getBindings().toArray(anns);
- AbstractComponent<T> specialize = WebBeansUtil.getMostSpecializedBean(getManager(), (AbstractComponent<T>)this.ownerComponent);
+ Bean<?> specialize = WebBeansUtil.getMostSpecializedBean(getManager(), (AbstractComponent<T>)this.ownerComponent);
if(specialize != null)
{
- parentInstance = getManager().getInstance(specialize);
+ parentInstance = getManager().getReference(specialize, null, null);
}
else
{
- parentInstance = getManager().getInstance(this.ownerComponent);
+ parentInstance = getManager().getReference(this.ownerComponent,null,null);
}
return parentInstance;
Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/third/ThirdpartyBeanImpl.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/third/ThirdpartyBeanImpl.java?rev=790362&r1=790361&r2=790362&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/third/ThirdpartyBeanImpl.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/third/ThirdpartyBeanImpl.java Wed Jul 1 20:27:48 2009
@@ -102,9 +102,9 @@
return bean.create(context);
}
- public void destroy(T instance)
+ public void destroy(T instance, CreationalContext<T> context)
{
- bean.destroy(instance);
+ bean.destroy(instance,context);
}
Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/DefinitionUtil.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/DefinitionUtil.java?rev=790362&r1=790361&r2=790362&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/DefinitionUtil.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/DefinitionUtil.java Wed Jul 1 20:27:48 2009
@@ -32,7 +32,6 @@
import javax.enterprise.inject.Current;
import javax.enterprise.inject.Disposes;
import javax.enterprise.inject.Initializer;
-import javax.enterprise.inject.Instance;
import javax.enterprise.inject.Named;
import javax.enterprise.inject.NonBinding;
import javax.enterprise.inject.Produces;
@@ -327,11 +326,11 @@
Set<Annotation> inheritedTypes = inheritedMetaData.getInheritedStereoTypes();
for (Annotation inherited : inheritedTypes)
{
- Set<Annotation> bindings = component.getStereotypes();
+ Set<Class<? extends Annotation>> bindings = component.getStereotypes();
boolean found = false;
- for (Annotation existBinding : bindings)
+ for (Class<? extends Annotation> existBinding : bindings)
{
- if (existBinding.annotationType().equals(inherited.annotationType()))
+ if (existBinding.equals(inherited.annotationType()))
{
found = true;
break;
@@ -363,7 +362,7 @@
if (!found)
{
- Set<Annotation> stereos = component.getStereotypes();
+ Set<Class<? extends Annotation>> stereos = component.getStereotypes();
if (stereos.size() == 0)
{
component.setImplScopeType(new DependentScopeLiteral());
@@ -371,12 +370,12 @@
else
{
Annotation defined = null;
- Set<Annotation> anns = component.getStereotypes();
- for (Annotation stero : anns)
+ Set<Class<? extends Annotation>> anns = component.getStereotypes();
+ for (Class<? extends Annotation> stero : anns)
{
- if (AnnotationUtil.isMetaAnnotationExist(stero.annotationType().getDeclaredAnnotations(), ScopeType.class))
+ if (AnnotationUtil.isMetaAnnotationExist(stero.getDeclaredAnnotations(), ScopeType.class))
{
- Annotation next = AnnotationUtil.getMetaAnnotations(stero.annotationType().getDeclaredAnnotations(), ScopeType.class)[0];
+ Annotation next = AnnotationUtil.getMetaAnnotations(stero.getDeclaredAnnotations(), ScopeType.class)[0];
if (defined == null)
{
@@ -783,8 +782,8 @@
annot = AnnotationUtil.getRealizesGenericAnnotations(component.getReturnType(), annot);
}
- Set<Bean<T>> set = InjectionResolver.getInstance().implResolveByType(type, annot);
- Bean<T> bean = set.iterator().next();
+ Set<Bean<?>> set = InjectionResolver.getInstance().implResolveByType(type, annot);
+ Bean<?> bean = set.iterator().next();
ProducerComponentImpl<?> pr = null;
if (bean == null || !(bean instanceof ProducerComponentImpl))
Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/WebBeansContainerDeployer.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/WebBeansContainerDeployer.java?rev=790362&r1=790361&r2=790362&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/WebBeansContainerDeployer.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/WebBeansContainerDeployer.java Wed Jul 1 20:27:48 2009
@@ -16,20 +16,14 @@
import java.io.IOException;
import java.io.InputStream;
import java.lang.annotation.Annotation;
-import java.lang.reflect.ParameterizedType;
-import java.lang.reflect.Type;
import java.net.URL;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
-import javax.enterprise.context.Dependent;
import javax.enterprise.context.ScopeType;
-import javax.enterprise.event.Event;
-import javax.enterprise.inject.Current;
import javax.enterprise.inject.deployment.Specializes;
-import javax.enterprise.inject.spi.Annotated;
import javax.enterprise.inject.spi.Bean;
import javax.enterprise.inject.spi.Decorator;
import javax.enterprise.inject.spi.InjectionPoint;
@@ -42,7 +36,6 @@
import org.apache.webbeans.annotation.BeforeBeanDiscoveryLiteral;
import org.apache.webbeans.component.ComponentImpl;
import org.apache.webbeans.component.WebBeansType;
-import org.apache.webbeans.container.InjectionResolver;
import org.apache.webbeans.container.ManagerImpl;
import org.apache.webbeans.decorator.DecoratorUtil;
import org.apache.webbeans.decorator.WebBeansDecorator;
@@ -209,7 +202,7 @@
private void validate(Set<Bean<?>> beans)
{
- InjectionResolver resolver = ManagerImpl.getManager().getInjectionResolver();
+ ManagerImpl manager = ManagerImpl.getManager();
if (beans != null && beans.size() > 0)
{
@@ -220,64 +213,13 @@
for (InjectionPoint injectionPoint : injectionPoints)
{
- //Check for correct injection type
- resolver.checkInjectionPointType(injectionPoint);
-
- Class<?> rawType = getRawTypeForInjectionPoint(injectionPoint);
-
- //Comment out while testing TCK Events Test --- WBTCK27 jira./////
- //Hack for EntityManager --> Solve in M3!!!!
- if(rawType.equals(Event.class) || rawType.getSimpleName().equals("EntityManager"))
- {
- continue;
- }
- /////////////////////////////////////////////////////////////////
-
- // check for InjectionPoint injection
- if (rawType.equals(InjectionPoint.class))
- {
- Annotated annotated = injectionPoint.getAnnotated();
- if (annotated.getAnnotations().size() == 1 && annotated.isAnnotationPresent(Current.class))
- {
- if (!bean.getScopeType().equals(Dependent.class))
- {
- throw new WebBeansConfigurationException("Bean " + bean + "scope can not define other scope except @Dependent to inject InjectionPoint");
- }
- }
- }
- else
- {
- resolver.checkInjectionPoints(injectionPoint);
- }
+ manager.validate(injectionPoint);
}
}
}
}
- /**
- * Returns injection point raw type.
- *
- * @param injectionPoint injection point definition
- * @return injection point raw type
- */
- private Class<?> getRawTypeForInjectionPoint(InjectionPoint injectionPoint)
- {
- Class<?> rawType = null;
- Type type = injectionPoint.getType();
-
- if(type instanceof Class)
- {
- rawType = (Class<?>) type;
- }
- else if(type instanceof ParameterizedType)
- {
- ParameterizedType pt = (ParameterizedType)type;
- rawType = (Class<?>)pt.getRawType();
- }
-
- return rawType;
- }
protected void deployFromClassPath(MetaDataDiscoveryService scanner) throws ClassNotFoundException
{
Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/ChildActivityManager.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/ChildActivityManager.java?rev=790362&r1=790361&r2=790362&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/ChildActivityManager.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/ChildActivityManager.java Wed Jul 1 20:27:48 2009
@@ -39,8 +39,10 @@
* A ChildActivityManager tries to handle the beans, contexts, ... itself
* and delegates all other requests to it's parent Manager.
*
+ *
*/
@SuppressWarnings("unchecked")
+@Deprecated/*Activities are removed from specification*/
public class ChildActivityManager extends ManagerImpl
{
@@ -298,10 +300,10 @@
}
/** {@inheritDoc} */
- public <T> Set<Bean<T>> resolveByType(Class<T> type, Annotation... bindings)
+ public Set<Bean<?>> resolveByType(Class<?> type, Annotation... bindings)
{
//X TODO not 100% sure if this is ok. There is some 'double-definition' exception case defined in the spec ...
- Set<Bean<T>> set = super.resolveByType(type, bindings);
+ Set<Bean<?>> set = super.resolveByType(type, bindings);
if (set == null || set.isEmpty())
{
@@ -311,10 +313,10 @@
}
/** {@inheritDoc} */
- public <T> Set<Bean<T>> resolveByType(TypeLiteral<T> apiType, Annotation... bindingTypes)
+ public Set<Bean<?>> resolveByType(TypeLiteral<?> apiType, Annotation... bindingTypes)
{
//X TODO not 100% sure if this is ok. There is some 'double-definition' exception case defined in the spec ...
- Set<Bean<T>> set = super.resolveByType(apiType, bindingTypes);
+ Set<Bean<?>> set = super.resolveByType(apiType, bindingTypes);
if (set == null || set.isEmpty())
{
Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/InjectionResolver.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/InjectionResolver.java?rev=790362&r1=790361&r2=790362&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/InjectionResolver.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/InjectionResolver.java Wed Jul 1 20:27:48 2009
@@ -47,7 +47,6 @@
* @version $Rev$ $Date$
* @see WebBeansFinder
*/
-@SuppressWarnings("unchecked")
public class InjectionResolver
{
/**Bean Manager*/
@@ -130,11 +129,11 @@
Annotation[] bindingTypes = new Annotation[injectionPoint.getBindings().size()];
bindingTypes = injectionPoint.getBindings().toArray(bindingTypes);
- Set<Bean<Object>> beanSet = implResolveByType(type ,bindingTypes);
+ Set<Bean<?>> beanSet = implResolveByType(type ,bindingTypes);
ResolutionUtil.checkResolvedBeans(beanSet, clazz, bindingTypes);
- Bean<Object> bean = beanSet.iterator().next();
+ Bean<?> bean = beanSet.iterator().next();
if(clazz.isPrimitive())
{
@@ -153,7 +152,7 @@
* @param injectionPoint injection point declaration
* @return bean for injection point
*/
- public Bean<Object> getInjectionPointBean(InjectionPoint injectionPoint)
+ public Bean<?> getInjectionPointBean(InjectionPoint injectionPoint)
{
Type type = injectionPoint.getType();
@@ -172,7 +171,7 @@
Annotation[] bindingTypes = new Annotation[injectionPoint.getBindings().size()];
bindingTypes = injectionPoint.getBindings().toArray(bindingTypes);
- Set<Bean<Object>> beanSet = implResolveByType(type ,bindingTypes);
+ Set<Bean<?>> beanSet = implResolveByType(type ,bindingTypes);
ResolutionUtil.checkResolvedBeans(beanSet, clazz, bindingTypes);
@@ -276,12 +275,12 @@
* @param binding binding type of the injection point
* @return set of resolved beans
*/
- public <T> Set<Bean<T>> implResolveByType(Type injectionPointType, Annotation... binding)
+ public Set<Bean<?>> implResolveByType(Type injectionPointType, Annotation... binding)
{
Asserts.assertNotNull(injectionPointType, "injectionPointType parameter can not be null");
Asserts.assertNotNull(binding, "binding parameter can not be null");
- Set<Bean<T>> results = new HashSet<Bean<T>>();
+ Set<Bean<?>> results = new HashSet<Bean<?>>();
Set<Bean<?>> deployedComponents = this.manager.getBeans();
boolean currentBinding = false;
@@ -307,7 +306,7 @@
if (returnAll)
{
- results.add((Bean<T>) component);
+ results.add((Bean<?>) component);
continue;
}
@@ -321,7 +320,7 @@
if(ClassUtil.isAssignable(componentApiType, injectionPointType))
{
- results.add((Bean<T>) component);
+ results.add((Bean<?>) component);
break;
}
}
@@ -351,14 +350,14 @@
* @param result result beans
* @return specialized beans if exists, otherwise return input result
*/
- private <T> Set<Bean<T>> findBySpecialization(Set<Bean<T>> result)
+ public Set<Bean<?>> findBySpecialization(Set<Bean<?>> result)
{
- Iterator<Bean<T>> it = result.iterator();
- Set<Bean<T>> res = new HashSet<Bean<T>>();
+ Iterator<Bean<?>> it = result.iterator();
+ Set<Bean<?>> res = new HashSet<Bean<?>>();
while(it.hasNext())
{
- AbstractComponent<T> component = (AbstractComponent<T>)it.next();
+ AbstractComponent<?> component = (AbstractComponent<?>)it.next();
if(component.isSpecializedBean())
{
res.add(component);
@@ -380,15 +379,15 @@
* @param result resulted beans
* @return filtered beans according to the deployment type precedence
*/
- private <T> Set<Bean<T>> findByPrecedence(Set<Bean<T>> result)
+ public Set<Bean<?>> findByPrecedence(Set<Bean<?>> result)
{
- Bean<T> resolvedComponent = null;
- Iterator<Bean<T>> it = result.iterator();
- Set<Bean<T>> res = new HashSet<Bean<T>>();
+ Bean<?> resolvedComponent = null;
+ Iterator<Bean<?>> it = result.iterator();
+ Set<Bean<?>> res = new HashSet<Bean<?>>();
while (it.hasNext())
{
- Bean<T> component = it.next();
+ Bean<?> component = it.next();
if (resolvedComponent == null)
{
@@ -428,14 +427,14 @@
* @param annotations binding types on injection point
* @return filtered bean set according to the binding types
*/
- private <T> Set<Bean<T>> findByBindingType(Set<Bean<T>> remainingSet, Annotation... annotations)
+ private Set<Bean<?>> findByBindingType(Set<Bean<?>> remainingSet, Annotation... annotations)
{
- Iterator<Bean<T>> it = remainingSet.iterator();
- Set<Bean<T>> result = new HashSet<Bean<T>>();
+ Iterator<Bean<?>> it = remainingSet.iterator();
+ Set<Bean<?>> result = new HashSet<Bean<?>>();
while (it.hasNext())
{
- Bean<T> component = it.next();
+ Bean<?> component = it.next();
Set<Annotation> bTypes = component.getBindings();
int i = 0;
Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/ManagerImpl.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/ManagerImpl.java?rev=790362&r1=790361&r2=790362&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/ManagerImpl.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/ManagerImpl.java Wed Jul 1 20:27:48 2009
@@ -19,6 +19,7 @@
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Collections;
+import java.util.HashSet;
import java.util.IdentityHashMap;
import java.util.Iterator;
import java.util.List;
@@ -28,18 +29,27 @@
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.CopyOnWriteArraySet;
+import javax.el.ELResolver;
import javax.enterprise.context.ContextNotActiveException;
+import javax.enterprise.context.Dependent;
+import javax.enterprise.context.ScopeType;
import javax.enterprise.context.spi.Context;
+import javax.enterprise.context.spi.Contextual;
import javax.enterprise.context.spi.CreationalContext;
+import javax.enterprise.event.Event;
import javax.enterprise.event.Observer;
import javax.enterprise.inject.AmbiguousResolutionException;
+import javax.enterprise.inject.Current;
import javax.enterprise.inject.TypeLiteral;
+import javax.enterprise.inject.spi.Annotated;
+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.InterceptionType;
import javax.enterprise.inject.spi.Interceptor;
import javax.enterprise.inject.spi.BeanManager;
+import javax.enterprise.inject.stereotype.Stereotype;
import javax.naming.NamingException;
import javax.naming.Reference;
import javax.naming.Referenceable;
@@ -54,11 +64,15 @@
import org.apache.webbeans.decorator.DecoratorComparator;
import org.apache.webbeans.decorator.WebBeansDecorator;
import org.apache.webbeans.decorator.WebBeansDecoratorConfig;
+import org.apache.webbeans.el.WebBeansELResolver;
import org.apache.webbeans.event.NotificationManager;
+import org.apache.webbeans.exception.WebBeansConfigurationException;
import org.apache.webbeans.intercept.InterceptorComparator;
import org.apache.webbeans.intercept.WebBeansInterceptorConfig;
import org.apache.webbeans.intercept.webbeans.WebBeansInterceptor;
+import org.apache.webbeans.portable.AnnotatedElementFactory;
import org.apache.webbeans.proxy.JavassistProxyFactory;
+import org.apache.webbeans.util.AnnotationUtil;
import org.apache.webbeans.util.Asserts;
import org.apache.webbeans.util.ClassUtil;
import org.apache.webbeans.util.WebBeansUtil;
@@ -234,6 +248,7 @@
* @param component new webbeans component
* @return the this activity
*/
+
public BeanManager addBean(Bean<?> component)
{
if(component instanceof AbstractComponent)
@@ -250,6 +265,7 @@
return this;
}
+
public BeanManager addContext(Context context)
{
addContext(context.getScopeType(), ContextFactory.getCustomContext(context));
@@ -258,7 +274,9 @@
}
-
+ /**
+ * {@inheritDoc}
+ */
public void fireEvent(Object event, Annotation... bindings)
{
if (ClassUtil.isDefinitionConstainsTypeVariables(event.getClass()))
@@ -269,6 +287,7 @@
this.notificationManager.fireEvent(event, bindings);
}
+
public Object getInstanceByName(String name)
{
AbstractComponent<?> component = null;
@@ -292,6 +311,7 @@
return object;
}
+
public <T> T getInstanceToInject(InjectionPoint injectionPoint, CreationalContext<?> context)
{
T instance = null;
@@ -328,39 +348,44 @@
return getInstanceToInject(injectionPoint, null);
}
+
public <T> T getInstanceByType(Class<T> type, Annotation... bindingTypes)
{
ResolutionUtil.getInstanceByTypeConditions(bindingTypes);
- Set<Bean<T>> set = resolveByType(type, bindingTypes);
+ Set<Bean<?>> set = resolveByType(type, bindingTypes);
ResolutionUtil.checkResolvedBeans(set, type, bindingTypes);
- return getInstance(set.iterator().next());
+ return (T)getInstance(set.iterator().next());
}
+
public <T> T getInstanceByType(TypeLiteral<T> type, Annotation... bindingTypes)
{
ResolutionUtil.getInstanceByTypeConditions(bindingTypes);
- Set<Bean<T>> set = resolveByType(type, bindingTypes);
+ Set<Bean<?>> set = resolveByType(type, bindingTypes);
ResolutionUtil.checkResolvedBeans(set, type.getRawType(),bindingTypes);
- return getInstance(set.iterator().next());
+ return (T)getInstance(set.iterator().next());
}
+
public Set<Bean<?>> resolveByName(String name)
{
return this.injectionResolver.implResolveByName(name);
}
- public <T> Set<Bean<T>> resolveByType(Class<T> apiType, Annotation... bindingTypes)
+
+ public Set<Bean<?>> resolveByType(Class<?> apiType, Annotation... bindingTypes)
{
ResolutionUtil.getInstanceByTypeConditions(bindingTypes);
return this.injectionResolver.implResolveByType(apiType, bindingTypes);
}
- public <T> Set<Bean<T>> resolveByType(TypeLiteral<T> apiType, Annotation... bindingTypes)
+
+ public Set<Bean<?>> resolveByType(TypeLiteral<?> apiType, Annotation... bindingTypes)
{
ParameterizedType ptype = (ParameterizedType) apiType.getType();
ResolutionUtil.resolveByTypeConditions(ptype);
@@ -370,34 +395,43 @@
return this.injectionResolver.implResolveByType(apiType.getType(), bindingTypes);
}
+ /**
+ * {@inheritDoc}
+ */
+ @Override
public <T> Set<Observer<T>> resolveObservers(T event, Annotation... bindings)
{
return this.notificationManager.resolveObservers(event, bindings);
}
+
public Set<Bean<?>> getComponents()
{
return getManager().components;
}
-
+
+
public BeanManager addDecorator(Decorator decorator)
{
getManager().webBeansDecorators.add(decorator);
return this;
}
+
public BeanManager addInterceptor(Interceptor interceptor)
{
getManager().webBeansInterceptors.add(interceptor);
return this;
}
+
public <T> BeanManager addObserver(Observer<T> observer, Class<T> eventType, Annotation... bindings)
{
this.notificationManager.addObserver(observer, eventType, bindings);
return this;
}
+
public <T> BeanManager addObserver(Observer<T> observer, TypeLiteral<T> eventType, Annotation... bindings)
{
this.notificationManager.addObserver(observer, eventType, bindings);
@@ -406,50 +440,27 @@
public <T> T getInstance(Bean<T> bean)
{
- Context context = null;
- T instance = null;
-
- CreationalContext<T> creationalContext = CreationalContextFactory.getInstance().getCreationalContext(bean);
-
- /* @ScopeType is normal */
- if (WebBeansUtil.isScopeTypeNormal(bean.getScopeType()))
- {
- if (this.proxyMap.containsKey(bean))
- {
- instance = (T) this.proxyMap.get(bean);
- }
- else
- {
- instance = (T) JavassistProxyFactory.createNewProxyInstance(bean);
- this.proxyMap.put(bean, instance);
- }
-
- //Push proxy instance into the creational context,//TODO Seems unnecessary?
- creationalContext.push(instance);
-
- }
- /* @ScopeType is not normal, like @Dependent */
- else
- {
- context = getContext(bean.getScopeType());
- instance = (T)context.get(bean, creationalContext);
- }
-
- return instance;
+ return (T)getReference(bean, null, null);
}
+
public <T> BeanManager removeObserver(Observer<T> observer, Class<T> eventType, Annotation... bindings)
{
this.notificationManager.removeObserver(observer, eventType, bindings);
return this;
}
+
public <T> BeanManager removeObserver(Observer<T> observer, TypeLiteral<T> eventType, Annotation... bindings)
{
this.notificationManager.removeObserver(observer, eventType, bindings);
return this;
}
+ /**
+ * {@inheritDoc}
+ */
+ @Override
public List<Decorator<?>> resolveDecorators(Set<Type> types, Annotation... bindingTypes)
{
WebBeansUtil.checkDecoratorResolverParams(types, bindingTypes);
@@ -470,6 +481,10 @@
}
+ /**
+ * {@inheritDoc}
+ */
+ @Override
public List<Interceptor<?>> resolveInterceptors(InterceptionType type, Annotation... interceptorBindings)
{
WebBeansUtil.checkInterceptorResolverParams(interceptorBindings);
@@ -494,11 +509,12 @@
return interceptorList;
}
+
public Set<Bean<?>> getBeans()
{
return this.components;
}
-
+
public Set<Interceptor<?>> getInterceptors()
{
return this.webBeansInterceptors;
@@ -509,6 +525,7 @@
return this.webBeansDecorators;
}
+
private void addContext(Class<? extends Annotation> scopeType, javax.enterprise.context.spi.Context context)
{
Asserts.assertNotNull(scopeType, "scopeType parameter can not be null");
@@ -525,11 +542,6 @@
}
else
{
-//X TODO Mark , this brokes the TCK tests!!!!
-// if (context.isActive() && containsActiveContext(contextList))
-// {
-// throw new IllegalStateException("There is already an active Context registered for this scope! Context=" + context.getScopeType());
-// }
contextList.add(context);
}
@@ -546,6 +558,7 @@
* @param xmlStream beans xml definitions
* @return {@link BeanManager} instance
*/
+
public BeanManager parse(InputStream xmlStream)
{
this.xmlConfigurator.configure(xmlStream);
@@ -556,6 +569,7 @@
/**
* Create a new ChildActivityManager.
*/
+
public BeanManager createActivity()
{
return new ChildActivityManager(this);
@@ -566,6 +580,7 @@
*
* @param scopeType scope type for the context
*/
+
public BeanManager setCurrent(Class<? extends Annotation> scopeType)
{
if(!WebBeansUtil.isScopeTypeNormal(scopeType))
@@ -579,5 +594,283 @@
ActivityManager.getInstance().addCurrentActivity(context, this);
return this;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public <T> AnnotatedType<T> createAnnotatedType(Class<T> type)
+ {
+ AnnotatedType<T> annotatedType = AnnotatedElementFactory.newAnnotatedType(type);
+
+ return annotatedType;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public <T> CreationalContext<T> createCreationalContext(Contextual<T> contextual)
+ {
+ return CreationalContextFactory.getInstance().getCreationalContext(contextual);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public Set<Bean<?>> getBeans(Type beanType, Annotation... bindings)
+ {
+ if(ClassUtil.isTypeVariable(beanType))
+ {
+ throw new WebBeansConfigurationException("Exception in getBeans method. Bean type can not be TypeVariable");
+ }
+
+ AnnotationUtil.checkBindingTypeConditions(bindings);
+
+ return this.injectionResolver.implResolveByType(beanType, bindings);
+
+ }
+
+ @Override
+ public Set<Bean<?>> getBeans(String name)
+ {
+ return this.injectionResolver.implResolveByName(name);
+ }
+
+ @Override
+ public ELResolver getELResolver()
+ {
+ return new WebBeansELResolver();
+ }
+
+ @Override
+ public Object getInjectableReference(InjectionPoint injectionPoint, CreationalContext<?> context)
+ {
+ Object instance = null;
+
+ if(injectionPoint == null)
+ {
+ return null;
+ }
+
+ Annotation[] bindings = new Annotation[injectionPoint.getBindings().size()];
+ bindings = injectionPoint.getBindings().toArray(bindings);
+
+ //Find the injection point Bean
+ Bean<?> bean = injectionResolver.getInjectionPointBean(injectionPoint);
+
+ if(context != null && (context instanceof CreationalContextImpl))
+ {
+ CreationalContextImpl<?> creationalContext = (CreationalContextImpl<?>)context;
+
+ instance = creationalContext.get(bean);
+
+ }
+
+ if(instance == null)
+ {
+ instance = getInstance(bean);
+ }
+
+ return instance;
+
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public Set<Annotation> getInterceptorBindingTypeDefinition(Class<? extends Annotation> bindingType)
+ {
+ Annotation[] annotations = AnnotationUtil.getInterceptorBindingMetaAnnotations(bindingType.getDeclaredAnnotations());
+ Set<Annotation> set = new HashSet<Annotation>();
+
+ for(Annotation ann : annotations)
+ {
+ set.add(ann);
+ }
+
+ return set;
+ }
+
+ @Override
+ public <X> Bean<? extends X> getMostSpecializedBean(Bean<X> bean)
+ {
+ Bean<? extends X> specialized = (Bean<? extends X>) WebBeansUtil.getMostSpecializedBean(this, bean);
+
+ return specialized;
+ }
+
+ @Override
+ public Bean<?> getPassivationCapableBean(String id)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public Object getReference(Bean<?> bean, Type beanType, CreationalContext<?> ctx)
+ {
+ Context context = null;
+ Object instance = null;
+
+ CreationalContext<Object> creationalContext = (CreationalContext<Object>)ctx;
+
+ if(ctx == null)
+ {
+ creationalContext = CreationalContextFactory.getInstance().getCreationalContext(bean);
+ }
+
+ /* @ScopeType is normal */
+ if (WebBeansUtil.isScopeTypeNormal(bean.getScopeType()))
+ {
+ if (this.proxyMap.containsKey(bean))
+ {
+ instance = this.proxyMap.get(bean);
+ }
+ else
+ {
+ instance = JavassistProxyFactory.createNewProxyInstance(bean);
+ this.proxyMap.put(bean, instance);
+ }
+
+ //Push proxy instance into the creational context
+ creationalContext.push(instance);
+
+ }
+ /* @ScopeType is not normal, like @Dependent */
+ else
+ {
+ context = getContext(bean.getScopeType());
+ instance = context.get((Bean<Object>)bean, creationalContext);
+ }
+
+ return instance;
+ }
+
+ @Override
+ public ScopeType getScopeDefinition(Class<? extends Annotation> scopeType)
+ {
+ Annotation annotation = AnnotationUtil.getAnnotation(scopeType.getDeclaredAnnotations(), ScopeType.class);
+
+ if(annotation != null)
+ {
+ return (ScopeType)annotation;
+ }
+
+ return null;
+ }
+
+
+ @Override
+ public Set<Annotation> getStereotypeDefinition(Class<? extends Annotation> stereotype)
+ {
+ Annotation[] annotations = AnnotationUtil.getStereotypeMetaAnnotations(stereotype.getDeclaredAnnotations());
+ Set<Annotation> set = new HashSet<Annotation>();
+
+ for(Annotation ann : annotations)
+ {
+ set.add(ann);
+ }
+
+ return set;
+ }
+
+ @Override
+ public boolean isBindingType(Class<? extends Annotation> annotationType)
+ {
+ return AnnotationUtil.isBindingAnnotation(annotationType);
+ }
+
+ @Override
+ public boolean isInterceptorBindingType(Class<? extends Annotation> annotationType)
+ {
+ return AnnotationUtil.isInterceptorBindingAnnotation(annotationType);
+ }
+
+ @Override
+ public boolean isScopeType(Class<? extends Annotation> annotationType)
+ {
+ if(AnnotationUtil.isAnnotationExist(annotationType.getDeclaredAnnotations(), ScopeType.class))
+ {
+ return true;
+ }
+
+ return false;
+ }
+
+ @Override
+ public boolean isStereotype(Class<? extends Annotation> annotationType)
+ {
+ if(AnnotationUtil.isAnnotationExist(annotationType.getDeclaredAnnotations(), Stereotype.class))
+ {
+ return true;
+ }
+
+ return false;
+ }
+
+ @Override
+ public <X> Bean<? extends X> resolve(Set<Bean<? extends X>> beans)
+ {
+ Set set = new HashSet<Bean<Object>>();
+ for(Bean<? extends X> obj : beans)
+ {
+ set.add(obj);
+ }
+
+ set = this.injectionResolver.findByPrecedence(set);
+
+ if(set.size() > 1)
+ {
+ set = this.injectionResolver.findBySpecialization(set);
+ }
+
+ if(set.size() > 0 && set.size() > 1)
+ {
+ throw new AmbiguousResolutionException("Ambigious resolution");
+ }
+
+ return (Bean<? extends X>)set.iterator().next();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void validate(InjectionPoint injectionPoint)
+ {
+ Bean<?> bean = injectionPoint.getBean();
+ //Check for correct injection type
+ this.injectionResolver.checkInjectionPointType(injectionPoint);
+
+ Class<?> rawType = ClassUtil.getRawTypeForInjectionPoint(injectionPoint);
+
+ //Comment out while testing TCK Events Test --- WBTCK27 jira./////
+ //Hack for EntityManager --> Solve in M3!!!!
+ if(rawType.equals(Event.class) || rawType.getSimpleName().equals("EntityManager"))
+ {
+ return;
+ }
+ /////////////////////////////////////////////////////////////////
+
+ // check for InjectionPoint injection
+ if (rawType.equals(InjectionPoint.class))
+ {
+ Annotated annotated = injectionPoint.getAnnotated();
+ if (annotated.getAnnotations().size() == 1 && annotated.isAnnotationPresent(Current.class))
+ {
+ if (!bean.getScopeType().equals(Dependent.class))
+ {
+ throw new WebBeansConfigurationException("Bean " + bean + "scope can not define other scope except @Dependent to inject InjectionPoint");
+ }
+ }
+ }
+ else
+ {
+ this.injectionResolver.checkInjectionPoints(injectionPoint);
+ }
}
+
}
\ No newline at end of file
Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/ResolutionUtil.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/ResolutionUtil.java?rev=790362&r1=790361&r2=790362&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/ResolutionUtil.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/ResolutionUtil.java Wed Jul 1 20:27:48 2009
@@ -50,7 +50,7 @@
AnnotationUtil.checkBindingTypeConditions(bindingTypes);
}
- public static <T> void checkResolvedBeans(Set<Bean<T>> resolvedSet, Class<?> type, Annotation[] bindingTypes)
+ public static void checkResolvedBeans(Set<Bean<?>> resolvedSet, Class<?> type, Annotation[] bindingTypes)
{
if (resolvedSet.isEmpty())
{
@@ -79,7 +79,7 @@
throw new AmbiguousResolutionException("There is more than one api type with : " + type.getName());
}
- Bean<T> bean = resolvedSet.iterator().next();
+ Bean<?> bean = resolvedSet.iterator().next();
WebBeansUtil.checkUnproxiableApiType(bean, bean.getScopeType().getAnnotation(ScopeType.class));
}
Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/AbstractContext.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/AbstractContext.java?rev=790362&r1=790361&r2=790362&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/AbstractContext.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/AbstractContext.java Wed Jul 1 20:27:48 2009
@@ -18,6 +18,7 @@
import java.util.Map;
import java.util.Set;
import java.util.Map.Entry;
+import java.util.concurrent.ConcurrentHashMap;
import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.context.ContextNotActiveException;
@@ -25,31 +26,53 @@
import javax.enterprise.context.Dependent;
import javax.enterprise.context.RequestScoped;
import javax.enterprise.context.SessionScoped;
+import javax.enterprise.context.spi.Context;
import javax.enterprise.context.spi.Contextual;
import javax.enterprise.context.spi.CreationalContext;
import javax.enterprise.inject.spi.Bean;
-import javax.enterprise.inject.spi.BeanManager;
import org.apache.webbeans.context.type.ContextTypes;
/**
* Abstract implementation of the {@link WebBeansContext} interfaces.
+ *
+ * @see Context
+ * @see RequestContext
+ * @see DependentContext
+ * @see SessionContext
+ * @see ApplicationContext
+ * @see ConversationContext
*/
public abstract class AbstractContext implements WebBeansContext
{
+ /**Context status, active or not*/
protected boolean active;
+ /**Context type*/
protected ContextTypes type;
+ /**Context contextual instances*/
protected Map<Contextual<?>, Object> componentInstanceMap = null;
+ /**Contextual Scope Type*/
protected Class<? extends Annotation> scopeType;
+
+ /**Contextual to CreationalContext Map*/
+ protected Map<Contextual<?>, CreationalContext<?>> creationalContextMap = new ConcurrentHashMap<Contextual<?>, CreationalContext<?>>();
+ /**
+ * Creates a new context instance
+ */
protected AbstractContext()
{
}
+ /**
+ * Creates a new context with given scope type.
+ *
+ * @param scopeType context scope type
+ */
protected AbstractContext(Class<? extends Annotation> scopeType)
{
this.scopeType = scopeType;
@@ -57,6 +80,11 @@
}
+ /**
+ * Creates a new context with given context type.
+ *
+ * @param type context type
+ */
protected AbstractContext(ContextTypes type)
{
this.type = type;
@@ -64,6 +92,11 @@
setComponentInstanceMap();
}
+ /**
+ * Configures scope type from context type.
+ *
+ * @param type context type
+ */
private void configureScopeType(ContextTypes type)
{
if (type.equals(ContextTypes.APPLICATION))
@@ -86,9 +119,16 @@
{
this.scopeType = ConversationScoped.class;
}
+ else
+ {
+ throw new IllegalArgumentException("Not known scope type : " + type.toString());
+ }
}
+ /**
+ * {@inheritDoc}
+ */
@SuppressWarnings("unchecked")
public <T> T get(Contextual<T> component)
{
@@ -97,6 +137,9 @@
return (T) componentInstanceMap.get(component);
}
+ /**
+ * {@inheritDoc}
+ */
public <T> T get(Contextual<T> component, CreationalContext<T> creationalContext)
{
checkActive();
@@ -104,6 +147,9 @@
return getInstance(component, creationalContext);
}
+ /**
+ * {@inheritDoc}
+ */
@SuppressWarnings("unchecked")
protected <T> T getInstance(Contextual<T> component, CreationalContext<T> creationalContext)
{
@@ -128,7 +174,8 @@
if (instance != null)
{
- componentInstanceMap.put(component, instance);
+ this.componentInstanceMap.put(component, instance);
+ this.creationalContextMap.put(component, creationalContext);
}
}
@@ -137,11 +184,6 @@
return instance;
}
- public <T> void remove(Contextual<T> component)
- {
- removeInstance(component);
- }
-
/**
* Destroy the given web beans component instance.
*
@@ -149,15 +191,14 @@
* @param component web beans component
* @param instance component instance
*/
- private <T> void destroyInstance(Bean<T> component, T instance)
+ private <T> void destroyInstance(Contextual<T> component, T instance,CreationalContext<T> creationalContext)
{
- component.destroy(instance);
+ //Destroy component
+ component.destroy(instance,creationalContext);
}
-
+
/**
- * Destroys the context.
- *
- * @param <T>
+ * {@inheritDoc}
*/
@SuppressWarnings("unchecked")
public void destroy()
@@ -171,8 +212,11 @@
component = it.next().getKey();
Object instance = componentInstanceMap.get(component);
+ //Get creational context
+ CreationalContext<Object> cc = (CreationalContext<Object>)this.creationalContextMap.get(component);
- destroyInstance((Bean<Object>) component, instance);
+ //Destroy instance
+ destroyInstance((Bean<Object>) component, instance, cc);
}
@@ -180,14 +224,6 @@
componentInstanceMap.clear();
}
- protected <T> void removeInstance(Contextual<T> component)
- {
- if (componentInstanceMap.get(component) != null)
- {
- componentInstanceMap.remove(component);
- }
- }
-
/**
* Gets context active flag.
*
@@ -209,33 +245,41 @@
}
/**
- * Type of the context
+ * Type of the context.
*
- * @return type
+ * @return type of the context
+ * @see ContextTypes
*/
public ContextTypes getType()
{
return type;
}
+ /**
+ * {@inheritDoc}
+ */
public Map<Contextual<?>, Object> getComponentInstanceMap()
{
return componentInstanceMap;
}
+ /**
+ * {@inheritDoc}
+ */
public Class<? extends Annotation> getScopeType()
{
return this.scopeType;
}
- public <T> void remove(BeanManager container, Bean<T> component)
- {
- remove(component);
- }
-
+ /**
+ * {@inheritDoc}
+ */
protected abstract void setComponentInstanceMap();
+ /**
+ * Check that context is active or throws exception.
+ */
protected void checkActive()
{
if (!active)
@@ -244,4 +288,4 @@
}
}
-}
+}
\ No newline at end of file
Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/WebBeansContext.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/WebBeansContext.java?rev=790362&r1=790361&r2=790362&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/WebBeansContext.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/WebBeansContext.java Wed Jul 1 20:27:48 2009
@@ -16,8 +16,6 @@
import java.util.Map;
import javax.enterprise.context.spi.Contextual;
-import javax.enterprise.inject.spi.Bean;
-import javax.enterprise.inject.spi.BeanManager;
import org.apache.webbeans.context.type.ContextTypes;
@@ -27,22 +25,14 @@
* @version $Rev$Â $Date$
*/
public interface WebBeansContext extends javax.enterprise.context.spi.Context
-{
- /**
- * Removes the given web beans component from the context.
- *
- * @param <T> generic type
- * @param component web beans component
- */
- public <T> void remove(Contextual<T> component);
-
+{
/**
* Destroys the context.
*/
public void destroy();
/**
- * Return context type.
+ * Returns context type.
*
* @return context type
*/
@@ -54,14 +44,5 @@
* @return instance map
*/
public Map<Contextual<?>, Object> getComponentInstanceMap();
-
- /**
- * Remove given bean from context.
- *
- * @param <T> type of bean
- * @param container beans container
- * @param component bean
- */
- public <T> void remove(BeanManager container, Bean<T> component);
-
+
}
\ No newline at end of file
Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/creational/CreationalContextFactory.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/creational/CreationalContextFactory.java?rev=790362&r1=790361&r2=790362&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/creational/CreationalContextFactory.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/creational/CreationalContextFactory.java Wed Jul 1 20:27:48 2009
@@ -16,38 +16,59 @@
*/
package org.apache.webbeans.context.creational;
+import javax.enterprise.context.spi.Contextual;
import javax.enterprise.context.spi.CreationalContext;
-import javax.enterprise.inject.spi.Bean;
import org.apache.webbeans.config.WebBeansFinder;
-public class CreationalContextFactory<T>
+/**
+ * Factory for {@link CreationalContext} instances.
+ *
+ * @version $Rev$ $Date$
+ *
+ * @param <T> contextual type info
+ */
+public final class CreationalContextFactory<T>
{
+ /**Ceational context that is used for generating other creational contexts*/
private CreationalContextImpl<T> impl;
+ /**
+ * Creates a new <code>CreationalContextFactory</code> instance.
+ */
public CreationalContextFactory()
{
impl = new CreationalContextImpl<T>();
}
+ /**
+ * Gets singleton instance.
+ *
+ * @return singleton factory per class loader per VM
+ */
@SuppressWarnings("unchecked")
public static CreationalContextFactory getInstance()
{
return (CreationalContextFactory)WebBeansFinder.getSingletonInstance(WebBeansFinder.SINGLETON_CREATIONAL_CONTEXT_FACTORY);
}
- public CreationalContext<T> getCreationalContext(Bean<T> bean)
+ /**
+ * Returns a new creational context for given contextual.
+ *
+ * @param contextual contextual instance
+ * @return new creational context for given contextual
+ */
+ public CreationalContext<T> getCreationalContext(Contextual<T> contextual)
{
- return impl.getCreationalContextImpl(bean);
+ return impl.getCreationalContextImpl(contextual);
}
-
- public void removeCreationalContext(Bean<?> bean)
- {
- impl.remove(bean);
- }
-
+
+ /**
+ * Clear all incomplete instance cache.
+ */
public void clear()
{
impl.clear();
+ impl = null;
}
-}
+}
\ No newline at end of file
Propchange: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/creational/CreationalContextFactory.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/creational/CreationalContextImpl.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/creational/CreationalContextImpl.java?rev=790362&r1=790361&r2=790362&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/creational/CreationalContextImpl.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/creational/CreationalContextImpl.java Wed Jul 1 20:27:48 2009
@@ -16,20 +16,28 @@
*/
package org.apache.webbeans.context.creational;
+import java.util.Collection;
+import java.util.Iterator;
import java.util.Map;
+import java.util.WeakHashMap;
import java.util.concurrent.ConcurrentHashMap;
+import javax.enterprise.context.spi.Contextual;
import javax.enterprise.context.spi.CreationalContext;
-import javax.enterprise.inject.spi.Bean;
+
+import org.apache.webbeans.util.Asserts;
/** {@inheritDoc} */
public class CreationalContextImpl<T> implements CreationalContext<T>
{
/**Map of bean with its incomplete instance*/
- private Map<Bean<?>,Object> incompleteInstancesMap = new ConcurrentHashMap<Bean<?>, Object>();
+ private Map<Contextual<?>,Object> incompleteInstancesMap = new ConcurrentHashMap<Contextual<?>, Object>();
- /**Bean*/
- private Bean<T> incompleteBean = null;
+ /**Contextual bean*/
+ private Contextual<T> incompleteBean = null;
+
+ /**Contextual bean dependent instances*/
+ private Map<Object, Contextual<?>> dependentObjects = new WeakHashMap<Object, Contextual<?>>();
/**
* Package private
@@ -45,7 +53,7 @@
* @param incompleteBean incomplete instance owner
* @return new creational context
*/
- protected CreationalContextImpl<T> getCreationalContextImpl(Bean<T> incompleteBean)
+ protected CreationalContextImpl<T> getCreationalContextImpl(Contextual<T> incompleteBean)
{
CreationalContextImpl<T> impl = new CreationalContextImpl<T>();
@@ -67,13 +75,33 @@
}
+
+ /**
+ * Adds given dependent instance to the map.
+ *
+ * @param dependent dependent contextual
+ * @param instance dependent instance
+ */
+ public <K> void addDependent(Contextual<K> dependent, Object instance)
+ {
+ Asserts.assertNotNull(dependent,"dependent parameter cannot be null");
+
+ if(instance != null)
+ {
+ synchronized (this.dependentObjects)
+ {
+ this.dependentObjects.put(instance, dependent);
+ }
+ }
+ }
+
/**
* Returns incomplete instance.
*
* @param incompleteBean instance owner
* @return incomplete instance
*/
- public Object get(Bean<?> incompleteBean)
+ public Object get(Contextual<?> incompleteBean)
{
return incompleteInstancesMap.get(incompleteBean);
}
@@ -84,12 +112,37 @@
*
* @param bean owner bean
*/
- public void remove(Bean<?> bean)
+ public void remove()
{
- if(this.incompleteInstancesMap.containsKey(bean))
+ if(this.incompleteInstancesMap.containsKey(this.incompleteBean))
{
- this.incompleteInstancesMap.remove(bean);
+ this.incompleteInstancesMap.remove(this.incompleteBean);
+ this.incompleteInstancesMap = null;
+ }
+ }
+
+ /**
+ * Removes dependent objects.
+ */
+ @SuppressWarnings("unchecked")
+ private void removeDependents()
+ {
+ //Clear its dependence objects
+ synchronized (this.dependentObjects)
+ {
+ Collection<?> values = this.dependentObjects.keySet();
+ Iterator<?> iterator = values.iterator();
+
+ while(iterator.hasNext())
+ {
+ T instance = (T)iterator.next();
+ Contextual<T> dependent = (Contextual<T>)this.dependentObjects.get(instance);
+ dependent.destroy(instance, (CreationalContext<T>)this);
+ }
+
+ this.dependentObjects.clear();
}
+
}
/**
@@ -106,7 +159,7 @@
@Override
public void release()
{
- remove(this.incompleteBean);
+ removeDependents();
}
Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationManager.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationManager.java?rev=790362&r1=790361&r2=790362&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationManager.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/conversation/ConversationManager.java Wed Jul 1 20:27:48 2009
@@ -112,10 +112,11 @@
}
+ @SuppressWarnings("unchecked")
public Conversation getCurrentConversation()
{
- Bean<Conversation> bean = ManagerImpl.getManager().resolveByType(Conversation.class, new CurrentLiteral()).iterator().next();
+ Bean<Conversation> bean = (Bean<Conversation>)ManagerImpl.getManager().resolveByType(Conversation.class, new CurrentLiteral()).iterator().next();
Conversation conversation = ManagerImpl.getManager().getInstance(bean);
return conversation;
Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/decorator/WebBeansDecorator.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/decorator/WebBeansDecorator.java?rev=790362&r1=790361&r2=790362&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/decorator/WebBeansDecorator.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/decorator/WebBeansDecorator.java Wed Jul 1 20:27:48 2009
@@ -244,9 +244,9 @@
}
}
- public void destroy(T instance)
+ public void destroy(T instance,CreationalContext<T> context)
{
- delegateComponent.destroy(instance);
+ delegateComponent.destroy(instance,context);
}
@Override
@@ -356,7 +356,7 @@
}
@Override
- public Set<Annotation> getStereotypes()
+ public Set<Class<? extends Annotation>> getStereotypes()
{
return this.delegateComponent.getStereotypes();
}
@@ -366,5 +366,12 @@
return this.delegateComponent.getTypes();
}
+ @Override
+ public boolean isPolicy()
+ {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
-}
+}
\ No newline at end of file
Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/el/WebBeansELResolver.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/el/WebBeansELResolver.java?rev=790362&r1=790361&r2=790362&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/el/WebBeansELResolver.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/el/WebBeansELResolver.java Wed Jul 1 20:27:48 2009
@@ -23,7 +23,6 @@
import javax.el.PropertyNotWritableException;
import javax.enterprise.context.Dependent;
import javax.enterprise.inject.spi.Bean;
-import javax.enterprise.inject.spi.BeanManager;
import javax.servlet.jsp.JspApplicationContext;
import org.apache.webbeans.container.ManagerImpl;
@@ -81,7 +80,7 @@
@Override
public Object getValue(ELContext context, Object obj, Object property) throws NullPointerException, PropertyNotFoundException, ELException
{
- BeanManager manager = ManagerImpl.getManager();
+ ManagerImpl manager = ManagerImpl.getManager();
Object object = null;
Bean<?> bean = null;
@@ -133,7 +132,8 @@
{
T inst = (T) instance;
- bean.destroy(inst);
+ //TODO Creational Context
+ bean.destroy(inst,null);
}
}
Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/BeanObserverImpl.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/BeanObserverImpl.java?rev=790362&r1=790361&r2=790362&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/BeanObserverImpl.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/BeanObserverImpl.java Wed Jul 1 20:27:48 2009
@@ -24,12 +24,12 @@
import javax.enterprise.context.spi.Context;
import javax.enterprise.event.Observer;
import javax.enterprise.event.Observes;
-import javax.enterprise.inject.spi.BeanManager;
import org.apache.webbeans.annotation.CurrentLiteral;
import org.apache.webbeans.component.AbstractComponent;
import org.apache.webbeans.component.ObservesMethodsOwner;
import org.apache.webbeans.container.InjectionResolver;
+import org.apache.webbeans.container.ManagerImpl;
import org.apache.webbeans.container.activity.ActivityManager;
import org.apache.webbeans.exception.WebBeansException;
import org.apache.webbeans.logger.WebBeansLogger;
@@ -103,8 +103,8 @@
try
{
- BeanManager manager = ActivityManager.getInstance().getCurrentActivity();
- specializedComponent = WebBeansUtil.getMostSpecializedBean(manager, baseComponent);
+ ManagerImpl manager = ActivityManager.getInstance().getCurrentActivity();
+ specializedComponent = (AbstractComponent<Object>)WebBeansUtil.getMostSpecializedBean(manager, baseComponent);
Context context = manager.getContext(specializedComponent.getScopeType());
if(this.ifExist)
@@ -160,7 +160,8 @@
{
if (baseComponent.getScopeType().equals(Dependent.class))
{
- baseComponent.destroy(object);
+ //TODO Creational Context
+ baseComponent.destroy(object,null);
}
}
@@ -180,7 +181,7 @@
List<Object> list = new ArrayList<Object>();
- BeanManager manager = ActivityManager.getInstance().getCurrentActivity();
+ ManagerImpl manager = ActivityManager.getInstance().getCurrentActivity();
if (types.length > 0)
{
Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/xml/BeanObserverXMLImpl.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/xml/BeanObserverXMLImpl.java?rev=790362&r1=790361&r2=790362&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/xml/BeanObserverXMLImpl.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/xml/BeanObserverXMLImpl.java Wed Jul 1 20:27:48 2009
@@ -19,8 +19,6 @@
import java.util.List;
import java.util.Set;
-import javax.enterprise.inject.spi.BeanManager;
-
import org.apache.webbeans.component.ObservesMethodsOwner;
import org.apache.webbeans.container.InjectionResolver;
import org.apache.webbeans.container.ManagerImpl;
@@ -47,7 +45,7 @@
protected List<Object> getMethodArguments(Object event)
{
List<Object> params = new ArrayList<Object>();
- BeanManager manager = ManagerImpl.getManager();
+ ManagerImpl manager = ManagerImpl.getManager();
for (XMLInjectionPointModel model : observersParameters)
{
Set<Annotation> setBindingTypes = model.getBindingTypes();
Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/instance/InstanceImpl.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/instance/InstanceImpl.java?rev=790362&r1=790361&r2=790362&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/instance/InstanceImpl.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/instance/InstanceImpl.java Wed Jul 1 20:27:48 2009
@@ -65,6 +65,7 @@
* @param annotations binding annotations
* @return bean instance
*/
+ @SuppressWarnings("unchecked")
public T get()
{
T instance = null;
@@ -72,12 +73,12 @@
Annotation[] anns = new Annotation[this.bindingAnnotations.size()];
anns = this.bindingAnnotations.toArray(anns);
- Set<Bean<T>> beans = resolveBeans();
+ Set<Bean<?>> beans = resolveBeans();
ResolutionUtil.checkResolvedBeans(beans, ClassUtil.getClazz(this.injectionClazz),anns);
- Bean<T> bean = beans.iterator().next();
- instance = ManagerImpl.getManager().getInstance(bean);
+ Bean<?> bean = beans.iterator().next();
+ instance = (T)ManagerImpl.getManager().getInstance(bean);
return instance;
}
@@ -87,13 +88,13 @@
*
* @return set of resolved beans
*/
- private Set<Bean<T>> resolveBeans()
+ private Set<Bean<?>> resolveBeans()
{
Annotation[] anns = new Annotation[this.bindingAnnotations.size()];
anns = this.bindingAnnotations.toArray(anns);
InjectionResolver resolver = InjectionResolver.getInstance();
- Set<Bean<T>> beans = resolver.implResolveByType(this.injectionClazz, anns);
+ Set<Bean<?>> beans = resolver.implResolveByType(this.injectionClazz, anns);
return beans;
}
@@ -104,7 +105,7 @@
@Override
public boolean isAmbiguous()
{
- Set<Bean<T>> beans = resolveBeans();
+ Set<Bean<?>> beans = resolveBeans();
return beans.size() > 1 ? true : false;
}
@@ -115,7 +116,7 @@
@Override
public boolean isUnsatisfied()
{
- Set<Bean<T>> beans = resolveBeans();
+ Set<Bean<?>> beans = resolveBeans();
return beans.size() == 0 ? true : false;
}
@@ -196,13 +197,14 @@
* {@inheritDoc}
*/
@Override
+ @SuppressWarnings("unchecked")
public Iterator<T> iterator()
{
- Set<Bean<T>> beans = resolveBeans();
+ Set<Bean<?>> beans = resolveBeans();
Set<T> instances = new HashSet<T>();
- for(Bean<T> bean : beans)
+ for(Bean<?> bean : beans)
{
- T instance = ManagerImpl.getManager().getInstance(bean);
+ T instance = (T)ManagerImpl.getManager().getInstance(bean);
instances.add(instance);
}
Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/webbeans/WebBeansInterceptor.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/webbeans/WebBeansInterceptor.java?rev=790362&r1=790361&r2=790362&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/webbeans/WebBeansInterceptor.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/webbeans/WebBeansInterceptor.java Wed Jul 1 20:27:48 2009
@@ -281,9 +281,9 @@
}
- public void destroy(T instance)
+ public void destroy(T instance,CreationalContext<T> context)
{
- delegateComponent.destroy(instance);
+ delegateComponent.destroy(instance,context);
}
@Override
@@ -385,7 +385,7 @@
}
@Override
- public Set<Annotation> getStereotypes()
+ public Set<Class<? extends Annotation>> getStereotypes()
{
return this.delegateComponent.getStereotypes();
}
@@ -414,4 +414,11 @@
return method != null ? true : false;
}
+
+ @Override
+ public boolean isPolicy()
+ {
+ // TODO Auto-generated method stub
+ return false;
+ }
}
\ No newline at end of file
Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/proxy/JavassistProxyFactory.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/proxy/JavassistProxyFactory.java?rev=790362&r1=790361&r2=790362&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/proxy/JavassistProxyFactory.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/proxy/JavassistProxyFactory.java Wed Jul 1 20:27:48 2009
@@ -50,10 +50,12 @@
for (Type generic : types)
{
Class<?> type = (Class<?>)ClassUtil.getClazz(generic);
+
if (type.isInterface())
{
interfaceList.add(type);
}
+
else if ((superClass == null) || (superClass.isAssignableFrom(type) && type != Object.class))
{
superClass = type;
Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/ClassUtil.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/ClassUtil.java?rev=790362&r1=790361&r2=790362&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/ClassUtil.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/ClassUtil.java Wed Jul 1 20:27:48 2009
@@ -40,6 +40,8 @@
import java.util.Map;
import java.util.Set;
+import javax.enterprise.inject.spi.InjectionPoint;
+
import org.apache.webbeans.exception.WebBeansException;
/**
@@ -1778,5 +1780,28 @@
}
}
+ /**
+ * Returns injection point raw type.
+ *
+ * @param injectionPoint injection point definition
+ * @return injection point raw type
+ */
+ public static Class<?> getRawTypeForInjectionPoint(InjectionPoint injectionPoint)
+ {
+ Class<?> rawType = null;
+ Type type = injectionPoint.getType();
+
+ if(type instanceof Class)
+ {
+ rawType = (Class<?>) type;
+ }
+ else if(type instanceof ParameterizedType)
+ {
+ ParameterizedType pt = (ParameterizedType)type;
+ rawType = (Class<?>)pt.getRawType();
+ }
+
+ return rawType;
+ }
}
Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java?rev=790362&r1=790361&r2=790362&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java Wed Jul 1 20:27:48 2009
@@ -1109,7 +1109,7 @@
{
Asserts.assertNotNull(component, "component parameter can not be null");
- Set<Annotation> set = component.getStereotypes();
+ Set<Annotation> set = component.getOwbStereotypes();
Annotation[] anns = new Annotation[set.size()];
anns = set.toArray(anns);
if (AnnotationUtil.isStereoTypeMetaAnnotationExist(anns))
@@ -1125,7 +1125,7 @@
Asserts.assertNotNull(component, "component parameter can not be null");
if (isComponentHasStereoType(component))
{
- Set<Annotation> set = component.getStereotypes();
+ Set<Annotation> set = component.getOwbStereotypes();
Annotation[] anns = new Annotation[set.size()];
anns = set.toArray(anns);
@@ -1915,17 +1915,17 @@
}
- public static <T> AbstractComponent<T> getMostSpecializedBean(BeanManager manager, AbstractComponent<T> component)
+ public static Bean<?> getMostSpecializedBean(BeanManager manager, Bean<?> component)
{
- Set<Bean<T>> beans = manager.resolveByType(component.getReturnType(), AnnotationUtil.getAnnotationsFromSet(component.getBindings()));
+ Set<Bean<?>> beans = manager.getBeans(component.getBeanClass(), AnnotationUtil.getAnnotationsFromSet(component.getBindings()));
- for(Bean<T> bean : beans)
+ for(Bean<?> bean : beans)
{
- AbstractComponent<T> find = (AbstractComponent<T>)bean;
+ Bean<?> find = bean;
if(!find.equals(component))
{
- if(AnnotationUtil.isAnnotationExistOnClass(find.getReturnType(), Specializes.class))
+ if(AnnotationUtil.isAnnotationExistOnClass(find.getBeanClass(), Specializes.class))
{
return getMostSpecializedBean(manager, find);
}