openwebbeans-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From dblev...@apache.org
Subject svn commit: r1137328 - in /openwebbeans/trunk: webbeans-impl/src/main/java/org/apache/webbeans/component/ webbeans-impl/src/main/java/org/apache/webbeans/config/ webbeans-impl/src/main/java/org/apache/webbeans/context/creational/ webbeans-openejb/src/m...
Date Sun, 19 Jun 2011 10:02:59 GMT
Author: dblevins
Date: Sun Jun 19 10:02:59 2011
New Revision: 1137328

URL: http://svn.apache.org/viewvc?rev=1137328&view=rev
Log:
OWB-573: Invalid checking of Interceptor serialization capabilities for non-Passivation capable
EJBs
OWB-587: Use business interface for producer and disposer methods of Session beans
Some toString, equals and hashcode methods

Modified:
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/DefinitionUtil.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/creational/BeanInstanceBag.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/creational/CreationalContextImpl.java
    openwebbeans/trunk/webbeans-openejb/src/main/java/org/apache/webbeans/ejb/EjbPlugin.java
    openwebbeans/trunk/webbeans-spi/src/main/java/org/apache/webbeans/spi/plugins/OpenWebBeansEjbPlugin.java

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java?rev=1137328&r1=1137327&r2=1137328&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java
(original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java
Sun Jun 19 10:02:59 2011
@@ -610,7 +610,12 @@ public abstract class AbstractOwbBean<T>
      */    
     public String toString()
     {
-        StringBuilder builder = new StringBuilder();        
+        StringBuilder builder = new StringBuilder();
+        if (returnType != null)
+        {
+            final String simpleName = returnType.getSimpleName();
+            builder.append(simpleName).append(", ");
+        }
         builder.append("Name:").append(getName()).append(", WebBeans Type:").append(getWebBeansType());
         builder.append(", API Types:[");
         
@@ -701,5 +706,176 @@ public abstract class AbstractOwbBean<T>
         }
     }
 
