Author: struberg
Date: Thu Jan 17 13:04:30 2013
New Revision: 1434655

URL: http://svn.apache.org/viewvc?rev=1434655&view=rev
Log:
OWB-344 some packages are reserved

We must not create proxy classes with package names
java.*, javax.*, etc

Modified:
    
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/proxy/AbstractProxyFactory.java
    
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/AbstractUnitTest.java
    
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/disposal/DisposalTest.java

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=1434655&r1=1434654&r2=1434655&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
 Thu Jan 17 13:04:30 2013
@@ -94,6 +94,12 @@ public abstract class AbstractProxyFacto
     protected String getUnusedProxyClassName(ClassLoader classLoader, String 
proxyClassName)
     {
         String finalName = proxyClassName;
+
+        proxyClassName = fixPreservedPackage(proxyClassName, "java.");
+        proxyClassName = fixPreservedPackage(proxyClassName, "javax.");
+        proxyClassName = fixPreservedPackage(proxyClassName, "com.sun.");
+        proxyClassName = fixPreservedPackage(proxyClassName, "sun.misc.");
+
         for (int i = 0; i < MAX_CLASSLOAD_TRIES; i++)
         {
             try
@@ -112,6 +118,23 @@ public abstract class AbstractProxyFacto
         throw new WebBeansException("Unable to detect a free proxy class name 
based on: " + proxyClassName);
     }
 
+    /**
+     * Detect if the provided className is in the forbidden package.
+     * If so, move it to org.apache.webbeans.custom.
+     * @param forbiddenPackagePrefix including the '.', e.g. 'javax.'
+     */
+    private String fixPreservedPackage(final String className, final String 
forbiddenPackagePrefix)
+    {
+        String fixedClassName = className;
+
+        if (className.startsWith(forbiddenPackagePrefix))
+        {
+            fixedClassName = "org.apache.webbeans.custom." + 
className.substring(forbiddenPackagePrefix.length());
+        }
+
+        return fixedClassName;
+    }
+
 
     /**
      * @param classLoader to use for creating the class in

Modified: 
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/AbstractUnitTest.java
URL: 
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/AbstractUnitTest.java?rev=1434655&r1=1434654&r2=1434655&view=diff
==============================================================================
--- 
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/AbstractUnitTest.java
 (original)
+++ 
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/AbstractUnitTest.java
 Thu Jan 17 13:04:30 2013
@@ -20,6 +20,7 @@ package org.apache.webbeans.newtests;
 
 import java.lang.annotation.Annotation;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.List;
 import java.util.Set;
@@ -48,7 +49,12 @@ public abstract class AbstractUnitTest
     {
 
     }
-    
+
+    protected void startContainer(Class<?>... beanClasses)
+    {
+        startContainer(Arrays.asList(beanClasses), null);
+    }
+
     protected void startContainer(Collection<Class<?>> beanClasses)
     {
         startContainer(beanClasses, null);

Modified: 
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/disposal/DisposalTest.java
URL: 
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/disposal/DisposalTest.java?rev=1434655&r1=1434654&r2=1434655&view=diff
==============================================================================
--- 
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/disposal/DisposalTest.java
 (original)
+++ 
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/disposal/DisposalTest.java
 Thu Jan 17 13:04:30 2013
@@ -18,46 +18,27 @@
  */
 package org.apache.webbeans.test.unittests.disposal;
 
+import javax.enterprise.context.RequestScoped;
 import java.util.List;
 
-import org.apache.webbeans.config.WebBeansContext;
-import org.apache.webbeans.context.ContextFactory;
-import org.apache.webbeans.test.TestContext;
+import org.apache.webbeans.newtests.AbstractUnitTest;
 import org.apache.webbeans.test.component.disposal.Disposal1;
 import org.junit.Assert;
-import org.junit.Before;
 import org.junit.Test;
 
-public class DisposalTest extends TestContext
+public class DisposalTest extends AbstractUnitTest
 {
 
-    public DisposalTest()
-    {
-        super(DisposalTest.class.getName());
-    }
-
-    @Before
-    public void init()
-    {
-        super.init();
-    }
-
     @Test
     public void testDisposal1()
     {
-        clear();
-
-        ContextFactory contextFactory = 
WebBeansContext.getInstance().getContextFactory();
-        contextFactory.initRequestContext(null);
-        contextFactory.initSessionContext(null);
-
-        defineManagedBean(Disposal1.class);
+        startContainer(Disposal1.class);
 
         @SuppressWarnings("unchecked")
-        List<Integer> list = (List<Integer>) 
getInstanceByName("createBinding1");
+        List<Integer> list = (List<Integer>) getInstance("createBinding1");
         Assert.assertNotNull(list);
         Assert.assertTrue(list.size() == 1);
-        contextFactory.destroyRequestContext(null);
+        getLifecycle().getContextService().endContext(RequestScoped.class, 
null);
 
         Assert.assertTrue(Disposal1.getDISPOSCALL());
 


Reply via email to