[jboss-cvs] jboss-cvs-commits Digest, Vol 49, Issue 187

Flavia Rainone flavia.rainone at jboss.com
Sun Jul 25 16:32:29 EDT 2010


The weld-int/deployers standalone tests do, I'm working right now on the 
AS integration tests (notice that the weld-deployers-jboss-beans.xml 
file is still using the old deployers).

Em 25-07-2010 17:10, Ales Justin escreveu:
> Do all existing AS Weld tests pass with this change?
>
> Sent from my iPod
>
> On 25. jul. 2010, at 21:56, jboss-cvs-commits-request at lists.jboss.org wrote:
>
>    
>> Send jboss-cvs-commits mailing list submissions to
>>     jboss-cvs-commits at lists.jboss.org
>>
>> To subscribe or unsubscribe via the World Wide Web, visit
>>     https://lists.jboss.org/mailman/listinfo/jboss-cvs-commits
>> or, via email, send a message with subject or body 'help' to
>>     jboss-cvs-commits-request at lists.jboss.org
>>
>> You can reach the person managing the list at
>>     jboss-cvs-commits-owner at lists.jboss.org
>>
>> When replying, please edit your Subject line so it is more specific
>> than "Re: Contents of jboss-cvs-commits digest..."
>>
>>
>> Today's Topics:
>>
>>    1. JBossAS SVN: r107075 - in trunk/weld-int: deployer and    5
>>       other directories. (jboss-cvs-commits at lists.jboss.org)
>>
>>
>> ----------------------------------------------------------------------
>>
>> Message: 1
>> Date: Sun, 25 Jul 2010 15:55:56 -0400
>> From: jboss-cvs-commits at lists.jboss.org
>> Subject: [jboss-cvs] JBossAS SVN: r107075 - in trunk/weld-int:
>>     deployer and    5 other directories.
>> To: jboss-cvs-commits at lists.jboss.org
>> Message-ID:
>>     <201007251955.o6PJtuD4021699 at svn01.web.mwc.hst.phx2.redhat.com>
>> Content-Type: text/plain; charset=UTF-8
>>
>> Author: flavia.rainone at jboss.com
>> Date: 2010-07-25 15:55:55 -0400 (Sun, 25 Jul 2010)
>> New Revision: 107075
>>
>> Added:
>>    trunk/weld-int/.settings/
>>    trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/ArchiveDiscoveryDeployer.java
>>    trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/ArchiveInfoDeployer.java
>>    trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/JBossDeploymentDeployer.java
>>    trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/
>>    trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/Archive.java
>>    trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/ArchiveCollection.java
>>    trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/ArchiveFactory.java
>>    trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/ArchiveInfo.java
>>    trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/ArchiveLifecycleListener.java
>>    trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/ArchiveToClasspath.java
>>    trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/BeanDeploymentArchiveImpl.java
>>    trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/Classpath.java
>>    trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/ClasspathFactory.java
>>    trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/ClasspathImpl.java
>>    trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/DeploymentImpl.java
>>    trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/NoDuplicatesClasspath.java
>>    trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/SecurityActions.java
>>    trunk/weld-int/deployer/src/test/java/org/jboss/test/deployers/support/MockArchiveManifest.java
>>    trunk/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/AbstractEnvironmentTest.java
>>    trunk/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/AbstractSingleArchiveTest.java
>>    trunk/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/ArchiveEnvironmentTestCase.java
>>    trunk/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/ArchiveInfoDeploymentTestCase.java
>>    trunk/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/BasicEarJBossDeploymentTestCase.java
>>    trunk/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/DeploymentEnvironmentTestCase.java
>>    trunk/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/FlatDeploymentSmokeTestCase.java
>>    trunk/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/JBossDeploymentSmokeTestCase.java
>>    trunk/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/LoadBeanDeploymentArchiveTestCase.java
>>    trunk/weld-int/deployer/src/test/resources/org/jboss/test/deployers/test/ArchiveEnvironmentTestCase.xml
>>    trunk/weld-int/deployer/src/test/resources/org/jboss/test/deployers/test/ArchiveInfoDeploymentTestCase.xml
>>    trunk/weld-int/deployer/src/test/resources/org/jboss/test/deployers/test/BasicEarJBossDeploymentTestCase.xml
>>    trunk/weld-int/deployer/src/test/resources/org/jboss/test/deployers/test/DeploymentEnvironmentTestCase.xml
>>    trunk/weld-int/deployer/src/test/resources/org/jboss/test/deployers/test/JBossDeploymentSmokeTestCase.xml
>>    trunk/weld-int/deployer/src/test/resources/org/jboss/test/deployers/test/LoadBeanDeploymentArchiveTestCase.xml
>> Modified:
>>    trunk/weld-int/deployer/pom.xml
>>    trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/WeldDiscoveryEnvironment.java
>>    trunk/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/AbstractDeploymentTest.java
>>    trunk/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/AbstractWeldTest.java
>> Log:
>> [JBAS-8250] Port current WELDINT-1 implementation at https://svn.jboss.org/repos/jbossas/projects/weld-int/branches/Deployment_WELDINT-1 to AS trunk
>>
>> Modified: trunk/weld-int/deployer/pom.xml
>> ===================================================================
>> --- trunk/weld-int/deployer/pom.xml    2010-07-25 11:32:48 UTC (rev 107074)
>> +++ trunk/weld-int/deployer/pom.xml    2010-07-25 19:55:55 UTC (rev 107075)
>> @@ -347,75 +347,93 @@
>>        <artifactId>jboss-logging</artifactId>
>>        <scope>provided</scope>
>>      </dependency>
>> -
>> -<dependency>
>> -<groupId>org.jboss.ejb3</groupId>
>> -<artifactId>jboss-ejb3-core</artifactId>
>> -<scope>provided</scope>
>> -<exclusions>
>> -<exclusion>
>> -<groupId>org.jboss.microcontainer</groupId>
>> -<artifactId>jboss-kernel</artifactId>
>> -</exclusion>
>> -<exclusion>
>> -<groupId>apache-xerces</groupId>
>> -<artifactId>xml-apis</artifactId>
>> -</exclusion>
>> -<exclusion>
>> -<groupId>org.jboss.microcontainer</groupId>
>> -<artifactId>jboss-dependency</artifactId>
>> -</exclusion>
>> -<exclusion>
>> -<groupId>org.jboss.microcontainer</groupId>
>> -<artifactId>jboss-aop-mc-int</artifactId>
>> -</exclusion>
>> -<exclusion>
>> -<groupId>org.jboss.javaee</groupId>
>> -<artifactId>jboss-jaspi-api</artifactId>
>> -</exclusion>
>> -<exclusion>
>> -<groupId>org.jboss.javaee</groupId>
>> -<artifactId>jboss-jca-api</artifactId>
>> -</exclusion>
>> -<exclusion>
>> -<groupId>org.jboss.javaee</groupId>
>> -<artifactId>jboss-jacc-api</artifactId>
>> -</exclusion>
>> -<exclusion>
>> -<groupId>org.jboss.javaee</groupId>
>> -<artifactId>jboss-transaction-api</artifactId>
>> -</exclusion>
>> -<exclusion>
>> -<groupId>org.jboss.javaee</groupId>
>> -<artifactId>jboss-jms-api</artifactId>
>> -</exclusion>
>> -<exclusion>
>> -<groupId>org.jboss.javaee</groupId>
>> -<artifactId>jboss-ejb-api</artifactId>
>> -</exclusion>
>> -<exclusion>
>> -<groupId>org.jboss.logging</groupId>
>> -<artifactId>jboss-logging-spi</artifactId>
>> -</exclusion>
>> -<exclusion>
>> -<groupId>org.jboss.logging</groupId>
>> -<artifactId>jboss-logging-log4j</artifactId>
>> -</exclusion>
>> -<exclusion>
>> -<groupId>sun-jaxws</groupId>
>> -<artifactId>jsr181-api</artifactId>
>> -</exclusion>
>> -<exclusion>
>> -<groupId>quartz</groupId>
>> -<artifactId>quartz</artifactId>
>> -</exclusion>
>> -<exclusion>
>> -<groupId>sun-jaxws</groupId>
>> -<artifactId>jaxws-api</artifactId>
>> -</exclusion>
>> -</exclusions>
>> -</dependency>
>> -
>> +
>> +<dependency>
>> +<groupId>org.jboss.shrinkwrap</groupId>
>> +<artifactId>shrinkwrap-impl-base</artifactId>
>> +<scope>test</scope>
>> +</dependency>
>> +
>> +<dependency>
>> +<groupId>org.jboss.shrinkwrap</groupId>
>> +<artifactId>shrinkwrap-extension-vfs3</artifactId>
>> +<scope>test</scope>
>> +<exclusions>
>> +<exclusion>
>> +<groupId>org.jboss</groupId>
>> +<artifactId>jboss-vfs</artifactId>
>> +</exclusion>
>> +</exclusions>
>> +</dependency>
>> +
>> +<dependency>
>> +<groupId>org.jboss.ejb3</groupId>
>> +<artifactId>jboss-ejb3-core</artifactId>
>> +<scope>provided</scope>
>> +<exclusions>
>> +<exclusion>
>> +<groupId>org.jboss.microcontainer</groupId>
>> +<artifactId>jboss-kernel</artifactId>
>> +</exclusion>
>> +<exclusion>
>> +<groupId>apache-xerces</groupId>
>> +<artifactId>xml-apis</artifactId>
>> +</exclusion>
>> +<exclusion>
>> +<groupId>org.jboss.microcontainer</groupId>
>> +<artifactId>jboss-dependency</artifactId>
>> +</exclusion>
>> +<exclusion>
>> +<groupId>org.jboss.microcontainer</groupId>
>> +<artifactId>jboss-aop-mc-int</artifactId>
>> +</exclusion>
>> +<exclusion>
>> +<groupId>org.jboss.javaee</groupId>
>> +<artifactId>jboss-jaspi-api</artifactId>
>> +</exclusion>
>> +<exclusion>
>> +<groupId>org.jboss.javaee</groupId>
>> +<artifactId>jboss-jca-api</artifactId>
>> +</exclusion>
>> +<exclusion>
>> +<groupId>org.jboss.javaee</groupId>
>> +<artifactId>jboss-jacc-api</artifactId>
>> +</exclusion>
>> +<exclusion>
>> +<groupId>org.jboss.javaee</groupId>
>> +<artifactId>jboss-transaction-api</artifactId>
>> +</exclusion>
>> +<exclusion>
>> +<groupId>org.jboss.javaee</groupId>
>> +<artifactId>jboss-jms-api</artifactId>
>> +</exclusion>
>> +<exclusion>
>> +<groupId>org.jboss.javaee</groupId>
>> +<artifactId>jboss-ejb-api</artifactId>
>> +</exclusion>
>> +<exclusion>
>> +<groupId>org.jboss.logging</groupId>
>> +<artifactId>jboss-logging-spi</artifactId>
>> +</exclusion>
>> +<exclusion>
>> +<groupId>org.jboss.logging</groupId>
>> +<artifactId>jboss-logging-log4j</artifactId>
>> +</exclusion>
>> +<exclusion>
>> +<groupId>sun-jaxws</groupId>
>> +<artifactId>jsr181-api</artifactId>
>> +</exclusion>
>> +<exclusion>
>> +<groupId>quartz</groupId>
>> +<artifactId>quartz</artifactId>
>> +</exclusion>
>> +<exclusion>
>> +<groupId>sun-jaxws</groupId>
>> +<artifactId>jaxws-api</artifactId>
>> +</exclusion>
>> +</exclusions>
>> +</dependency>
>> +
>>     </dependencies>
>>
>> </project>
>>
>> Added: trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/ArchiveDiscoveryDeployer.java
>> ===================================================================
>> --- trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/ArchiveDiscoveryDeployer.java                            (rev 0)
>> +++ trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/ArchiveDiscoveryDeployer.java    2010-07-25 19:55:55 UTC (rev 107075)
>> @@ -0,0 +1,145 @@
>> +/*
>> + * JBoss, Home of Professional Open Source.
>> + * Copyright 2008, Red Hat Middleware LLC, and individual contributors
>> + * as indicated by the @author tags. See the copyright.txt file in the
>> + * distribution for a full listing of individual contributors.
>> + *
>> + * This is free software; you can redistribute it and/or modify it
>> + * under the terms of the GNU Lesser General Public License as
>> + * published by the Free Software Foundation; either version 2.1 of
>> + * the License, or (at your option) any later version.
>> + *
>> + * This software is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
>> + * Lesser General Public License for more details.
>> + *
>> + * You should have received a copy of the GNU Lesser General Public
>> + * License along with this software; if not, write to the Free
>> + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
>> + * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
>> + */
>> +package org.jboss.weld.integration.deployer.env;
>> +
>> +import java.net.URL;
>> +import java.util.Collection;
>> +
>> +import org.jboss.classloading.spi.dependency.Module;
>> +import org.jboss.classloading.spi.visitor.ClassFilter;
>> +import org.jboss.classloading.spi.visitor.ResourceContext;
>> +import org.jboss.classloading.spi.visitor.ResourceFilter;
>> +import org.jboss.classloading.spi.visitor.ResourceVisitor;
>> +import org.jboss.deployers.spi.DeploymentException;
>> +import org.jboss.deployers.spi.deployer.DeploymentStages;
>> +import org.jboss.deployers.vfs.spi.deployer.AbstractOptionalVFSRealDeployer;
>> +import org.jboss.deployers.vfs.spi.structure.VFSDeploymentUnit;
>> +import org.jboss.util.NotImplementedException;
>> +import org.jboss.vfs.VirtualFile;
>> +import org.jboss.weld.integration.deployer.DeployersUtils;
>> +import org.jboss.weld.integration.deployer.env.bda.ArchiveInfo;
>> +import org.jboss.weld.integration.deployer.ext.JBossWeldMetaData;
>> +
>> +/**
>> + * ArchiveDiscovery deployer.
>> + * Deploys information into ArchiveInfo's environment.
>> + *
>> + * @author<a href="mailto:ales.justin at jboss.org">Ales Justin</a>
>> + * @author<a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
>> + */
>> +public class ArchiveDiscoveryDeployer extends AbstractOptionalVFSRealDeployer<JBossWeldMetaData>
>> +{
>> +   public ArchiveDiscoveryDeployer()
>> +   {
>> +      super(JBossWeldMetaData.class);
>> +      addInput(DeployersUtils.WELD_FILES);
>> +      addInput(DeployersUtils.WELD_CLASSPATH);
>> +      addInput(ArchiveInfo.class);
>> +      addOutput(ArchiveInfo.class);
>> +      setStage(DeploymentStages.PRE_REAL);
>> +   }
>> +
>> +   public void deploy(VFSDeploymentUnit unit, JBossWeldMetaData deployment) throws DeploymentException
>> +   {
>> +      @SuppressWarnings("unchecked")
>> +      Collection<VirtualFile>  wbFiles = unit.getAttachment(DeployersUtils.WELD_FILES, Collection.class);
>> +      boolean hasWB = (wbFiles != null&&  wbFiles.isEmpty() == false);
>> +
>> +      @SuppressWarnings("unchecked")
>> +      Collection<VirtualFile>  cpFiles = unit.getAttachment(DeployersUtils.WELD_CLASSPATH, Collection.class);
>> +      boolean hasCp = (cpFiles != null&&  cpFiles.isEmpty() == false);
>> +
>> +      if (!hasWB&&  !hasCp)
>> +      {
>> +         return;
>> +      }
>> +
>> +      try
>> +      {
>> +         ArchiveInfo archive = null;
>> +         if (hasCp)
>> +         {
>> +            VFSDeploymentUnit moduleUnit = unit;
>> +            Module module = moduleUnit.getAttachment(Module.class);
>> +            while (moduleUnit != null&&  module == null)
>> +            {
>> +               moduleUnit = moduleUnit.getParent();
>> +               module = moduleUnit.getAttachment(Module.class);
>> +            }
>> +            if (module == null)
>> +               throw new DeploymentException("No module in deployment unit's hierarchy: " + unit.getName());
>> +
>> +            URL[] urls = new URL[cpFiles.size()];
>> +            int i = 0;
>> +            for (VirtualFile file : cpFiles)
>> +            {
>> +               urls[i++] = file.toURL();
>> +            }
>> +
>> +            archive = moduleUnit.getAttachment(ArchiveInfo.class);
>> +            if (archive == null)
>> +            {
>> +               throw new IllegalStateException("Archive attachment expected for unit " + unit);
>> +            }
>> +            WeldDiscoveryEnvironment environment = archive.getEnvironment();
>> +            WBDiscoveryVisitor visitor = new WBDiscoveryVisitor(environment);
>> +            module.visit(visitor, ClassFilter.INSTANCE, null, urls);
>> +            if (hasWB)
>> +            {
>> +               for (VirtualFile file : wbFiles)
>> +                  environment.addWeldXmlURL(file.toURL());
>> +
>> +            }
>> +         }
>> +         else if (hasWB)
>> +         {
>> +            // FIXME
>> +            throw new NotImplementedException();
>> +         }
>> +      }
>> +      catch (Exception e)
>> +      {
>> +         throw DeploymentException.rethrowAsDeploymentException("Cannot build WB env.", e);
>> +      }
>> +   }
>> +
>> +
>> +   private static class WBDiscoveryVisitor implements ResourceVisitor
>> +   {
>> +      private WeldDiscoveryEnvironment wbdi;
>> +
>> +      private WBDiscoveryVisitor(WeldDiscoveryEnvironment wbdi)
>> +      {
>> +         this.wbdi = wbdi;
>> +      }
>> +
>> +      public ResourceFilter getFilter()
>> +      {
>> +         return ClassFilter.INSTANCE;
>> +      }
>> +
>> +      public void visit(ResourceContext resource)
>> +      {
>> +         wbdi.addWeldClass(resource.loadClass());
>> +      }
>> +   }
>> +}
>> \ No newline at end of file
>>
>>
>> Property changes on: trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/ArchiveDiscoveryDeployer.java
>> ___________________________________________________________________
>> Name: svn:keywords
>>    + Author Date Id Revision
>> Name: svn:eol-style
>>    + native
>>
>> Added: trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/ArchiveInfoDeployer.java
>> ===================================================================
>> --- trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/ArchiveInfoDeployer.java                            (rev 0)
>> +++ trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/ArchiveInfoDeployer.java    2010-07-25 19:55:55 UTC (rev 107075)
>> @@ -0,0 +1,62 @@
>> +/*
>> + * JBoss, Home of Professional Open Source.
>> + * Copyright 2008, Red Hat Middleware LLC, and individual contributors
>> + * as indicated by the @author tags. See the copyright.txt file in the
>> + * distribution for a full listing of individual contributors.
>> + *
>> + * This is free software; you can redistribute it and/or modify it
>> + * under the terms of the GNU Lesser General Public License as
>> + * published by the Free Software Foundation; either version 2.1 of
>> + * the License, or (at your option) any later version.
>> + *
>> + * This software is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
>> + * Lesser General Public License for more details.
>> + *
>> + * You should have received a copy of the GNU Lesser General Public
>> + * License along with this software; if not, write to the Free
>> + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
>> + * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
>> + */
>> +package org.jboss.weld.integration.deployer.env;
>> +
>> +import org.jboss.classloading.spi.RealClassLoader;
>> +import org.jboss.deployers.spi.DeploymentException;
>> +import org.jboss.deployers.spi.deployer.DeploymentStages;
>> +import org.jboss.deployers.vfs.spi.deployer.AbstractOptionalVFSRealDeployer;
>> +import org.jboss.deployers.vfs.spi.structure.VFSDeploymentUnit;
>> +import org.jboss.util.NotImplementedException;
>> +import org.jboss.weld.integration.deployer.env.bda.ArchiveInfo;
>> +import org.jboss.weld.integration.deployer.ext.JBossWeldMetaData;
>> +
>> +/**
>> + * ArchiveInfo deployer.
>> + *
>> + * @author<a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
>> + */
>> +public class ArchiveInfoDeployer extends AbstractOptionalVFSRealDeployer<JBossWeldMetaData>
>> +{
>> +   public ArchiveInfoDeployer()
>> +   {
>> +      super(JBossWeldMetaData.class);
>> +      addOutput(ArchiveInfo.class);
>> +      setStage(DeploymentStages.POST_CLASSLOADER);
>> +   }
>> +
>> +   public void deploy(VFSDeploymentUnit unit, JBossWeldMetaData deployment) throws DeploymentException
>> +   {
>> +      ClassLoader classLoader = unit.getClassLoader();
>> +      if (!unit.isTopLevel()&&  unit.getParent().getClassLoader() == classLoader)
>> +      {
>> +         return;
>> +      }
>> +      if (classLoader instanceof RealClassLoader)
>> +      {
>> +         unit.addAttachment(ArchiveInfo.class, new ArchiveInfo(classLoader));
>> +      }
>> +      else
>> +         // FIXME
>> +         throw new NotImplementedException();
>> +   }
>> +}
>> \ No newline at end of file
>>
>>
>> Property changes on: trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/ArchiveInfoDeployer.java
>> ___________________________________________________________________
>> Name: svn:keywords
>>    + Author Date Id Revision
>> Name: svn:eol-style
>>    + native
>>
>> Added: trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/JBossDeploymentDeployer.java
>> ===================================================================
>> --- trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/JBossDeploymentDeployer.java                            (rev 0)
>> +++ trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/JBossDeploymentDeployer.java    2010-07-25 19:55:55 UTC (rev 107075)
>> @@ -0,0 +1,85 @@
>> +/*
>> + * JBoss, Home of Professional Open Source.
>> + * Copyright 2008, Red Hat Middleware LLC, and individual contributors
>> + * as indicated by the @author tags. See the copyright.txt file in the
>> + * distribution for a full listing of individual contributors.
>> + *
>> + * This is free software; you can redistribute it and/or modify it
>> + * under the terms of the GNU Lesser General Public License as
>> + * published by the Free Software Foundation; either version 2.1 of
>> + * the License, or (at your option) any later version.
>> + *
>> + * This software is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
>> + * Lesser General Public License for more details.
>> + *
>> + * You should have received a copy of the GNU Lesser General Public
>> + * License along with this software; if not, write to the Free
>> + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
>> + * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
>> + */
>> +package org.jboss.weld.integration.deployer.env;
>> +
>> +import java.util.ArrayList;
>> +import java.util.Collection;
>> +
>> +import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
>> +import org.jboss.deployers.structure.spi.DeploymentUnit;
>> +import org.jboss.weld.bootstrap.spi.Deployment;
>> +import org.jboss.weld.integration.deployer.env.bda.ArchiveInfo;
>> +import org.jboss.weld.integration.deployer.env.bda.DeploymentImpl;
>> +
>> +/**
>> + * JBoss Deployment Deployer.
>> + * Creates metadata for creation of a Deployment.
>> + *
>> + * @author<a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
>> + */
>> +public class JBossDeploymentDeployer extends AbstractDeploymentDeployer
>> +{
>> +   public JBossDeploymentDeployer()
>> +   {
>> +      super();
>> +      addInput(ArchiveInfo.class);
>> +   }
>> +
>> +   @Override
>> +   protected boolean isRelevant(DeploymentUnit unit)
>> +   {
>> +      return unit.isAttachmentPresent(ArchiveInfo.class);
>> +   }
>> +
>> +   protected Class<? extends Deployment>  getDeploymentClass()
>> +   {
>> +      return DeploymentImpl.class;
>> +   }
>> +
>> +   protected void buildDeployment(DeploymentUnit unit, BootstrapInfo info, BeanMetaDataBuilder builder)
>> +   {
>> +      builder.addConstructorParameter(String.class.getName(), unit.getName());
>> +      builder.addConstructorParameter(Collection.class.getName(), getArchiveInfos(unit));
>> +      builder.addConstructorParameter(Collection.class.getName(), builder.createInject(info.getEjbServices().getUnderlyingValue(), "ejbs"));
>> +      builder.addUninstall("undeploy");
>> +   }
>> +
>> +   private Collection<ArchiveInfo>  getArchiveInfos(DeploymentUnit unit)
>> +   {
>> +      Collection<ArchiveInfo>  archiveInfos = new ArrayList<ArchiveInfo>();
>> +      fill(archiveInfos, unit);
>> +      return archiveInfos;
>> +   }
>> +
>> +   private void fill(Collection<ArchiveInfo>  archiveInfos, DeploymentUnit unit)
>> +   {
>> +      ArchiveInfo archiveInfo = unit.getAttachment(ArchiveInfo.class);
>> +      if (archiveInfo != null)
>> +      {
>> +         archiveInfos.add(archiveInfo);
>> +      }
>> +      for (DeploymentUnit child: unit.getChildren())
>> +      {
>> +         fill(archiveInfos, child);
>> +      }
>> +   }
>> +}
>> \ No newline at end of file
>>
>>
>> Property changes on: trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/JBossDeploymentDeployer.java
>> ___________________________________________________________________
>> Name: svn:keywords
>>    + Author Date Id Revision
>> Name: svn:eol-style
>>    + native
>>
>> Modified: trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/WeldDiscoveryEnvironment.java
>> ===================================================================
>> --- trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/WeldDiscoveryEnvironment.java    2010-07-25 11:32:48 UTC (rev 107074)
>> +++ trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/WeldDiscoveryEnvironment.java    2010-07-25 19:55:55 UTC (rev 107075)
>> @@ -64,7 +64,9 @@
>>      */
>>     public Collection<Class<?>>  getWeldClasses()
>>     {
>> -      return Collections.unmodifiableCollection(classes);
>> +      // FIXME WELDINT-1 old classes that use this method should get an Unmodifiable
>> +      // collection; if those classes are not deleted this method needs to be reviewed
>> +      return classes;
>>     }
>>
>>     /**
>>
>> Added: trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/Archive.java
>> ===================================================================
>> --- trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/Archive.java                            (rev 0)
>> +++ trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/Archive.java    2010-07-25 19:55:55 UTC (rev 107075)
>> @@ -0,0 +1,254 @@
>> +/*
>> + * JBoss, Home of Professional Open Source.
>> + * Copyright 2008, Red Hat Middleware LLC, and individual contributors
>> + * as indicated by the @author tags. See the copyright.txt file in the
>> + * distribution for a full listing of individual contributors.
>> + *
>> + * This is free software; you can redistribute it and/or modify it
>> + * under the terms of the GNU Lesser General Public License as
>> + * published by the Free Software Foundation; either version 2.1 of
>> + * the License, or (at your option) any later version.
>> + *
>> + * This software is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
>> + * Lesser General Public License for more details.
>> + *
>> + * You should have received a copy of the GNU Lesser General Public
>> + * License along with this software; if not, write to the Free
>> + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
>> + * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
>> + */
>> +package org.jboss.weld.integration.deployer.env.bda;
>> +
>> +import java.net.URL;
>> +import java.util.ArrayList;
>> +import java.util.Collection;
>> +
>> +import org.jboss.weld.bootstrap.spi.BeanDeploymentArchive;
>> +import org.jboss.weld.ejb.spi.EjbDescriptor;
>> +
>> +/**
>> + * An archive is an abstract representation of one or more deployed archives.
>> + * It mainly contains a list of classes and an optional list of bean.xml file URLs
>> + * (only when those files are available).
>> + *<br>
>> + * Every archive can provide a corresponding BeanDeploymentArchive when requested. Notice
>> + * that the provided BeanDeploymentArchive is simply a different view of the archive.
>> + *<br>
>> + * As for class loading related issues, every archive is associated with the class loader
>> + * responsible for loading it during deployment and is also associated with a classpath.
>> + * This classpath contains a list of all archives visible to an archive and is used for
>> + * iterating over both the archive graph and the corresponding BeanDeploymentArchive graph.
>> + *
>> + * @author<a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
>> + * @version $Revision$
>> + * @see Classpath
>> + */
>> +class Archive
>> +{
>> +
>> +   // the classes contained in this archive
>> +   private final Collection<Class<?>>  classes;
>> +
>> +   // the bean.xml URLs contained in this archive
>> +   private final Collection<URL>  xmlURLs;
>> +
>> +   // the classloader that loaded this archive
>> +   private final ClassLoader classLoader;
>> +
>> +   // the classpath of this archive
>> +   private final Classpath classpath;
>> +
>> +   // the bda view of this archive, if available
>> +   private BeanDeploymentArchiveImpl bda;
>> +
>> +   // the ejbs
>> +   private final Collection<EjbDescriptor<?>>  ejbs;
>> +
>> +   // the list of all bdaLifecycleListeners
>> +   private final Collection<ArchiveLifecycleListener>  lifecycleListeners;
>> +
>> +   /**
>> +    * Constructor. Can only be called by ArchiveFactory.
>> +    *
>> +    * @param archiveInfo contains all information necessary for the initialization of this
>> +    *                    archive
>> +    * @param ejbs        the list of ejb descriptors
>> +    * @see ArchiveFactory#createArchive(ArchiveInfo, Collection)
>> +    */
>> +   public Archive(ArchiveInfo archiveInfo, Collection<EjbDescriptor<?>>  ejbs)
>> +   {
>> +      this.lifecycleListeners = new ArrayList<ArchiveLifecycleListener>();
>> +      this.classes = archiveInfo.getEnvironment().getWeldClasses();
>> +      this.xmlURLs = archiveInfo.getEnvironment().getWeldXml();
>> +      this.classLoader = archiveInfo.getClassLoader();
>> +      this.classpath = archiveInfo.getClasspath();
>> +      this.classpath.addArchive(this);
>> +      this.ejbs = ejbs;
>> +   }
>> +
>> +   /**
>> +    * Returns all classes contained in this archive.
>> +    *
>> +    * @return the classes contained in this archive
>> +    */
>> +   public Collection<Class<?>>  getClasses()
>> +   {
>> +      return classes;
>> +   }
>> +
>> +   /**
>> +    * Indicates whether this archive contains the requested class.
>> +    *
>> +    * @param beanClass a class that could be contained in this archive
>> +    * @return          {@code true} only if this archive contains {@code beanClass}
>> +    */
>> +   public boolean containsClass(Class<?>  beanClass)
>> +   {
>> +      return beanClass.getClassLoader() == this.classLoader;
>> +   }
>> +
>> +   /**
>> +    * Indicates whether {@code beanClass} is visible to this BDA
>> +    * @param   beanClass the beanClass
>> +    * @return  {@code true} if {@code beanClass} is visible to this BDA
>> +    */
>> +   public boolean isClassVisible(Class<?>  beanClass)
>> +   {
>> +      Class<?>  loadedClass = null;
>> +      try
>> +      {
>> +         loadedClass = this.getClassLoader().loadClass(beanClass.getName());
>> +      }
>> +      catch (ClassNotFoundException e)
>> +      {
>> +         return false;
>> +      }
>> +      return loadedClass == beanClass;
>> +   }
>> +
>> +
>> +   /**
>> +    * Adds a class to this archive.
>> +    *
>> +    * @param beanClass a class whose ClassLoader is associated with this archive
>> +    */
>> +   public void addClass(Class<?>  beanClass)
>> +   {
>> +      classes.add(beanClass);
>> +   }
>> +
>> +   /**
>> +    * Returns the URLs of all bean.xml files contained in this archive.
>> +    *
>> +    * @return the URLs of the bean.xml files
>> +    */
>> +   public Collection<URL>  getXmlURLs()
>> +   {
>> +      return xmlURLs;
>> +   }
>> +
>> +   /**
>> +    * Indicates whether this archive has one or more bean.xml files
>> +    *
>> +    * @return {@code true} if this archive contains a bean.xml file
>> +    */
>> +   public boolean hasXml()
>> +   {
>> +      return xmlURLs != null&&  !xmlURLs.isEmpty();
>> +   }
>> +
>> +   /**
>> +    * Returns the classloader that loaded this archive.
>> +    *
>> +    * @return the classloader that loaded this archive
>> +    */
>> +   public ClassLoader getClassLoader()
>> +   {
>> +      return classLoader;
>> +   }
>> +
>> +   /**
>> +    * Returns the classpath of this archive, that contains all archives visible to this
>> +    * archive. This classpath can also be used to retrieve the bdas visible to the bda
>> +    * associated with this archive, when this bda is avaialble.
>> +    *
>> +    * @return the classpath
>> +    */
>> +   public Classpath getClasspath()
>> +   {
>> +      return classpath;
>> +   }
>> +
>> +   /**
>> +    * Returns the BeanDeploymentArchive that corresponds to this archive.
>> +    *
>> +    * @return the BeanDeploymentArchive representing this archive. May be {@code null} if
>> +    *         it has not been created
>> +    */
>> +   public BeanDeploymentArchive getBeanDeploymentArchive()
>> +   {
>> +      return bda;
>> +   }
>> +
>> +   /**
>> +    * Creates the BeanDeploymentArchive that corresponds to this archive. This method
>> +    * never returns duplicates.
>> +    *
>> +    * @return the BeanDeploymentArchive representing this archive. If this bda has not
>> +    *         been created, it is created and returned
>> +    */
>> +   public BeanDeploymentArchive createBeanDeploymentArchive()
>> +   {
>> +      if (bda == null)
>> +      {
>> +         bda = new BeanDeploymentArchiveImpl(classLoader.toString(), this);
>> +         for (ArchiveLifecycleListener listener: lifecycleListeners)
>> +         {
>> +            // notifies the listener that this archive became visible as a BDA
>> +            listener.archiveVisible(this, bda);
>> +         }
>> +      }
>> +      return bda;
>> +   }
>> +
>> +   /**
>> +    * Adds an ArchiveLifecycleListener. When called prior to BDA creation, this listener
>> +    * will be notified when this archive becomes visible through the BDA view. The
>> +    * listener will also be notified when this archive (and its BDA, if available) is
>> +    * destroyed (undeployment)
>> +    *
>> +    * @param listener an ArchiveLifecycleListener
>> +    */
>> +   public void addLifecycleListener(ArchiveLifecycleListener listener)
>> +   {
>> +      this.lifecycleListeners.add(listener);
>> +   }
>> +
>> +   /**
>> +    * Return the collection of EJBDescriptors.
>> +    *
>> +    * @return the ejbs associated with this Archive
>> +    */
>> +   public Collection<EjbDescriptor<?>>  getEjbs()
>> +   {
>> +      return ejbs;
>> +   }
>> +
>> +   /**
>> +    * Notifies this archive that it is being undeployed.
>> +    */
>> +   public void undeploy()
>> +   {
>> +      for (ArchiveLifecycleListener listener: lifecycleListeners)
>> +      {
>> +         listener.archiveDestroyed(this);
>> +      }
>> +   }
>> +
>> +   public String toString()
>> +   {
>> +      return "Archive[" + classLoader + "]";
>> +   }
>> +}
>>
>>
>> Property changes on: trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/Archive.java
>> ___________________________________________________________________
>> Name: svn:keywords
>>    + Author Date Id Revision
>> Name: svn:eol-style
>>    + native
>>
>> Added: trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/ArchiveCollection.java
>> ===================================================================
>> --- trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/ArchiveCollection.java                            (rev 0)
>> +++ trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/ArchiveCollection.java    2010-07-25 19:55:55 UTC (rev 107075)
>> @@ -0,0 +1,97 @@
>> +/*
>> + * JBoss, Home of Professional Open Source.
>> + * Copyright 2008, Red Hat Middleware LLC, and individual contributors
>> + * as indicated by the @author tags. See the copyright.txt file in the
>> + * distribution for a full listing of individual contributors.
>> + *
>> + * This is free software; you can redistribute it and/or modify it
>> + * under the terms of the GNU Lesser General Public License as
>> + * published by the Free Software Foundation; either version 2.1 of
>> + * the License, or (at your option) any later version.
>> + *
>> + * This software is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
>> + * Lesser General Public License for more details.
>> + *
>> + * You should have received a copy of the GNU Lesser General Public
>> + * License along with this software; if not, write to the Free
>> + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
>> + * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
>> + */
>> +package org.jboss.weld.integration.deployer.env.bda;
>> +
>> +import java.util.ArrayList;
>> +import java.util.Collection;
>> +import java.util.Iterator;
>> +
>> +import org.jboss.weld.bootstrap.spi.BeanDeploymentArchive;
>> +
>> +/**
>> + * A collection of archives.
>> + * This collection contains not only the archives added to it, as it also contains
>> + * an updated list of the bdas corresponding to those archives when available.
>> + *
>> + * @author<a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
>> + * @version $Revision$
>> + */
>> +class ArchiveCollection implements ArchiveLifecycleListener, Iterable<Archive>
>> +{
>> +   // the archives collection
>> +   protected Collection<Archive>  archives = new ArrayList<Archive>();
>> +
>> +   // the bdas collection
>> +   protected Collection<BeanDeploymentArchive>  bdas = new ArrayList<BeanDeploymentArchive>();
>> +
>> +   /**
>> +    * Adds an archive to this collection.
>> +    *
>> +    * @param archive the archive to be added
>> +    */
>> +   public synchronized void add(Archive archive)
>> +   {
>> +      archives.add(archive);
>> +      archive.addLifecycleListener(this);
>> +   }
>> +
>> +   /**
>> +    * For concurrent safe iteration, synchronize the iteration block using this collection
>> +    * as a synchronization lock.
>> +    */
>> +   public Iterator<Archive>  iterator()
>> +   {
>> +      return archives.iterator();
>> +   }
>> +
>> +   /**
>> +    * Returns the BeanDeploymentArchive collection corresponding to this archive collection
>> +    *
>> +    * @return a collection of all previously created BeanDeploymentArchives that represent
>> +    *         the archives in this collection
>> +    */
>> +   public Collection<BeanDeploymentArchive>  getBDAs()
>> +   {
>> +      return this.bdas;
>> +   }
>> +
>> +   public synchronized void archiveVisible(Archive archive, BeanDeploymentArchive bda)
>> +   {
>> +      synchronized(bdas)
>> +      {
>> +         bdas.add(bda);
>> +      }
>> +   }
>> +
>> +   public synchronized void archiveDestroyed(Archive archive)
>> +   {
>> +      synchronized(bdas)
>> +      {
>> +         archives.remove(archive);
>> +         BeanDeploymentArchive bda = archive.getBeanDeploymentArchive();
>> +         if (bda != null)
>> +         {
>> +            bdas.remove(bda);
>> +         }
>> +      }
>> +   }
>> +}
>>
>>
>> Property changes on: trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/ArchiveCollection.java
>> ___________________________________________________________________
>> Name: svn:keywords
>>    + Author Date Id Revision
>> Name: svn:eol-style
>>    + native
>>
>> Added: trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/ArchiveFactory.java
>> ===================================================================
>> --- trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/ArchiveFactory.java                            (rev 0)
>> +++ trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/ArchiveFactory.java    2010-07-25 19:55:55 UTC (rev 107075)
>> @@ -0,0 +1,61 @@
>> +/*
>> + * JBoss, Home of Professional Open Source.
>> + * Copyright 2008, Red Hat Middleware LLC, and individual contributors
>> + * as indicated by the @author tags. See the copyright.txt file in the
>> + * distribution for a full listing of individual contributors.
>> + *
>> + * This is free software; you can redistribute it and/or modify it
>> + * under the terms of the GNU Lesser General Public License as
>> + * published by the Free Software Foundation; either version 2.1 of
>> + * the License, or (at your option) any later version.
>> + *
>> + * This software is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
>> + * Lesser General Public License for more details.
>> + *
>> + * You should have received a copy of the GNU Lesser General Public
>> + * License along with this software; if not, write to the Free
>> + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
>> + * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
>> + */
>> +package org.jboss.weld.integration.deployer.env.bda;
>> +
>> +import java.util.Collection;
>> +
>> +import org.jboss.weld.ejb.spi.EjbDescriptor;
>> +
>> +/**
>> + * An archive factory.
>> + *
>> + * @author<a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
>> + * @version $Revision$
>> + * @see Archive
>> + */
>> +class ArchiveFactory
>> +{
>> +   /**
>> +    * Creates an Archive, and performs some initialization operations required for
>> +    * consistency and cleanup of the ArchiveInfo.
>> +    *<br>
>> +    * This factory method can be called only when {@code ejbs} become
>> +    * available. Prior to this stage, use {@link ArchiveInfo} to keep data during deployment.
>> +    *
>> +    * @param archiveInfo contains all information necessary for the initialization of the
>> +    *                    archive
>> +    * @param ejbs        the list of EJB descriptors
>> +    */
>> +   public static Archive createArchive(ArchiveInfo archiveInfo, Collection<EjbDescriptor<?>>  ejbs)
>> +   {
>> +      Archive archive = new Archive(archiveInfo, ejbs);
>> +      if (archiveInfo.hasClasspathAdapter())
>> +      {
>> +         // initialize adapter
>> +         ArchiveToClasspath classpathAdapter = archiveInfo.getClasspathAdapter();
>> +         classpathAdapter.addArchive(archive);
>> +      }
>> +      // dispose archiveInfo
>> +      archiveInfo.cleanUp();
>> +      return archive;
>> +   }
>> +}
>>
>>
>> Property changes on: trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/ArchiveFactory.java
>> ___________________________________________________________________
>> Name: svn:keywords
>>    + Author Date Id Revision
>> Name: svn:eol-style
>>    + native
>>
>> Added: trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/ArchiveInfo.java
>> ===================================================================
>> --- trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/ArchiveInfo.java                            (rev 0)
>> +++ trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/ArchiveInfo.java    2010-07-25 19:55:55 UTC (rev 107075)
>> @@ -0,0 +1,149 @@
>> +/*
>> + * JBoss, Home of Professional Open Source.
>> + * Copyright 2008, Red Hat Middleware LLC, and individual contributors
>> + * as indicated by the @author tags. See the copyright.txt file in the
>> + * distribution for a full listing of individual contributors.
>> + *
>> + * This is free software; you can redistribute it and/or modify it
>> + * under the terms of the GNU Lesser General Public License as
>> + * published by the Free Software Foundation; either version 2.1 of
>> + * the License, or (at your option) any later version.
>> + *
>> + * This software is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
>> + * Lesser General Public License for more details.
>> + *
>> + * You should have received a copy of the GNU Lesser General Public
>> + * License along with this software; if not, write to the Free
>> + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
>> + * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
>> + */
>> +package org.jboss.weld.integration.deployer.env.bda;
>> +
>> +import java.util.Map;
>> +import java.util.WeakHashMap;
>> +
>> +import org.jboss.weld.integration.deployer.env.WeldDiscoveryEnvironment;
>> +
>> +/**
>> + * Contains information necessary for the creation of an Archive.
>> + * All the information contained in a ArchiveInfo is gathered during deployment and is
>> + * not considered initialized (i.e., this information is not ready to be used for
>> + * BeanDeploymentArchive and Deployment creation)
>> + *
>> + * @author<a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
>> + * @version $Revision$
>> + */
>> +public class ArchiveInfo
>> +{
>> +   // creates the classpaths for the archive
>> +   private static final ClasspathFactory classpathFactory = ClasspathFactory.getInstance();
>> +
>> +   // keeps track of the instances that are currently under use by deployers
>> +   private static final Map<ClassLoader, ArchiveInfo>  instances = new WeakHashMap<ClassLoader, ArchiveInfo>();
>> +
>> +   /**
>> +    * Returns the ArchiveInfo instance that corresponds to the given class loader.
>> +    * Only ArchiveInfo instances under use can be returned.
>> +    *
>> +    * @param classLoader the class loader
>> +    * @return            the ArchiveInfo instance that contains {@code classLoader}
>> +    */
>> +   public static final ArchiveInfo getInstance(ClassLoader classLoader)
>> +   {
>> +      return instances.get(classLoader);
>> +   }
>> +
>> +   // adapts an Archive to a Classpath
>> +   private ArchiveToClasspath classpathAdapter;
>> +   // the classpath
>> +   private Classpath classpath;
>> +   // the class loader
>> +   private ClassLoader classLoader;
>> +   // the discovery environment
>> +   private final WeldDiscoveryEnvironment environment;
>> +
>> +   /**
>> +    * Creates an ArchiveInfo to keep track of all data related to an archive
>> +    * during deployment.
>> +    *
>> +    * @param classLoader the classLoader that is loading the archive under deployment.
>> +    */
>> +   public ArchiveInfo(ClassLoader classLoader)
>> +   {
>> +      instances.put(classLoader, this);
>> +      this.classLoader = classLoader;
>> +      this.classpath = classpathFactory.create(classLoader);
>> +      this.environment = new WeldDiscoveryEnvironment();
>> +   }
>> +
>> +   /**
>> +    * Returns the classloader that is loading the archive under deployment.
>> +    *
>> +    * @return the classloader
>> +    */
>> +   public ClassLoader getClassLoader()
>> +   {
>> +      return this.classLoader;
>> +   }
>> +
>> +   /**
>> +    * The classpath of the archive under deployment.
>> +    *
>> +    * @return the claspath
>> +    */
>> +   public Classpath getClasspath()
>> +   {
>> +      return classpath;
>> +   }
>> +
>> +   /**
>> +    * Returns the archive environment information.
>> +    *
>> +    * @return the environment information
>> +    */
>> +   public WeldDiscoveryEnvironment getEnvironment()
>> +   {
>> +      return this.environment;
>> +   }
>> +
>> +   /**
>> +    * Returns a classpath adapter, indicating that the archive under deployment will be
>> +    * used as a classpath itself.
>> +    *
>> +    * @return a classpath adapter
>> +    */
>> +   ArchiveToClasspath getClasspathAdapter()
>> +   {
>> +      if (classpathAdapter == null)
>> +      {
>> +         classpathAdapter = new ArchiveToClasspath();
>> +      }
>> +      return classpathAdapter;
>> +   }
>> +
>> +   /**
>> +    * Indicates whether a classpath adapter for this archive has been created.
>> +    *
>> +    * @return {@code true} if a classpath adapter has been created
>> +    */
>> +   boolean hasClasspathAdapter()
>> +   {
>> +      return this.classpathAdapter != null;
>> +   }
>> +
>> +   /**
>> +    * Performs cleanup of this archive, indicating that it is no longer in use and will
>> +    * be discarded.
>> +    */
>> +   void cleanUp()
>> +   {
>> +      instances.remove(this.classLoader);
>> +   }
>> +
>> +   public String toString()
>> +   {
>> +      return "ArchiveInfo[" + classLoader + "]";
>> +   }
>> +}
>> \ No newline at end of file
>>
>>
>> Property changes on: trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/ArchiveInfo.java
>> ___________________________________________________________________
>> Name: svn:keywords
>>    + Author Date Id Revision
>> Name: svn:eol-style
>>    + native
>>
>> Added: trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/ArchiveLifecycleListener.java
>> ===================================================================
>> --- trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/ArchiveLifecycleListener.java                            (rev 0)
>> +++ trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/ArchiveLifecycleListener.java    2010-07-25 19:55:55 UTC (rev 107075)
>> @@ -0,0 +1,51 @@
>> +/*
>> + * JBoss, Home of Professional Open Source.
>> + * Copyright 2008, Red Hat Middleware LLC, and individual contributors
>> + * as indicated by the @author tags. See the copyright.txt file in the
>> + * distribution for a full listing of individual contributors.
>> + *
>> + * This is free software; you can redistribute it and/or modify it
>> + * under the terms of the GNU Lesser General Public License as
>> + * published by the Free Software Foundation; either version 2.1 of
>> + * the License, or (at your option) any later version.
>> + *
>> + * This software is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
>> + * Lesser General Public License for more details.
>> + *
>> + * You should have received a copy of the GNU Lesser General Public
>> + * License along with this software; if not, write to the Free
>> + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
>> + * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
>> + */
>> +package org.jboss.weld.integration.deployer.env.bda;
>> +
>> +import org.jboss.weld.bootstrap.spi.BeanDeploymentArchive;
>> +
>> +
>> +/**
>> + * Observes the lifecyle of a BeanDeploymentArchive.
>> + *
>> + * @author<a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
>> + * @version $Revision: 1.1
>> + * @see Archive#addLifecycleListener(BDALifecycleListener)
>> + */
>> +interface ArchiveLifecycleListener
>> +{
>> +   /**
>> +    * Notifies this listener that an Archive is visible to Weld classes in the form of
>> +    * a BDA.
>> +    *
>> +    * @param archive the archive whose corresponding BDA was created
>> +    * @param bda     a Weld spi view that represents {@code archive}
>> +    */
>> +   public void archiveVisible(Archive archive, BeanDeploymentArchive bda);
>> +
>> +   /**
>> +    * Notifies that {@code archive} is being destroyed.
>> +    *
>> +    * @param archive the archive
>> +    */
>> +   public void archiveDestroyed(Archive archive);
>> +}
>>
>>
>> Property changes on: trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/ArchiveLifecycleListener.java
>> ___________________________________________________________________
>> Name: svn:keywords
>>    + Author Date Id Revision
>> Name: svn:eol-style
>>    + native
>>
>> Added: trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/ArchiveToClasspath.java
>> ===================================================================
>> --- trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/ArchiveToClasspath.java                            (rev 0)
>> +++ trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/ArchiveToClasspath.java    2010-07-25 19:55:55 UTC (rev 107075)
>> @@ -0,0 +1,98 @@
>> +/*
>> + * JBoss, Home of Professional Open Source.
>> + * Copyright 2008, Red Hat Middleware LLC, and individual contributors
>> + * as indicated by the @author tags. See the copyright.txt file in the
>> + * distribution for a full listing of individual contributors.
>> + *
>> + * This is free software; you can redistribute it and/or modify it
>> + * under the terms of the GNU Lesser General Public License as
>> + * published by the Free Software Foundation; either version 2.1 of
>> + * the License, or (at your option) any later version.
>> + *
>> + * This software is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
>> + * Lesser General Public License for more details.
>> + *
>> + * You should have received a copy of the GNU Lesser General Public
>> + * License along with this software; if not, write to the Free
>> + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
>> + * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
>> + */
>> +package org.jboss.weld.integration.deployer.env.bda;
>> +
>> +import java.util.ArrayList;
>> +import java.util.Collection;
>> +import java.util.Iterator;
>> +
>> +import org.jboss.weld.bootstrap.spi.BeanDeploymentArchive;
>> +
>> +/**
>> + * A Classpath adapter for an archive.
>> + * This is used when a single Archive is used as classpath for another Archive.
>> + *
>> + * @author<a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
>> + * @version $Revision$
>> + * @see Classpath
>> + */
>> +class ArchiveToClasspath implements Classpath, ArchiveLifecycleListener
>> +{
>> +   // the archive
>> +   private Archive archive;
>> +   // the bda corresponding to archive, if available
>> +   private Collection<BeanDeploymentArchive>  bda;
>> +   // an unitary collection containing archive
>> +   private Collection<Archive>  archives;
>> +
>> +   public String getName()
>> +   {
>> +      return archive.toString();
>> +   }
>> +
>> +   /**
>> +    * This method performs initialization of this classpath, setting the archive it
>> +    * represents.
>> +    * This classpath is not functional until this method is invoked.
>> +    */
>> +   public void addArchive(Archive archive)
>> +   {
>> +      this.archive = archive;
>> +      archives = new ArrayList<Archive>();
>> +      archives.add(archive);
>> +   }
>> +
>> +   public Iterator<Archive>  iterator()
>> +   {
>> +      return archives.iterator();
>> +   }
>> +
>> +   public Classpath getClasspath()
>> +   {
>> +      return archive.getClasspath();
>> +   }
>> +
>> +   public Collection<BeanDeploymentArchive>  getBDAs(BeanDeploymentArchive bda)
>> +   {
>> +      if (this.bda == null)
>> +      {
>> +         return archive.getClasspath().getBDAs(bda);
>> +      }
>> +      return this.bda;
>> +   }
>> +
>> +   public void archiveVisible(Archive archive, BeanDeploymentArchive bda)
>> +   {
>> +      this.bda = new ArrayList<BeanDeploymentArchive>();
>> +      this.bda.add(bda);
>> +   }
>> +
>> +   public void archiveDestroyed(Archive archive)
>> +   {
>> +      // do nothing, as this instance is also being destroyed
>> +   }
>> +
>> +   public String toString()
>> +   {
>> +      return archive.toString();
>> +   }
>> +}
>> \ No newline at end of file
>>
>>
>> Property changes on: trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/ArchiveToClasspath.java
>> ___________________________________________________________________
>> Name: svn:keywords
>>    + Author Date Id Revision
>> Name: svn:eol-style
>>    + native
>>
>> Added: trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/BeanDeploymentArchiveImpl.java
>> ===================================================================
>> --- trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/BeanDeploymentArchiveImpl.java                            (rev 0)
>> +++ trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/BeanDeploymentArchiveImpl.java    2010-07-25 19:55:55 UTC (rev 107075)
>> @@ -0,0 +1,106 @@
>> +/*
>> + * JBoss, Home of Professional Open Source.
>> + * Copyright 2008, Red Hat Middleware LLC, and individual contributors
>> + * as indicated by the @author tags. See the copyright.txt file in the
>> + * distribution for a full listing of individual contributors.
>> + *
>> + * This is free software; you can redistribute it and/or modify it
>> + * under the terms of the GNU Lesser General Public License as
>> + * published by the Free Software Foundation; either version 2.1 of
>> + * the License, or (at your option) any later version.
>> + *
>> + * This software is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
>> + * Lesser General Public License for more details.
>> + *
>> + * You should have received a copy of the GNU Lesser General Public
>> + * License along with this software; if not, write to the Free
>> + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
>> + * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
>> + */
>> +package org.jboss.weld.integration.deployer.env.bda;
>> +
>> +import java.net.URL;
>> +import java.util.Collection;
>> +
>> +import org.jboss.weld.bootstrap.api.ServiceRegistry;
>> +import org.jboss.weld.bootstrap.api.helpers.SimpleServiceRegistry;
>> +import org.jboss.weld.bootstrap.spi.BeanDeploymentArchive;
>> +import org.jboss.weld.ejb.spi.EjbDescriptor;
>> +
>> +/**
>> + * {@link BeanDeploymentArchive} implementation for JBoss AS.
>> + *
>> + * @author<a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
>> + * @version $Revision$
>> + */
>> +class BeanDeploymentArchiveImpl implements BeanDeploymentArchive
>> +{
>> +   // identifies this BDA
>> +   private final String id;
>> +
>> +   // the Archive that this BDA represents
>> +   private final Archive archive;
>> +
>> +   // the services provided by this BDA
>> +   private final ServiceRegistry services;
>> +
>> +   /**
>> +    * Constructor.
>> +    *
>> +    * @param id      the identifier name of this BeanDeploymentArchive
>> +    * @param archive the archive that this BeanDeploymentArchive represents
>> +    */
>> +   public BeanDeploymentArchiveImpl(String id, Archive archive)
>> +   {
>> +      this.id = id;
>> +      this.archive = archive;
>> +      this.services = new SimpleServiceRegistry();
>> +   }
>> +
>> +   public Collection<BeanDeploymentArchive>  getBeanDeploymentArchives()
>> +   {
>> +      return archive.getClasspath().getBDAs(this);
>> +   }
>> +
>> +   public Collection<Class<?>>  getBeanClasses()
>> +   {
>> +      return archive.getClasses();
>> +   }
>> +
>> +   public Collection<URL>  getBeansXml()
>> +   {
>> +      return archive.getXmlURLs();
>> +   }
>> +
>> +   public Collection<EjbDescriptor<?>>  getEjbs()
>> +   {
>> +      return archive.getEjbs();
>> +   }
>> +
>> +   public ServiceRegistry getServices()
>> +   {
>> +      return services;
>> +   }
>> +
>> +   public String getId()
>> +   {
>> +      return id;
>> +   }
>> +
>> +   /**
>> +    * Returns the archive that this BDA represents.
>> +    *
>> +    * @return the archive
>> +    */
>> +   public Archive getArchive()
>> +   {
>> +      return archive;
>> +   }
>> +
>> +   public String toString()
>> +   {
>> +      return archive.toString();
>> +   }
>> +}
>> \ No newline at end of file
>>
>>
>> Property changes on: trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/BeanDeploymentArchiveImpl.java
>> ___________________________________________________________________
>> Name: svn:keywords
>>    + Author Date Id Revision
>> Name: svn:eol-style
>>    + native
>>
>> Added: trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/Classpath.java
>> ===================================================================
>> --- trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/Classpath.java                            (rev 0)
>> +++ trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/Classpath.java    2010-07-25 19:55:55 UTC (rev 107075)
>> @@ -0,0 +1,76 @@
>> +/*
>> + * JBoss, Home of Professional Open Source.
>> + * Copyright 2008, Red Hat Middleware LLC, and individual contributors
>> + * as indicated by the @author tags. See the copyright.txt file in the
>> + * distribution for a full listing of individual contributors.
>> + *
>> + * This is free software; you can redistribute it and/or modify it
>> + * under the terms of the GNU Lesser General Public License as
>> + * published by the Free Software Foundation; either version 2.1 of
>> + * the License, or (at your option) any later version.
>> + *
>> + * This software is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
>> + * Lesser General Public License for more details.
>> + *
>> + * You should have received a copy of the GNU Lesser General Public
>> + * License along with this software; if not, write to the Free
>> + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
>> + * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
>> + */
>> +package org.jboss.weld.integration.deployer.env.bda;
>> +
>> +import java.util.Collection;
>> +import java.util.Iterator;
>> +
>> +import org.jboss.weld.bootstrap.spi.BeanDeploymentArchive;
>> +
>> +/**
>> + * An archive classpath keeps track of the archives that are visible to an archive.
>> + * It also works on BDA level, i.e., it can tell which BDAs are visible to a specific BDA.
>> + *
>> + * @author<a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
>> + * @version $Revision$
>> + */
>> +public interface Classpath extends Iterable<Archive>
>> +{
>> +   /**
>> +    * Returns a name that identifies this classpath.
>> +    *
>> +    * @return the name of this classpath
>> +    */
>> +   public String getName();
>> +
>> +   /**
>> +    * Adds an archive to this classpath. When an archive is added to a classpath, the
>> +    * corresponding BeanDeploymentArchive, when available, is automatically part of this
>> +    * classpath as well.
>> +    *
>> +    * @param archive an archive
>> +    */
>> +   public void addArchive(Archive archive);
>> +
>> +   /**
>> +    * Returns an iterator over the set of archives contained in this classpath.
>> +    *
>> +    * @return an iterator for iterating over all archives that are part of this classpath
>> +    */
>> +   Iterator<Archive>  iterator();
>> +
>> +   /**
>> +    * Returns the parent classpath of this classpath.
>> +    *
>> +    * @return the parent classpath of this classpath
>> +    */
>> +   Classpath getClasspath();
>> +
>> +   /**
>> +    * Returns the collection of all BeanDeploymentArchive instances reachable from
>> +    * {@code bda}.
>> +    *
>> +    * @param bda the BeanDeploymentArchive that is performing this query
>> +    * @return    a collection of all BDAs visible to {@code bda}
>> +    */
>> +   public Collection<BeanDeploymentArchive>  getBDAs(BeanDeploymentArchive bda);
>> +}
>>
>>
>> Property changes on: trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/Classpath.java
>> ___________________________________________________________________
>> Name: svn:keywords
>>    + Author Date Id Revision
>> Name: svn:eol-style
>>    + native
>>
>> Added: trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/ClasspathFactory.java
>> ===================================================================
>> --- trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/ClasspathFactory.java                            (rev 0)
>> +++ trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/ClasspathFactory.java    2010-07-25 19:55:55 UTC (rev 107075)
>> @@ -0,0 +1,151 @@
>> +/*
>> + * JBoss, Home of Professional Open Source.
>> + * Copyright 2008, Red Hat Middleware LLC, and individual contributors
>> + * as indicated by the @author tags. See the copyright.txt file in the
>> + * distribution for a full listing of individual contributors.
>> + *
>> + * This is free software; you can redistribute it and/or modify it
>> + * under the terms of the GNU Lesser General Public License as
>> + * published by the Free Software Foundation; either version 2.1 of
>> + * the License, or (at your option) any later version.
>> + *
>> + * This software is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
>> + * Lesser General Public License for more details.
>> + *
>> + * You should have received a copy of the GNU Lesser General Public
>> + * License along with this software; if not, write to the Free
>> + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
>> + * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
>> + */
>> +package org.jboss.weld.integration.deployer.env.bda;
>> +
>> +import java.lang.ref.WeakReference;
>> +import java.util.Map;
>> +import java.util.WeakHashMap;
>> +
>> +import org.jboss.classloader.plugins.loader.ClassLoaderToLoaderAdapter;
>> +import org.jboss.classloader.spi.ClassLoaderDomain;
>> +import org.jboss.classloader.spi.ClassLoaderSystem;
>> +import org.jboss.classloader.spi.Loader;
>> +import org.jboss.classloading.spi.dependency.Module;
>> +
>> +/**
>> + * Given the ClassLoader that is loading an archive during deployment, this factory
>> + * creates the corresponding classpath.
>> + *
>> + * @author<a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
>> + * @version $Revision$
>> + */
>> +class ClasspathFactory
>> +{
>> +   private static final ClasspathFactory instance = new ClasspathFactory();
>> +
>> +   /**
>> +    * Returns the singleton instance.
>> +    *
>> +    * @return the ClasspathFactory instance
>> +    */
>> +   public static final ClasspathFactory getInstance()
>> +   {
>> +      return instance;
>> +   }
>> +
>> +   // the default classpath, corresponds to DefaultDomain
>> +   public static final Classpath DEFAULT = new  ClasspathImpl("DefaultDomain");
>> +
>> +   private static final ClassLoaderDomain DEFAULT_DOMAIN = ClassLoaderSystem.getInstance().getDefaultDomain();
>> +
>> +   // the ClassLoaderSystem
>> +   private final ClassLoaderSystem system;
>> +
>> +   // a list of domains
>> +   private final Map<Loader, WeakReference<Classpath>>  domainToClasspath;
>> +
>> +   private ClasspathFactory()
>> +   {
>> +      domainToClasspath = new WeakHashMap<Loader, WeakReference<Classpath>>();
>> +      system = ClassLoaderSystem.getInstance();
>> +   }
>> +
>> +   /**
>> +    * Creates the Classpath corresponding to ClassLoader.
>> +    *
>> +    * @param classLoader the ClassLoader
>> +    * @return            a classpath that contains a list of the archives visible to
>> +    *                    ClassLoader.
>> +    */
>> +   public Classpath create(ClassLoader classLoader)
>> +   {
>> +      Module module = SecurityActions.getModuleForClassLoader(classLoader);
>> +      ClassLoaderDomain domain = null;
>> +      if (module != null&&  module.getDeterminedParentDomainName() != null)
>> +      {
>> +         domain = system.getDomain(module.getDeterminedDomainName());
>> +      }
>> +      return getClasspath(classLoader, domain);
>> +   }
>> +
>> +   // FIXME: remove classLoader parameter!
>> +   private Classpath getClasspath(ClassLoader cl, Loader domain)
>> +   {
>> +      if (domain == null || domain == DEFAULT_DOMAIN)
>> +      {
>> +         return DEFAULT;
>> +      }
>> +      synchronized(domain)
>> +      {
>> +         Classpath classpath = getClasspath(domain);
>> +         if (classpath == null)
>> +         {
>> +            if (domain instanceof ClassLoaderToLoaderAdapter)
>> +            {
>> +               ClassLoaderToLoaderAdapter cl2la = (ClassLoaderToLoaderAdapter) domain;
>> +               ClassLoader unitLoader = SecurityActions.getClassLoader(cl2la);
>> +               ArchiveInfo archiveInfo = unitLoader == null? null: ArchiveInfo.getInstance(unitLoader);
>> +               if (archiveInfo == null)
>> +               {
>> +                  classpath = new ClasspathImpl(domain.toString());
>> +               }
>> +               else
>> +               {
>> +                  classpath = archiveInfo.getClasspathAdapter();
>> +               }
>> +            }
>> +            else
>> +            {
>> +               if (domain instanceof ClassLoaderDomain)
>> +               {
>> +                  ClassLoaderDomain clDomain = (ClassLoaderDomain) domain;
>> +                  Classpath parentClasspath = getClasspath(null, clDomain.getParent());
>> +                  classpath = new ClasspathImpl(clDomain.getName(), parentClasspath);
>> +               }
>> +               else
>> +               {
>> +                  throw new RuntimeException("Domain is of unexpected type: " + domain + " - " + domain.getClass());
>> +               }
>> +            }
>> +            addClasspath(domain, classpath);
>> +         }
>> +         return classpath;
>> +      }
>> +   }
>> +
>> +   // FIXME: getCachedClassPath
>> +   private Classpath getClasspath(Loader domain)
>> +   {
>> +      WeakReference<Classpath>  ref = domainToClasspath.get(domain);
>> +      if (ref == null)
>> +      {
>> +         return null;
>> +      }
>> +      return ref.get();
>> +   }
>> +
>> +   // FIXME addClasspathToCache
>> +   private void addClasspath(Loader domain, Classpath domainClasspath)
>> +   {
>> +      domainToClasspath.put(domain, new WeakReference<Classpath>(domainClasspath));
>> +   }
>> +}
>> \ No newline at end of file
>>
>>
>> Property changes on: trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/ClasspathFactory.java
>> ___________________________________________________________________
>> Name: svn:keywords
>>    + Author Date Id Revision
>> Name: svn:eol-style
>>    + native
>>
>> Added: trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/ClasspathImpl.java
>> ===================================================================
>> --- trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/ClasspathImpl.java                            (rev 0)
>> +++ trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/ClasspathImpl.java    2010-07-25 19:55:55 UTC (rev 107075)
>> @@ -0,0 +1,139 @@
>> +/*
>> + * JBoss, Home of Professional Open Source.
>> + * Copyright 2008, Red Hat Middleware LLC, and individual contributors
>> + * as indicated by the @author tags. See the copyright.txt file in the
>> + * distribution for a full listing of individual contributors.
>> + *
>> + * This is free software; you can redistribute it and/or modify it
>> + * under the terms of the GNU Lesser General Public License as
>> + * published by the Free Software Foundation; either version 2.1 of
>> + * the License, or (at your option) any later version.
>> + *
>> + * This software is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
>> + * Lesser General Public License for more details.
>> + *
>> + * You should have received a copy of the GNU Lesser General Public
>> + * License along with this software; if not, write to the Free
>> + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
>> + * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
>> + */
>> +package org.jboss.weld.integration.deployer.env.bda;
>> +
>> +import java.util.ArrayList;
>> +import java.util.Collection;
>> +import java.util.Iterator;
>> +
>> +import org.jboss.weld.bootstrap.spi.BeanDeploymentArchive;
>> +
>> +/**
>> + * Na?ve implementation of Classpath. This implementation retrieves the
>> + * BeanDeploymentArchives from the contained archives whenever the BDA collection is
>> + * requested, and allows for duplicates in the collection.
>> + *
>> + * @author<a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
>> + * @version $Revision$
>> + */
>> +class ClasspathImpl implements Classpath, ArchiveLifecycleListener
>> +{
>> +   private Collection<Archive>  archives = new ArrayList<Archive>();
>> +   private Classpath classpath;
>> +   private final String name;
>> +
>> +   /**
>> +    * Constructor.
>> +    *
>> +    * @param name     the name of this classpath
>> +    * @param archives the list of archives contained in this classpath
>> +    */
>> +   public ClasspathImpl (String name, Archive... archives)
>> +   {
>> +      this.name = name;
>> +      for (Archive archive: archives)
>> +      {
>> +         this.archives.add(archive);
>> +      }
>> +   }
>> +
>> +   /**
>> +    * Constructor.
>> +    *
>> +    * @param name      the name of this classpath
>> +    * @param classpath contain archives that are reachable from this classpath
>> +    * @param archives the list of archives contained in this classpath
>> +    */
>> +   public ClasspathImpl (String name, Classpath classpath, Archive... archives)
>> +   {
>> +      this(name, archives);
>> +      this.classpath = classpath;
>> +   }
>> +
>> +   public String getName()
>> +   {
>> +      return this.name;
>> +   }
>> +
>> +   public void addArchive(Archive archive)
>> +   {
>> +      archives.add(archive);
>> +      archive.addLifecycleListener(this);
>> +   }
>> +
>> +   public Iterator<Archive>  iterator()
>> +   {
>> +      return archives.iterator();
>> +   }
>> +
>> +   public Classpath getClasspath()
>> +   {
>> +      return this.classpath;
>> +   }
>> +
>> +   public Collection<BeanDeploymentArchive>  getBDAs(BeanDeploymentArchive bda)
>> +   {
>> +      if (archives.isEmpty()&&  classpath != null)
>> +      {
>> +         return classpath.getBDAs(bda);
>> +      }
>> +      Collection<BeanDeploymentArchive>  bdas = getBDAsFromArchives();
>> +      if (bdas.isEmpty()&&  classpath != null)
>> +      {
>> +         return classpath.getBDAs(bda);
>> +      }
>> +      if (classpath != null)
>> +      {
>> +         bdas.addAll(classpath.getBDAs(bda));
>> +      }
>> +      return bdas;
>> +   }
>> +
>> +   public String toString()
>> +   {
>> +      return "Classpath[" + name + "]";
>> +   }
>> +
>> +   private Collection<BeanDeploymentArchive>  getBDAsFromArchives()
>> +   {
>> +      Collection<BeanDeploymentArchive>  bdas = new ArrayList<BeanDeploymentArchive>();
>> +      for (Archive archive: archives)
>> +      {
>> +         BeanDeploymentArchive bda = archive.getBeanDeploymentArchive();
>> +         if (bda != null)
>> +         {
>> +            bdas.add(bda);
>> +         }
>> +      }
>> +      return bdas;
>> +   }
>> +
>> +   public void archiveVisible(Archive archive, BeanDeploymentArchive bda)
>> +   {
>> +      // do nothing, as this classpath impl doesn't keep track of bdas created
>> +   }
>> +
>> +   public void archiveDestroyed(Archive archive)
>> +   {
>> +      archives.remove(archive);
>> +   }
>> +}
>>
>>
>> Property changes on: trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/ClasspathImpl.java
>> ___________________________________________________________________
>> Name: svn:keywords
>>    + Author Date Id Revision
>> Name: svn:eol-style
>>    + native
>>
>> Added: trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/DeploymentImpl.java
>> ===================================================================
>> --- trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/DeploymentImpl.java                            (rev 0)
>> +++ trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/DeploymentImpl.java    2010-07-25 19:55:55 UTC (rev 107075)
>> @@ -0,0 +1,193 @@
>> +/*
>> + * JBoss, Home of Professional Open Source.
>> + * Copyright 2008, Red Hat Middleware LLC, and individual contributors
>> + * as indicated by the @author tags. See the copyright.txt file in the
>> + * distribution for a full listing of individual contributors.
>> + *
>> + * This is free software; you can redistribute it and/or modify it
>> + * under the terms of the GNU Lesser General Public License as
>> + * published by the Free Software Foundation; either version 2.1 of
>> + * the License, or (at your option) any later version.
>> + *
>> + * This software is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
>> + * Lesser General Public License for more details.
>> + *
>> + * You should have received a copy of the GNU Lesser General Public
>> + * License along with this software; if not, write to the Free
>> + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
>> + * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
>> + */
>> +package org.jboss.weld.integration.deployer.env.bda;
>> +
>> +import java.util.ArrayList;
>> +import java.util.Collection;
>> +import java.util.HashSet;
>> +import java.util.Iterator;
>> +
>> +import org.jboss.weld.bootstrap.api.ServiceRegistry;
>> +import org.jboss.weld.bootstrap.api.helpers.SimpleServiceRegistry;
>> +import org.jboss.weld.bootstrap.spi.BeanDeploymentArchive;
>> +import org.jboss.weld.bootstrap.spi.Deployment;
>> +import org.jboss.weld.ejb.spi.EjbDescriptor;
>> +
>> +/**
>> + * {@link Deployment} implementation for JBoss AS.
>> + *
>> + * @author<a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
>> + * @version $Revision$
>> + */
>> +public class DeploymentImpl implements Deployment
>> +{
>> +   // the name of this deployment
>> +   private String name;
>> +
>> +   // the collection of archives contained in this deployment
>> +   private final ArchiveCollection archives;
>> +
>> +   // the services provided by this deployment
>> +   private final ServiceRegistry services;
>> +
>> +   // a collection of all archives that have been loaded by this DeploymentImpl, i.e.
>> +   // created for the purpose of serving loadBeanDeploymentArchive
>> +   private Collection<Archive>  loadedArchives;
>> +
>> +   /**
>> +    * Constructor.
>> +    *
>> +    * @param name         a name that identifies this deployment
>> +    * @param archiveInfos the information that will be used for creation of the archives
>> +    *                     contained in this deployment
>> +    * @param ejbs         the ejb descriptors
>> +    */
>> +   public DeploymentImpl(String name, Collection<ArchiveInfo>  archiveInfos, Collection<EjbDescriptor<?>>  ejbs)
>> +   {
>> +      this.name = name;
>> +      this.archives = new ArchiveCollection();
>> +      for (ArchiveInfo archiveInfo: archiveInfos)
>> +      {
>> +         Archive archive = ArchiveFactory.createArchive(archiveInfo, ejbs);
>> +         archives.add(archive);
>> +         if (archive.hasXml())
>> +         {
>> +            archive.createBeanDeploymentArchive();
>> +         }
>> +      }
>> +      this.services = new SimpleServiceRegistry();
>> +   }
>> +
>> +   public Collection<BeanDeploymentArchive>  getBeanDeploymentArchives()
>> +   {
>> +      return archives.getBDAs();
>> +   }
>> +
>> +   public ServiceRegistry getServices()
>> +   {
>> +     return this.services;
>> +   }
>> +
>> +   public BeanDeploymentArchive loadBeanDeploymentArchive(Class<?>  beanClass)
>> +   {
>> +      // collection to mark the archives we have already searched
>> +      Collection<Archive>  searchedArchives = new HashSet<Archive>();
>> +      // collection to mark the classpaths we have already searched
>> +      Collection<Classpath>  searchedClasspaths = new HashSet<Classpath>();
>> +      // TODO -- why the search? beanClass' ClassLoader should be mapped to Archive?
>> +      // need to throw an IllegalArgumentException if the Archive is not reachable from
>> +      // the archives contained in the archives of this deployment
>> +      Archive archive = findArchive(beanClass, archives, searchedArchives, searchedClasspaths);
>> +      if (archive == null)
>> +      {
>> +         boolean reachable = false;
>> +         for (Archive searchedArchive: searchedArchives)
>> +         {
>> +            if (searchedArchive.isClassVisible(beanClass))
>> +            {
>> +               reachable = true;
>> +               break;
>> +            }
>> +         }
>> +         if (!reachable)
>> +            throw new IllegalArgumentException("Bean class " + beanClass + " is not reachable from deployment " + this);
>> +         ArchiveInfo archiveInfo = new ArchiveInfo(SecurityActions.getClassLoader(beanClass));
>> +         archive = ArchiveFactory.createArchive(archiveInfo, new ArrayList<EjbDescriptor<?>>());
>> +         if (loadedArchives == null)
>> +         {
>> +            loadedArchives = new ArrayList<Archive>();
>> +         }
>> +         loadedArchives.add(archive);
>> +      }
>> +      archive.addClass(beanClass);
>> +      return archive.createBeanDeploymentArchive();
>> +   }
>> +
>> +   public void undeploy()
>> +   {
>> +      for(Iterator<Archive>  iterator = archives.iterator(); iterator.hasNext(); )
>> +      {
>> +         Archive archive = iterator.next();
>> +         iterator.remove();
>> +         archive.undeploy();
>> +      }
>> +      if (loadedArchives != null)
>> +      {
>> +         for (Archive archive: loadedArchives)
>> +         {
>> +            // FIXME this does not work ok
>> +            archive.undeploy();
>> +         }
>> +      }
>> +   }
>> +
>> +   public String toString()
>> +   {
>> +      return "Deployment[" + name + "]";
>> +   }
>> +
>> +   private Archive findArchive(Class<?>  beanClass, Iterable<Archive>  archives, Collection<Archive>  searchedArchives, Collection<Classpath>  searchedClasspaths)
>> +   {
>> +      synchronized(archives) // TODO potential for a deadlock?
>> +      {
>> +         for (Archive archive: archives)
>> +         {
>> +            if (!searchedArchives.contains(archive))
>> +            {
>> +               if (archive.containsClass(beanClass))
>> +               {
>> +                  return archive;
>> +               }
>> +               else
>> +               {
>> +                  searchedArchives.add(archive);
>> +                  Archive found = searchThroughClasspath(archive.getClasspath(), beanClass, searchedArchives, searchedClasspaths);
>> +                  if (found != null)
>> +                  {
>> +                     return found;
>> +                  }
>> +               }
>> +            }
>> +         }
>> +      }
>> +      return null;
>> +   }
>> +
>> +   private Archive searchThroughClasspath(Classpath classpath, Class<?>  beanClass, Collection<Archive>  searchedArchives, Collection<Classpath>  searchedClasspaths)
>> +   {
>> +      if (!searchedClasspaths.contains(classpath))
>> +      {
>> +         searchedClasspaths.add(classpath);
>> +         Archive found = findArchive(beanClass, classpath, searchedArchives, searchedClasspaths);
>> +         if (found != null)
>> +         {
>> +            return found;
>> +         }
>> +         Classpath parentClasspath = classpath.getClasspath();
>> +         if (parentClasspath != null)
>> +         {
>> +            return searchThroughClasspath(classpath.getClasspath(), beanClass, searchedArchives, searchedClasspaths);
>> +         }
>> +      }
>> +      return null;
>> +   }
>> +}
>>
>>
>> Property changes on: trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/DeploymentImpl.java
>> ___________________________________________________________________
>> Name: svn:keywords
>>    + Author Date Id Revision
>> Name: svn:eol-style
>>    + native
>>
>> Added: trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/NoDuplicatesClasspath.java
>> ===================================================================
>> --- trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/NoDuplicatesClasspath.java                            (rev 0)
>> +++ trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/NoDuplicatesClasspath.java    2010-07-25 19:55:55 UTC (rev 107075)
>> @@ -0,0 +1,170 @@
>> +/*
>> + * JBoss, Home of Professional Open Source.
>> + * Copyright 2008, Red Hat Middleware LLC, and individual contributors
>> + * as indicated by the @author tags. See the copyright.txt file in the
>> + * distribution for a full listing of individual contributors.
>> + *
>> + * This is free software; you can redistribute it and/or modify it
>> + * under the terms of the GNU Lesser General Public License as
>> + * published by the Free Software Foundation; either version 2.1 of
>> + * the License, or (at your option) any later version.
>> + *
>> + * This software is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
>> + * Lesser General Public License for more details.
>> + *
>> + * You should have received a copy of the GNU Lesser General Public
>> + * License along with this software; if not, write to the Free
>> + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
>> + * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
>> + */
>> +package org.jboss.weld.integration.deployer.env.bda;
>> +
>> +import java.util.ArrayList;
>> +import java.util.Collection;
>> +import java.util.HashSet;
>> +import java.util.Iterator;
>> +
>> +import org.jboss.weld.bootstrap.spi.BeanDeploymentArchive;
>> +
>> +/**
>> + * Classpath implementation that avoids duplication and keeps an updated list of
>> + * BeanDeploymentArchives, thus avoiding the creation of this list every time it is
>> + * retrieved.
>> + *
>> + * @author<a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
>> + * @version $Revision$
>> + */
>> +class NoDuplicatesClasspath extends ArchiveCollection implements Classpath
>> +{
>> +   // the classpath name
>> +   private final String name;
>> +
>> +   // A reference to this classpath. This reference BDA is returned as the single element
>> +   // in the BDA collection every time it is requested by the non-reference BDAs
>> +   private BeanDeploymentArchive reference = null;
>> +
>> +   // A collection containing the reference BDA
>> +   private Collection<BeanDeploymentArchive>  referenceCollection = new ArrayList<BeanDeploymentArchive>();
>> +
>> +   // contains archives and BDAs reachable from this Classpath
>> +   private Classpath classpath;
>> +
>> +   /**
>> +    * Constructor.
>> +    *
>> +    * @param name     a name that identifies this classpath
>> +    * @param archives the list of archives contained in this classpath
>> +    */
>> +   public NoDuplicatesClasspath (String name, Archive... archives)
>> +   {
>> +      this.name = name;
>> +      super.archives = new HashSet<Archive>();
>> +      for (Archive archive: archives)
>> +      {
>> +         add(archive);
>> +      }
>> +   }
>> +
>> +   /**
>> +    * Constructor.
>> +    *
>> +    * @param name     a name that identifies this classpath
>> +    * @param archives the list of archives contained in this classpath
>> +    */
>> +   public NoDuplicatesClasspath (String name, Classpath classpath, Archive... archives)
>> +   {
>> +      this(name, archives);
>> +      this.classpath = classpath;
>> +   }
>> +
>> +   public String getName()
>> +   {
>> +      return this.name;
>> +   }
>> +
>> +   public void addArchive(Archive archive)
>> +   {
>> +      add(archive);
>> +   }
>> +
>> +   public Classpath getClasspath()
>> +   {
>> +      return this.classpath;
>> +   }
>> +
>> +   public Collection<BeanDeploymentArchive>  getBDAs(BeanDeploymentArchive bda)
>> +   {
>> +      // if reference is null, it means that no BDA is contained in this classpath
>> +      if (reference == null&&  classpath != null)
>> +      {
>> +         return classpath.getBDAs(bda);
>> +      }
>> +      // only the reference BDA points to the other BDAs in this classpath
>> +      if (bda == reference)
>> +      {
>> +         return getBDAs();
>> +      }
>> +      else
>> +      {
>> +         // all other BDAs point only to reference BDA
>> +         return referenceCollection;
>> +      }
>> +   }
>> +
>> +   @Override
>> +   public void archiveVisible(Archive archive, BeanDeploymentArchive bda)
>> +   {
>> +      synchronized(bdas)
>> +      {
>> +         if (reference == null)
>> +         {
>> +            reference = bda;
>> +            referenceCollection.add(bda);
>> +         }
>> +         else
>> +         {
>> +            //only add to BDAs collection the BDAs that are not reference
>> +            super.archiveVisible(archive, bda);
>> +         }
>> +      }
>> +   }
>> +
>> +   @Override
>> +   public void archiveDestroyed(Archive archive)
>> +   {
>> +      BeanDeploymentArchive bda = archive.getBeanDeploymentArchive();
>> +      if (bda != null)
>> +      {
>> +         synchronized(bdas)
>> +         {
>> +            if (reference == bda)
>> +            {
>> +               reference = null;
>> +               referenceCollection.clear();
>> +               if (!bdas.isEmpty())
>> +               {
>> +                  Iterator<BeanDeploymentArchive>  iterator = bdas.iterator();
>> +                  reference = iterator.next();
>> +                  iterator.remove();
>> +                  referenceCollection.add(reference);
>> +               }
>> +            }
>> +            else
>> +            {
>> +               super.archiveDestroyed(archive);
>> +            }
>> +         }
>> +      }
>> +      synchronized(this)
>> +      {
>> +         archives.remove(archive);
>> +      }
>> +   }
>> +
>> +   public String toString()
>> +   {
>> +      return "Classpath[" + this.name + "]";
>> +   }
>> +}
>> \ No newline at end of file
>>
>>
>> Property changes on: trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/NoDuplicatesClasspath.java
>> ___________________________________________________________________
>> Name: svn:keywords
>>    + Author Date Id Revision
>> Name: svn:eol-style
>>    + native
>>
>> Added: trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/SecurityActions.java
>> ===================================================================
>> --- trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/SecurityActions.java                            (rev 0)
>> +++ trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/SecurityActions.java    2010-07-25 19:55:55 UTC (rev 107075)
>> @@ -0,0 +1,95 @@
>> +/*
>> + * JBoss, Home of Professional Open Source.
>> + * Copyright 2006, Red Hat Middleware LLC, and individual contributors
>> + * as indicated by the @author tags. See the copyright.txt file in the
>> + * distribution for a full listing of individual contributors.
>> + *
>> + * This is free software; you can redistribute it and/or modify it
>> + * under the terms of the GNU Lesser General Public License as
>> + * published by the Free Software Foundation; either version 2.1 of
>> + * the License, or (at your option) any later version.
>> + *
>> + * This software is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
>> + * Lesser General Public License for more details.
>> + *
>> + * You should have received a copy of the GNU Lesser General Public
>> + * License along with this software; if not, write to the Free
>> + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
>> + * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
>> + */
>> +package org.jboss.weld.integration.deployer.env.bda;
>> +
>> +import java.lang.reflect.Method;
>> +import java.security.AccessController;
>> +import java.security.PrivilegedAction;
>> +
>> +import org.jboss.classloader.spi.base.BaseClassLoaderSource;
>> +import org.jboss.classloading.spi.dependency.ClassLoading;
>> +import org.jboss.classloading.spi.dependency.Module;
>> +
>> +/**
>> + * Executes privileged actions.
>> + *
>> + * @author<a href="flavia.rainone at jboss.com">Flavia Rainone</a>
>> + * @version $Revision$
>> + */
>> +class SecurityActions
>> +{
>> +   private static final Method getClassLoader;
>> +
>> +   static
>> +   {
>> +      getClassLoader = AccessController.doPrivileged(new PrivilegedAction<Method>()
>> +      {
>> +         public Method run()
>> +         {
>> +            try
>> +            {
>> +               Method method = BaseClassLoaderSource.class.getDeclaredMethod("getClassLoader");
>> +               method.setAccessible(true);
>> +               return method;
>> +            }
>> +            catch (NoSuchMethodException e)
>> +            {
>> +               throw new RuntimeException("Cannot get classloader from " + BaseClassLoaderSource.class.getName(), e);
>> +            }
>> +         }
>> +      });
>> +   }
>> +
>> +   static ClassLoader getClassLoader(BaseClassLoaderSource clSource)
>> +   {
>> +      try
>> +      {
>> +         return (ClassLoader)getClassLoader.invoke(clSource);
>> +      }
>> +      catch (Exception e)
>> +      {
>> +         throw new RuntimeException(e);
>> +      }
>> +   }
>> +
>> +   public static ClassLoader getClassLoader(final Class<?>  clazz)
>> +   {
>> +      return AccessController.doPrivileged(new PrivilegedAction<ClassLoader>()
>> +      {
>> +         public ClassLoader run()
>> +         {
>> +            return clazz.getClassLoader();
>> +         }
>> +      });
>> +   }
>> +
>> +   public static Module getModuleForClassLoader(final ClassLoader classLoader)
>> +   {
>> +      return AccessController.doPrivileged(new PrivilegedAction<Module>()
>> +      {
>> +         public Module run()
>> +         {
>> +            return ClassLoading.getModuleForClassLoader(classLoader);
>> +         }
>> +      });
>> +   }
>> +}
>>
>>
>> Property changes on: trunk/weld-int/deployer/src/main/java/org/jboss/weld/integration/deployer/env/bda/SecurityActions.java
>> ___________________________________________________________________
>> Name: svn:keywords
>>    + Author Date Id Revision
>> Name: svn:eol-style
>>    + native
>>
>> Added: trunk/weld-int/deployer/src/test/java/org/jboss/test/deployers/support/MockArchiveManifest.java
>> ===================================================================
>> --- trunk/weld-int/deployer/src/test/java/org/jboss/test/deployers/support/MockArchiveManifest.java                            (rev 0)
>> +++ trunk/weld-int/deployer/src/test/java/org/jboss/test/deployers/support/MockArchiveManifest.java    2010-07-25 19:55:55 UTC (rev 107075)
>> @@ -0,0 +1,107 @@
>> +/*
>> + * JBoss, Home of Professional Open Source.
>> + * Copyright 2008, Red Hat Middleware LLC, and individual contributors
>> + * as indicated by the @author tags. See the copyright.txt file in the
>> + * distribution for a full listing of individual contributors.
>> + *
>> + * This is free software; you can redistribute it and/or modify it
>> + * under the terms of the GNU Lesser General Public License as
>> + * published by the Free Software Foundation; either version 2.1 of
>> + * the License, or (at your option) any later version.
>> + *
>> + * This software is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
>> + * Lesser General Public License for more details.
>> + *
>> + * You should have received a copy of the GNU Lesser General Public
>> + * License along with this software; if not, write to the Free
>> + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
>> + * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
>> + */
>> +package org.jboss.test.deployers.support;
>> +
>> +import java.util.Map;
>> +
>> +import org.jboss.shrinkwrap.api.ArchivePath;
>> +import org.jboss.shrinkwrap.api.ArchivePaths;
>> +import org.jboss.shrinkwrap.api.Filter;
>> +import org.jboss.shrinkwrap.api.Node;
>> +import org.jboss.shrinkwrap.api.asset.ByteArrayAsset;
>> +import org.jboss.shrinkwrap.api.spec.EnterpriseArchive;
>> +import org.jboss.shrinkwrap.api.spec.JavaArchive;
>> +import org.jboss.shrinkwrap.api.spec.WebArchive;
>> +
>> +/**
>> + * @author<a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
>> + *
>> + * @version $Revision$
>> + */
>> +public class MockArchiveManifest
>> +{
>> +   private static Filter<ArchivePath>  EAR_MODULE_FILTER = new Filter<ArchivePath>(){
>> +
>> +      public boolean include(ArchivePath pathObject)
>> +      {
>> +         String path = pathObject.get();
>> +         // ear modules are not "/" and don't belong to /lib
>> +         return path.length()>  1&&  !path.startsWith("/lib");
>> +      }
>> +   };
>> +
>> +   public static void addCDIManifest(JavaArchive archive)
>> +   {
>> +      archive.addManifestResource(new ByteArrayAsset("<web-beans></web-beans>".getBytes()),
>> +               ArchivePaths.create("beans.xml"));
>> +   }
>> +
>> +   public static void addCDIManifest(WebArchive archive)
>> +   {
>> +      archive.add(new ByteArrayAsset("<beans/>".getBytes()),
>> +               ArchivePaths.create("WEB-INF/beans.xml"));
>> +   }
>> +
>> +   public static void addManifest(JavaArchive archive)
>> +   {
>> +      archive.addManifestResource(new ByteArrayAsset("<ejb-jar/>".getBytes()),
>> +               ArchivePaths.create("ejb-jar.xml"));
>> +   }
>> +
>> +   public static void addManifest(JavaArchive archive, boolean isCDI)
>> +   {
>> +      addManifest(archive);
>> +      if (isCDI)
>> +      {
>> +         addCDIManifest(archive);
>> +      }
>> +   }
>> +
>> +   public static void addManifest(WebArchive archive)
>> +   {
>> +      archive.add(new ByteArrayAsset("<web/>".getBytes()), ArchivePaths.create("WEB-INF/web.xml"));
>> +   }
>> +
>> +   public static void addManifest(WebArchive archive, boolean isCDI)
>> +   {
>> +      addManifest(archive);
>> +      if (isCDI)
>> +      {
>> +         addCDIManifest(archive);
>> +      }
>> +   }
>> +
>> +   public static void addManifest(EnterpriseArchive archive)
>> +   {
>> +      Map<ArchivePath, Node>  modules = archive.getContent(EAR_MODULE_FILTER);
>> +      StringBuffer appProperties = new StringBuffer();
>> +      for(ArchivePath archivePath: modules.keySet())
>> +      {
>> +         // remove leading '/' char
>> +         String path = archivePath.get().substring(1);
>> +         appProperties.append(path.replace('.', '_')).append("-module=").append(path);
>> +         appProperties.append('\n');
>> +      }
>> +      archive.addManifestResource(new ByteArrayAsset(appProperties.toString().getBytes()),
>> +               "application.properties");
>> +   }
>> +}
>>
>>
>> Property changes on: trunk/weld-int/deployer/src/test/java/org/jboss/test/deployers/support/MockArchiveManifest.java
>> ___________________________________________________________________
>> Name: svn:keywords
>>    + Author Date Id Revision
>> Name: svn:eol-style
>>    + native
>>
>> Modified: trunk/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/AbstractDeploymentTest.java
>> ===================================================================
>> --- trunk/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/AbstractDeploymentTest.java    2010-07-25 11:32:48 UTC (rev 107074)
>> +++ trunk/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/AbstractDeploymentTest.java    2010-07-25 19:55:55 UTC (rev 107075)
>> @@ -60,6 +60,10 @@
>>     {
>>        for (BeanDeploymentArchive bda : archives)
>>        {
>> +         if (result.contains(bda))
>> +         {
>> +            continue;
>> +         }
>>           result.add(bda);
>>           getArchives(result, bda.getBeanDeploymentArchives());
>>        }
>>
>> Added: trunk/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/AbstractEnvironmentTest.java
>> ===================================================================
>> --- trunk/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/AbstractEnvironmentTest.java                            (rev 0)
>> +++ trunk/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/AbstractEnvironmentTest.java    2010-07-25 19:55:55 UTC (rev 107075)
>> @@ -0,0 +1,217 @@
>> +/*
>> + * JBoss, Home of Professional Open Source.
>> + * Copyright 2008, Red Hat Middleware LLC, and individual contributors
>> + * as indicated by the @author tags. See the copyright.txt file in the
>> + * distribution for a full listing of individual contributors.
>> + *
>> + * This is free software; you can redistribute it and/or modify it
>> + * under the terms of the GNU Lesser General Public License as
>> + * published by the Free Software Foundation; either version 2.1 of
>> + * the License, or (at your option) any later version.
>> + *
>> + * This software is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
>> + * Lesser General Public License for more details.
>> + *
>> + * You should have received a copy of the GNU Lesser General Public
>> + * License along with this software; if not, write to the Free
>> + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
>> + * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
>> + */
>> +package org.jboss.test.deployers.test;
>> +
>> +import java.net.URL;
>> +import java.util.Collection;
>> +import java.util.HashSet;
>> +import java.util.Iterator;
>> +import java.util.Set;
>> +
>> +import org.jboss.shrinkwrap.api.ShrinkWrap;
>> +import org.jboss.shrinkwrap.api.container.LibraryContainer;
>> +import org.jboss.shrinkwrap.api.spec.JavaArchive;
>> +import org.jboss.shrinkwrap.api.spec.WebArchive;
>> +import org.jboss.test.deployers.support.MockArchiveManifest;
>> +import org.jboss.test.deployers.support.crm.CrmWebBean;
>> +import org.jboss.test.deployers.support.jar.PlainJavaBean;
>> +import org.jboss.test.deployers.support.ui.UIWebBean;
>> +import org.jboss.test.deployers.support.web.ServletWebBean;
>> +
>> +/**
>> + * Abstract Environment test case.
>> + *
>> + * @author<a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
>> + * @param E the type of environment this test applies to
>> + */
>> +public abstract class AbstractEnvironmentTest<E>  extends AbstractWeldTest
>> +{
>> +   protected static final String EAR_NAME = "simple.ear";
>> +   protected static final String EJB_JAR_NAME = "ejb.jar";
>> +   protected static final String WAR_NAME = "simple.war";
>> +
>> +   public AbstractEnvironmentTest(String name)
>> +   {
>> +      super(name);
>> +   }
>> +
>> +   private static void addExpectedResource(Set<String>  expected, String unit)
>> +   {
>> +      addExpectedResource(expected, unit, "/META-INF/beans.xml");
>> +   }
>> +
>> +   private static void addExpectedResource(Set<String>  expected, String unit, String suffix)
>> +   {
>> +      expected.add(unit + suffix);
>> +   }
>> +
>> +   private static void addExpectedClass(Set<String>  expected, Class<?>  clazz)
>> +   {
>> +      expected.add(clazz.getName());
>> +   }
>> +
>> +   private void assertExpectedClasses(E environment, Set<String>  expected)
>> +   {
>> +      Collection<Class<?>>  weldClasses = getClasses(environment);
>> +      assertNotNull(weldClasses);
>> +      assertTrue("Unexpected empty weld classes collection", expected.isEmpty() || !weldClasses.isEmpty());
>> +      for (Class<?>  clazz : weldClasses)
>> +      {
>> +         assertTrue("Found unexpected class: " + clazz.getName(), expected.remove(clazz.getName()));
>> +      }
>> +      assertEmpty("Should be emtpy, missing " + expected, expected);
>> +   }
>> +
>> +   protected void assertExpectedClasses(E environment, Class<?>... classes)
>> +   {
>> +      Set<String>  expected = new HashSet<String>();
>> +      for(Class<?>  clazz: classes)
>> +      {
>> +         addExpectedClass(expected, clazz);
>> +      }
>> +      assertExpectedClasses(environment, expected);
>> +   }
>> +
>> +   private void assertExpectedResources(E environment, Set<String>  expected)
>> +   {
>> +      Collection<URL>  weldXml = getResources(environment);
>> +      assertNotNull(weldXml);
>> +      assertTrue("Unexpected empty weld XML collection", expected.isEmpty() || !weldXml.isEmpty());
>> +      for (URL url : weldXml)
>> +      {
>> +         boolean found = false;
>> +         Iterator<String>  iter = expected.iterator();
>> +         while (iter.hasNext())
>> +         {
>> +            String expectedURL = iter.next();
>> +            if (url.toExternalForm().endsWith(expectedURL))
>> +            {
>> +               iter.remove();
>> +               found = true;
>> +               break;
>> +            }
>> +         }
>> +         assertTrue("Unexpected wb url: " + url, found);
>> +      }
>> +      assertEmpty("Should be emtpy, missing " + expected, expected);
>> +   }
>> +
>> +   protected void assertExpectedResources(E environment, String... units)
>> +   {
>> +      Set<String>  expected = new HashSet<String>();
>> +      for (String unit: units)
>> +      {
>> +         addExpectedResource(expected, unit);
>> +      }
>> +      assertExpectedResources(environment, expected);
>> +   }
>> +
>> +   protected void assertExpectedWarResources(E environment, String warUnit, boolean warResourceExpected, String... units)
>> +   {
>> +      Set<String>  expected = new HashSet<String>();
>> +      if (warResourceExpected)
>> +         addExpectedResource(expected, warUnit, "/WEB-INF/beans.xml");
>> +      for (String unit: units)
>> +      {
>> +         addExpectedResource(expected, warUnit, "/WEB-INF/lib/" + unit + "/META-INF/beans.xml");
>> +      }
>> +      assertExpectedResources(environment, expected);
>> +   }
>> +
>> +   protected JavaArchive createEjbJar(boolean jarCDI)
>> +   {
>> +      return createEjbJar(EJB_JAR_NAME, jarCDI, PlainJavaBean.class);
>> +   }
>> +
>> +   protected JavaArchive createEjbJar(String jarName, boolean jarCDI, Class<?>... classes)
>> +   {
>> +      JavaArchive ejbJar = ShrinkWrap.create(JavaArchive.class, jarName);
>> +      for (Class<?>  clazz: classes)
>> +      {
>> +         ejbJar.addClass(clazz);
>> +      }
>> +      MockArchiveManifest.addManifest(ejbJar, jarCDI);
>> +      return ejbJar;
>> +   }
>> +
>> +   protected WebArchive createWar(boolean warCDI)
>> +   {
>> +      return createWar(WAR_NAME, warCDI, ServletWebBean.class);
>> +   }
>> +
>> +   protected WebArchive createWar(String warName, boolean warCDI, Class<?>... classes)
>> +   {
>> +      WebArchive war = ShrinkWrap.create(WebArchive.class, warName);
>> +      for (Class<?>  clazz: classes)
>> +      {
>> +         war.addClass(clazz);
>> +      }
>> +      MockArchiveManifest.addManifest(war, warCDI);
>> +      return war;
>> +   }
>> +
>> +   protected WebArchive createWarWithLib(boolean warCDI, boolean libCDI)
>> +   {
>> +      WebArchive war = createWar(warCDI);
>> +      createLib(war, "lib.jar", libCDI, UIWebBean.class);
>> +      return war;
>> +   }
>> +
>> +   protected WebArchive createWarWithLibs(boolean warCDI, boolean lib1CDI, boolean lib2CDI)
>> +   {
>> +      WebArchive war = createWar(warCDI);
>> +      createLib(war, "lib1.jar", lib1CDI, UIWebBean.class);
>> +      createLib(war, "lib2.jar", lib2CDI, CrmWebBean.class);
>> +      return war;
>> +   }
>> +
>> +   protected void createLib(LibraryContainer<?>  archive, String libName, boolean cdi, Class<?>... classes)
>> +   {
>> +      JavaArchive lib = ShrinkWrap.create(JavaArchive.class, libName);
>> +      if (cdi)
>> +      {
>> +         MockArchiveManifest.addCDIManifest(lib);
>> +      }
>> +      for (Class<?>  libClass: classes)
>> +      {
>> +         lib.addClass(libClass);
>> +      }
>> +      archive.addLibrary(lib);
>> +   }
>> +
>> +   /**
>> +    * Returns the classes recorded in the environment.
>> +    *
>> +    * @param environment the environment
>> +    * @return the list of classes that have been found in the environment
>> +    */
>> +   protected abstract Collection<Class<?>>  getClasses(E environment);
>> +
>> +   /**
>> +    * Returns the Weld XML resources recorded in the environment.
>> +    *
>> +    * @param environment the environment
>> +    * @return the list of URLs pointing to the Weld XML files that have been found in the
>> +    *         environment
>> +    */
>> +   protected abstract Collection<URL>  getResources(E environment);
>> +}
>>
>>
>> Property changes on: trunk/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/AbstractEnvironmentTest.java
>> ___________________________________________________________________
>> Name: svn:keywords
>>    + Author Date Id Revision
>> Name: svn:eol-style
>>    + native
>>
>> Added: trunk/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/AbstractSingleArchiveTest.java
>> ===================================================================
>> --- trunk/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/AbstractSingleArchiveTest.java                            (rev 0)
>> +++ trunk/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/AbstractSingleArchiveTest.java    2010-07-25 19:55:55 UTC (rev 107075)
>> @@ -0,0 +1,431 @@
>> +/*
>> + * JBoss, Home of Professional Open Source.
>> + * Copyright 2008, Red Hat Middleware LLC, and individual contributors
>> + * as indicated by the @author tags. See the copyright.txt file in the
>> + * distribution for a full listing of individual contributors.
>> + *
>> + * This is free software; you can redistribute it and/or modify it
>> + * under the terms of the GNU Lesser General Public License as
>> + * published by the Free Software Foundation; either version 2.1 of
>> + * the License, or (at your option) any later version.
>> + *
>> + * This software is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
>> + * Lesser General Public License for more details.
>> + *
>> + * You should have received a copy of the GNU Lesser General Public
>> + * License along with this software; if not, write to the Free
>> + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
>> + * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
>> + */
>> +package org.jboss.test.deployers.test;
>> +
>> +import org.jboss.deployers.structure.spi.DeploymentUnit;
>> +import org.jboss.shrinkwrap.api.ShrinkWrap;
>> +import org.jboss.shrinkwrap.api.spec.EnterpriseArchive;
>> +import org.jboss.shrinkwrap.api.spec.JavaArchive;
>> +import org.jboss.shrinkwrap.api.spec.WebArchive;
>> +import org.jboss.test.deployers.support.MockArchiveManifest;
>> +import org.jboss.test.deployers.support.crm.CrmWebBean;
>> +import org.jboss.test.deployers.support.ejb.BusinessInterface;
>> +import org.jboss.test.deployers.support.ejb.MySLSBean;
>> +import org.jboss.test.deployers.support.ext.ExternalWebBean;
>> +import org.jboss.test.deployers.support.jar.PlainJavaBean;
>> +import org.jboss.test.deployers.support.jsf.NotWBJsfBean;
>> +import org.jboss.test.deployers.support.ui.UIWebBean;
>> +import org.jboss.test.deployers.support.util.SomeUtil;
>> +import org.jboss.test.deployers.support.web.ServletWebBean;
>> +import org.jboss.vfs.VirtualFile;
>> +
>> +/**
>> + * Abstract test case that contains scenarios involving the deployment of a single archive.
>> + * This test does not contain test scenarios that assert the behaviour when more than one
>> + * archive is deployed at the same time.
>> + *
>> + * @author<a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
>> + * @param E the type of environment this test applies to
>> + */
>> +public abstract class AbstractSingleArchiveTest<E>  extends AbstractEnvironmentTest<E>
>> +{
>> +   public AbstractSingleArchiveTest(String name)
>> +   {
>> +      super(name);
>> +   }
>> +
>> +   protected DeploymentUnit unit;
>> +
>> +   public void testEjbJar() throws Exception
>> +   {
>> +      JavaArchive ejbJar = createEjbJar(true);
>> +      unit = assertDeploy(ejbJar);
>> +
>> +      E environment = assertSingleEnvironment(EJB_JAR_NAME);
>> +      assertExpectedClasses(environment, PlainJavaBean.class);
>> +      assertExpectedResources(environment, "ejb.jar");
>> +   }
>> +
>> +   public void testEjbJarWithoutXml() throws Exception
>> +   {
>> +      JavaArchive ejbJar = createEjbJar(false);
>> +      unit = assertDeploy(ejbJar);
>> +
>> +      assertEmptyEnvironment();
>> +   }
>> +
>> +   public void testEjbJarInEar() throws Exception
>> +   {
>> +      EnterpriseArchive ear = ShrinkWrap.create(EnterpriseArchive.class, EAR_NAME);
>> +      JavaArchive ejbJar = createEjbJar(true);
>> +      ear.addModule(ejbJar);
>> +      MockArchiveManifest.addManifest(ear);
>> +      unit = assertDeploy(ear);
>> +
>> +      E environment = assertSingleEnvironment(EAR_NAME);
>> +      assertExpectedClasses(environment, PlainJavaBean.class);
>> +      assertExpectedResources(environment, unit.getSimpleName() + "/ejb.jar");
>> +   }
>> +
>> +   public void testEjbJarWithoutXmlInEar() throws Exception
>> +   {
>> +      EnterpriseArchive ear = ShrinkWrap.create(EnterpriseArchive.class, EAR_NAME);
>> +      JavaArchive ejbJar = createEjbJar(false);
>> +      ear.addModule(ejbJar);
>> +      MockArchiveManifest.addManifest(ear);
>> +      unit = assertDeploy(ear);
>> +
>> +      assertEmptyEnvironment();
>> +   }
>> +
>> +   public void testEjbJarsInEar() throws Exception
>> +   {
>> +      EnterpriseArchive ear = ShrinkWrap.create(EnterpriseArchive.class, EAR_NAME);
>> +      JavaArchive ejbJar1 = createEjbJar("ejbJar1.jar", true, PlainJavaBean.class);
>> +      ear.addModule(ejbJar1);
>> +      JavaArchive ejbJar2 = createEjbJar("ejbJar2.jar", true, MySLSBean.class, BusinessInterface.class);
>> +      ear.addModule(ejbJar2);
>> +      MockArchiveManifest.addManifest(ear);
>> +      unit = assertDeploy(ear);
>> +
>> +      E environment = assertSingleEnvironment(EAR_NAME);
>> +      assertExpectedClasses(environment, PlainJavaBean.class, MySLSBean.class,
>> +               BusinessInterface.class);
>> +      assertExpectedResources(environment, EAR_NAME + "/ejbJar1.jar",
>> +               EAR_NAME + "/ejbJar2.jar");
>> +   }
>> +
>> +   public void testMixedEjbJarsInEar() throws Exception
>> +   {
>> +      EnterpriseArchive ear = ShrinkWrap.create(EnterpriseArchive.class, EAR_NAME);
>> +      JavaArchive ejbJar1 = createEjbJar("ejbJar1.jar", false, PlainJavaBean.class);
>> +      ear.addModule(ejbJar1);
>> +      JavaArchive ejbJar2 = createEjbJar("ejbJar2.jar", true, MySLSBean.class, BusinessInterface.class);
>> +      ear.addModule(ejbJar2);
>> +      MockArchiveManifest.addManifest(ear);
>> +      unit = assertDeploy(ear);
>> +
>> +      E environment = assertSingleEnvironment(EAR_NAME);
>> +      assertExpectedClasses(environment, MySLSBean.class, BusinessInterface.class);
>> +      assertExpectedResources(environment, "simple.ear/ejbJar2.jar");
>> +   }
>> +
>> +   public void testEjbJarsWithoutXmlInEar() throws Exception
>> +   {
>> +      EnterpriseArchive ear = ShrinkWrap.create(EnterpriseArchive.class, EAR_NAME);
>> +      JavaArchive ejbJar1 = createEjbJar("ejbJar1.jar", false, PlainJavaBean.class);
>> +      ear.addModule(ejbJar1);
>> +      JavaArchive ejbJar2 = createEjbJar("ejbJar2.jar", false, MySLSBean.class, BusinessInterface.class);
>> +      ear.addModule(ejbJar2);
>> +      MockArchiveManifest.addManifest(ear);
>> +      unit = assertDeploy(ear);
>> +
>> +      assertEmptyEnvironment();
>> +   }
>> +
>> +   public void testWar() throws Exception
>> +   {
>> +      WebArchive war = createWar(true);
>> +      unit = assertDeploy(war);
>> +
>> +      E environment = assertSingleEnvironment(WAR_NAME);
>> +      assertExpectedClasses(environment, ServletWebBean.class);
>> +      assertExpectedWarResources(environment, unit.getSimpleName(), true);
>> +   }
>> +
>> +   public void testWarWithLib() throws Exception
>> +   {
>> +      WebArchive war = createWarWithLib(true, true);
>> +      unit = assertDeploy(war);
>> +
>> +      E environment = assertSingleEnvironment(WAR_NAME);
>> +      assertExpectedClasses(environment, ServletWebBean.class, UIWebBean.class);
>> +      assertExpectedWarResources(environment, unit.getSimpleName(), true, "lib.jar");
>> +   }
>> +
>> +   public void testWarWithLibs() throws Exception
>> +   {
>> +      WebArchive war = createWarWithLibs(true, true, true);
>> +      unit = assertDeploy(war);
>> +
>> +      E environment = assertSingleEnvironment(WAR_NAME);
>> +      assertExpectedClasses(environment, ServletWebBean.class, UIWebBean.class, CrmWebBean.class);
>> +      assertExpectedWarResources(environment, unit.getSimpleName(), true, "lib1.jar", "lib2.jar");
>> +   }
>> +
>> +   public void testWarWithLibWithoutXml() throws Exception
>> +   {
>> +      WebArchive war = createWarWithLib(true, false);
>> +      unit = assertDeploy(war);
>> +
>> +      E environment = assertSingleEnvironment(WAR_NAME);
>> +      assertExpectedClasses(environment, ServletWebBean.class);
>> +      assertExpectedWarResources(environment, unit.getSimpleName(), true);
>> +   }
>> +
>> +   public void testWarWithLibsWithoutXml() throws Exception
>> +   {
>> +      WebArchive war = createWarWithLibs(true, false, false);
>> +      unit = assertDeploy(war);
>> +
>> +      E environment = assertSingleEnvironment(WAR_NAME);
>> +      assertExpectedClasses(environment, ServletWebBean.class);
>> +      assertExpectedWarResources(environment, unit.getSimpleName(), true);
>> +   }
>> +
>> +   public void testWarWithMixedLibs() throws Exception
>> +   {
>> +      WebArchive war = createWarWithLibs(true, true, false);
>> +      unit = assertDeploy(war);
>> +
>> +      E environment = assertSingleEnvironment(WAR_NAME);
>> +      assertExpectedClasses(environment, ServletWebBean.class, UIWebBean.class);
>> +      assertExpectedWarResources(environment, unit.getSimpleName(), true, "lib1.jar");
>> +   }
>> +
>> +   public void testWarWithoutXmlWithLib() throws Exception
>> +   {
>> +      WebArchive war = createWarWithLib(false, true);
>> +      unit = assertDeploy(war);
>> +
>> +      E environment = assertSingleEnvironment(WAR_NAME);
>> +      assertExpectedClasses(environment, UIWebBean.class);
>> +      assertExpectedWarResources(environment, unit.getSimpleName(), false, "lib.jar");
>> +   }
>> +
>> +   public void testWarWithoutXmlWithLibs() throws Exception
>> +   {
>> +      WebArchive war = createWarWithLibs(false, true, true);
>> +      unit = assertDeploy(war);
>> +
>> +      E environment = assertSingleEnvironment(WAR_NAME);
>> +      assertExpectedClasses(environment, UIWebBean.class, CrmWebBean.class);
>> +      assertExpectedWarResources(environment, unit.getSimpleName(), false, "lib1.jar", "lib2.jar");
>> +   }
>> +
>> +   public void testWarWithoutXmlWithLibWithoutXml() throws Exception
>> +   {
>> +      WebArchive war = createWarWithLib(false, false);
>> +      unit = assertDeploy(war);
>> +
>> +      assertEmptyEnvironment();
>> +   }
>> +
>> +   public void testWarWithoutXmlWithMixedLibs() throws Exception
>> +   {
>> +      WebArchive war = createWarWithLibs(false, true, false);
>> +      unit = assertDeploy(war);
>> +
>> +      E environment = assertSingleEnvironment(WAR_NAME);
>> +      assertExpectedClasses(environment, UIWebBean.class);
>> +      assertExpectedWarResources(environment, unit.getSimpleName(), false, "lib1.jar");
>> +   }
>> +
>> +   public void testWarWithoutXmlWithLibsWithoutXml() throws Exception
>> +   {
>> +      WebArchive war = createWarWithLibs(false, false, false);
>> +      unit = assertDeploy(war);
>> +
>> +      assertEmptyEnvironment();
>> +   }
>> +
>> +   public void testWarWithoutXml() throws Exception
>> +   {
>> +      WebArchive war = createWar(false);
>> +      unit = assertDeploy(war);
>> +
>> +      assertEmptyEnvironment();
>> +   }
>> +
>> +   public void testWarInEar() throws Exception
>> +   {
>> +      EnterpriseArchive ear = ShrinkWrap.create(EnterpriseArchive.class, "warinear.ear");
>> +      WebArchive war = createWar(true);
>> +      ear.addModule(war);
>> +      MockArchiveManifest.addManifest(ear);
>> +      unit = assertDeploy(ear);
>> +
>> +      E environment = assertSingleEnvironment("warinear.ear/simple.war");
>> +      assertExpectedClasses(environment, ServletWebBean.class);
>> +      assertExpectedWarResources(environment, "warinear.ear/simple.war", true);
>> +   }
>> +
>> +   public void testWarsInEar() throws Exception
>> +   {
>> +      EnterpriseArchive ear = ShrinkWrap.create(EnterpriseArchive.class, "warinear.ear");
>> +      WebArchive war = createWar("simple1.war", true, ServletWebBean.class);
>> +      ear.addModule(war);
>> +      war = createWar("simple2.war", true, NotWBJsfBean.class);
>> +      ear.addModule(war);
>> +      MockArchiveManifest.addManifest(ear);
>> +      unit = assertDeploy(ear);
>> +
>> +      assertWarsInEar();
>> +   }
>> +
>> +   protected abstract void assertWarsInEar();
>> +
>> +   public void testMixedWarsInEar() throws Exception
>> +   {
>> +      EnterpriseArchive ear = ShrinkWrap.create(EnterpriseArchive.class, "warinear.ear");
>> +      WebArchive war = createWar("simple1.war", true, ServletWebBean.class);
>> +      ear.addModule(war);
>> +      war = createWar("simple2.war", false, NotWBJsfBean.class);
>> +      ear.addModule(war);
>> +      MockArchiveManifest.addManifest(ear);
>> +      unit = assertDeploy(ear);
>> +
>> +      E environment = assertSingleEnvironment("warinear.ear/simple1.war");
>> +      assertExpectedClasses(environment, ServletWebBean.class);
>> +      assertExpectedWarResources(environment, "warinear.ear/simple1.war", true);
>> +   }
>> +
>> +   public void testWarsWithoutXmlInEar() throws Exception
>> +   {
>> +      EnterpriseArchive ear = ShrinkWrap.create(EnterpriseArchive.class, "warinear.ear");
>> +      WebArchive war = createWar("simple1.war", false, ServletWebBean.class);
>> +      ear.addModule(war);
>> +      war = createWar("simple2.war", false, NotWBJsfBean.class);
>> +      ear.addModule(war);
>> +      MockArchiveManifest.addManifest(ear);
>> +      unit = assertDeploy(ear);
>> +
>> +      assertEmptyEnvironment();
>> +   }
>> +
>> +   public void testWarWithLibInEar() throws Exception
>> +   {
>> +      EnterpriseArchive ear = ShrinkWrap.create(EnterpriseArchive.class, "warinear.ear");
>> +      WebArchive war = createWarWithLib(true, true);
>> +      ear.addModule(war);
>> +      MockArchiveManifest.addManifest(ear);
>> +      unit = assertDeploy(ear);
>> +
>> +      E environment = assertSingleEnvironment("warinear.ear/" + WAR_NAME);
>> +      assertExpectedClasses(environment, ServletWebBean.class, UIWebBean.class);
>> +      assertExpectedWarResources(environment, "warinear.ear/" + WAR_NAME, true, "lib.jar");
>> +   }
>> +
>> +   public void testWarWithLibWithoutXmlInEar() throws Exception
>> +   {
>> +      EnterpriseArchive ear = ShrinkWrap.create(EnterpriseArchive.class, "warinear.ear");
>> +      WebArchive war = createWarWithLib(true, false);
>> +      ear.addModule(war);
>> +      MockArchiveManifest.addManifest(ear);
>> +      unit = assertDeploy(ear);
>> +
>> +      E environment = assertSingleEnvironment("warinear.ear/" + WAR_NAME);
>> +      assertExpectedClasses(environment, ServletWebBean.class);
>> +      assertExpectedWarResources(environment, "warinear.ear/" + WAR_NAME, true);
>> +   }
>> +
>> +   public void testWarWithoutXmlWithLibWithoutXmlInEar() throws Exception
>> +   {
>> +      EnterpriseArchive ear = ShrinkWrap.create(EnterpriseArchive.class, "warinear.ear");
>> +      WebArchive war = createWarWithLib(false, false);
>> +      ear.addModule(war);
>> +      MockArchiveManifest.addManifest(ear);
>> +      unit = assertDeploy(ear);
>> +
>> +      assertEmptyEnvironment();
>> +   }
>> +
>> +   public void testWarWithoutXmlWithLibInEar() throws Exception
>> +   {
>> +      EnterpriseArchive ear = ShrinkWrap.create(EnterpriseArchive.class, "warinear.ear");
>> +      WebArchive war = createWarWithLib(false, true);
>> +      ear.addModule(war);
>> +      MockArchiveManifest.addManifest(ear);
>> +      unit = assertDeploy(ear);
>> +
>> +      E environment = assertSingleEnvironment("warinear.ear/" + WAR_NAME);
>> +      assertExpectedClasses(environment, UIWebBean.class);
>> +      assertExpectedWarResources(environment, "warinear.ear/" + WAR_NAME, false, "lib.jar");
>> +   }
>> +
>> +   public void testBasicEar() throws Exception
>> +   {
>> +      VirtualFile ear = createBasicEar();
>> +      unit = assertDeploy(ear);
>> +
>> +      assertBasicEar();
>> +   }
>> +
>> +   protected abstract void assertBasicEar();
>> +
>> +   public void testBasicEarFullCDI() throws Exception
>> +   {
>> +      EnterpriseArchive ear = ShrinkWrap.create(EnterpriseArchive.class, "top-level.ear");
>> +      createLib(ear, "util.jar", true, SomeUtil.class);
>> +      createLib(ear, "ext.jar", true, ExternalWebBean.class);
>> +      JavaArchive ejbJar = createEjbJar("simple.jar", true, PlainJavaBean.class);
>> +      ear.addModule(ejbJar);
>> +      ejbJar = createEjbJar("ejbs.jar", true, MySLSBean.class, BusinessInterface.class);
>> +      ear.addModule(ejbJar);
>> +      WebArchive war = createWar("simple.war", true, ServletWebBean.class);
>> +      createLib(war, "ui.jar", true, UIWebBean.class);
>> +      ear.addModule(war);
>> +      war = createWar("crm.war", true, NotWBJsfBean.class);
>> +      createLib(war, "crm.jar", true, CrmWebBean.class);
>> +      ear.addModule(war);
>> +      unit = assertDeploy(ear);
>> +
>> +      assertBasicEarFullCDI();
>> +   }
>> +
>> +   protected abstract void assertBasicEarFullCDI();
>> +
>> +   public void testBasicEarWithoutXml() throws Exception
>> +   {
>> +      EnterpriseArchive ear = ShrinkWrap.create(EnterpriseArchive.class, "simple.ear");
>> +      createLib(ear, "util.jar", false, SomeUtil.class);
>> +      createLib(ear, "ext.jar", false, ExternalWebBean.class);
>> +      JavaArchive ejbJar = createEjbJar("simple.jar", false, PlainJavaBean.class);
>> +      ear.addModule(ejbJar);
>> +      ejbJar = createEjbJar("ejbs.jar", false, MySLSBean.class, BusinessInterface.class);
>> +      ear.addModule(ejbJar);
>> +      WebArchive war = createWar("simple.war", false, ServletWebBean.class);
>> +      createLib(war, "ui.jar", false, UIWebBean.class);
>> +      ear.addModule(war);
>> +      war = createWar("crm.war", false, NotWBJsfBean.class);
>> +      createLib(war, "crm.jar", false, CrmWebBean.class);
>> +      ear.addModule(war);
>> +      unit = assertDeploy(ear);
>> +
>> +      assertBasicEarWithoutXml();
>> +   }
>> +
>> +   protected abstract void assertBasicEarWithoutXml();
>> +
>> +   /**
>> +    * Asserts that there is no environment resultant from the deployment.
>> +    */
>> +   protected abstract void assertEmptyEnvironment();
>> +
>> +   /**
>> +    * Asserts that there is only one environment resultant from the deployment.
>> +    *
>> +    * @param name the name of the environment
>> +    * @return     the environment
>> +    */
>> +   protected abstract E assertSingleEnvironment(String name);
>> +}
>>
>>
>> Property changes on: trunk/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/AbstractSingleArchiveTest.java
>> ___________________________________________________________________
>> Name: svn:keywords
>>    + Author Date Id Revision
>> Name: svn:eol-style
>>    + native
>>
>> Modified: trunk/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/AbstractWeldTest.java
>> ===================================================================
>> --- trunk/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/AbstractWeldTest.java 2010-07-25 11:32:48 UTC (rev 107074)
>> +++ trunk/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/AbstractWeldTest.java 2010-07-25 19:55:55 UTC (rev 107075)
>> @@ -21,11 +21,21 @@
>>   */
>> package org.jboss.test.deployers.test;
>>
>> +import java.io.Closeable;
>> +import java.io.IOException;
>> import java.lang.reflect.Method;
>> +import java.util.ArrayList;
>> +import java.util.Collection;
>> +import java.util.List;
>> import java.util.Set;
>> +import java.util.UUID;
>> +import java.util.concurrent.Executors;
>>
>> import org.jboss.classloader.plugins.jdk.AbstractJDKChecker;
>> import org.jboss.deployers.vfs.deployer.kernel.BeanMetaDataFactoryVisitor;
>> +import org.jboss.deployers.vfs.spi.structure.VFSDeploymentUnit;
>> +import org.jboss.shrinkwrap.api.Archive;
>> +import org.jboss.shrinkwrap.vfs3.ArchiveFileSystem;
>> import org.jboss.test.deployers.BootstrapDeployersTest;
>> import org.jboss.test.deployers.support.crm.CrmWebBean;
>> import org.jboss.test.deployers.support.ejb.MySLSBean;
>> @@ -35,6 +45,8 @@
>> import org.jboss.test.deployers.support.ui.UIWebBean;
>> import org.jboss.test.deployers.support.util.SomeUtil;
>> import org.jboss.test.deployers.support.web.ServletWebBean;
>> +import org.jboss.vfs.TempDir;
>> +import org.jboss.vfs.TempFileProvider;
>> import org.jboss.vfs.VFS;
>> import org.jboss.vfs.VirtualFile;
>>
>> @@ -56,7 +68,7 @@
>>        // excluding class that knows hot to load from system classloader
>>        Set<Class<?>>  excluded = AbstractJDKChecker.getExcluded();
>>        excluded.add(BeanMetaDataFactoryVisitor.class);
>> -
>> +            tempFileProvider = TempFileProvider.create("shrinkwrap-", Executors.newSingleThreadScheduledExecutor());
>>        super.setUp();
>>     }
>>
>> @@ -177,4 +189,59 @@
>>           .addPath("/weld/simple/ejb");
>>        return jarFile;
>>     }
>> +
>> +
>> +   private static TempFileProvider tempFileProvider;
>> +   private final List<Closeable>  vfsHandles = new ArrayList<Closeable>();
>> +
>> +   protected VFSDeploymentUnit assertDeploy(Archive<?>  archive) throws Exception
>> +   {
>> +      VirtualFile virtualFile = mount(archive);
>> +      VFSDeploymentUnit unit = assertDeploy(virtualFile);
>> +      return unit;
>> +   }
>> +
>> +   @Override
>> +   protected VFSDeploymentUnit assertDeploy(VirtualFile virtualFile) throws Exception
>> +   {
>> +      VFSDeploymentUnit unit = super.assertDeploy(virtualFile);
>> +      units.add(unit);
>> +      return unit;
>> +   }
>> +
>> +   private Collection<VFSDeploymentUnit>  units = new ArrayList<VFSDeploymentUnit>();
>> +
>> +   private VirtualFile mount(Archive<?>  archive) throws IOException
>> +   {
>> +      final TempDir tempDir = tempFileProvider.createTempDir(archive.getName());
>> +      VirtualFile virtualFile = VFS.getChild(UUID.randomUUID().toString()).getChild(archive.getName());
>> +      vfsHandles.add(VFS.mount(virtualFile, new ArchiveFileSystem(archive, tempDir)));
>> +      mountZipFiles(virtualFile);
>> +      return virtualFile;
>> +   }
>> +
>> +   private void mountZipFiles(VirtualFile file) throws IOException
>> +   {
>> +      if (!file.isDirectory()&&  file.getName().matches("^.*\\.([EeWwJj][Aa][Rr]|[Zz][Ii][Pp])$"))
>> +         vfsHandles.add(VFS.mountZip(file, file, tempFileProvider));
>> +
>> +      if (file.isDirectory())
>> +         for (VirtualFile child : file.getChildren())
>> +            mountZipFiles(child);
>> +   }
>> +
>> +   protected void tearDown() throws Exception
>> +   {
>> +      for (VFSDeploymentUnit unit: units)
>> +      {
>> +         undeploy(unit);
>> +      }
>> +      units.clear();
>> +      for (Closeable vfsHandle: vfsHandles)
>> +      {
>> +            vfsHandle.close();
>> +      }
>> +      vfsHandles.clear();
>> +      super.tearDown();
>> +   }
>> }
>> \ No newline at end of file
>>
>> Added: trunk/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/ArchiveEnvironmentTestCase.java
>> ===================================================================
>> --- trunk/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/ArchiveEnvironmentTestCase.java                            (rev 0)
>> +++ trunk/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/ArchiveEnvironmentTestCase.java    2010-07-25 19:55:55 UTC (rev 107075)
>> @@ -0,0 +1,274 @@
>> +/*
>> + * JBoss, Home of Professional Open Source.
>> + * Copyright 2008, Red Hat Middleware LLC, and individual contributors
>> + * as indicated by the @author tags. See the copyright.txt file in the
>> + * distribution for a full listing of individual contributors.
>> + *
>> + * This is free software; you can redistribute it and/or modify it
>> + * under the terms of the GNU Lesser General Public License as
>> + * published by the Free Software Foundation; either version 2.1 of
>> + * the License, or (at your option) any later version.
>> + *
>> + * This software is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
>> + * Lesser General Public License for more details.
>> + *
>> + * You should have received a copy of the GNU Lesser General Public
>> + * License along with this software; if not, write to the Free
>> + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
>> + * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
>> + */
>> +package org.jboss.test.deployers.test;
>> +
>> +import java.net.URL;
>> +import java.util.Collection;
>> +
>> +import junit.framework.Test;
>> +
>> +import org.jboss.deployers.structure.spi.DeploymentUnit;
>> +import org.jboss.test.deployers.support.crm.CrmWebBean;
>> +import org.jboss.test.deployers.support.ejb.BusinessInterface;
>> +import org.jboss.test.deployers.support.ejb.MySLSBean;
>> +import org.jboss.test.deployers.support.ext.ExternalWebBean;
>> +import org.jboss.test.deployers.support.jar.PlainJavaBean;
>> +import org.jboss.test.deployers.support.jsf.NotWBJsfBean;
>> +import org.jboss.test.deployers.support.ui.UIWebBean;
>> +import org.jboss.test.deployers.support.util.SomeUtil;
>> +import org.jboss.test.deployers.support.web.ServletWebBean;
>> +import org.jboss.util.UnreachableStatementException;
>> +import org.jboss.weld.integration.deployer.env.WeldDiscoveryEnvironment;
>> +import org.jboss.weld.integration.deployer.env.bda.ArchiveInfo;
>> +
>> +/**
>> + * ArchiveInfo environment discovery test case.
>> + *
>> + * @author<a href="mailto:ales.justin at jboss.org">Ales Justin</a>
>> + * @author<a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
>> + */
>> +public class ArchiveEnvironmentTestCase extends AbstractSingleArchiveTest<WeldDiscoveryEnvironment>
>> +{
>> +   public ArchiveEnvironmentTestCase(String name)
>> +   {
>> +      super(name);
>> +   }
>> +
>> +   public static Test suite()
>> +   {
>> +      return suite(ArchiveEnvironmentTestCase.class);
>> +   }
>> +
>> +   @Override
>> +   public void testEjbJarInEar() throws Exception
>> +   {
>> +      super.testEjbJarInEar();
>> +
>> +      assertSingleChildAsUnit(EJB_JAR_NAME);
>> +      assertNoArchiveInfo(unit);
>> +   }
>> +
>> +   @Override
>> +   public void testEjbJarWithoutXmlInEar() throws Exception
>> +   {
>> +      super.testEjbJarWithoutXmlInEar();
>> +
>> +      assertSingleChildAsUnit(EJB_JAR_NAME);
>> +      assertNoArchiveInfo(unit);
>> +   }
>> +
>> +   @Override
>> +   protected void assertWarsInEar()
>> +   {
>> +      WeldDiscoveryEnvironment discovery = assertDiscoveryEnvironment();
>> +      assertExpectedClasses(discovery);
>> +      assertExpectedResources(discovery);
>> +
>> +      for (DeploymentUnit childUnit: unit.getChildren())
>> +      {
>> +         unit = childUnit;
>> +         if (unit.getSimpleName().equals("simple1.war"))
>> +         {
>> +            discovery = assertDiscoveryEnvironment();
>> +            assertExpectedClasses(discovery, ServletWebBean.class);
>> +            assertExpectedWarResources(discovery, "warinear.ear/simple1.war", true);
>> +         }
>> +         else if (unit.getSimpleName().equals("simple2.war"))
>> +         {
>> +            discovery = assertDiscoveryEnvironment();
>> +            assertExpectedClasses(discovery, NotWBJsfBean.class);
>> +            assertExpectedWarResources(discovery, "warinear.ear/simple2.war", true);
>> +         }
>> +         else
>> +         {
>> +            fail("Unexpected childUnit: " + unit.getSimpleName());
>> +         }
>> +      }
>> +   }
>> +
>> +   @Override
>> +   protected void assertBasicEar()
>> +   {
>> +      WeldDiscoveryEnvironment discovery = assertDiscoveryEnvironment();
>> +      assertExpectedClasses(discovery, BusinessInterface.class, MySLSBean.class,
>> +               ExternalWebBean.class, PlainJavaBean.class);
>> +      assertExpectedResources(discovery, "top-level.ear/ejbs.jar",
>> +               "top-level.ear/lib/ext.jar", "top-level.ear/simple.jar");
>> +
>> +      for (DeploymentUnit childUnit: unit.getChildren())
>> +      {
>> +         unit = childUnit;
>> +         if (childUnit.getName().endsWith("simple.war/"))
>> +         {
>> +            discovery = assertDiscoveryEnvironment();
>> +            assertExpectedClasses(discovery, UIWebBean.class, ServletWebBean.class);
>> +            assertExpectedWarResources(discovery, "top-level.ear/simple.war", true, "ui.jar");
>> +         }
>> +         else if (childUnit.getName().endsWith("crm.war/"))
>> +         {
>> +            discovery = assertDiscoveryEnvironment();
>> +            assertExpectedClasses(discovery, CrmWebBean.class);
>> +            assertExpectedWarResources(discovery, "top-level.ear/crm.war", false, "crm.jar");
>> +         }
>> +         else
>> +         {
>> +            ArchiveInfo archiveInfo = childUnit.getAttachment(ArchiveInfo.class);
>> +            assertNull("Unit " + unit.getName() +  " contains a not null ArchiveInfo", archiveInfo);
>> +         }
>> +      }
>> +   }
>> +
>> +   @Override
>> +   protected void assertBasicEarFullCDI()
>> +   {
>> +      WeldDiscoveryEnvironment discovery = assertDiscoveryEnvironment();
>> +      assertExpectedClasses(discovery, BusinessInterface.class, MySLSBean.class,
>> +               ExternalWebBean.class, PlainJavaBean.class, SomeUtil.class);
>> +      assertExpectedResources(discovery, "top-level.ear/lib/util.jar",
>> +               "top-level.ear/lib/ext.jar", "top-level.ear/simple.jar",
>> +               "top-level.ear/ejbs.jar");
>> +
>> +      for (DeploymentUnit childUnit: unit.getChildren())
>> +      {
>> +         unit = childUnit;
>> +         if (childUnit.getName().endsWith("simple.war/"))
>> +         {
>> +            discovery = assertDiscoveryEnvironment();
>> +            assertExpectedClasses(discovery, UIWebBean.class, ServletWebBean.class);
>> +            assertExpectedWarResources(discovery, "top-level.ear/simple.war", true, "ui.jar");
>> +         }
>> +         else if (childUnit.getName().endsWith("crm.war/"))
>> +         {
>> +            discovery = assertDiscoveryEnvironment();
>> +            assertExpectedClasses(discovery, CrmWebBean.class, NotWBJsfBean.class);
>> +            assertExpectedWarResources(discovery, "top-level.ear/crm.war", true, "crm.jar");
>> +         }
>> +         else
>> +         {
>> +            ArchiveInfo archiveInfo = childUnit.getAttachment(ArchiveInfo.class);
>> +            assertNull("Unit " + unit.getName() +  " contains a not null ArchiveInfo", archiveInfo);
>> +         }
>> +      }
>> +   }
>> +
>> +   @Override
>> +   protected void assertBasicEarWithoutXml()
>> +   {
>> +      WeldDiscoveryEnvironment discovery = assertDiscoveryEnvironment();
>> +
>> +      assertExpectedClasses(discovery);
>> +      assertExpectedResources(discovery);
>> +
>> +      for (DeploymentUnit childUnit: unit.getChildren())
>> +      {
>> +         if (childUnit.getName().endsWith("simple.war/") ||
>> +                  childUnit.getName().endsWith("crm.war/"))
>> +         {
>> +            unit = childUnit;
>> +            discovery = assertDiscoveryEnvironment();
>> +            assertExpectedClasses(discovery);
>> +            assertExpectedResources(discovery);
>> +         }
>> +         else
>> +         {
>> +            ArchiveInfo archiveInfo = childUnit.getAttachment(ArchiveInfo.class);
>> +            assertNull("Unit " + unit.getName() +  " contains a not null ArchiveInfo", archiveInfo);
>> +         }
>> +      }
>> +   }
>> +
>> +   @Override
>> +   protected void assertEmptyEnvironment()
>> +   {
>> +      WeldDiscoveryEnvironment discovery = assertDiscoveryEnvironment();
>> +      assertExpectedClasses(discovery);
>> +      assertExpectedResources(discovery);
>> +   }
>> +
>> +   @Override
>> +   protected WeldDiscoveryEnvironment assertSingleEnvironment(String name)
>> +   {
>> +      if (unit.getName().contains(name))
>> +      {
>> +         return assertDiscoveryEnvironment(name);
>> +      }
>> +      for (DeploymentUnit childUnit : unit.getChildren())
>> +      {
>> +         if (childUnit.getName().contains(name))
>> +         {
>> +            return assertDiscoveryEnvironment(childUnit, name);
>> +         }
>> +      }
>> +      fail("Was not able to find a unit with suffix " + name);
>> +      throw new UnreachableStatementException();
>> +   }
>> +
>> +   @Override
>> +   protected Collection<Class<?>>  getClasses(
>> +            WeldDiscoveryEnvironment environment)
>> +   {
>> +      return environment.getWeldClasses();
>> +   }
>> +
>> +   @Override
>> +   protected Collection<URL>  getResources(WeldDiscoveryEnvironment environment)
>> +   {
>> +      return environment.getWeldXml();
>> +   }
>> +
>> +   private void assertSingleChildAsUnit(String name)
>> +   {
>> +      assertEquals(1, unit.getChildren().size());
>> +      unit = unit.getChildren().iterator().next();
>> +      assertEquals(unit.getSimpleName(), name);
>> +   }
>> +
>> +   private void assertNoArchiveInfo(DeploymentUnit unit)
>> +   {
>> +      assertNull(unit.getAttachment(ArchiveInfo.class));
>> +   }
>> +
>> +   private WeldDiscoveryEnvironment assertDiscoveryEnvironment(String name)
>> +   {
>> +      return assertDiscoveryEnvironment(unit, name);
>> +   }
>> +
>> +   private WeldDiscoveryEnvironment assertDiscoveryEnvironment(DeploymentUnit unit, String name)
>> +   {
>> +      ArchiveInfo archiveInfo = unit.getAttachment(ArchiveInfo.class);
>> +      assertNotNull(archiveInfo);
>> +      assertTrue("Unit name \"" + unit.getName() + "\" expected to end with \"" + name +
>> +               "\" suffix", unit.getName().endsWith(name + '/'));
>> +      WeldDiscoveryEnvironment discovery = archiveInfo.getEnvironment();
>> +      assertNotNull(discovery);
>> +      return discovery;
>> +   }
>> +
>> +   private WeldDiscoveryEnvironment assertDiscoveryEnvironment()
>> +   {
>> +      ArchiveInfo archiveInfo = unit.getAttachment(ArchiveInfo.class);
>> +      assertNotNull(archiveInfo);
>> +      WeldDiscoveryEnvironment discovery = archiveInfo.getEnvironment();
>> +      assertNotNull(discovery);
>> +      return discovery;
>> +   }
>> +}
>>
>>
>> Property changes on: trunk/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/ArchiveEnvironmentTestCase.java
>> ___________________________________________________________________
>> Name: svn:keywords
>>    + Author Date Id Revision
>> Name: svn:eol-style
>>    + native
>>
>> Added: trunk/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/ArchiveInfoDeploymentTestCase.java
>> ===================================================================
>> --- trunk/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/ArchiveInfoDeploymentTestCase.java                            (rev 0)
>> +++ trunk/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/ArchiveInfoDeploymentTestCase.java    2010-07-25 19:55:55 UTC (rev 107075)
>> @@ -0,0 +1,195 @@
>> +/*
>> + * JBoss, Home of Professional Open Source.
>> + * Copyright 2008, Red Hat Middleware LLC, and individual contributors
>> + * as indicated by the @author tags. See the copyright.txt file in the
>> + * distribution for a full listing of individual contributors.
>> + *
>> + * This is free software; you can redistribute it and/or modify it
>> + * under the terms of the GNU Lesser General Public License as
>> + * published by the Free Software Foundation; either version 2.1 of
>> + * the License, or (at your option) any later version.
>> + *
>> + * This software is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
>> + * Lesser General Public License for more details.
>> + *
>> + * You should have received a copy of the GNU Lesser General Public
>> + * License along with this software; if not, write to the Free
>> + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
>> + * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
>> + */
>> +package org.jboss.test.deployers.test;
>> +
>> +import junit.framework.Test;
>> +
>> +import org.jboss.classloader.spi.ClassLoaderSystem;
>> +import org.jboss.deployers.structure.spi.DeploymentUnit;
>> +import org.jboss.deployers.vfs.spi.structure.VFSDeploymentUnit;
>> +import org.jboss.test.deployers.support.jar.PlainJavaBean;
>> +import org.jboss.test.deployers.support.web.ServletWebBean;
>> +import org.jboss.vfs.VFS;
>> +import org.jboss.vfs.VirtualFile;
>> +import org.jboss.weld.integration.deployer.env.bda.ArchiveInfo;
>> +import org.jboss.weld.integration.deployer.env.bda.Classpath;
>> +
>> +/**
>> + * ArchiveInfo deployment test case.
>> + *
>> + * @author<a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
>> + * @version $Revision$
>> + */
>> +public class ArchiveInfoDeploymentTestCase extends AbstractWeldTest
>> +{
>> +   // the name of a classpath should always coincide with the name of the corresponding domain
>> +   private static String DEFAULT_CLASSPATH_NAME = ClassLoaderSystem.getInstance().getDefaultDomain().getName();
>> +
>> +   public ArchiveInfoDeploymentTestCase(String name)
>> +   {
>> +      super(name);
>> +   }
>> +
>> +   public static Test suite()
>> +   {
>> +      return suite(ArchiveInfoDeploymentTestCase.class);
>> +   }
>> +
>> +   private Classpath defaultClasspath;
>> +   private VFSDeploymentUnit unit;
>> +
>> +   public void tearDown() throws Exception
>> +   {
>> +      undeploy(unit);
>> +      super.tearDown();
>> +   }
>> +
>> +   public void testEjbJar() throws Exception
>> +   {
>> +      VirtualFile ejbJar = createEjbJar("simple.jar", PlainJavaBean.class);
>> +      unit = assertDeploy(ejbJar);
>> +      assertArchiveInfoWithDefaultClasspath(unit);
>> +      assertEmpty(unit.getChildren());
>> +   }
>> +
>> +   public void testWar() throws Exception
>> +   {
>> +      VirtualFile war = createWar("simple.war", ServletWebBean.class);
>> +      unit = assertDeploy(war);
>> +      assertArchiveInfoWithWarClasspath(unit);
>> +   }
>> +
>> +   public void testEjbJarinEar() throws Exception
>> +   {
>> +      VirtualFile ejbJar = createJarInEar();
>> +      unit = assertDeploy(ejbJar);
>> +      assertArchiveInfoWithDefaultClasspath(unit);
>> +      for (DeploymentUnit childUnit: unit.getChildren())
>> +      {
>> +         assertNull(childUnit.getAttachment(ArchiveInfo.class));
>> +      }
>> +   }
>> +
>> +   public void testWarinEar() throws Exception
>> +   {
>> +      VirtualFile warInEar = createWarInEar();
>> +      unit = assertDeploy(warInEar);
>> +      assertArchiveInfoWithDefaultClasspath(unit);
>> +      for (DeploymentUnit childUnit: unit.getChildren())
>> +      {
>> +         assertArchiveInfoWithWarClasspath(childUnit);
>> +      }
>> +   }
>> +
>> +   public void testEarWithUtil() throws Exception
>> +   {
>> +      VirtualFile ear = createTopLevelWithUtil("/weld/earwithutil");
>> +      unit = assertDeploy(ear);
>> +      assertArchiveInfoWithDefaultClasspath(unit);
>> +      for (DeploymentUnit childUnit: unit.getChildren())
>> +      {
>> +         assertNull(childUnit.getAttachment(ArchiveInfo.class));
>> +      }
>> +   }
>> +
>> +   public void testJarWarInEar() throws Exception
>> +   {
>> +      VirtualFile ear = VFS.getChild("jar-in-ear.ear");
>> +      createAssembledDirectory(ear)
>> +      .addPath("/weld/jarwarinear")
>> +      .addPackage("simple.jar", PlainJavaBean.class)
>> +      .addPackage("simple.war/WEB-INF/classes", PlainJavaBean.class)
>> +      .addPath("simple.war", "/weld/warwowb/web");
>> +      unit = assertDeploy(ear);
>> +
>> +      assertArchiveInfoWithDefaultClasspath(unit);
>> +      for (DeploymentUnit childUnit: unit.getChildren())
>> +      {
>> +         if (childUnit.getName().endsWith("simple.jar/"))
>> +         {
>> +            assertNull(childUnit.getAttachment(ArchiveInfo.class));
>> +         }
>> +         else if (childUnit.getName().endsWith("simple.war/"))
>> +         {
>> +            assertArchiveInfoWithWarClasspath(childUnit);
>> +         }
>> +         else
>> +         {
>> +            fail("Unexpected unit name: " + childUnit.getName());
>> +         }
>> +      }
>> +   }
>> +
>> +   public void testEar() throws Exception
>> +   {
>> +      VirtualFile ear = createBasicEar();
>> +      unit = assertDeploy(ear);
>> +      assertArchiveInfoWithDefaultClasspath(unit);
>> +      for (DeploymentUnit childUnit: unit.getChildren())
>> +      {
>> +         ArchiveInfo archiveInfo = childUnit.getAttachment(ArchiveInfo.class);
>> +         if (childUnit.getName().endsWith(".war/"))
>> +         {
>> +            assertNotNull("Null ArchiveInfo", archiveInfo);
>> +            assertNonDefaultClasspath(childUnit.getName(), archiveInfo.getClasspath());
>> +         }
>> +         else
>> +         {
>> +            assertNull("ArchiveInfo for unit " + childUnit.getName() + " is not null", archiveInfo);
>> +         }
>> +      }
>> +   }
>> +
>> +   private void assertArchiveInfoWithDefaultClasspath(VFSDeploymentUnit unit)
>> +   {
>> +      ArchiveInfo archiveInfo = unit.getAttachment(ArchiveInfo.class);
>> +      assertNotNull("Null ArchiveInfo", archiveInfo);
>> +      assertDefaultClasspath(archiveInfo.getClasspath());
>> +   }
>> +
>> +   private void assertArchiveInfoWithWarClasspath(DeploymentUnit unit)
>> +   {
>> +      ArchiveInfo archiveInfo = unit.getAttachment(ArchiveInfo.class);
>> +      assertNotNull("Null ArchiveInfo for unit " + unit, archiveInfo);
>> +      assertClasspath(unit.getName(), archiveInfo.getClasspath());
>> +      assertEmpty(unit.getChildren());
>> +   }
>> +
>> +   private void assertDefaultClasspath(Classpath classpath)
>> +   {
>> +      assertClasspath(DEFAULT_CLASSPATH_NAME, classpath);
>> +      this.defaultClasspath = classpath;
>> +   }
>> +
>> +   private void assertNonDefaultClasspath(String name, Classpath classpath)
>> +   {
>> +      assertClasspath(name, classpath);
>> +      assertNotSame(defaultClasspath, classpath);
>> +   }
>> +
>> +   private void assertClasspath(String name, Classpath classpath)
>> +   {
>> +      assertNotNull(classpath);
>> +      assertFalse(classpath.iterator().hasNext());
>> +      assertEquals(name, classpath.getName());
>> +   }
>> +}
>>
>>
>> Property changes on: trunk/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/ArchiveInfoDeploymentTestCase.java
>> ___________________________________________________________________
>> Name: svn:keywords
>>    + Author Date Id Revision
>> Name: svn:eol-style
>>    + native
>>
>> Added: trunk/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/BasicEarJBossDeploymentTestCase.java
>> ===================================================================
>> --- trunk/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/BasicEarJBossDeploymentTestCase.java                            (rev 0)
>> +++ trunk/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/BasicEarJBossDeploymentTestCase.java    2010-07-25 19:55:55 UTC (rev 107075)
>> @@ -0,0 +1,56 @@
>> +/*
>> + * JBoss, Home of Professional Open Source.
>> + * Copyright 2008, Red Hat Middleware LLC, and individual contributors
>> + * as indicated by the @author tags. See the copyright.txt file in the
>> + * distribution for a full listing of individual contributors.
>> + *
>> + * This is free software; you can redistribute it and/or modify it
>> + * under the terms of the GNU Lesser General Public License as
>> + * published by the Free Software Foundation; either version 2.1 of
>> + * the License, or (at your option) any later version.
>> + *
>> + * This software is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
>> + * Lesser General Public License for more details.
>> + *
>> + * You should have received a copy of the GNU Lesser General Public
>> + * License along with this software; if not, write to the Free
>> + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
>> + * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
>> + */
>> +package org.jboss.test.deployers.test;
>> +
>> +import java.util.List;
>> +
>> +import junit.framework.Test;
>> +
>> +import org.jboss.weld.bootstrap.spi.BeanDeploymentArchive;
>> +
>> +/**
>> + * JBoss Deployment test case.
>> + *
>> + * @author<a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
>> + */
>> +public class BasicEarJBossDeploymentTestCase extends AbstractDeploymentTest
>> +{
>> +   public BasicEarJBossDeploymentTestCase(String name)
>> +   {
>> +      super(name);
>> +   }
>> +
>> +   public static Test suite()
>> +   {
>> +      return suite(BasicEarJBossDeploymentTestCase.class);
>> +   }
>> +
>> +   protected int getExpectedArchives()
>> +   {
>> +      return 3;
>> +   }
>> +
>> +   protected void assertNewBeanDeploymentArchive(List<BeanDeploymentArchive>  archives, BeanDeploymentArchive newBDA)
>> +   {
>> +      assertSame(newBDA, archives.iterator().next());
>> +   }
>> +}
>> \ No newline at end of file
>>
>>
>> Property changes on: trunk/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/BasicEarJBossDeploymentTestCase.java
>> ___________________________________________________________________
>> Name: svn:keywords
>>    + Author Date Id Revision
>> Name: svn:eol-style
>>    + native
>>
>> Added: trunk/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/DeploymentEnvironmentTestCase.java
>> ===================================================================
>> --- trunk/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/DeploymentEnvironmentTestCase.java                            (rev 0)
>> +++ trunk/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/DeploymentEnvironmentTestCase.java    2010-07-25 19:55:55 UTC (rev 107075)
>> @@ -0,0 +1,272 @@
>> +/*
>> + * JBoss, Home of Professional Open Source.
>> + * Copyright 2008, Red Hat Middleware LLC, and individual contributors
>> + * as indicated by the @author tags. See the copyright.txt file in the
>> + * distribution for a full listing of individual contributors.
>> + *
>> + * This is free software; you can redistribute it and/or modify it
>> + * under the terms of the GNU Lesser General Public License as
>> + * published by the Free Software Foundation; either version 2.1 of
>> + * the License, or (at your option) any later version.
>> + *
>> + * This software is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
>> + * Lesser General Public License for more details.
>> + *
>> + * You should have received a copy of the GNU Lesser General Public
>> + * License along with this software; if not, write to the Free
>> + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
>> + * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
>> + */
>> +package org.jboss.test.deployers.test;
>> +
>> +import java.net.URL;
>> +import java.util.Collection;
>> +import java.util.HashSet;
>> +import java.util.Iterator;
>> +
>> +import junit.framework.Test;
>> +
>> +import org.jboss.shrinkwrap.api.ShrinkWrap;
>> +import org.jboss.shrinkwrap.api.spec.JavaArchive;
>> +import org.jboss.test.deployers.support.CheckableBootstrap;
>> +import org.jboss.test.deployers.support.MockEjbServices;
>> +import org.jboss.test.deployers.support.MockEmptyEjbServices;
>> +import org.jboss.test.deployers.support.MockTransactionServices;
>> +import org.jboss.test.deployers.support.MockWeldBootstrap;
>> +import org.jboss.test.deployers.support.WeldDEWrapper;
>> +import org.jboss.test.deployers.support.crm.CrmWebBean;
>> +import org.jboss.test.deployers.support.ejb.BusinessInterface;
>> +import org.jboss.test.deployers.support.ejb.MySLSBean;
>> +import org.jboss.test.deployers.support.ext.ExternalWebBean;
>> +import org.jboss.test.deployers.support.jar.PlainJavaBean;
>> +import org.jboss.test.deployers.support.jsf.NotWBJsfBean;
>> +import org.jboss.test.deployers.support.ui.UIWebBean;
>> +import org.jboss.test.deployers.support.util.SomeUtil;
>> +import org.jboss.test.deployers.support.web.ServletWebBean;
>> +import org.jboss.weld.bootstrap.spi.BeanDeploymentArchive;
>> +import org.jboss.weld.bootstrap.spi.Deployment;
>> +
>> +/**
>> + * JBossDeployment environment test case.
>> + *
>> + * @author<a href="mailto:ales.justin at jboss.org">Ales Justin</a>
>> + * @author<a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
>> + */
>> +public class DeploymentEnvironmentTestCase extends AbstractSingleArchiveTest<BeanDeploymentArchive>
>> +{
>> +   public DeploymentEnvironmentTestCase(String name)
>> +   {
>> +      super(name);
>> +   }
>> +
>> +   public static Test suite()
>> +   {
>> +      return suite(DeploymentEnvironmentTestCase.class);
>> +   }
>> +
>> +   public void setUp() throws Exception
>> +   {
>> +      super.setUp();
>> +      JavaArchive mockJar = ShrinkWrap.create(JavaArchive.class, "mock.jar");
>> +      mockJar.addClass(CheckableBootstrap.class);
>> +      mockJar.addClass(MockEjbServices.class);
>> +      mockJar.addClass(MockEmptyEjbServices.class);
>> +      mockJar.addClass(MockTransactionServices.class);
>> +      mockJar.addClass(MockWeldBootstrap.class);
>> +      mockJar.addClass(WeldDEWrapper.class);
>> +      assertDeploy(mockJar);
>> +   }
>> +
>> +   @Override
>> +   protected void assertWarsInEar()
>> +   {
>> +      Deployment deployment = (Deployment) getBean(Deployment.class);
>> +      Collection<BeanDeploymentArchive>  bdas = getBDAs(deployment);
>> +      assertEquals(2, bdas.size());
>> +      Iterator<BeanDeploymentArchive>  iterator = bdas.iterator();
>> +      BeanDeploymentArchive bda = iterator.next();
>> +      BeanDeploymentArchive bda1, bda2;
>> +      if (bda.getId().contains("simple1.war"))
>> +      {
>> +         bda1 = bda;
>> +         bda2 = iterator.next();
>> +      }
>> +      else
>> +      {
>> +         bda2 = bda;
>> +         bda1 = iterator.next();
>> +      }
>> +      assertBDAId(bda1, "warinear.ear/simple1.war");
>> +      assertExpectedClasses(bda1, ServletWebBean.class);
>> +      assertExpectedWarResources(bda1, "simple1.war", true);
>> +
>> +      assertBDAId(bda2, "warinear.ear/simple2.war");
>> +      assertExpectedClasses(bda2, NotWBJsfBean.class);
>> +      assertExpectedWarResources(bda2, "simple2.war", true);
>> +
>> +      Collection<BeanDeploymentArchive>  reachableBDAs = getReachableBDAs(bda1);
>> +      assertTrue(reachableBDAs.isEmpty());
>> +      reachableBDAs = getReachableBDAs(bda2);
>> +      assertTrue(reachableBDAs.isEmpty());
>> +   }
>> +
>> +   @Override
>> +   protected void assertBasicEar()
>> +   {
>> +      Deployment deployment = (Deployment) getBean(Deployment.class);
>> +      Collection<BeanDeploymentArchive>  bdas = getBDAs(deployment);
>> +      assertEquals(3, bdas.size());
>> +      BeanDeploymentArchive earBDA = null, simpleWarBDA = null, crmWarBDA = null;
>> +      for (BeanDeploymentArchive bda: bdas)
>> +      {
>> +         if (bda.getId().contains("simple.war"))
>> +         {
>> +            simpleWarBDA = bda;
>> +            assertBDAId(simpleWarBDA, "top-level.ear/simple.war");
>> +            assertExpectedClasses(simpleWarBDA, UIWebBean.class, ServletWebBean.class);
>> +            assertExpectedWarResources(simpleWarBDA, "top-level.ear/simple.war", true, "ui.jar");
>> +         }
>> +         else if (bda.getId().contains("crm.war"))
>> +         {
>> +            crmWarBDA = bda;
>> +            assertBDAId(crmWarBDA, "top-level.ear/crm.war");
>> +            assertExpectedClasses(crmWarBDA, CrmWebBean.class);
>> +            assertExpectedResources(crmWarBDA, "crm.jar");
>> +         }
>> +         else
>> +         {
>> +            earBDA = bda;
>> +            assertBDAId(earBDA, "top-level.ear");
>> +            assertExpectedClasses(earBDA, BusinessInterface.class, MySLSBean.class,
>> +                     ExternalWebBean.class, PlainJavaBean.class);
>> +            assertExpectedResources(earBDA, "top-level.ear/ejbs.jar",
>> +                     "top-level.ear/lib/ext.jar", "top-level.ear/simple.jar");
>> +         }
>> +      }
>> +      Collection<BeanDeploymentArchive>  reachableBDAs = getReachableBDAs(earBDA);
>> +      assertTrue(reachableBDAs.isEmpty());
>> +      reachableBDAs = getReachableBDAs(simpleWarBDA);
>> +      assertEquals(1, reachableBDAs.size());
>> +      assertSame(earBDA, reachableBDAs.iterator().next());
>> +   }
>> +
>> +   @Override
>> +   protected void assertBasicEarFullCDI()
>> +   {
>> +      Deployment deployment = (Deployment) getBean(Deployment.class);
>> +      Collection<BeanDeploymentArchive>  bdas = getBDAs(deployment);
>> +      assertEquals(3, bdas.size());
>> +      BeanDeploymentArchive earBDA = null, simpleWarBDA = null, crmWarBDA = null;
>> +      for (BeanDeploymentArchive bda: bdas)
>> +      {
>> +         if (bda.getId().contains("simple.war"))
>> +         {
>> +            simpleWarBDA = bda;
>> +            assertBDAId(simpleWarBDA, "top-level.ear/simple.war");
>> +            assertExpectedClasses(simpleWarBDA, UIWebBean.class, ServletWebBean.class);
>> +            assertExpectedWarResources(simpleWarBDA, "top-level.ear/simple.war", true, "ui.jar");
>> +         }
>> +         else if (bda.getId().contains("crm.war"))
>> +         {
>> +            crmWarBDA = bda;
>> +            assertBDAId(crmWarBDA, "top-level.ear/crm.war");
>> +            assertExpectedClasses(crmWarBDA, CrmWebBean.class, NotWBJsfBean.class);
>> +            assertExpectedWarResources(crmWarBDA, "top-level.ear/crm.war", true, "crm.jar");
>> +         }
>> +         else
>> +         {
>> +            earBDA = bda;
>> +            assertBDAId(earBDA, "top-level.ear");
>> +            assertExpectedClasses(earBDA, BusinessInterface.class, MySLSBean.class,
>> +                     ExternalWebBean.class, PlainJavaBean.class, SomeUtil.class);
>> +            assertExpectedResources(earBDA, "top-level.ear/lib/util.jar",
>> +                     "top-level.ear/lib/ext.jar", "top-level.ear/simple.jar",
>> +                     "top-level.ear/ejbs.jar");
>> +         }
>> +      }
>> +
>> +      Collection<BeanDeploymentArchive>  reachableBDAs = getReachableBDAs(earBDA);
>> +      assertTrue(reachableBDAs.isEmpty());
>> +      reachableBDAs = getReachableBDAs(simpleWarBDA);
>> +      assertEquals(1, reachableBDAs.size());
>> +      assertSame(earBDA, reachableBDAs.iterator().next());
>> +   }
>> +
>> +   @Override
>> +   protected void assertBasicEarWithoutXml()
>> +   {
>> +      assertEmptyEnvironment();
>> +   }
>> +
>> +   @Override
>> +   protected void assertEmptyEnvironment()
>> +   {
>> +      assertNoBean(Deployment.class);
>> +   }
>> +
>> +   @Override
>> +   protected BeanDeploymentArchive assertSingleEnvironment(String name)
>> +   {
>> +      Deployment deployment = (Deployment) getBean(Deployment.class);
>> +      return assertOneBDA(deployment, name);
>> +   }
>> +
>> +   @Override
>> +   protected Collection<Class<?>>  getClasses(BeanDeploymentArchive bda)
>> +   {
>> +      return bda.getBeanClasses();
>> +   }
>> +
>> +   @Override
>> +   protected Collection<URL>  getResources(BeanDeploymentArchive bda)
>> +   {
>> +      return bda.getBeansXml();
>> +   }
>> +
>> +   private BeanDeploymentArchive assertOneBDA(Deployment deployment, String name)
>> +   {
>> +      Collection<BeanDeploymentArchive>  bdas = getBDAs(deployment);
>> +      assertEquals(1, bdas.size());
>> +      BeanDeploymentArchive bda = bdas.iterator().next();
>> +      assertBDAId(bda, name);
>> +      assertTrue(getReachableBDAs(bda).isEmpty());
>> +      return bda;
>> +   }
>> +
>> +   private Collection<BeanDeploymentArchive>  getBDAs(Deployment deployment)
>> +   {
>> +      assertNotNull(deployment);
>> +      Collection<BeanDeploymentArchive>  bdas = deployment.getBeanDeploymentArchives();
>> +      assertNotNull(bdas);
>> +      return bdas;
>> +   }
>> +
>> +   private void assertBDAId(BeanDeploymentArchive bda, String name)
>> +   {
>> +      assertTrue("BDA id \""  + bda.getId() + "\" expected to end with suffix \"" + name + "/}\"",
>> +               bda.getId().endsWith(name + "/}"));
>> +   }
>> +
>> +   private Collection<BeanDeploymentArchive>  getReachableBDAs(BeanDeploymentArchive bda)
>> +   {
>> +      Collection<BeanDeploymentArchive>  result = new HashSet<BeanDeploymentArchive>();
>> +      getReachableBDAs(bda, result);
>> +      result.remove(bda);
>> +      return result;
>> +   }
>> +
>> +   private void getReachableBDAs(BeanDeploymentArchive bda, Collection<BeanDeploymentArchive>  result)
>> +   {
>> +      if (result.contains(bda))
>> +      {
>> +         return;
>> +      }
>> +      result.add(bda);
>> +      for (BeanDeploymentArchive reachableBDA: bda.getBeanDeploymentArchives())
>> +      {
>> +         getReachableBDAs(reachableBDA, result);
>> +      }
>> +   }
>> +}
>>
>>
>> Property changes on: trunk/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/DeploymentEnvironmentTestCase.java
>> ___________________________________________________________________
>> Name: svn:keywords
>>    + Author Date Id Revision
>> Name: svn:eol-style
>>    + native
>>
>> Added: trunk/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/FlatDeploymentSmokeTestCase.java
>> ===================================================================
>> --- trunk/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/FlatDeploymentSmokeTestCase.java                            (rev 0)
>> +++ trunk/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/FlatDeploymentSmokeTestCase.java    2010-07-25 19:55:55 UTC (rev 107075)
>> @@ -0,0 +1,43 @@
>> +/*
>> + * JBoss, Home of Professional Open Source.
>> + * Copyright 2008, Red Hat Middleware LLC, and individual contributors
>> + * as indicated by the @author tags. See the copyright.txt file in the
>> + * distribution for a full listing of individual contributors.
>> + *
>> + * This is free software; you can redistribute it and/or modify it
>> + * under the terms of the GNU Lesser General Public License as
>> + * published by the Free Software Foundation; either version 2.1 of
>> + * the License, or (at your option) any later version.
>> + *
>> + * This software is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
>> + * Lesser General Public License for more details.
>> + *
>> + * You should have received a copy of the GNU Lesser General Public
>> + * License along with this software; if not, write to the Free
>> + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
>> + * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
>> + */
>> +package org.jboss.test.deployers.test;
>> +
>> +import junit.framework.Test;
>> +
>> +/**
>> + * Smoke tests for FlatDeployment creation.
>> + *
>> + * @author<a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
>> + * @version $Revision$
>> + */
>> +public class FlatDeploymentSmokeTestCase extends SmokeTestCase
>> +{
>> +   public FlatDeploymentSmokeTestCase(String name)
>> +   {
>> +      super(name);
>> +   }
>> +
>> +   public static Test suite()
>> +   {
>> +      return suite(FlatDeploymentSmokeTestCase.class);
>> +   }
>> +}
>> \ No newline at end of file
>>
>>
>> Property changes on: trunk/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/FlatDeploymentSmokeTestCase.java
>> ___________________________________________________________________
>> Name: svn:keywords
>>    + Author Date Id Revision
>> Name: svn:eol-style
>>    + native
>>
>> Added: trunk/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/JBossDeploymentSmokeTestCase.java
>> ===================================================================
>> --- trunk/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/JBossDeploymentSmokeTestCase.java                            (rev 0)
>> +++ trunk/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/JBossDeploymentSmokeTestCase.java    2010-07-25 19:55:55 UTC (rev 107075)
>> @@ -0,0 +1,43 @@
>> +/*
>> + * JBoss, Home of Professional Open Source.
>> + * Copyright 2008, Red Hat Middleware LLC, and individual contributors
>> + * as indicated by the @author tags. See the copyright.txt file in the
>> + * distribution for a full listing of individual contributors.
>> + *
>> + * This is free software; you can redistribute it and/or modify it
>> + * under the terms of the GNU Lesser General Public License as
>> + * published by the Free Software Foundation; either version 2.1 of
>> + * the License, or (at your option) any later version.
>> + *
>> + * This software is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
>> + * Lesser General Public License for more details.
>> + *
>> + * You should have received a copy of the GNU Lesser General Public
>> + * License along with this software; if not, write to the Free
>> + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
>> + * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
>> + */
>> +package org.jboss.test.deployers.test;
>> +
>> +import junit.framework.Test;
>> +
>> +/**
>> + * Smoke tests for JBossDeployment creation.
>> + *
>> + * @author<a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
>> + * @version $Revision$
>> + */
>> +public class JBossDeploymentSmokeTestCase extends SmokeTestCase
>> +{
>> +   public JBossDeploymentSmokeTestCase(String name)
>> +   {
>> +      super(name);
>> +   }
>> +
>> +   public static Test suite()
>> +   {
>> +      return suite(JBossDeploymentSmokeTestCase.class);
>> +   }
>> +}
>> \ No newline at end of file
>>
>>
>> Property changes on: trunk/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/JBossDeploymentSmokeTestCase.java
>> ___________________________________________________________________
>> Name: svn:keywords
>>    + Author Date Id Revision
>> Name: svn:eol-style
>>    + native
>>
>> Added: trunk/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/LoadBeanDeploymentArchiveTestCase.java
>> ===================================================================
>> --- trunk/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/LoadBeanDeploymentArchiveTestCase.java                            (rev 0)
>> +++ trunk/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/LoadBeanDeploymentArchiveTestCase.java    2010-07-25 19:55:55 UTC (rev 107075)
>> @@ -0,0 +1,907 @@
>> +/*
>> + * JBoss, Home of Professional Open Source.
>> + * Copyright 2008, Red Hat Middleware LLC, and individual contributors
>> + * as indicated by the @author tags. See the copyright.txt file in the
>> + * distribution for a full listing of individual contributors.
>> + *
>> + * This is free software; you can redistribute it and/or modify it
>> + * under the terms of the GNU Lesser General Public License as
>> + * published by the Free Software Foundation; either version 2.1 of
>> + * the License, or (at your option) any later version.
>> + *
>> + * This software is distributed in the hope that it will be useful,
>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
>> + * Lesser General Public License for more details.
>> + *
>> + * You should have received a copy of the GNU Lesser General Public
>> + * License along with this software; if not, write to the Free
>> + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
>> + * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
>> + */
>> +package org.jboss.test.deployers.test;
>> +
>> +import java.net.URL;
>> +import java.util.Collection;
>> +import java.util.Iterator;
>> +
>> +import junit.framework.Test;
>> +
>> +import org.jboss.deployers.structure.spi.DeploymentUnit;
>> +import org.jboss.shrinkwrap.api.ShrinkWrap;
>> +import org.jboss.shrinkwrap.api.spec.EnterpriseArchive;
>> +import org.jboss.shrinkwrap.api.spec.JavaArchive;
>> +import org.jboss.shrinkwrap.api.spec.WebArchive;
>> +import org.jboss.test.deployers.support.CheckableBootstrap;
>> +import org.jboss.test.deployers.support.MockArchiveManifest;
>> +import org.jboss.test.deployers.support.MockEjbServices;
>> +import org.jboss.test.deployers.support.MockEmptyEjbServices;
>> +import org.jboss.test.deployers.support.MockTransactionServices;
>> +import org.jboss.test.deployers.support.MockWeldBootstrap;
>> +import org.jboss.test.deployers.support.WeldDEWrapper;
>> +import org.jboss.test.deployers.support.crm.CrmWebBean;
>> +import org.jboss.test.deployers.support.ejb.BusinessInterface;
>> +import org.jboss.test.deployers.support.ejb.MySLSBean;
>> +import org.jboss.test.deployers.support.ext.ExternalWebBean;
>> +import org.jboss.test.deployers.support.jar.PlainJavaBean;
>> +import org.jboss.test.deployers.support.jsf.NotWBJsfBean;
>> +import org.jboss.test.deployers.support.ui.UIWebBean;
>> +import org.jboss.test.deployers.support.util.SomeUtil;
>> +import org.jboss.test.deployers.support.web.ServletWebBean;
>> +import org.jboss.test.deployers.vfs.classloader.support.a.A;
>> +import org.jboss.test.deployers.vfs.classloader.support.b.B;
>> +import org.jboss.weld.bootstrap.spi.BeanDeploymentArchive;
>> +import org.jboss.weld.bootstrap.spi.Deployment;
>> +import org.jboss.weld.integration.deployer.DeployersUtils;
>> +
>> +/**
>> + * Deployment.loadBeanDeploymentArchive test case.
>> + *
>> + * @author<a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
>> + */
>> +public class LoadBeanDeploymentArchiveTestCase extends AbstractEnvironmentTest<BeanDeploymentArchive>
>> +{
>> +   public LoadBeanDeploymentArchiveTestCase(String name)
>> +   {
>> +      super(name);
>> +   }
>> +
>> +   public static Test suite()
>> +   {
>> +      return suite(LoadBeanDeploymentArchiveTestCase.class);
>> +   }
>> +
>> +   public void setUp() throws Exception
>> +   {
>> +      super.setUp();
>> +      JavaArchive mockJar = ShrinkWrap.create(JavaArchive.class, "mock.jar");
>> +      mockJar.addClass(CheckableBootstrap.class);
>> +      mockJar.addClass(MockEjbServices.class);
>> +      mockJar.addClass(MockEmptyEjbServices.class);
>> +      mockJar.addClass(MockTransactionServices.class);
>> +      mockJar.addClass(MockWeldBootstrap.class);
>> +      mockJar.addClass(WeldDEWrapper.class);
>> +      assertDeploy(mockJar);
>> +   }
>> +
>> +   public void testEjbJars() throws Exception
>> +   {
>> +      // ejb1.jar
>> +      JavaArchive ejbJar1 = createEjbJar("ejb1.jar", true, PlainJavaBean.class);
>> +      DeploymentUnit unit = assertDeploy(ejbJar1);
>> +      Class<?>  plainJavaBeanClass = getClass(PlainJavaBean.class, unit);
>> +      Deployment deployment1 = (Deployment) getBean(DeployersUtils.getDeploymentBeanName(unit));
>> +      // ejb2.jar
>> +      JavaArchive ejbJar2 = createEjbJar("ejb2.jar", true,  MySLSBean.class, BusinessInterface.class);
>> +      unit = assertDeploy(ejbJar2);
>> +      Class<?>  mySLSBeanClass = getClass(MySLSBean.class, unit);
>> +      Class<?>  businessInterface = getClass(BusinessInterface.class, unit);
>> +      Deployment deployment2 = (Deployment) getBean(DeployersUtils.getDeploymentBeanName(unit));
>> +
>> +      assertNotSame(deployment1, deployment2);
>> +
>> +      BeanDeploymentArchive bda1 = deployment1.getBeanDeploymentArchives().iterator().next();
>> +      BeanDeploymentArchive bda2 = deployment2.getBeanDeploymentArchives().iterator().next();
>> +      // double invocation should yield the same result
>> +      assertSame(bda1, deployment1.loadBeanDeploymentArchive(plainJavaBeanClass));
>> +      assertSame(bda1, deployment1.loadBeanDeploymentArchive(plainJavaBeanClass));
>> +
>> +      assertSame(bda2, deployment1.loadBeanDeploymentArchive(mySLSBeanClass));
>> +      assertSame(bda2, deployment1.loadBeanDeploymentArchive(businessInterface));
>> +      assertSame(bda2, deployment1.loadBeanDeploymentArchive(mySLSBeanClass));
>> +      assertSame(bda2, deployment1.loadBeanDeploymentArchive(businessInterface));
>> +
>> +      assertSame(bda1, deployment2.loadBeanDeploymentArchive(plainJavaBeanClass));
>> +      assertSame(bda1, deployment2.loadBeanDeploymentArchive(plainJavaBeanClass));
>> +      assertSame(bda2, deployment2.loadBeanDeploymentArchive(mySLSBeanClass));
>> +      assertSame(bda2, deployment2.loadBeanDeploymentArchive(mySLSBeanClass));
>> +      assertSame(bda2, deployment2.loadBeanDeploymentArchive(businessInterface));
>> +      assertSame(bda2, deployment2.loadBeanDeploymentArchive(businessInterface));
>> +   }
>> +
>> +   public void testMixedEjbJars() throws Exception
>> +   {
>> +      // ejb1.jar
>> +      JavaArchive ejbJar1 = createEjbJar("ejb1.jar", true, PlainJavaBean.class);
>> +      DeploymentUnit unit = assertDeploy(ejbJar1);
>> +      Class<?>  plainJavaBeanClass = getClass(PlainJavaBean.class, unit);
>> +      Deployment deployment1 = (Deployment) getBean(DeployersUtils.getDeploymentBeanName(unit));
>> +      // ejb2.jar
>> +      JavaArchive ejbJar2 = createEjbJar("ejb2.jar", false,  MySLSBean.class, BusinessInterface.class);
>> +      unit = assertDeploy(ejbJar2);
>> +      ClassLoader classLoader2 = unit.getClassLoader();
>> +      Class<?>  mySLSBeanClass = classLoader2.loadClass(MySLSBean.class.getName());
>> +      Class<?>  businessInterface = classLoader2.loadClass(BusinessInterface.class.getName());
>> +
>> +      BeanDeploymentArchive bda1 = deployment1.getBeanDeploymentArchives().iterator().next();
>> +      assertSame(bda1, deployment1.loadBeanDeploymentArchive(plainJavaBeanClass));
>> +      // creation of bda2 on demand
>> +      BeanDeploymentArchive bda2 = deployment1.loadBeanDeploymentArchive(mySLSBeanClass);
>> +      assertBDAId(bda2, "ejb2.jar");
>> +      assertExpectedClasses(bda2, MySLSBean.class);
>> +      assertExpectedResources(bda2);
>> +      // double invocation
>> +      assertSame(bda2, deployment1.loadBeanDeploymentArchive(mySLSBeanClass));
>> +      assertBDAId(bda2, "ejb2.jar");
>> +      assertExpectedClasses(bda2, MySLSBean.class);
>> +      assertExpectedResources(bda2);
>> +      // inclusion of BusinessInterface
>> +      assertSame(bda2, deployment1.loadBeanDeploymentArchive(businessInterface));
>> +      assertBDAId(bda2, "ejb2.jar");
>> +      assertExpectedClasses(bda2, MySLSBean.class, BusinessInterface.class);
>> +      assertExpectedResources(bda2);
>> +      // double invocation
>> +      assertSame(bda2, deployment1.loadBeanDeploymentArchive(businessInterface));
>> +      assertBDAId(bda2, "ejb2.jar");
>> +      assertExpectedClasses(bda2, MySLSBean.class, BusinessInterface.class);
>> +      assertExpectedResources(bda2);
>> +   }
>> +
>> +   public void testEjbJarsInEar() throws Exception
>> +   {
>> +      EnterpriseArchive ear = ShrinkWrap.create(EnterpriseArchive.class, EAR_NAME);
>> +      JavaArchive ejbJar1 = createEjbJar("ejbJar1.jar", true, PlainJavaBean.class);
>> +      ear.addModule(ejbJar1);
>> +      JavaArchive ejbJar2 = createEjbJar("ejbJar2.jar", true, MySLSBean.class, BusinessInterface.class);
>> +      ear.addModule(ejbJar2);
>> +      MockArchiveManifest.addManifest(ear);
>> +      DeploymentUnit unit = assertDeploy(ear);
>> +      Class<?>  plainJavaBeanClass = getClass(PlainJavaBean.class, unit);
>> +      Class<?>  mySLSBeanClass = getClass(MySLSBean.class, unit);
>> +      Class<?>  businessInterface = getClass(BusinessInterface.class, unit);
>> +
>> +      Deployment deployment = (Deployment) getBean(Deployment.class);
>> +      BeanDeploymentArchive bda = deployment.loadBeanDeploymentArchive(plainJavaBeanClass);
>> +      assertBDAId(bda, EAR_NAME);
>> +      assertExpectedClasses(bda, PlainJavaBean.class, MySLSBean.class, BusinessInterface.class);
>> +      assertSame(bda, deployment.loadBeanDeploymentArchive(mySLSBeanClass));
>> +      assertSame(bda, deployment.loadBeanDeploymentArchive(businessInterface));
>> +   }
>> +
>> +
>> +   public void testMixedEjbJarsInEar() throws Exception
>> +   {
>> +      EnterpriseArchive ear = ShrinkWrap.create(EnterpriseArchive.class, EAR_NAME);
>> +      JavaArchive ejbJar1 = createEjbJar("ejbJar1.jar", true, PlainJavaBean.class);
>> +      ear.addModule(ejbJar1);
>> +      JavaArchive ejbJar2 = createEjbJar("ejbJar2.jar", false, MySLSBean.class, BusinessInterface.class);
>> +      ear.addModule(ejbJar2);
>> +      MockArchiveManifest.addManifest(ear);
>> +      DeploymentUnit unit = assertDeploy(ear);
>> +      Class<?>  plainJavaBeanClass = getClass(PlainJavaBean.class, unit);
>> +      Class<?>  mySLSBeanClass = getClass(MySLSBean.class, unit);
>> +      Class<?>  businessInterface = getClass(BusinessInterface.class, unit);
>> +
>> +      Deployment deployment = (Deployment) getBean(Deployment.class);
>> +      BeanDeploymentArchive bda = deployment.loadBeanDeploymentArchive(plainJavaBeanClass);
>> +      assertBDAId(bda, EAR_NAME);
>> +      assertExpectedClasses(bda, PlainJavaBean.class);
>> +      assertSame(bda, deployment.loadBeanDeploymentArchive(mySLSBeanClass));
>> +      assertBDAId(bda, EAR_NAME);
>> +      assertExpectedClasses(bda, PlainJavaBean.class, MySLSBean.class);
>> +      // make sure double invocation does not affect the bda contents
>> +      assertSame(bda, deployment.loadBeanDeploymentArchive(mySLSBeanClass));
>> +      assertBDAId(bda, EAR_NAME);
>> +      assertExpectedClasses(bda, PlainJavaBean.class, MySLSBean.class);
>> +      assertSame(bda, deployment.loadBeanDeploymentArchive(businessInterface));
>> +      assertSame(bda, deployment.loadBeanDeploymentArchive(mySLSBeanClass));
>> +      assertBDAId(bda, EAR_NAME);
>> +      assertExpectedClasses(bda, PlainJavaBean.class, MySLSBean.class, BusinessInterface.class);
>> +   }
>> +
>> +   public void testEjbJarsInEars() throws Exception
>> +   {
>> +      // simple1.ear
>> +      EnterpriseArchive ear1 = ShrinkWrap.create(EnterpriseArchive.class, "simple1.ear");
>> +      JavaArchive ejbJar1 = createEjbJar("ejbJar1.jar", true, PlainJavaBean.class);
>> +      ear1.addModule(ejbJar1);
>> +      MockArchiveManifest.addManifest(ear1);
>> +      DeploymentUnit unit = assertDeploy(ear1);
>> +      Class<?>  plainJavaBeanClass = getClass(PlainJavaBean.class, unit);
>> +      Deployment deployment1 = (Deployment) getBean(DeployersUtils.getDeploymentBeanName(unit));
>> +      // simple2.ear
>> +      EnterpriseArchive ear2 = ShrinkWrap.create(EnterpriseArchive.class, "simple2.ear");
>> +      JavaArchive ejbJar2 = createEjbJar("ejbJar2.jar", true, MySLSBean.class, BusinessInterface.class);
>> +      ear2.addModule(ejbJar2);
>> +      MockArchiveManifest.addManifest(ear2);
>> +      unit = assertDeploy(ear2);
>> +      Class<?>  mySLSBeanClass = getClass(MySLSBean.class, unit);
>> +      Class<?>  businessInterface = getClass(BusinessInterface.class, unit);
>> +      Deployment deployment2 = (Deployment) getBean(DeployersUtils.getDeploymentBeanName(unit));
>> +
>> +      BeanDeploymentArchive bda1 = deployment1.getBeanDeploymentArchives().iterator().next();
>> +      BeanDeploymentArchive bda2 = deployment2.getBeanDeploymentArchives().iterator().next();
>> +      // double invocation should yield the same result
>> +      assertSame(bda1, deployment1.loadBeanDeploymentArchive(plainJavaBeanClass));
>> +      assertSame(bda1, deployment1.loadBeanDeploymentArchive(plainJavaBeanClass));
>> +
>> +      assertSame(bda2, deployment1.loadBeanDeploymentArchive(mySLSBeanClass));
>> +      assertSame(bda2, deployment1.loadBeanDeploymentArchive(businessInterface));
>> +      assertSame(bda2, deployment1.loadBeanDeploymentArchive(mySLSBeanClass));
>> +      assertSame(bda2, deployment1.loadBeanDeploymentArchive(businessInterface));
>> +
>> +      assertSame(bda1, deployment2.loadBeanDeploymentArchive(plainJavaBeanClass));
>> +      assertSame(bda1, deployment2.loadBeanDeploymentArchive(plainJavaBeanClass));
>> +      assertSame(bda2, deployment2.loadBeanDeploymentArchive(mySLSBeanClass));
>> +      assertSame(bda2, deployment2.loadBeanDeploymentArchive(mySLSBeanClass));
>> +      assertSame(bda2, deployment2.loadBeanDeploymentArchive(businessInterface));
>> +      assertSame(bda2, deployment2.loadBeanDeploymentArchive(businessInterface));
>> +   }
>> +
>> +
>> +   public void testMixedEjbJarsInEars() throws Exception
>> +   {
>> +      // simple1.ear
>> +      EnterpriseArchive ear1 = ShrinkWrap.create(EnterpriseArchive.class, "simple1.ear");
>> +      JavaArchive ejbJar1 = createEjbJar("ejbJar1.jar", false, PlainJavaBean.class);
>> +      ear1.addModule(ejbJar1);
>> +      MockArchiveManifest.addManifest(ear1);
>> +      DeploymentUnit unit = assertDeploy(ear1);
>> +      Class<?>  plainJavaBeanClass = getClass(PlainJavaBean.class, unit);
>> +
>> +      // simple2.ear
>> +      EnterpriseArchive ear2 = ShrinkWrap.create(EnterpriseArchive.class, "simple2.ear");
>> +      JavaArchive ejbJar2 = createEjbJar("ejbJar2.jar", true, MySLSBean.class, BusinessInterface.class);
>> +      ear2.addModule(ejbJar2);
>> +      MockArchiveManifest.addManifest(ear2);
>> +      unit = assertDeploy(ear2);
>> +      Class<?>  mySLSBeanClass = getClass(MySLSBean.class, unit);
>> +      Class<?>  businessInterface = getClass(BusinessInterface.class, unit);
>> +      Deployment deployment2 = (Deployment) getBean(DeployersUtils.getDeploymentBeanName(unit));
>> +
>> +      BeanDeploymentArchive bda2 = deployment2.getBeanDeploymentArchives().iterator().next();
>> +      // contents of BDA2
>> +      assertBDAId(bda2, "simple2.ear");
>> +      assertExpectedClasses(bda2, MySLSBean.class, BusinessInterface.class);
>> +      // call loadBDA
>> +      assertSame(bda2, deployment2.loadBeanDeploymentArchive(mySLSBeanClass));
>> +      assertSame(bda2, deployment2.loadBeanDeploymentArchive(businessInterface));
>> +      // make sure that loadBDA did not change the contents of BDA2
>> +      assertBDAId(bda2, "simple2.ear");
>> +      assertExpectedClasses(bda2, MySLSBean.class, BusinessInterface.class);
>> +
>> +      // creation of bda1 on demand
>> +      BeanDeploymentArchive bda1 = deployment2.loadBeanDeploymentArchive(plainJavaBeanClass);
>> +      assertBDAId(bda1, "simple1.ear");
>> +      assertExpectedClasses(bda1, PlainJavaBean.class);
>> +      assertExpectedResources(bda1);
>> +      // double invocation
>> +      assertSame(bda1, deployment2.loadBeanDeploymentArchive(plainJavaBeanClass));
>> +      assertBDAId(bda1, "simple1.ear");
>> +      assertExpectedClasses(bda1, PlainJavaBean.class);
>> +      assertExpectedResources(bda1);
>> +   }
>> +
>> +   public void testWars() throws Exception
>> +   {
>> +      WebArchive war1 = createWar("simple1.war", true, ServletWebBean.class);
>> +      DeploymentUnit unit = assertDeploy(war1);
>> +      Class<?>  servletWebBeanClass = getClass(ServletWebBean.class, unit);
>> +      Deployment deployment1 = (Deployment) getBean(DeployersUtils.getDeploymentBeanName(unit));
>> +
>> +      WebArchive war2 = createWar("simple2.war", true, NotWBJsfBean.class);
>> +      unit = assertDeploy(war2);
>> +      Class<?>  notWBJsfBeanClass = getClass(NotWBJsfBean.class, unit);
>> +      Deployment deployment2 = (Deployment) getBean(DeployersUtils.getDeploymentBeanName(unit));
>> +
>> +      assertCannotLoadBDA(deployment1, notWBJsfBeanClass);
>> +      assertCannotLoadBDA(deployment2, servletWebBeanClass);
>> +
>> +      BeanDeploymentArchive bda1 = deployment1.getBeanDeploymentArchives().iterator().next();
>> +      assertBDAId(bda1, "simple1.war");
>> +      assertExpectedClasses(bda1, ServletWebBean.class);
>> +      assertSame(bda1, deployment1.loadBeanDeploymentArchive(servletWebBeanClass));
>> +      // make sure loadBDA didn't change the bda structure
>> +      assertBDAId(bda1, "simple1.war");
>> +      assertExpectedClasses(bda1, ServletWebBean.class);
>> +
>> +      BeanDeploymentArchive bda2 = deployment2.getBeanDeploymentArchives().iterator().next();
>> +      assertBDAId(bda2, "simple2.war");
>> +      assertExpectedClasses(bda2, NotWBJsfBean.class);
>> +      assertSame(bda2, deployment2.loadBeanDeploymentArchive(notWBJsfBeanClass));
>> +      // make sure loadBDA didn't change the bda structure
>> +      assertBDAId(bda2, "simple2.war");
>> +      assertExpectedClasses(bda2, NotWBJsfBean.class);
>> +   }
>> +
>> +   public void testMixedWars() throws Exception
>> +   {
>> +      WebArchive war1 = createWar("simple1.war", true, ServletWebBean.class);
>> +      DeploymentUnit unit = assertDeploy(war1);
>> +      Deployment deployment1 = (Deployment) getBean(DeployersUtils.getDeploymentBeanName(unit));
>> +
>> +      WebArchive war2 = createWar("simple2.war", false, NotWBJsfBean.class);
>> +      unit = assertDeploy(war2);
>> +      Class<?>  notWBJsfBeanClass = getClass(NotWBJsfBean.class, unit);
>> +
>> +      assertCannotLoadBDA(deployment1, notWBJsfBeanClass);
>> +   }
>> +
>> +   public void testWarWithLib() throws Exception
>> +   {
>> +      WebArchive war = createWarWithLib(true, true);
>> +      DeploymentUnit unit = assertDeploy(war);
>> +      Class<?>  servletWebBeanClass = getClass(ServletWebBean.class, unit);
>> +      Class<?>  uiWebBeanClass = getClass(UIWebBean.class, unit);
>> +      Deployment deployment = (Deployment) getBean(Deployment.class);
>> +
>> +      BeanDeploymentArchive bda = deployment.getBeanDeploymentArchives().iterator().next();
>> +      assertBDAId(bda, WAR_NAME);
>> +      assertExpectedClasses(bda, ServletWebBean.class, UIWebBean.class);
>> +      assertSame(bda, deployment.loadBeanDeploymentArchive(servletWebBeanClass));
>> +      assertSame(bda, deployment.loadBeanDeploymentArchive(uiWebBeanClass));
>> +      // make sure bda is unchanged
>> +      assertBDAId(bda, WAR_NAME);
>> +      assertExpectedClasses(bda, ServletWebBean.class, UIWebBean.class);
>> +   }
>> +
>> +   public void testWarWithLibWithoutXml() throws Exception
>> +   {
>> +      WebArchive war = createWarWithLib(true, false);
>> +      DeploymentUnit unit = assertDeploy(war);
>> +      Class<?>  servletWebBeanClass = getClass(ServletWebBean.class, unit);
>> +      Class<?>  uiWebBeanClass = getClass(UIWebBean.class, unit);
>> +      Deployment deployment = (Deployment) getBean(Deployment.class);
>> +
>> +      BeanDeploymentArchive bda = deployment.getBeanDeploymentArchives().iterator().next();
>> +      assertBDAId(bda, WAR_NAME);
>> +      assertExpectedClasses(bda, ServletWebBean.class);
>> +      assertSame(bda, deployment.loadBeanDeploymentArchive(servletWebBeanClass));
>> +      assertBDAId(bda, WAR_NAME);
>> +      assertExpectedClasses(bda, ServletWebBean.class);
>> +      assertSame(bda, deployment.loadBeanDeploymentArchive(uiWebBeanClass));
>> +      assertBDAId(bda, WAR_NAME);
>> +      assertExpectedClasses(bda, ServletWebBean.class, UIWebBean.class);
>> +      // duplicate call makes no difference in the bda contents
>> +      assertSame(bda, deployment.loadBeanDeploymentArchive(uiWebBeanClass));
>> +      assertBDAId(bda, WAR_NAME);
>> +      assertExpectedClasses(bda, ServletWebBean.class, UIWebBean.class);
>> +   }
>> +
>> +   public void testWarWithoutXmlWithLib() throws Exception
>> +   {
>> +      WebArchive war = createWarWithLib(false, true);
>> +      DeploymentUnit unit = assertDeploy(war);
>> +      Class<?>  servletWebBeanClass = getClass(ServletWebBean.class, unit);
>> +      Class<?>  uiWebBeanClass = getClass(UIWebBean.class, unit);
>> +      Deployment deployment = (Deployment) getBean(Deployment.class);
>> +
>> +      BeanDeploymentArchive bda = deployment.getBeanDeploymentArchives().iterator().next();
>> +      assertBDAId(bda, WAR_NAME);
>> +      assertExpectedClasses(bda, UIWebBean.class);
>> +      assertSame(bda, deployment.loadBeanDeploymentArchive(servletWebBeanClass));
>> +      assertBDAId(bda, WAR_NAME);
>> +      assertExpectedClasses(bda, ServletWebBean.class, UIWebBean.class);
>> +      // duplicate call makes no difference in the bda contents
>> +      assertSame(bda, deployment.loadBeanDeploymentArchive(servletWebBeanClass));
>> +      assertBDAId(bda, WAR_NAME);
>> +      assertExpectedClasses(bda, ServletWebBean.class, UIWebBean.class);
>> +      assertSame(bda, deployment.loadBeanDeploymentArchive(uiWebBeanClass));
>> +      assertBDAId(bda, WAR_NAME);
>> +      assertExpectedClasses(bda, ServletWebBean.class, UIWebBean.class);
>> +   }
>> +
>> +   public void testWarWithMixedLibs() throws Exception
>> +   {
>> +      WebArchive war = createWarWithLibs(true, true, false);
>> +      DeploymentUnit unit = assertDeploy(war);
>> +      Class<?>  servletWebBeanClass = getClass(ServletWebBean.class, unit);
>> +      Class<?>  uiWebBeanClass = getClass(UIWebBean.class, unit);
>> +      Class<?>  crmWebBeanClass = getClass(CrmWebBean.class, unit);
>> +      Deployment deployment = (Deployment) getBean(Deployment.class);
>> +
>> +      BeanDeploymentArchive bda = deployment.getBeanDeploymentArchives().iterator().next();
>> +      assertBDAId(bda, WAR_NAME);
>> +      assertExpectedClasses(bda, ServletWebBean.class, UIWebBean.class);
>> +      assertSame(bda, deployment.loadBeanDeploymentArchive(servletWebBeanClass));
>> +      assertBDAId(bda, WAR_NAME);
>> +      assertExpectedClasses(bda, ServletWebBean.class, UIWebBean.class);
>> +      assertSame(bda, deployment.loadBeanDeploymentArchive(uiWebBeanClass));
>> +      assertBDAId(bda, WAR_NAME);
>> +      assertExpectedClasses(bda, ServletWebBean.class, UIWebBean.class);
>> +      assertSame(bda, deployment.loadBeanDeploymentArchive(crmWebBeanClass));
>> +      assertBDAId(bda, WAR_NAME);
>> +      assertExpectedClasses(bda, ServletWebBean.class, UIWebBean.class, CrmWebBean.class);
>> +      // duplicate call makes no difference in the bda contents
>> +      assertSame(bda, deployment.loadBeanDeploymentArchive(crmWebBeanClass));
>> +      assertBDAId(bda, WAR_NAME);
>> +      assertExpectedClasses(bda, ServletWebBean.class, UIWebBean.class, CrmWebBean.class);
>> +   }
>> +
>> +
>> +   public void testWarInEars() throws Exception
>> +   {
>> +      EnterpriseArchive ear1 = ShrinkWrap.create(EnterpriseArchive.class, "warinear1.ear");
>> +      WebArchive war1 = createWar(true);
>> +      ear1.addModule(war1);
>> +      MockArchiveManifest.addManifest(ear1);
>> +      DeploymentUnit unit = assertDeploy(ear1);
>> +      Class<?>  servletWebBeanClass = getClass(ServletWebBean.class, unit.getChildren().iterator().next());
>> +      Deployment deployment1 = (Deployment) getBean(DeployersUtils.getDeploymentBeanName(unit));
>> +
>> +      EnterpriseArchive ear2 = ShrinkWrap.create(EnterpriseArchive.class, "warinear2.ear");
>> +      WebArchive war2 = createWar(WAR_NAME, true, NotWBJsfBean.class);
>> +      ear2.addModule(war2);
>> +      MockArchiveManifest.addManifest(ear2);
>> +      unit = assertDeploy(ear2);
>> +      Class<?>  notWBJsfBeanClass = getClass(NotWBJsfBean.class, unit.getChildren().iterator().next());
>> +      Deployment deployment2 = (Deployment) getBean(DeployersUtils.getDeploymentBeanName(unit));
>> +
>> +      assertCannotLoadBDA(deployment1, notWBJsfBeanClass);
>> +      assertCannotLoadBDA(deployment2, servletWebBeanClass);
>> +   }
>> +
>> +   public void testWarsInEar() throws Exception
>> +   {
>> +      EnterpriseArchive ear = ShrinkWrap.create(EnterpriseArchive.class, "warinear.ear");
>> +      WebArchive war1 = createWar("simple1.war", true, ServletWebBean.class);
>> +      ear.addModule(war1);
>> +      WebArchive war2 = createWar("simple2.war", true, NotWBJsfBean.class);
>> +      ear.addModule(war2);
>> +      MockArchiveManifest.addManifest(ear);
>> +      DeploymentUnit unit = assertDeploy(ear);
>> +      Iterator<DeploymentUnit>  iterator = unit.getChildren().iterator();
>> +      DeploymentUnit unit1 = iterator.next();
>> +      DeploymentUnit unit2 = iterator.next();
>> +      if (unit2.getName().contains("simple1.war"))
>> +      {
>> +         DeploymentUnit temp = unit2;
>> +         unit2 = unit1;
>> +         unit1 = temp;
>> +      }
>> +      Class<?>  servletWebBeanClass = getClass(ServletWebBean.class, unit1);
>> +      Class<?>  notWBJsfBeanClass = getClass(NotWBJsfBean.class, unit2);
>> +      Deployment deployment = (Deployment) getBean(Deployment.class);
>> +
>> +      BeanDeploymentArchive bda1 = deployment.loadBeanDeploymentArchive(servletWebBeanClass);
>> +      assertBDAId(bda1, "warinear.ear/simple1.war");
>> +      assertExpectedClasses(bda1, ServletWebBean.class);
>> +
>> +      BeanDeploymentArchive bda2 = deployment.loadBeanDeploymentArchive(notWBJsfBeanClass);
>> +      assertBDAId(bda2, "warinear.ear/simple2.war");
>> +      assertExpectedClasses(bda2, NotWBJsfBean.class);
>> +   }
>> +
>> +   public void testEjbJar_War() throws Exception
>> +   {
>> +      // ejb.jar
>> +      JavaArchive ejbJar = createEjbJar(true);
>> +      DeploymentUnit unit = assertDeploy(ejbJar);
>> +      Class<?>  plainJavaBeanClass = getClass(PlainJavaBean.class, unit);
>> +      Deployment deployment1 = (Deployment) getBean(DeployersUtils.getDeploymentBeanName(unit));
>> +      // simple.war
>> +      WebArchive war = createWar(true);
>> +      unit = assertDeploy(war);
>> +      Class<?>  servletWebBeanClass = getClass(ServletWebBean.class, unit);
>> +      Deployment deployment2 = (Deployment) getBean(DeployersUtils.getDeploymentBeanName(unit));
>> +
>> +      assertCannotLoadBDA(deployment1, servletWebBeanClass);
>> +
>> +      BeanDeploymentArchive bda = deployment1.getBeanDeploymentArchives().iterator().next();
>> +      assertBDAId(bda, EJB_JAR_NAME);
>> +      assertExpectedClasses(bda, PlainJavaBean.class);
>> +      assertSame(bda, deployment2.loadBeanDeploymentArchive(plainJavaBeanClass));
>> +      // make sure bda contents are unchanged
>> +      assertBDAId(bda, EJB_JAR_NAME);
>> +      assertExpectedClasses(bda, PlainJavaBean.class);
>> +   }
>> +
>> +   public void testEjbJarAndWarInEar() throws Exception
>> +   {
>> +      // ejb.jar
>> +      EnterpriseArchive ear = ShrinkWrap.create(EnterpriseArchive.class, EAR_NAME);
>> +      JavaArchive ejbJar = createEjbJar(true);
>> +      ear.addModule(ejbJar);
>> +      // simple.war
>> +      WebArchive war = createWar(true);
>> +      ear.addModule(war);
>> +      MockArchiveManifest.addManifest(ear);
>> +      DeploymentUnit unit = assertDeploy(ear);
>> +      Class<?>  plainJavaBeanClass = getClass(PlainJavaBean.class, unit);
>> +      Iterator<DeploymentUnit>  iterator = unit.getChildren().iterator();
>> +      DeploymentUnit warUnit = null;
>> +      do
>> +      {
>> +         warUnit = iterator.next();
>> +      } while (!warUnit.getName().contains(WAR_NAME));
>> +
>> +      Class<?>  servletWebBeanClass = getClass(ServletWebBean.class, warUnit);
>> +      Deployment deployment = (Deployment) getBean(Deployment.class);
>> +
>> +
>> +      BeanDeploymentArchive bda = deployment.loadBeanDeploymentArchive(plainJavaBeanClass);
>> +      assertBDAId(bda, EAR_NAME);
>> +      assertExpectedClasses(bda, PlainJavaBean.class);
>> +
>> +      bda = deployment.loadBeanDeploymentArchive(servletWebBeanClass);
>> +      assertBDAId(bda, EAR_NAME + "/" + WAR_NAME);
>> +      assertExpectedClasses(bda, ServletWebBean.class);
>> +   }
>> +
>> +   public void testEjbJarInEar_War() throws Exception
>> +   {
>> +      // ejb.jar
>> +      EnterpriseArchive ear = ShrinkWrap.create(EnterpriseArchive.class, EAR_NAME);
>> +      JavaArchive ejbJar = createEjbJar(true);
>> +      ear.addModule(ejbJar);
>> +      MockArchiveManifest.addManifest(ear);
>> +      DeploymentUnit unit = assertDeploy(ear);
>> +      Class<?>  plainJavaBeanClass = getClass(PlainJavaBean.class, unit);
>> +      Deployment deployment1 = (Deployment) getBean(DeployersUtils.getDeploymentBeanName(unit));
>> +      // simple.war
>> +      WebArchive war = createWar(true);
>> +      unit = assertDeploy(war);
>> +      Class<?>  servletWebBeanClass = getClass(ServletWebBean.class, unit);
>> +      Deployment deployment2 = (Deployment) getBean(DeployersUtils.getDeploymentBeanName(unit));
>> +
>> +      assertCannotLoadBDA(deployment1, servletWebBeanClass);
>> +
>> +      BeanDeploymentArchive bda = deployment1.getBeanDeploymentArchives().iterator().next();
>> +      assertBDAId(bda, EAR_NAME);
>> +      assertExpectedClasses(bda, PlainJavaBean.class);
>> +      assertSame(bda, deployment2.loadBeanDeploymentArchive(plainJavaBeanClass));
>> +      // make sure bda contents are unchanged
>> +      assertBDAId(bda, EAR_NAME);
>> +      assertExpectedClasses(bda, PlainJavaBean.class);
>> +   }
>> +
>> +
>> +   public void testEjbJarInEar_WarWithLibInEar() throws Exception
>> +   {
>> +      // ejb.ear
>> +      EnterpriseArchive ejbEar = ShrinkWrap.create(EnterpriseArchive.class, "ejb.ear");
>> +      JavaArchive ejbJar = createEjbJar(true);
>> +      ejbEar.addModule(ejbJar);
>> +      MockArchiveManifest.addManifest(ejbEar);
>> +      DeploymentUnit unit = assertDeploy(ejbEar);
>> +      Class<?>  plainJavaBeanClass = getClass(PlainJavaBean.class, unit);
>> +      Deployment deployment1 = (Deployment) getBean(DeployersUtils.getDeploymentBeanName(unit));
>> +      // war.ear
>> +      EnterpriseArchive warEar = ShrinkWrap.create(EnterpriseArchive.class, "war.ear");
>> +      WebArchive war = createWarWithLib(true, false);
>> +      warEar.addModule(war);
>> +      MockArchiveManifest.addManifest(warEar);
>> +      unit = assertDeploy(warEar);
>> +      DeploymentUnit warUnit = unit.getChildren().iterator().next();
>> +      Class<?>  servletWebBeanClass = getClass(ServletWebBean.class, warUnit);
>> +      Class<?>  uiWebBeanClass = getClass(UIWebBean.class, warUnit);
>> +      Deployment deployment2 = (Deployment) getBean(DeployersUtils.getDeploymentBeanName(unit));
>> +
>> +      assertCannotLoadBDA(deployment1, servletWebBeanClass);
>> +
>> +      BeanDeploymentArchive bda = deployment1.getBeanDeploymentArchives().iterator().next();
>> +      assertBDAId(bda, "ejb.ear");
>> +      assertExpectedClasses(bda, PlainJavaBean.class);
>> +      assertSame(bda, deployment2.loadBeanDeploymentArchive(plainJavaBeanClass));
>> +      // make sure bda contents are unchanged
>> +      assertBDAId(bda, "ejb.ear");
>> +      assertExpectedClasses(bda, PlainJavaBean.class);
>> +
>> +      bda = deployment2.loadBeanDeploymentArchive(servletWebBeanClass);
>> +      String bdaName = "war.ear/" + WAR_NAME;
>> +      assertBDAId(bda, bdaName);
>> +      assertExpectedClasses(bda, ServletWebBean.class);
>> +
>> +      BeanDeploymentArchive bda2 = deployment2.loadBeanDeploymentArchive(uiWebBeanClass);
>> +      assertSame(bda, bda2);
>> +      assertBDAId(bda, bdaName);
>> +      assertExpectedClasses(bda, ServletWebBean.class, UIWebBean.class);
>> +   }
>> +
>> +   public void testMultipleArchives() throws Exception
>> +   {
>> +      WebArchive war1 = createWar("web1.war", true, ServletWebBean.class);
>> +      DeploymentUnit war1Unit = assertDeploy(war1);
>> +      Deployment war1Deployment = (Deployment) getBean(DeployersUtils.getDeploymentBeanName(war1Unit));
>> +      BeanDeploymentArchive war1BDA = war1Deployment.getBeanDeploymentArchives().iterator().next();
>> +      assertBDAId(war1BDA, "web1.war");
>> +      assertExpectedClasses(war1BDA, ServletWebBean.class);
>> +      Class<?>  servletWebBeanWar1Class = getClass(ServletWebBean.class, war1Unit);
>> +
>> +      WebArchive war2 = createWar("web2.war", true, NotWBJsfBean.class);
>> +      createLib(war2, "crm.jar", false, CrmWebBean.class);
>> +      DeploymentUnit war2Unit = assertDeploy(war2);
>> +      Deployment war2Deployment = (Deployment) getBean(DeployersUtils.getDeploymentBeanName(war2Unit));
>> +      BeanDeploymentArchive war2BDA = war2Deployment.getBeanDeploymentArchives().iterator().next();
>> +      assertBDAId(war2BDA, "web2.war");
>> +      assertExpectedClasses(war2BDA, NotWBJsfBean.class);
>> +      Class<?>  notWBJsfBeanWar2Class = getClass(NotWBJsfBean.class, war2Unit);
>> +      Class<?>  crmWebBeanWar2Class = getClass(CrmWebBean.class, war2Unit);
>> +
>> +      JavaArchive ejbJar = createEjbJar("ejb.jar", true, BusinessInterface.class);
>> +      DeploymentUnit ejbJarUnit = assertDeploy(ejbJar);
>> +      Deployment ejbJarDeployment = (Deployment) getBean(DeployersUtils.getDeploymentBeanName(ejbJarUnit));
>> +      BeanDeploymentArchive ejbJarBDA = ejbJarDeployment.getBeanDeploymentArchives().iterator().next();
>> +      assertBDAId(ejbJarBDA, "ejb.jar");
>> +      assertExpectedClasses(ejbJarBDA, BusinessInterface.class);
>> +      Class<?>  businessInterfaceClass = getClass(BusinessInterface.class, ejbJarUnit);
>> +
>> +      EnterpriseArchive ear1 = ShrinkWrap.create(EnterpriseArchive.class, "full.ear");
>> +      WebArchive warInEar1 = createWarWithLibs(false, true, true);
>> +      ear1.addModule(warInEar1);
>> +      ear1.addModule(war2);
>> +      JavaArchive ejbJarInEar1 = createEjbJar("ejbInFullEar.jar", false, MySLSBean.class);
>> +      ear1.addModule(ejbJarInEar1);
>> +      createLib(ear1, "lib1.jar", false, ExternalWebBean.class);
>> +      createLib(ear1, "lib2.jar", true, A.class);
>> +      createLib(ear1, "lib3.jar", false, B.class);
>> +      MockArchiveManifest.addManifest(ear1);
>> +      DeploymentUnit ear1Unit = assertDeploy(ear1);
>> +      Deployment ear1Deployment = (Deployment) getBean(DeployersUtils.getDeploymentBeanName(ear1Unit));
>> +      BeanDeploymentArchive ear1BDA = null, ear1War1BDA = null, ear1War2BDA = null;
>> +      for (BeanDeploymentArchive bda: ear1Deployment.getBeanDeploymentArchives())
>> +      {
>> +         if (bda.getId().contains(WAR_NAME))
>> +         {
>> +            ear1War1BDA = bda;
>> +         }
>> +         else if (bda.getId().contains("web2.war"))
>> +         {
>> +            ear1War2BDA = bda;
>> +         }
>> +         else
>> +         {
>> +            ear1BDA = bda;
>> +         }
>> +      }
>> +      assertBDAId(ear1BDA, "full.ear");
>> +      assertExpectedClasses(ear1BDA, A.class);
>> +      assertBDAId(ear1War1BDA, "full.ear/" + WAR_NAME);
>> +      assertExpectedClasses(ear1War1BDA, UIWebBean.class, CrmWebBean.class);
>> +      assertBDAId(ear1War2BDA, "full.ear/web2.war");
>> +      assertExpectedClasses(ear1War2BDA, NotWBJsfBean.class);
>> +      Class<?>  servletWebBeanEar1Class = null, uiWebBeanEar1Class = null,
>> +               crmWebBeanEar1War1Class = null, notWBJsfBeanEar1Class = null,
>> +               crmWebBeanEar1War2Class = null;
>> +      for (DeploymentUnit ear1Child: ear1Unit.getChildren())
>> +      {
>> +         if (ear1Child.getName().contains(WAR_NAME))
>> +         {
>> +           servletWebBeanEar1Class = getClass(ServletWebBean.class, ear1Child);
>> +           uiWebBeanEar1Class = getClass(UIWebBean.class, ear1Child);
>> +           crmWebBeanEar1War1Class = getClass(CrmWebBean.class, ear1Child);
>> +         }
>> +         else if (ear1Child.getName().contains("web2.war"))
>> +         {
>> +            notWBJsfBeanEar1Class = getClass(NotWBJsfBean.class, ear1Child);
>> +            crmWebBeanEar1War2Class = getClass(CrmWebBean.class, ear1Child);
>> +         }
>> +      }
>> +      Class<?>  externalWebBeanClass = getClass(ExternalWebBean.class, ear1Unit);
>> +      Class<?>  aClass = getClass(A.class, ear1Unit);
>> +      Class<?>  bClass = getClass(B.class, ear1Unit);
>> +
>> +      EnterpriseArchive ear2 = ShrinkWrap.create(EnterpriseArchive.class, "ejbWLibs.ear");
>> +      JavaArchive ejbJarInEar2 = createEjbJar("ejbInEar2.jar", true, PlainJavaBean.class);
>> +      ear2.addModule(ejbJarInEar2);
>> +      createLib(ear2, "lib1.jar", false, SomeUtil.class);
>> +      createLib(ear2, "lib2.jar", true, CrmWebBean.class);
>> +      MockArchiveManifest.addManifest(ear2);
>> +      DeploymentUnit ear2Unit = assertDeploy(ear2);
>> +      Deployment ear2Deployment = (Deployment) getBean(DeployersUtils.getDeploymentBeanName(ear2Unit));
>> +      BeanDeploymentArchive ear2BDA = ear2Deployment.getBeanDeploymentArchives().iterator().next();
>> +      assertBDAId(ear2BDA, "ejbWLibs.ear");
>> +      assertExpectedClasses(ear2BDA, PlainJavaBean.class, CrmWebBean.class);
>> +      Class<?>  plainJavaBeanClass = getClass(PlainJavaBean.class, ear2Unit);
>> +      Class<?>  someUtilClass = getClass(SomeUtil.class, ear2Unit);
>> +      Class<?>  crmWebBeanClass = getClass(CrmWebBean.class, ear2Unit);
>> +
>> +      // Assert on web classes
>> +
>> +      assertCannotLoadBDA(war1Deployment, servletWebBeanEar1Class);
>> +      assertCannotLoadBDA(war1Deployment, notWBJsfBeanWar2Class);
>> +      assertCannotLoadBDA(war1Deployment, notWBJsfBeanEar1Class);
>> +      assertCannotLoadBDA(war1Deployment, crmWebBeanWar2Class);
>> +      assertCannotLoadBDA(war1Deployment, crmWebBeanEar1War1Class);
>> +      assertCannotLoadBDA(war1Deployment, crmWebBeanEar1War2Class);
>> +      assertCannotLoadBDA(war1Deployment, uiWebBeanEar1Class);
>> +      BeanDeploymentArchive bda = war1Deployment.loadBeanDeploymentArchive(servletWebBeanWar1Class);
>> +      assertSame(war1BDA, bda);
>> +      // verify the absence of collateral effects on the BDA
>> +      assertBDAId(war1BDA, "web1.war");
>> +      assertExpectedClasses(war1BDA, ServletWebBean.class);
>> +
>> +      assertCannotLoadBDA(war2Deployment, servletWebBeanWar1Class);
>> +      assertCannotLoadBDA(war2Deployment, servletWebBeanEar1Class);
>> +      assertCannotLoadBDA(war2Deployment, notWBJsfBeanEar1Class);
>> +      assertCannotLoadBDA(war2Deployment, crmWebBeanEar1War1Class);
>> +      assertCannotLoadBDA(war2Deployment, crmWebBeanEar1War2Class);
>> +      assertCannotLoadBDA(war2Deployment, uiWebBeanEar1Class);
>> +      bda = war2Deployment.loadBeanDeploymentArchive(notWBJsfBeanWar2Class);
>> +      bda = war2Deployment.loadBeanDeploymentArchive(crmWebBeanWar2Class);
>> +      assertSame(war2BDA, bda);
>> +      assertBDAId(war2BDA, "web2.war");
>> +      assertExpectedClasses(war2BDA, NotWBJsfBean.class, CrmWebBean.class);
>> +
>> +      assertCannotLoadBDA(ejbJarDeployment, servletWebBeanWar1Class);
>> +      assertCannotLoadBDA(ejbJarDeployment, servletWebBeanEar1Class);
>> +      assertCannotLoadBDA(ejbJarDeployment, notWBJsfBeanWar2Class);
>> +      assertCannotLoadBDA(ejbJarDeployment, notWBJsfBeanEar1Class);
>> +      assertCannotLoadBDA(ejbJarDeployment, crmWebBeanWar2Class);
>> +      assertCannotLoadBDA(ejbJarDeployment, crmWebBeanEar1War1Class);
>> +      assertCannotLoadBDA(ejbJarDeployment, crmWebBeanEar1War2Class);
>> +      assertCannotLoadBDA(ejbJarDeployment, uiWebBeanEar1Class);
>> +
>> +      assertCannotLoadBDA(ear1Deployment, servletWebBeanWar1Class);
>> +      assertCannotLoadBDA(ear1Deployment, notWBJsfBeanWar2Class);
>> +      assertCannotLoadBDA(ear1Deployment, crmWebBeanWar2Class);
>> +      bda = ear1Deployment.loadBeanDeploymentArchive(servletWebBeanEar1Class);
>> +      assertSame(ear1War1BDA, bda);
>> +      bda = ear1Deployment.loadBeanDeploymentArchive(uiWebBeanEar1Class);
>> +      assertSame(ear1War1BDA, bda);
>> +      bda = ear1Deployment.loadBeanDeploymentArchive(crmWebBeanEar1War1Class);
>> +      assertSame(ear1War1BDA, bda);
>> +      assertBDAId(ear1War1BDA, "full.ear/" + WAR_NAME);
>> +      assertExpectedClasses(ear1War1BDA, ServletWebBean.class, UIWebBean.class, CrmWebBean.class);
>> +
>> +      bda = ear1Deployment.loadBeanDeploymentArchive(notWBJsfBeanEar1Class);
>> +      assertSame(ear1War2BDA, bda);
>> +      bda = ear1Deployment.loadBeanDeploymentArchive(crmWebBeanEar1War2Class);
>> +      assertSame(ear1War2BDA, bda);
>> +      assertBDAId(ear1War2BDA, "full.ear/web2.war");
>> +      assertExpectedClasses(ear1War2BDA, NotWBJsfBean.class, CrmWebBean.class);
>> +
>> +      assertCannotLoadBDA(ear2Deployment, servletWebBeanWar1Class);
>> +      assertCannotLoadBDA(ear2Deployment, servletWebBeanEar1Class);
>> +      assertCannotLoadBDA(ear2Deployment, notWBJsfBeanWar2Class);
>> +      assertCannotLoadBDA(ear2Deployment, notWBJsfBeanEar1Class);
>> +      assertCannotLoadBDA(ear2Deployment, crmWebBeanWar2Class);
>> +      assertCannotLoadBDA(ear2Deployment, crmWebBeanEar1War1Class);
>> +      assertCannotLoadBDA(ear2Deployment, crmWebBeanEar1War2Class);
>> +      assertCannotLoadBDA(ear2Deployment, uiWebBeanEar1Class);
>> +
>> +      // Assert on business classes that are part of existing BDAs
>> +      bda = ejbJarDeployment.loadBeanDeploymentArchive(businessInterfaceClass);
>> +      assertSame(ejbJarBDA, bda);
>> +      war1Deployment.loadBeanDeploymentArchive(businessInterfaceClass);
>> +      assertSame(ejbJarBDA, bda);
>> +      war2Deployment.loadBeanDeploymentArchive(businessInterfaceClass);
>> +      assertSame(ejbJarBDA, bda);
>> +      ear1Deployment.loadBeanDeploymentArchive(businessInterfaceClass);
>> +      assertSame(ejbJarBDA, bda);
>> +      war2Deployment.loadBeanDeploymentArchive(businessInterfaceClass);
>> +      assertSame(ejbJarBDA, bda);
>> +      assertBDAId(ejbJarBDA, "ejb.jar"); // no collateral effects on the BDA
>> +      assertExpectedClasses(ejbJarBDA, BusinessInterface.class);
>> +
>> +      bda = ear1Deployment.loadBeanDeploymentArchive(aClass);
>> +      assertSame(ear1BDA, bda);
>> +      bda = war1Deployment.loadBeanDeploymentArchive(aClass);
>> +      assertSame(ear1BDA, bda);
>> +      bda = war2Deployment.loadBeanDeploymentArchive(aClass);
>> +      assertSame(ear1BDA, bda);
>> +      bda = ejbJarDeployment.loadBeanDeploymentArchive(aClass);
>> +      assertSame(ear1BDA, bda);
>> +      bda = ear2Deployment.loadBeanDeploymentArchive(aClass);
>> +      assertSame(ear1BDA, bda);
>> +      assertBDAId(ear1BDA, "full.ear"); // no collateral effects on the BDA
>> +      assertExpectedClasses(ear1BDA, A.class);
>> +
>> +      bda = ear2Deployment.loadBeanDeploymentArchive(plainJavaBeanClass);
>> +      assertSame(ear2BDA, bda);
>> +      bda = ear2Deployment.loadBeanDeploymentArchive(crmWebBeanClass);
>> +      assertSame(ear2BDA, bda);
>> +      bda = war1Deployment.loadBeanDeploymentArchive(plainJavaBeanClass);
>> +      assertSame(ear2BDA, bda);
>> +      bda = war1Deployment.loadBeanDeploymentArchive(crmWebBeanClass);
>> +      assertSame(ear2BDA, bda);
>> +      bda = war2Deployment.loadBeanDeploymentArchive(plainJavaBeanClass);
>> +      assertSame(ear2BDA, bda);
>> +      bda = war2Deployment.loadBeanDeploymentArchive(crmWebBeanClass);
>> +      assertSame(ear2BDA, bda);
>> +      bda = ejbJarDeployment.loadBeanDeploymentArchive(plainJavaBeanClass);
>> +      assertSame(ear2BDA, bda);
>> +      bda = ejbJarDeployment.loadBeanDeploymentArchive(crmWebBeanClass);
>> +      assertSame(ear2BDA, bda);
>> +      bda = ear1Deployment.loadBeanDeploymentArchive(plainJavaBeanClass);
>> +      assertSame(ear2BDA, bda);
>> +      bda = ear1Deployment.loadBeanDeploymentArchive(crmWebBeanClass);
>> +      assertSame(ear2BDA, bda);
>> +      assertBDAId(ear2BDA, "ejbWLibs.ear"); // no collateral effects on the BDA
>> +      assertExpectedClasses(ear2BDA, PlainJavaBean.class, CrmWebBean.class);
>> +
>> +      // Assert on business classes that are not yet part of existing BDAs
>> +      bda = war1Deployment.loadBeanDeploymentArchive(externalWebBeanClass);
>> +      assertSame(ear1BDA, bda);
>> +      assertBDAId(ear1BDA, "full.ear");
>> +      assertExpectedClasses(ear1BDA, ExternalWebBean.class, A.class);
>> +      bda = war2Deployment.loadBeanDeploymentArchive(externalWebBeanClass);
>> +      assertSame(ear1BDA, bda);
>> +      bda = ejbJarDeployment.loadBeanDeploymentArchive(externalWebBeanClass);
>> +      assertSame(ear1BDA, bda);
>> +      bda = ear1Deployment.loadBeanDeploymentArchive(externalWebBeanClass);
>> +      assertSame(ear1BDA, bda);
>> +      bda = ear2Deployment.loadBeanDeploymentArchive(externalWebBeanClass);
>> +      assertSame(ear1BDA, bda);
>> +      assertBDAId(ear1BDA, "full.ear"); // no collateral effects on the BDA
>> +      assertExpectedClasses(ear1BDA, ExternalWebBean.class, A.class);
>> +
>> +      bda = ear1Deployment.loadBeanDeploymentArchive(bClass);
>> +      assertSame(ear1BDA, bda);
>> +      assertBDAId(ear1BDA, "full.ear");
>> +      assertExpectedClasses(ear1BDA, ExternalWebBean.class, A.class, B.class);
>> +      bda = war1Deployment.loadBeanDeploymentArchive(bClass);
>> +      assertSame(ear1BDA, bda);
>> +      bda = war2Deployment.loadBeanDeploymentArchive(bClass);
>> +      assertSame(ear1BDA, bda);
>> +      bda = ejbJarDeployment.loadBeanDeploymentArchive(bClass);
>> +      assertSame(ear1BDA, bda);
>> +      bda = ear2Deployment.loadBeanDeploymentArchive(bClass);
>> +      assertSame(ear1BDA, bda);
>> +      assertBDAId(ear1BDA, "full.ear"); // no collateral effects on the BDA
>> +      assertExpectedClasses(ear1BDA, ExternalWebBean.class, A.class, B.class);
>> +
>> +      bda = ejbJarDeployment.loadBeanDeploymentArchive(someUtilClass);
>> +      assertSame(ear2BDA, bda);
>> +      assertBDAId(ear2BDA, "ejbWLibs.ear");
>> +      assertExpectedClasses(ear2BDA, PlainJavaBean.class, SomeUtil.class, CrmWebBean.class);
>> +      bda = war1Deployment.loadBeanDeploymentArchive(someUtilClass);
>> +      assertSame(ear2BDA, bda);
>> +      bda = war2Deployment.loadBeanDeploymentArchive(someUtilClass);
>> +      assertSame(ear2BDA, bda);
>> +      bda = ear1Deployment.loadBeanDeploymentArchive(someUtilClass);
>> +      assertSame(ear2BDA, bda);
>> +      bda = ear2Deployment.loadBeanDeploymentArchive(someUtilClass);
>> +      assertSame(ear2BDA, bda);
>> +      assertBDAId(ear2BDA, "ejbWLibs.ear"); // no collateraleffects on the BDA
>> +      assertExpectedClasses(ear2BDA, PlainJavaBean.class, SomeUtil.class, CrmWebBean.class);
>> +   }
>> +
>> +   @Override
>> +   protected Collection<Class<?>>  getClasses(BeanDeploymentArchive bda)
>> +   {
>> +      return bda.getBeanClasses();
>> +   }
>> +
>> +   @Override
>> +   protected Collection<URL>  getResources(BeanDeploymentArchive bda)
>> +   {
>> +      return bda.getBeansXml();
>> +   }
>> +
>> +   private void assertBDAId(BeanDeploymentArchive bda, String name)
>> +   {
>> +      assertTrue("BDA id \""  + bda.getId() + "\" expected to end with suffix \"" + name + "/}\"",
>> +               bda.getId().endsWith(name + "/}"));
>> +   }
>> +
>> +   private Class<?>  getClass(Class<?>  clazz, DeploymentUnit unit) throws ClassNotFoundException
>> +   {
>> +      ClassLoader classLoader = unit.getClassLoader();
>> +      return classLoader.loadClass(clazz.getName());
>> +   }
>> +
>> +   private void assertCannotLoadBDA(Deployment deployment, Class<?>  beanClass)
>> +   {
>> +      boolean failed = false;
>> +      try
>> +      {
>> +         deployment.loadBeanDeploymentArchive(beanClass);
>> +      }
>> +      catch (IllegalArgumentException e)
>> +      {
>> +         failed = true;
>> +      }
>> +      assertTrue(failed);
>> +   }
>> +}
>> \ No newline at end of file
>>
>>
>> Property changes on: trunk/weld-int/deployer/src/test/java/org/jboss/test/deployers/test/LoadBeanDeploymentArchiveTestCase.java
>> ___________________________________________________________________
>> Name: svn:keywords
>>    + Author Date Id Revision
>> Name: svn:eol-style
>>    + native
>>
>> Added: trunk/weld-int/deployer/src/test/resources/org/jboss/test/deployers/test/ArchiveEnvironmentTestCase.xml
>> ===================================================================
>> --- trunk/weld-int/deployer/src/test/resources/org/jboss/test/deployers/test/ArchiveEnvironmentTestCase.xml                            (rev 0)
>> +++ trunk/weld-int/deployer/src/test/resources/org/jboss/test/deployers/test/ArchiveEnvironmentTestCase.xml    2010-07-25 19:55:55 UTC (rev 107075)
>> @@ -0,0 +1,14 @@
>> +<deployment xmlns="urn:jboss:bean-deployer:2.0">
>> +
>> +<bean name="EarStructure" class="org.jboss.test.deployers.vfs.structure.ear.support.MockEarStructureDeployer"/>
>> +<bean name="WarStructure" class="org.jboss.test.deployers.vfs.structure.war.support.MockWarStructureDeployer"/>
>> +<bean name="WarClassLoader" class="org.jboss.test.deployers.vfs.reflect.support.MockWarClassLoaderDeployer"/>
>> +
>> +<bean name="JWBMDDeployer" class="org.jboss.weld.integration.deployer.ext.JBossWeldMetaDataDeployer"/>
>> +<bean name="WBFilesDeployer" class="org.jboss.weld.integration.deployer.metadata.WeldFilesDeployer"/>
>> +<bean name="ArchiveInfoDeployer" class="org.jboss.weld.integration.deployer.env.ArchiveInfoDeployer"/>
>> +
>> +<!--  Target of the Test -->
>> +<bean name="ArchiveDiscoveryDeployer" class="org.jboss.weld.integration.deployer.env.ArchiveDiscoveryDeployer"/>
>> +
>> +</deployment>
>>
>> Added: trunk/weld-int/deployer/src/test/resources/org/jboss/test/deployers/test/ArchiveInfoDeploymentTestCase.xml
>> ===================================================================
>> --- trunk/weld-int/deployer/src/test/resources/org/jboss/test/deployers/test/ArchiveInfoDeploymentTestCase.xml                            (rev 0)
>> +++ trunk/weld-int/deployer/src/test/resources/org/jboss/test/deployers/test/ArchiveInfoDeploymentTestCase.xml    2010-07-25 19:55:55 UTC (rev 107075)
>> @@ -0,0 +1,10 @@
>> +<deployment xmlns="urn:jboss:bean-deployer:2.0">
>> +
>> +<bean name="EarStructure" class="org.jboss.test.deployers.vfs.structure.ear.support.MockEarStructureDeployer"/>
>> +<bean name="WarStructure" class="org.jboss.test.deployers.vfs.structure.war.support.MockWarStructureDeployer"/>
>> +<bean name="WarClassLoader" class="org.jboss.test.deployers.vfs.reflect.support.MockWarClassLoaderDeployer"/>
>> +
>> +<!--  Target of the Test -->
>> +<bean name="ArchiveInfoDeployer" class="org.jboss.weld.integration.deployer.env.ArchiveInfoDeployer"/>
>> +
>> +</deployment>
>>
>> Added: trunk/weld-int/deployer/src/test/resources/org/jboss/test/deployers/test/BasicEarJBossDeploymentTestCase.xml
>> ===================================================================
>> --- trunk/weld-int/deployer/src/test/resources/org/jboss/test/deployers/test/BasicEarJBossDeploymentTestCase.xml                            (rev 0)
>> +++ trunk/weld-int/deployer/src/test/resources/org/jboss/test/deployers/test/BasicEarJBossDeploymentTestCase.xml    2010-07-25 19:55:55 UTC (rev 107075)
>> @@ -0,0 +1,33 @@
>> +<deployment xmlns="urn:jboss:bean-deployer:2.0">
>> +
>> +<bean name="EarStructure" class="org.jboss.test.deployers.vfs.structure.ear.support.MockEarStructureDeployer"/>
>> +<bean name="WarStructure" class="org.jboss.test.deployers.vfs.structure.war.support.MockWarStructureDeployer"/>
>> +<bean name="WarClassLoader" class="org.jboss.test.deployers.vfs.reflect.support.MockWarClassLoaderDeployer"/>
>> +
>> +<bean name="JWBMDDeployer" class="org.jboss.weld.integration.deployer.ext.JBossWeldMetaDataDeployer"/>
>> +<bean name="WBFilesDeployer" class="org.jboss.weld.integration.deployer.metadata.WeldFilesDeployer"/>
>> +<bean name="ArchiveInfoDeployer" class="org.jboss.weld.integration.deployer.env.ArchiveInfoDeployer"/>
>> +<bean name="ArchiveDiscoveryDeployer" class="org.jboss.weld.integration.deployer.env.ArchiveDiscoveryDeployer"/>
>> +
>> +<beanfactory name="JBossEjbServices" class="org.jboss.test.deployers.support.MockEmptyEjbServices"/>
>> +
>> +<bean name="EjbServicesDeployer" class="org.jboss.weld.integration.deployer.env.EjbServicesDeployer">
>> +<property name="ejbServicesClassName">org.jboss.test.deployers.support.MockEmptyEjbServices</property>
>> +</bean>
>> +
>> +<!-- Target of the Test -->
>> +<bean name="DeploymentDeployer" class="org.jboss.weld.integration.deployer.env.JBossDeploymentDeployer"/>
>> +
>> +<bean name="BootDeployer" class="org.jboss.test.deployers.support.deployer.MockBootDeployer"/>
>> +
>> +<bean name="DynamicDependencyCreator" class="org.jboss.weld.integration.deployer.env.DynamicDependencyCreator">
>> +<constructor>
>> +<parameter><inject bean="jboss.kernel:service=KernelController"/></parameter>
>> +</constructor>
>> +</bean>
>> +
>> +<bean name="JBossTransactionServices" class="org.jboss.test.deployers.support.MockTransactionServices"/>
>> +
>> +<bean name="RealTransactionManager" class="java.lang.Object"/>
>> +
>> +</deployment>
>>
>> Added: trunk/weld-int/deployer/src/test/resources/org/jboss/test/deployers/test/DeploymentEnvironmentTestCase.xml
>> ===================================================================
>> --- trunk/weld-int/deployer/src/test/resources/org/jboss/test/deployers/test/DeploymentEnvironmentTestCase.xml                            (rev 0)
>> +++ trunk/weld-int/deployer/src/test/resources/org/jboss/test/deployers/test/DeploymentEnvironmentTestCase.xml    2010-07-25 19:55:55 UTC (rev 107075)
>> @@ -0,0 +1,33 @@
>> +<deployment xmlns="urn:jboss:bean-deployer:2.0">
>> +
>> +<bean name="EarStructure" class="org.jboss.test.deployers.vfs.structure.ear.support.MockEarStructureDeployer"/>
>> +<bean name="WarStructure" class="org.jboss.test.deployers.vfs.structure.war.support.MockWarStructureDeployer"/>
>> +<bean name="WarClassLoader" class="org.jboss.test.deployers.vfs.reflect.support.MockWarClassLoaderDeployer"/>
>> +
>> +<bean name="JWBMDDeployer" class="org.jboss.weld.integration.deployer.ext.JBossWeldMetaDataDeployer"/>
>> +<bean name="WBFilesDeployer" class="org.jboss.weld.integration.deployer.metadata.WeldFilesDeployer"/>
>> +<bean name="ArchiveInfoDeployer" class="org.jboss.weld.integration.deployer.env.ArchiveInfoDeployer"/>
>> +<bean name="ArchiveDiscoveryDeployer" class="org.jboss.weld.integration.deployer.env.ArchiveDiscoveryDeployer"/>
>> +
>> +<beanfactory name="JBossEjbServices" class="org.jboss.test.deployers.support.MockEmptyEjbServices"/>
>> +
>> +<bean name="EjbServicesDeployer" class="org.jboss.weld.integration.deployer.env.EjbServicesDeployer">
>> +<property name="ejbServicesClassName">org.jboss.test.deployers.support.MockEmptyEjbServices</property>
>> +</bean>
>> +
>> +<!-- Target of the Test -->
>> +<bean name="DeploymentDeployer" class="org.jboss.weld.integration.deployer.env.JBossDeploymentDeployer"/>
>> +
>> +<bean name="BootDeployer" class="org.jboss.test.deployers.support.deployer.MockBootDeployer"/>
>> +
>> +<bean name="DynamicDependencyCreator" class="org.jboss.weld.integration.deployer.env.DynamicDependencyCreator">
>> +<constructor>
>> +<parameter><inject bean="jboss.kernel:service=KernelController"/></parameter>
>> +</constructor>
>> +</bean>
>> +
>> +<bean name="JBossTransactionServices" class="org.jboss.test.deployers.support.MockTransactionServices"/>
>> +
>> +<bean name="RealTransactionManager" class="java.lang.Object"/>
>> +
>> +</deployment>
>>
>> Added: trunk/weld-int/deployer/src/test/resources/org/jboss/test/deployers/test/JBossDeploymentSmokeTestCase.xml
>> ===================================================================
>> --- trunk/weld-int/deployer/src/test/resources/org/jboss/test/deployers/test/JBossDeploymentSmokeTestCase.xml                            (rev 0)
>> +++ trunk/weld-int/deployer/src/test/resources/org/jboss/test/deployers/test/JBossDeploymentSmokeTestCase.xml    2010-07-25 19:55:55 UTC (rev 107075)
>> @@ -0,0 +1,64 @@
>> +<deployment xmlns="urn:jboss:bean-deployer:2.0">
>> +
>> +<!-- Structure mocks -->
>> +
>> +<bean name="EarStructure" class="org.jboss.test.deployers.vfs.structure.ear.support.MockEarStructureDeployer"/>
>> +<bean name="WarStructure" class="org.jboss.test.deployers.vfs.structure.war.support.MockWarStructureDeployer"/>
>> +
>> +<!-- Mock metadata deployer -->
>> +
>> +<bean name="JBAppMDDeployer" class="org.jboss.test.deployers.support.deployer.MockJBossAppDeployer"/>
>> +<bean name="JBWMDDeployer" class="org.jboss.test.deployers.support.deployer.MockWebDeployer"/>
>> +<bean name="EjbJarDeployer" class="org.jboss.test.deployers.support.deployer.MockEjbJarDeployer"/>
>> +<bean name="EjbMergeDeployer" class="org.jboss.test.deployers.support.deployer.MockCopyJBossDeployer"/>
>> +<bean name="WarCLDeployer" class="org.jboss.test.deployers.support.deployer.MockWarClassLoaderDeployer"/>
>> +
>> +<!-- Weld deployers -->
>> +
>> +<!-- Responsible for discovering Weld files -->
>> +<bean name="WeldFilesDeployer" class="org.jboss.weld.integration.deployer.metadata.WeldFilesDeployer"/>
>> +
>> +<!-- Responsible for creating an ArchiveInfo for every module -->
>> +<bean name="ArchiveInfoDeployer" class="org.jboss.weld.integration.deployer.env.ArchiveInfoDeployer"/>
>> +
>> +<!-- Responsible for discovering Weld classes -->
>> +<bean name="DiscoveryDeployer" class="org.jboss.weld.integration.deployer.env.ArchiveDiscoveryDeployer"/>
>> +
>> +<!-- Responsible for discovering Weld classes -->
>> +<bean name="EjbServicesDeployer" class="org.jboss.weld.integration.deployer.env.EjbServicesDeployer"/>
>> +
>> +<!-- Responsible for generating metadata for the creation of a Deployment -->
>> +<bean name="DeploymentDeployer" class="org.jboss.weld.integration.deployer.env.JBossDeploymentDeployer"/>
>> +
>> +<!-- Responsible for dynamic ejb dependency creation -->
>> +<bean name="DynamicDependencyCreator" class="org.jboss.weld.integration.deployer.env.DynamicDependencyCreator">
>> +<constructor>
>> +<parameter><inject bean="jboss.kernel:service=KernelController"/></parameter>
>> +</constructor>
>> +</bean>
>> +
>> +<!-- Responsible for booting Weld -->
>> +<bean name="WeldBootstrapDeployer" class="org.jboss.weld.integration.deployer.env.WeldBootstrapDeployer"/>
>> +
>> +<!-- Binds bootstrap to jndi -->
>> +<bean name="JndiBinderDeployer" class="org.jboss.test.deployers.support.deployer.MockJndiBinderDeployer"/>
>> +
>> +<!-- Missing real URL integration tests-->
>> +
>> +<bean name="MockUrlIntegrationDeployer" class="org.jboss.test.deployers.support.deployer.MockUrlIntegrationDeployer"/>
>> +
>> +<!-- Responsible for inserting the Weld EJB interceptor -->
>> +<bean name="PostEjbJarMetadataDeployer" class="org.jboss.weld.integration.deployer.metadata.WeldEjbInterceptorMetadataDeployer"/>
>> +
>> +<!-- Responsible for enabling classloader isolation for Weld jars -->
>> +<bean name="PostJBossMetadataDeployer" class="org.jboss.weld.integration.deployer.metadata.PostJBossMetadataDeployer"/>
>> +
>> +<!-- Responsible for enabling classloader isolation for Weld wars -->
>> +<bean name="PostJBossWebMetadataDeployer" class="org.jboss.weld.integration.deployer.metadata.PostJBossWebMetadataDeployer"/>
>> +
>> +<!-- Responsible for adding the Weld listener to the Servlet -->
>> +<bean name="PostWebMetadataDeployer" class="org.jboss.weld.integration.deployer.metadata.PostWebMetadataDeployer"/>
>> +
>> +<!-- Removed WeldJndiBinder -->
>> +
>> +</deployment>
>>
>> Added: trunk/weld-int/deployer/src/test/resources/org/jboss/test/deployers/test/LoadBeanDeploymentArchiveTestCase.xml
>> ===================================================================
>> --- trunk/weld-int/deployer/src/test/resources/org/jboss/test/deployers/test/LoadBeanDeploymentArchiveTestCase.xml                            (rev 0)
>> +++ trunk/weld-int/deployer/src/test/resources/org/jboss/test/deployers/test/LoadBeanDeploymentArchiveTestCase.xml    2010-07-25 19:55:55 UTC (rev 107075)
>> @@ -0,0 +1,33 @@
>> +<deployment xmlns="urn:jboss:bean-deployer:2.0">
>> +
>> +<bean name="EarStructure" class="org.jboss.test.deployers.vfs.structure.ear.support.MockEarStructureDeployer"/>
>> +<bean name="WarStructure" class="org.jboss.test.deployers.vfs.structure.war.support.MockWarStructureDeployer"/>
>> +<bean name="WarClassLoader" class="org.jboss.test.deployers.vfs.reflect.support.MockWarClassLoaderDeployer"/>
>> +
>> +<bean name="JWBMDDeployer" class="org.jboss.weld.integration.deployer.ext.JBossWeldMetaDataDeployer"/>
>> +<bean name="WBFilesDeployer" class="org.jboss.weld.integration.deployer.metadata.WeldFilesDeployer"/>
>> +<bean name="ArchiveInfoDeployer" class="org.jboss.weld.integration.deployer.env.ArchiveInfoDeployer"/>
>> +<bean name="ArchiveDiscoveryDeployer" class="org.jboss.weld.integration.deployer.env.ArchiveDiscoveryDeployer"/>
>> +
>> +<beanfactory name="JBossEjbServices" class="org.jboss.test.deployers.support.MockEmptyEjbServices"/>
>> +
>> +<bean name="EjbServicesDeployer" class="org.jboss.weld.integration.deployer.env.EjbServicesDeployer">
>> +<property name="ejbServicesClassName">org.jboss.test.deployers.support.MockEmptyEjbServices</property>
>> +</bean>
>> +
>> +<!-- Target of the Test -->
>> +<bean name="DeploymentDeployer" class="org.jboss.weld.integration.deployer.env.JBossDeploymentDeployer"/>
>> +
>> +<bean name="BootDeployer" class="org.jboss.test.deployers.support.deployer.MockBootDeployer"/>
>> +
>> +<bean name="DynamicDependencyCreator" class="org.jboss.weld.integration.deployer.env.DynamicDependencyCreator">
>> +<constructor>
>> +<parameter><inject bean="jboss.kernel:service=KernelController"/></parameter>
>> +</constructor>
>> +</bean>
>> +
>> +<bean name="JBossTransactionServices" class="org.jboss.test.deployers.support.MockTransactionServices"/>
>> +
>> +<bean name="RealTransactionManager" class="java.lang.Object"/>
>> +
>> +</deployment>
>>
>>
>>
>> ------------------------------
>>
>> _______________________________________________
>> jboss-cvs-commits mailing list
>> jboss-cvs-commits at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/jboss-cvs-commits
>>
>>
>> End of jboss-cvs-commits Digest, Vol 49, Issue 187
>> **************************************************
>>      

-- 
Flavia Rainone | JBoss Core Developer

M: (+55) (+11) 8122-5466
YIM/MSNIM: flaviarnn



More information about the jboss-cvs-commits mailing list