-    
+    @Override
+    public int hashCode()
+    {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((apiTypes == null) ? 0 : apiTypes.hashCode());
+        result = prime * result + (enabled ? 1231 : 1237);
+        result = prime * result + (isAlternative() ? 1289 : 1273);
+        result = prime * result + ((implQualifiers == null) ? 0 : implQualifiers.hashCode());
+        result = prime * result + ((implScopeType == null) ? 0 : implScopeType.hashCode());
+        result = prime * result + ((injectionPoints == null) ? 0 : injectionPoints.hashCode());
+        result = prime * result + ((name == null) ? 0 : name.hashCode());
+        result = prime * result + (nullable ? 1231 : 1237);
+        result = prime * result + ((returnType == null) ? 0 : returnType.hashCode());
+        result = prime * result + ((scopeClass == null) ? 0 : scopeClass.hashCode());
+        result = prime * result + (serializable ? 1231 : 1237);
+        result = prime * result + (specializedBean ? 1231 : 1237);
+        result = prime * result + ((stereoTypeClasses == null) ? 0 : stereoTypeClasses.hashCode());
+        result = prime * result + ((stereoTypes == null) ? 0 : stereoTypes.hashCode());
+        result = prime * result + ((webBeansType == null) ? 0 : webBeansType.hashCode());
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object obj)
+    {
+        if (this == obj)
+        {
+            return true;
+        }
+        if (obj == null)
+        {
+            return false;
+        }
+        if (getClass() != obj.getClass())
+        {
+            return false;
+        }
+        AbstractOwbBean other = (AbstractOwbBean) obj;
+        if (apiTypes == null)
+        {
+            if (other.apiTypes != null)
+            {
+                return false;
+            }
+        }
+        else if (!apiTypes.equals(other.apiTypes))
+        {
+            return false;
+        }
+        if (enabled != other.enabled)
+        {
+            return false;
+        }
+        if (isAlternative() != other.isAlternative())
+        {
+            return false;
+        }
+        if (implQualifiers == null)
+        {
+            if (other.implQualifiers != null)
+            {
+                return false;
+            }
+        }
+        else if (!implQualifiers.equals(other.implQualifiers))
+        {
+            return false;
+        }
+        if (implScopeType == null)
+        {
+            if (other.implScopeType != null)
+            {
+                return false;
+            }
+        }
+        else if (!implScopeType.equals(other.implScopeType))
+        {
+            return false;
+        }
+        if (injectionPoints == null)
+        {
+            if (other.injectionPoints != null)
+            {
+                return false;
+            }
+        }
+        else if (!injectionPoints.equals(other.injectionPoints))
+        {
+            return false;
+        }
+        if (name == null)
+        {
+            if (other.name != null)
+            {
+                return false;
+            }
+        }
+        else if (!name.equals(other.name))
+        {
+            return false;
+        }
+        if (nullable != other.nullable)
+        {
+            return false;
+        }
+        if (returnType == null)
+        {
+            if (other.returnType != null)
+            {
+                return false;
+            }
+        }
+        else if (!returnType.equals(other.returnType))
+        {
+            return false;
+        }
+        if (scopeClass == null)
+        {
+            if (other.scopeClass != null)
+            {
+                return false;
+            }
+        }
+        else if (!scopeClass.equals(other.scopeClass))
+        {
+            return false;
+        }
+        if (serializable != other.serializable)
+        {
+            return false;
+        }
+        if (specializedBean != other.specializedBean)
+        {
+            return false;
+        }
+        if (stereoTypeClasses == null)
+        {
+            if (other.stereoTypeClasses != null)
+            {
+                return false;
+            }
+        }
+        else if (!stereoTypeClasses.equals(other.stereoTypeClasses))
+        {
+            return false;
+        }
+        if (stereoTypes == null)
+        {
+            if (other.stereoTypes != null)
+            {
+                return false;
+            }
+        }
+        else if (!stereoTypes.equals(other.stereoTypes))
+        {
+            return false;
+        }
+        if (webBeansType == null)
+        {
+            if (other.webBeansType != null)
+            {
+                return false;
+            }
+        }
+        else if (!webBeansType.equals(other.webBeansType))
+        {
+            return false;
+        }
+        return true;
+    }
+
 }

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/DefinitionUtil.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/DefinitionUtil.java?rev=1137328&r1=1137327&r2=1137328&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/DefinitionUtil.java
(original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/DefinitionUtil.java
Sun Jun 19 10:02:59 2011
@@ -74,6 +74,7 @@ import org.apache.webbeans.event.Notific
 import org.apache.webbeans.exception.WebBeansConfigurationException;
 import org.apache.webbeans.intercept.InterceptorData;
 import org.apache.webbeans.spi.api.ResourceReference;
+import org.apache.webbeans.spi.plugins.OpenWebBeansEjbPlugin;
 import org.apache.webbeans.util.AnnotationUtil;
 import org.apache.webbeans.util.Asserts;
 import org.apache.webbeans.util.ClassUtil;
@@ -779,6 +780,14 @@ public final class DefinitionUtil
 
             ProducerMethodBean<?> newComponent = createProducerComponent(declaredMethod.getReturnType(),
declaredMethod, component, isSpecializes);
 
+            if (component instanceof EnterpriseBeanMarker)
+            {
+                final OpenWebBeansEjbPlugin ejbPlugin = webBeansContext.getPluginLoader().getEjbPlugin();
+
+                Method method = ejbPlugin.resolveViewMethod(component, declaredMethod);
+                newComponent.setCreatorMethod(method);
+            }
+
             if (newComponent != null)
             {
                 producerComponents.add(newComponent);
@@ -939,17 +948,25 @@ public final class DefinitionUtil
                 }
             }
 
+            addMethodInjectionPointMetaData(component, declaredMethod);
+
+            if (component instanceof EnterpriseBeanMarker)
+            {
+                final OpenWebBeansEjbPlugin ejbPlugin = webBeansContext.getPluginLoader().getEjbPlugin();
+                declaredMethod = ejbPlugin.resolveViewMethod(component, declaredMethod);
+            }
+
+            pr.setDisposalMethod(declaredMethod);
+
             Method producerMethod = pr.getCreatorMethod();
+
             //Disposer methods and producer methods must be in the same class
             if(!producerMethod.getDeclaringClass().getName().equals(declaredMethod.getDeclaringClass().getName()))
             {
                 throw new WebBeansConfigurationException("Producer method component of the
disposal method : " + declaredMethod.getName() + " in class : "
                                                          + clazz.getName() + " must be in
the same class!");
             }
-            
-            pr.setDisposalMethod(declaredMethod);
 
-            addMethodInjectionPointMetaData(component, declaredMethod);
 
         }
     }
