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