You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by rm...@apache.org on 2013/04/29 19:13:56 UTC
svn commit: r1477205 - in
/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans:
component/ResourceBean.java component/ResourceProvider.java
portable/ProviderBasedProxyProducer.java
portable/ProviderBasedProxyProducerFactory.java
Author: rmannibucau
Date: Mon Apr 29 17:13:20 2013
New Revision: 1477205
URL: http://svn.apache.org/r1477205
Log:
OWB-850 @Dependent on a produce -> no proxy should be created
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ResourceBean.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ResourceProvider.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/ProviderBasedProxyProducer.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/ProviderBasedProxyProducerFactory.java
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ResourceBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ResourceBean.java?rev=1477205&r1=1477204&r2=1477205&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ResourceBean.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ResourceBean.java Mon Apr 29 17:13:20 2013
@@ -24,6 +24,8 @@ import org.apache.webbeans.portable.Prov
import org.apache.webbeans.spi.ResourceInjectionService;
import org.apache.webbeans.spi.api.ResourceReference;
+import javax.enterprise.context.Dependent;
+
public class ResourceBean<X, T extends Annotation> extends ProducerFieldBean<X>
{
@@ -37,7 +39,8 @@ public class ResourceBean<X, T extends A
super(ownerComponent,
beanAttributes,
beanClass,
- new ProviderBasedProxyProducerFactory<X>(new ResourceProvider<X>(resourceReference, ownerComponent.getWebBeansContext()),
+ new ProviderBasedProxyProducerFactory<X>(Dependent.class.equals(beanAttributes.getScope()),
+ new ResourceProvider<X>(resourceReference, ownerComponent.getWebBeansContext()),
beanClass,
ownerComponent.getWebBeansContext()));
this.resourceReference = resourceReference;
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ResourceProvider.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ResourceProvider.java?rev=1477205&r1=1477204&r2=1477205&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ResourceProvider.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ResourceProvider.java Mon Apr 29 17:13:20 2013
@@ -18,13 +18,12 @@
*/
package org.apache.webbeans.component;
-import javax.inject.Provider;
-
import org.apache.webbeans.config.WebBeansContext;
import org.apache.webbeans.exception.WebBeansException;
import org.apache.webbeans.spi.ResourceInjectionService;
import org.apache.webbeans.spi.api.ResourceReference;
+import javax.inject.Provider;
import java.io.ObjectStreamException;
import java.io.Serializable;
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/ProviderBasedProxyProducer.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/ProviderBasedProxyProducer.java?rev=1477205&r1=1477204&r2=1477205&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/ProviderBasedProxyProducer.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/ProviderBasedProxyProducer.java Mon Apr 29 17:13:20 2013
@@ -32,12 +32,14 @@ public class ProviderBasedProxyProducer<
private Class<T> returnType;
private Provider<T> provider;
private T proxyInstance;
+ private boolean proxy;
- public ProviderBasedProxyProducer(WebBeansContext webBeansContext, Class<T> returnType, Provider<T> provider)
+ public ProviderBasedProxyProducer(WebBeansContext webBeansContext, Class<T> returnType, Provider<T> provider, boolean proxy)
{
this.webBeansContext = webBeansContext;
this.returnType = returnType;
this.provider = provider;
+ this.proxy = proxy;
}
@Override
@@ -45,14 +47,21 @@ public class ProviderBasedProxyProducer<
{
if (proxyInstance == null)
{
- NormalScopeProxyFactory proxyFactory = webBeansContext.getNormalScopeProxyFactory();
- ClassLoader loader = returnType.getClassLoader();
- if (loader == null)
+ if (proxy)
{
- loader = WebBeansUtil.getCurrentClassLoader();
+ NormalScopeProxyFactory proxyFactory = webBeansContext.getNormalScopeProxyFactory();
+ ClassLoader loader = returnType.getClassLoader();
+ if (loader == null)
+ {
+ loader = WebBeansUtil.getCurrentClassLoader();
+ }
+ Class<T> proxyClass = proxyFactory.createProxyClass(loader, returnType);
+ proxyInstance = proxyFactory.createProxyInstance(proxyClass, provider);
+ }
+ else
+ {
+ proxyInstance = provider.get();
}
- Class<T> proxyClass = proxyFactory.createProxyClass(loader, returnType);
- proxyInstance = proxyFactory.createProxyInstance(proxyClass, provider);
}
return proxyInstance;
}
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/ProviderBasedProxyProducerFactory.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/ProviderBasedProxyProducerFactory.java?rev=1477205&r1=1477204&r2=1477205&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/ProviderBasedProxyProducerFactory.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/ProviderBasedProxyProducerFactory.java Mon Apr 29 17:13:20 2013
@@ -32,8 +32,9 @@ public class ProviderBasedProxyProducerF
private Provider<?> provider;
private Class<?> providerType;
private WebBeansContext webBeansContext;
+ private boolean proxy;
- public ProviderBasedProxyProducerFactory(Provider<?> provider, Class<?> providerType, WebBeansContext context)
+ public ProviderBasedProxyProducerFactory(boolean proxy, Provider<?> provider, Class<?> providerType, WebBeansContext context)
{
Asserts.assertNotNull(provider);
Asserts.assertNotNull(providerType);
@@ -41,11 +42,12 @@ public class ProviderBasedProxyProducerF
this.provider = provider;
this.providerType = providerType;
this.webBeansContext = context;
+ this.proxy = proxy;
}
@Override
public <T> Producer<T> createProducer(Bean<T> bean)
{
- return new ProviderBasedProxyProducer<T>(webBeansContext, (Class<T>)providerType, (Provider<T>)provider);
+ return new ProviderBasedProxyProducer<T>(webBeansContext, (Class<T>)providerType, (Provider<T>)provider, proxy);
}
}