Author: bergmark
Date: Mon Sep 13 19:06:00 2010
New Revision: 996645
URL: http://svn.apache.org/viewvc?rev=996645&view=rev
Log:
[OWB-445] Remove usage of setHandler on the ProxyFactory in the
AbstractDecorator case.
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ManagedBean.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/proxy/JavassistProxyFactory.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansAnnotatedTypeUtil.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ManagedBean.java
URL:
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ManagedBean.java?rev=996645&r1=996644&r2=996645&view=diff
==============================================================================
---
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ManagedBean.java
(original)
+++
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ManagedBean.java
Mon Sep 13 19:06:00 2010
@@ -21,9 +21,12 @@ package org.apache.webbeans.component;
import java.io.Serializable;
import java.lang.reflect.Constructor;
+import javassist.util.proxy.ProxyObject;
+
import javax.enterprise.context.spi.CreationalContext;
import javax.enterprise.inject.spi.Decorator;
+import org.apache.webbeans.decorator.AbstractDecoratorMethodHandler;
import org.apache.webbeans.inject.InjectableConstructor;
import org.apache.webbeans.intercept.InterceptorData;
@@ -36,6 +39,8 @@ public class ManagedBean<T> extends Abst
{
/** Constructor of the web bean component */
private Constructor<T> constructor;
+
+ boolean isAbstractDecorator;
public ManagedBean(Class<T> returnType)
{
@@ -67,6 +72,12 @@ public class ManagedBean<T> extends Abst
T instance = ic.doInjection();
+ //If this is an abstract Decorator, we need to set the handler on the
Proxy instance
+ if(isAbstractDecorator)
+ {
+ ((ProxyObject)instance).setHandler(new
AbstractDecoratorMethodHandler());
+ }
+
return instance;
}
@@ -120,4 +131,9 @@ public class ManagedBean<T> extends Abst
return false;
}
+
+ public void setIsAbstractDecorator(boolean flag)
+ {
+ isAbstractDecorator = flag;
+ }
}
\ No newline at end of file
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/proxy/JavassistProxyFactory.java
URL:
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/proxy/JavassistProxyFactory.java?rev=996645&r1=996644&r2=996645&view=diff
==============================================================================
---
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/proxy/JavassistProxyFactory.java
(original)
+++
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/proxy/JavassistProxyFactory.java
Mon Sep 13 19:06:00 2010
@@ -42,7 +42,6 @@ import org.apache.webbeans.component.Inj
import org.apache.webbeans.component.OwbBean;
import org.apache.webbeans.config.WebBeansFinder;
import org.apache.webbeans.context.creational.CreationalContextImpl;
-import org.apache.webbeans.decorator.AbstractDecoratorMethodHandler;
import org.apache.webbeans.decorator.WebBeansDecorator;
import org.apache.webbeans.intercept.ApplicationScopedBeanIntereptorHandler;
import org.apache.webbeans.intercept.DependentScopedBeanInterceptorHandler;
@@ -147,10 +146,6 @@ public final class JavassistProxyFactory
try
{
ProxyFactory fact = createProxyFactory(bean);
- AbstractDecoratorMethodHandler handler = new
AbstractDecoratorMethodHandler();
-
- //X TODO we MUST NOT set the handler here! This causes mem leaks!
- fact.setHandler(handler);
clazz = SecurityUtil.doPrivilegedCreateClass(fact);
}
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansAnnotatedTypeUtil.java
URL:
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansAnnotatedTypeUtil.java?rev=996645&r1=996644&r2=996645&view=diff
==============================================================================
---
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansAnnotatedTypeUtil.java
(original)
+++
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansAnnotatedTypeUtil.java
Mon Sep 13 19:06:00 2010
@@ -770,6 +770,7 @@ public final class WebBeansAnnotatedType
Class clazz =
JavassistProxyFactory.getInstance().createAbstractDecoratorProxyClass(bean);
bean.setConstructor(WebBeansUtil.defineConstructor(clazz));
+ bean.setIsAbstractDecorator(true);
return bean;
}
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=996645&r1=996644&r2=996645&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
Mon Sep 13 19:06:00 2010
@@ -3004,6 +3004,7 @@ public final class WebBeansUtil
Class clazz =
JavassistProxyFactory.getInstance().createAbstractDecoratorProxyClass(bean);
bean.setConstructor(WebBeansUtil.defineConstructor(clazz));
+ bean.setIsAbstractDecorator(true);
return bean;
}