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


Reply via email to