Hi It means you'll not get the right bm sometimes (multithreaded arquillian tests for instance I think).
BMP relies on classloader so if test is not executed in archive loader (shrinkwrapclassloader) then DS - but not only - is broken. I'd fix the arquillian adapter here. Le 8 sept. 2014 05:27, "John D. Ament" <[email protected]> a écrit : > Hi all > > I noticed that there's a potential gap with BeanManagerProvider. I was > able to generate the following output when running a ShrinkWrap test with > the BeanManagerProvider: > > Retrieved bmi null with classloader > org.jboss.shrinkwrap.api.classloader.ShrinkWrapClassLoader@2ab4bc72 > > Putting a new bmi > > > org.apache.deltaspike.core.api.provider.BeanManagerProvider$BeanManagerInfo@3d829787 > > Sep 08, 2014 12:19:22 AM > > org.apache.deltaspike.core.impl.config.EnvironmentPropertyConfigSourceProvider > <init> > > INFO: Custom config found by DeltaSpike. Name: 'se-example.properties', > URL: > > 'file:/Users/johnament/src/restful-and-beyond-tut2184/code/target/test-classes/se-example.properties' > > {org.jboss.shrinkwrap.api.classloader.ShrinkWrapClassLoader@2ab4bc72 > > =org.apache.deltaspike.core.api.provider.BeanManagerProvider$BeanManagerInfo@3d829787 > } > > Retrieved bmi null with classloader > sun.misc.Launcher$AppClassLoader@6e0be858 > > Putting a new bmi > > > org.apache.deltaspike.core.api.provider.BeanManagerProvider$BeanManagerInfo@7278640c > > Getting parent classloader based bean manager > > Retrieved bmi null with classloader > sun.misc.Launcher$ExtClassLoader@9f7fc43 > > Putting a new bmi > > Sep 08, 2014 12:19:23 AM > org.apache.deltaspike.core.api.provider.BeanManagerProvider getBeanManager > > > This line here is especially weird, it's happening as the first line of my > test, yet it looks like afterwards I'm getting more BeanManagerInfo's > loaded. > > > I was able to work around this issue by adding the following check when > loading the bean manager: > > > synchronized (this) > { > bmi = bmpSingleton.bmInfos.get(cl); > if (bmi == null && bmpSingleton.bmInfos.isEmpty()) > { > bmi = new BeanManagerInfo(); > bmpSingleton.bmInfos.put(cl, bmi); > } > else > { > ClassLoader classLoader = > bmpSingleton.bmInfos.keySet().iterator().next(); > bmi = bmpSingleton.bmInfos.get(classLoader); > } > } >