@@ -1185,15 +1202,22 @@ public final class DefinitionUtil
             //Check for injected fields in EJB @Interceptors
             List<InterceptorData> stack = new ArrayList<InterceptorData>();
             bean.getWebBeansContext().getEJBInterceptorConfig().configure(bean.getBeanClass(),
stack);
-            for(InterceptorData data : stack)
+
+            final OpenWebBeansEjbPlugin ejbPlugin = bean.getWebBeansContext().getPluginLoader().getEjbPlugin();
+            final boolean isStateful = ejbPlugin.isStatefulBean(bean.getBeanClass());
+
+            if (isStateful)
             {
-                if(data.isDefinedInInterceptorClass())
+                for (InterceptorData data : stack)
                 {
-                    AnnotationManager annotationManager = WebBeansContext.getInstance().getAnnotationManager();
-                    if(!annotationManager.checkInjectionPointForInterceptorPassivation(data.getInterceptorClass()))
+                    if (data.isDefinedInInterceptorClass())
                     {
-                        throw new WebBeansConfigurationException("Enterprise bean : " + bean.toString()
+
-                                                                 " interceptors must have
serializable injection points");
+                        AnnotationManager annotationManager = bean.getWebBeansContext().getAnnotationManager();
+                        if (!annotationManager.checkInjectionPointForInterceptorPassivation(data.getInterceptorClass()))
+                        {
+                            throw new WebBeansConfigurationException("Enterprise bean : "
+ bean.toString() +
+                                                                         " interceptors must
have serializable injection points");
+                        }
                     }
                 }
             }

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/creational/BeanInstanceBag.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/creational/BeanInstanceBag.java?rev=1137328&r1=1137327&r2=1137328&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/creational/BeanInstanceBag.java
(original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/creational/BeanInstanceBag.java
Sun Jun 19 10:02:59 2011
@@ -88,4 +88,10 @@ public class BeanInstanceBag<T> implemen
         
         return beanInstance; 
     }
+
+    @Override
+    public String toString()
+    {
+        return "Bag:" + beanCreationalContext + ", Instance: " + beanInstance;
+    }
 }

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/creational/CreationalContextImpl.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/creational/CreationalContextImpl.java?rev=1137328&r1=1137327&r2=1137328&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/creational/CreationalContextImpl.java
(original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/creational/CreationalContextImpl.java
Sun Jun 19 10:02:59 2011
@@ -25,6 +25,7 @@ import java.util.concurrent.ConcurrentMa
 
 import javax.enterprise.context.spi.Contextual;
 import javax.enterprise.context.spi.CreationalContext;
+import javax.enterprise.inject.spi.Bean;
 import javax.enterprise.inject.spi.Decorator;
 import javax.enterprise.inject.spi.Interceptor;
 
@@ -387,4 +388,26 @@ public class CreationalContextImpl<T> im
         ejbInterceptors = (ConcurrentMap<Object, List<EjbInterceptorContext>>)
s.readObject();
     }
 
+//    private static volatile int ids = 0;
+//    private final int id = ids++;
+
+    @Override
+    public String toString()
+    {
+
+        final String name;
+
+        if (contextual instanceof Bean)
+        {
+            Bean bean = (Bean) contextual;
+            name = bean.getBeanClass().getSimpleName();
+        }
+        else
+        {
+            name = "unknown";
+        }
+
+        return String.format("CreationalContext{name=%s}", name);
+//        return String.format("CreationalContext{id=%s, name=%s}", id, name);
+    }
 }

Modified: openwebbeans/trunk/webbeans-openejb/src/main/java/org/apache/webbeans/ejb/EjbPlugin.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-openejb/src/main/java/org/apache/webbeans/ejb/EjbPlugin.java?rev=1137328&r1=1137327&r2=1137328&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-openejb/src/main/java/org/apache/webbeans/ejb/EjbPlugin.java
(original)
+++ openwebbeans/trunk/webbeans-openejb/src/main/java/org/apache/webbeans/ejb/EjbPlugin.java
Sun Jun 19 10:02:59 2011
@@ -641,4 +641,9 @@ public class EjbPlugin extends AbstractO
         return atNewEjb;
     }
 
+    public Method resolveViewMethod(javax.enterprise.inject.spi.Bean<?> bean, java.lang.reflect.Method
method)
+    {
+        return method;
+    }
+
 }

Modified: openwebbeans/trunk/webbeans-spi/src/main/java/org/apache/webbeans/spi/plugins/OpenWebBeansEjbPlugin.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-spi/src/main/java/org/apache/webbeans/spi/plugins/OpenWebBeansEjbPlugin.java?rev=1137328&r1=1137327&r2=1137328&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-spi/src/main/java/org/apache/webbeans/spi/plugins/OpenWebBeansEjbPlugin.java
(original)
+++ openwebbeans/trunk/webbeans-spi/src/main/java/org/apache/webbeans/spi/plugins/OpenWebBeansEjbPlugin.java
Sun Jun 19 10:02:59 2011
@@ -21,6 +21,7 @@ package org.apache.webbeans.spi.plugins;
 import javax.enterprise.context.spi.CreationalContext;
 import javax.enterprise.inject.spi.Bean;
 import javax.enterprise.inject.spi.ProcessAnnotatedType;
+import java.lang.reflect.Method;
 
 /**
  * Session bean related plugin contract.
@@ -77,4 +78,6 @@ public interface OpenWebBeansEjbPlugin e
      * @return session bean proxy
      */
     public Object getSessionBeanProxy(Bean<?> bean, Class<?> iface, CreationalContext<?>
creationalContext);
+
+    Method resolveViewMethod(Bean<?> component, Method declaredMethod);
 }
\ No newline at end of file



Mime
View raw message