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/04 21:00:13 UTC
svn commit: r791166 [1/2] - in
/incubator/openwebbeans/trunk/webbeans-impl/src:
main/java/org/apache/webbeans/annotation/
main/java/org/apache/webbeans/component/
main/java/org/apache/webbeans/component/xml/
main/java/org/apache/webbeans/config/ main/j...
Author: gerdogdu
Date: Sat Jul 4 19:00:12 2009
New Revision: 791166
URL: http://svn.apache.org/viewvc?rev=791166&view=rev
Log:
Reflect API changes.
Added:
incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/annotation/AnyLiteral.java
- copied, changed from r788743, incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/annotation/AnyScopeLiteral.java
incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractInjectionTargetBean.java
- copied, changed from r791061, incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractObservesBean.java
incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/EventBean.java
- copied, changed from r791061, incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ObservableBean.java
incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionTargetBean.java
- copied, changed from r791061, incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ObservesMethodsOwnerBean.java
incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/ObserverWrapper.java
- copied, changed from r788743, incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/ObserverImpl.java
incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/
incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/AbstractProducer.java (with props)
incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/InjectionTargetProducer.java (with props)
incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/ProducerBeansProducer.java (with props)
Removed:
incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/annotation/AnyScopeLiteral.java
incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractObservesBean.java
incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ObservableBean.java
incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ObservesMethodsOwnerBean.java
incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/ObserverImpl.java
Modified:
incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractBean.java
incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractProducerBean.java
incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ExtensionBean.java
incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/IBeanHasParent.java
incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InstanceBean.java
incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ManagedBean.java
incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerFieldBean.java
incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java (contents, props changed)
incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/xml/XMLManagedBean.java
incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/xml/XMLProducerBean.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/container/BeanManagerImpl.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/EventImpl.java (contents, props changed)
incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/EventUtil.java
incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/NotificationManager.java
incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/TransactionalObserverType.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/AbstractInjectable.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/util/AnnotationUtil.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/WebBeansXMLConfigurator.java
incubator/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/component/event/normal/ComponentWithObservable1.java
incubator/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/component/event/normal/ComponentWithObserves1.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/event/EventTest.java
incubator/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/event/component/BrokenComponentTest.java
incubator/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/event/component/ObserversComponentTest.java
incubator/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/event/exception/EventExceptionTest.java
Copied: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/annotation/AnyLiteral.java (from r788743, incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/annotation/AnyScopeLiteral.java)
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/annotation/AnyLiteral.java?p2=incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/annotation/AnyLiteral.java&p1=incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/annotation/AnyScopeLiteral.java&r1=788743&r2=791166&rev=791166&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/annotation/AnyScopeLiteral.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/annotation/AnyLiteral.java Sat Jul 4 19:00:12 2009
@@ -16,6 +16,6 @@
import javax.enterprise.inject.AnnotationLiteral;
import javax.enterprise.inject.Any;
-public class AnyScopeLiteral extends AnnotationLiteral<Any> implements Any{
+public class AnyLiteral extends AnnotationLiteral<Any> implements Any{
}
Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractBean.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractBean.java?rev=791166&r1=791165&r2=791166&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractBean.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractBean.java Sat Jul 4 19:00:12 2009
@@ -217,7 +217,10 @@
*
* @param instance instance that is being destroyed
*/
- protected abstract void destroyInstance(T instance);
+ protected void destroyInstance(T instance)
+ {
+
+ }
/**
* Get component type.
@@ -237,7 +240,8 @@
{
if(IBeanHasParent.class.isAssignableFrom(getClass()))
{
- IBeanHasParent comp = (IBeanHasParent)this;
+ @SuppressWarnings("unchecked")
+ IBeanHasParent<T> comp = (IBeanHasParent<T>)this;
return comp.getParent().getBeanClass();
}
Copied: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractInjectionTargetBean.java (from r791061, incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractObservesBean.java)
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractInjectionTargetBean.java?p2=incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractInjectionTargetBean.java&p1=incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractObservesBean.java&r1=791061&r2=791166&rev=791166&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractObservesBean.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractInjectionTargetBean.java Sat Jul 4 19:00:12 2009
@@ -23,6 +23,7 @@
import javax.enterprise.inject.Initializer;
import org.apache.webbeans.config.DefinitionUtil;
+import org.apache.webbeans.context.creational.CreationalContextImpl;
import org.apache.webbeans.exception.WebBeansException;
import org.apache.webbeans.inject.InjectableField;
import org.apache.webbeans.inject.InjectableMethods;
@@ -38,7 +39,7 @@
*
* @param <T> bean class
*/
-public abstract class AbstractObservesBean<T> extends AbstractBean<T> implements ObservesMethodsOwnerBean<T>
+public abstract class AbstractInjectionTargetBean<T> extends AbstractBean<T> implements InjectionTargetBean<T>
{
/**Logger instance*/
private final WebBeansLogger logger = WebBeansLogger.getLogger(getClass());
@@ -61,7 +62,7 @@
* @param webBeansType webbean type
* @param returnType bean class type
*/
- protected AbstractObservesBean(WebBeansType webBeansType, Class<T> returnType)
+ protected AbstractInjectionTargetBean(WebBeansType webBeansType, Class<T> returnType)
{
super(webBeansType, returnType);
}
@@ -101,7 +102,14 @@
*
* @param instance object instance.
*/
- abstract protected void destroyComponentInstance(T instance);
+ protected void destroyComponentInstance(T instance)
+ {
+ preDestroy(instance);
+
+ //Remove it from creational context, if any
+ CreationalContextImpl<T> cc = (CreationalContextImpl<T>)this.creationalContext;
+ cc.remove();
+ }
/**
* Called before constructor
@@ -132,6 +140,14 @@
DefinitionUtil.defineWebBeanDecoratorStack(this, instance);
}
+ postConstruct(instance);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void postConstruct(T instance)
+ {
//Call Post Construct
if (WebBeansUtil.isContainsInterceptorMethod(getInterceptorStack(), InterceptorType.POST_CONSTRUCT))
{
@@ -146,16 +162,38 @@
logger.error("Error is occured while executing @PostConstruct",e);
throw new WebBeansException(e);
}
- }
+ }
}
/**
+ * {@inheritDoc}
+ */
+ public void preDestroy(T instance)
+ {
+ if (WebBeansUtil.isContainsInterceptorMethod(getInterceptorStack(), InterceptorType.PRE_DESTROY))
+ {
+ InvocationContextImpl impl = new InvocationContextImpl(null,instance, null, null, WebBeansUtil.getInterceptorMethods(getInterceptorStack(), InterceptorType.PRE_DESTROY), InterceptorType.PRE_DESTROY);
+ try
+ {
+ impl.proceed();
+ }
+ catch (Exception e)
+ {
+ getLogger().error("Error is occıred while executing @PreDestroy method",e);
+ throw new WebBeansException(e);
+ }
+
+ }
+ }
+
+
+ /**
* Injects fields of the bean after constructing.
*
* @param instance bean instance
* @param creationalContext creational context
*/
- protected void injectFields(T instance, CreationalContext<T> creationalContext)
+ public void injectFields(T instance, CreationalContext<T> creationalContext)
{
Set<Field> fields = getInjectedFields();
for (Field field : fields)
@@ -176,7 +214,7 @@
* @param creationalContext creational context instance
*/
@SuppressWarnings("unchecked")
- protected void injectMethods(T instance, CreationalContext<T> creationalContext)
+ public void injectMethods(T instance, CreationalContext<T> creationalContext)
{
Set<Method> methods = getInjectedMethods();
@@ -187,6 +225,13 @@
}
}
+ /**
+ * {@inheritDoc}
+ */
+ public void injectResources(T instance, CreationalContext<T> creationalContext)
+ {
+ //TODO Java EE injections
+ }
/*
* (non-Javadoc)
Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractProducerBean.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractProducerBean.java?rev=791166&r1=791165&r2=791166&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractProducerBean.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractProducerBean.java Sat Jul 4 19:00:12 2009
@@ -20,7 +20,7 @@
*
* @param <T> bean type info
*/
-public abstract class AbstractProducerBean<T> extends AbstractBean<T> implements IBeanHasParent
+public abstract class AbstractProducerBean<T> extends AbstractBean<T> implements IBeanHasParent<T>
{
/**Owner of the producer field component*/
protected AbstractBean<?> ownerComponent;
@@ -46,5 +46,9 @@
return this.ownerComponent;
}
+ public void dispose(T instance)
+ {
+ //Do nothing
+ }
}
\ No newline at end of file
Copied: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/EventBean.java (from r791061, incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ObservableBean.java)
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/EventBean.java?p2=incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/EventBean.java&p1=incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ObservableBean.java&r1=791061&r2=791166&rev=791166&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ObservableBean.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/EventBean.java Sat Jul 4 19:00:12 2009
@@ -14,6 +14,8 @@
package org.apache.webbeans.component;
import java.lang.annotation.Annotation;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Type;
import java.util.Set;
import javax.enterprise.context.spi.CreationalContext;
@@ -25,19 +27,26 @@
*
* @version $Rev$Â $Date$
*/
-public class ObservableBean<T, K> extends ManagedBean<T>
+public class EventBean<T> extends AbstractBean<T>
{
- private WebBeansType definedType;
+ private Type eventType = null;
- private Class<K> eventType = null;
-
- public ObservableBean(Class<T> returnType, Class<K> eventType, WebBeansType definedType)
+ /**
+ * Creates a new instance of event bean.
+ *
+ * @param returnType Event class
+ * @param eventType event type
+ * @param definedType webbeans type
+ */
+ public EventBean(Class<T> returnType, Type eventType, WebBeansType definedType)
{
- super(returnType);
- this.definedType = definedType;
+ super(definedType,returnType);
this.eventType = eventType;
}
-
+
+ /**
+ * {@inheritDoc}
+ */
@Override
protected T createInstance(CreationalContext<T> creationalContext)
{
@@ -50,36 +59,26 @@
try
{
- instance = getConstructor().newInstance(new Object[] { bindingTypes, eventType });
+ Constructor<T> constructor = null;
+ constructor = returnType.getConstructor(new Class<?>[] { Annotation[].class, Type.class });
+ instance = constructor.newInstance(new Object[] { bindingTypes, eventType });
}
catch (Exception e)
{
- throw new WebBeansException("Exception in creating Observable implicit component for event type : " + eventType.getName());
+ throw new WebBeansException("Exception in creating Event implicit component for event type : " + eventType);
}
return instance;
}
- @Override
- protected void destroyInstance(T instance)
- {
- super.destroyInstance(instance);
- }
-
- /**
- * @return the definedType
- */
- public WebBeansType getDefinedType()
- {
- return definedType;
- }
-
/**
+ * Returns the event type.
+ *
* @return the eventType
*/
- public Class<K> getEventType()
+ public Type getEventType()
{
return eventType;
}
Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ExtensionBean.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ExtensionBean.java?rev=791166&r1=791165&r2=791166&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ExtensionBean.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ExtensionBean.java Sat Jul 4 19:00:12 2009
@@ -24,7 +24,7 @@
*
* @param <T> type info
*/
-public class ExtensionBean<T> extends AbstractObservesBean<T>
+public class ExtensionBean<T> extends AbstractInjectionTargetBean<T>
{
/**
* Creates a new extesion bean.
Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/IBeanHasParent.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/IBeanHasParent.java?rev=791166&r1=791165&r2=791166&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/IBeanHasParent.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/IBeanHasParent.java Sat Jul 4 19:00:12 2009
@@ -16,7 +16,9 @@
*/
package org.apache.webbeans.component;
-public interface IBeanHasParent
+public interface IBeanHasParent<T>
{
public AbstractBean<?> getParent();
+
+ public void dispose(T instance);
}
Copied: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionTargetBean.java (from r791061, incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ObservesMethodsOwnerBean.java)
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionTargetBean.java?p2=incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionTargetBean.java&p1=incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ObservesMethodsOwnerBean.java&r1=791061&r2=791166&rev=791166&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ObservesMethodsOwnerBean.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionTargetBean.java Sat Jul 4 19:00:12 2009
@@ -16,6 +16,8 @@
import java.lang.reflect.Method;
import java.util.Set;
+import javax.enterprise.context.spi.CreationalContext;
+
/**
* Defines contract for beans that coud have observable
* method.
@@ -24,7 +26,7 @@
*
* @param <T> bean type
*/
-public interface ObservesMethodsOwnerBean<T>
+public interface InjectionTargetBean<T>
{
/**
* Returns set of observable methods.
@@ -41,6 +43,44 @@
public void addObservableMethod(Method observerMethod);
/**
+ * Inject JavaEE resources.
+ *
+ * @param instance bean instance
+ * @param creationalContext creational context
+ */
+ public void injectResources(T instance, CreationalContext<T> creationalContext);
+
+ /**
+ * Inject fields of the bean instance.
+ *
+ * @param instance bean instance
+ * @param creationalContext creational context
+ */
+ public void injectFields(T instance, CreationalContext<T> creationalContext);
+
+ /**
+ * Inject initializer methods of the bean instance.
+ *
+ * @param instance bean instance
+ * @param creationalContext creational context
+ */
+ public void injectMethods(T instance, CreationalContext<T> creationalContext);
+
+ /**
+ * Calls post constrcut method.
+ *
+ * @param instance bean instance
+ */
+ public void postConstruct(T instance);
+
+ /**
+ * Calls predestroy method.
+ *
+ * @param instance bean instance
+ */
+ public void preDestroy(T instance);
+
+ /**
* Returns true if coming from <pre>@Realization</pre>.
*
* @return true if coming from <pre>@Realization</pre>
Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InstanceBean.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InstanceBean.java?rev=791166&r1=791165&r2=791166&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InstanceBean.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InstanceBean.java Sat Jul 4 19:00:12 2009
@@ -42,11 +42,4 @@
return InstanceFactory.getInstance(this.injectedType, anns);
}
-
- @Override
- protected void destroyInstance(Instance<T> instance)
- {
-
- }
-
}
\ No newline at end of file
Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ManagedBean.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ManagedBean.java?rev=791166&r1=791165&r2=791166&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ManagedBean.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ManagedBean.java Sat Jul 4 19:00:12 2009
@@ -18,19 +18,14 @@
import javax.enterprise.context.spi.CreationalContext;
import javax.enterprise.inject.spi.Bean;
-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;
-import org.apache.webbeans.intercept.InvocationContextImpl;
-import org.apache.webbeans.util.WebBeansUtil;
/**
* Managed bean implementation of the {@link Bean}.
*
* @version $Rev$Â $Date$
*/
-public class ManagedBean<T> extends AbstractObservesBean<T>
+public class ManagedBean<T> extends AbstractInjectionTargetBean<T>
{
/** Constructor of the web bean component */
private Constructor<T> constructor;
@@ -70,32 +65,6 @@
/**
- * {@inheritDoc}
- */
- @Override
- protected void destroyComponentInstance(T instance)
- {
- if (WebBeansUtil.isContainsInterceptorMethod(getInterceptorStack(), InterceptorType.PRE_DESTROY))
- {
- InvocationContextImpl impl = new InvocationContextImpl(null,instance, null, null, WebBeansUtil.getInterceptorMethods(getInterceptorStack(), InterceptorType.PRE_DESTROY), InterceptorType.PRE_DESTROY);
- try
- {
- impl.proceed();
- }
- catch (Exception e)
- {
- getLogger().error("Error is occıred while executing @PreDestroy method",e);
- throw new WebBeansException(e);
- }
-
- }
-
- //Remove it from creational context, if any
- CreationalContextImpl<T> cc = (CreationalContextImpl<T>)this.creationalContext;
- cc.remove();
- }
-
- /**
* Get constructor.
*
* @return constructor
Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerFieldBean.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerFieldBean.java?rev=791166&r1=791165&r2=791166&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerFieldBean.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerFieldBean.java Sat Jul 4 19:00:12 2009
@@ -34,7 +34,7 @@
*
* @param <T> Type of the field decleration
*/
-public class ProducerFieldBean<T> extends AbstractProducerBean<T> implements IBeanHasParent
+public class ProducerFieldBean<T> extends AbstractProducerBean<T> implements IBeanHasParent<T>
{
/**Producer field that defines the component*/
private Field producerField;
Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java?rev=791166&r1=791165&r2=791166&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java Sat Jul 4 19:00:12 2009
@@ -32,15 +32,11 @@
* <p>
* It is defined as producer method component.
* </p>
- *
- * @author <a href="mailto:gurkanerdogdu@yahoo.com">Gurkan Erdogdu</a>
- * @since 1.0
+ *
+ * @version $Rev$ $Date$
*/
-public class ProducerMethodBean<T> extends AbstractBean<T> implements IBeanHasParent
+public class ProducerMethodBean<T> extends AbstractProducerBean<T>
{
- /** Parent component that this producer method belongs */
- protected AbstractBean<?> parent;
-
/** Creator method of the parent component */
protected Method creatorMethod;
@@ -54,8 +50,7 @@
*/
public ProducerMethodBean(AbstractBean<?> parent, Class<T> returnType)
{
- super(WebBeansType.PRODUCER, returnType);
- this.parent = parent;
+ super(WebBeansType.PRODUCER, returnType, parent);
}
/**
@@ -79,16 +74,6 @@
}
/**
- * Gets the producer method owner web bean.
- *
- * @return web bean component defines producer method
- */
- public AbstractBean<?> getParent()
- {
- return parent;
- }
-
- /**
* Gets the disposal method of the component.
*
* @return disposal method
@@ -184,6 +169,14 @@
@Override
protected void destroyInstance(T instance)
{
+ dispose(instance);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void dispose(T instance)
+ {
if (disposalMethod != null)
{
Object parentInstance = null;
@@ -196,7 +189,7 @@
}
- InjectableMethods<T> m = new InjectableMethods<T>(disposalMethod, parentInstance, parent,null);
+ InjectableMethods<T> m = new InjectableMethods<T>(disposalMethod, parentInstance, this.ownerComponent,null);
m.doInjection();
@@ -209,7 +202,7 @@
}
}
- }
+ }
}
@SuppressWarnings("unchecked")
@@ -220,10 +213,10 @@
Object parentInstance = null;
//Added for most specialized bean
- Annotation[] anns = new Annotation[this.parent.getBindings().size()];
- anns = this.parent.getBindings().toArray(anns);
+ Annotation[] anns = new Annotation[this.ownerComponent.getBindings().size()];
+ anns = this.ownerComponent.getBindings().toArray(anns);
- Bean<?> specialize = WebBeansUtil.getMostSpecializedBean(getManager(), (AbstractBean<T>)this.parent);
+ Bean<?> specialize = WebBeansUtil.getMostSpecializedBean(getManager(), (AbstractBean<T>)this.ownerComponent);
if(specialize != null)
{
@@ -231,7 +224,7 @@
}
else
{
- parentInstance = getManager().getReference(this.parent, null, null);
+ parentInstance = getManager().getReference(this.ownerComponent, null, null);
}
return parentInstance;
@@ -240,13 +233,13 @@
protected void checkNullInstance(Object instance)
{
- String errorMessage = "WebBeans producer method : " + creatorMethod.getName() + " return type in the component implementation class : " + this.parent.getReturnType().getName() + " scope type must be @Dependent to create null instance";
+ String errorMessage = "WebBeans producer method : " + creatorMethod.getName() + " return type in the component implementation class : " + this.ownerComponent.getReturnType().getName() + " scope type must be @Dependent to create null instance";
WebBeansUtil.checkNullInstance(instance, this.getScopeType(), errorMessage);
}
protected void checkScopeType()
{
- String errorMessage = "WebBeans producer method : " + creatorMethod.getName() + " return type in the component implementation class : " + this.parent.getReturnType().getName() + " with passivating scope @" + this.getScopeType().getName() + " must be Serializable";
+ String errorMessage = "WebBeans producer method : " + creatorMethod.getName() + " return type in the component implementation class : " + this.ownerComponent.getReturnType().getName() + " with passivating scope @" + this.getScopeType().getName() + " must be Serializable";
WebBeansUtil.checkSerializableScopeType(this.getScopeType(), this.isSerializable(), errorMessage);
}
Propchange: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/xml/XMLManagedBean.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/xml/XMLManagedBean.java?rev=791166&r1=791165&r2=791166&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/xml/XMLManagedBean.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/xml/XMLManagedBean.java Sat Jul 4 19:00:12 2009
@@ -95,7 +95,7 @@
* )
*/
@Override
- protected void injectFields(T instance,CreationalContext<T> creationalContext)
+ public void injectFields(T instance,CreationalContext<T> creationalContext)
{
Set<Field> fieldSet = this.injectableFields.keySet();
Iterator<Field> itField = fieldSet.iterator();
@@ -149,7 +149,7 @@
* )
*/
@Override
- protected void injectMethods(T instance,CreationalContext<T> creationalContext)
+ public void injectMethods(T instance,CreationalContext<T> creationalContext)
{
Set<Method> methodSet = this.injectableMethods.keySet();
Iterator<Method> itMethods = methodSet.iterator();
Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/xml/XMLProducerBean.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/xml/XMLProducerBean.java?rev=791166&r1=791165&r2=791166&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/xml/XMLProducerBean.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/xml/XMLProducerBean.java Sat Jul 4 19:00:12 2009
@@ -39,7 +39,7 @@
public XMLProducerBean(AbstractBean<?> parent, Class<T> returnType)
{
super(parent, returnType);
- this.parent = parent;
+ this.ownerComponent = parent;
}
public void addProducerMethodInjectionPointModel(XMLInjectionPointModel model)
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=791166&r1=791165&r2=791166&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 Sat Jul 4 19:00:12 2009
@@ -39,12 +39,10 @@
import javax.enterprise.inject.deployment.DeploymentType;
import javax.enterprise.inject.deployment.Specializes;
import javax.enterprise.inject.deployment.Standard;
-import javax.enterprise.inject.spi.Annotated;
import javax.enterprise.inject.spi.Bean;
import javax.enterprise.inject.spi.InjectionPoint;
-import javax.event.Fires;
-import org.apache.webbeans.annotation.AnyScopeLiteral;
+import org.apache.webbeans.annotation.AnyLiteral;
import org.apache.webbeans.annotation.CurrentLiteral;
import org.apache.webbeans.annotation.DependentScopeLiteral;
import org.apache.webbeans.annotation.ProductionLiteral;
@@ -53,7 +51,7 @@
import org.apache.webbeans.component.BaseBean;
import org.apache.webbeans.component.ManagedBean;
import org.apache.webbeans.component.IBeanHasParent;
-import org.apache.webbeans.component.ObservesMethodsOwnerBean;
+import org.apache.webbeans.component.InjectionTargetBean;
import org.apache.webbeans.component.ProducerMethodBean;
import org.apache.webbeans.component.ProducerFieldBean;
import org.apache.webbeans.config.inheritance.IBeanInheritedMetaData;
@@ -132,7 +130,8 @@
//From parent
if (!found && (component instanceof IBeanHasParent))
{
- IBeanHasParent child = (IBeanHasParent) component;
+ @SuppressWarnings("unchecked")
+ IBeanHasParent<T> child = (IBeanHasParent<T>) component;
component.setType(child.getParent().getType());
}
@@ -267,7 +266,7 @@
//Add @Any support
if(!AnnotationUtil.isAnyBindingExist(component))
{
- component.addBindingType(new AnyScopeLiteral());
+ component.addBindingType(new AnyLiteral());
}
}
@@ -1084,7 +1083,7 @@
WebBeansDecoratorConfig.configureDecarotors(component, object);
}
- public static <T> void defineObserverMethods(ObservesMethodsOwnerBean<T> component, Class<T> clazz)
+ public static <T> void defineObserverMethods(InjectionTargetBean<T> component, Class<T> clazz)
{
Asserts.assertNotNull(component, "component parameter can not be null");
Asserts.nullCheckForClass(clazz);
@@ -1111,7 +1110,7 @@
}
@SuppressWarnings("unchecked")
- private static <T> void createObserverMethodsWithRealizes(ObservesMethodsOwnerBean<T> component, Class<?> clazz, Method[] candidateMethods, boolean isRealizes)
+ private static <T> void createObserverMethodsWithRealizes(InjectionTargetBean<T> component, Class<?> clazz, Method[] candidateMethods, boolean isRealizes)
{
for (Method candidateMethod : candidateMethods)
@@ -1177,17 +1176,13 @@
public static void addImplicitComponentForInjectionPoint(InjectionPoint injectionPoint)
{
- Annotated annotated = injectionPoint.getAnnotated();
-
if(WebBeansUtil.checkObtainsInjectionPointConditions(injectionPoint))
{
WebBeansUtil.addInjectedImplicitInstanceComponent(injectionPoint);
}
- //If contains the @Fires, defines implicit component
- else if(annotated.isAnnotationPresent(Fires.class))
- {
- EventUtil.checkObservableInjectionPointConditions(injectionPoint);
+ else if(EventUtil.checkObservableInjectionPointConditions(injectionPoint))
+ {
WebBeansUtil.addInjectedImplicitEventComponent(injectionPoint);
}
else
Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java?rev=791166&r1=791165&r2=791166&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java Sat Jul 4 19:00:12 2009
@@ -431,38 +431,11 @@
}
- 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);
- return this;
- }
-
public <T> T getInstance(Bean<T> bean)
{
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}
*/
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=791166&r1=791165&r2=791166&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 Sat Jul 4 19:00:12 2009
@@ -27,7 +27,7 @@
import org.apache.webbeans.annotation.CurrentLiteral;
import org.apache.webbeans.component.AbstractBean;
-import org.apache.webbeans.component.ObservesMethodsOwnerBean;
+import org.apache.webbeans.component.InjectionTargetBean;
import org.apache.webbeans.container.InjectionResolver;
import org.apache.webbeans.container.BeanManagerImpl;
import org.apache.webbeans.container.activity.ActivityManager;
@@ -64,7 +64,7 @@
private static final WebBeansLogger logger = WebBeansLogger.getLogger(BeanObserverImpl.class);
/**Observer owner bean that defines observer method*/
- private final ObservesMethodsOwnerBean<?> bean;
+ private final InjectionTargetBean<?> bean;
/**Event observer method*/
private final Method observerMethod;
@@ -83,7 +83,7 @@
* @param ifExist if exist parameter
* @param type transaction type
*/
- public BeanObserverImpl(ObservesMethodsOwnerBean<?> bean, Method observerMethod, boolean ifExist, TransactionalObserverType type)
+ public BeanObserverImpl(InjectionTargetBean<?> bean, Method observerMethod, boolean ifExist, TransactionalObserverType type)
{
this.bean = bean;
this.observerMethod = observerMethod;
@@ -237,7 +237,7 @@
*
* @return the bean
*/
- public ObservesMethodsOwnerBean<?> getBean()
+ public InjectionTargetBean<?> getBean()
{
return bean;
}
Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/EventImpl.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/EventImpl.java?rev=791166&r1=791165&r2=791166&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/EventImpl.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/EventImpl.java Sat Jul 4 19:00:12 2009
@@ -14,56 +14,70 @@
package org.apache.webbeans.event;
import java.lang.annotation.Annotation;
+import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
import javax.enterprise.event.Event;
-import javax.enterprise.event.Observer;
-import javax.event.Fires;
+import javax.enterprise.inject.TypeLiteral;
import org.apache.webbeans.container.BeanManagerImpl;
+import org.apache.webbeans.util.AnnotationUtil;
+import org.apache.webbeans.util.ClassUtil;
+/**
+ * Event implementation.
+ *
+ * @version $Rev$ $Date$
+ *
+ * @param <T> event type
+ * @see Event
+ */
public class EventImpl<T> implements Event<T>
{
+ /**Event binding types*/
private Annotation[] injectedBindings;
- private Class<T> eventType;
+ /**Event types*/
+ private Type eventType;
+ /**Bean manager*/
private BeanManagerImpl manager = null;
- public EventImpl(Annotation[] injectedBindings, Class<T> eventType)
+ /**
+ * Creates a new event.
+ *
+ * @param injectedBindings event bindings
+ * @param eventType event type
+ */
+ public EventImpl(Annotation[] injectedBindings, Type eventType)
{
this.injectedBindings = injectedBindings;
this.eventType = eventType;
this.manager = BeanManagerImpl.getManager();
}
- public void fire(T event, Annotation... bindings)
+ /**
+ * Fires event with given event object.
+ */
+ public void fire(T event)
{
- EventUtil.checkEventBindings(getEventBindings(bindings));
- this.manager.fireEvent(event, getEventBindings(bindings));
-
- }
-
- public void observe(Observer<T> observer, Annotation... bindings)
- {
- EventUtil.checkEventBindings(getEventBindings(bindings));
- this.manager.addObserver(observer, eventType, bindings);
+ this.manager.fireEvent(event, this.injectedBindings);
}
+ /**
+ * Returns total binding annotations.
+ *
+ * @param annotations new annotations
+ * @return total binding annotations
+ */
private Annotation[] getEventBindings(Annotation... annotations)
{
+ AnnotationUtil.checkBindingTypeConditions(annotations);
+
List<Annotation> eventBindings = new ArrayList<Annotation>();
Annotation[] anns = null;
- for (Annotation binding : injectedBindings)
- {
- if (!binding.annotationType().equals(Fires.class))
- {
- eventBindings.add(binding);
- }
- }
-
for (Annotation binding : annotations)
{
eventBindings.add(binding);
@@ -75,4 +89,47 @@
return anns;
}
-}
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public Event<T> select(Annotation... bindings)
+ {
+ Event<T> sub = new EventImpl<T>(getEventBindings(bindings),this.eventType);
+
+ return sub;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public <U extends T> Event<U> select(Class<U> subtype, Annotation... bindings)
+ {
+ if(ClassUtil.isDefinitionConstainsTypeVariables(subtype))
+ {
+ throw new IllegalArgumentException("Class : " + subtype + " cannot contain type variable");
+ }
+
+ Type sub = subtype;
+
+ if(sub == null)
+ {
+ sub = this.eventType;
+ }
+
+ Event<U> subEvent = new EventImpl<U>(getEventBindings(bindings),sub);
+
+ return subEvent;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public <U extends T> Event<U> select(TypeLiteral<U> subtype, Annotation... bindings)
+ {
+ return select(subtype.getRawType(), bindings);
+ }
+}
\ No newline at end of file
Propchange: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/EventImpl.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/EventUtil.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/EventUtil.java?rev=791166&r1=791165&r2=791166&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/EventUtil.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/EventUtil.java Sat Jul 4 19:00:12 2009
@@ -18,14 +18,9 @@
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
-import javax.enterprise.event.AfterTransactionCompletion;
-import javax.enterprise.event.AfterTransactionFailure;
-import javax.enterprise.event.AfterTransactionSuccess;
-import javax.enterprise.event.Asynchronously;
-import javax.enterprise.event.BeforeTransactionCompletion;
import javax.enterprise.event.Event;
-import javax.enterprise.event.IfExists;
import javax.enterprise.event.Observes;
+import javax.enterprise.event.TransactionPhase;
import javax.enterprise.inject.Disposes;
import javax.enterprise.inject.Initializer;
import javax.enterprise.inject.Produces;
@@ -58,99 +53,26 @@
AnnotationUtil.checkBindingTypeConditions(annotations);
}
- private static void checkTransactionCondition(Method observerMethod)
- {
- int i = 1;
-
- WebBeansConfigurationException excpetion = new WebBeansConfigurationException("Observer method : " + observerMethod.getName() + " in class : "
- + observerMethod.getDeclaringClass().getName() + " is not defined with more than two transaction annotation parameter");
-
-
- if(AnnotationUtil.isMethodParameterAnnotationExist(observerMethod, AfterTransactionCompletion.class))
- {
- if(i > 1)
- {
- throw excpetion;
- }
-
- i++;
- }
-
- if(AnnotationUtil.isMethodParameterAnnotationExist(observerMethod, BeforeTransactionCompletion.class))
- {
- if(i > 1)
- {
- throw excpetion;
- }
-
- i++;
- }
-
- if(AnnotationUtil.isMethodParameterAnnotationExist(observerMethod, AfterTransactionFailure.class))
- {
- if(i > 1)
- {
- throw excpetion;
- }
-
- i++;
- }
-
- if(AnnotationUtil.isMethodParameterAnnotationExist(observerMethod, AfterTransactionSuccess.class))
- {
- if(i > 1)
- {
- throw excpetion;
- }
-
- i++;
- }
-
- }
-
public static TransactionalObserverType getObserverMethodTransactionType(Method observerMethod)
{
- checkTransactionCondition(observerMethod);
+ Observes observes = AnnotationUtil.getMethodFirstParameterAnnotation(observerMethod, Observes.class);
- if (AnnotationUtil.isMethodParameterAnnotationExist(observerMethod, Asynchronously.class) &&
- (AnnotationUtil.isMethodParameterAnnotationExist(observerMethod, BeforeTransactionCompletion.class)
- || (AnnotationUtil.isMethodParameterAnnotationExist(observerMethod, IfExists.class))))
- {
- throw new WebBeansConfigurationException("Observer method : " + observerMethod.getName() + " in class : "
- + observerMethod.getDeclaringClass().getName() + " can not be both @Asynchronously and @BeforeTransactionCompletion or @IfExists");
- }
-
-
- if (AnnotationUtil.isMethodParameterAnnotationExist(observerMethod, AfterTransactionCompletion.class))
+ if (observes.during().equals(TransactionPhase.AFTER_COMPLETION))
{
return TransactionalObserverType.AFTER_TRANSACTION_COMPLETION;
}
- else if (AnnotationUtil.isMethodParameterAnnotationExist(observerMethod, AfterTransactionSuccess.class))
+ else if (observes.during().equals(TransactionPhase.AFTER_SUCCESS))
{
return TransactionalObserverType.AFTER_TRANSACTION_SUCCESS;
}
- else if (AnnotationUtil.isMethodParameterAnnotationExist(observerMethod, AfterTransactionFailure.class))
+ else if (observes.during().equals(TransactionPhase.AFTER_FAILURE))
{
return TransactionalObserverType.AFTER_TRANSACTION_FAILURE;
}
- else if (AnnotationUtil.isMethodParameterAnnotationExist(observerMethod, BeforeTransactionCompletion.class))
+ else if (observes.during().equals(TransactionPhase.BEFORE_COMPLETION))
{
return TransactionalObserverType.BEFORE_TRANSACTION_COMPLETION;
}
- else if (AnnotationUtil.isMethodParameterAnnotationExist(observerMethod, Asynchronously.class) &&
- (AnnotationUtil.isMethodParameterAnnotationExist(observerMethod, AfterTransactionCompletion.class)
- || (AnnotationUtil.isMethodParameterAnnotationExist(observerMethod, AfterTransactionFailure.class)
- || (AnnotationUtil.isMethodParameterAnnotationExist(observerMethod, AfterTransactionSuccess.class)))))
-
- {
- return TransactionalObserverType.ASYNCHRONOUSLY_TRANSACTIONAL;
- }
-
- else if (AnnotationUtil.isMethodParameterAnnotationExist(observerMethod, Asynchronously.class))
- {
- return TransactionalObserverType.ASYNCHRONOUSLY_NONE;
- }
-
else
{
return TransactionalObserverType.NONE;
@@ -179,28 +101,45 @@
throw new WebBeansConfigurationException("Observer method : " + candidateObserverMethod.getName() + " in class : " + clazz.getName() + " can not annotated with annotation @Disposes");
}
- Type type = AnnotationUtil.getMethodFirstParameterWithAnnotation(candidateObserverMethod, Observes.class);
+// Type type = AnnotationUtil.getMethodFirstParameterWithAnnotation(candidateObserverMethod, Observes.class);
+//
+// Class<?> eventType = null;
+//
+// if (type instanceof ParameterizedType)
+// {
+// eventType = (Class<?>) ((ParameterizedType) type).getRawType();
+// }
+// else
+// {
+// eventType = (Class<?>) type;
+// }
+
+// if (ClassUtil.isDefinitionConstainsTypeVariables(eventType))
+// {
+// throw new WebBeansConfigurationException("Observer method : " + candidateObserverMethod.getName() + " in class : " + clazz.getName() + " can not defined as generic");
+// }
+ }
+
+
+ public static boolean checkObservableInjectionPointConditions(InjectionPoint injectionPoint)
+ {
+ Type type = injectionPoint.getType();
- Class<?> eventType = null;
-
- if (type instanceof ParameterizedType)
+ Class<?> candidateClazz = null;
+ if(type instanceof Class)
{
- eventType = (Class<?>) ((ParameterizedType) type).getRawType();
+ candidateClazz = (Class<?>)type;
}
- else
+ else if(type instanceof ParameterizedType)
{
- eventType = (Class<?>) type;
+ ParameterizedType pt = (ParameterizedType)type;
+ candidateClazz = (Class<?>)pt.getRawType();
}
-
- if (ClassUtil.isDefinitionConstainsTypeVariables(eventType))
+
+ if(!candidateClazz.equals(Event.class))
{
- throw new WebBeansConfigurationException("Observer method : " + candidateObserverMethod.getName() + " in class : " + clazz.getName() + " can not defined as generic");
- }
- }
-
-
- public static void checkObservableInjectionPointConditions(InjectionPoint injectionPoint)
- {
+ return false;
+ }
if (!ClassUtil.isParametrizedType(injectionPoint.getType()))
{
@@ -218,7 +157,7 @@
if(!(rawType.equals(Event.class)))
{
- throw new WebBeansConfigurationException("@Observable field injection " + injectionPoint.toString() + " must have type javax.event.Event");
+ return false;
}
else
{
@@ -228,25 +167,27 @@
if(ClassUtil.isParametrizedType(actualArgument) || ClassUtil.isWildCardType(actualArgument) || ClassUtil.isTypeVariable(actualArgument))
{
- throw new WebBeansConfigurationException("@Observable field injection " + injectionPoint.toString() + " actual type argument can not be Parametrized, Wildcard type or Type variable");
+ throw new IllegalArgumentException("@Observable field injection " + injectionPoint.toString() + " actual type argument can not be Parametrized, Wildcard type or Type variable");
}
if(ClassUtil.isDefinitionConstainsTypeVariables((Class<?>)actualArgument))
{
- throw new WebBeansConfigurationException("@Observable field injection " + injectionPoint.toString() + " must not have TypeVariable or WildCard generic type argument");
+ throw new IllegalArgumentException("@Observable field injection " + injectionPoint.toString() + " must not have TypeVariable or WildCard generic type argument");
}
}
else
{
- throw new WebBeansConfigurationException("@Observable field injection " + injectionPoint.toString() + " must not have more than one actual type argument");
+ throw new IllegalArgumentException("@Observable field injection " + injectionPoint.toString() + " must not have more than one actual type argument");
}
}
}
else
{
- throw new WebBeansConfigurationException("@Observable field injection " + injectionPoint.toString() + " must be defined as ParameterizedType with one actual type argument");
+ throw new IllegalArgumentException("@Observable field injection " + injectionPoint.toString() + " must be defined as ParameterizedType with one actual type argument");
}
}
+
+ return true;
}
Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/NotificationManager.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/NotificationManager.java?rev=791166&r1=791165&r2=791166&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/NotificationManager.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/NotificationManager.java Sat Jul 4 19:00:12 2009
@@ -15,6 +15,7 @@
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
+import java.lang.reflect.Type;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Iterator;
@@ -23,7 +24,7 @@
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CopyOnWriteArraySet;
-import javax.enterprise.event.IfExists;
+import javax.enterprise.event.Notify;
import javax.enterprise.event.Observer;
import javax.enterprise.event.ObserverException;
import javax.enterprise.event.Observes;
@@ -32,7 +33,7 @@
import javax.transaction.Synchronization;
import javax.transaction.Transaction;
-import org.apache.webbeans.component.ObservesMethodsOwnerBean;
+import org.apache.webbeans.component.InjectionTargetBean;
import org.apache.webbeans.container.BeanManagerImpl;
import org.apache.webbeans.container.activity.ActivityManager;
import org.apache.webbeans.exception.WebBeansException;
@@ -41,13 +42,14 @@
import org.apache.webbeans.spi.TransactionService;
import org.apache.webbeans.util.AnnotationUtil;
import org.apache.webbeans.util.Asserts;
+import org.apache.webbeans.util.ClassUtil;
@SuppressWarnings("unchecked")
public final class NotificationManager implements Synchronization
{
private static final WebBeansLogger logger = WebBeansLogger.getLogger(NotificationManager.class);
- private Map<Class<?>, Set<ObserverImpl<?>>> observers = new ConcurrentHashMap<Class<?>, Set<ObserverImpl<?>>>();
+ private Map<Type, Set<ObserverWrapper<?>>> observers = new ConcurrentHashMap<Type, Set<ObserverWrapper<?>>>();
private Set<TransactionalNotifier> transactionSet = new CopyOnWriteArraySet<TransactionalNotifier>();
@@ -65,22 +67,21 @@
return manager.getNotificationManager();
}
- public <T> void addObserver(Observer<T> observer, Class<T> eventType, Annotation... annotations)
+ public <T> void addObserver(Observer<T> observer, Type eventType, Annotation... annotations)
{
addObserver(observer, false, TransactionalObserverType.NONE, eventType, annotations);
}
- public <T> void addObserver(Observer<T> observer, boolean ifExist, TransactionalObserverType type, Class<T> eventType, Annotation... annotations)
+ public <T> void addObserver(Observer<T> observer, boolean ifExist, TransactionalObserverType type, Type eventType, Annotation... annotations)
{
- EventUtil.checkEventType(eventType);
EventUtil.checkEventBindings(annotations);
- ObserverImpl<T> observerImpl = new ObserverImpl<T>(observer, ifExist, type, eventType, annotations);
+ ObserverWrapper<T> observerImpl = new ObserverWrapper<T>(observer, ifExist, type, eventType, annotations);
- Set<ObserverImpl<?>> set = observers.get(eventType);
+ Set<ObserverWrapper<?>> set = observers.get(eventType);
if (set == null)
{
- set = new HashSet<ObserverImpl<?>>();
+ set = new HashSet<ObserverWrapper<?>>();
observers.put(eventType, set);
}
@@ -92,12 +93,12 @@
EventUtil.checkEventType(eventType.getRawType());
EventUtil.checkEventBindings(annotations);
- ObserverImpl<T> observerImpl = new ObserverImpl<T>(observer, eventType.getRawType(), annotations);
+ ObserverWrapper<T> observerImpl = new ObserverWrapper<T>(observer, eventType.getRawType(), annotations);
- Set<ObserverImpl<?>> set = observers.get(eventType.getRawType());
+ Set<ObserverWrapper<?>> set = observers.get(eventType.getRawType());
if (set == null)
{
- set = new HashSet<ObserverImpl<?>>();
+ set = new HashSet<ObserverWrapper<?>>();
observers.put(eventType.getRawType(), set);
}
@@ -111,11 +112,11 @@
if (observers.containsKey(eventType))
{
- Set<ObserverImpl<?>> set = observers.get(eventType);
- Iterator<ObserverImpl<?>> it = set.iterator();
+ Set<ObserverWrapper<?>> set = observers.get(eventType);
+ Iterator<ObserverWrapper<?>> it = set.iterator();
while (it.hasNext())
{
- ObserverImpl<?> s = it.next();
+ ObserverWrapper<?> s = it.next();
Observer<T> ob = (Observer<T>) s.getObserver();
Set<Annotation> evenBindings = s.getEventBindingTypes();
@@ -137,11 +138,11 @@
if (observers.containsKey(eventType.getRawType()))
{
- Set<ObserverImpl<?>> set = observers.get(eventType.getRawType());
- Iterator<ObserverImpl<?>> it = set.iterator();
+ Set<ObserverWrapper<?>> set = observers.get(eventType.getRawType());
+ Iterator<ObserverWrapper<?>> it = set.iterator();
while (it.hasNext())
{
- ObserverImpl<?> s = it.next();
+ ObserverWrapper<?> s = it.next();
Observer<T> ob = (Observer<T>) s.getObserver();
Set<Annotation> evenBindings = s.getEventBindingTypes();
@@ -159,30 +160,39 @@
public <T> Set<Observer<T>> resolveObservers(T event, Annotation... bindings)
{
- Set<ObserverImpl<?>> resolvedSet = new HashSet<ObserverImpl<?>>();
+ Set<ObserverWrapper<?>> resolvedSet = new HashSet<ObserverWrapper<?>>();
Set<Observer<T>> unres = new HashSet<Observer<T>>();
Class<T> eventType = (Class<T>) event.getClass();
+
+
+ Set<Type> types = new HashSet<Type>();
+ ClassUtil.setTypeHierarchy(types, eventType);
EventUtil.checkEventType(eventType);
EventUtil.checkEventBindings(bindings);
- Set<Class<?>> keySet = this.observers.keySet();
- Iterator<Class<?>> itKeySet = keySet.iterator();
+ Set<Type> keySet = this.observers.keySet();
+ Iterator<Type> itKeySet = keySet.iterator();
while (itKeySet.hasNext())
{
- Class<?> type = itKeySet.next();
- if (type.isAssignableFrom(eventType))
+ Type type = itKeySet.next();
+
+ for(Type check : types)
{
- resolvedSet.addAll(this.observers.get(type));
- }
+ if (ClassUtil.isAssignable(check, type))
+ {
+ resolvedSet.addAll(this.observers.get(type));
+ break;
+ }
+ }
}
- Iterator<ObserverImpl<?>> it = resolvedSet.iterator();
+ Iterator<ObserverWrapper<?>> it = resolvedSet.iterator();
while (it.hasNext())
{
- ObserverImpl<T> impl = (ObserverImpl<T>) it.next();
+ ObserverWrapper<T> impl = (ObserverWrapper<T>) it.next();
if (impl.isObserverOfBindings(bindings))
{
@@ -203,12 +213,12 @@
{
Observer<Object> observer = it.next();
try
- {
- if (observer instanceof BeanObserverImpl)
+ {
+ if(observer instanceof BeanObserverImpl)
{
BeanObserverImpl<Object> beanObserver = (BeanObserverImpl<Object>) observer;
TransactionalObserverType type = beanObserver.getType();
- if (!(type.equals(TransactionalObserverType.NONE) || type.equals(TransactionalObserverType.ASYNCHRONOUSLY_NONE)))
+ if (!(type.equals(TransactionalObserverType.NONE)))
{
Transaction transaction = transactionService.getTransaction();
@@ -242,25 +252,19 @@
}
else
{
- if(!type.equals(TransactionalObserverType.ASYNCHRONOUSLY_NONE))
- {
- observer.notify(event);
- }
+ observer.notify(event);
}
}
else
{
- if(!type.equals(TransactionalObserverType.ASYNCHRONOUSLY_NONE))
- {
- observer.notify(event);
- }
+ observer.notify(event);
}
+
}
else
{
observer.notify(event);
}
-
}
catch (WebBeansException e)
{
@@ -286,7 +290,7 @@
}
}
- public <T> void addObservableComponentMethods(ObservesMethodsOwnerBean<?> component)
+ public <T> void addObservableComponentMethods(InjectionTargetBean<?> component)
{
Asserts.assertNotNull(component, "component parameter can not be null");
Set<Method> observableMethods = component.getObservableMethods();
@@ -295,11 +299,13 @@
while (itMethods.hasNext())
{
Method observableMethod = itMethods.next();
+ Observes observes = AnnotationUtil.getMethodFirstParameterAnnotation(observableMethod, Observes.class);
+
Annotation[] bindingTypes = AnnotationUtil.getMethodFirstParameterBindingTypesWithGivenAnnotation(observableMethod, Observes.class);
-
+
boolean ifExist = false;
- if (AnnotationUtil.isMethodParameterAnnotationExist(observableMethod, IfExists.class))
+ if (observes.notifyObserver().equals(Notify.IF_EXISTS))
{
ifExist = true;
}
Copied: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/ObserverWrapper.java (from r788743, incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/ObserverImpl.java)
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/ObserverWrapper.java?p2=incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/ObserverWrapper.java&p1=incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/ObserverImpl.java&r1=788743&r2=791166&rev=791166&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/ObserverImpl.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/ObserverWrapper.java Sat Jul 4 19:00:12 2009
@@ -14,6 +14,7 @@
package org.apache.webbeans.event;
import java.lang.annotation.Annotation;
+import java.lang.reflect.Type;
import java.util.HashSet;
import java.util.Set;
@@ -21,24 +22,25 @@
/**
- * Implementation of the {@link Observer} interface contract.
+ * Wrapper around the {@link Observer} instance.
*
- * @author <a href="mailto:gurkanerdogdu@yahoo.com">Gurkan Erdogdu</a>
- * @since 1.0
* @param <T> generic event type
*/
-public class ObserverImpl<T>
+public class ObserverWrapper<T>
{
/** Event binding types apeearing on the parameter */
private Set<Annotation> eventBindingTypes = new HashSet<Annotation>();
/** Event object type */
- private Class<T> eventType;
+ private Type eventType;
+ /**Wrapped observer instance*/
private Observer<T> observer;
+ /**Using <code>@IfExist</code>*/
private boolean ifExist;
+ /**Transactional observer type*/
private TransactionalObserverType transObserverType;
/**
@@ -48,12 +50,12 @@
* @param observerMethod observer method
* @param eventType event type
*/
- public ObserverImpl(Observer<T> observer, Class<T> eventType, Annotation... annotations)
+ public ObserverWrapper(Observer<T> observer, Class<T> eventType, Annotation... annotations)
{
this(observer, false, TransactionalObserverType.NONE, eventType, annotations);
}
- public ObserverImpl(Observer<T> observer, boolean ifExist, TransactionalObserverType type, Class<T> eventType, Annotation... annotations)
+ public ObserverWrapper(Observer<T> observer, boolean ifExist, TransactionalObserverType type, Type eventType, Annotation... annotations)
{
for (Annotation annotation : annotations)
{
@@ -117,7 +119,7 @@
/**
* Gets event type.
*/
- public Class<T> getEventType()
+ public Type getEventType()
{
return this.eventType;
}
Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/TransactionalObserverType.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/TransactionalObserverType.java?rev=791166&r1=791165&r2=791166&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/TransactionalObserverType.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/TransactionalObserverType.java Sat Jul 4 19:00:12 2009
@@ -19,7 +19,5 @@
AFTER_TRANSACTION_SUCCESS,
AFTER_TRANSACTION_FAILURE,
BEFORE_TRANSACTION_COMPLETION,
- ASYNCHRONOUSLY_NONE,
- ASYNCHRONOUSLY_TRANSACTIONAL,
NONE
}
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=791166&r1=791165&r2=791166&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 Sat Jul 4 19:00:12 2009
@@ -19,7 +19,7 @@
import java.util.List;
import java.util.Set;
-import org.apache.webbeans.component.ObservesMethodsOwnerBean;
+import org.apache.webbeans.component.InjectionTargetBean;
import org.apache.webbeans.container.InjectionResolver;
import org.apache.webbeans.container.BeanManagerImpl;
import org.apache.webbeans.event.BeanObserverImpl;
@@ -30,7 +30,7 @@
{
private List<XMLInjectionPointModel> observersParameters = new ArrayList<XMLInjectionPointModel>();
- public BeanObserverXMLImpl(ObservesMethodsOwnerBean<?> bean, Method observerMethod, boolean ifExist, TransactionalObserverType type)
+ public BeanObserverXMLImpl(InjectionTargetBean<?> bean, Method observerMethod, boolean ifExist, TransactionalObserverType type)
{
super(bean, observerMethod, ifExist, type);
}
Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/AbstractInjectable.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/AbstractInjectable.java?rev=791166&r1=791165&r2=791166&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/AbstractInjectable.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/AbstractInjectable.java Sat Jul 4 19:00:12 2009
@@ -22,7 +22,6 @@
import javax.enterprise.context.spi.CreationalContext;
import javax.enterprise.inject.spi.Bean;
import javax.enterprise.inject.spi.InjectionPoint;
-import javax.event.Fires;
import org.apache.webbeans.component.AbstractBean;
import org.apache.webbeans.container.InjectionResolver;
@@ -84,18 +83,12 @@
}
Annotation[] injectionAnnotations = injectionPoint.getAnnotated().getAnnotations().toArray(new Annotation[0]);
- Annotation[] annotations = injectionPoint.getBindings().toArray(new Annotation[0]);
if (isResource(injectionAnnotations))
{
return injectResource(injectionPoint.getType(),injectionAnnotations);
}
- if (isObservableBinding(annotations))
- {
- return injectForObservable(injectionPoint.getType(), annotations);
- }
-
//Get injection point Bean component
Bean<?> component = InjectionResolver.getInstance().getInjectionPointBean(injectionPoint);
@@ -145,19 +138,6 @@
return AnnotationUtil.hasResourceAnnotation(annotations);
}
- private boolean isObservableBinding(Annotation... annotations)
- {
- for (Annotation ann : annotations)
- {
- if (ann.annotationType().equals(Fires.class))
- {
- return true;
- }
- }
-
- return false;
- }
-
/**
* If the annotation is a resource annotation, we create
* the instance for injecting web beans resources.
@@ -181,13 +161,6 @@
return null;
}
- private Object injectForObservable(Type type, Annotation... annotations)
- {
- Bean<?> bean = InjectionResolver.getInstance().implResolveByType(type, annotations).iterator().next();
-
- return injectForDependent(bean,null);
- }
-
private Object injectForDependent(Bean<?> component, InjectionPoint injectionPoint)
{
Object object = null;
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=791166&r1=791165&r2=791166&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 Sat Jul 4 19:00:12 2009
@@ -167,19 +167,20 @@
* {@inheritDoc}
*/
@Override
- @SuppressWarnings("unchecked")
public <U extends T> Instance<U> select(Class<U> subtype, Annotation... bindings)
{
AnnotationUtil.checkBindingTypeConditions(bindings);
- if(subtype == null)
+ Type sub = subtype;
+
+ if(sub == null)
{
- subtype = (Class<U>)this.injectionClazz;
+ sub = this.injectionClazz;
}
Annotation[] newBindings = getAdditionalBindings(bindings);
- InstanceImpl<U> newInstance = new InstanceImpl<U>(subtype, newBindings);
+ InstanceImpl<U> newInstance = new InstanceImpl<U>(sub, newBindings);
return newInstance;
}
Added: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/AbstractProducer.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/AbstractProducer.java?rev=791166&view=auto
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/AbstractProducer.java (added)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/AbstractProducer.java Sat Jul 4 19:00:12 2009
@@ -0,0 +1,83 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with this
+ * work for additional information regarding copyright ownership. The ASF
+ * licenses this file to You under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law
+ * or agreed to in writing, software distributed under the License is
+ * distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the specific language
+ * governing permissions and limitations under the License.
+ */
+package org.apache.webbeans.portable.creation;
+
+import java.util.Set;
+
+import javax.enterprise.context.spi.CreationalContext;
+import javax.enterprise.inject.spi.InjectionPoint;
+import javax.enterprise.inject.spi.Producer;
+
+import org.apache.webbeans.component.AbstractBean;
+
+/**
+ * Abstract implementation of {@link Producer} contract.
+ *
+ * @version $Rev$ $Date$
+ *
+ * @param <T> bean type info
+ */
+public abstract class AbstractProducer<T> implements Producer<T>
+{
+ /**Bean instance*/
+ private AbstractBean<T> bean;
+
+ /**
+ * Create a new producer with given bean.
+ *
+ * @param bean bean instance
+ */
+ protected AbstractProducer(AbstractBean<T> bean)
+ {
+ this.bean = bean;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public Set<InjectionPoint> getInjectionPoints()
+ {
+ return bean.getInjectionPoints();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public T produce(CreationalContext<T> creationalContext)
+ {
+ return bean.create(creationalContext);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void dispose(T instance)
+ {
+ //Do nothing as default
+ }
+
+ /**
+ * Returns actual bean instance.
+ *
+ * @param <X> bean type info
+ * @param clazz bean type class
+ * @return actual bean
+ */
+ protected <X> X getBean(Class<X> clazz)
+ {
+ return clazz.cast(this.bean);
+ }
+}
\ No newline at end of file
Propchange: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/AbstractProducer.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/AbstractProducer.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/InjectionTargetProducer.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/InjectionTargetProducer.java?rev=791166&view=auto
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/InjectionTargetProducer.java (added)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/InjectionTargetProducer.java Sat Jul 4 19:00:12 2009
@@ -0,0 +1,65 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with this
+ * work for additional information regarding copyright ownership. The ASF
+ * licenses this file to You under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law
+ * or agreed to in writing, software distributed under the License is
+ * distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the specific language
+ * governing permissions and limitations under the License.
+ */
+package org.apache.webbeans.portable.creation;
+
+import javax.enterprise.context.spi.CreationalContext;
+import javax.enterprise.inject.spi.InjectionTarget;
+
+import org.apache.webbeans.component.AbstractInjectionTargetBean;
+import org.apache.webbeans.component.InjectionTargetBean;
+
+/**
+ * InjectionTargetProducer implementation.
+ *
+ * @version $Rev$ $Date$
+ *
+ * @param <T> bean type info
+ */
+public class InjectionTargetProducer<T> extends AbstractProducer<T> implements InjectionTarget<T>
+{
+ public InjectionTargetProducer(AbstractInjectionTargetBean<T> bean)
+ {
+ super(bean);
+ }
+
+ @Override
+ public void inject(T instance, CreationalContext<T> ctx)
+ {
+ @SuppressWarnings("unchecked")
+ InjectionTargetBean<T> bean = getBean(InjectionTargetBean.class);
+
+ bean.injectResources(instance, ctx);
+ bean.injectFields(instance, ctx);
+ bean.injectMethods(instance, ctx);
+ }
+
+ @Override
+ public void postConstruct(T instance)
+ {
+ @SuppressWarnings("unchecked")
+ InjectionTargetBean<T> bean = getBean(InjectionTargetBean.class);
+
+ bean.postConstruct(instance);
+ }
+
+ @Override
+ public void preDestroy(T instance)
+ {
+ @SuppressWarnings("unchecked")
+ InjectionTargetBean<T> bean = getBean(InjectionTargetBean.class);
+
+ bean.preDestroy(instance);
+ }
+
+}
\ No newline at end of file
Propchange: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/InjectionTargetProducer.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/InjectionTargetProducer.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/ProducerBeansProducer.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/ProducerBeansProducer.java?rev=791166&view=auto
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/ProducerBeansProducer.java (added)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/ProducerBeansProducer.java Sat Jul 4 19:00:12 2009
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with this
+ * work for additional information regarding copyright ownership. The ASF
+ * licenses this file to You under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law
+ * or agreed to in writing, software distributed under the License is
+ * distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the specific language
+ * governing permissions and limitations under the License.
+ */
+package org.apache.webbeans.portable.creation;
+
+import org.apache.webbeans.component.AbstractProducerBean;
+
+/**
+ * Implementation for producer beans.
+ *
+ * @version $Rev$ $Date$
+ *
+ * @param <T> producer return type info
+ */
+public class ProducerBeansProducer<T> extends AbstractProducer<T>
+{
+ /**
+ * Creats a new producer bean producer.
+ *
+ * @param bean producer bean
+ */
+ public ProducerBeansProducer(AbstractProducerBean<T> bean)
+ {
+ super(bean);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ @SuppressWarnings("unchecked")
+ public void dispose(T instance)
+ {
+ AbstractProducer<T> producer = getBean(AbstractProducer.class);
+ producer.dispose(instance);
+ }
+
+}
\ No newline at end of file
Propchange: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/ProducerBeansProducer.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/creation/ProducerBeansProducer.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/AnnotationUtil.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/AnnotationUtil.java?rev=791166&r1=791165&r2=791166&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/AnnotationUtil.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/AnnotationUtil.java Sat Jul 4 19:00:12 2009
@@ -329,6 +329,37 @@
result = new Annotation[0];
return result;
}
+
+ /**
+ * Gets the method first found parameter annotation with given type.
+ *
+ * @param method method
+ * @param annotation checking annotation
+ * @return annotation
+ */
+ public static <T extends Annotation> T getMethodFirstParameterAnnotation(Method method, Class<T> clazz)
+ {
+ Asserts.assertNotNull(method, "Method argument can not be null");
+ Asserts.assertNotNull(clazz, "Clazz argument can not be null");
+
+ Annotation[][] parameterAnns = method.getParameterAnnotations();
+
+ for (Annotation[] parameters : parameterAnns)
+ {
+ for (Annotation param : parameters)
+ {
+ Class<? extends Annotation> btype = param.annotationType();
+ if (btype.equals(clazz))
+ {
+ return clazz.cast(param);
+ }
+
+ }
+
+ }
+
+ return null;
+ }
/**
* Check given annotation cross ref exist in the any parameter of the given