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 2010/02/07 16:14:52 UTC
svn commit: r907430 - in
/openwebbeans/trunk/webbeans-openejb/src/main/java/org/apache/webbeans/ejb:
component/EjbBean.java component/creation/EjbBeanCreatorImpl.java
util/EjbUtility.java util/EjbValidator.java
Author: gerdogdu
Date: Sun Feb 7 15:14:51 2010
New Revision: 907430
URL: http://svn.apache.org/viewvc?rev=907430&view=rev
Log:
Update while running TCK
Modified:
openwebbeans/trunk/webbeans-openejb/src/main/java/org/apache/webbeans/ejb/component/EjbBean.java
openwebbeans/trunk/webbeans-openejb/src/main/java/org/apache/webbeans/ejb/component/creation/EjbBeanCreatorImpl.java
openwebbeans/trunk/webbeans-openejb/src/main/java/org/apache/webbeans/ejb/util/EjbUtility.java
openwebbeans/trunk/webbeans-openejb/src/main/java/org/apache/webbeans/ejb/util/EjbValidator.java
Modified: openwebbeans/trunk/webbeans-openejb/src/main/java/org/apache/webbeans/ejb/component/EjbBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-openejb/src/main/java/org/apache/webbeans/ejb/component/EjbBean.java?rev=907430&r1=907429&r2=907430&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-openejb/src/main/java/org/apache/webbeans/ejb/component/EjbBean.java (original)
+++ openwebbeans/trunk/webbeans-openejb/src/main/java/org/apache/webbeans/ejb/component/EjbBean.java Sun Feb 7 15:14:51 2010
@@ -59,6 +59,9 @@
public EjbBean(Class<T> ejbClassType)
{
super(WebBeansType.ENTERPRISE,ejbClassType);
+
+ //Setting inherited meta data instance
+ setInheritedMetaData();
}
/**
Modified: openwebbeans/trunk/webbeans-openejb/src/main/java/org/apache/webbeans/ejb/component/creation/EjbBeanCreatorImpl.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-openejb/src/main/java/org/apache/webbeans/ejb/component/creation/EjbBeanCreatorImpl.java?rev=907430&r1=907429&r2=907430&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-openejb/src/main/java/org/apache/webbeans/ejb/component/creation/EjbBeanCreatorImpl.java (original)
+++ openwebbeans/trunk/webbeans-openejb/src/main/java/org/apache/webbeans/ejb/component/creation/EjbBeanCreatorImpl.java Sun Feb 7 15:14:51 2010
@@ -14,7 +14,9 @@
package org.apache.webbeans.ejb.component.creation;
import java.util.List;
+import java.util.Set;
+import javax.enterprise.inject.spi.ObserverMethod;
import javax.enterprise.inject.spi.SessionBeanType;
import org.apache.openejb.DeploymentInfo;
@@ -95,6 +97,20 @@
}
+
+
+ /* (non-Javadoc)
+ * @see org.apache.webbeans.component.creation.AbstractInjectedTargetBeanCreator#defineObserverMethods()
+ */
+ @Override
+ public Set<ObserverMethod<?>> defineObserverMethods()
+ {
+ Set<ObserverMethod<?>> observerMethods = super.defineObserverMethods();
+ EjbValidator.validateObserverMethods(getBean(), observerMethods);
+
+ return observerMethods;
+ }
+
/**
* {@inheritDoc}
*/
Modified: openwebbeans/trunk/webbeans-openejb/src/main/java/org/apache/webbeans/ejb/util/EjbUtility.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-openejb/src/main/java/org/apache/webbeans/ejb/util/EjbUtility.java?rev=907430&r1=907429&r2=907430&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-openejb/src/main/java/org/apache/webbeans/ejb/util/EjbUtility.java (original)
+++ openwebbeans/trunk/webbeans-openejb/src/main/java/org/apache/webbeans/ejb/util/EjbUtility.java Sun Feb 7 15:14:51 2010
@@ -86,7 +86,6 @@
Set<ProducerMethodBean<?>> producerMethodBeans = ejbBeanCreator.defineProducerMethods();
checkProducerMethods(producerMethodBeans, ejbBean);
Set<ProducerFieldBean<?>> producerFieldBeans = ejbBeanCreator.defineProducerFields();
- ejbBeanCreator.defineDisposalMethods();
ejbBeanCreator.defineInjectedFields();
ejbBeanCreator.defineInjectedMethods();
Set<ObserverMethod<?>> observerMethods = ejbBeanCreator.defineObserverMethods();
@@ -167,8 +166,10 @@
ejbBean.setInjectionTarget(ejbBeanCreator);
}
+ BeanManagerImpl.getManager().addBean(WebBeansUtil.createNewBean(ejbBean));
BeanManagerImpl.getManager().addBean(ejbBean);
BeanManagerImpl.getManager().getBeans().addAll(producerMethodBeans);
+ ejbBeanCreator.defineDisposalMethods();
BeanManagerImpl.getManager().getBeans().addAll(producerFieldBeans);
}
Modified: openwebbeans/trunk/webbeans-openejb/src/main/java/org/apache/webbeans/ejb/util/EjbValidator.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-openejb/src/main/java/org/apache/webbeans/ejb/util/EjbValidator.java?rev=907430&r1=907429&r2=907430&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-openejb/src/main/java/org/apache/webbeans/ejb/util/EjbValidator.java (original)
+++ openwebbeans/trunk/webbeans-openejb/src/main/java/org/apache/webbeans/ejb/util/EjbValidator.java Sun Feb 7 15:14:51 2010
@@ -14,15 +14,22 @@
package org.apache.webbeans.ejb.util;
import java.lang.annotation.Annotation;
+import java.lang.reflect.Method;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
import javax.decorator.Decorator;
import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.context.Dependent;
+import javax.enterprise.inject.spi.ObserverMethod;
import javax.enterprise.inject.spi.SessionBeanType;
import javax.interceptor.Interceptor;
import org.apache.webbeans.ejb.EjbConstants;
import org.apache.webbeans.ejb.component.EjbBean;
+import org.apache.webbeans.event.ObserverMethodImpl;
import org.apache.webbeans.exception.WebBeansConfigurationException;
import org.apache.webbeans.util.AnnotationUtil;
import org.apache.webbeans.util.Asserts;
@@ -69,7 +76,7 @@
}
else if (ejbBean.getEjbType().equals(SessionBeanType.SINGLETON))
{
- if (!(ejbBean.getScope().equals(Dependent.class) || ejbBean.getScope().equals(ApplicationScoped.class)))
+ if (!ejbBean.getScope().equals(Dependent.class) && !ejbBean.getScope().equals(ApplicationScoped.class))
{
throw new WebBeansConfigurationException("Singleton Session Bean class : " + ejbBean.getReturnType() + " " + "can not define scope other than @Dependent or @ApplicationScoped");
}
@@ -115,5 +122,40 @@
}
}
}
+
+ public static void validateObserverMethods(EjbBean<?> bean, Set<ObserverMethod<?>> observers)
+ {
+ for(ObserverMethod<?> observer : observers)
+ {
+ ObserverMethodImpl<?> obs = (ObserverMethodImpl<?>)observer;
+ Method method = obs.getObserverMethod();
+ List<?> locals = bean.getDeploymentInfo().getBusinessLocalInterfaces();
+ if(locals != null)
+ {
+ Iterator<?> it = locals.iterator();
+ boolean found = false;
+ while(it.hasNext())
+ {
+ Class<?> clazz = (Class<?>)it.next();
+ List<Method> methods = ClassUtil.getClassMethodsWithTypes(clazz, method.getName(), Arrays.asList(method.getParameterTypes()));
+ if(methods.isEmpty())
+ {
+ continue;
+ }
+ else
+ {
+ found = true;
+ break;
+ }
+ }
+
+ if(!found)
+ {
+ throw new WebBeansConfigurationException("Observer method : " + method.getName() + " in session bean class : " +
+ bean.getBeanClass() + " must be business method");
+ }
+ }
+ }
+ }
}
\ No newline at end of file