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);
>     }
> }
>

Reply via email to