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/01/26 23:21:45 UTC

svn commit: r903457 - in /openwebbeans/trunk/webbeans-impl/src: main/java/org/apache/webbeans/container/ main/java/org/apache/webbeans/util/ test/java/org/apache/webbeans/test/component/ test/java/org/apache/webbeans/test/component/decorator/clean/ tes...

Author: gerdogdu
Date: Tue Jan 26 22:21:44 2010
New Revision: 903457

URL: http://svn.apache.org/viewvc?rev=903457&view=rev
Log:
[OWB-253] Caching of Bean Proxies

Modified:
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/component/CheckWithCheckPayment.java
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/component/decorator/clean/LargeTransactionDecorator.java
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/component/decorator/clean/ServiceDecorator.java
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/component/service/Typed2.java
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/decorator/DecoratorTest1.java
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/inject/CurrentInjectedComponentTest.java
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/inject/TypedInjectedComponentTest.java
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/intercept/PostConstructComponentTest.java
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/intercept/PreDestroyComponentTest.java
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/intercept/webbeans/CallingBusinessInConstructorTest.java

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java?rev=903457&r1=903456&r2=903457&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java Tue Jan 26 22:21:44 2010
@@ -705,15 +705,21 @@
             }            
             //Create Managed Bean Proxy
             else
-            {                
-                if (this.proxyMap.containsKey(bean))
+            {   
+                boolean proxyCacheable = WebBeansUtil.isProxyForScopeCachable(bean.getScope());
+                
+                if (proxyCacheable && this.proxyMap.containsKey(bean))
                 {
                     instance = this.proxyMap.get(bean);
                 }
                 else
                 {
                     instance = JavassistProxyFactory.createNormalScopedBeanProxy(bean,creationalContext);
-                    this.proxyMap.put(bean, instance);     
+                    
+                    if(proxyCacheable)
+                    {
+                        this.proxyMap.put(bean, instance);   
+                    }     
                     
                     //push this proxy instance into creational context
                     if(creationalContext instanceof CreationalContextImpl)

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=903457&r1=903456&r2=903457&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 Jan 26 22:21:44 2010
@@ -2274,4 +2274,15 @@
         return false;
 
     }    
+    
+    public static boolean isProxyForScopeCachable(Class<? extends Annotation> scopeType)
+    {
+        Asserts.assertNotNull(scopeType, "Scope type is null");
+        if(scopeType.equals(ApplicationScoped.class))
+        {
+            return true;
+        }
+        
+        return false;
+    }
 }
\ No newline at end of file

Modified: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/component/CheckWithCheckPayment.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/component/CheckWithCheckPayment.java?rev=903457&r1=903456&r2=903457&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/component/CheckWithCheckPayment.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/component/CheckWithCheckPayment.java Tue Jan 26 22:21:44 2010
@@ -23,10 +23,20 @@
 @Named
 public class CheckWithCheckPayment implements IPayment
 {
+    private boolean value = false;
 
     public String pay()
     {
         return "CHECK";
     }
 
+    public boolean getValue()
+    {
+        return this.value;
+    }
+    
+    public void setValue(boolean value)
+    {
+        this.value = value;
+    }
 }

Modified: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/component/decorator/clean/LargeTransactionDecorator.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/component/decorator/clean/LargeTransactionDecorator.java?rev=903457&r1=903456&r2=903457&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/component/decorator/clean/LargeTransactionDecorator.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/component/decorator/clean/LargeTransactionDecorator.java Tue Jan 26 22:21:44 2010
@@ -20,8 +20,7 @@
 import javax.enterprise.context.RequestScoped;
 
 @Decorator
-@RequestScoped
-public abstract class LargeTransactionDecorator implements Account
+public class LargeTransactionDecorator implements Account
 {
     @Delegate Account account;
 
@@ -55,4 +54,11 @@
         return withDrawAmount;
     }
 
+    @Override
+    public BigDecimal getBalance()
+    {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
 }

Modified: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/component/decorator/clean/ServiceDecorator.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/component/decorator/clean/ServiceDecorator.java?rev=903457&r1=903456&r2=903457&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/component/decorator/clean/ServiceDecorator.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/component/decorator/clean/ServiceDecorator.java Tue Jan 26 22:21:44 2010
@@ -23,8 +23,7 @@
 
 @Decorator
 @Named
-@RequestScoped
-public abstract class ServiceDecorator implements IService
+public  class ServiceDecorator implements IService
 {
     @Delegate @Binding1 IService delegate;
 

Modified: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/component/service/Typed2.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/component/service/Typed2.java?rev=903457&r1=903456&r2=903457&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/component/service/Typed2.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/component/service/Typed2.java Tue Jan 26 22:21:44 2010
@@ -25,5 +25,23 @@
 @Binding2
 public class Typed2 implements ITyped2<String, Object>, Serializable
 {
+    private boolean value = false;
 
+    /**
+     * @return the value
+     */
+    public boolean isValue()
+    {
+        return value;
+    }
+
+    /**
+     * @param value the value to set
+     */
+    public void setValue(boolean value)
+    {
+        this.value = value;
+    }
+    
+    
 }

Modified: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/decorator/DecoratorTest1.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/decorator/DecoratorTest1.java?rev=903457&r1=903456&r2=903457&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/decorator/DecoratorTest1.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/decorator/DecoratorTest1.java Tue Jan 26 22:21:44 2010
@@ -83,7 +83,7 @@
         ServiceImpl1 serviceImpl = getManager().getInstance(component);
         String s = serviceImpl.service();
 
-        Assert.assertEquals("ServiceImpl1", s);
+        Assert.assertEquals("ServiceDecorator", s);
 
         Set<Type> apiTyeps = new HashSet<Type>();
         apiTyeps.add(IService.class);
@@ -91,7 +91,7 @@
         List<Decorator<?>> decs = getManager().resolveDecorators(apiTyeps, new Annotation[] { new Binding1Literal() });
 
         ServiceDecorator dec = (ServiceDecorator) getManager().getInstance(decs.get(0));
-        Assert.assertEquals("ServiceImpl1", dec.getDelegateAttr());
+        Assert.assertEquals(null, dec.getDelegateAttr());
 
     }
 
@@ -117,8 +117,8 @@
         List<Decorator<?>> decs = getManager().resolveDecorators(apiTyeps, new Annotation[] { new DefaultLiteral() });
 
         LargeTransactionDecorator dec = (LargeTransactionDecorator) getManager().getInstance(decs.get(0));
-        Assert.assertEquals(new BigDecimal(1500), dec.getDepositeAmount());
-        Assert.assertEquals(new BigDecimal(3000), dec.getWithDrawAmount());
+        Assert.assertEquals(null, dec.getDepositeAmount());
+        Assert.assertEquals(null, dec.getWithDrawAmount());
 
     }
 

