Author: bergmark
Date: Tue Jun 14 23:45:55 2011
New Revision: 1135853

URL: http://svn.apache.org/viewvc?rev=1135853&view=rev
Log:
[OWB-574] Fix NewBean for EJB's by allowing OpenWebBeansEjbPlugin to add a 
NewBean implementing bean during defineSessionBean

Added:
    
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/NewManagedBean.java
      - copied, changed from r1135819, 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/NewBean.java
Modified:
    
openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/util/EjbUtility.java
    
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/NewBean.java
    
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java

Modified: 
openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/util/EjbUtility.java
URL: 
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/util/EjbUtility.java?rev=1135853&r1=1135852&r2=1135853&view=diff
==============================================================================
--- 
openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/util/EjbUtility.java
 (original)
+++ 
openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/util/EjbUtility.java
 Tue Jun 14 23:45:55 2011
@@ -170,14 +170,8 @@ public final class EjbUtility
             "There are errors that are added by ProcessObserverMethod event 
observers for observer methods. Look at logs for further details");
 
         manager.addBean(ejbBean);
-        try
-        {
-            manager.addBean(WebBeansUtil.createNewBean(ejbBean));
-        }
-        catch (DuplicateDefinitionException ignore)
-        {
-        }
         
+        // Let the plugin handle adding the new bean instance as it knows more 
about its EJB Bean
         
         manager.getBeans().addAll(producerMethodBeans);
         ejbBeanCreator.defineDisposalMethods();

Modified: 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/NewBean.java
URL: 
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/NewBean.java?rev=1135853&r1=1135852&r2=1135853&view=diff
==============================================================================
--- 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/NewBean.java
 (original)
+++ 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/NewBean.java
 Tue Jun 14 23:45:55 2011
@@ -18,55 +18,10 @@
  */
 package org.apache.webbeans.component;
 
-import javax.enterprise.context.spi.CreationalContext;
-
-import org.apache.webbeans.config.WebBeansContext;
-
 /**
- * Component definition with {@link javax.enterprise.inject.New} binding 
annotation.
- * 
- * <p>
- * It is defined as concrete java class component.
- * </p>
- * 
+ * Marker interface for @New based beans
  */
-public class NewBean<T> extends ManagedBean<T>
+public interface NewBean<T> 
 {
-    private WebBeansType definedType;
-
-    public NewBean(Class<T> returnType, WebBeansType definedType, 
WebBeansContext webBeansContext)
-    {
-        super(returnType, webBeansContext);
-        this.definedType = definedType;        
-    }
-
-    @Override
-    protected T createInstance(CreationalContext<T> creationalContext)
-    {
-        return super.createInstance(creationalContext);
-    }
-
-    @Override
-    protected void destroyInstance(T instance, CreationalContext<T> 
creationalContext)
-    {
-        super.destroyInstance(instance, creationalContext);
-    }
-
-    /**
-     * @return the definedType
-     */
-    public WebBeansType getDefinedType()
-    {
-        return definedType;
-    }
-
-    /**
-     * always true for New qualifier
-     */
-    @Override
-    public boolean isDependent()
-    {
-        return true;
-    }
 
-}
+}
\ No newline at end of file

Copied: 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/NewManagedBean.java
 (from r1135819, 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/NewBean.java)
URL: 
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/NewManagedBean.java?p2=openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/NewManagedBean.java&p1=openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/NewBean.java&r1=1135819&r2=1135853&rev=1135853&view=diff
==============================================================================
--- 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/NewBean.java
 (original)
+++ 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/NewManagedBean.java
 Tue Jun 14 23:45:55 2011
@@ -30,11 +30,11 @@ import org.apache.webbeans.config.WebBea
  * </p>
  * 
  */
-public class NewBean<T> extends ManagedBean<T>
+public class NewManagedBean<T> extends ManagedBean<T> implements NewBean
 {
     private WebBeansType definedType;
 
-    public NewBean(Class<T> returnType, WebBeansType definedType, 
WebBeansContext webBeansContext)
+    public NewManagedBean(Class<T> returnType, WebBeansType definedType, 
WebBeansContext webBeansContext)
     {
         super(returnType, webBeansContext);
         this.definedType = definedType;        

Modified: 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java
URL: 
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java?rev=1135853&r1=1135852&r2=1135853&view=diff
==============================================================================
--- 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java
 (original)
+++ 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java
 Tue Jun 14 23:45:55 2011
@@ -111,6 +111,7 @@ import org.apache.webbeans.component.Inj
 import org.apache.webbeans.component.InstanceBean;
 import org.apache.webbeans.component.ManagedBean;
 import org.apache.webbeans.component.NewBean;
+import org.apache.webbeans.component.NewManagedBean;
 import org.apache.webbeans.component.OwbBean;
 import org.apache.webbeans.component.ProducerFieldBean;
 import org.apache.webbeans.component.ProducerMethodBean;
@@ -571,17 +572,17 @@ public final class WebBeansUtil
      * @param clazz impl. class
      * @return the new component
      */
-    public <T> NewBean<T> createNewComponent(Class<T> clazz, Type apiType)
+    public <T> NewManagedBean<T> createNewComponent(Class<T> clazz, Type 
apiType)
     {
         Asserts.nullCheckForClass(clazz);
 
-        NewBean<T> comp;
+        NewManagedBean<T> comp;
         DefinitionUtil definitionUtil = webBeansContext.getDefinitionUtil();
 
 
         if (webBeansContext.getManagedBeanConfigurator().isManagedBean(clazz))
         {
-            comp = new NewBean<T>(clazz, WebBeansType.MANAGED, 
webBeansContext);
+            comp = new NewManagedBean<T>(clazz, WebBeansType.MANAGED, 
webBeansContext);
             comp.setImplScopeType(new DependentScopeLiteral());
             comp.setConstructor(defineConstructor(clazz));
             definitionUtil.addConstructorInjectionPointMetaData(comp, 
comp.getConstructor());
@@ -591,7 +592,7 @@ public final class WebBeansUtil
         }
         else if (EJBWebBeansConfigurator.isSessionBean(clazz, webBeansContext))
         {
-            comp = new NewBean<T>(clazz, WebBeansType.ENTERPRISE, 
webBeansContext);
+            comp = new NewManagedBean<T>(clazz, WebBeansType.ENTERPRISE, 
webBeansContext);
             comp.setImplScopeType(new DependentScopeLiteral());
         }
         else
@@ -650,13 +651,13 @@ public final class WebBeansUtil
      * @param bean bean instance
      * @return the new bean from given managed bean
      */
-    public static <T> NewBean<T> createNewBean(AbstractInjectionTargetBean<T> 
bean)
+    public static <T> NewManagedBean<T> 
createNewBean(AbstractInjectionTargetBean<T> bean)
     {
         Asserts.assertNotNull(bean, "bean argument can not be null");
 
-        NewBean<T> comp = null;
+        NewManagedBean<T> comp = null;
 
-        comp = new NewBean<T>(bean.getReturnType(), WebBeansType.NEW, 
bean.getWebBeansContext());
+        comp = new NewManagedBean<T>(bean.getReturnType(), WebBeansType.NEW, 
bean.getWebBeansContext());
 
         comp.getTypes().addAll(bean.getTypes());
 


Reply via email to