Author: struberg
Date: Tue Nov 25 15:44:21 2014
New Revision: 1641639
URL: http://svn.apache.org/r1641639
Log:
OWB-972 OWB-931 implement ApplicationBoundaryService
And also fix the setup of OpenWebBeansConfiguration.
Port over from owb-1.2.x branch.
Added:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/corespi/se/DefaultApplicationBoundaryService.java
- copied unchanged from r1641609,
openwebbeans/branches/owb_1.2.x/webbeans-impl/src/main/java/org/apache/webbeans/corespi/se/DefaultApplicationBoundaryService.java
openwebbeans/trunk/webbeans-spi/src/main/java/org/apache/webbeans/spi/ApplicationBoundaryService.java
- copied unchanged from r1641609,
openwebbeans/branches/owb_1.2.x/webbeans-spi/src/main/java/org/apache/webbeans/spi/ApplicationBoundaryService.java
Modified:
openwebbeans/trunk/ (props changed)
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/OpenWebBeansConfiguration.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/WebBeansContext.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/AbstractDecoratorInjectionTarget.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/AbstractProducer.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/proxy/AbstractProxyFactory.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/proxy/InterceptorDecoratorProxyFactory.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/proxy/NormalScopeProxyFactory.java
openwebbeans/trunk/webbeans-impl/src/main/resources/META-INF/openwebbeans/openwebbeans.properties
Propchange: openwebbeans/trunk/
------------------------------------------------------------------------------
Merged /openwebbeans/branches/owb_1.2.x:r1641609
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/OpenWebBeansConfiguration.java
URL:
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/OpenWebBeansConfiguration.java?rev=1641639&r1=1641638&r2=1641639&view=diff
==============================================================================
---
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/OpenWebBeansConfiguration.java
(original)
+++
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/OpenWebBeansConfiguration.java
Tue Nov 25 15:44:21 2014
@@ -135,6 +135,9 @@ public class OpenWebBeansConfiguration
*/
public OpenWebBeansConfiguration(Properties properties)
{
+ this();
+
+ // and override all settings with the given properties
configProperties.putAll(properties);
}
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/WebBeansContext.java
URL:
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/WebBeansContext.java?rev=1641639&r1=1641638&r2=1641639&view=diff
==============================================================================
---
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/WebBeansContext.java
(original)
+++
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/WebBeansContext.java
Tue Nov 25 15:44:21 2014
@@ -47,6 +47,7 @@ import org.apache.webbeans.proxy.Interce
import org.apache.webbeans.proxy.NormalScopeProxyFactory;
import org.apache.webbeans.service.DefaultLoaderService;
import org.apache.webbeans.spi.BeanArchiveService;
+import org.apache.webbeans.spi.ApplicationBoundaryService;
import org.apache.webbeans.spi.ContextsService;
import org.apache.webbeans.spi.LoaderService;
import org.apache.webbeans.spi.ScannerService;
@@ -54,7 +55,6 @@ import org.apache.webbeans.spi.SecurityS
import org.apache.webbeans.spi.plugins.OpenWebBeansPlugin;
import org.apache.webbeans.util.ClassUtil;
import org.apache.webbeans.util.WebBeansUtil;
-import org.apache.webbeans.xml.DefaultBeanArchiveService;
/**
* This is the central point to manage the whole CDI container
@@ -95,6 +95,8 @@ public class WebBeansContext
private final DeploymentValidationService deploymentValidationService =
new DeploymentValidationService(this);
private ScannerService scannerService;
private ContextsService contextsService;
+ private final ApplicationBoundaryService applicationBoundaryService;
+
public WebBeansContext()
{
@@ -108,7 +110,7 @@ public class WebBeansContext
private WebBeansContext(Map<Class<?>, Object> initialServices,
OpenWebBeansConfiguration openWebBeansConfiguration)
{
- this.openWebBeansConfiguration = openWebBeansConfiguration;
+ this.openWebBeansConfiguration = openWebBeansConfiguration != null ?
openWebBeansConfiguration : new OpenWebBeansConfiguration();
//pluggable service-loader
if (initialServices == null ||
!initialServices.containsKey(LoaderService.class))
@@ -138,13 +140,8 @@ public class WebBeansContext
}
loaderService = getService(LoaderService.class);
securityService = getService(SecurityService.class);
-
+ applicationBoundaryService =
getService(ApplicationBoundaryService.class);
beanArchiveService = getService(BeanArchiveService.class);
- if (beanArchiveService == null)
- {
- // dirty fallback, but needed for being backward compat with old
arquillian versions :(
- beanArchiveService = new DefaultBeanArchiveService();
- }
// Allow the WebBeansContext itself to be looked up
managerMap.put(getClass(), this);
@@ -451,4 +448,9 @@ public class WebBeansContext
{
return deploymentValidationService;
}
+
+ public ApplicationBoundaryService getApplicationBoundaryService()
+ {
+ return applicationBoundaryService;
+ }
}
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/AbstractDecoratorInjectionTarget.java
URL:
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/AbstractDecoratorInjectionTarget.java?rev=1641639&r1=1641638&r2=1641639&view=diff
==============================================================================
---
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/AbstractDecoratorInjectionTarget.java
(original)
+++
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/AbstractDecoratorInjectionTarget.java
Tue Nov 25 15:44:21 2014
@@ -44,7 +44,7 @@ public class AbstractDecoratorInjectionT
{
// create proxy subclass
Class<T> classToProxy = annotatedType.getJavaClass();
- ClassLoader classLoader = classToProxy.getClassLoader();
+ ClassLoader classLoader =
webBeansContext.getApplicationBoundaryService().getBoundaryClassLoader(classToProxy);
if (classLoader == null)
{
classLoader = Thread.currentThread().getContextClassLoader();
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/AbstractProducer.java
URL:
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/AbstractProducer.java?rev=1641639&r1=1641638&r2=1641639&view=diff
==============================================================================
---
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/AbstractProducer.java
(original)
+++
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/AbstractProducer.java
Tue Nov 25 15:44:21 2014
@@ -136,7 +136,7 @@ public abstract class AbstractProducer<T
// we only need to create a proxy class for intercepted or
decorated Beans
InterceptorDecoratorProxyFactory pf =
webBeansContext.getInterceptorDecoratorProxyFactory();
- ClassLoader classLoader =
annotatedType.getJavaClass().getClassLoader();
+ ClassLoader classLoader =
webBeansContext.getApplicationBoundaryService().getBoundaryClassLoader(annotatedType.getJavaClass());
Method[] businessMethods = methodInterceptors.keySet().toArray(new
Method[methodInterceptors.size()]);
Method[] nonInterceptedMethods =
interceptorInfo.getNonInterceptedMethods().toArray(new
Method[interceptorInfo.getNonInterceptedMethods().size()]);
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/proxy/AbstractProxyFactory.java
URL:
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/proxy/AbstractProxyFactory.java?rev=1641639&r1=1641638&r2=1641639&view=diff
==============================================================================
---
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/proxy/AbstractProxyFactory.java
(original)
+++
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/proxy/AbstractProxyFactory.java
Tue Nov 25 15:44:21 2014
@@ -53,7 +53,6 @@ public abstract class AbstractProxyFacto
protected WebBeansContext webBeansContext;
-
/**
* contains the instance of sun.misc.Unsafe.
* We use it for creating the proxy instance without fully
@@ -77,6 +76,11 @@ public abstract class AbstractProxyFacto
initializeUnsafe();
}
+ protected ClassLoader getProxyClassLoader(Class<?> beanClass)
+ {
+ return
webBeansContext.getApplicationBoundaryService().getBoundaryClassLoader(beanClass);
+ }
+
/**
* @return the marker interface which should be used for this proxy.
*/
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/proxy/InterceptorDecoratorProxyFactory.java
URL:
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/proxy/InterceptorDecoratorProxyFactory.java?rev=1641639&r1=1641638&r2=1641639&view=diff
==============================================================================
---
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/proxy/InterceptorDecoratorProxyFactory.java
(original)
+++
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/proxy/InterceptorDecoratorProxyFactory.java
Tue Nov 25 15:44:21 2014
@@ -170,7 +170,7 @@ public class InterceptorDecoratorProxyFa
*
*
* @param bean the bean the proxy serves for. Needed for caching and
serialisation.
- * @param classLoader to use for creating the class in
+ * @param classLoader to use for creating the class
* @param classToProxy the class for which a subclass will get generated
* @param interceptedMethods the list of intercepted or decorated business
methods.
* @param nonInterceptedMethods all methods which are <b>not</b>
intercepted nor decorated and shall get delegated directly
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/proxy/NormalScopeProxyFactory.java
URL:
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/proxy/NormalScopeProxyFactory.java?rev=1641639&r1=1641638&r2=1641639&view=diff
==============================================================================
---
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/proxy/NormalScopeProxyFactory.java
(original)
+++
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/proxy/NormalScopeProxyFactory.java
Tue Nov 25 15:44:21 2014
@@ -119,11 +119,11 @@ public class NormalScopeProxyFactory ext
final ClassLoader classLoader;
if (bean.getBeanClass() != null)
{
- classLoader = bean.getBeanClass().getClassLoader();
+ classLoader = getProxyClassLoader(bean.getBeanClass());
}
else if (OwbBean.class.isInstance(bean) &&
OwbBean.class.cast(bean).getReturnType() != null)
{
- classLoader =
OwbBean.class.cast(bean).getReturnType().getClassLoader();
+ classLoader =
getProxyClassLoader(OwbBean.class.cast(bean).getReturnType());
}
else
{
Modified:
openwebbeans/trunk/webbeans-impl/src/main/resources/META-INF/openwebbeans/openwebbeans.properties
URL:
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/resources/META-INF/openwebbeans/openwebbeans.properties?rev=1641639&r1=1641638&r2=1641639&view=diff
==============================================================================
---
openwebbeans/trunk/webbeans-impl/src/main/resources/META-INF/openwebbeans/openwebbeans.properties
(original)
+++
openwebbeans/trunk/webbeans-impl/src/main/resources/META-INF/openwebbeans/openwebbeans.properties
Tue Nov 25 15:44:21 2014
@@ -44,6 +44,11 @@ org.apache.webbeans.spi.JNDIService=org.
org.apache.webbeans.spi.BeanArchiveService=org.apache.webbeans.xml.DefaultBeanArchiveService
################################################################################################
+########################### Default ApplicationBoundary Service
################################
+#Default implementation of org.apache.webbeans.corespi.JNDIService.
+org.apache.webbeans.spi.ApplicationBoundaryService=org.apache.webbeans.corespi.se.DefaultApplicationBoundaryService
+################################################################################################
+
################################### Default Scanner Service
####################################
#Default implementation of org.apache.webbeans.corespi.ScannerService.
org.apache.webbeans.spi.ScannerService=org.apache.webbeans.corespi.se.DefaultScannerService