Modified: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/inject/CurrentInjectedComponentTest.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/inject/CurrentInjectedComponentTest.java?rev=903457&r1=903456&r2=903457&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/inject/CurrentInjectedComponentTest.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/inject/CurrentInjectedComponentTest.java Tue Jan 26 22:21:44 2010
@@ -72,7 +72,7 @@
 
         Object obj2 = getManager().getInstance(comps.get(1));
 
-        Assert.assertSame(i.getInstance(), obj2);
+        Assert.assertSame(i.getInstance().getTyped2(), ((CurrentBindingComponent) obj2).getTyped2());
 
         CurrentBindingComponent bc = (CurrentBindingComponent) obj2;
         ITyped2 typed2 = bc.getTyped2();

Modified: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/inject/TypedInjectedComponentTest.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/inject/TypedInjectedComponentTest.java?rev=903457&r1=903456&r2=903457&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/inject/TypedInjectedComponentTest.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/inject/TypedInjectedComponentTest.java Tue Jan 26 22:21:44 2010
@@ -69,12 +69,15 @@
         Assert.assertTrue(object instanceof TypedInjection);
 
         TypedInjection i = (TypedInjection) object;
+        Typed2 typed2 = (Typed2)i.getV();
+        typed2.setValue(true);
+
 
         Assert.assertTrue(i.getV() instanceof ITyped2);
 
-        Object obj2 = getManager().getInstance(comps.get(0));
+        Typed2 obj2 = (Typed2)getManager().getInstance(comps.get(0));
 
-        Assert.assertSame(i.getV(), obj2);
+        Assert.assertSame(typed2.isValue(), obj2.isValue());
 
         ContextFactory.destroySessionContext(session);
     }
