Author: struberg
Date: Tue Jan 15 23:16:26 2013
New Revision: 1433731
URL: http://svn.apache.org/viewvc?rev=1433731&view=rev
Log:
OWB-344 fix Context map and class-name-conflict detection
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/LifecycleInterceptorInvocationContext.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/proxy/AbstractProxyFactory.java
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/intercept/EJBInterceptComponentTest.java
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/LifecycleInterceptorInvocationContext.java
URL:
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/LifecycleInterceptorInvocationContext.java?rev=1433731&r1=1433730&r2=1433731&view=diff
==============================================================================
---
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/LifecycleInterceptorInvocationContext.java
(original)
+++
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/LifecycleInterceptorInvocationContext.java
Tue Jan 15 23:16:26 2013
@@ -23,6 +23,7 @@ import javax.enterprise.inject.spi.Inter
import javax.enterprise.inject.spi.Interceptor;
import javax.interceptor.InvocationContext;
import java.lang.reflect.Method;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -35,7 +36,7 @@ public class LifecycleInterceptorInvocat
private InterceptionType type;
private List<Interceptor<?>> interceptors;
private Map<Interceptor<?>, ?> instances;
- private Map<String, Object> contextData;
+ private Map<String, Object> contextData = new HashMap<String, Object>();
private int interceptorIndex = 0;
private List<AnnotatedMethod<?>> lifecycleMethods;
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=1433731&r1=1433730&r2=1433731&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 Jan 15 23:16:26 2013
@@ -84,17 +84,18 @@ public abstract class AbstractProxyFacto
*/
protected String getUnusedProxyClassName(ClassLoader classLoader, String
proxyClassName)
{
+ String finalName = proxyClassName;
for (int i = 0; i < MAX_CLASSLOAD_TRIES; i++)
{
try
{
- String finalName = proxyClassName + i;
- classLoader.loadClass(finalName);
+ finalName = proxyClassName + i;
+ Class.forName(finalName, true, classLoader);
}
catch (ClassNotFoundException cnfe)
{
// this is exactly what we need!
- return proxyClassName;
+ return finalName;
}
// otherwise we continue ;)
}
@@ -198,7 +199,7 @@ public abstract class AbstractProxyFacto
try
{
- Class<T> loadedClass = (Class<T>)
classLoader.loadClass(definedClass.getName());
+ Class<T> loadedClass = (Class<T>)
Class.forName(definedClass.getName(), true, classLoader);
return loadedClass;
}
catch (ClassNotFoundException e)
Modified:
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/intercept/EJBInterceptComponentTest.java
URL:
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/intercept/EJBInterceptComponentTest.java?rev=1433731&r1=1433730&r2=1433731&view=diff
==============================================================================
---
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/intercept/EJBInterceptComponentTest.java
(original)
+++
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/intercept/EJBInterceptComponentTest.java
Tue Jan 15 23:16:26 2013
@@ -18,79 +18,56 @@
*/
package org.apache.webbeans.test.unittests.intercept;
-import java.util.List;
+import java.util.ArrayList;
+import java.util.Collection;
import junit.framework.Assert;
-import org.apache.webbeans.component.AbstractOwbBean;
-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.intercept.InterceptedComponent;
import
org.apache.webbeans.test.component.intercept.InterceptorWithSuperClassInterceptedComponent;
import
org.apache.webbeans.test.component.intercept.MultipleInterceptedComponent;
import
org.apache.webbeans.test.component.intercept.MultipleListOfInterceptedComponent;
import
org.apache.webbeans.test.component.intercept.MultipleListOfInterceptedWithExcludeClassComponent;
-import org.junit.Before;
import org.junit.Test;
-public class EJBInterceptComponentTest extends TestContext
+public class EJBInterceptComponentTest extends AbstractUnitTest
{
- public EJBInterceptComponentTest()
- {
- super(EJBInterceptComponentTest.class.getName());
- }
-
- @Before
- public void init()
- {
- super.init();
- }
-
@Test
public void testInterceptedComponent()
{
- defineManagedBean(InterceptedComponent.class);
+ Collection<Class<?>> beanClasses = new ArrayList<Class<?>>();
+ beanClasses.add(InterceptedComponent.class);
+ startContainer(beanClasses, null);
+
+
+ shutDownContainer();
}
@Test
public void testInterceptorCalls()
{
- clear();
- defineManagedBean(InterceptedComponent.class);
-
- ContextFactory contextFactory =
WebBeansContext.getInstance().getContextFactory();
- contextFactory.initRequestContext(null);
- List<AbstractOwbBean<?>> comps = getComponents();
-
- Object object = getManager().getInstance(comps.get(0));
+ Collection<Class<?>> beanClasses = new ArrayList<Class<?>>();
+ beanClasses.add(InterceptedComponent.class);
+ startContainer(beanClasses, null);
- Assert.assertTrue(object instanceof InterceptedComponent);
-
- InterceptedComponent comp = (InterceptedComponent) object;
+ InterceptedComponent comp = getInstance(InterceptedComponent.class);
Object s = comp.hello(null);
Assert.assertEquals(new Integer(5), s);
- contextFactory.destroyRequestContext(null);
+ shutDownContainer();
}
@Test
public void testMultipleInterceptedComponent()
{
- clear();
- defineManagedBean(MultipleInterceptedComponent.class);
-
- ContextFactory contextFactory =
WebBeansContext.getInstance().getContextFactory();
- contextFactory.initRequestContext(null);
- List<AbstractOwbBean<?>> comps = getComponents();
-
- Object object = getManager().getInstance(comps.get(0));
+ Collection<Class<?>> beanClasses = new ArrayList<Class<?>>();
+ beanClasses.add(MultipleInterceptedComponent.class);
+ startContainer(beanClasses, null);
- Assert.assertTrue(object instanceof MultipleInterceptedComponent);
-
- MultipleInterceptedComponent comp = (MultipleInterceptedComponent)
object;
+ MultipleInterceptedComponent comp =
getInstance(MultipleInterceptedComponent.class);
Object obj = comp.intercepted();
Assert.assertTrue(obj instanceof String[]);
@@ -99,24 +76,18 @@ public class EJBInterceptComponentTest e
Assert.assertEquals(2, arr.length);
Assert.assertTrue("key".equals(arr[0]) && "key2".equals(arr[1]) ||
"key".equals(arr[1]) && "key2".equals(arr[0]));
- contextFactory.destroyRequestContext(null);
+
+ shutDownContainer();;
}
@Test
public void testInterceptorWithSuperClassComponent()
{
- clear();
- defineManagedBean(InterceptorWithSuperClassInterceptedComponent.class);
-
- ContextFactory contextFactory =
WebBeansContext.getInstance().getContextFactory();
- contextFactory.initRequestContext(null);
- List<AbstractOwbBean<?>> comps = getComponents();
+ Collection<Class<?>> beanClasses = new ArrayList<Class<?>>();
+ beanClasses.add(InterceptorWithSuperClassInterceptedComponent.class);
+ startContainer(beanClasses, null);
- Object object = getManager().getInstance(comps.get(0));
-
- Assert.assertTrue(object instanceof
InterceptorWithSuperClassInterceptedComponent);
-
- InterceptorWithSuperClassInterceptedComponent comp =
(InterceptorWithSuperClassInterceptedComponent) object;
+ InterceptorWithSuperClassInterceptedComponent comp =
getInstance(InterceptorWithSuperClassInterceptedComponent.class);
Object obj = comp.intercepted();
Assert.assertTrue(obj instanceof String[]);
@@ -125,55 +96,42 @@ public class EJBInterceptComponentTest e
Assert.assertEquals(1, arr.length);
Assert.assertTrue("key0".equals(arr[0]));
- contextFactory.destroyRequestContext(null);
+
+ shutDownContainer();
}
@Test
public void testMultipleListOfInterceptedComponent()
{
- clear();
- defineManagedBean(MultipleListOfInterceptedComponent.class);
+ Collection<Class<?>> beanClasses = new ArrayList<Class<?>>();
+ beanClasses.add(MultipleListOfInterceptedComponent.class);
+ startContainer(beanClasses, null);
- ContextFactory contextFactory =
WebBeansContext.getInstance().getContextFactory();
- contextFactory.initRequestContext(null);
- List<AbstractOwbBean<?>> comps = getComponents();
-
- Object object = getManager().getInstance(comps.get(0));
-
- Assert.assertTrue(object instanceof
MultipleListOfInterceptedComponent);
-
- MultipleListOfInterceptedComponent comp =
(MultipleListOfInterceptedComponent) object;
+ MultipleListOfInterceptedComponent comp =
getInstance(MultipleListOfInterceptedComponent.class);
Object obj = comp.intercepted();
Assert.assertTrue(obj instanceof String);
Assert.assertEquals("ok", (String) obj);
- contextFactory.destroyRequestContext(null);
+ shutDownContainer();
}
@Test
public void testMultipleListOfInterceptedWithExcludeClassComponent()
{
- clear();
-
defineManagedBean(MultipleListOfInterceptedWithExcludeClassComponent.class);
-
- ContextFactory contextFactory =
WebBeansContext.getInstance().getContextFactory();
- contextFactory.initRequestContext(null);
- List<AbstractOwbBean<?>> comps = getComponents();
-
- Object object = getManager().getInstance(comps.get(0));
-
- Assert.assertTrue(object instanceof
MultipleListOfInterceptedWithExcludeClassComponent);
+ Collection<Class<?>> beanClasses = new ArrayList<Class<?>>();
+
beanClasses.add(MultipleListOfInterceptedWithExcludeClassComponent.class);
+ startContainer(beanClasses, null);
- MultipleListOfInterceptedWithExcludeClassComponent comp =
(MultipleListOfInterceptedWithExcludeClassComponent) object;
+ MultipleListOfInterceptedWithExcludeClassComponent comp =
getInstance(MultipleListOfInterceptedWithExcludeClassComponent.class);
Object obj = comp.intercepted();
Assert.assertTrue(obj instanceof String);
Assert.assertEquals("value2", (String) obj);
- contextFactory.destroyRequestContext(null);
+ shutDownContainer();
}
}