Modified: tomee/tomee/trunk/tck/cdi-embedded/pom.xml URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tck/cdi-embedded/pom.xml?rev=1469836&r1=1469835&r2=1469836&view=diff ============================================================================== --- tomee/tomee/trunk/tck/cdi-embedded/pom.xml (original) +++ tomee/tomee/trunk/tck/cdi-embedded/pom.xml Fri Apr 19 14:05:02 2013 @@ -81,14 +81,6 @@ <suiteXmlFiles> <suiteXmlFile>src/test/resources/passing.xml</suiteXmlFile> </suiteXmlFiles> - <systemPropertyVariables> - <!--<org.jboss.testharness.standalone>false</org.jboss.testharness.standalone>--> - <!--<org.jboss.testharness.runIntegrationTests>true</org.jboss.testharness.runIntegrationTests>--> - <!--<org.jboss.testharness.container.forceRestart>true</org.jboss.testharness.container.forceRestart>--> - <!--<org.jboss.testharness.libraryDirectory>${project.build.directory}/dependency/lib</org.jboss.testharness.libraryDirectory>--> - <!--<org.jboss.testharness.outputDirectory>target</org.jboss.testharness.outputDirectory>--> - <!--<deleteArtifacts>true</deleteArtifacts>--> - </systemPropertyVariables> </configuration> </plugin> </plugins>
Modified: tomee/tomee/trunk/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/BeansImpl.java URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/BeansImpl.java?rev=1469836&r1=1469835&r2=1469836&view=diff ============================================================================== --- tomee/tomee/trunk/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/BeansImpl.java (original) +++ tomee/tomee/trunk/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/BeansImpl.java Fri Apr 19 14:05:02 2013 @@ -32,7 +32,7 @@ public class BeansImpl implements org.jb public boolean isProxy(Object instance) { System.out.println("isProxy: " + instance); - return instance instanceof IntraVmProxy || instance.getClass().getName().contains("$$"); + return instance instanceof IntraVmProxy || instance.getClass().getName().contains("$Owb"); } @Override Modified: tomee/tomee/trunk/tck/cdi-embedded/src/test/resources/failing.xml URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tck/cdi-embedded/src/test/resources/failing.xml?rev=1469836&r1=1469835&r2=1469836&view=diff ============================================================================== --- tomee/tomee/trunk/tck/cdi-embedded/src/test/resources/failing.xml (original) +++ tomee/tomee/trunk/tck/cdi-embedded/src/test/resources/failing.xml Fri Apr 19 14:05:02 2013 @@ -16,21 +16,9 @@ limitations under the License. --> <suite name="CDI TCK" verbose="0"> - <listeners> - <listener class-name="org.apache.openejb.tck.cdi.embedded.RequestScopeTestListener" /> - </listeners> <test name="CDI TCK"> - <!--<packages>--> - <!--<package name="org.jboss.jsr299.tck.tests.*"/>--> - <!--<package name="org.jboss.jsr299.tck.interceptors.tests.*"/>--> - <!--</packages>--> <classes> - <!--<class name="org.jboss.jsr299.tck.tests.context.session.SessionContextTest"/>--> - <!--<class name="org.jboss.jsr299.tck.tests.deployment.packaging.bundledLibrary.LibraryInEarTest"/>--> - <class name="org.jboss.jsr299.tck.tests.inheritance.specialization.enterprise.broken.directlyExtendsNothing.DirectlyExtendsNothingTest"/> - <class name="org.jboss.jsr299.tck.tests.inheritance.specialization.enterprise.broken.directlyExtendsSimpleBean.DirectlyExtendsSimpleBeanTest"/> - <class name="org.jboss.jsr299.tck.tests.inheritance.specialization.enterprise.broken.implementInterfaceAndExtendsNothing.ImplementsInterfaceAndExtendsNothingTest"/> - <!--<class name="org.jboss.jsr299.tck.tests.lookup.el.integration.IntegrationWithUnifiedELTest"/>--> + <class name="org.jboss.jsr299.tck.tests.event.observer.enterprise.EnterpriseEventInheritenceTest"/> </classes> </test> </suite> Modified: tomee/tomee/trunk/tck/cdi-tomee-embedded/src/main/java/org/apache/openejb/tck/cdi/tomee/embedded/BeansImpl.java URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tck/cdi-tomee-embedded/src/main/java/org/apache/openejb/tck/cdi/tomee/embedded/BeansImpl.java?rev=1469836&r1=1469835&r2=1469836&view=diff ============================================================================== --- tomee/tomee/trunk/tck/cdi-tomee-embedded/src/main/java/org/apache/openejb/tck/cdi/tomee/embedded/BeansImpl.java (original) +++ tomee/tomee/trunk/tck/cdi-tomee-embedded/src/main/java/org/apache/openejb/tck/cdi/tomee/embedded/BeansImpl.java Fri Apr 19 14:05:02 2013 @@ -32,7 +32,7 @@ public class BeansImpl implements org.jb public boolean isProxy(Object instance) { System.out.println("isProxy: " + instance); - return instance instanceof IntraVmProxy || instance.getClass().getName().contains("$$"); + return instance instanceof IntraVmProxy || instance.getClass().getName().contains("$Owb"); } @Override Modified: tomee/tomee/trunk/tck/cdi-tomee-embedded/src/main/java/org/apache/openejb/tck/cdi/tomee/embedded/ELImpl.java URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tck/cdi-tomee-embedded/src/main/java/org/apache/openejb/tck/cdi/tomee/embedded/ELImpl.java?rev=1469836&r1=1469835&r2=1469836&view=diff ============================================================================== --- tomee/tomee/trunk/tck/cdi-tomee-embedded/src/main/java/org/apache/openejb/tck/cdi/tomee/embedded/ELImpl.java (original) +++ tomee/tomee/trunk/tck/cdi-tomee-embedded/src/main/java/org/apache/openejb/tck/cdi/tomee/embedded/ELImpl.java Fri Apr 19 14:05:02 2013 @@ -19,8 +19,8 @@ package org.apache.openejb.tck.cdi.tomee import org.apache.el.ExpressionFactoryImpl; import org.apache.el.lang.FunctionMapperImpl; import org.apache.el.lang.VariableMapperImpl; -import org.apache.webbeans.el.WebBeansELResolver; -import org.apache.webbeans.el.WrappedExpressionFactory; +import org.apache.webbeans.el22.WebBeansELResolver; +import org.apache.webbeans.el22.WrappedExpressionFactory; import javax.el.ArrayELResolver; import javax.el.BeanELResolver; Modified: tomee/tomee/trunk/tck/cdi-tomee/src/main/java/org/apache/openejb/tck/cdi/tomee/BeansImpl.java URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tck/cdi-tomee/src/main/java/org/apache/openejb/tck/cdi/tomee/BeansImpl.java?rev=1469836&r1=1469835&r2=1469836&view=diff ============================================================================== --- tomee/tomee/trunk/tck/cdi-tomee/src/main/java/org/apache/openejb/tck/cdi/tomee/BeansImpl.java (original) +++ tomee/tomee/trunk/tck/cdi-tomee/src/main/java/org/apache/openejb/tck/cdi/tomee/BeansImpl.java Fri Apr 19 14:05:02 2013 @@ -35,7 +35,7 @@ public class BeansImpl implements org.jb public boolean isProxy(Object instance) { System.out.println("isProxy: " + instance); - return instance instanceof IntraVmProxy || instance.getClass().getName().contains("$$"); + return instance instanceof IntraVmProxy || instance.getClass().getName().contains("$Owb"); } @Override Modified: tomee/tomee/trunk/tck/cdi-tomee/src/main/java/org/apache/openejb/tck/cdi/tomee/ELImpl.java URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tck/cdi-tomee/src/main/java/org/apache/openejb/tck/cdi/tomee/ELImpl.java?rev=1469836&r1=1469835&r2=1469836&view=diff ============================================================================== --- tomee/tomee/trunk/tck/cdi-tomee/src/main/java/org/apache/openejb/tck/cdi/tomee/ELImpl.java (original) +++ tomee/tomee/trunk/tck/cdi-tomee/src/main/java/org/apache/openejb/tck/cdi/tomee/ELImpl.java Fri Apr 19 14:05:02 2013 @@ -19,8 +19,8 @@ package org.apache.openejb.tck.cdi.tomee import org.apache.el.ExpressionFactoryImpl; import org.apache.el.lang.FunctionMapperImpl; import org.apache.el.lang.VariableMapperImpl; -import org.apache.webbeans.el.WebBeansELResolver; -import org.apache.webbeans.el.WrappedExpressionFactory; +import org.apache.webbeans.el22.WrappedExpressionFactory; +import org.apache.webbeans.el22.WebBeansELResolver; import javax.el.ArrayELResolver; import javax.el.BeanELResolver; Modified: tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java?rev=1469836&r1=1469835&r2=1469836&view=diff ============================================================================== --- tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java (original) +++ tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java Fri Apr 19 14:05:02 2013 @@ -48,6 +48,7 @@ import org.apache.catalina.ha.tcp.Simple import org.apache.catalina.loader.VirtualWebappLoader; import org.apache.catalina.loader.WebappClassLoader; import org.apache.catalina.loader.WebappLoader; +import org.apache.catalina.session.StandardManager; import org.apache.catalina.startup.Constants; import org.apache.catalina.startup.ContextConfig; import org.apache.catalina.startup.HostConfig; @@ -111,7 +112,6 @@ import org.apache.tomee.catalina.cluster import org.apache.tomee.catalina.cluster.TomEEClusterListener; import org.apache.tomee.catalina.event.AfterApplicationCreated; import org.apache.tomee.catalina.routing.RouterValve; -import org.apache.tomee.catalina.session.OWBStandardManager; import org.apache.tomee.common.LegacyAnnotationProcessor; import org.apache.tomee.common.NamingUtil; import org.apache.tomee.common.TomcatVersion; @@ -755,7 +755,7 @@ public class TomcatWebAppBuilder impleme sessionManagerClass = TomcatHelper.getServer().getParentClassLoader().loadClass(sessionManager); } catch (ClassNotFoundException e) { logger.error("can't find '" + sessionManager + "', StandardManager will be used", e); - sessionManagerClass = OWBStandardManager.class; + sessionManagerClass = StandardManager.class; } } @@ -766,7 +766,7 @@ public class TomcatWebAppBuilder impleme logger.error("can't instantiate '" + sessionManager + "', StandardManager will be used", e); } } else if (standardContext.getCluster() == null) { // else let it use the cluster to create the manager - standardContext.setManager(new OWBStandardManager()); + standardContext.setManager(new StandardManager()); } if (standardContext.getConfigFile() == null) { Modified: tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/cdi/SessionNormalScopeBeanHandler.java URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/cdi/SessionNormalScopeBeanHandler.java?rev=1469836&r1=1469835&r2=1469836&view=diff ============================================================================== --- tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/cdi/SessionNormalScopeBeanHandler.java (original) +++ tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/cdi/SessionNormalScopeBeanHandler.java Fri Apr 19 14:05:02 2013 @@ -16,52 +16,103 @@ */ package org.apache.tomee.catalina.cdi; -import org.apache.webbeans.component.OwbBean; +import org.apache.openejb.server.httpd.EndWebBeansListener; +import org.apache.tomee.catalina.TomEERuntimeException; import org.apache.webbeans.context.creational.BeanInstanceBag; -import org.apache.webbeans.context.creational.CreationalContextImpl; import org.apache.webbeans.intercept.NormalScopedBeanInterceptorHandler; import javax.enterprise.context.SessionScoped; import javax.enterprise.context.spi.Context; -import javax.enterprise.context.spi.CreationalContext; +import javax.enterprise.inject.spi.Bean; +import javax.enterprise.inject.spi.BeanManager; import javax.servlet.http.HttpSession; -import java.lang.reflect.Method; +import java.lang.reflect.Field; +import java.util.HashMap; +import java.util.Map; public class SessionNormalScopeBeanHandler extends NormalScopedBeanInterceptorHandler { - public SessionNormalScopeBeanHandler(final OwbBean<?> bean, final CreationalContext<?> creationalContext) { - super(bean, creationalContext); + private static final Field BAG_INSTANCE; + static { + try { + BAG_INSTANCE = BeanInstanceBag.class.getDeclaredField("beanInstance"); + BAG_INSTANCE.setAccessible(true); + } catch (final NoSuchFieldException e) { + throw new TomEERuntimeException(e); + } + } + + private final ThreadLocal<Map<Bean<?>, UpdateInfo>> objects = new ThreadLocal<Map<Bean<?>, UpdateInfo>>() { + @Override + protected Map<Bean<?>, UpdateInfo> initialValue() { + EndWebBeansListener.pushRequestReleasable(new Runnable() { // update in batch + @Override + public void run() { + final Map<Bean<?>, UpdateInfo> values = objects.get(); + for (final UpdateInfo o : values.values()) { + o.updateBean(); + } + values.clear(); + objects.remove(); + } + }); + return new HashMap<Bean<?>, UpdateInfo>(); + } + }; + + public SessionNormalScopeBeanHandler(final BeanManager beanManager, final Bean<?> bean) { + super(beanManager, bean); } @Override - public Object invoke(final Object instance, final Method method, final Object[] arguments) throws Throwable { + public Object get() { final Object webbeansInstance = getContextualInstance(); - try { - return super.invoke(webbeansInstance, method, arguments, (CreationalContextImpl<?>) getContextualCreationalContext()); - } finally { - updateBean(webbeansInstance); + final Map<Bean<?>, UpdateInfo> beanUpdateInfoMap = objects.get(); + + UpdateInfo info = beanUpdateInfoMap.get(this); + if (info == null) { + info = new UpdateInfo(bean, getBeanManager(), webbeansInstance); + beanUpdateInfoMap.put(bean, info); } + + return webbeansInstance; } - private void updateBean(final Object value) { - final HttpSession session = session(); - if (session == null) { - return; + protected static class UpdateInfo { + private Bean<?> bean; + private BeanManager bm; + private Object value; + + protected UpdateInfo(final Bean<?> bean, final BeanManager bm, final Object value) { + this.bean = bean; + this.bm = bm; + this.value = value; } - // go through all listeners to be able to be replicated or do any processing which can be done - final String key = SessionContextBackedByHttpSession.key(bean); - final BeanInstanceBag<Object> bag = (BeanInstanceBag<Object>) session.getAttribute(key); - if (bag != null) { - bag.setBeanInstance(value); - session.setAttribute(key, bag); + protected void updateBean() { + final HttpSession session = session(); + if (session == null) { + return; + } + + // go through all listeners to be able to be replicated or do any processing which can be done + final String key = SessionContextBackedByHttpSession.key(bean); + final BeanInstanceBag<Object> bag = BeanInstanceBag.class.cast(session.getAttribute(key)); + if (bag != null) { + try { + BAG_INSTANCE.set(bag, value); + } catch (final IllegalAccessException e) { + throw new TomEERuntimeException(e); + } + session.setAttribute(key, bag); + } } - } - private HttpSession session() { - final Context context = getBeanManager().getContext(SessionScoped.class); - if (!SessionContextBackedByHttpSession.class.isInstance(context)) { - return null; + private HttpSession session() { + final Context context = bm.getContext(SessionScoped.class); + if (!SessionContextBackedByHttpSession.class.isInstance(context)) { + return null; + } + return SessionContextBackedByHttpSession.class.cast(context).getSession(); } - return ((SessionContextBackedByHttpSession) context).getSession(); } } Modified: tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/session/QuickSessionManager.java URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/session/QuickSessionManager.java?rev=1469836&r1=1469835&r2=1469836&view=diff ============================================================================== --- tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/session/QuickSessionManager.java (original) +++ tomee/tomee/trunk/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/session/QuickSessionManager.java Fri Apr 19 14:05:02 2013 @@ -16,7 +16,9 @@ */ package org.apache.tomee.catalina.session; -public class QuickSessionManager extends OWBStandardManager { +import org.apache.catalina.session.StandardManager; + +public class QuickSessionManager extends StandardManager { public QuickSessionManager() { setSecureRandomClass("org.apache.tomee.catalina.session.FastNonSecureRandom"); } Modified: tomee/tomee/trunk/tomee/tomee-myfaces/src/main/java/org/apache/tomee/myfaces/TomEEMyFacesContainerInitializer.java URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-myfaces/src/main/java/org/apache/tomee/myfaces/TomEEMyFacesContainerInitializer.java?rev=1469836&r1=1469835&r2=1469836&view=diff ============================================================================== --- tomee/tomee/trunk/tomee/tomee-myfaces/src/main/java/org/apache/tomee/myfaces/TomEEMyFacesContainerInitializer.java (original) +++ tomee/tomee/trunk/tomee/tomee-myfaces/src/main/java/org/apache/tomee/myfaces/TomEEMyFacesContainerInitializer.java Fri Apr 19 14:05:02 2013 @@ -163,7 +163,8 @@ public class TomEEMyFacesContainerInitia // remove our internal faces-config.xml final Iterator<URL> it = metaInfFacesConfigUrls.iterator(); while (it.hasNext()) { - if (it.next().toExternalForm().replace(File.separator, "/").contains("/openwebbeans-jsf-")) { + final String next = it.next().toExternalForm().replace(File.separator, "/"); + if (next.contains("/openwebbeans-jsf-") || next.contains("/openwebbeans-el22-")) { it.remove(); } }