@@ -100,12 +103,14 @@
         Assert.assertTrue(object instanceof TypedInjectionWithoutArguments);
 
         TypedInjectionWithoutArguments i = (TypedInjectionWithoutArguments) object;
+        Typed2 typed2 = (Typed2)i.getV();
+        typed2.setValue(true);
 
         Assert.assertTrue(i.getV() instanceof ITyped2);
 
-        Object obj2 = getManager().getInstance(comps.get(0));
+        Typed2 obj2 = (Typed2)getManager().getInstance(comps.get(0));
 
-        Assert.assertSame(i.getV(), obj2);
+        Assert.assertSame(typed2.isValue(), obj2.isValue());
 
         ContextFactory.destroySessionContext(session);
     }

Modified: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/intercept/PostConstructComponentTest.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/intercept/PostConstructComponentTest.java?rev=903457&r1=903456&r2=903457&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/intercept/PostConstructComponentTest.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/intercept/PostConstructComponentTest.java Tue Jan 26 22:21:44 2010
@@ -58,7 +58,7 @@
 
         Assert.assertEquals(2, comps.size());
 
-        Object object = getManager().getInstance(comps.get(0));
+        CheckWithCheckPayment object =(CheckWithCheckPayment) getManager().getInstance(comps.get(0));
         Object object2 = getManager().getInstance(comps.get(1));
 
         Assert.assertTrue(object instanceof CheckWithCheckPayment);
@@ -66,7 +66,7 @@
 
         PostConstructComponent pcc = (PostConstructComponent) object2;
 
-        pcc.getP();
+        CheckWithCheckPayment chk = (CheckWithCheckPayment) pcc.getP();
 
         ManagedBean<PostConstructComponent> s = (ManagedBean<PostConstructComponent>) comps.get(1);
         List<InterceptorData> stack = s.getInterceptorStack();
@@ -74,7 +74,7 @@
         Assert.assertEquals(1, stack.size());
 
         Assert.assertNotNull(pcc.getP());
-        Assert.assertSame(object, pcc.getP());
+        Assert.assertSame(object.getValue(), chk.getValue());
 
         ContextFactory.destroyRequestContext(null);
     }

Modified: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/intercept/PreDestroyComponentTest.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/intercept/PreDestroyComponentTest.java?rev=903457&r1=903456&r2=903457&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/intercept/PreDestroyComponentTest.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/intercept/PreDestroyComponentTest.java Tue Jan 26 22:21:44 2010
@@ -60,7 +60,7 @@
 
         Assert.assertEquals(2, comps.size());
 
-        Object object = getManager().getInstance(comps.get(0));
+        CheckWithCheckPayment object = (CheckWithCheckPayment)getManager().getInstance(comps.get(0));
         PreDestroyComponent object2 = (PreDestroyComponent)getManager().getInstance(comps.get(1));
         
         object2.getP();
@@ -69,6 +69,8 @@
         Assert.assertTrue(object2 instanceof PreDestroyComponent);
 
         PreDestroyComponent pcc = (PreDestroyComponent) object2;
+        CheckWithCheckPayment payment = (CheckWithCheckPayment) pcc.getP();
+        payment.setValue(true);
 
         ManagedBean<PreDestroyComponent> s = (ManagedBean<PreDestroyComponent>) comps.get(1);
         List<InterceptorData> stack = s.getInterceptorStack();
@@ -76,7 +78,7 @@
         Assert.assertEquals(2, stack.size());
 
         Assert.assertNotNull(pcc.getP());
-        Assert.assertSame(object, pcc.getP());
+        Assert.assertSame(object.getValue(), payment.getValue());
 
     }
 

Modified: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/intercept/webbeans/CallingBusinessInConstructorTest.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/intercept/webbeans/CallingBusinessInConstructorTest.java?rev=903457&r1=903456&r2=903457&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/intercept/webbeans/CallingBusinessInConstructorTest.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/intercept/webbeans/CallingBusinessInConstructorTest.java Tue Jan 26 22:21:44 2010
@@ -78,7 +78,7 @@
         
         Assert.assertNotNull(instance);
         
-        Assert.assertTrue(!SecureInterceptor.CALL);
+        Assert.assertTrue(SecureInterceptor.CALL);
         
         ContextFactory.destroyRequestContext(null);