From jira-events at lists.jboss.org Tue Nov 16 11:22:45 2010 Content-Type: multipart/mixed; boundary="===============0239928401584982592==" MIME-Version: 1.0 From: Lincoln Baxter III (JIRA) To: arquillian-issues at lists.jboss.org Subject: [arquillian-issues] [JBoss JIRA] Created: (ARQ-335) Weld SE container does not properly load extension classes at boot Date: Tue, 16 Nov 2010 11:22:45 -0500 Message-ID: <463322910.1519.1289924565687.JavaMail.tomcat@jira02.app.mwc.hst.phx2.redhat.com> --===============0239928401584982592== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Weld SE container does not properly load extension classes at boot ------------------------------------------------------------------ Key: ARQ-335 URL: https://jira.jboss.org/browse/ARQ-335 Project: Arquillian Issue Type: Bug Components: Weld Containers Affects Versions: 1.0.0.Alpha4 Environment: Weld 1.1.0.Beta1 Reporter: Lincoln Baxter III ServiceLoader needs to be used to load the extensions and add then to the D= eployment: package org.jboss.arquillian.container.weld.se.embedded_1; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.List; import javax.enterprise.inject.spi.Extension; import org.jboss.arquillian.container.weld.se.embedded_1.shrinkwrap.Shrinkw= rapBeanDeploymentArchive; import org.jboss.arquillian.protocol.local.LocalMethodExecutor; import org.jboss.arquillian.spi.Configuration; import org.jboss.arquillian.spi.ContainerMethodExecutor; import org.jboss.arquillian.spi.Context; import org.jboss.arquillian.spi.DeployableContainer; import org.jboss.arquillian.spi.DeploymentException; import org.jboss.arquillian.spi.LifecycleException; import org.jboss.shrinkwrap.api.Archive; import org.jboss.weld.bootstrap.WeldBootstrap; import org.jboss.weld.bootstrap.api.Environments; import org.jboss.weld.bootstrap.api.ServiceRegistry; import org.jboss.weld.bootstrap.spi.BeanDeploymentArchive; import org.jboss.weld.bootstrap.spi.Deployment; import org.jboss.weld.bootstrap.spi.Metadata; import org.jboss.weld.context.api.helpers.ConcurrentHashMapBeanStore; import org.jboss.weld.extensions.util.service.ServiceLoader; import org.jboss.weld.manager.api.WeldManager; /** * WeldSEContainer * = * @author Aslak Knutsen * @version $Revision: $ */ public class WeldSEContainer implements DeployableContainer { /* * (non-Javadoc) * = * @see org.jboss.arquillian.spi.DeployableContainer#setup(org.jboss.arq= uillian.spi.Context, * org.jboss.arquillian.spi.Configuration) */ public void setup(final Context context, final Configuration configurati= on) { } /* * (non-Javadoc) * = * @see org.jboss.arquillian.spi.DeployableContainer#start(org.jboss.arq= uillian.spi.Context) */ public void start(final Context context) throws LifecycleException { } /* * (non-Javadoc) * = * @see org.jboss.arquillian.spi.DeployableContainer#stop(org.jboss.arqu= illian.spi.Context) */ public void stop(final Context context) throws LifecycleException { } /* * (non-Javadoc) * = * @see org.jboss.arquillian.spi.DeployableContainer#deploy(org.jboss.ar= quillian.spi.Context, * org.jboss.shrinkwrap.api.Archive) */ public ContainerMethodExecutor deploy(final Context context, final Archi= ve archive) throws DeploymentException { final ShrinkwrapBeanDeploymentArchive beanArchive =3D archive.as(Shri= nkwrapBeanDeploymentArchive.class); final Deployment deployment =3D new Deployment() { public Collection getBeanDeploymentArchives= () { return Arrays.asList((BeanDeploymentArchive) beanArchive); } public ServiceRegistry getServices() { return beanArchive.getServices(); } public BeanDeploymentArchive loadBeanDeploymentArchive( final Class beanClass) { return beanArchive; } /* * (non-Javadoc) * = * @see org.jboss.weld.bootstrap.spi.Deployment#getExtensions() */ public Iterable> getExtensions() { return transform(ServiceLoader.load(Extension.class, beanArchiv= e.getClassLoader())); } }; ContextClassLoaderManager classLoaderManager =3D new ContextClassLoad= erManager(beanArchive.getClassLoader()); classLoaderManager.enable(); context.add(ContextClassLoaderManager.class, classLoaderManager); WeldBootstrap bootstrap =3D new WeldBootstrap(); beanArchive.setBootstrap(bootstrap); bootstrap.startContainer(Environments.SE, deployment, new ConcurrentH= ashMapBeanStore()) .startInitialization() .deployBeans() .validateBeans() .endInitialization(); WeldManager manager =3D bootstrap.getManager(beanArchive); context.add(WeldBootstrap.class, bootstrap); context.add(WeldManager.class, manager); return new LocalMethodExecutor(); } /* * (non-Javadoc) * = * @see org.jboss.arquillian.spi.DeployableContainer#undeploy(org.jboss.= arquillian.spi.Context, * org.jboss.shrinkwrap.api.Archive) */ public void undeploy(final Context context, final Archive archive) th= rows DeploymentException { WeldBootstrap bootstrap =3D context.get(WeldBootstrap.class); if (bootstrap !=3D null) { bootstrap.shutdown(); } ContextClassLoaderManager classLoaderManager =3D context.get(ContextC= lassLoaderManager.class); classLoaderManager.disable(); } public static Iterable> transform(final ServiceLoade= r serviceLoader) { List> result =3D new ArrayList>(); for (final Extension extension : serviceLoader) { result.add(new Metadata() { public String getLocation() { return "unknown"; } public Extension getValue() { return extension; } }); } return result; } } -- = This message is automatically generated by JIRA. - For more information on JIRA, see: http://www.atlassian.com/software/jira =20 --===============0239928401584982592==-- From jira-events at lists.jboss.org Sat Mar 26 18:58:37 2011 Content-Type: multipart/mixed; boundary="===============4756467591358179989==" MIME-Version: 1.0 From: Gunnar Morling (JIRA) To: arquillian-issues at lists.jboss.org Subject: [arquillian-issues] [JBoss JIRA] Commented: (ARQ-335) Weld SE container does not properly load extension classes at boot Date: Sat, 26 Mar 2011 18:58:37 -0400 Message-ID: <2028453686.1663.1301180317895.JavaMail.tomcat@jira02.app.mwc.hst.phx2.redhat.com> In-Reply-To: 463322910.1519.1289924565687.JavaMail.tomcat@jira02.app.mwc.hst.phx2.redhat.com --===============4756467591358179989== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable [ https://issues.jboss.org/browse/ARQ-335?page=3Dcom.atlassian.jira.plu= gin.system.issuetabpanels:comment-tabpanel&focusedCommentId=3D12591991#comm= ent-12591991 ] = Gunnar Morling commented on ARQ-335: ------------------------------------ This seems to be a duplicate of ARQ-275, which was fixed with 1.0.0.Alpha5.= I therefore think this issue can be closed. > Weld SE container does not properly load extension classes at boot > ------------------------------------------------------------------ > > Key: ARQ-335 > URL: https://issues.jboss.org/browse/ARQ-335 > Project: Arquillian > Issue Type: Bug > Components: Weld Containers > Affects Versions: 1.0.0.Alpha4 > Environment: Weld 1.1.0.Beta1 > Reporter: Lincoln Baxter III > > ServiceLoader needs to be used to load the extensions and add then to the= Deployment: > package org.jboss.arquillian.container.weld.se.embedded_1; > import java.util.ArrayList; > import java.util.Arrays; > import java.util.Collection; > import java.util.List; > import javax.enterprise.inject.spi.Extension; > import org.jboss.arquillian.container.weld.se.embedded_1.shrinkwrap.Shrin= kwrapBeanDeploymentArchive; > import org.jboss.arquillian.protocol.local.LocalMethodExecutor; > import org.jboss.arquillian.spi.Configuration; > import org.jboss.arquillian.spi.ContainerMethodExecutor; > import org.jboss.arquillian.spi.Context; > import org.jboss.arquillian.spi.DeployableContainer; > import org.jboss.arquillian.spi.DeploymentException; > import org.jboss.arquillian.spi.LifecycleException; > import org.jboss.shrinkwrap.api.Archive; > import org.jboss.weld.bootstrap.WeldBootstrap; > import org.jboss.weld.bootstrap.api.Environments; > import org.jboss.weld.bootstrap.api.ServiceRegistry; > import org.jboss.weld.bootstrap.spi.BeanDeploymentArchive; > import org.jboss.weld.bootstrap.spi.Deployment; > import org.jboss.weld.bootstrap.spi.Metadata; > import org.jboss.weld.context.api.helpers.ConcurrentHashMapBeanStore; > import org.jboss.weld.extensions.util.service.ServiceLoader; > import org.jboss.weld.manager.api.WeldManager; > /** > * WeldSEContainer > * = > * @author Aslak Knutsen > * @version $Revision: $ > */ > public class WeldSEContainer implements DeployableContainer > { > /* > * (non-Javadoc) > * = > * @see org.jboss.arquillian.spi.DeployableContainer#setup(org.jboss.a= rquillian.spi.Context, > * org.jboss.arquillian.spi.Configuration) > */ > public void setup(final Context context, final Configuration configura= tion) > { > } > /* > * (non-Javadoc) > * = > * @see org.jboss.arquillian.spi.DeployableContainer#start(org.jboss.a= rquillian.spi.Context) > */ > public void start(final Context context) throws LifecycleException > { > } > /* > * (non-Javadoc) > * = > * @see org.jboss.arquillian.spi.DeployableContainer#stop(org.jboss.ar= quillian.spi.Context) > */ > public void stop(final Context context) throws LifecycleException > { > } > /* > * (non-Javadoc) > * = > * @see org.jboss.arquillian.spi.DeployableContainer#deploy(org.jboss.= arquillian.spi.Context, > * org.jboss.shrinkwrap.api.Archive) > */ > public ContainerMethodExecutor deploy(final Context context, final Arc= hive archive) > throws DeploymentException > { > final ShrinkwrapBeanDeploymentArchive beanArchive =3D archive.as(Sh= rinkwrapBeanDeploymentArchive.class); > final Deployment deployment =3D new Deployment() > { > public Collection getBeanDeploymentArchiv= es() > { > return Arrays.asList((BeanDeploymentArchive) beanArchive); > } > public ServiceRegistry getServices() > { > return beanArchive.getServices(); > } > public BeanDeploymentArchive loadBeanDeploymentArchive( > final Class beanClass) > { > return beanArchive; > } > /* > * (non-Javadoc) > * = > * @see org.jboss.weld.bootstrap.spi.Deployment#getExtensions() > */ > public Iterable> getExtensions() > { > return transform(ServiceLoader.load(Extension.class, beanArch= ive.getClassLoader())); > } > }; > ContextClassLoaderManager classLoaderManager =3D new ContextClassLo= aderManager(beanArchive.getClassLoader()); > classLoaderManager.enable(); > context.add(ContextClassLoaderManager.class, classLoaderManager); > WeldBootstrap bootstrap =3D new WeldBootstrap(); > beanArchive.setBootstrap(bootstrap); > bootstrap.startContainer(Environments.SE, deployment, new Concurren= tHashMapBeanStore()) > .startInitialization() > .deployBeans() > .validateBeans() > .endInitialization(); > WeldManager manager =3D bootstrap.getManager(beanArchive); > context.add(WeldBootstrap.class, bootstrap); > context.add(WeldManager.class, manager); > return new LocalMethodExecutor(); > } > /* > * (non-Javadoc) > * = > * @see org.jboss.arquillian.spi.DeployableContainer#undeploy(org.jbos= s.arquillian.spi.Context, > * org.jboss.shrinkwrap.api.Archive) > */ > public void undeploy(final Context context, final Archive archive) = throws DeploymentException > { > WeldBootstrap bootstrap =3D context.get(WeldBootstrap.class); > if (bootstrap !=3D null) > { > bootstrap.shutdown(); > } > ContextClassLoaderManager classLoaderManager =3D context.get(Contex= tClassLoaderManager.class); > classLoaderManager.disable(); > } > public static Iterable> transform(final ServiceLoa= der serviceLoader) > { > List> result =3D new ArrayList>(); > for (final Extension extension : serviceLoader) > { > result.add(new Metadata() > { > public String getLocation() > { > return "unknown"; > } > public Extension getValue() > { > return extension; > } > }); > } > return result; > } > } -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira --===============4756467591358179989==-- From jira-events at lists.jboss.org Sun Mar 27 10:24:38 2011 Content-Type: multipart/mixed; boundary="===============8790855282602070509==" MIME-Version: 1.0 From: Aslak Knutsen (JIRA) To: arquillian-issues at lists.jboss.org Subject: [arquillian-issues] [JBoss JIRA] Closed: (ARQ-335) Weld SE container does not properly load extension classes at boot Date: Sun, 27 Mar 2011 10:24:37 -0400 Message-ID: <504449007.1797.1301235877941.JavaMail.tomcat@jira02.app.mwc.hst.phx2.redhat.com> In-Reply-To: 463322910.1519.1289924565687.JavaMail.tomcat@jira02.app.mwc.hst.phx2.redhat.com --===============8790855282602070509== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable [ https://issues.jboss.org/browse/ARQ-335?page=3Dcom.atlassian.jira.pl= ugin.system.issuetabpanels:all-tabpanel ] Aslak Knutsen closed ARQ-335. ----------------------------- Assignee: Aslak Knutsen Fix Version/s: 1.0.0.Alpha5 Resolution: Duplicate Issue You are correct, fixed in ARQ-275 > Weld SE container does not properly load extension classes at boot > ------------------------------------------------------------------ > > Key: ARQ-335 > URL: https://issues.jboss.org/browse/ARQ-335 > Project: Arquillian > Issue Type: Bug > Components: Weld Containers > Affects Versions: 1.0.0.Alpha4 > Environment: Weld 1.1.0.Beta1 > Reporter: Lincoln Baxter III > Assignee: Aslak Knutsen > Fix For: 1.0.0.Alpha5 > > > ServiceLoader needs to be used to load the extensions and add then to the= Deployment: > package org.jboss.arquillian.container.weld.se.embedded_1; > import java.util.ArrayList; > import java.util.Arrays; > import java.util.Collection; > import java.util.List; > import javax.enterprise.inject.spi.Extension; > import org.jboss.arquillian.container.weld.se.embedded_1.shrinkwrap.Shrin= kwrapBeanDeploymentArchive; > import org.jboss.arquillian.protocol.local.LocalMethodExecutor; > import org.jboss.arquillian.spi.Configuration; > import org.jboss.arquillian.spi.ContainerMethodExecutor; > import org.jboss.arquillian.spi.Context; > import org.jboss.arquillian.spi.DeployableContainer; > import org.jboss.arquillian.spi.DeploymentException; > import org.jboss.arquillian.spi.LifecycleException; > import org.jboss.shrinkwrap.api.Archive; > import org.jboss.weld.bootstrap.WeldBootstrap; > import org.jboss.weld.bootstrap.api.Environments; > import org.jboss.weld.bootstrap.api.ServiceRegistry; > import org.jboss.weld.bootstrap.spi.BeanDeploymentArchive; > import org.jboss.weld.bootstrap.spi.Deployment; > import org.jboss.weld.bootstrap.spi.Metadata; > import org.jboss.weld.context.api.helpers.ConcurrentHashMapBeanStore; > import org.jboss.weld.extensions.util.service.ServiceLoader; > import org.jboss.weld.manager.api.WeldManager; > /** > * WeldSEContainer > * = > * @author Aslak Knutsen > * @version $Revision: $ > */ > public class WeldSEContainer implements DeployableContainer > { > /* > * (non-Javadoc) > * = > * @see org.jboss.arquillian.spi.DeployableContainer#setup(org.jboss.a= rquillian.spi.Context, > * org.jboss.arquillian.spi.Configuration) > */ > public void setup(final Context context, final Configuration configura= tion) > { > } > /* > * (non-Javadoc) > * = > * @see org.jboss.arquillian.spi.DeployableContainer#start(org.jboss.a= rquillian.spi.Context) > */ > public void start(final Context context) throws LifecycleException > { > } > /* > * (non-Javadoc) > * = > * @see org.jboss.arquillian.spi.DeployableContainer#stop(org.jboss.ar= quillian.spi.Context) > */ > public void stop(final Context context) throws LifecycleException > { > } > /* > * (non-Javadoc) > * = > * @see org.jboss.arquillian.spi.DeployableContainer#deploy(org.jboss.= arquillian.spi.Context, > * org.jboss.shrinkwrap.api.Archive) > */ > public ContainerMethodExecutor deploy(final Context context, final Arc= hive archive) > throws DeploymentException > { > final ShrinkwrapBeanDeploymentArchive beanArchive =3D archive.as(Sh= rinkwrapBeanDeploymentArchive.class); > final Deployment deployment =3D new Deployment() > { > public Collection getBeanDeploymentArchiv= es() > { > return Arrays.asList((BeanDeploymentArchive) beanArchive); > } > public ServiceRegistry getServices() > { > return beanArchive.getServices(); > } > public BeanDeploymentArchive loadBeanDeploymentArchive( > final Class beanClass) > { > return beanArchive; > } > /* > * (non-Javadoc) > * = > * @see org.jboss.weld.bootstrap.spi.Deployment#getExtensions() > */ > public Iterable> getExtensions() > { > return transform(ServiceLoader.load(Extension.class, beanArch= ive.getClassLoader())); > } > }; > ContextClassLoaderManager classLoaderManager =3D new ContextClassLo= aderManager(beanArchive.getClassLoader()); > classLoaderManager.enable(); > context.add(ContextClassLoaderManager.class, classLoaderManager); > WeldBootstrap bootstrap =3D new WeldBootstrap(); > beanArchive.setBootstrap(bootstrap); > bootstrap.startContainer(Environments.SE, deployment, new Concurren= tHashMapBeanStore()) > .startInitialization() > .deployBeans() > .validateBeans() > .endInitialization(); > WeldManager manager =3D bootstrap.getManager(beanArchive); > context.add(WeldBootstrap.class, bootstrap); > context.add(WeldManager.class, manager); > return new LocalMethodExecutor(); > } > /* > * (non-Javadoc) > * = > * @see org.jboss.arquillian.spi.DeployableContainer#undeploy(org.jbos= s.arquillian.spi.Context, > * org.jboss.shrinkwrap.api.Archive) > */ > public void undeploy(final Context context, final Archive archive) = throws DeploymentException > { > WeldBootstrap bootstrap =3D context.get(WeldBootstrap.class); > if (bootstrap !=3D null) > { > bootstrap.shutdown(); > } > ContextClassLoaderManager classLoaderManager =3D context.get(Contex= tClassLoaderManager.class); > classLoaderManager.disable(); > } > public static Iterable> transform(final ServiceLoa= der serviceLoader) > { > List> result =3D new ArrayList>(); > for (final Extension extension : serviceLoader) > { > result.add(new Metadata() > { > public String getLocation() > { > return "unknown"; > } > public Extension getValue() > { > return extension; > } > }); > } > return result; > } > } -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira --===============8790855282602070509==--