[jboss-cvs] JBossAS SVN: r98088 - in projects/jboss-deployers/branches/vfs3: deployers-client-spi/src/main/java/org/jboss/deployers/spi/deployer and 107 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Dec 21 11:03:25 EST 2009


Author: johnbailey
Date: 2009-12-21 11:03:14 -0500 (Mon, 21 Dec 2009)
New Revision: 98088

Added:
   projects/jboss-deployers/branches/vfs3/deployers-impl/src/test/java/org/jboss/test/deployers/annotations/support/InterceptionClassLoaderSystem.java
   projects/jboss-deployers/branches/vfs3/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/support/TestDeployerAdapter.java
   projects/jboss-deployers/branches/vfs3/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/test/DeployerRequiredInputsUnitTestCase.java
   projects/jboss-deployers/branches/vfs3/deployers-jmx/src/test/java/org/jboss/test/system/deployers/support/SMDParsingDeployer.java
   projects/jboss-deployers/branches/vfs3/deployers-jmx/src/test/java/org/jboss/test/system/deployers/test/AbstractServiceTest.java
   projects/jboss-deployers/branches/vfs3/deployers-jmx/src/test/java/org/jboss/test/system/deployers/test/ServiceDeploymentRegistryTestCase.java
   projects/jboss-deployers/branches/vfs3/deployers-spi/src/main/java/org/jboss/deployers/spi/deployer/helpers/CollectionNameIgnoreMechanism.java
   projects/jboss-deployers/branches/vfs3/deployers-spi/src/main/java/org/jboss/deployers/spi/deployer/helpers/PatternNameIgnoreMechanism.java
   projects/jboss-deployers/branches/vfs3/deployers-spi/src/main/java/org/jboss/deployers/spi/deployer/matchers/NameIgnoreMechanism.java
   projects/jboss-deployers/branches/vfs3/deployers-structure-spi/src/main/java/org/jboss/deployers/structure/spi/DeploymentRegistry.java
   projects/jboss-deployers/branches/vfs3/deployers-structure-spi/src/main/java/org/jboss/deployers/structure/spi/helpers/AbstractDeploymentRegistry.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs-spi/src/main/java/org/jboss/deployers/vfs/spi/deployer/helpers/BeanMetaDataDeployerPlugin.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/main/java/org/jboss/deployers/vfs/deployer/kernel/KernelControllerContextComparator.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/main/java/org/jboss/deployers/vfs/plugins/annotations/AnnotationRepositoryDeployer.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/main/java/org/jboss/deployers/vfs/plugins/annotations/FilteredAnnotationRepositoryDeployer.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/main/java/org/jboss/deployers/vfs/plugins/annotations/JavassistAnnotationRepositoryDeployer.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/main/java/org/jboss/deployers/vfs/plugins/util/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/main/java/org/jboss/deployers/vfs/plugins/util/ClasspathUtils.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/bean/support/NoopBeanMetaDataDeployerPlugin.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/bean/support/NotUndeployingSpecialBeanMetaDataDeployerPlugin.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/bean/support/SpecialBeanMetaDataDeployerPlugin.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/bean/support/TriggerSpecialBeanMetaDataDeployerPlugin.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/bean/support/UndeployingSpecialBeanMetaDataDeployerPlugin.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/bean/test/BeanMetaDataDeployerPluginTestCase.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/bean/test/BeansDeploymentRegistryUnitTestCase.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/bean/test/BootstrapBeanMetaDataPluginTestCase.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/matchers/support/NIMDeployer.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/matchers/test/NameIgnoreMechanismTestCase.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/ReflectTestSuite.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/MockWarClassLoaderDeployer.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/PoolFactoryInitializer.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/crm/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/crm/CrmFacade.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/ejb/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/ejb/BusinessInterface.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/ejb/MySLSBean.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/ext/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/ext/External.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/jar/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/jar/PlainJavaBean.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/jsf/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/jsf/JsfBean.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/service/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/service/SomeMBean.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/tif/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/tif/TIFTester.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/ui/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/ui/UIBean.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/util/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/util/SomeUtil.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/web/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/web/AnyServlet.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/ClassPoolTest.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/ClassPoolTestCase.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/IntrospectionTypeInfoTestCase.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/JavassistTypeInfoTestCase.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/ReflectTest.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/TypeInfoTest.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/dependency/basic/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/dependency/basic/META-INF/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/dependency/basic/META-INF/jboss-dependency.xml
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/matchers/ignore/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/matchers/ignore/META-INF/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/matchers/ignore/META-INF/empty.txt
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/matchers/ignore/META-INF/fst.txt
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/matchers/ignore/META-INF/qwert.tmp
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/matchers/ignore/META-INF/snd.txt
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/org/jboss/test/deployers/vfs/deployer/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/org/jboss/test/deployers/vfs/deployer/bean/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/org/jboss/test/deployers/vfs/deployer/bean/test/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/org/jboss/test/deployers/vfs/deployer/bean/test/BootstrapBeanMetaDataPluginTestCase.xml
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/org/jboss/test/deployers/vfs/reflect/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/org/jboss/test/deployers/vfs/reflect/test/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/org/jboss/test/deployers/vfs/reflect/test/ClassPoolTestCase.xml
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/org/jboss/test/deployers/vfs/reflect/test/IntrospectionTypeInfoTestCase.xml
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/org/jboss/test/deployers/vfs/reflect/test/JavassistTypeInfoTestCase.xml
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/clmd/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/clmd/META-INF/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/clmd/META-INF/clmd-beans.xml
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/clmd/META-INF/jboss-classloading.xml
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ear2war/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ear2war/META-INF/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ear2war/META-INF/application.properties
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ear2war/META-INF/jboss-classloading.xml
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ear2war/manifest/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ear2war/manifest/META-INF/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ear2war/manifest/META-INF/MANIFEST.MF
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ear2war/war1/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ear2war/war1/WEB-INF/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ear2war/war1/WEB-INF/jboss-classloading.xml
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ear2war/war2/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ear2war/war2/WEB-INF/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ear2war/war2/WEB-INF/jboss-classloading.xml
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/earutil/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/earutil/META-INF/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/earutil/META-INF/application.properties
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ejb/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ejb/META-INF/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ejb/META-INF/MANIFEST.MF
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ejb/META-INF/ejb-jar.xml
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/jarinear/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/jarinear/META-INF/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/jarinear/META-INF/application.properties
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/module/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/module/META-INF/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/module/META-INF/anys-beans.xml
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/sar/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/sar/META-INF/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/sar/META-INF/jboss-service.xml
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/simple/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/simple/META-INF/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/simple/META-INF/application.properties
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/tif/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/tif/META-INF/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/tif/META-INF/tif-beans.xml
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/warinear/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/warinear/META-INF/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/warinear/META-INF/application.properties
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/web/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/web/WEB-INF/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/web/WEB-INF/web.xml
Removed:
   projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/annotations/AbstractElement.java
   projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/annotations/ClassElement.java
   projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/annotations/ClassSignaturePair.java
   projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/annotations/CommitElement.java
   projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/annotations/DefaultAnnotationEnvironment.java
   projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/annotations/DefaultElement.java
   projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/annotations/EnvPutList.java
   projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/annotations/FilteredGenericAnnotationDeployer.java
   projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/annotations/GenericAnnotationResourceVisitor.java
   projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/annotations/ParametersElement.java
   projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/annotations/ScopedGenericAnnotationDeployer.java
   projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/annotations/WeakClassLoaderHolder.java
   projects/jboss-deployers/branches/vfs3/deployers-spi/src/main/java/org/jboss/deployers/spi/annotations/AnnotationEnvironment.java
   projects/jboss-deployers/branches/vfs3/deployers-spi/src/main/java/org/jboss/deployers/spi/annotations/Element.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/main/java/org/jboss/deployers/vfs/Refcountable.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/main/java/org/jboss/deployers/vfs/plugins/annotations/AnnotationEnvironmentDeployer.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/main/java/org/jboss/deployers/vfs/plugins/annotations/FilteredAnnotationEnvironmentDeployer.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/main/java/org/jboss/deployers/vfs/plugins/annotations/ScopedAnnotationEnvironmentDeployer.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/main/java/org/jboss/deployers/vfs/plugins/util/ClasspathUtils.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/ReflectTestSuite.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/MockWarClassLoaderDeployer.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/PoolFactoryInitializer.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/crm/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/crm/CrmFacade.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/ejb/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/ejb/BusinessInterface.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/ejb/MySLSBean.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/ext/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/ext/External.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/jar/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/jar/PlainJavaBean.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/jsf/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/jsf/JsfBean.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/service/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/service/SomeMBean.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/tif/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/tif/TIFTester.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/ui/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/ui/UIBean.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/util/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/util/SomeUtil.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/web/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/web/AnyServlet.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/ClassPoolTest.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/ClassPoolTestCase.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/IntrospectionTypeInfoTestCase.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/JavassistTypeInfoTestCase.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/ReflectTest.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/TypeInfoTest.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/dependency/basic/META-INF/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/dependency/basic/META-INF/jboss-dependency.xml
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/matchers/ignore/META-INF/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/matchers/ignore/META-INF/empty.txt
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/matchers/ignore/META-INF/fst.txt
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/matchers/ignore/META-INF/qwert.tmp
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/matchers/ignore/META-INF/snd.txt
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/org/jboss/test/deployers/vfs/deployer/bean/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/org/jboss/test/deployers/vfs/deployer/bean/test/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/org/jboss/test/deployers/vfs/deployer/bean/test/BootstrapBeanMetaDataPluginTestCase.xml
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/org/jboss/test/deployers/vfs/reflect/test/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/org/jboss/test/deployers/vfs/reflect/test/ClassPoolTestCase.xml
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/org/jboss/test/deployers/vfs/reflect/test/IntrospectionTypeInfoTestCase.xml
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/org/jboss/test/deployers/vfs/reflect/test/JavassistTypeInfoTestCase.xml
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/clmd/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/clmd/META-INF/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/clmd/META-INF/clmd-beans.xml
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/clmd/META-INF/jboss-classloading.xml
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ear2war/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ear2war/META-INF/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ear2war/META-INF/application.properties
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ear2war/META-INF/jboss-classloading.xml
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ear2war/manifest/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ear2war/manifest/META-INF/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ear2war/manifest/META-INF/MANIFEST.MF
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ear2war/war1/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ear2war/war1/WEB-INF/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ear2war/war1/WEB-INF/jboss-classloading.xml
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ear2war/war2/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ear2war/war2/WEB-INF/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ear2war/war2/WEB-INF/jboss-classloading.xml
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/earutil/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/earutil/META-INF/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/earutil/META-INF/application.properties
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ejb/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ejb/META-INF/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ejb/META-INF/MANIFEST.MF
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ejb/META-INF/ejb-jar.xml
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/jarinear/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/jarinear/META-INF/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/jarinear/META-INF/application.properties
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/module/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/module/META-INF/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/module/META-INF/anys-beans.xml
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/sar/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/sar/META-INF/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/sar/META-INF/jboss-service.xml
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/simple/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/simple/META-INF/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/simple/META-INF/application.properties
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/tif/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/tif/META-INF/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/tif/META-INF/tif-beans.xml
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/warinear/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/warinear/META-INF/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/warinear/META-INF/application.properties
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/web/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/web/WEB-INF/
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/web/WEB-INF/web.xml
Modified:
   projects/jboss-deployers/branches/vfs3/deployers-client-spi/src/main/java/org/jboss/deployers/spi/deployer/DeploymentStages.java
   projects/jboss-deployers/branches/vfs3/deployers-impl/pom.xml
   projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/annotations/GenericAnnotationDeployer.java
   projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/classloading/AbstractClassLoaderDescribeDeployer.java
   projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/classloading/AbstractLevelClassLoaderSystemDeployer.java
   projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/deployers/DeployerWrapper.java
   projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/deployers/DeployersImpl.java
   projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/main/MainDeployerImpl.java
   projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/managed/DefaultManagedDeploymentCreator.java
   projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/sort/DominoOrdering.java
   projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/sort/Dots.java
   projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/sort/SetDots.java
   projects/jboss-deployers/branches/vfs3/deployers-impl/src/test/java/org/jboss/test/deployers/annotations/support/InterceptionClassLoaderSystemDeployer.java
   projects/jboss-deployers/branches/vfs3/deployers-impl/src/test/java/org/jboss/test/deployers/annotations/test/AnnotationEnvKeepTestCase.java
   projects/jboss-deployers/branches/vfs3/deployers-impl/src/test/java/org/jboss/test/deployers/annotations/test/AnnotationEnvTestCase.java
   projects/jboss-deployers/branches/vfs3/deployers-impl/src/test/java/org/jboss/test/deployers/annotations/test/AnnotationsTest.java
   projects/jboss-deployers/branches/vfs3/deployers-impl/src/test/java/org/jboss/test/deployers/classloading/test/SubDeploymentMockClassLoaderUnitTestCase.java
   projects/jboss-deployers/branches/vfs3/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/DeployersDeployerTestSuite.java
   projects/jboss-deployers/branches/vfs3/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/test/DeployerFlowUnitTestCase.java
   projects/jboss-deployers/branches/vfs3/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/test/DeployerRequiredStageUnitTestCase.java
   projects/jboss-deployers/branches/vfs3/deployers-jmx/src/main/java/org/jboss/system/deployers/ServiceDeployer.java
   projects/jboss-deployers/branches/vfs3/deployers-jmx/src/test/java/org/jboss/test/system/deployers/test/DeployersTestSuite.java
   projects/jboss-deployers/branches/vfs3/deployers-jmx/src/test/java/org/jboss/test/system/deployers/test/ServiceUnitNameTestCase.java
   projects/jboss-deployers/branches/vfs3/deployers-spi/pom.xml
   projects/jboss-deployers/branches/vfs3/deployers-spi/src/main/java/org/jboss/deployers/spi/deployer/Deployer.java
   projects/jboss-deployers/branches/vfs3/deployers-spi/src/main/java/org/jboss/deployers/spi/deployer/Deployers.java
   projects/jboss-deployers/branches/vfs3/deployers-spi/src/main/java/org/jboss/deployers/spi/deployer/helpers/AbstractAllInputDeployer.java
   projects/jboss-deployers/branches/vfs3/deployers-spi/src/main/java/org/jboss/deployers/spi/deployer/helpers/AbstractAnnotationDeployer.java
   projects/jboss-deployers/branches/vfs3/deployers-spi/src/main/java/org/jboss/deployers/spi/deployer/helpers/AbstractDeployer.java
   projects/jboss-deployers/branches/vfs3/deployers-spi/src/main/java/org/jboss/deployers/spi/deployer/helpers/AbstractParsingDeployerWithOutput.java
   projects/jboss-deployers/branches/vfs3/deployers-spi/src/main/java/org/jboss/deployers/spi/deployer/helpers/AbstractRealDeployer.java
   projects/jboss-deployers/branches/vfs3/deployers-spi/src/main/java/org/jboss/deployers/spi/deployer/managed/ManagedDeploymentCreator.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs-spi/pom.xml
   projects/jboss-deployers/branches/vfs3/deployers-vfs-spi/src/main/java/org/jboss/deployers/vfs/spi/deployer/AbstractVFSParsingDeployer.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs-spi/src/main/java/org/jboss/deployers/vfs/spi/structure/CandidateAnnotationsCallback.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs-spi/src/main/java/org/jboss/deployers/vfs/spi/structure/helpers/AbstractStructureDeployer.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/pom.xml
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/main/java/org/jboss/deployers/vfs/deployer/kernel/BeanMetaDataDeployer.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/main/java/org/jboss/deployers/vfs/plugins/annotations/DeploymentUnitClassPath.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/main/java/org/jboss/deployers/vfs/plugins/classloader/VFSDeploymentClassLoaderPolicyModule.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/main/java/org/jboss/deployers/vfs/plugins/structure/AbstractVFSStructureDeployer.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/BootstrapDeployersTestDelegate.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/DeployersVFSTestSuite.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/annotations/test/AbstractAnnotationsScanningUnitTest.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/classloader/test/ManagedObjectClassLoadingParserUnitTestCase.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/dependency/test/DependenciesTestCase.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/AbstractDeployerUnitTest.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/bean/BeanDeployerTestSuite.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/bean/test/BeanScanningUnitTestCase.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/matchers/VFSMatchersTestSuite.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/matchers/support/FeedbackDeployer.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/structure/ear/support/MockEarStructureDeployer.java
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/bootstrap/bootstrap.xml
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/org/jboss/test/deployers/vfs/annotations/test/AnnotationsScanningUnitTestCase.xml
   projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/org/jboss/test/deployers/vfs/annotations/test/AnnotationsScanningWithMetaDataUnitTestCase.xml
   projects/jboss-deployers/branches/vfs3/pom.xml
Log:
Merged in changes from jboss-deployers trunk to VFS3 integration.  This branch was getting very out of date with the trunk

Modified: projects/jboss-deployers/branches/vfs3/deployers-client-spi/src/main/java/org/jboss/deployers/spi/deployer/DeploymentStages.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-client-spi/src/main/java/org/jboss/deployers/spi/deployer/DeploymentStages.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-client-spi/src/main/java/org/jboss/deployers/spi/deployer/DeploymentStages.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -25,6 +25,7 @@
  * The Standard DeploymentStages.
  * 
  * @author <a href="adrian at jboss.org">Adrian Brock</a>
+ * @author <a href="ales.justin at jboss.org">Ales Justin</a>
  * @version $Revision: 1.1 $
  */
 public interface DeploymentStages
@@ -32,8 +33,11 @@
    /** The not installed stage - nothing is done here */
    DeploymentStage NOT_INSTALLED = new DeploymentStage("Not Installed");
 
+   /** The pre parse stage - where pre parsing stuff can be prepared; altDD, ignore, ... */
+   DeploymentStage PRE_PARSE = new DeploymentStage("PreParse", NOT_INSTALLED);
+
    /** The parse stage - where metadata is read */
-   DeploymentStage PARSE = new DeploymentStage("Parse", NOT_INSTALLED);
+   DeploymentStage PARSE = new DeploymentStage("Parse", PRE_PARSE);
 
    /** The post parse stage - where metadata can be fixed up */
    DeploymentStage POST_PARSE = new DeploymentStage("PostParse", PARSE);

Modified: projects/jboss-deployers/branches/vfs3/deployers-impl/pom.xml
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-impl/pom.xml	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-impl/pom.xml	2009-12-21 16:03:14 UTC (rev 98088)
@@ -151,6 +151,40 @@
       </exclusions>
     </dependency>
     <dependency>
+      <groupId>org.jboss.mcann</groupId>
+      <artifactId>mcann-core</artifactId>
+      <exclusions>
+        <exclusion>
+          <groupId>org.jboss.vfs</groupId>
+          <artifactId>jboss-vfs</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.jboss</groupId>
+          <artifactId>jboss-reflect</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.jboss.man</groupId>
+          <artifactId>jboss-managed</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.jboss.man</groupId>
+          <artifactId>jboss-metatype</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.jboss.microcontainer</groupId>
+          <artifactId>jboss-kernel</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.jboss.kernel</groupId>
+          <artifactId>jboss-kernel</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.jboss.cl</groupId>
+          <artifactId>jboss-classloading</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
       <groupId>javassist</groupId>
       <artifactId>javassist</artifactId>
     </dependency>

Deleted: projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/annotations/AbstractElement.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/annotations/AbstractElement.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/annotations/AbstractElement.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1,123 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source
-* Copyright 2006, JBoss Inc., and individual contributors as indicated
-* by the @authors tag. See the copyright.txt 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.deployers.plugins.annotations;
-
-import java.lang.annotation.Annotation;
-import java.lang.ref.SoftReference;
-import java.lang.reflect.AnnotatedElement;
-
-import org.jboss.deployers.spi.annotations.Element;
-
-/**
- * Abstract annotations element.
- *
- * @param <A> the annotation type
- * @param <M> the annotated element type
- * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
- */
-public abstract class AbstractElement<A extends Annotation, M extends AnnotatedElement> extends WeakClassLoaderHolder implements Element<A, M>
-{
-   protected String className;
-   protected Class<A> annClass;
-   private A annotation;
-
-   private SoftReference<Class<?>> classRef;
-
-   public AbstractElement(ClassLoader classLoader, String className, Class<A> annClass, A annotation)
-   {
-      super(classLoader);
-
-      if (className == null)
-         throw new IllegalArgumentException("Null className");
-      if (annClass == null)
-         throw new IllegalArgumentException("Null annotation class");
-
-      this.className = className;
-      this.annClass = annClass;
-      this.annotation = annotation;
-   }
-
-   public String getOwnerClassName()
-   {
-      return className;
-   }
-
-   public Class<?> getOwner()
-   {
-      if (classRef != null)
-      {
-         Class<?> clazz = classRef.get();
-         if (clazz != null)
-            return clazz;
-      }
-
-      Class<?> clazz = loadClass(className);
-      classRef = new SoftReference<Class<?>>(clazz);
-      return clazz;
-   }
-
-   public A getAnnotation()
-   {
-      if (annotation == null)
-         annotation = readAnnotation();
-
-      return annotation;
-   }
-
-   /**
-    * Read the annotation.
-    *
-    * @return the read annotation
-    */
-   protected A readAnnotation()
-   {
-      AnnotatedElement annotatedElement = getAnnotatedElement();
-      return annotatedElement.getAnnotation(annClass);
-   }
-
-   public int getHashCode()
-   {
-      int hash = className.hashCode();
-      hash += 7 * annClass.hashCode();
-      if (annotation != null)
-         hash += 11 * annotation.hashCode();
-      return hash;
-   }
-
-   public boolean equals(Object obj)
-   {
-      if (obj == null || getClass().equals(obj.getClass()) == false)
-         return false;
-
-      AbstractElement<?, ?> ae = AbstractElement.class.cast(obj);
-      if (className.equals(ae.className) == false)
-         return false;
-      if (annClass.equals(ae.annClass) == false)
-         return false;
-
-      // we don't check annotation
-      // since I doubt classname + annClass + signature + aoClass is not enough
-      // the only way this could happen is probably if class was diff version - diff annotation values
-
-      return true;
-   }
-}
\ No newline at end of file

Deleted: projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/annotations/ClassElement.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/annotations/ClassElement.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/annotations/ClassElement.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1,47 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source
-* Copyright 2006, JBoss Inc., and individual contributors as indicated
-* by the @authors tag. See the copyright.txt 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.deployers.plugins.annotations;
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.AnnotatedElement;
-
-/**
- * Class annotations element.
- *
- * @param <A> the annotation type
- * @param <M> the annotated element type
- * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
- */
-public class ClassElement<A extends Annotation, M extends AnnotatedElement> extends AbstractElement<A, M>
-{
-   public ClassElement(ClassLoader classLoader, String className, Class<A> annClass, A annotation)
-   {
-      super(classLoader, className, annClass, annotation);
-   }
-
-   @SuppressWarnings("unchecked")
-   public M getAnnotatedElement()
-   {
-      AnnotatedElement em = getOwner();
-      return (M)em;
-   }
-}
\ No newline at end of file

Deleted: projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/annotations/ClassSignaturePair.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/annotations/ClassSignaturePair.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/annotations/ClassSignaturePair.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1,108 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source
-* Copyright 2006, JBoss Inc., and individual contributors as indicated
-* by the @authors tag. See the copyright.txt 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.deployers.plugins.annotations;
-
-import java.lang.annotation.Annotation;
-
-import org.jboss.metadata.spi.signature.Signature;
-import org.jboss.util.JBossObject;
-
-/**
- * Class name and signature pair.
- * With those two we can re-create annotation value.
- *
- * If the keepAnnotations flag is on in DefaultAnnotationEnvironment
- * we cache the annotation value from GenericAnnotationResourceVisitor.
- *
- * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
- */
-public class ClassSignaturePair extends JBossObject
-{
-   private String className;
-   private Signature signature;
-   private Annotation annotation;
-
-   public ClassSignaturePair(String className, Signature signature)
-   {
-      this(className, signature, null);
-   }
-
-   public ClassSignaturePair(String className, Signature signature, Annotation annotation)
-   {
-      if (className == null)
-         throw new IllegalArgumentException("Null class name");
-
-      this.className = className;
-      this.signature = signature;
-      this.annotation = annotation;
-   }
-
-   /**
-    * Get the classname.
-    *
-    * @return the classname
-    */
-   public String getClassName()
-   {
-      return className;
-   }
-
-   /**
-    * Get the signature.
-    *
-    * @return the signature
-    */
-   public Signature getSignature()
-   {
-      return signature;
-   }
-
-   /**
-    * Get the annotation.
-    *
-    * @return the annotation
-    */
-   public Annotation getAnnotation()
-   {
-      return annotation;
-   }
-
-   protected int getHashCode()
-   {
-      int hash = className.hashCode();
-      if (signature != null)
-         hash += 7 * signature.hashCode();
-      return hash;
-   }
-
-   public boolean equals(Object obj)
-   {
-      if (obj instanceof ClassSignaturePair == false)
-         return false;
-
-      ClassSignaturePair csPair = (ClassSignaturePair)obj;
-      if (className.equals(csPair.getClassName()))
-         return equals(signature, csPair.getSignature());
-      else
-         return false;
-   }
-}

Deleted: projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/annotations/CommitElement.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/annotations/CommitElement.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/annotations/CommitElement.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1,91 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source
-* Copyright 2006, JBoss Inc., and individual contributors as indicated
-* by the @authors tag. See the copyright.txt 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.deployers.plugins.annotations;
-
-import java.lang.annotation.Annotation;
-import java.lang.annotation.ElementType;
-
-import org.jboss.metadata.spi.signature.Signature;
-
-/**
- * Gathering annotation information.
- *
- * Only push all this info into AnnotationEnvironment if
- * complete lookup was successful.
- *
- * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
- */
-class CommitElement
-{
-   private Annotation annotation;
-   private ElementType type;
-   private String className;
-   private Signature signature;
-
-   CommitElement(Annotation annotation, ElementType type, String className, Signature signature)
-   {
-      this.annotation = annotation;
-      this.type = type;
-      this.className = className;
-      this.signature = signature;
-   }
-
-   /**
-    * Get the annotation.
-    *
-    * @return the annotation
-    */
-   public Annotation getAnnotation()
-   {
-      return annotation;
-   }
-
-   /**
-    * Get element type.
-    *
-    * @return the element type
-    */
-   public ElementType getType()
-   {
-      return type;
-   }
-
-   /**
-    * Get class name.
-    *
-    * @return the class name
-    */
-   public String getClassName()
-   {
-      return className;
-   }
-
-   /**
-    * Get signature.
-    *
-    * @return the signature
-    */
-   public Signature getSignature()
-   {
-      return signature;
-   }
-}
\ No newline at end of file

Deleted: projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/annotations/DefaultAnnotationEnvironment.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/annotations/DefaultAnnotationEnvironment.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/annotations/DefaultAnnotationEnvironment.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1,277 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source
-* Copyright 2006, JBoss Inc., and individual contributors as indicated
-* by the @authors tag. See the copyright.txt 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.deployers.plugins.annotations;
-
-import java.io.Serializable;
-import java.lang.annotation.Annotation;
-import java.lang.annotation.ElementType;
-import java.lang.reflect.AnnotatedElement;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-import org.jboss.deployers.spi.annotations.AnnotationEnvironment;
-import org.jboss.deployers.spi.annotations.Element;
-import org.jboss.logging.Logger;
-import org.jboss.metadata.spi.signature.Signature;
-import org.jboss.util.collection.CollectionsFactory;
-
-/**
- * DefaultAnnotationEnvironment.
- *
- * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
- */
-public class DefaultAnnotationEnvironment extends WeakClassLoaderHolder implements AnnotationEnvironment, Serializable
-{
-   /** The serial version UID */
-   private static final long serialVersionUID = 1L;
-   /** The log */
-   private static final Logger log = Logger.getLogger(DefaultAnnotationEnvironment.class);
-   /** The info map */
-   private transient Map<Class<? extends Annotation>, Map<ElementType, Set<ClassSignaturePair>>> env;
-   /** The checked class names */
-   private transient Set<String> checkedClassNames;
-   /** Should we keep the annotation */
-   private boolean keepAnnotations;
-
-   public DefaultAnnotationEnvironment(ClassLoader classLoader)
-   {
-      super(classLoader);
-      env = new HashMap<Class<? extends Annotation>, Map<ElementType, Set<ClassSignaturePair>>>();
-      checkedClassNames = new HashSet<String>();
-   }
-
-   /**
-    * Set the keep annotations flag.
-    *
-    * @param keepAnnotations the keep annotations flag
-    */
-   public void setKeepAnnotations(boolean keepAnnotations)
-   {
-      this.keepAnnotations = keepAnnotations;
-   }
-
-   /**
-    * Get env map.
-    *
-    * @return the env map
-    */
-   protected Map<Class<? extends Annotation>, Map<ElementType, Set<ClassSignaturePair>>> getEnv()
-   {
-      if (env == null)
-         throw new IllegalArgumentException("Null env, previously serialized?");
-
-      return env;
-   }
-
-   /**
-    * Was class name already checked.
-    *
-    * @param className the class name
-    * @return true if already checked, false otherwise
-    */
-   boolean isAlreadyChecked(String className)
-   {
-      return checkedClassNames.contains(className);
-   }
-
-   /**
-    * Put the annotation info.
-    *
-    * @param annotation the annotation
-    * @param type the annotation type
-    * @param className the class name
-    * @param signature the signature
-    */
-   void putAnnotation(Annotation annotation, ElementType type, String className, Signature signature)
-   {
-      Class<? extends Annotation> annClass = annotation.annotationType();
-
-      if (log.isTraceEnabled())
-         log.trace("Adding annotation @" + annClass.getSimpleName() + " for " + className + " at type " + type + ", signature: " + signature);
-
-      // add to checked
-      checkedClassNames.add(className);
-
-      Map<Class<? extends Annotation>, Map<ElementType, Set<ClassSignaturePair>>> env = getEnv();
-
-      Map<ElementType, Set<ClassSignaturePair>> elements = env.get(annClass);
-      if (elements == null)
-      {
-         elements = new HashMap<ElementType, Set<ClassSignaturePair>>();
-         env.put(annClass, elements);
-      }
-
-      Set<ClassSignaturePair> classes = elements.get(type);
-      if (classes == null)
-      {
-         classes = CollectionsFactory.createLazySet();
-         elements.put(type, classes);
-      }
-
-      ClassSignaturePair pair;
-      if (keepAnnotations)
-         pair = new ClassSignaturePair(className, signature, annotation);
-      else
-         pair = new ClassSignaturePair(className, signature);
-      classes.add(pair);
-   }
-
-   /**
-    * Get matching cs pairs.
-    *
-    * @param annClass the annotation class
-    * @param type the annotation type
-    * @return class names
-    */
-   protected Set<ClassSignaturePair> getCSPairs(Class<? extends Annotation> annClass, ElementType type)
-   {
-      Set<ClassSignaturePair> pairs = null;
-
-      Map<ElementType, Set<ClassSignaturePair>> elements = getEnv().get(annClass);
-      if (elements != null)
-         pairs = elements.get(type);
-
-      return (pairs != null) ? pairs : Collections.<ClassSignaturePair>emptySet();
-   }
-
-   /**
-    * Transform class names into classes.
-    *
-    * @param <A> the annotation type
-    * @param <M> the annotated element type
-    * @param type the annotation type
-    * @param annClass the annotation class
-    * @param aoClass the ao class
-    * @return classes
-    */
-   protected <A extends Annotation, M extends AnnotatedElement> Set<Element<A, M>> transformToElements(
-         ElementType type,
-         Class<A> annClass,
-         Class<M> aoClass
-   )
-   {
-      Set<ClassSignaturePair> pairs = getCSPairs(annClass, type);
-      if (pairs.isEmpty())
-         return Collections.emptySet();
-
-      ClassLoader classLoader = getClassLoader();
-      Set<Element<A, M>> elements = new HashSet<Element<A, M>>();
-      for (ClassSignaturePair pair : pairs)
-      {
-         String className = pair.getClassName();
-         A annotation = annClass.cast(pair.getAnnotation());
-
-         Element<A, M> element;
-         if (type == ElementType.TYPE)
-            element = new ClassElement<A, M>(classLoader, className, annClass, annotation);
-         else if (type == ElementType.PARAMETER)
-            element = new ParametersElement<A,M>(classLoader, className, pair.getSignature(), annClass, annotation, aoClass);
-         else
-            element = new DefaultElement<A,M>(classLoader, className, pair.getSignature(), annClass, annotation, aoClass);
-         elements.add(element);
-      }
-      return elements;
-   }
-
-   public boolean hasClassAnnotatedWith(Class<? extends Annotation> annotation)
-   {
-      return getCSPairs(annotation, ElementType.TYPE).isEmpty() == false;
-   }
-
-   @SuppressWarnings("unchecked")
-   public <A extends Annotation> Set<Element<A, Class<?>>> classIsAnnotatedWith(Class<A> annotation)
-   {
-      return (Set) transformToElements(ElementType.TYPE, annotation, Class.class);
-   }
-
-   @SuppressWarnings("unchecked")
-   public <A extends Annotation> Set<Element<A, Constructor<?>>> classHasConstructorAnnotatedWith(Class<A> annotation)
-   {
-      return (Set) transformToElements(ElementType.CONSTRUCTOR, annotation, Constructor.class);
-   }
-
-   public <A extends Annotation> Set<Element<A, Field>> classHasFieldAnnotatedWith(Class<A> annotation)
-   {
-      return transformToElements(ElementType.FIELD, annotation, Field.class);
-   }
-
-   public <A extends Annotation> Set<Element<A, Method>> classHasMethodAnnotatedWith(Class<A> annotation)
-   {
-      return transformToElements(ElementType.METHOD, annotation, Method.class);
-   }
-
-   public <A extends Annotation> Set<Element<A, AnnotatedElement>> classHasParameterAnnotatedWith(Class<A> annotation)
-   {
-      return transformToElements(ElementType.PARAMETER, annotation, AnnotatedElement.class);
-   }
-
-   /**
-    * Load the annotation class.
-    *
-    * @param annotationName the annoation class name
-    * @return annotation class
-    */
-   @SuppressWarnings("unchecked")
-   protected Class<Annotation> getAnnotationClass(String annotationName)
-   {
-      Class<?> clazz = loadClass(annotationName);
-      if (Annotation.class.isAssignableFrom(clazz) == false)
-         throw new IllegalArgumentException("Annotation name " + annotationName + " doesn't extend Annotation class.");
-      return (Class<Annotation>)clazz;
-   }
-
-   public boolean hasClassAnnotatedWith(String annotationName)
-   {
-      return hasClassAnnotatedWith(getAnnotationClass(annotationName));
-   }
-
-   public Set<Element<Annotation, Class<?>>> classIsAnnotatedWith(String annotationName)
-   {
-      return classIsAnnotatedWith(getAnnotationClass(annotationName));
-   }
-
-   public Set<Element<Annotation, Constructor<?>>> classHasConstructorAnnotatedWith(String annotationName)
-   {
-      return classHasConstructorAnnotatedWith(getAnnotationClass(annotationName));
-   }
-
-   public Set<Element<Annotation, Field>> classHasFieldAnnotatedWith(String annotationName)
-   {
-      return classHasFieldAnnotatedWith(getAnnotationClass(annotationName));
-   }
-
-   public Set<Element<Annotation, Method>> classHasMethodAnnotatedWith(String annotationName)
-   {
-      return classHasMethodAnnotatedWith(getAnnotationClass(annotationName));
-   }
-
-   public Set<Element<Annotation, AnnotatedElement>> classHasParameterAnnotatedWith(String annotationName)
-   {
-      return classHasParameterAnnotatedWith(getAnnotationClass(annotationName));
-   }
-}

Deleted: projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/annotations/DefaultElement.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/annotations/DefaultElement.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/annotations/DefaultElement.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1,120 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source
-* Copyright 2006, JBoss Inc., and individual contributors as indicated
-* by the @authors tag. See the copyright.txt 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.deployers.plugins.annotations;
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.AnnotatedElement;
-
-import org.jboss.metadata.spi.signature.ConstructorParametersSignature;
-import org.jboss.metadata.spi.signature.ConstructorSignature;
-import org.jboss.metadata.spi.signature.FieldSignature;
-import org.jboss.metadata.spi.signature.MethodParametersSignature;
-import org.jboss.metadata.spi.signature.MethodSignature;
-import org.jboss.metadata.spi.signature.Signature;
-import org.jboss.reflect.plugins.introspection.ReflectionUtils;
-
-/**
- * Default annotations element.
- *
- * @param <A> the annotation type
- * @param <M> the annotated element type
- * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
- */
-public class DefaultElement<A extends Annotation, M extends AnnotatedElement> extends AbstractElement<A, M>
-{
-   protected Signature signature;
-   protected Class<M> aoClass;
-
-   public DefaultElement(ClassLoader classLoader, String className, Signature signature, Class<A> annClass, A annotation, Class<M> aoClass)
-   {
-      super(classLoader, className, annClass, annotation);
-
-      if (signature == null)
-         throw new IllegalArgumentException("Null signature");
-      if (aoClass == null)
-         throw new IllegalArgumentException("Null ao class");
-
-      this.signature = signature;
-      this.aoClass = aoClass;
-   }
-
-   public M getAnnotatedElement()
-   {
-      AnnotatedElement result = null;
-
-      Class<?> clazz = getOwner();
-      if (signature instanceof ConstructorSignature || signature instanceof ConstructorParametersSignature)
-      {
-         try
-         {
-            result = clazz.getConstructor(signature.getParametersTypes(clazz));
-         }
-         catch (NoSuchMethodException ignored)
-         {
-         }
-      }
-      else if (signature instanceof MethodSignature || signature instanceof MethodParametersSignature)
-      {
-         try
-         {
-            result = clazz.getMethod(signature.getName(), signature.getParametersTypes(clazz));
-         }
-         catch (NoSuchMethodException ignored)
-         {
-         }
-      }
-      else if (signature instanceof FieldSignature)
-      {
-         result = ReflectionUtils.findField(clazz, signature.getName());
-      }
-
-      if (result == null)
-         throw new IllegalArgumentException("Expected accessible object " + className + "." + signature);
-      if (aoClass.isInstance(result) == false)
-         throw new IllegalArgumentException("Expected accessible object " + className + "." + signature + " of type " + aoClass);
-
-      return aoClass.cast(result);
-   }
-
-   public int getHashCode()
-   {
-      int hash = super.getHashCode();
-      hash += 19 * signature.hashCode();
-      hash += 37 * aoClass.hashCode();
-      return hash;
-   }
-
-   @SuppressWarnings({"EqualsWhichDoesntCheckParameterClass"})
-   public boolean equals(Object obj)
-   {
-      if (super.equals(obj) == false)
-         return false;
-
-      DefaultElement<?, ?> de = DefaultElement.class.cast(obj);
-      if (aoClass.equals(de.aoClass) == false)
-         return false;
-      if (signature.equals(de.signature) == false)
-         return false;
-
-      return true;
-   }
-}

Deleted: projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/annotations/EnvPutList.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/annotations/EnvPutList.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/annotations/EnvPutList.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1,57 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source
-* Copyright 2006, JBoss Inc., and individual contributors as indicated
-* by the @authors tag. See the copyright.txt 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.deployers.plugins.annotations;
-
-import java.util.AbstractList;
-
-/**
- * Put elements directly into env
- *
- * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
- */
-class EnvPutList extends AbstractList<CommitElement>
-{
-   private DefaultAnnotationEnvironment env;
-
-   EnvPutList(DefaultAnnotationEnvironment env)
-   {
-      if (env == null)
-         throw new IllegalArgumentException("Null env.");
-      this.env = env;
-   }
-
-   public boolean add(CommitElement ce)
-   {
-      env.putAnnotation(ce.getAnnotation(), ce.getType(), ce.getClassName(), ce.getSignature());
-      return true;
-   }
-
-   public CommitElement get(int index)
-   {
-      throw new UnsupportedOperationException("Should not be invoked.");
-   }
-
-   public int size()
-   {
-      return 0;
-   }
-}
\ No newline at end of file

Deleted: projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/annotations/FilteredGenericAnnotationDeployer.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/annotations/FilteredGenericAnnotationDeployer.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/annotations/FilteredGenericAnnotationDeployer.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1,99 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source
-* Copyright 2006, JBoss Inc., and individual contributors as indicated
-* by the @authors tag. See the copyright.txt 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.deployers.plugins.annotations;
-
-import org.jboss.classloading.spi.visitor.ResourceFilter;
-import org.jboss.classloading.spi.dependency.Module;
-import org.jboss.deployers.structure.spi.DeploymentUnit;
-
-/**
- * Filtered generic annotation scanner deployer.
- *
- * It first checks if there are some filters present
- * in deployment unit as attachment,
- * else falls back to deployers filters.
- *
- * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
- */
-public class FilteredGenericAnnotationDeployer extends ScopedGenericAnnotationDeployer
-{
-   private ResourceFilter resourceFilter;
-   private ResourceFilter recurseFilter;
-
-   /**
-    * Get filter.
-    * Try attachment first, then deployer's filter.
-    *
-    * @param <T> the expected class type
-    * @param unit the deployment unit
-    * @param expectedClass the expected class
-    * @param suffix the suffix
-    * @param defaultValue the default value
-    * @return found filter or null
-    */
-   protected <T> T getFilter(DeploymentUnit unit, Class<T> expectedClass, String suffix, T defaultValue)
-   {
-      String name = expectedClass.getName() + "." + (suffix != null ? suffix : "");
-      T result = unit.getAttachment(name, expectedClass);
-      if (result == null)
-         result = defaultValue;
-      return result;
-   }
-
-   /**
-    * We look for filter attachments:
-    * * org.jboss.classloading.spi.visitor.ResourceFilter.resource - plain resource filter
-    * * org.jboss.classloading.spi.visitor.ResourceFilter.recurse  - recurse resource filter
-    *
-    * @param unit the deployment unit
-    * @param module the underlying module
-    * @param visitor the current generic annotation resource visitor
-    */
-   protected void visitModule(DeploymentUnit unit, Module module, GenericAnnotationResourceVisitor visitor)
-   {
-      ResourceFilter filter = getFilter(unit, ResourceFilter.class, "resource", resourceFilter);
-      if (filter == null)
-         filter = visitor.getFilter();
-      ResourceFilter recurse = getFilter(unit, ResourceFilter.class, "recurse", recurseFilter);
-      module.visit(visitor, filter, recurse, getUrls(unit));
-   }
-
-   /**
-    * Set resource filter.
-    *
-     * @param resourceFilter the resource filter
-    */
-   public void setResourceFilter(ResourceFilter resourceFilter)
-   {
-      this.resourceFilter = resourceFilter;
-   }
-
-   /**
-    * Set recurse filter.
-    *
-    * @param recurseFilter the recurse filter
-    */
-   public void setRecurseFilter(ResourceFilter recurseFilter)
-   {
-      this.recurseFilter = recurseFilter;
-   }
-}
\ No newline at end of file

Modified: projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/annotations/GenericAnnotationDeployer.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/annotations/GenericAnnotationDeployer.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/annotations/GenericAnnotationDeployer.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -21,17 +21,15 @@
 */
 package org.jboss.deployers.plugins.annotations;
 
-import java.net.URL;
-
-import javassist.ClassPath;
-import javassist.ClassPool;
-import javassist.LoaderClassPath;
 import org.jboss.classloading.spi.dependency.Module;
 import org.jboss.deployers.spi.DeploymentException;
-import org.jboss.deployers.spi.annotations.AnnotationEnvironment;
 import org.jboss.deployers.spi.deployer.DeploymentStages;
 import org.jboss.deployers.spi.deployer.helpers.AbstractSimpleRealDeployer;
 import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.mcann.AnnotationRepository;
+import org.jboss.mcann.repository.Configuration;
+import org.jboss.mcann.scanner.DefaultAnnotationScanner;
+import org.jboss.mcann.scanner.ModuleAnnotationScanner;
 
 /**
  * Generic annotation scanner deployer.
@@ -40,129 +38,39 @@
  */
 public class GenericAnnotationDeployer extends AbstractSimpleRealDeployer<Module>
 {
-   private boolean forceAnnotations;
-   private boolean keepAnnotations;
-   private boolean checkInterfaces;
+   private Configuration configuration;
 
    public GenericAnnotationDeployer()
    {
       super(Module.class);
       setStage(DeploymentStages.POST_CLASSLOADER);
-      setOutput(AnnotationEnvironment.class);
-      checkInterfaces = true;
+      setOutput(AnnotationRepository.class);
    }
 
-   /**
-    * Should we force all annotations to be available.
-    *
-    * @param forceAnnotations the force annotations flag
-    */
-   public void setForceAnnotations(boolean forceAnnotations)
+   public void deploy(DeploymentUnit unit, Module deployment) throws DeploymentException
    {
-      this.forceAnnotations = forceAnnotations;
+      try
+      {
+         DefaultAnnotationScanner scanner = new ModuleAnnotationScanner(deployment);
+         if (configuration != null)
+            scanner.setConfiguration(configuration);
+         
+         AnnotationRepository repository = scanner.scan(unit.getClassLoader());
+         unit.addAttachment(AnnotationRepository.class, repository);
+      }
+      catch (Exception e)
+      {
+         throw DeploymentException.rethrowAsDeploymentException("Cannot create AR", e);
+      }
    }
 
    /**
-    * Set the keep annotations flag.
+    * Set configuration.
     *
-    * @param keepAnnotations the keep annotations flag
+    * @param configuration the configuration creator
     */
-   public void setKeepAnnotations(boolean keepAnnotations)
+   public void setConfiguration(Configuration configuration)
    {
-      this.keepAnnotations = keepAnnotations;
+      this.configuration = configuration;
    }
-
-   /**
-    * Should we check interfaces for annotations as well.
-    *
-    * @param checkInterfaces the check interfaces flag
-    */
-   public void setCheckInterfaces(boolean checkInterfaces)
-   {
-      this.checkInterfaces = checkInterfaces;
-   }
-
-   /**
-    * Create GenericAnnotationResourceVisitor.
-    *
-    * Can be used change existing GARV's filter.
-    * Or determin if we need to force/keep annotations.
-    *
-    * @param unit the deployment unit
-    * @param pool the class pool
-    * @param classLoader the classloader
-    * @return new generic annotation visitor
-    */
-   protected GenericAnnotationResourceVisitor createGenericAnnotationResourceVisitor(DeploymentUnit unit, ClassPool pool, ClassLoader classLoader)
-   {
-      GenericAnnotationResourceVisitor visitor = new GenericAnnotationResourceVisitor(pool, classLoader);
-      visitor.setForceAnnotations(forceAnnotations);
-      visitor.setKeepAnnotations(keepAnnotations);
-      visitor.setCheckInterfaces(checkInterfaces);
-      return visitor;
-   }
-
-   /**
-    * Create class pool.
-    *
-    * @param classLoader the class loader
-    * @return javassist class pool
-    */
-   protected ClassPool createClassPool(ClassLoader classLoader)
-   {
-      ClassPool pool = new ClassPool();
-      ClassPath classPath = new LoaderClassPath(classLoader);
-      pool.insertClassPath(classPath);
-      return pool;
-   }
-
-   /**
-    * Visit module.
-    *
-    * Util method to add some behavior to Module
-    * before we visit it.
-    *
-    * @param unit the deployment unit
-    * @param module the module
-    * @param visitor the resource visitor
-    */
-   protected void visitModule(DeploymentUnit unit, Module module, GenericAnnotationResourceVisitor visitor)
-   {
-      module.visit(visitor, null, null, getUrls(unit));
-   }
-
-   /**
-    * Get the new root urls.
-    *
-    * @param unit the deployment unit
-    * @return the new root urls
-    */
-   protected URL[] getUrls(DeploymentUnit unit)
-   {
-      return null;
-   }
-
-   public void deploy(DeploymentUnit unit, Module module) throws DeploymentException
-   {
-      if (log.isTraceEnabled())
-         log.trace("Creating AnnotationEnvironment for " + unit.getName() + ", module: " + module + ", force annotations: " + forceAnnotations);
-
-      ClassLoader classLoader = unit.getClassLoader();
-      ClassPool pool = createClassPool(classLoader);
-      GenericAnnotationResourceVisitor visitor = createGenericAnnotationResourceVisitor(unit, pool, classLoader);
-
-      // something in javassist uses TCL
-      ClassLoader tcl = Thread.currentThread().getContextClassLoader();
-      Thread.currentThread().setContextClassLoader(classLoader);
-      try
-      {
-         visitModule(unit, module, visitor);
-      }
-      finally
-      {
-         Thread.currentThread().setContextClassLoader(tcl);
-      }
-
-      unit.addAttachment(AnnotationEnvironment.class, visitor.getEnv());
-   }
 }

Deleted: projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/annotations/GenericAnnotationResourceVisitor.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/annotations/GenericAnnotationResourceVisitor.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/annotations/GenericAnnotationResourceVisitor.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1,369 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source
-* Copyright 2006, JBoss Inc., and individual contributors as indicated
-* by the @authors tag. See the copyright.txt 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.deployers.plugins.annotations;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.lang.annotation.Annotation;
-import java.lang.annotation.ElementType;
-import java.util.List;
-import java.util.ArrayList;
-
-import javassist.ClassPool;
-import javassist.CtBehavior;
-import javassist.CtClass;
-import javassist.CtConstructor;
-import javassist.CtMember;
-import javassist.CtMethod;
-import javassist.NotFoundException;
-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.annotations.AnnotationEnvironment;
-import org.jboss.logging.Logger;
-import org.jboss.metadata.spi.signature.Signature;
-import org.jboss.metadata.spi.signature.javassist.JavassistConstructorParametersSignature;
-import org.jboss.metadata.spi.signature.javassist.JavassistMethodParametersSignature;
-import org.jboss.metadata.spi.signature.javassist.JavassistSignatureFactory;
-
-/**
- * Generic annotation scanner deployer.
- *
- * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
- */
-public class GenericAnnotationResourceVisitor implements ResourceVisitor
-{
-   private static final Logger log = Logger.getLogger(GenericAnnotationResourceVisitor.class);
-
-   private ResourceFilter resourceFilter = ClassFilter.INSTANCE;
-   private ClassPool pool;
-   private boolean forceAnnotations;
-   private boolean checkSuper;
-   private boolean checkInterfaces = true;
-   private DefaultAnnotationEnvironment env;
-   private CtClass objectCtClass;
-
-   public GenericAnnotationResourceVisitor(ClassLoader classLoader)
-   {
-      this(ClassPool.getDefault(), classLoader);
-   }
-
-   public GenericAnnotationResourceVisitor(ClassPool pool, ClassLoader classLoader)
-   {
-      if (pool == null)
-         throw new IllegalArgumentException("Null pool");
-      if (classLoader == null)
-         throw new IllegalArgumentException("Null classloader");
-
-      this.pool = pool;
-      this.env = new DefaultAnnotationEnvironment(classLoader);
-      this.objectCtClass = pool.makeClass(Object.class.getName());
-   }
-
-   public ResourceFilter getFilter()
-   {
-      return resourceFilter;
-   }
-
-   public void visit(ResourceContext resource)
-   {
-      try
-      {
-         InputStream stream = resource.getInputStream();
-         if (stream == null)
-            throw new IllegalArgumentException("Null resource input stream: " + resource);
-
-         try
-         {
-            CtClass ctClass = pool.makeClass(stream);
-            try
-            {
-               List<CommitElement> commit = createCommitList();
-               handleCtClass(ctClass, commit);
-               if (commit.isEmpty() == false)
-               {
-                  for (CommitElement ce : commit)
-                  {
-                     env.putAnnotation(ce.getAnnotation(), ce.getType(), ce.getClassName(), ce.getSignature());
-                  }
-               }
-            }
-            finally
-            {
-               ctClass.detach();
-            }
-         }
-         finally
-         {
-            try
-            {
-               stream.close();
-            }
-            catch (IOException ignored)
-            {
-            }
-         }
-      }
-      catch (ClassNotFoundException e)
-      {
-         if (forceAnnotations)
-            throw new RuntimeException(e);
-
-         logThrowable(resource, e);
-      }
-      catch (Throwable t)
-      {
-         logThrowable(resource, t);
-      }
-   }
-
-   /**
-    * Create commit list.
-    *
-    * @return the commit list
-    */
-   protected List<CommitElement> createCommitList()
-   {
-      return forceAnnotations ? new EnvPutList(env) : new ArrayList<CommitElement>();
-   }
-
-   /**
-    * Log throwable.
-    *
-    * @param resource the resource we're visiting
-    * @param t the throwable
-    */
-   protected void logThrowable(ResourceContext resource, Throwable t)
-   {
-      if (log.isTraceEnabled())
-         log.trace("Exception reading resource: " + resource.getResourceName(), t);
-   }
-
-   /**
-    * Handle CtClass for annotations.
-    *
-    * @param ctClass the ct class instance
-    * @param commit the commit list
-    * @throws ClassNotFoundException for any annotations lookup problems
-    * @throws NotFoundException for any annotations lookup problems
-    */
-   protected void handleCtClass(CtClass ctClass, List<CommitElement> commit) throws ClassNotFoundException, NotFoundException
-   {
-      if (ctClass == null || objectCtClass.equals(ctClass))
-         return;
-
-      String className = ctClass.getName();
-      if (env.isAlreadyChecked(className))
-      {
-         if (log.isTraceEnabled())
-            log.trace("Skipping already checked class name: " + className);
-         return;
-      }
-
-      if (checkInterfaces == false && ctClass.isInterface())
-      {
-         if (log.isTraceEnabled())
-            log.trace("Skipping interface: " + className);
-         return;
-      }
-
-      if (log.isTraceEnabled())
-         log.trace("Scanning class " + className + " for annotations");
-
-      Object[] annotations = forceAnnotations ? ctClass.getAnnotations() : ctClass.getAvailableAnnotations();
-      handleAnnotations(ElementType.TYPE, (Signature)null, annotations, className, commit);
-
-      handleCtMembers(ElementType.CONSTRUCTOR, ctClass.getDeclaredConstructors(), className, commit);
-      handleCtMembers(ElementType.METHOD, ctClass.getDeclaredMethods(), className, commit);
-      handleCtMembers(ElementType.FIELD, ctClass.getDeclaredFields(), className, commit);
-
-      if (checkSuper)
-      {
-         if (checkInterfaces)
-         {
-            // interfaces
-            CtClass[] interfaces = ctClass.getInterfaces();
-            if (interfaces != null && interfaces.length > 0)
-            {
-               for (CtClass intf : interfaces)
-                  handleCtClass(intf, commit);
-            }
-         }
-         // super class
-         handleCtClass(ctClass.getSuperclass(), commit);
-      }
-   }
-
-   /**
-    * Handle CtMembers for annotations.
-    *
-    * @param type where we found the annotations
-    * @param members the ct member instances
-    * @param className the className
-    * @param commit the commit list
-    * @throws ClassNotFoundException for any annotations lookup problems
-    */
-   protected void handleCtMembers(ElementType type, CtMember[] members, String className, List<CommitElement> commit) throws ClassNotFoundException
-   {
-      if (members != null && members.length > 0)
-      {
-         for (CtMember member : members)
-         {
-            Object[] annotations = forceAnnotations ? member.getAnnotations() : member.getAvailableAnnotations();
-            handleAnnotations(type, member, annotations, className, commit);
-            if (member instanceof CtBehavior)
-            {
-               CtBehavior behavior = (CtBehavior)member;
-               Object[][] paramAnnotations = forceAnnotations ? behavior.getParameterAnnotations() : behavior.getAvailableParameterAnnotations();
-               for (int index = 0; index < paramAnnotations.length; index++)
-               {
-                  handleAnnotations(ElementType.PARAMETER, getBehaviorSignature(behavior, index), paramAnnotations[index], className, commit);
-               }
-            }
-         }
-      }
-   }
-
-   /**
-    * Get parameters signature.
-    *
-    * @param behavior the ct behavior
-    * @param index the index
-    * @return parameters signature
-    * @throws ClassNotFoundException for any error
-    */
-   protected static Signature getBehaviorSignature(CtBehavior behavior, int index) throws ClassNotFoundException
-   {
-      try
-      {
-         if (behavior instanceof CtConstructor)
-            return new JavassistConstructorParametersSignature((CtConstructor)behavior, index);
-         else if (behavior instanceof CtMethod)
-            return new JavassistMethodParametersSignature((CtMethod)behavior, index);
-         else
-            throw new IllegalArgumentException("Unknown ct behavior: " + behavior);
-      }
-      catch (NotFoundException e)
-      {
-         throw new ClassNotFoundException("Exception creating signature: " + behavior, e);
-      }
-   }
-
-   /**
-    * Handle annotations.
-    *
-    * @param type where we found the annotations
-    * @param member the ct member
-    * @param annotations the actual annotations
-    * @param className the className
-    * @param commit the commit list
-    */
-   protected static void handleAnnotations(ElementType type, CtMember member, Object[] annotations, String className, List<CommitElement> commit)
-   {
-      Signature signature = null;
-      if (member != null)
-         signature = JavassistSignatureFactory.getSignature(member);
-      handleAnnotations(type, signature, annotations, className, commit);
-   }
-
-   /**
-    * Handle annotations.
-    *
-    * @param type where we found the annotations
-    * @param signature the signature
-    * @param annotations the actual annotations
-    * @param className the className
-    * @param commit the commit list
-    */
-   protected static void handleAnnotations(ElementType type, Signature signature, Object[] annotations, String className, List<CommitElement> commit)
-   {
-      if (annotations != null && annotations.length > 0)
-      {
-         for (Object annObject : annotations)
-         {
-            Annotation annotation = Annotation.class.cast(annObject);
-            commit.add(new CommitElement(annotation, type, className, signature));
-         }
-      }
-   }
-
-   /**
-    * Set the resource filter.
-    *
-    * @param resourceFilter the resource filter
-    */
-   public void setResourceFilter(ResourceFilter resourceFilter)
-   {
-      this.resourceFilter = resourceFilter;
-   }
-
-   /**
-    * Should we force all annotations to be available.
-    *
-    * @param forceAnnotations the force annotations flag
-    */
-   public void setForceAnnotations(boolean forceAnnotations)
-   {
-      this.forceAnnotations = forceAnnotations;
-   }
-
-   /**
-    * Set the keep annotations flag.
-    *
-    * @param keepAnnotations the keep annotations flag
-    */
-   public void setKeepAnnotations(boolean keepAnnotations)
-   {
-      env.setKeepAnnotations(keepAnnotations);
-   }
-
-   /**
-    * Should we check super class for annotations as well.
-    *
-    * @param checkSuper the check super flag
-    */
-   public void setCheckSuper(boolean checkSuper)
-   {
-      this.checkSuper = checkSuper;
-   }
-
-   /**
-    * Should we check interfaces for annotations as well.
-    *
-    * @param checkInterfaces the check interfaces flag
-    */
-   public void setCheckInterfaces(boolean checkInterfaces)
-   {
-      this.checkInterfaces = checkInterfaces;
-   }
-
-   /**
-    * Get the built environment.
-    *
-    * @return the annoattion environment
-    */
-   public AnnotationEnvironment getEnv()
-   {
-      return env;
-   }
-}
\ No newline at end of file

Deleted: projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/annotations/ParametersElement.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/annotations/ParametersElement.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/annotations/ParametersElement.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1,88 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source
-* Copyright 2006, JBoss Inc., and individual contributors as indicated
-* by the @authors tag. See the copyright.txt 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.deployers.plugins.annotations;
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.AnnotatedElement;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Method;
-import java.util.Arrays;
-
-import org.jboss.metadata.spi.signature.ConstructorParametersSignature;
-import org.jboss.metadata.spi.signature.MethodParametersSignature;
-import org.jboss.metadata.spi.signature.Signature;
-
-/**
- * Parameters annotations element.
- *
- * @param <A> the annotation type
- * @param <M> the annotated element type
- * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
- */
-public class ParametersElement<A extends Annotation, M extends AnnotatedElement> extends DefaultElement<A, M>
-{
-   public ParametersElement(ClassLoader classLoader, String className, Signature signature, Class<A> annClass, A annotation, Class<M> aoClass)
-   {
-      super(classLoader, className, signature, annClass, annotation, aoClass);
-   }
-
-   protected A readAnnotation()
-   {
-      Annotation[] annotations = null;
-      Class<?> clazz = getOwner();
-      if (signature instanceof ConstructorParametersSignature)
-      {
-         ConstructorParametersSignature cps = (ConstructorParametersSignature)signature;
-         try
-         {
-            Constructor<?> constructor = clazz.getConstructor(signature.getParametersTypes(clazz));
-            annotations = constructor.getParameterAnnotations()[cps.getParam()];
-         }
-         catch (NoSuchMethodException ignored)
-         {
-         }
-      }
-      else if (signature instanceof MethodParametersSignature)
-      {
-         MethodParametersSignature mps = (MethodParametersSignature)signature;
-         try
-         {
-            Method method = clazz.getMethod(signature.getName(), signature.getParametersTypes(clazz));
-            annotations = method.getParameterAnnotations()[mps.getParam()];
-         }
-         catch (NoSuchMethodException ignored)
-         {
-         }
-      }
-
-      if (annotations == null || annotations.length == 0)
-         throw new IllegalArgumentException("Expected annotations " + className + "." + signature);
-
-      for(Annotation annotation : annotations)
-      {
-         if (annClass.equals(annotation.annotationType()))
-            return annClass.cast(annotation);
-      }
-
-      throw new IllegalArgumentException("No matching annotation: " + Arrays.asList(annotations));
-   }
-}
\ No newline at end of file

Deleted: projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/annotations/ScopedGenericAnnotationDeployer.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/annotations/ScopedGenericAnnotationDeployer.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/annotations/ScopedGenericAnnotationDeployer.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1,62 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source
-* Copyright 2006, JBoss Inc., and individual contributors as indicated
-* by the @authors tag. See the copyright.txt 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.deployers.plugins.annotations;
-
-import javassist.scopedpool.ScopedClassPoolRepository;
-import javassist.ClassPool;
-
-/**
- * Scoped generic annotation deployer.
- *
- * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
- */
-public class ScopedGenericAnnotationDeployer extends GenericAnnotationDeployer
-{
-   private ScopedClassPoolRepository repository;
-
-   public ScopedGenericAnnotationDeployer()
-   {
-   }
-
-   public ScopedGenericAnnotationDeployer(ScopedClassPoolRepository repository)
-   {
-      this.repository = repository;
-   }
-
-   /**
-    * Set scoped class pool repository.
-    *
-    * @param repository the scoped class pool repository
-    */
-   public void setRepository(ScopedClassPoolRepository repository)
-   {
-      this.repository = repository;
-   }
-
-   protected ClassPool createClassPool(ClassLoader classLoader)
-   {
-      if (repository != null)
-         return repository.findClassPool(classLoader);
-
-      return super.createClassPool(classLoader);
-   }
-}
\ No newline at end of file

Deleted: projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/annotations/WeakClassLoaderHolder.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/annotations/WeakClassLoaderHolder.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/annotations/WeakClassLoaderHolder.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1,79 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source
-* Copyright 2006, JBoss Inc., and individual contributors as indicated
-* by the @authors tag. See the copyright.txt 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.deployers.plugins.annotations;
-
-import java.lang.ref.WeakReference;
-
-import org.jboss.util.JBossObject;
-
-/**
- * ClassLoader holder helper.
- *
- * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
- */
-abstract class WeakClassLoaderHolder extends JBossObject
-{
-   private transient WeakReference<ClassLoader> clRef;
-
-   public WeakClassLoaderHolder(ClassLoader classLoader)
-   {
-      if (classLoader == null)
-         throw new IllegalArgumentException("Null classloader");
-
-      clRef = new WeakReference<ClassLoader>(classLoader);
-   }
-
-   /**
-    * Get the classloader from weak ref.
-    *
-    * @return the classloader
-    */
-   protected ClassLoader getClassLoader()
-   {
-      if (clRef == null)
-         throw new IllegalArgumentException("Null classloader ref, previously serialized?");
-
-      ClassLoader classLoader = clRef.get();
-      if (classLoader == null)
-         throw new IllegalArgumentException("ClassLoader was already garbage collected.");
-
-      return classLoader;
-   }
-
-   /**
-    * Load class from class name.
-    *
-    * @param className the class name
-    * @return loaded class
-    */
-   protected Class<?> loadClass(String className)
-   {
-      try
-      {
-         return Class.forName(className, false, getClassLoader());
-      }
-      catch (ClassNotFoundException e)
-      {
-         throw new RuntimeException(e);
-      }
-   }
-}
\ No newline at end of file

Modified: projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/classloading/AbstractClassLoaderDescribeDeployer.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/classloading/AbstractClassLoaderDescribeDeployer.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/classloading/AbstractClassLoaderDescribeDeployer.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -93,14 +93,21 @@
          // For non top level classloaders, we need to control the domain
          // since the parent is the deployment classloader
          String unitName = unit.getName();
-         if (deployment.getParentDomain() == null)
+         if (deployment.isTopLevelClassLoader() == false)
          {
-            deployment.setDomain(unitName);
-            log.debug("Will use synthetic domain for classloader of subdeployment: " + unitName);
+            if (deployment.getParentDomain() == null)
+            {
+               deployment.setDomain(unitName);
+               log.debug("Will use synthetic domain for classloader of subdeployment: " + unitName);
+            }
+            else
+            {
+               log.debug("Will create top level classloader for subdeployment: " + unitName);
+            }
          }
          else
          {
-            log.debug("Will create top level classloader for subdeployment: " + unitName);
+            log.debug("Asked to create top level classloader for subdeployment: " + unitName);
          }
       }
       

Modified: projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/classloading/AbstractLevelClassLoaderSystemDeployer.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/classloading/AbstractLevelClassLoaderSystemDeployer.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/classloading/AbstractLevelClassLoaderSystemDeployer.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -26,6 +26,7 @@
 import org.jboss.classloading.spi.dependency.ClassLoading;
 import org.jboss.classloading.spi.dependency.Module;
 import org.jboss.classloading.spi.dependency.policy.ClassLoaderPolicyModule;
+import org.jboss.classloading.spi.metadata.ClassLoadingMetaData;
 import org.jboss.deployers.spi.deployer.helpers.AbstractClassLoaderDeployer;
 import org.jboss.deployers.structure.spi.DeploymentUnit;
 
@@ -114,7 +115,12 @@
          throw new IllegalStateException("Module is not an instance of " + ClassLoaderPolicyModule.class.getName() + " actual=" + module.getClass().getName());
       ClassLoaderPolicyModule classLoaderPolicyModule = (ClassLoaderPolicyModule) module;
 
-      if (unit.isTopLevel() || module.getParentDomainName() != null)
+      boolean explicitTopLevel = false;
+      ClassLoadingMetaData clmd = unit.getAttachment(ClassLoadingMetaData.class);
+      if (clmd != null && clmd.isTopLevelClassLoader())
+         explicitTopLevel = true;
+      
+      if (unit.isTopLevel() || module.getParentDomainName() != null || explicitTopLevel)
       {
          // Top level, just create the classloader
          return classLoaderPolicyModule.registerClassLoaderPolicy(system);

Modified: projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/deployers/DeployerWrapper.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/deployers/DeployerWrapper.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/deployers/DeployerWrapper.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -140,6 +140,14 @@
       return result;
    }
 
+   public Set<String> getRequiredInputs()
+   {
+      Set<String> result = deployer.getRequiredInputs();
+      if (result == null)
+         return Collections.emptySet();
+      return result;
+   }
+
    public Set<String> getOutputs()
    {
       Set<String> result = deployer.getOutputs();

Modified: projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/deployers/DeployersImpl.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/deployers/DeployersImpl.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/deployers/DeployersImpl.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -164,6 +164,7 @@
 
       // Add the standard stages
       addDeploymentStage(DeploymentStages.NOT_INSTALLED);
+      addDeploymentStage(DeploymentStages.PRE_PARSE);
       addDeploymentStage(DeploymentStages.PARSE);
       addDeploymentStage(DeploymentStages.POST_PARSE);
       addDeploymentStage(DeploymentStages.PRE_DESCRIBE);
@@ -512,8 +513,7 @@
       }
    }
 
-   public Map<String, ManagedObject> getManagedObjects(DeploymentContext context)
-      throws DeploymentException
+   public Map<String, ManagedObject> getManagedObjects(DeploymentContext context) throws DeploymentException
    {
       if (context == null)
          throw new IllegalArgumentException("Null context");
@@ -1688,9 +1688,21 @@
       {
          // No attachment for the input type
          Class<?> input = deployer.getInput();
-         if (input != null && unit.getAttachment(input) == null)
+         if (input != null && unit.isAttachmentPresent(input) == false)
             return false;
       }
+
+      // Check explicitly required inputs - short circut here instead of in the deployer
+      Set<String> requiredInputs = deployer.getRequiredInputs();
+      if (requiredInputs != null && requiredInputs.isEmpty() == false)
+      {
+         for (String requiredInput : requiredInputs)
+         {
+            if (unit.isAttachmentPresent(requiredInput) == false)
+               return false;
+         }
+      }
+
       return true;
    }
 

Modified: projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/main/MainDeployerImpl.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/main/MainDeployerImpl.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/main/MainDeployerImpl.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -47,7 +47,6 @@
 import org.jboss.deployers.structure.spi.DeploymentContext;
 import org.jboss.deployers.structure.spi.DeploymentUnit;
 import org.jboss.deployers.structure.spi.StructuralDeployers;
-import org.jboss.deployers.structure.spi.helpers.RevertedDeploymentContextComparator;
 import org.jboss.deployers.structure.spi.main.MainDeployerInternals;
 import org.jboss.deployers.structure.spi.main.MainDeployerStructure;
 import org.jboss.logging.Logger;
@@ -104,7 +103,6 @@
 
    /** The top deployment context comparator */
    private Comparator<DeploymentContext> comparator;
-   private Comparator<DeploymentContext> reverted;
 
    /** The re-deployments */
    private final Map<String, Deployment> toRedeploy = Collections.synchronizedMap(new LinkedHashMap<String, Deployment>());
@@ -120,7 +118,6 @@
          throw new IllegalArgumentException("Null comparator");
 
       this.comparator = comparator;
-      this.reverted = new RevertedDeploymentContextComparator(comparator);
    }
 
    /**
@@ -647,9 +644,9 @@
             // Undeploy in reverse order (subdeployments first)
             undeployContexts = new ArrayList<DeploymentContext>(undeploy);
             undeploy.clear();
-            Collections.reverse(undeployContexts);
-            if (reverted != null)
-               Collections.sort(undeployContexts, reverted);
+            // order as it was deployed, Deployers::process will revert it 
+            if (comparator != null)
+               Collections.sort(undeployContexts, comparator);
          }
 
          if (undeployContexts != null)

Modified: projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/managed/DefaultManagedDeploymentCreator.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/managed/DefaultManagedDeploymentCreator.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/managed/DefaultManagedDeploymentCreator.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -27,7 +27,6 @@
 import org.jboss.deployers.structure.spi.DeploymentUnit;
 import org.jboss.managed.api.ManagedDeployment;
 import org.jboss.managed.api.ManagedObject;
-import org.jboss.managed.api.ManagedDeployment.DeploymentPhase;
 import org.jboss.managed.plugins.ManagedDeploymentImpl;
 
 /**
@@ -36,20 +35,10 @@
  * @author Scott.Stark at jboss.org
  * @version $Revision$
  */
-public class DefaultManagedDeploymentCreator
-   implements ManagedDeploymentCreator
+public class DefaultManagedDeploymentCreator implements ManagedDeploymentCreator
 {
-   public ManagedDeployment build(DeploymentUnit unit,
-         Map<String, ManagedObject> unitMOs,
-         ManagedDeployment parent)
+   public ManagedDeployment build(DeploymentUnit unit, Map<String, ManagedObject> unitMOs, ManagedDeployment parent)
    {
-      DeploymentPhase phase = unit.getAttachment(DeploymentPhase.class);
-      if( phase == null )
-         phase = DeploymentPhase.APPLICATION;
-      ManagedDeployment md = new ManagedDeploymentImpl(unit.getName(), unit.getSimpleName(),
-            phase, parent, unitMOs);
-
-      return md;
+      return new ManagedDeploymentImpl(unit.getName(), unit.getSimpleName(), parent, unitMOs);
    }
-
 }

Modified: projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/sort/DominoOrdering.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/sort/DominoOrdering.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/sort/DominoOrdering.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -70,24 +70,24 @@
             Dots oneTail = one.getTail();
             Dots twoHead = two.getHead();
             Dots twoTail = two.getTail();
-            boolean fstXsnd = oneTail.match(twoHead);
-            boolean sndXfst = twoTail.match(oneHead);
+            int fstXsnd = oneTail.intersect(twoHead);
+            int sndXfst = twoTail.intersect(oneHead);
             int relation = 0;
-            if (fstXsnd && sndXfst)
+            if (fstXsnd > 0 && sndXfst > 0)
             {
                // pass-through deployers
-               if (oneHead.match(twoHead) && oneTail.match(twoTail))
+               if (oneHead.intersect(twoHead) > 0 && oneTail.intersect(twoTail) > 0)
                {
-                  // lets try do do more exact match
+                  // lets try to do more exact match
                   // although we should aviod singe dimension checks
                   // which are already part of match() check
-                  // in order not to break comparator comparison
-                  if (twoHead.dimension() > 1 && oneTail.dimension() >= twoHead.dimension() && oneTail.contains(twoHead))
-                     relation = -1;
-                  else if (oneHead.dimension() > 1 && twoTail.dimension() >= oneHead.dimension() && twoTail.contains(oneHead))
-                     relation = 1;
-                  else
-                     relation = COMPARATOR.compare(one, two);
+                  int thXot = (oneTail.dimension() > 1 && twoHead.dimension() > 1) ? twoHead.intersect(oneTail) : 1;
+                  int before = Math.max(fstXsnd, thXot);
+                  int ohXtt = (oneHead.dimension() > 1 && twoTail.dimension() > 1) ? oneHead.intersect(twoTail) : 1;
+                  int after = Math.max(sndXfst, ohXtt);
+                  relation = after - before; // do we have some more exact match?
+
+                  // make name compare lazy - might already be fixed with transitive order
                }
                else
                {
@@ -97,7 +97,7 @@
             }
             else
             {
-               relation = fstXsnd ? -1 : (sndXfst ? 1 : 0);
+               relation = fstXsnd > 0 ? -1 : (sndXfst > 0 ? 1 : 0);
             }
 
             if (relation == 0)

Modified: projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/sort/Dots.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/sort/Dots.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/sort/Dots.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -37,23 +37,16 @@
    T getValue();
 
    /**
-    * Do this dots match with the param dots.
+    * Return the dimension of intersection.
+    * For strict domino that matches this would be one,
+    * in our case is the size of intersection set.
     *
     * @param dots the dots
-    * @return true if these dots match param dots
+    * @return the intersection dimension
     */
-   boolean match(Dots<T> dots);
+   int intersect(Dots<T> dots);
 
    /**
-    * Do this dots contain the param dots.
-    * In most cases this should be te same as a match.
-    *
-    * @param dots the dots
-    * @return true if these dots contain param dots
-    */
-   boolean contains(Dots<T> dots);
-
-   /**
     * The dimension of different dots.
     * For strict domino dots this would be one,
     * in our string set case this is the size of the set.

Modified: projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/sort/SetDots.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/sort/SetDots.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-impl/src/main/java/org/jboss/deployers/plugins/sort/SetDots.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -46,26 +46,12 @@
       return set;
    }
 
-   public boolean match(Dots<Set<V>> containable)
+   public int intersect(Dots<Set<V>> containable)
    {
-      if (set.isEmpty() == false)
-      {
-         for(V value : containable.getValue())
-         {
-            if (set.contains(value))
-            {
-               return true;
-            }
-         }
-      }
-      return false;
-   }
-
-   public boolean contains(Dots<Set<V>> containable)
-   {
       Set<V> otherSet = containable.getValue();
       Set<V> copy = new HashSet<V>(otherSet);
-      return copy.retainAll(set) == false; 
+      copy.retainAll(set);
+      return copy.size();
    }
 
    public int dimension()

Copied: projects/jboss-deployers/branches/vfs3/deployers-impl/src/test/java/org/jboss/test/deployers/annotations/support/InterceptionClassLoaderSystem.java (from rev 98000, projects/jboss-deployers/trunk/deployers-impl/src/test/java/org/jboss/test/deployers/annotations/support/InterceptionClassLoaderSystem.java)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-impl/src/test/java/org/jboss/test/deployers/annotations/support/InterceptionClassLoaderSystem.java	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-impl/src/test/java/org/jboss/test/deployers/annotations/support/InterceptionClassLoaderSystem.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,45 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2007, 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.annotations.support;
+
+import org.jboss.classloader.plugins.system.DefaultClassLoaderSystem;
+import org.jboss.classloader.spi.ClassLoaderDomain;
+import org.jboss.classloader.spi.ClassLoaderPolicy;
+
+/**
+ * InterceptionClassLoaderSystemDeployer.
+ *
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
+ */
+public class InterceptionClassLoaderSystem extends DefaultClassLoaderSystem
+{
+   @Override
+   public ClassLoader registerClassLoaderPolicy(ClassLoaderDomain domain, ClassLoaderPolicy policy)
+   {
+      return wrapClassLoader(super.registerClassLoaderPolicy(domain, policy));
+   }
+
+   protected ClassLoader wrapClassLoader(ClassLoader loader)
+   {
+      return new InterceptionClassLoader(loader);
+   }
+}
\ No newline at end of file

Modified: projects/jboss-deployers/branches/vfs3/deployers-impl/src/test/java/org/jboss/test/deployers/annotations/support/InterceptionClassLoaderSystemDeployer.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-impl/src/test/java/org/jboss/test/deployers/annotations/support/InterceptionClassLoaderSystemDeployer.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-impl/src/test/java/org/jboss/test/deployers/annotations/support/InterceptionClassLoaderSystemDeployer.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -34,12 +34,6 @@
  */
 public class InterceptionClassLoaderSystemDeployer extends AbstractLevelClassLoaderSystemDeployer
 {
-   public ClassLoader createClassLoader(DeploymentUnit unit) throws Exception
-   {
-      ClassLoader loader = super.createClassLoader(unit);
-      return new InterceptionClassLoader(loader);
-   }
-
    @Override
    public void removeClassLoader(DeploymentUnit unit) throws Exception
    {

Modified: projects/jboss-deployers/branches/vfs3/deployers-impl/src/test/java/org/jboss/test/deployers/annotations/test/AnnotationEnvKeepTestCase.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-impl/src/test/java/org/jboss/test/deployers/annotations/test/AnnotationEnvKeepTestCase.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-impl/src/test/java/org/jboss/test/deployers/annotations/test/AnnotationEnvKeepTestCase.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -22,8 +22,7 @@
 package org.jboss.test.deployers.annotations.test;
 
 import junit.framework.Test;
-import org.jboss.deployers.spi.deployer.Deployer;
-import org.jboss.deployers.plugins.annotations.GenericAnnotationDeployer;
+import org.jboss.mcann.repository.AbstractSettings;
 
 /**
  * AnnotationEnvKeepTestCase.
@@ -43,10 +42,10 @@
       return suite(AnnotationEnvKeepTestCase.class);
    }
 
-   protected Deployer createGenericAnnotationDeployer()
+   @Override
+   protected void applySettings(AbstractSettings settings)
    {
-      GenericAnnotationDeployer deployer = new GenericAnnotationDeployer();
-      deployer.setKeepAnnotations(true);
-      return deployer; 
+      super.applySettings(settings);
+      settings.setKeepAnnotations(true);
    }
 }
\ No newline at end of file

Modified: projects/jboss-deployers/branches/vfs3/deployers-impl/src/test/java/org/jboss/test/deployers/annotations/test/AnnotationEnvTestCase.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-impl/src/test/java/org/jboss/test/deployers/annotations/test/AnnotationEnvTestCase.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-impl/src/test/java/org/jboss/test/deployers/annotations/test/AnnotationEnvTestCase.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -32,9 +32,9 @@
 import org.jboss.classloader.plugins.ClassLoaderUtils;
 import org.jboss.deployers.client.spi.DeployerClient;
 import org.jboss.deployers.client.spi.Deployment;
-import org.jboss.deployers.spi.annotations.AnnotationEnvironment;
-import org.jboss.deployers.spi.annotations.Element;
 import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.mcann.AnnotationRepository;
+import org.jboss.mcann.Element;
 import org.jboss.test.deployers.annotations.support.AnnotationsHolder;
 import org.jboss.test.deployers.annotations.support.TestAnnotation;
 
@@ -66,7 +66,8 @@
             deployment.getName(),
             null,
             ClassLoaderUtils.classNameToPath("org.jboss.test.deployers.annotations.support.AnnotationsHolder"),
-            ClassLoaderUtils.classNameToPath("org.jboss.test.deployers.annotations.support.TestAnnotation")
+            ClassLoaderUtils.classNameToPath("org.jboss.test.deployers.annotations.support.TestAnnotation"),
+            ClassLoaderUtils.classNameToPath("org.jboss.reflect.plugins.javassist.JavassistMethod")
       );
 
       DeploymentUnit unit = assertDeploy(deployer, deployment);
@@ -79,7 +80,7 @@
          // annotations are loaded, OK?
          assertLoaded(unit, "org.jboss.test.deployers.annotations.support.TestAnnotation");
 
-         AnnotationEnvironment env = getAnnotationEnvironment(unit);
+         AnnotationRepository env = getAnnotationRepository(unit);
          Set<Element<TestAnnotation, Class<?>>> classes = env.classIsAnnotatedWith(taClass);
          assertNotNull(classes);
          assertEquals(1, classes.size());
@@ -143,7 +144,8 @@
             deployment.getName(),
             null,
             ClassLoaderUtils.classNameToPath("org.jboss.test.deployers.annotations.support.AnnotationsHolder"),
-            ClassLoaderUtils.classNameToPath("org.jboss.test.deployers.annotations.support.TestAnnotation")
+            ClassLoaderUtils.classNameToPath("org.jboss.test.deployers.annotations.support.TestAnnotation"),
+            ClassLoaderUtils.classNameToPath("org.jboss.reflect.plugins.javassist.JavassistMethod")
       );
 
       DeploymentUnit unit = assertDeploy(deployer, deployment);
@@ -155,7 +157,7 @@
          // annotations are loaded, OK?
          assertLoaded(unit, "org.jboss.test.deployers.annotations.support.TestAnnotation");
 
-         AnnotationEnvironment env = getAnnotationEnvironment(unit);
+         AnnotationRepository env = getAnnotationRepository(unit);
          Set<Element<Annotation, Class<?>>> classes = env.classIsAnnotatedWith(annotationName);
          assertNotNull(classes);
          assertEquals(1, classes.size());

Modified: projects/jboss-deployers/branches/vfs3/deployers-impl/src/test/java/org/jboss/test/deployers/annotations/test/AnnotationsTest.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-impl/src/test/java/org/jboss/test/deployers/annotations/test/AnnotationsTest.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-impl/src/test/java/org/jboss/test/deployers/annotations/test/AnnotationsTest.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -25,9 +25,11 @@
 import java.lang.reflect.AnnotatedElement;
 import java.util.Set;
 
-import org.jboss.classloader.plugins.system.DefaultClassLoaderSystem;
+import org.jboss.classloader.plugins.filter.CombiningClassFilter;
 import org.jboss.classloader.spi.ClassLoaderSystem;
 import org.jboss.classloader.spi.ParentPolicy;
+import org.jboss.classloader.spi.filter.ClassFilter;
+import org.jboss.classloader.spi.filter.PackageClassFilter;
 import org.jboss.classloading.spi.dependency.ClassLoading;
 import org.jboss.classloading.spi.dependency.policy.mock.MockClassLoadingMetaData;
 import org.jboss.classloading.spi.metadata.CapabilitiesMetaData;
@@ -38,18 +40,24 @@
 import org.jboss.deployers.client.spi.DeployerClient;
 import org.jboss.deployers.plugins.annotations.GenericAnnotationDeployer;
 import org.jboss.deployers.plugins.classloading.AbstractClassLoaderDescribeDeployer;
-import org.jboss.deployers.spi.annotations.AnnotationEnvironment;
-import org.jboss.deployers.spi.annotations.Element;
 import org.jboss.deployers.spi.attachments.Attachments;
 import org.jboss.deployers.spi.attachments.MutableAttachments;
 import org.jboss.deployers.spi.attachments.PredeterminedManagedObjectAttachments;
 import org.jboss.deployers.spi.deployer.Deployer;
 import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.mcann.AnnotationRepository;
+import org.jboss.mcann.Element;
+import org.jboss.mcann.repository.AbstractSettings;
+import org.jboss.mcann.repository.javassist.JavassistConfiguration;
 import org.jboss.test.deployers.AbstractDeployerTest;
 import org.jboss.test.deployers.annotations.support.InterceptionClassLoader;
+import org.jboss.test.deployers.annotations.support.InterceptionClassLoaderSystem;
 import org.jboss.test.deployers.annotations.support.InterceptionClassLoaderSystemDeployer;
 import org.jboss.test.deployers.classloading.support.MockClassLoaderDescribeDeployer;
+import org.jboss.classloader.plugins.filter.NothingClassFilter;
+import org.jboss.classloader.plugins.filter.JavaOnlyClassFilter;
 
+
 /**
  * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
  */
@@ -114,9 +122,9 @@
       mutable.addAttachment(ClassLoadingMetaData.class, md);
    }
 
-   protected AnnotationEnvironment getAnnotationEnvironment(Attachments attachments)
+   protected AnnotationRepository getAnnotationRepository(Attachments attachments)
    {
-      AnnotationEnvironment env = attachments.getAttachment(AnnotationEnvironment.class);
+      AnnotationRepository env = attachments.getAttachment(AnnotationRepository.class);
       assertNotNull(env);
       return env;
    }
@@ -154,14 +162,18 @@
       InterceptionClassLoader icl = (InterceptionClassLoader)cl;
       Set<String> loaded = icl.getLoaded();
       assertNotNull(loaded);
-      assertEquals(loaded.contains(className), checkFlag);
+      assertEquals(checkFlag, loaded.contains(className));
    }
 
    protected DeployerClient getMainDeployer(Deployer... deployers)
    {
       ClassLoading classLoading = new ClassLoading();
-      ClassLoaderSystem system = new DefaultClassLoaderSystem();
-      system.getDefaultDomain().setParentPolicy(ParentPolicy.BEFORE_BUT_JAVA_ONLY);
+      ClassLoaderSystem system = new InterceptionClassLoaderSystem();
+      // we need to see javassist
+      ClassFilter javassistFilter = new PackageClassFilter(new String[]{"org.jboss.reflect.plugins.javassist"});
+      ClassFilter before = new CombiningClassFilter(false, new ClassFilter[]{JavaOnlyClassFilter.INSTANCE, javassistFilter});
+      ParentPolicy parentPolicy = new ParentPolicy(before, NothingClassFilter.INSTANCE);
+      system.getDefaultDomain().setParentPolicy(parentPolicy);
 
       deployer1 = new MockClassLoaderDescribeDeployer();
       deployer1.setClassLoading(classLoading);
@@ -187,6 +199,15 @@
 
    protected Deployer createGenericAnnotationDeployer()
    {
-      return new GenericAnnotationDeployer();
+      GenericAnnotationDeployer deployer = new GenericAnnotationDeployer();
+      final JavassistConfiguration configuration = new JavassistConfiguration();
+      applySettings(configuration);
+      deployer.setConfiguration(configuration);
+      return deployer;
    }
+
+   protected void applySettings(AbstractSettings settings)
+   {
+      settings.setForceAnnotations(true);
+   }
 }

Modified: projects/jboss-deployers/branches/vfs3/deployers-impl/src/test/java/org/jboss/test/deployers/classloading/test/SubDeploymentMockClassLoaderUnitTestCase.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-impl/src/test/java/org/jboss/test/deployers/classloading/test/SubDeploymentMockClassLoaderUnitTestCase.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-impl/src/test/java/org/jboss/test/deployers/classloading/test/SubDeploymentMockClassLoaderUnitTestCase.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -183,6 +183,42 @@
       assertEquals(Arrays.asList("top/sub", "top"), deployer2.undeployed);
    }
 
+   public void testSubDeploymentClassLoaderSpecifiedTopLevel() throws Exception
+   {
+      DeployerClient deployer = getMainDeployer();
+
+      Deployment deployment = createSimpleDeployment("top");
+      ClassLoadingMetaData top = addClassLoadingMetaData(deployment, "top", null, A.class);
+      top.setImportAll(true);
+      
+      ContextInfo sub = addChild(deployment, "sub");
+      ClassLoadingMetaData topSub = addClassLoadingMetaData(sub, "top/sub", null, false, B.class);
+      topSub.setDomain(ClassLoaderSystem.DEFAULT_DOMAIN_NAME);
+      topSub.setTopLevelClassLoader(true);
+      topSub.setImportAll(true);
+      
+      DeploymentUnit unit = assertDeploy(deployer, deployment);
+      
+      assertEquals(Arrays.asList("top", "top/sub"), deployer2.deployed);
+      assertEquals(NONE, deployer2.undeployed);
+      
+      ClassLoader cl = unit.getClassLoader();
+      
+      DeploymentUnit subDeployment = assertChild(unit, "top/sub");
+      ClassLoader clSub = subDeployment.getClassLoader();
+
+      assertLoadClass(cl, A.class);
+      assertLoadClass(cl, B.class, clSub);
+      assertLoadClass(clSub, A.class, cl);
+      assertLoadClass(clSub, B.class);
+      
+      assertUndeploy(deployer, deployment);
+      assertNoDomain("top/sub");
+
+      assertEquals(Arrays.asList("top", "top/sub"), deployer2.deployed);
+      assertEquals(Arrays.asList("top/sub", "top"), deployer2.undeployed);
+   }
+
    public void testMultipleSubDeploymentClassLoader() throws Exception
    {
       DeployerClient deployer = getMainDeployer();

Modified: projects/jboss-deployers/branches/vfs3/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/DeployersDeployerTestSuite.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/DeployersDeployerTestSuite.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/DeployersDeployerTestSuite.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -25,24 +25,26 @@
 import junit.framework.TestSuite;
 import junit.textui.TestRunner;
 
+import org.jboss.test.deployers.deployer.helpers.test.ExactAttachmentDeployerWithVisitorTestCase;
 import org.jboss.test.deployers.deployer.test.ComponentUnitTestCase;
 import org.jboss.test.deployers.deployer.test.DeployerClassLoaderUnitTestCase;
 import org.jboss.test.deployers.deployer.test.DeployerContextClassLoaderUnitTestCase;
 import org.jboss.test.deployers.deployer.test.DeployerFlowUnitTestCase;
 import org.jboss.test.deployers.deployer.test.DeployerOrderingUnitTestCase;
 import org.jboss.test.deployers.deployer.test.DeployerProtocolUnitTestCase;
+import org.jboss.test.deployers.deployer.test.DeployerRequiredInputsUnitTestCase;
 import org.jboss.test.deployers.deployer.test.DeployerRequiredStageUnitTestCase;
 import org.jboss.test.deployers.deployer.test.DeployerWidthFirstUnitTestCase;
 import org.jboss.test.deployers.deployer.test.DeployersImplUnitTestCase;
 import org.jboss.test.deployers.deployer.test.HeuristicAllOrNothingUnitTestCase;
 import org.jboss.test.deployers.deployer.test.HeuristicRussionDollUnitTestCase;
 import org.jboss.test.deployers.deployer.test.MultipleComponentTypeUnitTestCase;
-import org.jboss.test.deployers.deployer.helpers.test.ExactAttachmentDeployerWithVisitorTestCase;
 
 /**
  * Deployers Deployer Test Suite.
  * 
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @author <a href="ales.justin at jboss.org">Ales Justin</a>
  * @version $Revision: 37459 $
  */
 public class DeployersDeployerTestSuite extends TestSuite
@@ -68,6 +70,7 @@
       suite.addTest(HeuristicRussionDollUnitTestCase.suite());
       suite.addTest(DeployerContextClassLoaderUnitTestCase.suite());
       suite.addTest(DeployerRequiredStageUnitTestCase.suite());
+      suite.addTest(DeployerRequiredInputsUnitTestCase.suite());
 
       // helper deployers
       suite.addTest(ExactAttachmentDeployerWithVisitorTestCase.suite());

Copied: projects/jboss-deployers/branches/vfs3/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/support/TestDeployerAdapter.java (from rev 98000, projects/jboss-deployers/trunk/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/support/TestDeployerAdapter.java)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/support/TestDeployerAdapter.java	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/support/TestDeployerAdapter.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,36 @@
+/**
+ * 
+ */
+package org.jboss.test.deployers.deployer.support;
+
+import org.jboss.deployers.spi.DeploymentException;
+import org.jboss.deployers.spi.deployer.helpers.AbstractDeployer;
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+
+/**
+ * Deployer adapter.
+ * @author <a href="mailto:ropalka at redhat.com">Richard Opalka</a>
+ */
+public final class TestDeployerAdapter extends AbstractDeployer
+{
+   
+   final String name;
+
+   public TestDeployerAdapter( final String name )
+   {
+      super();
+      this.name = name;
+   }
+
+   public void deploy(DeploymentUnit unit) throws DeploymentException
+   {
+      // NOOP
+   }
+   
+   @Override
+   public String toString()
+   {
+      return super.toString() + "-" + this.name;
+   }
+
+}

Modified: projects/jboss-deployers/branches/vfs3/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/test/DeployerFlowUnitTestCase.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/test/DeployerFlowUnitTestCase.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/test/DeployerFlowUnitTestCase.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -25,13 +25,17 @@
 import junit.framework.TestSuite;
 import org.jboss.deployers.client.spi.DeployerClient;
 import org.jboss.deployers.client.spi.Deployment;
+import org.jboss.deployers.spi.deployer.helpers.AbstractDeployer;
+import org.jboss.deployers.spi.deployer.DeploymentStages;
 import org.jboss.test.deployers.AbstractDeployerTest;
+import org.jboss.test.deployers.deployer.support.TestDeployerAdapter;
 import org.jboss.test.deployers.deployer.support.TestFlowDeployer;
 
 /**
  * DeployerOrderingUnitTestCase.
  *
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @author <a href="mailto:ropalka at redhat.com">Richard Opalka</a>
  * @version $Revision: 1.1 $
  */
 public class DeployerFlowUnitTestCase extends AbstractDeployerTest
@@ -939,4 +943,1029 @@
       main.removeDeployment(deployment);
       main.process();
    }
+
+   public void testDeployersOrder1() throws Exception
+   {
+      DeployerClient main = createMainDeployer();
+
+      TestFlowDeployer deployer6 = new TestFlowDeployer( "6" );
+      deployer6.setInputs( "a11", "a12", "a13", "a14", "a33" );
+      addDeployer(main, deployer6);
+
+      TestFlowDeployer deployer5 = new TestFlowDeployer( "5" );
+      deployer5.setInputs( "a21", "a33", "a41" );
+      deployer5.setOutputs( "a33", "a51", "a52" );
+      addDeployer(main, deployer5);
+
+      TestFlowDeployer deployer4 = new TestFlowDeployer( "4" );
+      deployer4.setInputs( "a14", "a33" );
+      deployer4.setOutputs( "a14", "a33", "a41" );
+      addDeployer( main, deployer4 );
+
+      TestFlowDeployer deployer3 = new TestFlowDeployer( "3" );
+      deployer3.setInputs( "a13", "a21" );
+      deployer3.setOutputs( "a32", "a33" );
+      addDeployer( main, deployer3 );
+
+      TestFlowDeployer deployer2 = new TestFlowDeployer( "2" );
+      deployer2.setInputs( "a11", "a12" );
+      deployer2.setOutputs( "a12", "a21", "a22" );
+      addDeployer( main, deployer2 );
+
+      TestFlowDeployer deployer1 = new TestFlowDeployer( "1" );
+      deployer1.setOutputs( "a11", "a12", "a13", "a14" );
+      addDeployer( main, deployer1 );
+
+      Deployment deployment = createSimpleDeployment( "deployersOrderTest" );
+      main.addDeployment(deployment);
+      main.process();
+      
+      assertEquals(1, deployer1.getDeployOrder());
+      assertEquals(2, deployer2.getDeployOrder());
+      assertEquals(3, deployer3.getDeployOrder());
+      assertEquals(4, deployer4.getDeployOrder());
+      assertEquals(5, deployer5.getDeployOrder());
+      assertEquals(6, deployer6.getDeployOrder());
+      assertEquals(-1, deployer1.getUndeployOrder());
+      assertEquals(-1, deployer2.getUndeployOrder());
+      assertEquals(-1, deployer3.getUndeployOrder());
+      assertEquals(-1, deployer4.getUndeployOrder());
+      assertEquals(-1, deployer5.getUndeployOrder());
+      assertEquals(-1, deployer6.getUndeployOrder());
+
+      main.removeDeployment(deployment);
+      main.process();
+
+      assertEquals(1, deployer1.getDeployOrder());
+      assertEquals(2, deployer2.getDeployOrder());
+      assertEquals(3, deployer3.getDeployOrder());
+      assertEquals(4, deployer4.getDeployOrder());
+      assertEquals(5, deployer5.getDeployOrder());
+      assertEquals(6, deployer6.getDeployOrder());
+      assertEquals(12, deployer1.getUndeployOrder());
+      assertEquals(11, deployer2.getUndeployOrder());
+      assertEquals(10, deployer3.getUndeployOrder());
+      assertEquals(9, deployer4.getUndeployOrder());
+      assertEquals(8, deployer5.getUndeployOrder());
+      assertEquals(7, deployer6.getUndeployOrder());
+
+      main.addDeployment(deployment);
+      main.process();
+
+      assertEquals(13, deployer1.getDeployOrder());
+      assertEquals(14, deployer2.getDeployOrder());
+      assertEquals(15, deployer3.getDeployOrder());
+      assertEquals(16, deployer4.getDeployOrder());
+      assertEquals(17, deployer5.getDeployOrder());
+      assertEquals(18, deployer6.getDeployOrder());
+      assertEquals(12, deployer1.getUndeployOrder());
+      assertEquals(11, deployer2.getUndeployOrder());
+      assertEquals(10, deployer3.getUndeployOrder());
+      assertEquals(9, deployer4.getUndeployOrder());
+      assertEquals(8, deployer5.getUndeployOrder());
+      assertEquals(7, deployer6.getUndeployOrder());
+
+      main.removeDeployment(deployment);
+      main.process();
+   }
+
+   public void testRemovingOverlapping() throws Exception
+   {
+      DeployerClient main = createMainDeployer();
+
+      // "1", "2", "3", "4" and "6" are provided by deployers in different stage
+      TestFlowDeployer deployer1 = new TestFlowDeployer( "WSEJBAdapterDeployer" );
+      deployer1.setInputs( "1", "2", "3", "4" );
+      deployer1.setOutputs( "5" );
+      addDeployer(main, deployer1);
+
+      TestFlowDeployer deployer2 = new TestFlowDeployer( "WSTypeDeployer" );
+      deployer2.setInputs( "5", "4", "6" ); // note 6 is both input and output
+      deployer2.setOutputs( "6", "7" );
+      addDeployer(main, deployer2);
+
+      TestFlowDeployer deployer3 = new TestFlowDeployer( "WSDeploymentDeployer" );
+      deployer3.setInputs( "6", "7" ); // note 6 is both input and output
+      deployer3.setOutputs( "8", "6" );
+      addDeployer( main, deployer3 );
+
+      TestFlowDeployer deployer4 = new TestFlowDeployer( "WSDeploymentAspectDeployer" );
+      deployer4.setInputs( "6", "7", "8" );  // note 6 is both input and output
+      deployer4.setOutputs( "9", "6", "0" );
+      addDeployer( main, deployer4 );
+
+      Deployment deployment = createSimpleDeployment( "deployersOrderTest" );
+
+      main.addDeployment(deployment);
+      main.process();
+
+      assertEquals(1, deployer1.getDeployOrder());
+      assertEquals(2, deployer2.getDeployOrder());
+      assertEquals(3, deployer3.getDeployOrder());
+      assertEquals(4, deployer4.getDeployOrder());
+      assertEquals(-1, deployer1.getUndeployOrder());
+      assertEquals(-1, deployer2.getUndeployOrder());
+      assertEquals(-1, deployer3.getUndeployOrder());
+      assertEquals(-1, deployer4.getUndeployOrder());
+
+      main.removeDeployment(deployment);
+      main.process();
+
+      assertEquals(1, deployer1.getDeployOrder());
+      assertEquals(2, deployer2.getDeployOrder());
+      assertEquals(3, deployer3.getDeployOrder());
+      assertEquals(4, deployer4.getDeployOrder());
+      assertEquals(8, deployer1.getUndeployOrder());
+      assertEquals(7, deployer2.getUndeployOrder());
+      assertEquals(6, deployer3.getUndeployOrder());
+      assertEquals(5, deployer4.getUndeployOrder());
+
+      main.addDeployment(deployment);
+      main.process();
+
+      assertEquals(9, deployer1.getDeployOrder());
+      assertEquals(10, deployer2.getDeployOrder());
+      assertEquals(11, deployer3.getDeployOrder());
+      assertEquals(12, deployer4.getDeployOrder());
+      assertEquals(8, deployer1.getUndeployOrder());
+      assertEquals(7, deployer2.getUndeployOrder());
+      assertEquals(6, deployer3.getUndeployOrder());
+      assertEquals(5, deployer4.getUndeployOrder());
+
+      main.removeDeployment(deployment);
+      main.process();
+   }
+
+   public void testPartialOverlapping() throws Exception
+   {
+      DeployerClient main = createMainDeployer();
+
+      // "1", "2", are provided by other preceding deployers
+      TestFlowDeployer deployer1 = new TestFlowDeployer( "Deployer" );
+      deployer1.setInputs( "1", "2" );
+      deployer1.setOutputs( "3", "5", "2", "4" );
+      addDeployer(main, deployer1);
+
+      TestFlowDeployer deployer2 = new TestFlowDeployer( "Deployer" );
+      deployer2.setInputs( "1", "5", "2" ); // depends on 5 (output of deployer1)
+      deployer2.setOutputs( "6", "2", "4" );
+      addDeployer(main, deployer2);
+
+      TestFlowDeployer deployer3 = new TestFlowDeployer( "Deployer" );
+      deployer3.setInputs( "6", "1", "5", "2" ); // depends on 6 (output of deployer2) and 5 (output of deployer1)
+      deployer3.setOutputs( "7", "2", "4" );
+      addDeployer( main, deployer3 );
+
+      TestFlowDeployer deployer4 = new TestFlowDeployer( "Deployer" );
+      deployer4.setInputs( "1", "2", "4" ); // depends on 4 (output of deployer1, deployer2 and deployer3)
+      deployer4.setOutputs( "8", "2" );
+      addDeployer( main, deployer4 );
+
+      Deployment deployment = createSimpleDeployment( "deployersOrderTest" );
+
+      main.addDeployment(deployment);
+      main.process();
+
+      assertEquals(1, deployer1.getDeployOrder());
+      assertEquals(2, deployer2.getDeployOrder());
+      assertEquals(3, deployer3.getDeployOrder());
+      assertEquals(4, deployer4.getDeployOrder());
+      assertEquals(-1, deployer1.getUndeployOrder());
+      assertEquals(-1, deployer2.getUndeployOrder());
+      assertEquals(-1, deployer3.getUndeployOrder());
+      assertEquals(-1, deployer4.getUndeployOrder());
+
+      main.removeDeployment(deployment);
+      main.process();
+
+      assertEquals(1, deployer1.getDeployOrder());
+      assertEquals(2, deployer2.getDeployOrder());
+      assertEquals(3, deployer3.getDeployOrder());
+      assertEquals(4, deployer4.getDeployOrder());
+      assertEquals(8, deployer1.getUndeployOrder());
+      assertEquals(7, deployer2.getUndeployOrder());
+      assertEquals(6, deployer3.getUndeployOrder());
+      assertEquals(5, deployer4.getUndeployOrder());
+
+      main.addDeployment(deployment);
+      main.process();
+
+      assertEquals(9, deployer1.getDeployOrder());
+      assertEquals(10, deployer2.getDeployOrder());
+      assertEquals(11, deployer3.getDeployOrder());
+      assertEquals(12, deployer4.getDeployOrder());
+      assertEquals(8, deployer1.getUndeployOrder());
+      assertEquals(7, deployer2.getUndeployOrder());
+      assertEquals(6, deployer3.getUndeployOrder());
+      assertEquals(5, deployer4.getUndeployOrder());
+
+      main.removeDeployment(deployment);
+      main.process();
+   }
+   
+   public void testRealWorldAS6DeployersScenario() throws Exception
+   {
+      // THIS IS REAL WORLD SCENARIO - AS deployers with their dependencies
+      DeployerClient main = createMainDeployer();
+      AbstractDeployer deployer = null;
+      long start = System.currentTimeMillis();
+
+      // PARSE
+
+      deployer = new TestDeployerAdapter( "org.jboss.deployers.vfs.deployer.kernel.BeanDeployer" );
+      deployer.setStage(DeploymentStages.PARSE);
+      deployer.setOutputs( "org.jboss.kernel.spi.deployment.KernelDeployment" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.deployers.vfs.plugins.annotations.ScanningMetaDataDeployer" );
+      deployer.setStage(DeploymentStages.PARSE);
+      deployer.setOutputs( "org.jboss.deployers.spi.annotations.ScanningMetaData", "org.jboss.deployers.plugins.annotations.AbstractScanningMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.deployers.vfs.plugins.dependency.AliasesParserDeployer" );
+      deployer.setStage(DeploymentStages.PARSE);
+      deployer.setOutputs( "org.jboss.deployers.vfs.plugins.dependency.DeploymentAliases" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.deployers.vfs.plugins.dependency.DependenciesParserDeployer" );
+      deployer.setStage(DeploymentStages.PARSE);
+      deployer.setOutputs( "org.jboss.deployers.vfs.plugins.dependency.DependenciesMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.deployers.vfs.spi.deployer.SchemaResolverDeployer" );
+      deployer.setStage(DeploymentStages.PARSE);
+      deployer.setOutputs( "org.jboss.hibernate.deployers.metadata.HibernateMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.deployers.vfs.spi.deployer.SchemaResolverDeployer" );
+      deployer.setStage(DeploymentStages.PARSE);
+      deployer.setOutputs( "org.jboss.xnio.metadata.XnioMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.deployers.vfs.spi.deployer.SchemaResolverDeployer" );
+      deployer.setStage(DeploymentStages.PARSE);
+      deployer.setOutputs( "org.jboss.security.microcontainer.beans.metadata.SecurityPolicyMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.deployers.vfs.spi.deployer.SchemaResolverDeployer" );
+      deployer.setStage(DeploymentStages.PARSE);
+      deployer.setOutputs( "org.jboss.logging.metadata.LoggingMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.deployers.vfs.spi.deployer.SchemaResolverDeployer" );
+      deployer.setStage(DeploymentStages.PARSE);
+      deployer.setOutputs( "org.jboss.classloading.spi.metadata.ClassLoadingMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.deployers.vfs.spi.deployer.SchemaResolverDeployer" );
+      deployer.setStage(DeploymentStages.PARSE);
+      deployer.setOutputs( "org.jboss.threads.metadata.ThreadsMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.deployers.vfs.spi.deployer.SchemaResolverDeployer" );
+      deployer.setStage(DeploymentStages.PARSE);
+      deployer.setOutputs( "org.jboss.aop.microcontainer.beans.metadata.AOPDeployment" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.deployment.AppParsingDeployer" );
+      deployer.setStage(DeploymentStages.PARSE);
+      deployer.setOutputs( "org.jboss.metadata.ear.spec.EarMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.deployment.JBossAppParsingDeployer" );
+      deployer.setStage(DeploymentStages.PARSE);
+      deployer.setOutputs( "org.jboss.metadata.ear.jboss.JBossAppMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.ejb3.deployers.AppClientParsingDeployer" );
+      deployer.setStage(DeploymentStages.PARSE);
+      deployer.setOutputs( "org.jboss.metadata.client.spec.ApplicationClientMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.ejb3.deployers.JBossClientParsingDeployer" );
+      deployer.setStage(DeploymentStages.PARSE);
+      deployer.setInputs( "org.jboss.metadata.client.spec.ApplicationClientMetaData" );
+      deployer.setOutputs( "org.jboss.metadata.client.jboss.JBossClientMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.ejb3.deployers.PersistenceUnitParsingDeployer" );
+      deployer.setStage(DeploymentStages.PARSE);
+      deployer.setOutputs( "org.jboss.metadata.jpa.spec.PersistenceMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.jpa.deployers.PersistenceParsingDeployer" );
+      deployer.setStage(DeploymentStages.PARSE);
+      deployer.setOutputs( "org.jboss.metadata.jpa.spec.PersistenceMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.resource.deployers.ManagedConnectionFactoryParserDeployer" );
+      deployer.setStage(DeploymentStages.PARSE);
+      deployer.setOutputs( "org.jboss.resource.metadata.mcf.ManagedConnectionFactoryDeploymentGroup" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.resource.deployers.RARParserDeployer" );
+      deployer.setStage(DeploymentStages.PARSE);
+      deployer.setOutputs( "org.jboss.resource.metadata.RARDeploymentMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.security.deployers.AclConfigParsingDeployer" );
+      deployer.setStage(DeploymentStages.PARSE);
+      deployer.setOutputs( "org.jboss.security.acl.config.ACLConfiguration" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.security.deployers.XacmlConfigParsingDeployer" );
+      deployer.setStage(DeploymentStages.PARSE);
+      deployer.setOutputs( "javax.xml.bind.JAXBElement" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.system.deployers.SARDeployer" );
+      deployer.setStage(DeploymentStages.PARSE);
+      deployer.setOutputs( "org.jboss.system.metadata.ServiceDeployment" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.varia.deployment.LegacyBeanShellDeployer" );
+      deployer.setStage(DeploymentStages.PARSE);
+      deployer.setOutputs( "org.jboss.varia.deployment.BeanShellScript" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.webservices.integration.deployers.WSDescriptorDeployer" );
+      deployer.setStage(DeploymentStages.PARSE);
+      deployer.setOutputs( "org.jboss.wsf.spi.metadata.webservices.WebservicesMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.aop.asintegration.jboss5.AOPAnnotationMetaDataParserDeployer" );
+      deployer.setStage(DeploymentStages.PARSE);
+      deployer.setOutputs( "org.jboss.aop.microcontainer.beans.metadata.AOPDeployment" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.deployment.EARContentsDeployer" );
+      deployer.setStage(DeploymentStages.PARSE);
+      deployer.setOutputs( "org.jboss.metadata.ear.jboss.JBossAppMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.deployment.WebAppParsingDeployer" );
+      deployer.setStage(DeploymentStages.PARSE);
+      deployer.setOutputs( "org.jboss.metadata.web.spec.WebMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.deployment.WebAppFragmentParsingDeployer" );
+      deployer.setStage(DeploymentStages.PARSE);
+      deployer.setOutputs( "org.jboss.metadata.web.spec.WebFragmentMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.deployment.TldParsingDeployer" );
+      deployer.setStage(DeploymentStages.PARSE);
+      deployer.setOutputs( "org.jboss.metadata.web.spec.TldMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.deployment.JBossWebAppParsingDeployer" );
+      deployer.setStage(DeploymentStages.PARSE);
+      deployer.setInputs( "org.jboss.metadata.web.spec.WebMetaData" );
+      deployer.setOutputs( "org.jboss.metadata.web.jboss.JBossWebMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.deployment.EjbParsingDeployer" );
+      deployer.setStage(DeploymentStages.PARSE);
+      deployer.setOutputs( "org.jboss.metadata.ejb.spec.EjbJarMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.deployment.JBossEjbParsingDeployer" );
+      deployer.setStage(DeploymentStages.PARSE);
+      deployer.setInputs( "org.jboss.metadata.ejb.spec.EjbJarMetaData" );
+      deployer.setOutputs( "standardjboss.xml", "org.jboss.metadata.ejb.jboss.JBossMetaData", "org.jboss.metadata.ApplicationMetaData" );
+      addDeployer(main, deployer);
+
+      // POST_PARSE
+
+      deployer = new TestDeployerAdapter( "org.jboss.deployers.vfs.plugins.dependency.DependenciesMetaDataDeployer" );
+      deployer.setStage(DeploymentStages.POST_PARSE);
+      deployer.setInputs( "org.jboss.deployers.vfs.plugins.dependency.DependenciesMetaData" );
+      deployer.setOutputs( "org.jboss.deployers.vfs.plugins.dependency.DeploymentDependencies" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.deployers.vfs.plugins.dependency.DeploymentAliasesDeployer" );
+      deployer.setStage(DeploymentStages.POST_PARSE);
+      deployer.setInputs( "org.jboss.deployers.vfs.plugins.dependency.DeploymentAliases" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.deployers.vfs.plugins.dependency.DeploymentDependencyDeployer" );
+      deployer.setStage(DeploymentStages.POST_PARSE);
+      deployer.setInputs( "org.jboss.deployers.vfs.plugins.dependency.DeploymentDependencies" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.deployment.EarClassLoaderDeployer" );
+      deployer.setStage(DeploymentStages.POST_PARSE);
+      deployer.setInputs( "org.jboss.metadata.ear.jboss.JBossAppMetaData" );
+      deployer.setOutputs( "org.jboss.classloading.spi.metadata.ClassLoadingMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.deployment.EjbClassLoaderDeployer" );
+      deployer.setStage(DeploymentStages.POST_PARSE);
+      deployer.setInputs( "org.jboss.metadata.ejb.jboss.JBossMetaData" );
+      deployer.setOutputs( "org.jboss.classloading.spi.metadata.ClassLoadingMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.deployment.LegacyWebXmlLessDeployer" );
+      deployer.setStage(DeploymentStages.POST_PARSE);
+      deployer.setInputs( "org.jboss.metadata.web.spec.WebMetaData", "org.jboss.metadata.web.jboss.JBossWebMetaData" );
+      deployer.setOutputs( "org.jboss.metadata.web.jboss.JBossWebMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.resource.deployers.ManagedConnectionFactoryClassLoaderDeployer" );
+      deployer.setStage(DeploymentStages.POST_PARSE);
+      deployer.setInputs( "org.jboss.resource.metadata.mcf.ManagedConnectionFactoryDeploymentGroup" );
+      deployer.setOutputs( "org.jboss.classloading.spi.metadata.ClassLoadingMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.system.deployers.ServiceClassLoaderDeployer" );
+      deployer.setStage(DeploymentStages.POST_PARSE);
+      deployer.setInputs( "org.jboss.system.metadata.ServiceDeployment" );
+      deployer.setOutputs( "org.jboss.classloading.spi.metadata.ClassLoadingMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.web.tomcat.service.deployers.ClusteringDefaultsDeployer" );
+      deployer.setStage(DeploymentStages.POST_PARSE);
+      deployer.setInputs( "org.jboss.metadata.web.jboss.JBossWebMetaData" );
+      deployer.setOutputs( "org.jboss.metadata.web.jboss.JBossWebMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.web.tomcat.service.deployers.WarClassLoaderDeployer" );
+      deployer.setStage(DeploymentStages.POST_PARSE);
+      deployer.setInputs( "org.jboss.classloading.spi.metadata.ClassLoadingMetaData", "org.jboss.metadata.web.jboss.JBossWebMetaData" );
+      deployer.setOutputs( "org.jboss.classloading.spi.metadata.ClassLoadingMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.weld.integration.deployer.metadata.PostJBossMetadataDeployer" );
+      deployer.setStage(DeploymentStages.POST_PARSE);
+      deployer.setInputs( "org.jboss.metadata.ejb.jboss.JBossMetaData", "org.jboss.classloading.spi.metadata.ClassLoadingMetaData" );
+      deployer.setOutputs( "org.jboss.classloading.spi.metadata.ClassLoadingMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.weld.integration.deployer.metadata.PostJBossWebMetadataDeployer" );
+      deployer.setStage(DeploymentStages.POST_PARSE);
+      deployer.setInputs( "org.jboss.classloading.spi.metadata.ClassLoadingMetaData", "org.jboss.metadata.web.jboss.JBossWebMetaData" );
+      deployer.setOutputs( "org.jboss.classloading.spi.metadata.ClassLoadingMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.weld.integration.deployer.metadata.WeldFilesDeployer" );
+      deployer.setStage(DeploymentStages.POST_PARSE);
+      deployer.setInputs( "org.jboss.weld.integration.deployer.ext.JBossWeldMetaData" );
+      deployer.setOutputs( "WELD_FILES", "WELD_CLASSPATH" );
+      addDeployer(main, deployer);
+
+      // PRE_DESCRIBE
+
+      deployer = new TestDeployerAdapter( "org.jboss.deployers.plugins.classloading.ClassLoadingDefaultDeployer" );
+      deployer.setStage(DeploymentStages.PRE_DESCRIBE);
+      deployer.setInputs( "org.jboss.classloading.spi.metadata.ClassLoadingMetaData" );
+      deployer.setOutputs( "org.jboss.classloading.spi.metadata.ClassLoadingMetaData" );
+      addDeployer(main, deployer);
+
+      // DESCRIBE
+
+      deployer = new TestDeployerAdapter( "org.jboss.deployers.vfs.plugins.classloader.InMemoryClassesDeployer" );
+      deployer.setStage(DeploymentStages.DESCRIBE);
+      deployer.setOutputs( "org.jboss.classloading.spi.metadata.ClassLoadingMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.seam.integration.microcontainer.deployers.SeamWebUrlIntegrationDeployer" );
+      deployer.setStage(DeploymentStages.DESCRIBE);
+      deployer.setInputs( "org.jboss.metadata.web.jboss.JBossWebMetaData" );
+      deployer.setOutputs( "org.jboss.classloading.spi.metadata.ClassLoadingMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.weld.integration.deployer.cl.WeldFacesIntegrationDeployer" );
+      deployer.setStage(DeploymentStages.DESCRIBE);
+      deployer.setInputs( "WELD_FILES" );
+      deployer.setOutputs( "org.jboss.classloading.spi.metadata.ClassLoadingMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.deployers.vfs.plugins.classloader.VFSClassLoaderClassPathDeployer" );
+      deployer.setStage(DeploymentStages.DESCRIBE);
+      deployer.setInputs( "org.jboss.classloading.spi.metadata.ClassLoadingMetaData" );
+      deployer.setOutputs( "org.jboss.classloading.spi.metadata.ClassLoadingMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.deployers.vfs.plugins.classloader.VFSClassLoaderDescribeDeployer" );
+      deployer.setStage(DeploymentStages.DESCRIBE);
+      deployer.setInputs( "org.jboss.classloading.spi.metadata.ClassLoadingMetaData" );
+      deployer.setOutputs( "org.jboss.classloading.spi.dependency.Module" );
+      addDeployer(main, deployer);
+
+      // CLASSLOADER
+
+      deployer = new TestDeployerAdapter( "org.jboss.deployers.plugins.classloading.AbstractLevelClassLoaderSystemDeployer" );
+      deployer.setStage(DeploymentStages.CLASSLOADER);
+      deployer.setInputs( "org.jboss.deployers.structure.spi.ClassLoaderFactory" );
+      deployer.setOutputs( "java.lang.ClassLoader" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.aop.asintegration.jboss5.AOPClassLoaderDeployer" );
+      deployer.setStage(DeploymentStages.CLASSLOADER);
+      deployer.setInputs( "java.lang.ClassLoader" );
+      addDeployer(main, deployer);
+
+      // POST_CLASSLOADER
+
+      deployer = new TestDeployerAdapter( "org.jboss.aop.asintegration.jboss5.AOPDeploymentAopMetaDataDeployer" );
+      deployer.setStage(DeploymentStages.POST_CLASSLOADER);
+      deployer.setInputs( "org.jboss.aop.microcontainer.beans.metadata.AOPDeployment" );
+      deployer.setOutputs( "org.jboss.aop.asintegration.jboss5.AopMetaDataDeployerOutput" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.aop.asintegration.jboss5.BeansDeploymentAopMetaDataDeployer" );
+      deployer.setStage(DeploymentStages.POST_CLASSLOADER);
+      deployer.setInputs( "org.jboss.kernel.spi.deployment.KernelDeployment" );
+      deployer.setOutputs( "org.jboss.aop.asintegration.jboss5.AopMetaDataDeployerOutput" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.deployment.EarLibExcludeDeployer" );
+      deployer.setStage(DeploymentStages.POST_CLASSLOADER);
+      deployer.setInputs( "org.jboss.metadata.ear.jboss.JBossAppMetaData" );
+      deployer.setOutputs( "org.jboss.classloading.spi.visitor.ResourceFilter.recurse" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.deployers.vfs.plugins.annotations.FilteredAnnotationEnvironmentDeployer" );
+      deployer.setStage(DeploymentStages.POST_CLASSLOADER);
+      deployer.setInputs( "org.jboss.deployers.spi.annotations.ScanningMetaData", "org.jboss.classloading.spi.visitor.ResourceFilter.resource", "org.jboss.classloading.spi.dependency.Module", "org.jboss.classloading.spi.visitor.ResourceFilter.recurse" );
+      deployer.setOutputs( "org.jboss.deployers.spi.annotations.AnnotationEnvironment" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.deployment.EarSecurityDeployer" );
+      deployer.setStage(DeploymentStages.POST_CLASSLOADER);
+      deployer.setInputs( "org.jboss.metadata.ear.jboss.JBossAppMetaData" );
+      deployer.setOutputs( "jboss.jacc", "org.jboss.system.metadata.ServiceMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.deployment.OptAnnotationMetaDataDeployer" );
+      deployer.setStage(DeploymentStages.POST_CLASSLOADER);
+      deployer.setInputs( "org.jboss.metadata.web.spec.WebMetaData", "org.jboss.metadata.client.spec.ApplicationClientMetaData", "org.jboss.deployers.spi.annotations.AnnotationEnvironment", "org.jboss.metadata.ejb.spec.EjbJarMetaData" );
+      deployer.setOutputs( "annotated.org.jboss.metadata.web.spec.WebMetaData", "annotated.org.jboss.metadata.ejb.spec.EjbJarMetaData", "annotated.org.jboss.metadata.client.spec.ApplicationClientMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.ejb.deployers.MergedJBossMetaDataDeployer" );
+      deployer.setStage(DeploymentStages.POST_CLASSLOADER);
+      deployer.setInputs( "annotated.org.jboss.metadata.ejb.spec.EjbJarMetaData", "org.jboss.metadata.ejb.jboss.JBossMetaData", "org.jboss.metadata.ejb.spec.EjbJarMetaData" );
+      deployer.setOutputs( "merged.org.jboss.metadata.ejb.jboss.JBossMetaData", "org.jboss.metadata.ejb.jboss.JBossMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.ejb3.deployers.MergedJBossClientMetaDataDeployer" );
+      deployer.setStage(DeploymentStages.POST_CLASSLOADER);
+      deployer.setInputs( "org.jboss.metadata.client.jboss.JBossClientMetaData", "annotated.org.jboss.metadata.client.spec.ApplicationClientMetaData", "org.jboss.metadata.client.spec.ApplicationClientMetaData" );
+      deployer.setOutputs( "org.jboss.metadata.client.jboss.JBossClientMetaData", "merged.org.jboss.metadata.client.jboss.JBossClientMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.ha.framework.server.deployers.Ejb2HAPartitionDependencyDeployer" );
+      deployer.setStage(DeploymentStages.POST_CLASSLOADER);
+      deployer.setInputs( "merged.org.jboss.metadata.ejb.jboss.JBossMetaData" );
+      deployer.setOutputs( "merged.org.jboss.metadata.ejb.jboss.JBossMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.ha.framework.server.deployers.Ejb3HAPartitionDependencyDeployer" );
+      deployer.setStage(DeploymentStages.POST_CLASSLOADER);
+      deployer.setInputs( "merged.org.jboss.metadata.ejb.jboss.JBossMetaData" );
+      deployer.setOutputs( "merged.org.jboss.metadata.ejb.jboss.JBossMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.ejb.deployers.StandardJBossMetaDataDeployer" );
+      deployer.setStage(DeploymentStages.POST_CLASSLOADER);
+      deployer.setInputs( "standardjboss.xml", "merged.org.jboss.metadata.ejb.jboss.JBossMetaData", "org.jboss.metadata.ejb.jboss.JBossMetaData" );
+      deployer.setOutputs( "raw.org.jboss.metadata.ejb.jboss.JBossMetaData", "org.jboss.metadata.ejb.jboss.JBossMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.ejb3.deployers.Ejb3MetadataProcessingDeployer" );
+      deployer.setStage(DeploymentStages.POST_CLASSLOADER);
+      deployer.setInputs( "merged.org.jboss.metadata.ejb.jboss.JBossMetaData" );
+      deployer.setOutputs( "processed.org.jboss.metadata.ejb.jboss.JBossMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.ejb3.deployers.EjbMetadataJndiPolicyDecoratorDeployer" );
+      deployer.setStage(DeploymentStages.POST_CLASSLOADER);
+      deployer.setInputs( "processed.org.jboss.metadata.ejb.jboss.JBossMetaData" );
+      deployer.setOutputs( "EjbMetadataJndiPolicyDecoratorDeployer" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.weld.integration.deployer.metadata.PostWebMetadataDeployer" );
+      deployer.setStage(DeploymentStages.POST_CLASSLOADER);
+      deployer.setInputs( "merged.org.jboss.metadata.web.jboss.JBossWebMetaData", "WELD_FILES", "org.jboss.metadata.web.jboss.JBossWebMetaData" );
+      deployer.setOutputs( "org.jboss.metadata.web.jboss.JBossWebMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.weld.integration.deployer.metadata.WeldEjbInterceptorMetadataDeployer" );
+      deployer.setStage(DeploymentStages.POST_CLASSLOADER);
+      deployer.setInputs( "WELD_FILES", "merged.org.jboss.metadata.ejb.jboss.JBossMetaData", "org.jboss.metadata.ejb.jboss.JBossMetaData" );
+      deployer.setOutputs( "org.jboss.metadata.ejb.jboss.JBossMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.ejb.deployers.EjbSecurityDeployer" );
+      deployer.setStage(DeploymentStages.POST_CLASSLOADER);
+      deployer.setInputs( "merged.org.jboss.metadata.ejb.jboss.JBossMetaData", "org.jboss.metadata.ejb.jboss.JBossMetaData" );
+      deployer.setOutputs( "jboss.jacc", "org.jboss.system.metadata.ServiceMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.web.deployers.WarAnnotationMetaDataDeployer" );
+      deployer.setStage(DeploymentStages.POST_CLASSLOADER);
+      deployer.setInputs( "org.jboss.metadata.web.spec.WebMetaData" );
+      deployer.setOutputs( "annotated.org.jboss.metadata.web.spec.WebMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.web.deployers.MergedJBossWebMetaDataDeployer" );
+      deployer.setStage(DeploymentStages.POST_CLASSLOADER);
+      deployer.setInputs( "annotated.org.jboss.metadata.web.spec.WebMetaData", "org.jboss.metadata.web.spec.WebMetaData", "org.jboss.metadata.web.jboss.JBossWebMetaData" );
+      deployer.setOutputs( "overlays.org.jboss.metadata.web.spec.WebMetaData", "org.jboss.metadata.web.jboss.JBossWebMetaData", "order.org.jboss.metadata.web.spec.WebMetaData", "localscis.org.jboss.metadata.web.spec.WebMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.deployment.MappedReferenceMetaDataResolverDeployer" );
+      deployer.setStage(DeploymentStages.POST_CLASSLOADER);
+      deployer.setInputs( "org.jboss.metadata.client.jboss.JBossClientMetaData", "org.jboss.metadata.ejb.jboss.JBossMetaData", "org.jboss.metadata.web.jboss.JBossWebMetaData" );
+      deployer.setOutputs( "org.jboss.deployment.spi.DeploymentEndpointResolver" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.web.deployers.ServletContainerInitializerDeployer" );
+      deployer.setStage(DeploymentStages.POST_CLASSLOADER);
+      deployer.setInputs( "org.jboss.metadata.web.jboss.JBossWebMetaData", "order.org.jboss.metadata.web.spec.WebMetaData", "localscis.org.jboss.metadata.web.spec.WebMetaData" );
+      deployer.setOutputs( "sci.org.jboss.metadata.web.spec.WebMetaData", "sci.handlestypes.org.jboss.metadata.web.spec.WebMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.web.deployers.WarSecurityDeployer" );
+      deployer.setStage(DeploymentStages.POST_CLASSLOADER);
+      deployer.setInputs( "org.jboss.metadata.web.jboss.JBossWebMetaData" );
+      deployer.setOutputs( "jboss.jacc", "org.jboss.system.metadata.ServiceMetaData" );
+      addDeployer(main, deployer);
+
+      // PRE_REAL
+
+      deployer = new TestDeployerAdapter( "org.jboss.beanvalidation.deployers.ValidatorFactoryDeployer" );
+      deployer.setStage(DeploymentStages.PRE_REAL);
+      deployer.setOutputs( "javax.validation.ValidatorFactory" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.ejb3.deployers.Ejb3DependenciesDeployer" );
+      deployer.setStage(DeploymentStages.PRE_REAL);
+      deployer.setInputs( "org.jboss.metadata.ejb.jboss.JBossMetaData" );
+      deployer.setOutputs( "org.jboss.deployers.vfs.plugins.dependency.DependenciesMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.system.server.profileservice.persistence.deployer.ProfileServicePersistenceDeployer" );
+      deployer.setStage(DeploymentStages.PRE_REAL);
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.weld.integration.deployer.env.EjbServicesDeployer" );
+      deployer.setStage(DeploymentStages.PRE_REAL);
+      deployer.setInputs( "WELD_FILES", "org.jboss.weld.integration.deployer.env.BootstrapInfo" );
+      deployer.setOutputs( "BootstrapInfoEJB_SERVICES", "org.jboss.weld.integration.deployer.env.BootstrapInfo" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.weld.integration.deployer.env.WeldDiscoveryDeployer" );
+      deployer.setStage(DeploymentStages.PRE_REAL);
+      deployer.setInputs( "org.jboss.weld.integration.deployer.ext.JBossWeldMetaData", "WELD_FILES", "WELD_CLASSPATH" );
+      deployer.setOutputs( "org.jboss.weld.integration.deployer.env.WeldDiscoveryEnvironment" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.weld.integration.deployer.env.FlatDeploymentDeployer" );
+      deployer.setStage(DeploymentStages.PRE_REAL);
+      deployer.setInputs( "WELD_FILES", "org.jboss.weld.integration.deployer.env.BootstrapInfo", "org.jboss.weld.integration.deployer.env.WeldDiscoveryEnvironment", "BootstrapInfoEJB_SERVICES" );
+      deployer.setOutputs( "org.jboss.beans.metadata.spi.BeanMetaData", "org.jboss.weld.integration.deployer.env.BootstrapInfo", "BootstrapInfoDEPLOYMENT" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.weld.integration.deployer.env.WeldBootstrapDeployer" );
+      deployer.setStage(DeploymentStages.PRE_REAL);
+      deployer.setInputs( "javax.validation.ValidatorFactory", "WELD_FILES", "org.jboss.weld.integration.deployer.env.BootstrapInfo" );
+      deployer.setOutputs( "org.jboss.beans.metadata.spi.BeanMetaData" );
+      addDeployer(main, deployer);
+
+      // REAL
+
+      deployer = new TestDeployerAdapter( "org.jboss.deployers.vfs.deployer.kernel.BeanMetaDataFactoryDeployer" );
+      deployer.setStage(DeploymentStages.REAL);
+      deployer.setInputs( "org.jboss.threads.metadata.ThreadsMetaData" );
+      deployer.setOutputs( "org.jboss.beans.metadata.spi.BeanMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.deployers.vfs.deployer.kernel.BeanMetaDataFactoryDeployer" );
+      deployer.setStage(DeploymentStages.REAL);
+      deployer.setInputs( "org.jboss.logging.metadata.LoggingMetaData" );
+      deployer.setOutputs( "org.jboss.beans.metadata.spi.BeanMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.deployers.vfs.deployer.kernel.BeanMetaDataFactoryDeployer" );
+      deployer.setStage(DeploymentStages.REAL);
+      deployer.setInputs( "org.jboss.xnio.metadata.XnioMetaData" );
+      deployer.setOutputs( "org.jboss.beans.metadata.spi.BeanMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.ejb.deployers.CreateDestinationDeployer" );
+      deployer.setStage(DeploymentStages.REAL);
+      deployer.setInputs( "org.jboss.metadata.ejb.jboss.JBossMetaData" );
+      deployer.setOutputs( "org.jboss.metadata.ejb.jboss.JBossMetaData", "org.jboss.system.metadata.ServiceMetaData", "org.jboss.kernel.spi.deployment.KernelDeployment" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.ejb.deployers.EjbDeployer" );
+      deployer.setStage(DeploymentStages.REAL);
+      deployer.setInputs( "org.jboss.metadata.ejb.jboss.JBossMetaData" );
+      deployer.setOutputs( "org.jboss.ejb.deployers.EjbDeployment", "org.jboss.system.metadata.ServiceMetaData", "org.jboss.kernel.spi.deployment.KernelDeployment" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.ejb3.deployers.Ejb3ClientDeployer" );
+      deployer.setStage(DeploymentStages.REAL);
+      deployer.setInputs( "org.jboss.metadata.client.jboss.JBossClientMetaData" );
+      deployer.setOutputs( "org.jboss.ejb3.clientmodule.ClientENCInjectionContainer", "org.jboss.kernel.spi.deployment.KernelDeployment" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.ejb3.deployers.Ejb3Deployer" );
+      deployer.setStage(DeploymentStages.REAL);
+      deployer.setInputs( "org.jboss.metadata.ejb.jboss.JBossMetaData", "processed.org.jboss.metadata.ejb.jboss.JBossMetaData" );
+      deployer.setOutputs( "org.jboss.ejb3.Ejb3Deployment", "org.jboss.kernel.spi.deployment.KernelDeployment" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.deployers.vfs.deployer.kernel.AliasDeploymentDeployer" );
+      deployer.setStage(DeploymentStages.REAL);
+      deployer.setInputs( "org.jboss.kernel.spi.deployment.KernelDeployment", "org.jboss.beans.metadata.spi.NamedAliasMetaData" );
+      deployer.setOutputs( "org.jboss.beans.metadata.spi.NamedAliasMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.ejb3.endpoint.deployers.EJB3EndpointDeployer" );
+      deployer.setStage(DeploymentStages.REAL);
+      deployer.setInputs( "org.jboss.metadata.ejb.jboss.JBossMetaData" );
+      deployer.setOutputs( "org.jboss.beans.metadata.spi.BeanMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.ejb3.metrics.deployer.Ejb3MetricsDeployer" );
+      deployer.setStage(DeploymentStages.REAL);
+      deployer.setInputs( "org.jboss.ejb3.Ejb3Deployment" );
+      deployer.setOutputs( "org.jboss.ejb3.metrics.deployer.Ejb3MetricsDeployer" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.hibernate.deployers.HibernateDeployer" );
+      deployer.setStage(DeploymentStages.REAL);
+      deployer.setInputs( "org.jboss.hibernate.deployers.metadata.HibernateMetaData" );
+      deployer.setOutputs( "org.jboss.beans.metadata.spi.BeanMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.jpa.deployers.PersistenceDeployer" );
+      deployer.setStage(DeploymentStages.REAL);
+      deployer.setInputs( "org.jboss.metadata.jpa.spec.PersistenceMetaData" );
+      deployer.setOutputs( "org.jboss.metadata.jpa.spec.PersistenceUnitMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.jpa.deployers.PersistenceUnitDeployer" );
+      deployer.setStage(DeploymentStages.REAL);
+      deployer.setInputs( "org.jboss.metadata.jpa.spec.PersistenceUnitMetaData" );
+      deployer.setOutputs( "org.jboss.beans.metadata.spi.BeanMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.deployers.vfs.deployer.kernel.KernelDeploymentDeployer" );
+      deployer.setStage(DeploymentStages.REAL);
+      deployer.setInputs( "org.jboss.beans.metadata.spi.BeanMetaData", "org.jboss.kernel.spi.deployment.KernelDeployment" );
+      deployer.setOutputs( "org.jboss.beans.metadata.spi.BeanMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.deployers.vfs.deployer.kernel.BeanMetaDataDeployer" );
+      deployer.setStage(DeploymentStages.REAL);
+      deployer.setInputs( "org.jboss.beans.metadata.spi.BeanMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.deployers.vfs.deployer.kernel.DeploymentAliasMetaDataDeployer" );
+      deployer.setStage(DeploymentStages.REAL);
+      deployer.setInputs( "org.jboss.beans.metadata.spi.BeanMetaData", "org.jboss.beans.metadata.spi.NamedAliasMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.management.j2ee.deployers.EarModuleJSR77Deployer" );
+      deployer.setStage(DeploymentStages.REAL);
+      deployer.setInputs( "org.jboss.metadata.ear.jboss.JBossAppMetaData" );
+      deployer.setOutputs( "javax.management.ObjectName" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.management.j2ee.deployers.EjbModuleJSR77Deployer" );
+      deployer.setStage(DeploymentStages.REAL);
+      deployer.setInputs( "org.jboss.metadata.ejb.jboss.JBossMetaData" );
+      deployer.setOutputs( "javax.management.ObjectName" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.management.j2ee.deployers.JCAResourceJSR77Deployer" );
+      deployer.setStage(DeploymentStages.REAL);
+      deployer.setInputs( "org.jboss.resource.metadata.mcf.ManagedConnectionFactoryDeploymentGroup" );
+      deployer.setOutputs( "javax.management.ObjectName" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.management.j2ee.deployers.RarModuleJSR77Deployer" );
+      deployer.setStage(DeploymentStages.REAL);
+      deployer.setInputs( "org.jboss.resource.metadata.RARDeploymentMetaData" );
+      deployer.setOutputs( "javax.management.ObjectName" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.resource.deployers.ManagedConnectionFactoryDeployer" );
+      deployer.setStage(DeploymentStages.REAL);
+      deployer.setInputs( "org.jboss.resource.metadata.mcf.ManagedConnectionFactoryDeploymentGroup" );
+      deployer.setOutputs( "org.jboss.system.metadata.ServiceDeployment" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.management.j2ee.deployers.ServiceModuleJSR77Deployer" );
+      deployer.setStage(DeploymentStages.REAL);
+      deployer.setInputs( "org.jboss.system.metadata.ServiceDeployment" );
+      deployer.setOutputs( "javax.management.ObjectName" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.resource.deployers.RARDeployer" );
+      deployer.setStage(DeploymentStages.REAL);
+      deployer.setInputs( "org.jboss.resource.metadata.RARDeploymentMetaData" );
+      deployer.setOutputs( "org.jboss.system.metadata.ServiceMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.varia.deployment.LegacyBeanShellScriptDeployer" );
+      deployer.setStage(DeploymentStages.REAL);
+      deployer.setInputs( "org.jboss.varia.deployment.BeanShellScript" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.webservices.integration.deployers.WSEJBAdapterDeployer" );
+      deployer.setStage(DeploymentStages.REAL);
+      deployer.setInputs( "org.jboss.ejb3.Ejb3Deployment", "merged.org.jboss.metadata.ejb.jboss.JBossMetaData", "org.jboss.ejb.deployers.EjbDeployment", "org.jboss.wsf.spi.metadata.webservices.WebservicesMetaData" );
+      deployer.setOutputs( "org.jboss.wsf.spi.deployment.integration.WebServiceDeployment" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.webservices.integration.deployers.WSTypeDeployer" );
+      deployer.setStage(DeploymentStages.REAL);
+      deployer.setInputs( "org.jboss.wsf.spi.deployment.integration.WebServiceDeployment", "org.jboss.wsf.spi.metadata.webservices.WebservicesMetaData", "org.jboss.metadata.web.jboss.JBossWebMetaData" );
+      deployer.setOutputs( "org.jboss.metadata.web.jboss.JBossWebMetaData", "org.jboss.wsf.spi.deployment.Deployment$DeploymentType" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.webservices.integration.deployers.WSDeploymentDeployer" );
+      deployer.setStage(DeploymentStages.REAL);
+      deployer.setInputs( "org.jboss.metadata.web.jboss.JBossWebMetaData", "org.jboss.wsf.spi.deployment.Deployment$DeploymentType" );
+      deployer.setOutputs( "org.jboss.wsf.spi.deployment.Deployment", "org.jboss.metadata.web.jboss.JBossWebMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.webservices.integration.deployers.WSDeploymentAspectDeployer" );
+      deployer.setStage(DeploymentStages.REAL);
+      deployer.setInputs( "org.jboss.wsf.spi.deployment.Deployment", "org.jboss.metadata.web.jboss.JBossWebMetaData" );
+      deployer.setOutputs( "jbossws.EndpointMetrics", "org.jboss.metadata.web.jboss.JBossWebMetaData", "jbossws.metadata" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.webservices.integration.deployers.WSDeploymentAspectDeployer" );
+      deployer.setStage(DeploymentStages.REAL);
+      deployer.setInputs( "org.jboss.wsf.spi.deployment.Deployment", "org.jboss.metadata.web.jboss.JBossWebMetaData" );
+      deployer.setOutputs( "jbossws.VFSRoot", "jbossws.ContainerMetaData", "org.jboss.metadata.web.jboss.JBossWebMetaData", "jbossws.metadata" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.webservices.integration.deployers.WSDeploymentAspectDeployer" );
+      deployer.setStage(DeploymentStages.REAL);
+      deployer.setInputs( "org.jboss.wsf.spi.deployment.Deployment", "jbossws.ContainerMetaData", "org.jboss.metadata.web.jboss.JBossWebMetaData" );
+      deployer.setOutputs( "org.jboss.metadata.web.jboss.JBossWebMetaData", "jbossws.metadata", "jbossws.VirtualHosts" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.webservices.integration.deployers.WSDeploymentAspectDeployer" );
+      deployer.setStage(DeploymentStages.REAL);
+      deployer.setInputs( "org.jboss.wsf.spi.deployment.Deployment", "jbossws.ContainerMetaData", "org.jboss.metadata.web.jboss.JBossWebMetaData" );
+      deployer.setOutputs( "jbossws.ContextRoot", "org.jboss.metadata.web.jboss.JBossWebMetaData", "jbossws.metadata" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.webservices.integration.deployers.WSDeploymentAspectDeployer" );
+      deployer.setStage(DeploymentStages.REAL);
+      deployer.setInputs( "jbossws.ContextRoot", "org.jboss.wsf.spi.deployment.Deployment", "jbossws.ContainerMetaData", "org.jboss.metadata.web.jboss.JBossWebMetaData" );
+      deployer.setOutputs( "jbossws.URLPattern", "org.jboss.metadata.web.jboss.JBossWebMetaData", "jbossws.metadata" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.webservices.integration.deployers.WSDeploymentAspectDeployer" );
+      deployer.setStage(DeploymentStages.REAL);
+      deployer.setInputs( "jbossws.URLPattern", "org.jboss.wsf.spi.deployment.Deployment", "org.jboss.metadata.web.jboss.JBossWebMetaData" );
+      deployer.setOutputs( "org.jboss.metadata.web.jboss.JBossWebMetaData", "jbossws.EndpointAddress", "jbossws.metadata" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.webservices.integration.deployers.WSDeploymentAspectDeployer" );
+      deployer.setStage(DeploymentStages.REAL);
+      deployer.setInputs( "jbossws.URLPattern", "org.jboss.wsf.spi.deployment.Deployment", "org.jboss.metadata.web.jboss.JBossWebMetaData" );
+      deployer.setOutputs( "jbossws.EndpointName", "org.jboss.metadata.web.jboss.JBossWebMetaData", "jbossws.metadata" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.webservices.integration.deployers.WSDeploymentAspectDeployer" );
+      deployer.setStage(DeploymentStages.REAL);
+      deployer.setInputs( "jbossws.EndpointName", "org.jboss.wsf.spi.deployment.Deployment", "org.jboss.metadata.web.jboss.JBossWebMetaData" );
+      deployer.setOutputs( "jbossws.RegisteredEndpoint", "org.jboss.metadata.web.jboss.JBossWebMetaData", "jbossws.metadata" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.webservices.integration.deployers.WSDeploymentAspectDeployer" );
+      deployer.setStage(DeploymentStages.REAL);
+      deployer.setInputs( "jbossws.URLPattern", "org.jboss.wsf.spi.deployment.Deployment", "org.jboss.metadata.web.jboss.JBossWebMetaData", "jbossws.VirtualHosts" );
+      deployer.setOutputs( "jbossws.WebMetaData", "org.jboss.metadata.web.jboss.JBossWebMetaData", "jbossws.metadata" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.webservices.integration.deployers.WSDeploymentAspectDeployer" );
+      deployer.setStage(DeploymentStages.REAL);
+      deployer.setInputs( "org.jboss.wsf.spi.deployment.Deployment", "jbossws.ContainerMetaData", "org.jboss.metadata.web.jboss.JBossWebMetaData" );
+      deployer.setOutputs( "jbossws.StackEndpointHandler", "org.jboss.metadata.web.jboss.JBossWebMetaData", "jbossws.metadata" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.webservices.integration.deployers.WSDeploymentAspectDeployer" );
+      deployer.setStage(DeploymentStages.REAL);
+      deployer.setInputs( "org.jboss.wsf.spi.deployment.Deployment", "org.jboss.metadata.web.jboss.JBossWebMetaData" );
+      deployer.setOutputs( "jbossws.JAXBIntros", "org.jboss.metadata.web.jboss.JBossWebMetaData", "jbossws.metadata" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.webservices.integration.deployers.WSDeploymentAspectDeployer" );
+      deployer.setStage(DeploymentStages.REAL);
+      deployer.setInputs( "jbossws.JAXBIntros", "jbossws.VFSRoot", "jbossws.URLPattern", "org.jboss.wsf.spi.deployment.Deployment", "jbossws.ContainerMetaData", "org.jboss.metadata.web.jboss.JBossWebMetaData" );
+      deployer.setOutputs( "jbossws.UnifiedMetaDataModel", "org.jboss.metadata.web.jboss.JBossWebMetaData", "jbossws.metadata" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.webservices.integration.deployers.WSDeploymentAspectDeployer" );
+      deployer.setStage(DeploymentStages.REAL);
+      deployer.setInputs( "jbossws.UnifiedMetaDataModel", "org.jboss.wsf.spi.deployment.Deployment", "org.jboss.metadata.web.jboss.JBossWebMetaData" );
+      deployer.setOutputs( "org.jboss.metadata.web.jboss.JBossWebMetaData", "jbossws.metadata" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.webservices.integration.deployers.WSDeploymentAspectDeployer" );
+      deployer.setStage(DeploymentStages.REAL);
+      deployer.setInputs( "jbossws.JAXBIntros", "jbossws.UnifiedMetaDataModel", "org.jboss.wsf.spi.deployment.Deployment", "org.jboss.metadata.web.jboss.JBossWebMetaData" );
+      deployer.setOutputs( "jbossws.PublishedContract", "org.jboss.metadata.web.jboss.JBossWebMetaData", "jbossws.metadata" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.webservices.integration.deployers.WSDeploymentAspectDeployer" );
+      deployer.setStage(DeploymentStages.REAL);
+      deployer.setInputs( "jbossws.UnifiedMetaDataModel", "org.jboss.wsf.spi.deployment.Deployment", "org.jboss.metadata.web.jboss.JBossWebMetaData" );
+      deployer.setOutputs( "jbossws.InitializedMetaDataModel", "org.jboss.metadata.web.jboss.JBossWebMetaData", "jbossws.metadata" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.webservices.integration.deployers.WSDeploymentAspectDeployer" );
+      deployer.setStage(DeploymentStages.REAL);
+      deployer.setInputs( "jbossws.UnifiedMetaDataModel", "org.jboss.wsf.spi.deployment.Deployment", "org.jboss.metadata.web.jboss.JBossWebMetaData" );
+      deployer.setOutputs( "org.jboss.metadata.web.jboss.JBossWebMetaData", "jbossws.metadata" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.webservices.integration.deployers.WSDeploymentAspectDeployer" );
+      deployer.setStage(DeploymentStages.REAL);
+      deployer.setInputs( "jbossws.StackEndpointHandler", "jbossws.UnifiedMetaDataModel", "org.jboss.wsf.spi.deployment.Deployment", "org.jboss.metadata.web.jboss.JBossWebMetaData" );
+      deployer.setOutputs( "org.jboss.metadata.web.jboss.JBossWebMetaData", "jbossws.metadata" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.webservices.integration.deployers.WSDeploymentAspectDeployer" );
+      deployer.setStage(DeploymentStages.REAL);
+      deployer.setInputs( "org.jboss.wsf.spi.deployment.Deployment", "org.jboss.metadata.web.jboss.JBossWebMetaData" );
+      deployer.setOutputs( "jbossws.StackDescriptor", "org.jboss.metadata.web.jboss.JBossWebMetaData", "jbossws.ContextProperties", "jbossws.metadata" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.webservices.integration.deployers.WSDeploymentAspectDeployer" );
+      deployer.setStage(DeploymentStages.REAL);
+      deployer.setInputs( "jbossws.WebMetaData", "org.jboss.wsf.spi.deployment.Deployment", "jbossws.StackDescriptor", "org.jboss.metadata.web.jboss.JBossWebMetaData", "jbossws.ContextProperties" );
+      deployer.setOutputs( "jbossws.WebMetaData", "org.jboss.metadata.web.jboss.JBossWebMetaData", "jbossws.metadata" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.webservices.integration.deployers.WSDeploymentAspectDeployer" );
+      deployer.setStage(DeploymentStages.REAL);
+      deployer.setInputs( "jbossws.WebMetaData", "org.jboss.wsf.spi.deployment.Deployment", "org.jboss.metadata.web.jboss.JBossWebMetaData" );
+      deployer.setOutputs( "jbossws.JACCPermisions", "org.jboss.metadata.web.jboss.JBossWebMetaData", "jbossws.metadata" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.webservices.integration.deployers.WSDeploymentAspectDeployer" );
+      deployer.setStage(DeploymentStages.REAL);
+      deployer.setInputs( "jbossws.WebMetaData", "org.jboss.wsf.spi.deployment.Deployment", "org.jboss.metadata.web.jboss.JBossWebMetaData" );
+      deployer.setOutputs( "jbossws.InjectionMetaData", "org.jboss.metadata.web.jboss.JBossWebMetaData", "jbossws.metadata" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.webservices.integration.deployers.WSDeploymentAspectDeployer" );
+      deployer.setStage(DeploymentStages.REAL);
+      deployer.setInputs( "jbossws.RegisteredEndpoint", "org.jboss.wsf.spi.deployment.Deployment", "org.jboss.metadata.web.jboss.JBossWebMetaData" );
+      deployer.setOutputs( "jbossws.EndpointRecordProcessors", "org.jboss.metadata.web.jboss.JBossWebMetaData", "jbossws.metadata" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.webservices.integration.deployers.WSDeploymentAspectDeployer" );
+      deployer.setStage(DeploymentStages.REAL);
+      deployer.setInputs( "org.jboss.wsf.spi.deployment.Deployment", "org.jboss.metadata.web.jboss.JBossWebMetaData", "jbossws.metadata" );
+      deployer.setOutputs( "jbossws.LifecycleHandler", "org.jboss.metadata.web.jboss.JBossWebMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.management.j2ee.deployers.WebModuleJSR77Deployer" );
+      deployer.setStage(DeploymentStages.REAL);
+      deployer.setInputs( "org.jboss.metadata.web.jboss.JBossWebMetaData" );
+      deployer.setOutputs( "javax.management.ObjectName" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.web.tomcat.service.deployers.TomcatDeployer" );
+      deployer.setStage(DeploymentStages.REAL);
+      deployer.setInputs( "org.jboss.metadata.web.jboss.JBossWebMetaData" );
+      deployer.setOutputs( "org.jboss.web.deployers.WarDeployment", "org.jboss.system.metadata.ServiceMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.system.deployers.ServiceDeploymentDeployer" );
+      deployer.setStage(DeploymentStages.REAL);
+      deployer.setInputs( "org.jboss.system.metadata.ServiceDeployment", "org.jboss.system.metadata.ServiceMetaData" );
+      deployer.setOutputs( "org.jboss.system.metadata.ServiceMetaData" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.management.j2ee.deployers.JMSResourceJSR77Deployer" );
+      deployer.setStage(DeploymentStages.REAL);
+      deployer.setInputs( "org.jboss.system.metadata.ServiceMetaData" );
+      deployer.setOutputs( "javax.management.ObjectName" );
+      addDeployer(main, deployer);
+
+      deployer = new TestDeployerAdapter( "org.jboss.system.deployers.ServiceDeployer" );
+      deployer.setStage(DeploymentStages.REAL);
+      deployer.setInputs( "org.jboss.system.metadata.ServiceMetaData" );
+      addDeployer(main, deployer);
+
+      long end = System.currentTimeMillis();
+      System.out.println("---------------------------------------------------------");
+      System.out.println( "Domino sorting took: " + (end - start) + " milliseconds" );
+      System.out.println("---------------------------------------------------------");
+   }
+   
 }

Copied: projects/jboss-deployers/branches/vfs3/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/test/DeployerRequiredInputsUnitTestCase.java (from rev 98000, projects/jboss-deployers/trunk/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/test/DeployerRequiredInputsUnitTestCase.java)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/test/DeployerRequiredInputsUnitTestCase.java	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/test/DeployerRequiredInputsUnitTestCase.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,97 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2009, Red Hat Middleware LLC, and individual contributors
+* by the @authors tag. See the copyright.txt 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.deployer.test;
+
+import java.util.Calendar;
+import java.util.Collections;
+import java.util.Set;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.jboss.deployers.client.spi.DeployerClient;
+import org.jboss.deployers.client.spi.Deployment;
+import org.jboss.deployers.spi.attachments.MutableAttachments;
+import org.jboss.deployers.spi.deployer.DeploymentStage;
+import org.jboss.deployers.spi.deployer.DeploymentStages;
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.test.deployers.AbstractDeployerTest;
+import org.jboss.test.deployers.deployer.support.TestSimpleDeployer;
+
+/**
+ * DeployerRequiredInputsUnitTestCase.
+ *
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
+ */
+public class DeployerRequiredInputsUnitTestCase extends AbstractDeployerTest
+{
+   public static Test suite()
+   {
+      return new TestSuite(DeployerRequiredInputsUnitTestCase.class);
+   }
+
+   public DeployerRequiredInputsUnitTestCase(String name)
+   {
+      super(name);
+   }
+
+   public void testRequiredState() throws Exception
+   {
+      TestSimpleDeployer missing = new TestSimpleDeployer();
+      missing.addRequiredInput(Calendar.class); // I guess no calendar is present :-)
+      assertTrue(missing.getInputs().contains(Calendar.class.getName()));
+
+      TestSimpleDeployer all = new TestSimpleDeployer();
+      all.addRequiredInput(DeploymentStage.class.getName());
+      assertTrue(all.getInputs().contains(DeploymentStage.class.getName()));
+
+      TestSimpleDeployer empty = new TestSimpleDeployer();
+
+      DeployerClient main = createMainDeployer(missing, all, empty);
+
+      String name = "simple";
+      Deployment deployment = createSimpleDeployment(name);
+
+      MutableAttachments attachments = (MutableAttachments) deployment.getPredeterminedManagedObjects();
+      attachments.addAttachment(DeploymentStage.class, DeploymentStages.DESCRIBE);
+
+      Set<String> singleton;
+      main.deploy(deployment);
+      try
+      {
+         DeploymentUnit unit = getDeploymentUnit(main, name);
+         singleton = Collections.singleton(unit.getName());
+
+         assertEmpty(missing.getDeployedUnits());
+         assertEquals(singleton, all.getDeployedUnits());
+         assertEquals(singleton, empty.getDeployedUnits());
+      }
+      finally
+      {
+         main.undeploy(deployment);
+      }
+
+      assertEmpty(missing.getUndeployedUnits());
+      assertEquals(singleton, all.getUndeployedUnits());
+      assertEquals(singleton, empty.getUndeployedUnits());        
+   }
+}
\ No newline at end of file

Modified: projects/jboss-deployers/branches/vfs3/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/test/DeployerRequiredStageUnitTestCase.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/test/DeployerRequiredStageUnitTestCase.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-impl/src/test/java/org/jboss/test/deployers/deployer/test/DeployerRequiredStageUnitTestCase.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -62,15 +62,22 @@
       Deployment deployment = createSimpleDeployment(name);
       MutableAttachments attachments = (MutableAttachments) deployment.getPredeterminedManagedObjects();
       attachments.addAttachment(DeploymentStage.class, DeploymentStages.DESCRIBE);
+
       main.deploy(deployment);
+      try
+      {
+         DeploymentUnit unit = getDeploymentUnit(main, name);
 
-      DeploymentUnit unit = getDeploymentUnit(main, name);
-      
-      assertEquals(DeploymentStages.DESCRIBE, unit.getRequiredStage());
-      assertEquals(DeploymentStages.DESCRIBE, main.getDeploymentStage(name));
-      
-      main.change(name, DeploymentStages.INSTALLED);
-      assertEquals(DeploymentStages.INSTALLED, unit.getRequiredStage());
-      assertEquals(DeploymentStages.INSTALLED, main.getDeploymentStage(name));
+         assertEquals(DeploymentStages.DESCRIBE, unit.getRequiredStage());
+         assertEquals(DeploymentStages.DESCRIBE, main.getDeploymentStage(name));
+
+         main.change(name, DeploymentStages.INSTALLED);
+         assertEquals(DeploymentStages.INSTALLED, unit.getRequiredStage());
+         assertEquals(DeploymentStages.INSTALLED, main.getDeploymentStage(name));
+      }
+      finally
+      {
+         main.undeploy(deployment);
+      }
    }
 }

Modified: projects/jboss-deployers/branches/vfs3/deployers-jmx/src/main/java/org/jboss/system/deployers/ServiceDeployer.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-jmx/src/main/java/org/jboss/system/deployers/ServiceDeployer.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-jmx/src/main/java/org/jboss/system/deployers/ServiceDeployer.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -24,9 +24,12 @@
 import javax.management.ObjectName;
 
 import org.jboss.classloading.spi.RealClassLoader;
+import org.jboss.dependency.spi.Controller;
+import org.jboss.dependency.spi.ControllerContext;
 import org.jboss.deployers.spi.DeploymentException;
 import org.jboss.deployers.spi.deployer.helpers.AbstractSimpleRealDeployer;
 import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.kernel.Kernel;
 import org.jboss.mx.util.ObjectNameFactory;
 import org.jboss.system.ServiceContext;
 import org.jboss.system.ServiceController;
@@ -112,6 +115,10 @@
             remove(name);
             throw t;
          }
+
+         ControllerContext serviceContext = getControllerContext(name);
+         if (serviceContext != null)
+            putContext(serviceContext, unit.getParent()); // we're component, use parent
       }
       catch (Throwable t)
       {
@@ -120,6 +127,20 @@
    }
 
    /**
+    * Get service's controller context.
+    *
+    * @param name the service's object name
+    * @return the context
+    */
+   protected ControllerContext getControllerContext(ObjectName name)
+   {
+      Kernel kernel = controller.getKernel();
+      Controller controller = kernel.getController();
+      String canonicalName = name.getCanonicalName(); // too impl detail?
+      return controller.getContext(canonicalName, null);
+   }
+
+   /**
     * Find first RealClassLoader instance
     * and return its ObjectName.
     * If none is found return defaultClassloader.
@@ -144,6 +165,11 @@
    public void undeploy(DeploymentUnit unit, ServiceMetaData deployment)
    {
       ObjectName name = deployment.getObjectName();
+
+      ControllerContext serviceContext = getControllerContext(name);
+      if (serviceContext != null)
+         removeContext(serviceContext, unit.getParent());
+
       ServiceContext context = controller.getServiceContext(name);
       if (context != null)
       {

Copied: projects/jboss-deployers/branches/vfs3/deployers-jmx/src/test/java/org/jboss/test/system/deployers/support/SMDParsingDeployer.java (from rev 98000, projects/jboss-deployers/trunk/deployers-jmx/src/test/java/org/jboss/test/system/deployers/support/SMDParsingDeployer.java)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-jmx/src/test/java/org/jboss/test/system/deployers/support/SMDParsingDeployer.java	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-jmx/src/test/java/org/jboss/test/system/deployers/support/SMDParsingDeployer.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,73 @@
+/*
+ * 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.system.deployers.support;
+
+import java.util.Collections;
+import java.util.Set;
+
+import org.jboss.deployers.spi.deployer.helpers.AbstractParsingDeployerWithOutput;
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.system.metadata.ServiceDeployment;
+import org.jboss.system.metadata.ServiceMetaData;
+
+/**
+ * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
+ */
+public class SMDParsingDeployer extends AbstractParsingDeployerWithOutput<ServiceDeployment>
+{
+   private ServiceMetaData smd;
+
+   public SMDParsingDeployer(ServiceMetaData smd)
+   {
+      super(ServiceDeployment.class);
+      this.smd = smd;
+   }
+
+   protected ServiceDeployment getServiceDeployment() throws Exception
+   {
+      ServiceDeployment serviceDeployment = new ServiceDeployment();
+      serviceDeployment.setServices(Collections.singletonList(smd));
+      return serviceDeployment;
+   }
+
+   @Override
+   protected ServiceDeployment parse(DeploymentUnit arg0, Set<String> arg1, ServiceDeployment arg2) throws Exception
+   {
+      return getServiceDeployment();
+   }
+
+   @Override
+   protected ServiceDeployment parse(DeploymentUnit arg0, Set<String> arg1, String arg2, ServiceDeployment arg3) throws Exception
+   {
+      return getServiceDeployment();
+   }
+
+   protected ServiceDeployment parse(DeploymentUnit deploymentUnit, String s, ServiceDeployment deployment) throws Exception
+   {
+      return getServiceDeployment();
+   }
+
+   protected ServiceDeployment parse(DeploymentUnit deploymentUnit, String s, String s1, ServiceDeployment deployment) throws Exception
+   {
+      return getServiceDeployment();
+   }
+}

Copied: projects/jboss-deployers/branches/vfs3/deployers-jmx/src/test/java/org/jboss/test/system/deployers/test/AbstractServiceTest.java (from rev 98000, projects/jboss-deployers/trunk/deployers-jmx/src/test/java/org/jboss/test/system/deployers/test/AbstractServiceTest.java)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-jmx/src/test/java/org/jboss/test/system/deployers/test/AbstractServiceTest.java	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-jmx/src/test/java/org/jboss/test/system/deployers/test/AbstractServiceTest.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,225 @@
+/*
+ * 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.system.deployers.test;
+
+import java.lang.reflect.Method;
+
+import javax.management.MBeanServer;
+import javax.management.MBeanServerFactory;
+import javax.management.ObjectName;
+
+import org.jboss.dependency.spi.Controller;
+import org.jboss.deployers.client.spi.Deployment;
+import org.jboss.deployers.plugins.deployers.DeployersImpl;
+import org.jboss.deployers.plugins.main.MainDeployerImpl;
+import org.jboss.deployers.spi.deployer.Deployer;
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.deployers.structure.spi.StructuralDeployers;
+import org.jboss.deployers.structure.spi.DeploymentRegistry;
+import org.jboss.kernel.Kernel;
+import org.jboss.kernel.plugins.bootstrap.basic.BasicBootstrap;
+import org.jboss.mx.server.ServerConstants;
+import org.jboss.mx.util.MBeanServerLocator;
+import org.jboss.system.ServiceController;
+import org.jboss.system.deployers.ServiceDeployer;
+import org.jboss.system.deployers.ServiceDeploymentDeployer;
+import org.jboss.system.metadata.ServiceMetaData;
+import org.jboss.test.AbstractSystemTest;
+import org.jboss.test.AbstractTestDelegate;
+import org.jboss.test.system.deployers.support.CLDeployer;
+import org.jboss.test.system.deployers.support.JmxCL;
+import org.jboss.test.system.deployers.support.SMDParsingDeployer;
+
+/**
+ * Abstract service/jmx test.
+ *
+ * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
+ */
+public abstract class AbstractServiceTest extends AbstractSystemTest
+{
+   protected Controller controller;
+   protected ServiceController serviceController;
+   protected MainDeployerImpl main;
+
+   protected AbstractServiceTest(String name)
+   {
+      super(name);
+   }
+
+   @Override
+   protected void setUp() throws Exception
+   {
+      super.setUp();
+
+      MBeanServer mbeanServer = createMBeanServer();
+      try
+      {
+         BasicBootstrap bootstrap = new BasicBootstrap();
+         bootstrap.run();
+         Kernel kernel = bootstrap.getKernel();
+         controller = kernel.getController();
+
+         serviceController = new ServiceController();
+         ObjectName objectName = new ObjectName("jboss.system:service=ServiceController");
+         serviceController.setKernel(kernel);
+         serviceController.setMBeanServer(mbeanServer);
+         mbeanServer.registerMBean(serviceController, objectName);
+
+         ClassLoader loader = Thread.currentThread().getContextClassLoader();
+         ObjectName clON = new ObjectName("jboss:service=defaultClassLoader");
+         mbeanServer.registerMBean(new JmxCL(loader), clON);
+
+         MainDeployerImpl mainDeployer = new MainDeployerImpl();
+         DeployersImpl deployersImpl = new DeployersImpl(controller);
+         mainDeployer.setDeployers(deployersImpl);
+
+         // default deployers
+         ServiceDeployer serviceDeployer = new ServiceDeployer(serviceController);
+         serviceDeployer.setDeploymentRegistry(getRegistry());
+         deployersImpl.addDeployer(serviceDeployer);
+         deployersImpl.addDeployer(new ServiceDeploymentDeployer());
+         deployersImpl.addDeployer(new CLDeployer());
+
+         main = mainDeployer;
+      }
+      catch (Exception e)
+      {
+         cleanup(mbeanServer);
+
+         super.tearDown();
+
+         throw e;
+      }
+   }
+
+   protected DeploymentRegistry getRegistry()
+   {
+      return null;
+   }
+
+   private void cleanup(MBeanServer mbeanServer)
+   {
+      try
+      {
+         ObjectName objectName = new ObjectName("jboss.system:service=ServiceController");
+         mbeanServer.unregisterMBean(objectName);
+
+         ObjectName clON = new ObjectName("jboss:service=defaultClassLoader");
+         mbeanServer.unregisterMBean(clON);
+      }
+      catch (Exception ignored)
+      {
+      }
+      finally
+      {
+         controller = null;
+         serviceController = null;
+         main = null;
+
+         MBeanServerLocator.setJBoss(null);
+         if (MBeanServerFactory.findMBeanServer("JBoss").isEmpty() == false)
+            MBeanServerFactory.releaseMBeanServer(mbeanServer);
+      }
+   }
+
+   @Override
+   protected void tearDown() throws Exception
+   {
+      try
+      {
+         MBeanServer mbeanServer = MBeanServerLocator.locateJBoss();
+
+         cleanup(mbeanServer);
+      }
+      finally
+      {
+         super.tearDown();
+      }
+   }
+
+   protected void setStructureDeployer(StructuralDeployers deployers)
+   {
+      main.setStructuralDeployers(deployers);
+   }
+
+   protected void addDeployers(Deployer... deployers)
+   {
+      if (deployers != null)
+      {
+         DeployersImpl dc = (DeployersImpl)main.getDeployers();
+         for (Deployer deployer : deployers)
+            dc.addDeployer(deployer);
+      }
+   }
+
+   protected DeploymentUnit deploy(Deployment deployment) throws Exception
+   {
+      main.addDeployment(deployment);
+      main.process();
+      main.checkComplete();
+      return main.getDeploymentUnit(deployment.getName());
+   }
+
+   protected void undeploy(Deployment deployment) throws Exception
+   {
+      main.removeDeployment(deployment);
+      main.process();
+      main.checkComplete();
+   }
+
+   protected void addServiceMetaData(ServiceMetaData smd)
+   {
+      SMDParsingDeployer deployer = new SMDParsingDeployer(smd);
+      addDeployers(deployer);
+   }
+
+   private MBeanServer createMBeanServer() throws Exception
+   {
+      MBeanServer server;
+
+      String builder = System.getProperty(ServerConstants.MBEAN_SERVER_BUILDER_CLASS_PROPERTY, ServerConstants.DEFAULT_MBEAN_SERVER_BUILDER_CLASS);
+      System.setProperty(ServerConstants.MBEAN_SERVER_BUILDER_CLASS_PROPERTY, builder);
+
+      ClassLoader cl = Thread.currentThread().getContextClassLoader();
+      Class<?> clazz = cl.loadClass("java.lang.management.ManagementFactory");
+      Method method = clazz.getMethod("getPlatformMBeanServer");
+      Object[] args = null;
+      server = (MBeanServer)method.invoke(null, args);
+      // Tell the MBeanServerLocator to point to this mbeanServer
+      MBeanServerLocator.setJBoss(server);
+      return server;
+   }
+
+   /**
+    * Default setup with security manager enabled
+    *
+    * @param clazz the class
+    * @return the delegate
+    * @throws Exception for any error
+    */
+   public static AbstractTestDelegate getDelegate(Class<?> clazz) throws Exception
+   {
+      AbstractTestDelegate delegate = new AbstractTestDelegate(clazz);
+      delegate.enableSecurity = false; // security
+      return delegate;
+   }
+}
\ No newline at end of file

Modified: projects/jboss-deployers/branches/vfs3/deployers-jmx/src/test/java/org/jboss/test/system/deployers/test/DeployersTestSuite.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-jmx/src/test/java/org/jboss/test/system/deployers/test/DeployersTestSuite.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-jmx/src/test/java/org/jboss/test/system/deployers/test/DeployersTestSuite.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -42,6 +42,7 @@
       TestSuite suite = new TestSuite("Deployers Tests");
 
        suite.addTest(ServiceUnitNameTestCase.suite());
+       suite.addTest(ServiceDeploymentRegistryTestCase.suite());
 
       return suite;
    }

Copied: projects/jboss-deployers/branches/vfs3/deployers-jmx/src/test/java/org/jboss/test/system/deployers/test/ServiceDeploymentRegistryTestCase.java (from rev 98000, projects/jboss-deployers/trunk/deployers-jmx/src/test/java/org/jboss/test/system/deployers/test/ServiceDeploymentRegistryTestCase.java)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-jmx/src/test/java/org/jboss/test/system/deployers/test/ServiceDeploymentRegistryTestCase.java	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-jmx/src/test/java/org/jboss/test/system/deployers/test/ServiceDeploymentRegistryTestCase.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,104 @@
+/*
+ * 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.system.deployers.test;
+
+import java.util.Collections;
+
+import javax.management.ObjectName;
+
+import junit.framework.Test;
+
+import org.jboss.dependency.spi.ControllerContext;
+import org.jboss.deployers.client.plugins.deployment.AbstractDeployment;
+import org.jboss.deployers.client.spi.Deployment;
+import org.jboss.deployers.spi.DeploymentException;
+import org.jboss.deployers.structure.spi.DeploymentContext;
+import org.jboss.deployers.structure.spi.DeploymentRegistry;
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.deployers.structure.spi.StructuralDeployers;
+import org.jboss.deployers.structure.spi.helpers.AbstractDeploymentContext;
+import org.jboss.deployers.structure.spi.helpers.AbstractDeploymentRegistry;
+import org.jboss.system.metadata.ServiceConstructorMetaData;
+import org.jboss.system.metadata.ServiceMetaData;
+import org.jboss.test.system.deployers.support.Tester;
+
+/**
+ * Test component name usage.
+ *
+ * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
+ */
+public class ServiceDeploymentRegistryTestCase extends AbstractServiceTest
+{
+   private DeploymentRegistry registry = new AbstractDeploymentRegistry();
+
+   public ServiceDeploymentRegistryTestCase(String name)
+   {
+      super(name);
+   }
+
+   public static Test suite()
+   {
+      return suite(ServiceDeploymentRegistryTestCase.class);
+   }
+
+   @Override
+   protected DeploymentRegistry getRegistry()
+   {
+      return registry;
+   }
+
+   public void testDeploymentRegistry() throws Exception
+   {
+      ServiceMetaData metaData = new ServiceMetaData();
+      ObjectName objectName = new ObjectName("jboss.system:service=Tester");
+      metaData.setObjectName(objectName);
+      metaData.setCode(Tester.class.getName());
+      metaData.setConstructor(new ServiceConstructorMetaData());
+      addServiceMetaData(metaData);
+
+      setStructureDeployer(new StructuralDeployers()
+      {
+         public DeploymentContext determineStructure(Deployment deployment) throws DeploymentException
+         {
+            return new AbstractDeploymentContext("SMD", "");
+         }
+      });
+
+      ControllerContext context = null;
+      Deployment deployment = new AbstractDeployment("SMD");
+      DeploymentUnit unit = deploy(deployment);
+      try
+      {
+         context = controller.getInstalledContext(objectName.getCanonicalName());
+         assertNotNull(context);
+         assertSame(unit, registry.getDeployment(context));
+         assertEquals(Collections.singleton(context), registry.getContexts(unit));
+      }
+      finally
+      {
+         undeploy(deployment);
+
+         assertNull(registry.getDeployment(context));
+         assertEmpty(registry.getContexts(unit));
+      }
+   }
+}
\ No newline at end of file

Modified: projects/jboss-deployers/branches/vfs3/deployers-jmx/src/test/java/org/jboss/test/system/deployers/test/ServiceUnitNameTestCase.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-jmx/src/test/java/org/jboss/test/system/deployers/test/ServiceUnitNameTestCase.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-jmx/src/test/java/org/jboss/test/system/deployers/test/ServiceUnitNameTestCase.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -21,42 +21,22 @@
  */
 package org.jboss.test.system.deployers.test;
 
-import java.lang.reflect.Method;
 import java.util.Collections;
-import java.util.Set;
 
-import javax.management.MBeanServer;
-import javax.management.MBeanServerFactory;
 import javax.management.ObjectName;
 
 import junit.framework.Test;
 
-import org.jboss.dependency.plugins.AbstractController;
 import org.jboss.deployers.client.plugins.deployment.AbstractDeployment;
 import org.jboss.deployers.client.spi.Deployment;
 import org.jboss.deployers.client.spi.IncompleteDeploymentException;
-import org.jboss.deployers.plugins.deployers.DeployersImpl;
-import org.jboss.deployers.plugins.main.MainDeployerImpl;
 import org.jboss.deployers.spi.DeploymentException;
-import org.jboss.deployers.spi.deployer.helpers.AbstractParsingDeployerWithOutput;
 import org.jboss.deployers.structure.spi.DeploymentContext;
-import org.jboss.deployers.structure.spi.DeploymentUnit;
 import org.jboss.deployers.structure.spi.StructuralDeployers;
 import org.jboss.deployers.structure.spi.helpers.AbstractDeploymentContext;
-import org.jboss.kernel.Kernel;
-import org.jboss.kernel.plugins.bootstrap.basic.BasicBootstrap;
-import org.jboss.mx.server.ServerConstants;
-import org.jboss.mx.util.MBeanServerLocator;
-import org.jboss.system.ServiceController;
-import org.jboss.system.deployers.ServiceDeployer;
-import org.jboss.system.deployers.ServiceDeploymentDeployer;
 import org.jboss.system.metadata.ServiceConstructorMetaData;
 import org.jboss.system.metadata.ServiceDependencyMetaData;
-import org.jboss.system.metadata.ServiceDeployment;
 import org.jboss.system.metadata.ServiceMetaData;
-import org.jboss.test.AbstractSystemTest;
-import org.jboss.test.system.deployers.support.CLDeployer;
-import org.jboss.test.system.deployers.support.JmxCL;
 import org.jboss.test.system.deployers.support.Tester;
 
 /**
@@ -64,7 +44,7 @@
  *
  * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
  */
-public class ServiceUnitNameTestCase extends AbstractSystemTest
+public class ServiceUnitNameTestCase extends AbstractServiceTest
 {
    public ServiceUnitNameTestCase(String name)
    {
@@ -78,129 +58,36 @@
 
    public void testServiceDeployerComponentName() throws Exception
    {
-      SecurityManager sm = suspendSecurity();
-      try
+      ServiceMetaData metaData = new ServiceMetaData();
+      metaData.setObjectName(new ObjectName("jboss.system:service=Tester"));
+      metaData.setCode(Tester.class.getName());
+      metaData.setConstructor(new ServiceConstructorMetaData());
+      ServiceDependencyMetaData o = new ServiceDependencyMetaData();
+      o.setIDependOn("somenonexistant");
+      metaData.setDependencies(Collections.singletonList(o));
+      addServiceMetaData(metaData);
+
+      setStructureDeployer(new StructuralDeployers()
       {
-         MBeanServer mbeanServer = createMBeanServer("jboss");
-         try
+         public DeploymentContext determineStructure(Deployment deployment) throws DeploymentException
          {
-            ServiceController serviceController = new ServiceController();
-            ObjectName objectName = new ObjectName("jboss.system:service=ServiceController");
-            mbeanServer.registerMBean(serviceController, objectName);
-            try
-            {
-               ClassLoader loader = Thread.currentThread().getContextClassLoader();
-               mbeanServer.registerMBean(new JmxCL(loader), new ObjectName("jboss:service=defaultClassLoader"));
-
-               BasicBootstrap bootstrap = new BasicBootstrap();
-               bootstrap.run();
-               Kernel kernel = bootstrap.getKernel();
-               AbstractController controller = (AbstractController)kernel.getController();
-
-               serviceController.setMBeanServer(mbeanServer);
-               serviceController.setKernel(kernel);
-
-               MainDeployerImpl mainDeployer = new MainDeployerImpl();
-               mainDeployer.setStructuralDeployers(new StructuralDeployers()
-               {
-                  public DeploymentContext determineStructure(Deployment deployment) throws DeploymentException
-                  {
-                     return new AbstractDeploymentContext("SMD", "");
-                  }
-               });
-               DeployersImpl deployersImpl = new DeployersImpl(controller);
-               deployersImpl.addDeployer(new ServiceDeployer(serviceController));
-               deployersImpl.addDeployer(new ServiceDeploymentDeployer());
-               deployersImpl.addDeployer(new CLDeployer());
-               deployersImpl.addDeployer(new SMDParsingDeployer());
-               mainDeployer.setDeployers(deployersImpl);
-
-               Deployment deployment = new AbstractDeployment("SMD");
-               mainDeployer.addDeployment(deployment);
-               mainDeployer.process();
-
-               mainDeployer.checkComplete(deployment);
-               fail("Should not be here");
-            }
-            catch (Exception e)
-            {
-               assertInstanceOf(e, IncompleteDeploymentException.class);               
-            }
-            finally
-            {
-               mbeanServer.unregisterMBean(objectName);
-            }
+            return new AbstractDeploymentContext("SMD", "");
          }
-         finally
-         {
-            MBeanServerFactory.releaseMBeanServer(mbeanServer);
-         }
-      }
-      finally
-      {
-         resumeSecurity(sm);
-      }
-   }
+      });
 
-   private class SMDParsingDeployer extends AbstractParsingDeployerWithOutput<ServiceDeployment>
-   {
-      public SMDParsingDeployer()
+      Deployment deployment = new AbstractDeployment("SMD");
+      try
       {
-         super(ServiceDeployment.class);
+         deploy(deployment);
+         fail("Should not be here");
       }
-
-      protected ServiceDeployment getServiceDeployment() throws Exception
+      catch (Exception e)
       {
-         ServiceMetaData metaData = new ServiceMetaData();
-         metaData.setObjectName(new ObjectName("jboss.system:service=Tester"));
-         metaData.setCode(Tester.class.getName());
-         metaData.setConstructor(new ServiceConstructorMetaData());
-         ServiceDependencyMetaData o = new ServiceDependencyMetaData();
-         o.setIDependOn("somenonexistant");
-         metaData.setDependencies(Collections.singletonList(o));
-
-         ServiceDeployment serviceDeployment = new ServiceDeployment();
-         serviceDeployment.setServices(Collections.singletonList(metaData));
-         return serviceDeployment;
+         assertInstanceOf(e, IncompleteDeploymentException.class);
       }
-
-      @Override
-      protected ServiceDeployment parse(DeploymentUnit arg0, Set<String> arg1, ServiceDeployment arg2) throws Exception
+      finally
       {
-         return getServiceDeployment();
+         undeploy(deployment);
       }
-
-      @Override
-      protected ServiceDeployment parse(DeploymentUnit arg0, Set<String> arg1, String arg2, ServiceDeployment arg3) throws Exception
-      {
-         return getServiceDeployment();
-      }
-
-      protected ServiceDeployment parse(DeploymentUnit deploymentUnit, String s, ServiceDeployment deployment) throws Exception
-      {
-         return getServiceDeployment();
-      }
-
-      protected ServiceDeployment parse(DeploymentUnit deploymentUnit, String s, String s1, ServiceDeployment deployment) throws Exception
-      {
-         return getServiceDeployment();
-      }
    }
-
-   private MBeanServer createMBeanServer(String domain) throws Exception
-   {
-      MBeanServer server;
-
-      String builder = System.getProperty(ServerConstants.MBEAN_SERVER_BUILDER_CLASS_PROPERTY, ServerConstants.DEFAULT_MBEAN_SERVER_BUILDER_CLASS);
-      System.setProperty(ServerConstants.MBEAN_SERVER_BUILDER_CLASS_PROPERTY, builder);
-
-      ClassLoader cl = Thread.currentThread().getContextClassLoader();
-      Class<?> clazz = cl.loadClass("java.lang.management.ManagementFactory");
-      Method method = clazz.getMethod("getPlatformMBeanServer");
-      Object[] args = null;
-      server = (MBeanServer)method.invoke(null, args);
-      // Tell the MBeanServerLocator to point to this mbeanServer
-      MBeanServerLocator.setJBoss(server);
-      return server;
-   }
 }

Modified: projects/jboss-deployers/branches/vfs3/deployers-spi/pom.xml
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-spi/pom.xml	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-spi/pom.xml	2009-12-21 16:03:14 UTC (rev 98088)
@@ -17,5 +17,39 @@
       <groupId>org.jboss.deployers</groupId>
       <artifactId>jboss-deployers-structure-spi</artifactId>
     </dependency>
-  </dependencies>  
+    <dependency>
+      <groupId>org.jboss.mcann</groupId>
+      <artifactId>mcann-core</artifactId>
+      <exclusions>
+        <exclusion>
+          <groupId>org.jboss.vfs</groupId>
+          <artifactId>jboss-vfs</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.jboss</groupId>
+          <artifactId>jboss-reflect</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.jboss.man</groupId>
+          <artifactId>jboss-managed</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.jboss.man</groupId>
+          <artifactId>jboss-metatype</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.jboss.microcontainer</groupId>
+          <artifactId>jboss-kernel</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.jboss.kernel</groupId>
+          <artifactId>jboss-kernel</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.jboss.cl</groupId>
+          <artifactId>jboss-classloading</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+  </dependencies>
 </project>
\ No newline at end of file

Deleted: projects/jboss-deployers/branches/vfs3/deployers-spi/src/main/java/org/jboss/deployers/spi/annotations/AnnotationEnvironment.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-spi/src/main/java/org/jboss/deployers/spi/annotations/AnnotationEnvironment.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-spi/src/main/java/org/jboss/deployers/spi/annotations/AnnotationEnvironment.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1,160 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source
-* Copyright 2006, JBoss Inc., and individual contributors as indicated
-* by the @authors tag. See the copyright.txt 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.deployers.spi.annotations;
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.AnnotatedElement;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.util.Set;
-
-/**
- * Information holder about annotation processing.
- *
- * Implementations should delay the actual class loading
- * until it's absolutely necessary.
- *
- * All methods that have annotation name as parameter
- * will use unit's classloader to load the actual annotation class.
- *
- * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
- */
-public interface AnnotationEnvironment
-{
-   /**
-    * Does this annotation environment contain a class
-    * which is annotated with annotation parameter.
-    * This only applies to annotations for ElementType.TYPE level.
-    *
-    * This method should be used if we have no intention
-    * to do real lookup of annotated classes, but we're
-    * only interested in existance of the annotation.
-    * e.g. deployment unit contains @Stateful EJBs
-    *
-    * @param annotation the annotation we're querying for
-    * @return true if there exists a class with annotation param
-    * @see #hasClassAnnotatedWith(Class annotation)
-    */
-   boolean hasClassAnnotatedWith(Class<? extends Annotation> annotation);
-
-   /**
-    * Does this annotation environment contain a class
-    * which is annotated with annotation parameter.
-    * This only applies to annotations for ElementType.TYPE level.
-    *
-    * This method should be used if we have no intention
-    * to do real lookup of annotated classes, but we're
-    * only interested in existance of the annotation.
-    * e.g. deployment unit contains @Stateful EJBs
-    *
-    * @param annotationName the annotation name we're querying for
-    * @return true if there exists a class with annotation param
-    * @see #hasClassAnnotatedWith(Class annotation)
-    */
-   boolean hasClassAnnotatedWith(String annotationName);
-
-   /**
-    * Get all classes annotated with annotation param.
-    *
-    * @param <A> the annotation type
-    * @param annotation the annotation we're querying for
-    * @return set of matching classes
-    */
-   <A extends Annotation> Set<Element<A, Class<?>>> classIsAnnotatedWith(Class<A> annotation);
-
-   /**
-    * Get all classes annotated with annotation param.
-    *
-    * @param annotationName the annotation name we're querying for
-    * @return set of matching classes
-    */
-   Set<Element<Annotation, Class<?>>> classIsAnnotatedWith(String annotationName);
-
-   /**
-    * Get all classes who have some constructor annotated with annotation param.
-    *
-    * @param <A> the annotation type
-    * @param annotation the annotation we're querying for
-    * @return set of matching classes
-    */
-   <A extends Annotation> Set<Element<A, Constructor<?>>> classHasConstructorAnnotatedWith(Class<A> annotation);
-
-   /**
-    * Get all classes who have some constructor annotated with annotation param.
-    *
-    * @param annotationName the annotation name we're querying for
-    * @return set of matching classes
-    */
-   Set<Element<Annotation, Constructor<?>>> classHasConstructorAnnotatedWith(String annotationName);
-
-   /**
-    * Get all classes who have some field annotated with annotation param.
-    *
-    * @param <A> the annotation type
-    * @param annotation the annotation we're querying for
-    * @return set of matching classes
-    */
-   <A extends Annotation> Set<Element<A, Field>> classHasFieldAnnotatedWith(Class<A> annotation);
-
-   /**
-    * Get all classes who have some field annotated with annotation param.
-    *
-    * @param annotationName the annotation name we're querying for
-    * @return set of matching classes
-    */
-   Set<Element<Annotation, Field>> classHasFieldAnnotatedWith(String annotationName);
-
-   /**
-    * Get all classes who have some method annotated with annotation param.
-    *
-    * @param <A> the annotation type
-    * @param annotation the annotation we're querying for
-    * @return set of matching classes
-    */
-   <A extends Annotation> Set<Element<A, Method>> classHasMethodAnnotatedWith(Class<A> annotation);
-
-   /**
-    * Get all classes who have some method annotated with annotation param.
-    *
-    * @param annotationName the annotation name we're querying for
-    * @return set of matching classes
-    */
-   Set<Element<Annotation, Method>> classHasMethodAnnotatedWith(String annotationName);
-
-   /**
-    * Get all classes who have some method's/constructor's parameter annotated with annotation param.
-    *
-    * @param <A> the annotation type
-    * @param annotation the annotation we're querying for
-    * @return set of matching classes
-    */
-   <A extends Annotation> Set<Element<A, AnnotatedElement>> classHasParameterAnnotatedWith(Class<A> annotation);
-
-   /**
-    * Get all classes who have some method's/constructor's parameter annotated with annotation param.
-    *
-    * @param annotationName the annotation name we're querying for
-    * @return set of matching classes
-    */
-   Set<Element<Annotation, AnnotatedElement>> classHasParameterAnnotatedWith(String annotationName);
-}

Deleted: projects/jboss-deployers/branches/vfs3/deployers-spi/src/main/java/org/jboss/deployers/spi/annotations/Element.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-spi/src/main/java/org/jboss/deployers/spi/annotations/Element.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-spi/src/main/java/org/jboss/deployers/spi/annotations/Element.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1,65 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source
-* Copyright 2006, JBoss Inc., and individual contributors as indicated
-* by the @authors tag. See the copyright.txt 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.deployers.spi.annotations;
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.AnnotatedElement;
-
-/**
- * Annotation holder element.
- *
- * @param <A> exact annotation type
- * @param <M> exact annotated element type
- * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
- */
-public interface Element<A extends Annotation, M extends AnnotatedElement>
-{
-   /**
-    * Get the owner class name.
-    *
-    * Until we hit getOwner method the class should not be loaded.
-    *
-    * @return the owner classname
-    */
-   String getOwnerClassName();
-
-   /**
-    * Get the annotation owner class.
-    *
-    * @return the annotation owner class
-    */
-   Class<?> getOwner();
-
-   /**
-    * Get the annotation instance.
-    *
-    * @return the annotation instance
-    */
-   A getAnnotation();
-
-   /**
-    * Get the annotated element that holds the annotation.
-    *
-    * @return the annotated element instance
-    */
-   M getAnnotatedElement();
-}
\ No newline at end of file

Modified: projects/jboss-deployers/branches/vfs3/deployers-spi/src/main/java/org/jboss/deployers/spi/deployer/Deployer.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-spi/src/main/java/org/jboss/deployers/spi/deployer/Deployer.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-spi/src/main/java/org/jboss/deployers/spi/deployer/Deployer.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -64,14 +64,20 @@
    boolean isWantComponents();
    
    /**
-    * Whether we want all inputs
+    * Whether we want all inputs.
     *
     * @return true for all inputs
     */
    boolean isAllInputs();
    
    /**
-    * Get the input for this deployer
+    * Get the input for this deployer.
+    *
+    * Most deployers operate on a single attachment,
+    * if you need multiple inputs use required inputs.
+    *
+    * By default we require this input,
+    * if you wanna make this optional set all-inputs to true.
     * 
     * @return the input type
     */
@@ -85,13 +91,32 @@
    Class<?> getOutput();
    
    /**
-    * Get the input for this deployer
+    * Get the input for this deployer.
+    *
+    * This is set is mostly meant to help with
+    * natural order based on inputs/outputs.
+    *
+    * If you want to veto your deployer based on inputs,
+    * you should use required inputs.
+    *
+    * Every required input is of course also a plain input.
     * 
     * @return the inputs
     */
    Set<String> getInputs();
    
    /**
+    * Get the required input for this deployer.
+    *
+    * This represents a set of required inputs,
+    * if one of them is missing, we veto deployer as not relevant
+    * for that deployment, hence it doesn't participate in deployment lifecycle.
+    *
+    * @return the required inputs
+    */
+   Set<String> getRequiredInputs();
+
+   /**
     * Get the outputs for this deployer
     * 
     * @return the outputs

Modified: projects/jboss-deployers/branches/vfs3/deployers-spi/src/main/java/org/jboss/deployers/spi/deployer/Deployers.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-spi/src/main/java/org/jboss/deployers/spi/deployer/Deployers.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-spi/src/main/java/org/jboss/deployers/spi/deployer/Deployers.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -49,6 +49,8 @@
    
    /**
     * Process deployment
+    *
+    * Note: the undeploy list must be undeployed in reverse order.
     * 
     * @param deploy the deployments to deploy
     * @param undeploy the deployments to remove

Modified: projects/jboss-deployers/branches/vfs3/deployers-spi/src/main/java/org/jboss/deployers/spi/deployer/helpers/AbstractAllInputDeployer.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-spi/src/main/java/org/jboss/deployers/spi/deployer/helpers/AbstractAllInputDeployer.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-spi/src/main/java/org/jboss/deployers/spi/deployer/helpers/AbstractAllInputDeployer.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -113,14 +113,12 @@
     */
    public void addOptionalInput(String input)
    {
-      if (input == null)
-         throw new IllegalArgumentException("Null input");
+      addInput(input); // this already checks for null
 
       if (optionalInputs == null)
          optionalInputs = CollectionsFactory.createLazySet();
 
       optionalInputs.add(input);
-      addInput(input);
    }
 
    /**

Modified: projects/jboss-deployers/branches/vfs3/deployers-spi/src/main/java/org/jboss/deployers/spi/deployer/helpers/AbstractAnnotationDeployer.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-spi/src/main/java/org/jboss/deployers/spi/deployer/helpers/AbstractAnnotationDeployer.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-spi/src/main/java/org/jboss/deployers/spi/deployer/helpers/AbstractAnnotationDeployer.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -25,23 +25,23 @@
 import java.util.Set;
 
 import org.jboss.deployers.spi.DeploymentException;
-import org.jboss.deployers.spi.annotations.AnnotationEnvironment;
-import org.jboss.deployers.spi.annotations.Element;
 import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.mcann.AnnotationRepository;
+import org.jboss.mcann.Element;
 
 /**
  * AbstractComponentDeployer.
  *
  * @author <a href="ales.justin at jboss.com">Ales Justin</a>
  */
-public class AbstractAnnotationDeployer extends AbstractSimpleRealDeployer<AnnotationEnvironment>
+public class AbstractAnnotationDeployer extends AbstractSimpleRealDeployer<AnnotationRepository>
 {
    /** The annotation processors */
    private AnnotationProcessor<?, ?>[] processors;
 
    public AbstractAnnotationDeployer(AnnotationProcessor<?, ?>... processors)
    {
-      super(AnnotationEnvironment.class);
+      super(AnnotationRepository.class);
       if (processors != null && processors.length > 0)
       {
          this.processors = processors;
@@ -56,7 +56,7 @@
    }
 
    @SuppressWarnings("unchecked")
-   public void deploy(DeploymentUnit unit, AnnotationEnvironment deployment) throws DeploymentException
+   public void deploy(DeploymentUnit unit, AnnotationRepository deployment) throws DeploymentException
    {
       for (AnnotationProcessor processor : processors)
       {

Modified: projects/jboss-deployers/branches/vfs3/deployers-spi/src/main/java/org/jboss/deployers/spi/deployer/helpers/AbstractDeployer.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-spi/src/main/java/org/jboss/deployers/spi/deployer/helpers/AbstractDeployer.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-spi/src/main/java/org/jboss/deployers/spi/deployer/helpers/AbstractDeployer.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -68,6 +68,9 @@
    /** The input name */
    private Set<String> inputs;
    
+   /** The required input name */
+   private Set<String> requiredInputs;
+
    /** The output name */
    private Set<String> outputs;
 
@@ -212,7 +215,32 @@
       this.inputs = inputs;
    }
 
+   public Set<String> getRequiredInputs()
+   {
+      return requiredInputs;
+   }
+
    /**
+    * Set the required inputs.
+    *
+    * @param requiredInputs the required inputs .
+    */
+   public void setRequiredInputs(Set<String> requiredInputs)
+   {
+      if (requiredInputs != null)
+      {
+         for (String requiredInput : requiredInputs)
+         {
+            addRequiredInput(requiredInput);
+         }
+      }
+      else
+      {
+         this.requiredInputs = null;
+      }
+   }
+
+   /**
     * Set the inputs.
     * 
     * @param inputs the inputs.
@@ -287,6 +315,34 @@
       addInput(input.getName());
    }
    
+   /**
+    * Add a required input
+    *
+    * @param requiredInput the required input
+    */
+   public void addRequiredInput(String requiredInput)
+   {
+      addInput(requiredInput);
+
+      if (requiredInputs == null)
+         requiredInputs = new HashSet<String>();
+
+      requiredInputs.add(requiredInput);
+   }
+
+   /**
+    * Add a required input input
+    *
+    * @param requiredInput the required input
+    */
+   public void addRequiredInput(Class<?> requiredInput)
+   {
+      if (requiredInput == null)
+         throw new IllegalArgumentException("Null required input");
+
+      addRequiredInput(requiredInput.getName());
+   }
+
    public Set<String> getOutputs()
    {
       return outputs;

Modified: projects/jboss-deployers/branches/vfs3/deployers-spi/src/main/java/org/jboss/deployers/spi/deployer/helpers/AbstractParsingDeployerWithOutput.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-spi/src/main/java/org/jboss/deployers/spi/deployer/helpers/AbstractParsingDeployerWithOutput.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-spi/src/main/java/org/jboss/deployers/spi/deployer/helpers/AbstractParsingDeployerWithOutput.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -26,6 +26,7 @@
 
 import org.jboss.deployers.spi.DeploymentException;
 import org.jboss.deployers.spi.deployer.matchers.JarExtensionProvider;
+import org.jboss.deployers.spi.deployer.matchers.NameIgnoreMechanism;
 import org.jboss.deployers.structure.spi.DeploymentUnit;
 
 /**
@@ -37,8 +38,7 @@
  * @author Scott.Stark at jboss.org
  * @version $Revision: 1.1 $
  */
-public abstract class AbstractParsingDeployerWithOutput<T> extends AbstractParsingDeployer
-   implements JarExtensionProvider
+public abstract class AbstractParsingDeployerWithOutput<T> extends AbstractParsingDeployer implements JarExtensionProvider
 {
    /** The metadata file names */
    private Set<String> names;
@@ -371,6 +371,19 @@
    }
 
    /**
+    * Ignore name.
+    *
+    * @param unit the unit
+    * @param name the name
+    * @return true if we should ignore the name, false otherwise
+    */
+   protected boolean ignoreName(DeploymentUnit unit, String name)
+   {
+      NameIgnoreMechanism mechanism = unit.getAttachment(NameIgnoreMechanism.class);
+      return mechanism != null && mechanism.ignore(unit, name);
+   }
+
+   /**
     * Parse an exact file name
     * 
     * @param unit the unit

Modified: projects/jboss-deployers/branches/vfs3/deployers-spi/src/main/java/org/jboss/deployers/spi/deployer/helpers/AbstractRealDeployer.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-spi/src/main/java/org/jboss/deployers/spi/deployer/helpers/AbstractRealDeployer.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-spi/src/main/java/org/jboss/deployers/spi/deployer/helpers/AbstractRealDeployer.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -21,8 +21,10 @@
  */
 package org.jboss.deployers.spi.deployer.helpers;
 
+import org.jboss.dependency.spi.ControllerContext;
+import org.jboss.deployers.spi.DeploymentException;
 import org.jboss.deployers.spi.deployer.DeploymentStages;
-import org.jboss.deployers.spi.DeploymentException;
+import org.jboss.deployers.structure.spi.DeploymentRegistry;
 import org.jboss.deployers.structure.spi.DeploymentUnit;
 
 /**
@@ -37,6 +39,9 @@
    /** Use unit name for controller context name */
    private boolean useUnitName;
 
+   /** The controller context to deployment unit mapping */
+   private DeploymentRegistry registry;
+
    /**
     * Create a new AbstractRealDeployer.
     */
@@ -123,6 +128,30 @@
    }
 
    /**
+    * Put context to deployment mapping.
+    *
+    * @param context the context
+    * @param unit the deployment
+    * @return previous mapping value
+    */
+   protected DeploymentUnit putContext(ControllerContext context, DeploymentUnit unit)
+   {
+      return (registry != null) ? registry.putContext(context, unit) : null;
+   }
+
+   /**
+    * Remove context to deployment mapping.
+    *
+    * @param context the context
+    * @param unit the deployment
+    * @return is previous mapping value same as unit param
+    */
+   protected DeploymentUnit removeContext(ControllerContext context, DeploymentUnit unit)
+   {
+      return (registry != null) ? registry.removeContext(context, unit) : null;
+   }
+
+   /**
     * Should we use unit name for controller context name.
     *
     * @return true if usage is allowed
@@ -141,4 +170,14 @@
    {
       this.useUnitName = useUnitName;
    }
+
+   /**
+    * Set the context to deployment mapping.
+    *
+    * @param registry the registry
+    */
+   public void setDeploymentRegistry(DeploymentRegistry registry)
+   {
+      this.registry = registry;
+   }
 }

Copied: projects/jboss-deployers/branches/vfs3/deployers-spi/src/main/java/org/jboss/deployers/spi/deployer/helpers/CollectionNameIgnoreMechanism.java (from rev 98000, projects/jboss-deployers/trunk/deployers-spi/src/main/java/org/jboss/deployers/spi/deployer/helpers/CollectionNameIgnoreMechanism.java)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-spi/src/main/java/org/jboss/deployers/spi/deployer/helpers/CollectionNameIgnoreMechanism.java	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-spi/src/main/java/org/jboss/deployers/spi/deployer/helpers/CollectionNameIgnoreMechanism.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,47 @@
+/*
+ * 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.deployers.spi.deployer.helpers;
+
+import java.util.Collection;
+
+import org.jboss.deployers.spi.deployer.matchers.NameIgnoreMechanism;
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+
+/**
+ * Ignore a collection of names.
+ *
+ * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
+ */
+public class CollectionNameIgnoreMechanism implements NameIgnoreMechanism
+{
+   private Collection<String> ignored;
+
+   public CollectionNameIgnoreMechanism(Collection<String> ignored)
+   {
+      this.ignored = ignored;
+   }
+
+   public boolean ignore(DeploymentUnit unit, String name)
+   {
+      return ignored != null && ignored.contains(name);
+   }
+}

Copied: projects/jboss-deployers/branches/vfs3/deployers-spi/src/main/java/org/jboss/deployers/spi/deployer/helpers/PatternNameIgnoreMechanism.java (from rev 98000, projects/jboss-deployers/trunk/deployers-spi/src/main/java/org/jboss/deployers/spi/deployer/helpers/PatternNameIgnoreMechanism.java)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-spi/src/main/java/org/jboss/deployers/spi/deployer/helpers/PatternNameIgnoreMechanism.java	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-spi/src/main/java/org/jboss/deployers/spi/deployer/helpers/PatternNameIgnoreMechanism.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,64 @@
+/*
+ * 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.deployers.spi.deployer.helpers;
+
+import java.util.regex.Pattern;
+import java.util.regex.Matcher;
+
+import org.jboss.deployers.spi.deployer.matchers.NameIgnoreMechanism;
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+
+/**
+ * Ignore a pattern.
+ *
+ * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
+ */
+public class PatternNameIgnoreMechanism implements NameIgnoreMechanism
+{
+   private Pattern ignored;
+   private boolean match;
+
+   public PatternNameIgnoreMechanism(String regexp)
+   {
+      if (regexp == null)
+         throw new IllegalArgumentException("Null regexp");
+
+      ignored = Pattern.compile(regexp);
+   }
+
+   public boolean ignore(DeploymentUnit unit, String name)
+   {
+      Matcher matcher = ignored.matcher(name);
+      return (match) ? matcher.matches() : matcher.find();
+   }
+
+   /**
+    * Do we use match.
+    * by default find is used.
+    *
+    * @param match the match flag
+    */
+   public void setMatch(boolean match)
+   {
+      this.match = match;
+   }
+}
\ No newline at end of file

Modified: projects/jboss-deployers/branches/vfs3/deployers-spi/src/main/java/org/jboss/deployers/spi/deployer/managed/ManagedDeploymentCreator.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-spi/src/main/java/org/jboss/deployers/spi/deployer/managed/ManagedDeploymentCreator.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-spi/src/main/java/org/jboss/deployers/spi/deployer/managed/ManagedDeploymentCreator.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -47,6 +47,5 @@
     * @param parent - the parent
     * @return the managed deployment
     */
-   public ManagedDeployment build(DeploymentUnit unit, Map<String, ManagedObject> unitMOs,
-         ManagedDeployment parent);
+   public ManagedDeployment build(DeploymentUnit unit, Map<String, ManagedObject> unitMOs, ManagedDeployment parent);
 }

Copied: projects/jboss-deployers/branches/vfs3/deployers-spi/src/main/java/org/jboss/deployers/spi/deployer/matchers/NameIgnoreMechanism.java (from rev 98000, projects/jboss-deployers/trunk/deployers-spi/src/main/java/org/jboss/deployers/spi/deployer/matchers/NameIgnoreMechanism.java)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-spi/src/main/java/org/jboss/deployers/spi/deployer/matchers/NameIgnoreMechanism.java	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-spi/src/main/java/org/jboss/deployers/spi/deployer/matchers/NameIgnoreMechanism.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,41 @@
+/*
+ * 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.deployers.spi.deployer.matchers;
+
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+
+/**
+ * Name ignore mechanism.
+ * 
+ * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
+ */
+public interface NameIgnoreMechanism
+{
+   /**
+    * Do we ignore this file name.
+    *
+    * @param unit the deployment unit
+    * @param name the name to check
+    * @return true if we should ignore this name, false otherwise
+    */
+   boolean ignore(DeploymentUnit unit, String name);
+}

Copied: projects/jboss-deployers/branches/vfs3/deployers-structure-spi/src/main/java/org/jboss/deployers/structure/spi/DeploymentRegistry.java (from rev 98000, projects/jboss-deployers/trunk/deployers-structure-spi/src/main/java/org/jboss/deployers/structure/spi/DeploymentRegistry.java)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-structure-spi/src/main/java/org/jboss/deployers/structure/spi/DeploymentRegistry.java	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-structure-spi/src/main/java/org/jboss/deployers/structure/spi/DeploymentRegistry.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,68 @@
+/*
+ * 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.deployers.structure.spi;
+
+import java.util.Set;
+
+import org.jboss.dependency.spi.ControllerContext;
+
+/**
+ * This registry keeps a track of deployment's context.
+ *
+ * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
+ */
+public interface DeploymentRegistry
+{
+   /**
+    * Put context to deployment mapping.
+    *
+    * @param context the context
+    * @param unit the deployment
+    * @return previous mapping value
+    */
+   DeploymentUnit putContext(ControllerContext context, DeploymentUnit unit);
+
+   /**
+    * Remove context to deployment mapping.
+    *
+    * @param context the context
+    * @param unit the deployment
+    * @return previous mapping value
+    */
+   DeploymentUnit removeContext(ControllerContext context, DeploymentUnit unit);
+
+   /**
+    * Get owner deployment for context.
+    *
+    * @param context the context
+    * @return owning deployment unit
+    */
+   DeploymentUnit getDeployment(ControllerContext context);
+
+   /**
+    * Get contexts owned by deployment unit.
+    *
+    * @param unit the deployment unit
+    * @return set of contexts
+    */
+   Set<ControllerContext> getContexts(DeploymentUnit unit);
+}

Copied: projects/jboss-deployers/branches/vfs3/deployers-structure-spi/src/main/java/org/jboss/deployers/structure/spi/helpers/AbstractDeploymentRegistry.java (from rev 98000, projects/jboss-deployers/trunk/deployers-structure-spi/src/main/java/org/jboss/deployers/structure/spi/helpers/AbstractDeploymentRegistry.java)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-structure-spi/src/main/java/org/jboss/deployers/structure/spi/helpers/AbstractDeploymentRegistry.java	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-structure-spi/src/main/java/org/jboss/deployers/structure/spi/helpers/AbstractDeploymentRegistry.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,125 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt 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.deployers.structure.spi.helpers;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.locks.ReentrantReadWriteLock;
+
+import org.jboss.dependency.spi.ControllerContext;
+import org.jboss.deployers.structure.spi.DeploymentRegistry;
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+
+/**
+ * Simple deployment registry
+ *
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
+ */
+public class AbstractDeploymentRegistry implements DeploymentRegistry
+{
+   /** The read/write lock */
+   private final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
+
+   /** The context 2 deployment mapping */
+   private final Map<ControllerContext, DeploymentUnit> contextMapping = new ConcurrentHashMap<ControllerContext, DeploymentUnit>();
+
+   /** The deployment 2 context mapping */
+   private final Map<DeploymentUnit, Set<ControllerContext>> deploymentMapping = new HashMap<DeploymentUnit, Set<ControllerContext>>();
+
+   private void check(ControllerContext context, DeploymentUnit unit)
+   {
+      if (context == null || unit == null)
+         throw new IllegalArgumentException("Null context or unit: context=" + context + ", unit=" + unit);
+   }
+
+   public DeploymentUnit putContext(ControllerContext context, DeploymentUnit unit)
+   {
+      check(context, unit);
+      lock.writeLock().lock();
+      try
+      {
+         Set<ControllerContext> contexts = deploymentMapping.get(unit);
+         if (contexts == null)
+         {
+            contexts = new HashSet<ControllerContext>();
+            deploymentMapping.put(unit, contexts);
+         }
+         contexts.add(context);
+      }
+      finally
+      {
+         lock.writeLock().unlock();
+      }
+      return contextMapping.put(context, unit);
+   }
+
+   public DeploymentUnit removeContext(ControllerContext context, DeploymentUnit unit)
+   {
+      check(context, unit);
+      lock.writeLock().lock();
+      try
+      {
+         Set<ControllerContext> contexts = deploymentMapping.get(unit);
+         if (contexts != null)
+         {
+            contexts.remove(context);
+
+            if (contexts.isEmpty())
+               deploymentMapping.remove(unit);
+         }
+      }
+      finally
+      {
+         lock.writeLock().unlock();
+      }
+      return contextMapping.remove(context);
+   }
+
+   public DeploymentUnit getDeployment(ControllerContext context)
+   {
+      if (context == null)
+         throw new IllegalArgumentException("Null context");
+
+      return contextMapping.get(context);
+   }
+
+   public Set<ControllerContext> getContexts(DeploymentUnit unit)
+   {
+      if (unit == null)
+         throw new IllegalArgumentException("Null deployment unit");
+
+      lock.readLock().lock();
+      try
+      {
+         Set<ControllerContext> contexts = deploymentMapping.get(unit);
+         return (contexts != null) ? new HashSet<ControllerContext>(contexts) : Collections.<ControllerContext>emptySet(); 
+      }
+      finally
+      {
+         lock.readLock().unlock();
+      }
+   }
+}
\ No newline at end of file

Modified: projects/jboss-deployers/branches/vfs3/deployers-vfs/pom.xml
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/pom.xml	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/pom.xml	2009-12-21 16:03:14 UTC (rev 98088)
@@ -46,6 +46,40 @@
 	    <artifactId>jboss-kernel</artifactId>
 	 </dependency>
     <dependency>
+      <groupId>org.jboss.mcann</groupId>
+      <artifactId>mcann-core</artifactId>
+      <exclusions>
+        <exclusion>
+          <groupId>org.jboss.vfs</groupId>
+          <artifactId>jboss-vfs</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.jboss</groupId>
+          <artifactId>jboss-reflect</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.jboss.man</groupId>
+          <artifactId>jboss-managed</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.jboss.man</groupId>
+          <artifactId>jboss-metatype</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.jboss.microcontainer</groupId>
+          <artifactId>jboss-kernel</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.jboss.kernel</groupId>
+          <artifactId>jboss-kernel</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.jboss.cl</groupId>
+          <artifactId>jboss-classloading</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
       <groupId>org.jboss.cl</groupId>
       <artifactId>jboss-classloading-vfs</artifactId>
       <exclusions>
@@ -112,7 +146,73 @@
           <artifactId>jboss-classloading</artifactId>
         </exclusion>
       </exclusions>
-	 </dependency>
+    </dependency>
+    <dependency>
+      <groupId>org.jboss</groupId>
+      <artifactId>jboss-reflect</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.jboss.man</groupId>
+      <artifactId>jboss-managed</artifactId>
+      <exclusions>
+        <exclusion>
+          <groupId>org.jboss</groupId>
+          <artifactId>jboss-reflect</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.jboss</groupId>
+          <artifactId>jboss-mdr</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>org.jboss.man</groupId>
+      <artifactId>jboss-metatype</artifactId>
+      <exclusions>
+        <exclusion>
+          <groupId>org.jboss</groupId>
+          <artifactId>jboss-reflect</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.jboss</groupId>
+          <artifactId>jboss-mdr</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>org.jboss.mcann</groupId>
+      <artifactId>mcann-core</artifactId>
+      <exclusions>
+        <exclusion>
+          <groupId>org.jboss.vfs</groupId>
+          <artifactId>jboss-vfs</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.jboss</groupId>
+          <artifactId>jboss-reflect</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.jboss.man</groupId>
+          <artifactId>jboss-managed</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.jboss.man</groupId>
+          <artifactId>jboss-metatype</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.jboss.microcontainer</groupId>
+          <artifactId>jboss-kernel</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.jboss.kernel</groupId>
+          <artifactId>jboss-kernel</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.jboss.cl</groupId>
+          <artifactId>jboss-classloading</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
     <!-- Test dependencies -->
     <dependency>
       <groupId>org.jboss.deployers</groupId>
@@ -189,5 +289,10 @@
       <artifactId>junit</artifactId>
       <scope>test</scope>
     </dependency>
-  </dependencies>  
+    <dependency>
+      <groupId>org.jboss.classpool</groupId>
+      <artifactId>jboss-classpool-jbosscl</artifactId>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
 </project>

Deleted: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/main/java/org/jboss/deployers/vfs/Refcountable.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/main/java/org/jboss/deployers/vfs/Refcountable.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/main/java/org/jboss/deployers/vfs/Refcountable.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1,91 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2009, 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.deployers.vfs;
-
-import java.util.concurrent.atomic.AtomicIntegerFieldUpdater;
-import java.io.Closeable;
-import java.io.IOException;
-
-public abstract class Refcountable<T> implements Closeable
-{
-   private final T resource;
-   private volatile int cnt;
-
-   private static final AtomicIntegerFieldUpdater<Refcountable> cntUpdater = AtomicIntegerFieldUpdater.newUpdater(Refcountable.class, "cnt");
-
-   private static final int CLOSED_VAL = -0x40000000;
-
-   protected Refcountable(T resource)
-   {
-      this.resource = resource;
-   }
-
-   public interface Handle<T> extends Closeable
-   {
-      T get();
-   }
-
-   public final void close() throws IOException
-   {
-      if (cntUpdater.getAndSet(this, CLOSED_VAL) >= 0) {
-         closeAction();
-      }
-   }
-
-   public final Handle<T> getHandle() throws IOException {
-      if (cntUpdater.getAndIncrement(this) < 0) {
-         cntUpdater.getAndDecrement(this);
-         throw new IOException("Resource is already closed");
-      } else {
-         return new HandleImpl<T>(this);
-      }
-   }
-
-   protected abstract void closeAction() throws IOException;
-
-   private static final class HandleImpl<T> implements Handle<T>
-   {
-      private final Refcountable<T> refcountable;
-      private volatile int closed = 0;
-
-      private static final AtomicIntegerFieldUpdater<HandleImpl> closedUpdater = AtomicIntegerFieldUpdater.newUpdater(HandleImpl.class, "closed");
-
-      private HandleImpl(Refcountable<T> refcountable)
-      {
-         this.refcountable = refcountable;
-      }
-
-      public T get()
-      {
-         return refcountable.resource;
-      }
-
-      public void close() throws IOException
-      {
-         if (closedUpdater.compareAndSet(this, 0, 1) && 0 == cntUpdater.decrementAndGet(refcountable) && cntUpdater.compareAndSet(refcountable, 0, CLOSED_VAL)) {
-            // we caused the resource to close
-            refcountable.closeAction();
-         }
-      }
-   }
-}

Modified: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/main/java/org/jboss/deployers/vfs/deployer/kernel/BeanMetaDataDeployer.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/main/java/org/jboss/deployers/vfs/deployer/kernel/BeanMetaDataDeployer.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/main/java/org/jboss/deployers/vfs/deployer/kernel/BeanMetaDataDeployer.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -21,7 +21,13 @@
 */
 package org.jboss.deployers.vfs.deployer.kernel;
 
-import java.util.Collection;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.locks.ReadWriteLock;
+import java.util.concurrent.locks.ReentrantReadWriteLock;
 
 import org.jboss.beans.metadata.plugins.AbstractClassLoaderMetaData;
 import org.jboss.beans.metadata.plugins.AbstractValueMetaData;
@@ -30,14 +36,14 @@
 import org.jboss.beans.metadata.spi.ValueMetaData;
 import org.jboss.dependency.spi.Controller;
 import org.jboss.dependency.spi.ScopeInfo;
+import org.jboss.dependency.spi.ControllerContext;
 import org.jboss.deployers.spi.DeploymentException;
 import org.jboss.deployers.spi.deployer.helpers.AbstractSimpleRealDeployer;
 import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.deployers.vfs.spi.deployer.helpers.BeanMetaDataDeployerPlugin;
 import org.jboss.kernel.Kernel;
 import org.jboss.kernel.plugins.dependency.AbstractKernelControllerContext;
 import org.jboss.kernel.spi.dependency.KernelControllerContext;
-import org.jboss.metadata.spi.scope.Scope;
-import org.jboss.metadata.spi.scope.ScopeKey;
 
 /**
  * BeanMetaDataDeployer.<p>
@@ -46,6 +52,7 @@
  * type {@link org.jboss.beans.metadata.spi.BeanMetaData}.
  * 
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
  * @version $Revision: 1.1 $
  */
 public class BeanMetaDataDeployer extends AbstractSimpleRealDeployer<BeanMetaData>
@@ -53,6 +60,14 @@
    /** The controller */
    private Controller controller;
    
+   /** List of bean metadata plugins */
+   private List<BeanMetaDataDeployerPlugin> plugins = new ArrayList<BeanMetaDataDeployerPlugin>();
+   
+   private ReadWriteLock lock = new ReentrantReadWriteLock();
+
+   /** Records which plugin was used to deploy a context */
+   private Map<String, BeanMetaDataDeployerPlugin> deployedWithPlugin = new ConcurrentHashMap<String, BeanMetaDataDeployerPlugin>();
+
    /**
     * Create a new BeanDeployer.
     * 
@@ -94,6 +109,49 @@
       setUseUnitName(true);
    }
 
+   /**
+    * Incallback for the controller context creators
+    * 
+    * @param creator The controller context creator to be added
+    */
+   public void addControllerContextCreator(BeanMetaDataDeployerPlugin creator)
+   {
+      if (creator == null)
+         return;
+      
+      lock.writeLock().lock();
+      try
+      {
+         plugins.add(creator);
+         Collections.sort(plugins, KernelControllerContextComparator.getInstance());
+      }
+      finally
+      {
+         lock.writeLock().unlock();
+      }
+   }
+   
+   /**
+    * Uncallback for the controller context creators
+    * 
+    * @param creator The controller context creator to be removed
+    */
+   public void removeControllerContextCreator(BeanMetaDataDeployerPlugin creator)
+   {
+      if (creator == null)
+         return;
+      
+      lock.writeLock().lock();
+      try
+      {
+         plugins.remove(creator);
+      }
+      finally
+      {
+         lock.writeLock().unlock();
+      }
+   }
+   
    @Override
    public void deploy(DeploymentUnit unit, BeanMetaData deployment) throws DeploymentException
    {
@@ -112,13 +170,15 @@
             log.debug("Unable to retrieve classloader for deployment: " + unit.getName() + " reason=" + e.toString());
          }
       }
-      KernelControllerContext context = new AbstractKernelControllerContext(null, deployment, null);
+      KernelControllerContext context = createControllerContext(unit, deployment);
       ScopeInfo scopeInfo = context.getScopeInfo();
       scopeInfo.setScope(unit.getScope());
       scopeInfo.setMutableScope(unit.getMutableScope());
+      
       try
       {
          controller.install(context);
+         putContext(context, unit.getParent()); // we're a component, use parent
       }
       catch (Throwable t)
       {
@@ -127,32 +187,47 @@
    }
 
    /**
-    * Merge scope keys.
-    *
-    * @param contextKey the context key
-    * @param unitKey the unit key
-    * @deprecated no longer in use
+    * Creates a kernel controller context using the controller context creators in controllerContextCreators.
+    * The first controller context creator that returns a context is used. If no matching controller context
+    * creator is found, a plain KernelControllerContext is created.
+    * @param unit The deployment unit
+    * @param deployment The bean metadata being deployed
+    * @return the created KernelControllerContext
     */
-   @Deprecated
-   protected static void mergeScopes(ScopeKey contextKey, ScopeKey unitKey)
+   protected KernelControllerContext createControllerContext(DeploymentUnit unit, BeanMetaData deployment)
    {
-      if (contextKey == null)
-         return;
-      if (unitKey == null)
-         return;
-
-      Collection<Scope> unitScopes = unitKey.getScopes();
-      if (unitScopes == null || unitScopes.isEmpty())
-         return;
-
-      for (Scope scope : unitScopes)
-         contextKey.addScope(scope);
+      if (plugins.size() > 0)
+      {
+         lock.readLock().lock();
+         try
+         {
+            for (BeanMetaDataDeployerPlugin plugin : plugins)
+            {
+               KernelControllerContext context = plugin.createContext(controller, unit, deployment);
+               if (context != null)
+               {
+                  deployedWithPlugin.put(deployment.getName(), plugin);
+                  return context;
+               }
+            }
+         }
+         finally
+         {
+            lock.readLock().unlock();
+         }
+      }
+      return new AbstractKernelControllerContext(null, deployment, null);
    }
 
    @Override
    public void undeploy(DeploymentUnit unit, BeanMetaData deployment)
    {
-      controller.uninstall(deployment.getName());
+      BeanMetaDataDeployerPlugin plugin = deployedWithPlugin.remove(deployment.getName());
+      if (plugin == null || plugin.uninstallContext(controller, unit, deployment) == false)
+      {
+         ControllerContext context = controller.uninstall(deployment.getName());
+         removeContext(context, unit.getParent());
+      }
       
       // Remove any classloader metadata we added (not necessary if we clone above)
       ClassLoaderMetaData classLoader = deployment.getClassLoader();

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/main/java/org/jboss/deployers/vfs/deployer/kernel/KernelControllerContextComparator.java (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/main/java/org/jboss/deployers/vfs/deployer/kernel/KernelControllerContextComparator.java)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/main/java/org/jboss/deployers/vfs/deployer/kernel/KernelControllerContextComparator.java	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/main/java/org/jboss/deployers/vfs/deployer/kernel/KernelControllerContextComparator.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,46 @@
+package org.jboss.deployers.vfs.deployer.kernel;
+
+import java.util.Comparator;
+
+import org.jboss.deployers.vfs.spi.deployer.helpers.BeanMetaDataDeployerPlugin;
+
+/**
+ * Singleton comparator to compare KernelControllerContextCreators by their relative order
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class KernelControllerContextComparator implements Comparator<BeanMetaDataDeployerPlugin>
+{
+   /** Singleton instance*/
+   private static final KernelControllerContextComparator INSTANCE = new KernelControllerContextComparator();
+   
+   private KernelControllerContextComparator()
+   {
+   }
+   
+   /**
+    * Get the singleton
+    * @return the singleton KernelControllerContextComparator
+    */
+   public static KernelControllerContextComparator getInstance()
+   {
+      return INSTANCE;
+   }
+   
+   /**
+    * Compares two KernelControllerContextCreators' relative orders
+    * @param o1 The first KernelContextCreator
+    * @param o1 The second KernelContextCreator
+    * @return An integer as per the {@link Comparator#compare(Object, Object)} contract
+    */
+   public int compare(BeanMetaDataDeployerPlugin o1, BeanMetaDataDeployerPlugin o2)
+   {
+      if (o1.getRelativeOrder() < o2.getRelativeOrder())
+         return -1;
+      if (o1.getRelativeOrder() > o2.getRelativeOrder())
+         return 1;
+      
+      return 0;
+   }
+}
\ No newline at end of file

Deleted: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/main/java/org/jboss/deployers/vfs/plugins/annotations/AnnotationEnvironmentDeployer.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/main/java/org/jboss/deployers/vfs/plugins/annotations/AnnotationEnvironmentDeployer.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/main/java/org/jboss/deployers/vfs/plugins/annotations/AnnotationEnvironmentDeployer.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1,253 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source
-* Copyright 2006, JBoss Inc., and individual contributors as indicated
-* by the @authors tag. See the copyright.txt 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.deployers.vfs.plugins.annotations;
-
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.List;
-
-import javassist.ClassPath;
-import javassist.ClassPool;
-import javassist.LoaderClassPath;
-import org.jboss.classloading.spi.dependency.Module;
-import org.jboss.deployers.plugins.annotations.GenericAnnotationResourceVisitor;
-import org.jboss.deployers.spi.DeploymentException;
-import org.jboss.deployers.spi.annotations.AnnotationEnvironment;
-import org.jboss.deployers.spi.annotations.ScanningMetaData;
-import org.jboss.deployers.spi.deployer.DeploymentStages;
-import org.jboss.deployers.structure.spi.DeploymentUnit;
-import org.jboss.deployers.vfs.spi.deployer.AbstractOptionalVFSRealDeployer;
-import org.jboss.deployers.vfs.spi.structure.VFSDeploymentUnit;
-import org.jboss.deployers.vfs.spi.structure.VFSDeploymentUnitFilter;
-import org.jboss.vfs.VirtualFile;
-
-/**
- * A POST_CLASSLOADER deployer which creates AnnotationEnvironment for sub-deployments.
- *
- * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
- */
-public class AnnotationEnvironmentDeployer extends AbstractOptionalVFSRealDeployer<Module>
-{
-   private boolean forceAnnotations;
-   private boolean keepAnnotations;
-   private boolean checkInterfaces;
-
-   private VFSDeploymentUnitFilter filter;
-
-   public AnnotationEnvironmentDeployer()
-   {
-      super(Module.class);
-      setStage(DeploymentStages.POST_CLASSLOADER);
-      addInput(ScanningMetaData.class);
-      setOutput(AnnotationEnvironment.class);
-      checkInterfaces = true;
-   }
-
-   /**
-    * Should we force all annotations to be available.
-    *
-    * @param forceAnnotations the force annotations flag
-    */
-   public void setForceAnnotations(boolean forceAnnotations)
-   {
-      this.forceAnnotations = forceAnnotations;
-   }
-
-   /**
-    * Set the keep annotations flag.
-    *
-    * @param keepAnnotations the keep annotations flag
-    */
-   public void setKeepAnnotations(boolean keepAnnotations)
-   {
-      this.keepAnnotations = keepAnnotations;
-   }
-
-   /**
-    * Should we check interfaces for annotations as well.
-    *
-    * @param checkInterfaces the check interfaces flag
-    */
-   public void setCheckInterfaces(boolean checkInterfaces)
-   {
-      this.checkInterfaces = checkInterfaces;
-   }
-
-   /**
-    * Set vfs deployment filter.
-    *
-    * @param filter the vfs deployment filter.
-    */
-   public void setFilter(VFSDeploymentUnitFilter filter)
-   {
-      this.filter = filter;
-   }
-
-   /**
-    * Create GenericAnnotationResourceVisitor.
-    *
-    * Can be used change existing GARV's filter.
-    * Or determin if we need to force/keep annotations.
-    *
-    * @param unit the deployment unit
-    * @param pool the class pool
-    * @param classLoader the classloader
-    * @return new generic annotation visitor
-    */
-   protected GenericAnnotationResourceVisitor createGenericAnnotationResourceVisitor(DeploymentUnit unit, ClassPool pool, ClassLoader classLoader)
-   {
-      GenericAnnotationResourceVisitor visitor = new GenericAnnotationResourceVisitor(pool, classLoader);
-      visitor.setForceAnnotations(forceAnnotations);
-      visitor.setKeepAnnotations(keepAnnotations);
-      visitor.setCheckInterfaces(checkInterfaces);
-      return visitor;
-   }
-
-   /**
-    * Create class pool.
-    *
-    * @param classLoader the class loader
-    * @return javassist class pool
-    */
-   @Deprecated
-   protected ClassPool createClassPool(ClassLoader classLoader)
-   {
-      ClassPool pool = new ClassPool();
-      ClassPath classPath = new LoaderClassPath(classLoader);
-      pool.insertClassPath(classPath);
-      return pool;
-   }
-
-   /**
-    * Create class pool.
-    *
-    * @param unit the deployment unit
-    * @return javassist class pool
-    */
-   protected ClassPool createClassPool(VFSDeploymentUnit unit)
-   {
-      ClassPool pool = new ClassPool();
-      ClassPath deploymentPath = new DeploymentUnitClassPath(unit);
-      pool.appendClassPath(deploymentPath);
-      // fall back to classloader classpath
-      ClassPath classPath = new LoaderClassPath(unit.getClassLoader());
-      pool.appendClassPath(classPath);
-      return pool;
-   }
-
-   /**
-    * Visit module.
-    *
-    * Util method to add some behavior to Module
-    * before we visit it.
-    *
-    * @param unit the deployment unit
-    * @param module the module
-    * @param visitor the resource visitor
-    * @throws DeploymentException for any error
-    */
-   protected void visitModule(VFSDeploymentUnit unit, Module module, GenericAnnotationResourceVisitor visitor) throws DeploymentException
-   {
-      try
-      {
-         module.visit(visitor, visitor.getFilter(), null, getUrls(unit));
-      }
-      catch (Exception e)
-      {
-         throw DeploymentException.rethrowAsDeploymentException("Exception visiting module", e);
-      }
-   }
-
-   /**
-    * Get the matching urls.
-    *
-    * @param unit the deployment unit
-    * @return matching urls
-    * @throws Exception for any error
-    */
-   protected URL[] getUrls(VFSDeploymentUnit unit) throws Exception
-   {
-      List<VirtualFile> classpath = unit.getClassPath();
-      if (classpath != null && classpath.isEmpty() == false)
-      {
-         List<URL> urls = new ArrayList<URL>();
-         VirtualFile root = unit.getRoot();
-         for (VirtualFile cp : classpath)
-         {
-            VirtualFile check = cp;
-            while(check != null && check.equals(root) == false)
-               check = check.getParent();
-
-            if (check != null)
-               urls.add(cp.toURL());
-         }
-         if (urls.isEmpty() == false)
-         {
-            if (log.isTraceEnabled())
-               log.trace("Explicit urls: " + urls);
-
-            return urls.toArray(new URL[urls.size()]);
-         }
-      }
-      return new URL[0];
-   }
-
-   public void deploy(VFSDeploymentUnit unit, Module module) throws DeploymentException
-   {
-      // running this deployer is costly, check if it should be run
-      if (filter != null && filter.accepts(unit) == false)
-         return;
-
-      if (module == null)
-      {
-         VFSDeploymentUnit parent = unit.getParent();
-         while(parent != null && module == null)
-         {
-            module = parent.getAttachment(Module.class);
-            parent = parent.getParent();
-         }
-         if (module == null)
-            throw new IllegalArgumentException("No module in deployment unit's hierarchy: " + unit.getName());
-      }
-
-      if (log.isTraceEnabled())
-         log.trace("Creating AnnotationEnvironment for " + unit.getName() + ", module: " + module + ", force annotations: " + forceAnnotations);
-
-      ClassLoader classLoader = unit.getClassLoader();
-      ClassPool pool = createClassPool(unit);
-      GenericAnnotationResourceVisitor visitor = createGenericAnnotationResourceVisitor(unit, pool, classLoader);
-
-      // something in javassist uses TCL
-      ClassLoader tcl = Thread.currentThread().getContextClassLoader();
-      Thread.currentThread().setContextClassLoader(classLoader);
-      try
-      {
-         visitModule(unit, module, visitor);
-      }
-      finally
-      {
-         Thread.currentThread().setContextClassLoader(tcl);
-      }
-
-      unit.addAttachment(AnnotationEnvironment.class, visitor.getEnv());
-   }
-}

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/main/java/org/jboss/deployers/vfs/plugins/annotations/AnnotationRepositoryDeployer.java (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/main/java/org/jboss/deployers/vfs/plugins/annotations/AnnotationRepositoryDeployer.java)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/main/java/org/jboss/deployers/vfs/plugins/annotations/AnnotationRepositoryDeployer.java	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/main/java/org/jboss/deployers/vfs/plugins/annotations/AnnotationRepositoryDeployer.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,156 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt 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.deployers.vfs.plugins.annotations;
+
+import java.net.URL;
+
+import org.jboss.classloading.spi.dependency.Module;
+import org.jboss.deployers.spi.DeploymentException;
+import org.jboss.deployers.spi.annotations.ScanningMetaData;
+import org.jboss.deployers.spi.deployer.DeploymentStages;
+import org.jboss.deployers.vfs.plugins.util.ClasspathUtils;
+import org.jboss.deployers.vfs.spi.deployer.AbstractOptionalVFSRealDeployer;
+import org.jboss.deployers.vfs.spi.structure.VFSDeploymentUnit;
+import org.jboss.deployers.vfs.spi.structure.VFSDeploymentUnitFilter;
+import org.jboss.mcann.AnnotationRepository;
+import org.jboss.mcann.repository.Configuration;
+import org.jboss.mcann.repository.DefaultConfiguration;
+import org.jboss.mcann.repository.AbstractSettings;
+import org.jboss.mcann.repository.AbstractConfiguration;
+import org.jboss.mcann.scanner.DefaultAnnotationScanner;
+import org.jboss.mcann.scanner.ModuleAnnotationScanner;
+
+/**
+ * A POST_CLASSLOADER deployer which creates AnnotationRepository for sub-deployments.
+ *
+ * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
+ */
+public class AnnotationRepositoryDeployer extends AbstractOptionalVFSRealDeployer<Module>
+{
+   private Configuration configuration;
+   private VFSDeploymentUnitFilter filter;
+
+   public AnnotationRepositoryDeployer()
+   {
+      super(Module.class);
+      setStage(DeploymentStages.POST_CLASSLOADER);
+      addInput(ScanningMetaData.class);
+      addInput(AnnotationRepository.class);
+      setOutput(AnnotationRepository.class);
+   }
+
+   /**
+    * Set configuration.
+    *
+    * @param configuration the configuration
+    */
+   public void setConfiguration(Configuration configuration)
+   {
+      this.configuration = configuration;
+   }
+
+   /**
+    * Set vfs deployment filter.
+    *
+    * @param filter the vfs deployment filter.
+    */
+   public void setFilter(VFSDeploymentUnitFilter filter)
+   {
+      this.filter = filter;
+   }
+
+   /**
+    * Visit module.
+    *
+    * Util method to add some behavior to Module
+    * before we visit it.
+    *
+    * @param unit the deployment unit
+    * @param module the module
+    * @throws DeploymentException for any error
+    */
+   protected void visitModule(VFSDeploymentUnit unit, Module module) throws DeploymentException
+   {
+      try
+      {
+         URL[] urls = ClasspathUtils.getUrls(unit);
+         DefaultAnnotationScanner scanner = new ModuleAnnotationScanner(module);
+
+         AbstractConfiguration config = new DefaultConfiguration();
+         configureScanner(unit, scanner, config);
+         if (configuration != null)
+            config.merge(configuration); // override with custom config
+         scanner.setConfiguration(config);
+
+         AnnotationRepository repository = scanner.scan(unit.getClassLoader(), urls);
+         unit.addAttachment(AnnotationRepository.class, repository);
+      }
+      catch (Exception e)
+      {
+         throw DeploymentException.rethrowAsDeploymentException("Exception visiting module", e);
+      }
+   }
+
+   protected AbstractConfiguration createConfiguration(VFSDeploymentUnit unit)
+   {
+      return new DefaultConfiguration();
+   }
+
+   /**
+    * Configure scanner.
+    *
+    * @param unit the deployment unit
+    * @param scanner the annotation scanner
+    * @param settings the settings
+    */
+   protected void configureScanner(VFSDeploymentUnit unit, DefaultAnnotationScanner scanner, AbstractSettings settings)
+   {
+   }
+
+   public void deploy(VFSDeploymentUnit unit, Module module) throws DeploymentException
+   {
+      // we already used McAnn or some other mechanism to create repo
+      if (unit.isAttachmentPresent(AnnotationRepository.class))
+         return;
+
+      // running this deployer is costly, check if it should be run
+      if (filter != null && filter.accepts(unit) == false)
+         return;
+
+      if (module == null)
+      {
+         VFSDeploymentUnit parent = unit.getParent();
+         while(parent != null && module == null)
+         {
+            module = parent.getAttachment(Module.class);
+            parent = parent.getParent();
+         }
+         if (module == null)
+            throw new IllegalArgumentException("No module in deployment unit's hierarchy: " + unit.getName());
+      }
+
+      if (log.isTraceEnabled())
+         log.trace("Creating AnnotationRepository for " + unit.getName() + ", module: " + module + ", configuration: " + configuration);
+
+      visitModule(unit, module);
+   }
+}

Modified: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/main/java/org/jboss/deployers/vfs/plugins/annotations/DeploymentUnitClassPath.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/main/java/org/jboss/deployers/vfs/plugins/annotations/DeploymentUnitClassPath.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/main/java/org/jboss/deployers/vfs/plugins/annotations/DeploymentUnitClassPath.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -35,6 +35,7 @@
 import org.jboss.deployers.vfs.spi.structure.VFSDeploymentUnit;
 import org.jboss.util.collection.SoftValueHashMap;
 import org.jboss.vfs.VirtualFile;
+import org.jboss.classloader.plugins.filter.JavaOnlyClassFilter;
 
 /**
  * Javassist ClassPath impl based on deployment unit
@@ -47,7 +48,7 @@
    @SuppressWarnings("unchecked")
    private Map<String, VirtualFile> cache = Collections.synchronizedMap(new SoftValueHashMap());
    /** By default exclude jdk classes */
-   private ClassFilter excludeFilter = ClassFilter.JAVA_ONLY;
+   private ClassFilter excludeFilter = JavaOnlyClassFilter.INSTANCE;
 
    public DeploymentUnitClassPath(VFSDeploymentUnit unit)
    {

Deleted: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/main/java/org/jboss/deployers/vfs/plugins/annotations/FilteredAnnotationEnvironmentDeployer.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/main/java/org/jboss/deployers/vfs/plugins/annotations/FilteredAnnotationEnvironmentDeployer.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/main/java/org/jboss/deployers/vfs/plugins/annotations/FilteredAnnotationEnvironmentDeployer.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1,115 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source
-* Copyright 2006, JBoss Inc., and individual contributors as indicated
-* by the @authors tag. See the copyright.txt 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.deployers.vfs.plugins.annotations;
-
-import org.jboss.classloading.spi.dependency.Module;
-import org.jboss.classloading.spi.visitor.ResourceFilter;
-import org.jboss.deployers.plugins.annotations.GenericAnnotationResourceVisitor;
-import org.jboss.deployers.structure.spi.DeploymentUnit;
-import org.jboss.deployers.vfs.spi.structure.VFSDeploymentUnit;
-import org.jboss.deployers.spi.DeploymentException;
-
-/**
- * Filtered annotation environment deployer.
- *
- * It first checks if there are some filters present
- * in deployment unit as attachment,
- * else falls back to deployers filters.
- *
- * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
- */
-public class FilteredAnnotationEnvironmentDeployer extends ScopedAnnotationEnvironmentDeployer
-{
-   private ResourceFilter resourceFilter;
-   private ResourceFilter recurseFilter;
-
-   public FilteredAnnotationEnvironmentDeployer()
-   {
-      addInput(ResourceFilter.class.getName() + ".resource");
-      addInput(ResourceFilter.class.getName() + ".recurse");
-   }
-
-   /**
-    * Get filter.
-    * Try attachment first, then deployer's filter.
-    *
-    * @param <T> the expected class type
-    * @param unit the deployment unit
-    * @param expectedClass the expected class
-    * @param suffix the suffix
-    * @param defaultValue the default value
-    * @return found filter or null
-    */
-   protected <T> T getFilter(DeploymentUnit unit, Class<T> expectedClass, String suffix, T defaultValue)
-   {
-      String name = expectedClass.getName() + "." + (suffix != null ? suffix : "");
-      T result = unit.getAttachment(name, expectedClass);
-      if (result == null)
-         result = defaultValue;
-      return result;
-   }
-
-   /**
-    * We look for filter attachments:
-    * * org.jboss.classloading.spi.visitor.ResourceFilter.resource - plain resource filter
-    * * org.jboss.classloading.spi.visitor.ResourceFilter.recurse  - recurse resource filter
-    *
-    * @param unit the deployment unit
-    * @param module the underlying module
-    * @param visitor the current generic annotation resource visitor
-    */
-   protected void visitModule(VFSDeploymentUnit unit, Module module, GenericAnnotationResourceVisitor visitor) throws DeploymentException
-   {
-      ResourceFilter filter = getFilter(unit, ResourceFilter.class, "resource", resourceFilter);
-      if (filter == null)
-         filter = visitor.getFilter();
-      ResourceFilter recurse = getFilter(unit, ResourceFilter.class, "recurse", recurseFilter);
-      try
-      {
-         module.visit(visitor, filter, recurse, getUrls(unit));
-      }
-      catch (Exception e)
-      {
-         throw DeploymentException.rethrowAsDeploymentException("Exception visiting module", e);
-      }
-   }
-
-   /**
-    * Set resource filter.
-    *
-     * @param resourceFilter the resource filter
-    */
-   public void setResourceFilter(ResourceFilter resourceFilter)
-   {
-      this.resourceFilter = resourceFilter;
-   }
-
-   /**
-    * Set recurse filter.
-    *
-    * @param recurseFilter the recurse filter
-    */
-   public void setRecurseFilter(ResourceFilter recurseFilter)
-   {
-      this.recurseFilter = recurseFilter;
-   }
-}
\ No newline at end of file

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/main/java/org/jboss/deployers/vfs/plugins/annotations/FilteredAnnotationRepositoryDeployer.java (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/main/java/org/jboss/deployers/vfs/plugins/annotations/FilteredAnnotationRepositoryDeployer.java)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/main/java/org/jboss/deployers/vfs/plugins/annotations/FilteredAnnotationRepositoryDeployer.java	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/main/java/org/jboss/deployers/vfs/plugins/annotations/FilteredAnnotationRepositoryDeployer.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,116 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt 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.deployers.vfs.plugins.annotations;
+
+import org.jboss.classloading.spi.visitor.ResourceFilter;
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.deployers.vfs.spi.structure.VFSDeploymentUnit;
+import org.jboss.mcann.repository.AbstractSettings;
+import org.jboss.mcann.repository.AbstractConfiguration;
+import org.jboss.mcann.scanner.DefaultAnnotationScanner;
+
+/**
+ * Filtered annotation environment deployer.
+ *
+ * It first checks if there are some filters present
+ * in deployment unit as attachment,
+ * else falls back to deployers filters.
+ *
+ * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
+ */
+public class FilteredAnnotationRepositoryDeployer extends AnnotationRepositoryDeployer
+{
+   private ResourceFilter resourceFilter;
+   private ResourceFilter recurseFilter;
+
+   public FilteredAnnotationRepositoryDeployer()
+   {
+      addInput(ResourceFilter.class.getName() + ".resource");
+      addInput(ResourceFilter.class.getName() + ".recurse");
+   }
+
+   /**
+    * Try attachment first, then default value.
+    *
+    * @param <T> the expected class type
+    * @param unit the deployment unit
+    * @param expectedClass the expected class
+    * @param suffix the suffix
+    * @param defaultValue the default value
+    * @return attchment or default value
+    */
+   protected <T> T getAttachment(DeploymentUnit unit, Class<T> expectedClass, String suffix, T defaultValue)
+   {
+      String name = expectedClass.getName() + (suffix != null ? ("." + suffix) : "");
+      T result = unit.getAttachment(name, expectedClass);
+      if (result == null)
+         result = defaultValue;
+      return result;
+   }
+
+   @Override
+   protected AbstractConfiguration createConfiguration(VFSDeploymentUnit unit)
+   {
+      return getAttachment(unit, AbstractConfiguration.class, null, super.createConfiguration(unit)); 
+   }
+
+   /**
+    * We look for filter attachments:
+    * * org.jboss.classloading.spi.visitor.ResourceFilter.resource - plain resource filter
+    * * org.jboss.classloading.spi.visitor.ResourceFilter.recurse  - recurse resource filter
+    *
+    * @param unit the deployment unit
+    * @param scanner the annotation scanner
+    * @param settings the settings
+    */
+   @Override
+   protected void configureScanner(VFSDeploymentUnit unit, DefaultAnnotationScanner scanner, AbstractSettings settings)
+   {
+      super.configureScanner(unit, scanner, settings);
+
+      ResourceFilter filter = getAttachment(unit, ResourceFilter.class, "resource", resourceFilter);
+      settings.setResourceFilter(filter);
+
+      ResourceFilter recurse = getAttachment(unit, ResourceFilter.class, "recurse", recurseFilter);
+      scanner.setRecurseFilter(recurse);
+   }
+
+   /**
+    * Set resource filter.
+    *
+     * @param resourceFilter the resource filter
+    */
+   public void setResourceFilter(ResourceFilter resourceFilter)
+   {
+      this.resourceFilter = resourceFilter;
+   }
+
+   /**
+    * Set recurse filter.
+    *
+    * @param recurseFilter the recurse filter
+    */
+   public void setRecurseFilter(ResourceFilter recurseFilter)
+   {
+      this.recurseFilter = recurseFilter;
+   }
+}
\ No newline at end of file

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/main/java/org/jboss/deployers/vfs/plugins/annotations/JavassistAnnotationRepositoryDeployer.java (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/main/java/org/jboss/deployers/vfs/plugins/annotations/JavassistAnnotationRepositoryDeployer.java)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/main/java/org/jboss/deployers/vfs/plugins/annotations/JavassistAnnotationRepositoryDeployer.java	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/main/java/org/jboss/deployers/vfs/plugins/annotations/JavassistAnnotationRepositoryDeployer.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,40 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt 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.deployers.vfs.plugins.annotations;
+
+import org.jboss.mcann.repository.AbstractConfiguration;
+import org.jboss.mcann.repository.javassist.JavassistConfiguration;
+import org.jboss.deployers.vfs.spi.structure.VFSDeploymentUnit;
+
+/**
+ * Javassist annotation repository deployer.
+ *
+ * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
+ */
+public class JavassistAnnotationRepositoryDeployer extends FilteredAnnotationRepositoryDeployer
+{
+   @Override
+   protected AbstractConfiguration createConfiguration(VFSDeploymentUnit unit)
+   {
+      return new JavassistConfiguration();
+   }
+}
\ No newline at end of file

Deleted: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/main/java/org/jboss/deployers/vfs/plugins/annotations/ScopedAnnotationEnvironmentDeployer.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/main/java/org/jboss/deployers/vfs/plugins/annotations/ScopedAnnotationEnvironmentDeployer.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/main/java/org/jboss/deployers/vfs/plugins/annotations/ScopedAnnotationEnvironmentDeployer.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1,72 +0,0 @@
-/*
-* JBoss, Home of Professional Open Source
-* Copyright 2006, JBoss Inc., and individual contributors as indicated
-* by the @authors tag. See the copyright.txt 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.deployers.vfs.plugins.annotations;
-
-import javassist.ClassPool;
-import javassist.scopedpool.ScopedClassPoolRepository;
-import org.jboss.deployers.vfs.spi.structure.VFSDeploymentUnit;
-
-/**
- * Scoped class pool usage annotation environment deployer.
- *
- * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
- */
-public class ScopedAnnotationEnvironmentDeployer extends AnnotationEnvironmentDeployer
-{
-   private ScopedClassPoolRepository repository;
-
-   public ScopedAnnotationEnvironmentDeployer()
-   {
-   }
-
-   public ScopedAnnotationEnvironmentDeployer(ScopedClassPoolRepository repository)
-   {
-      this.repository = repository;
-   }
-
-   /**
-    * Set scoped class pool repository.
-    *
-    * @param repository the scoped class pool repository
-    */
-   public void setRepository(ScopedClassPoolRepository repository)
-   {
-      this.repository = repository;
-   }
-
-   @Deprecated
-   protected ClassPool createClassPool(ClassLoader classLoader)
-   {
-      if (repository != null)
-         return repository.findClassPool(classLoader);
-
-      return super.createClassPool(classLoader);
-   }
-
-   protected ClassPool createClassPool(VFSDeploymentUnit unit)
-   {
-      if (repository != null)
-         return repository.findClassPool(unit.getClassLoader());
-
-      return super.createClassPool(unit);
-   }
-}
\ No newline at end of file

Modified: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/main/java/org/jboss/deployers/vfs/plugins/classloader/VFSDeploymentClassLoaderPolicyModule.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/main/java/org/jboss/deployers/vfs/plugins/classloader/VFSDeploymentClassLoaderPolicyModule.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/main/java/org/jboss/deployers/vfs/plugins/classloader/VFSDeploymentClassLoaderPolicyModule.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -43,6 +43,7 @@
  * VFSDeploymentClassLoaderPolicyModule.
  * 
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
  * @version $Revision: 1.1 $
  */
 public class VFSDeploymentClassLoaderPolicyModule extends AbstractDeploymentClassLoaderPolicyModule
@@ -79,6 +80,26 @@
          excludedRoots = vfsExcludes.toArray(new VirtualFile[vfsExcludes.size()]);
    }
 
+   /**
+    * Get roots clone.
+    *
+    * @return cloned roots
+    */
+   protected VirtualFile[] getRoots()
+   {
+      return vfsRoots != NO_ROOTS ? vfsRoots.clone() : NO_ROOTS;
+   }
+
+   /**
+    * Get excluded roots clone.
+    *
+    * @return cloned excluded roots
+    */
+   protected VirtualFile[] getExcludedRoots()
+   {
+      return excludedRoots != null ? excludedRoots.clone() : null;
+   }
+
    @Override
    protected List<Capability> determineCapabilities()
    {

Modified: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/main/java/org/jboss/deployers/vfs/plugins/structure/AbstractVFSStructureDeployer.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/main/java/org/jboss/deployers/vfs/plugins/structure/AbstractVFSStructureDeployer.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/main/java/org/jboss/deployers/vfs/plugins/structure/AbstractVFSStructureDeployer.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -24,10 +24,7 @@
 import java.io.IOException;
 
 import org.jboss.classloader.spi.filter.ClassFilter;
-import org.jboss.classloading.plugins.vfs.VFSResourceVisitor;
 import org.jboss.classloading.spi.visitor.ResourceFilter;
-import org.jboss.deployers.plugins.annotations.GenericAnnotationResourceVisitor;
-import org.jboss.deployers.spi.annotations.AnnotationEnvironment;
 import org.jboss.deployers.spi.structure.ContextInfo;
 import org.jboss.deployers.structure.spi.DeploymentResourceLoader;
 import org.jboss.deployers.structure.spi.helpers.DeploymentResourceClassLoader;
@@ -35,6 +32,9 @@
 import org.jboss.deployers.vfs.spi.structure.helpers.AbstractStructureDeployer;
 import org.jboss.vfs.VirtualFile;
 import org.jboss.vfs.util.Automounter;
+import org.jboss.mcann.AnnotationRepository;
+import org.jboss.mcann.repository.Configuration;
+import org.jboss.mcann.scanner.DefaultAnnotationScanner;
 
 /**
  * VFS aware structure deployer.
@@ -45,19 +45,28 @@
 {
    private ClassFilter included;
    private ClassFilter excluded;
-   private ResourceFilter filter;
    private ResourceFilter recurseFilter;
+   private Configuration configuration;
 
-   protected AnnotationEnvironment createAnnotationEnvironment(VirtualFile root)
+   protected AnnotationRepository createAnnotationRepository(VirtualFile root)
    {
       DeploymentResourceLoader loader = new VFSDeploymentResourceLoaderImpl(root);
       ClassLoader classLoader = new DeploymentResourceClassLoader(loader);
-      GenericAnnotationResourceVisitor visitor = new GenericAnnotationResourceVisitor(classLoader);
-      ResourceFilter filter = this.filter;
-      if (filter == null)
-         filter = visitor.getFilter();
-      VFSResourceVisitor.visit(new VirtualFile[]{root}, null, included, excluded, classLoader, visitor, filter, recurseFilter);
-      return visitor.getEnv();
+      DefaultAnnotationScanner scanner = new DefaultAnnotationScanner();
+      scanner.setIncluded(included);
+      scanner.setExcluded(excluded);
+      scanner.setRecurseFilter(recurseFilter);
+      if (configuration != null)
+         scanner.setConfiguration(configuration);
+
+      try
+      {
+         return scanner.scan(classLoader, root.toURL());
+      }
+      catch (Exception e)
+      {
+         throw new RuntimeException("Cannot create annotation repository: " + e);
+      }
    }
 
    /**
@@ -81,23 +90,23 @@
    }
 
    /**
-    * Set the filter.
+    * Set the recurse filter.
     *
-    * @param filter the filter
+    * @param recurseFilter the recurse filter
     */
-   public void setFilter(ResourceFilter filter)
+   public void setRecurseFilter(ResourceFilter recurseFilter)
    {
-      this.filter = filter;
+      this.recurseFilter = recurseFilter;
    }
 
    /**
-    * Set the recurse filter.
+    * Set configuration.
     *
-    * @param recurseFilter the recurse filter
+    * @param configuration the configuration
     */
-   public void setRecurseFilter(ResourceFilter recurseFilter)
+   public void setConfiguration(Configuration configuration)
    {
-      this.recurseFilter = recurseFilter;
+      this.configuration = configuration;
    }
 
    @Override

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/main/java/org/jboss/deployers/vfs/plugins/util (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/main/java/org/jboss/deployers/vfs/plugins/util)

Deleted: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/main/java/org/jboss/deployers/vfs/plugins/util/ClasspathUtils.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/main/java/org/jboss/deployers/vfs/plugins/util/ClasspathUtils.java	2009-12-18 19:31:18 UTC (rev 98000)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/main/java/org/jboss/deployers/vfs/plugins/util/ClasspathUtils.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1,75 +0,0 @@
-/*
- * 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.deployers.vfs.plugins.util;
-
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.jboss.deployers.vfs.spi.structure.VFSDeploymentUnit;
-import org.jboss.logging.Logger;
-import org.jboss.virtual.VirtualFile;
-
-/**
- * Classpath utils.
- *
- * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
- */
-public class ClasspathUtils
-{
-   /** The log */
-   private static final Logger log = Logger.getLogger(ClasspathUtils.class);
-
-   /**
-    * Get the classpath urls that only belong to the unit.
-    *
-    * @param unit the deployment unit
-    * @return matching urls
-    * @throws Exception for any error
-    */
-   public static URL[] getUrls(VFSDeploymentUnit unit) throws Exception
-   {
-      List<VirtualFile> classpath = unit.getClassPath();
-      if (classpath != null && classpath.isEmpty() == false)
-      {
-         List<URL> urls = new ArrayList<URL>();
-         VirtualFile root = unit.getRoot();
-         for (VirtualFile cp : classpath)
-         {
-            VirtualFile check = cp;
-            while(check != null && check.equals(root) == false)
-               check = check.getParent();
-
-            if (check != null)
-               urls.add(cp.toURL());
-         }
-         if (urls.isEmpty() == false)
-         {
-            if (log.isTraceEnabled())
-               log.trace("Explicit urls: " + urls);
-
-            return urls.toArray(new URL[urls.size()]);
-         }
-      }
-      return new URL[0];
-   }
-}

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/main/java/org/jboss/deployers/vfs/plugins/util/ClasspathUtils.java (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/main/java/org/jboss/deployers/vfs/plugins/util/ClasspathUtils.java)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/main/java/org/jboss/deployers/vfs/plugins/util/ClasspathUtils.java	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/main/java/org/jboss/deployers/vfs/plugins/util/ClasspathUtils.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,75 @@
+/*
+ * 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.deployers.vfs.plugins.util;
+
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.jboss.deployers.vfs.spi.structure.VFSDeploymentUnit;
+import org.jboss.logging.Logger;
+import org.jboss.vfs.VirtualFile;
+
+/**
+ * Classpath utils.
+ *
+ * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
+ */
+public class ClasspathUtils
+{
+   /** The log */
+   private static final Logger log = Logger.getLogger(ClasspathUtils.class);
+
+   /**
+    * Get the classpath urls that only belong to the unit.
+    *
+    * @param unit the deployment unit
+    * @return matching urls
+    * @throws Exception for any error
+    */
+   public static URL[] getUrls(VFSDeploymentUnit unit) throws Exception
+   {
+      List<VirtualFile> classpath = unit.getClassPath();
+      if (classpath != null && classpath.isEmpty() == false)
+      {
+         List<URL> urls = new ArrayList<URL>();
+         VirtualFile root = unit.getRoot();
+         for (VirtualFile cp : classpath)
+         {
+            VirtualFile check = cp;
+            while(check != null && check.equals(root) == false)
+               check = check.getParent();
+
+            if (check != null)
+               urls.add(cp.toURL());
+         }
+         if (urls.isEmpty() == false)
+         {
+            if (log.isTraceEnabled())
+               log.trace("Explicit urls: " + urls);
+
+            return urls.toArray(new URL[urls.size()]);
+         }
+      }
+      return new URL[0];
+   }
+}

Modified: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/BootstrapDeployersTestDelegate.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/BootstrapDeployersTestDelegate.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/BootstrapDeployersTestDelegate.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -39,6 +39,7 @@
 import org.jboss.test.kernel.junit.MicrocontainerTestDelegate;
 import org.jboss.xb.binding.resolver.MutableSchemaResolver;
 import org.jboss.xb.binding.sunday.unmarshalling.SingletonSchemaResolverFactory;
+import org.jboss.classloader.plugins.filter.NothingClassFilter;
 
 /**
  * BootstrapDeployersTestDelegate.
@@ -91,7 +92,7 @@
          }
       };
       
-      parentPolicy = new ParentPolicy(classFilter, ClassFilter.NOTHING, "BEFORE");
+      parentPolicy = new ParentPolicy(classFilter, NothingClassFilter.INSTANCE, "BEFORE");
    }
    
    public BootstrapDeployersTestDelegate(Class<?> clazz) throws Exception

Modified: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/DeployersVFSTestSuite.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/DeployersVFSTestSuite.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/DeployersVFSTestSuite.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -26,8 +26,10 @@
 import junit.textui.TestRunner;
 import org.jboss.test.deployers.vfs.annotations.AnnotationScanningTestSuite;
 import org.jboss.test.deployers.vfs.classloader.ClassLoaderTestSuite;
+import org.jboss.test.deployers.vfs.reflect.ReflectTestSuite;
 import org.jboss.test.deployers.vfs.dependency.DependencyTestSuite;
 import org.jboss.test.deployers.vfs.deployer.bean.BeanDeployerTestSuite;
+import org.jboss.test.deployers.vfs.deployer.bean.test.BeanMetaDataDeployerPluginTestCase;
 import org.jboss.test.deployers.vfs.deployer.facelets.FaceletsTestSuite;
 import org.jboss.test.deployers.vfs.deployer.jaxp.JAXPDeployerTestSuite;
 import org.jboss.test.deployers.vfs.deployer.merge.MergeDeployerTestSuite;
@@ -39,11 +41,12 @@
 import org.jboss.test.deployers.vfs.matchers.VFSMatchersTestSuite;
 import org.jboss.test.deployers.vfs.metadata.VFSMetaDataTestSuite;
 import org.jboss.test.deployers.vfs.parsing.test.ParsingTestSuite;
+import org.jboss.test.deployers.vfs.redeploy.RedeployTestSuite;
 import org.jboss.test.deployers.vfs.structure.VFSStructureTestSuite;
 import org.jboss.test.deployers.vfs.structurebuilder.VFSStructureBuilderTestSuite;
 import org.jboss.test.deployers.vfs.structureprocessor.VFSStructureProcessorTestSuite;
+import org.jboss.test.deployers.vfs.webbeans.WebBeansTestSuite;
 import org.jboss.test.deployers.vfs.xb.JBossXBDeployersTestSuite;
-import org.jboss.test.deployers.vfs.redeploy.RedeployTestSuite;
 
 /**
  * Deployers VFS Test Suite.
@@ -83,6 +86,8 @@
       suite.addTest(DependencyTestSuite.suite());
       suite.addTest(JMXTestSuite.suite());
       suite.addTest(RedeployTestSuite.suite());
+      suite.addTest(WebBeansTestSuite.suite()); // now Weld
+      suite.addTest(ReflectTestSuite.suite());
 
       return suite;
    }

Modified: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/annotations/test/AbstractAnnotationsScanningUnitTest.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/annotations/test/AbstractAnnotationsScanningUnitTest.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/annotations/test/AbstractAnnotationsScanningUnitTest.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -24,9 +24,9 @@
 import java.lang.annotation.Annotation;
 import java.util.Set;
 
-import org.jboss.deployers.spi.annotations.AnnotationEnvironment;
-import org.jboss.deployers.spi.annotations.Element;
 import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.mcann.AnnotationRepository;
+import org.jboss.mcann.Element;
 import org.jboss.test.deployers.BootstrapDeployersTest;
 import org.jboss.test.deployers.vfs.annotations.support.NoExtRecurseFilter;
 import org.jboss.test.deployers.vfs.annotations.support.ext.External;
@@ -69,7 +69,7 @@
       assertEar(unit);
       try
       {
-         AnnotationEnvironment env = unit.getAttachment(AnnotationEnvironment.class);
+         AnnotationRepository env = unit.getAttachment(AnnotationRepository.class);
          assertNotNull(env);
          Set<Element<Annotation, Class<?>>> annotations = env.classIsAnnotatedWith("org.jboss.test.deployers.vfs.annotations.support.MarkedAnnotation");
          assertNotNull(annotations);
@@ -93,20 +93,20 @@
    @SuppressWarnings("unchecked")
    protected void assertAnnotations(DeploymentUnit unit, int onClass, int onMethod, int onFiled)
    {
-      AnnotationEnvironment env = unit.getAttachment(AnnotationEnvironment.class);
+      AnnotationRepository env = unit.getAttachment(AnnotationRepository.class);
       assertNotNull(env);
 
       Set classes = env.classIsAnnotatedWith("org.jboss.test.deployers.vfs.annotations.support.Marked");
       assertNotNull(classes);
-      assertEquals(onClass, classes.size());
+      assertEquals(classes.toString(), onClass, classes.size());
 
       Set methods = env.classHasMethodAnnotatedWith("org.jboss.test.deployers.vfs.annotations.support.Marked");
       assertNotNull(methods);
-      assertEquals(onMethod, methods.size());
+      assertEquals(methods.toString(), onMethod, methods.size());
 
       Set fields = env.classHasFieldAnnotatedWith("org.jboss.test.deployers.vfs.annotations.support.Marked");
       assertNotNull(fields);
-      assertEquals(onFiled, fields.size());
+      assertEquals(fields.toString(), onFiled, fields.size());
    }
 
    protected VirtualFile createTopLevelWithUtil() throws Exception

Modified: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/classloader/test/ManagedObjectClassLoadingParserUnitTestCase.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/classloader/test/ManagedObjectClassLoadingParserUnitTestCase.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/classloader/test/ManagedObjectClassLoadingParserUnitTestCase.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -44,7 +44,7 @@
 
 /**
  * ManagedObjectClassLoadingParserUnitTestCase.
- * 
+ *
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision: 1.1 $
  */
@@ -62,7 +62,7 @@
    {
       super(name);
    }
-   
+
    protected ManagedProperty assertManagedProperty(ManagedObject mo, String name, MetaType metaType, MetaValue metaValue)
    {
       ManagedProperty property = mo.getProperty(name);
@@ -71,7 +71,7 @@
       assertEquals(metaValue, property.getValue());
       return property;
    }
-   
+
    protected <T> ManagedProperty assertManagedProperty(ManagedObject mo, String name, Class<T> type, T value)
    {
       MetaType metaType = mtFactory.resolve(type);
@@ -93,7 +93,7 @@
          assertNotNull(mo);
          getLog().debug("ManagedObject: " + mo + " properties=" + mo.getProperties());
 
-         List<String> expectedProperties = Arrays.asList("name", "version", "domain", "parentDomain", "exportAll", "included", "excluded", "excludedExport", "importAll", "parentFirst", "cache", "blackList", "capabilities", "requirements");
+         List<String> expectedProperties = Arrays.asList("name", "version", "domain", "parentDomain", "topLevelClassLoader", "exportAll", "included", "excluded", "excludedExport", "importAll", "parentFirst", "cache", "blackList", "capabilities", "requirements");
          Set<String> actualProperties = mo.getPropertyNames();
          for (String expected : expectedProperties)
          {
@@ -110,6 +110,7 @@
          assertManagedProperty(mo, "version", Version.class, Version.DEFAULT_VERSION);
          assertManagedProperty(mo, "domain", String.class, null);
          assertManagedProperty(mo, "parentDomain", String.class, null);
+         assertManagedProperty(mo, "topLevelClassLoader", boolean.class, false);
          assertManagedProperty(mo, "exportAll", ExportAll.class, null);
          assertManagedProperty(mo, "included", String.class, null);
          assertManagedProperty(mo, "excluded", String.class, null);
@@ -118,7 +119,7 @@
          assertManagedProperty(mo, "parentFirst", boolean.class, true);
          assertManagedProperty(mo, "capabilities", CapabilitiesMetaData.class, new CapabilitiesMetaData());
          assertManagedProperty(mo, "requirements", RequirementsMetaData.class, new RequirementsMetaData());
-         
+
       }
       finally
       {

Modified: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/dependency/test/DependenciesTestCase.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/dependency/test/DependenciesTestCase.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/dependency/test/DependenciesTestCase.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -51,6 +51,28 @@
       assertEquals(state, context.getState());
    }
 
+   public void testBasicDependency() throws Throwable
+   {
+      DeploymentUnit du = addDeployment("/dependency", "basic");
+      try
+      {
+         assertDeployment(du, ControllerState.PRE_INSTALL);
+         DeploymentUnit tmDU = assertDeploy("/dependency", "support");
+         try
+         {
+            assertDeployment(du, ControllerState.INSTALLED);
+         }
+         finally
+         {
+            undeploy(tmDU);
+         }
+      }
+      finally
+      {
+         undeploy(du);
+      }
+   }
+
    public void testBeanDependency() throws Throwable
    {
       DeploymentUnit du = addDeployment("/dependency", "bean");

Modified: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/AbstractDeployerUnitTest.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/AbstractDeployerUnitTest.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/AbstractDeployerUnitTest.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -29,7 +29,6 @@
 import org.jboss.kernel.plugins.bootstrap.basic.BasicBootstrap;
 import org.jboss.kernel.spi.dependency.KernelController;
 import org.jboss.metadata.spi.repository.MutableMetaDataRepository;
-import org.jboss.test.deployers.AbstractDeployerTest;
 
 /**
  * AbstractDeployerUnitTestCase.
@@ -74,8 +73,6 @@
 
    protected Deployers createDeployers()
    {
-      System.err.println("AbstractDeployerUnitTest.CS: "+getClass().getProtectionDomain().getCodeSource());
-      System.err.println("AbstractDeployerTest.CS: "+AbstractDeployerTest.class.getProtectionDomain().getCodeSource());
       DeployersImpl deployers = (DeployersImpl) super.createDeployers();
       KernelController controller = getController();
       MutableMetaDataRepository repository = controller.getKernel().getMetaDataRepository().getMetaDataRepository();

Modified: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/bean/BeanDeployerTestSuite.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/bean/BeanDeployerTestSuite.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/bean/BeanDeployerTestSuite.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -31,10 +31,13 @@
 import org.jboss.test.deployers.vfs.deployer.bean.test.BeanManagedDeploymentUnitTestCase;
 import org.jboss.test.deployers.vfs.deployer.bean.test.BeanMetaDataFactoryDeployerUnitTestCase;
 import org.jboss.test.deployers.vfs.deployer.bean.test.BeanScanningUnitTestCase;
+import org.jboss.test.deployers.vfs.deployer.bean.test.BootstrapBeanMetaDataPluginTestCase;
 import org.jboss.test.deployers.vfs.deployer.bean.test.BuilderBeansUnitTestCase;
+import org.jboss.test.deployers.vfs.deployer.bean.test.BeanMetaDataDeployerPluginTestCase;
 import org.jboss.test.deployers.vfs.deployer.bean.test.KernelDeployerUnitTestCase;
 import org.jboss.test.deployers.vfs.deployer.bean.test.KernelScopeUnitTestCase;
 import org.jboss.test.deployers.vfs.deployer.bean.test.AutowireAnnotationBeansTestCase;
+import org.jboss.test.deployers.vfs.deployer.bean.test.BeansDeploymentRegistryUnitTestCase;
 
 /**
  * BeanDeployerTestSuite.
@@ -65,6 +68,9 @@
       suite.addTest(AnnotatedBeansUnitTestCase.suite());
       suite.addTest(BuilderBeansUnitTestCase.suite());
       suite.addTest(AutowireAnnotationBeansTestCase.suite());
+      suite.addTest(BeanMetaDataDeployerPluginTestCase.suite());
+      suite.addTest(BootstrapBeanMetaDataPluginTestCase.suite());
+      suite.addTest(BeansDeploymentRegistryUnitTestCase.suite());
 
       return suite;
    }

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/bean/support/NoopBeanMetaDataDeployerPlugin.java (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/bean/support/NoopBeanMetaDataDeployerPlugin.java)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/bean/support/NoopBeanMetaDataDeployerPlugin.java	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/bean/support/NoopBeanMetaDataDeployerPlugin.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,75 @@
+/*
+* 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.test.deployers.vfs.deployer.bean.support;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.jboss.beans.metadata.spi.BeanMetaData;
+import org.jboss.dependency.spi.Controller;
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.deployers.vfs.spi.deployer.helpers.BeanMetaDataDeployerPlugin;
+import org.jboss.kernel.spi.dependency.KernelControllerContext;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class NoopBeanMetaDataDeployerPlugin implements BeanMetaDataDeployerPlugin
+{
+   private static List<Integer> triggered = new ArrayList<Integer>();
+   
+   private int order;
+   
+   public NoopBeanMetaDataDeployerPlugin(int order)
+   {
+      this.order = order;
+   }
+   
+   public static List<Integer> getTriggered()
+   {
+      return triggered;
+   }
+   
+   public KernelControllerContext createContext(Controller controller, DeploymentUnit unit, BeanMetaData beanMetaData)
+   {
+      if (controller == null)
+         throw new IllegalArgumentException("Null controller");
+      if (unit == null)
+         throw new IllegalArgumentException("Null unit");
+      if (beanMetaData == null)
+         throw new IllegalArgumentException("Null beanMetadata");
+      triggered.add(order);
+      return null;
+   }
+
+   public int getRelativeOrder()
+   {
+      return order;
+   }
+
+   public boolean uninstallContext(Controller controller, DeploymentUnit unit, BeanMetaData beanMetaData)
+   {
+      throw new IllegalStateException("Should not be called since NoopBMDDP never creates any deployments");
+   }
+}

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/bean/support/NotUndeployingSpecialBeanMetaDataDeployerPlugin.java (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/bean/support/NotUndeployingSpecialBeanMetaDataDeployerPlugin.java)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/bean/support/NotUndeployingSpecialBeanMetaDataDeployerPlugin.java	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/bean/support/NotUndeployingSpecialBeanMetaDataDeployerPlugin.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,63 @@
+/*
+* 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.test.deployers.vfs.deployer.bean.support;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.jboss.beans.metadata.spi.BeanMetaData;
+import org.jboss.dependency.spi.Controller;
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class NotUndeployingSpecialBeanMetaDataDeployerPlugin extends SpecialBeanMetaDataDeployerPlugin
+{
+   private List<String> undeployedNames = new ArrayList<String>();
+   
+   public NotUndeployingSpecialBeanMetaDataDeployerPlugin()
+   {
+      // FIXME NotUndeployingSpecialControllerContextCreator constructor
+      super();
+   }
+
+   public NotUndeployingSpecialBeanMetaDataDeployerPlugin(int order)
+   {
+      // FIXME NotUndeployingSpecialControllerContextCreator constructor
+      super(order);
+   }
+
+   public boolean uninstallContext(Controller controller, DeploymentUnit unit, BeanMetaData beanMetaData)
+   {
+      undeployedNames.add(beanMetaData.getName());
+      return false;
+   }
+
+   public List<String> getUndeployedNames()
+   {
+      return undeployedNames;
+   }
+
+}

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/bean/support/SpecialBeanMetaDataDeployerPlugin.java (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/bean/support/SpecialBeanMetaDataDeployerPlugin.java)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/bean/support/SpecialBeanMetaDataDeployerPlugin.java	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/bean/support/SpecialBeanMetaDataDeployerPlugin.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,79 @@
+/*
+* 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.test.deployers.vfs.deployer.bean.support;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.jboss.beans.info.spi.BeanInfo;
+import org.jboss.beans.metadata.spi.BeanMetaData;
+import org.jboss.dependency.spi.Controller;
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.deployers.vfs.spi.deployer.helpers.BeanMetaDataDeployerPlugin;
+import org.jboss.kernel.plugins.dependency.AbstractKernelControllerContext;
+import org.jboss.kernel.spi.dependency.KernelControllerContext;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public abstract class SpecialBeanMetaDataDeployerPlugin implements BeanMetaDataDeployerPlugin
+{
+   public static final String TRIGGER = "TriggerSpecialControllerContextCreator";
+      
+   private int order;
+   
+   public SpecialBeanMetaDataDeployerPlugin()
+   {
+      this(3);
+   }
+   
+   public SpecialBeanMetaDataDeployerPlugin(int order)
+   {
+      this.order = order;
+   }
+   
+   public KernelControllerContext createContext(Controller controller, DeploymentUnit unit, BeanMetaData beanMetaData)
+   {
+      if (unit.getAttachment(TRIGGER) != null)
+         return new SpecialControllerContext(null, beanMetaData, null);
+      return null;
+   }
+   
+   public static class SpecialControllerContext extends AbstractKernelControllerContext
+   {
+      protected SpecialControllerContext(BeanInfo info, BeanMetaData metaData, Object target)
+      {
+         // FIXME SpecialControllerContext constructor
+         super(info, metaData, target);
+      }
+      
+   }
+
+   public int getRelativeOrder()
+   {
+      return order;
+   }
+
+}
+

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/bean/support/TriggerSpecialBeanMetaDataDeployerPlugin.java (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/bean/support/TriggerSpecialBeanMetaDataDeployerPlugin.java)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/bean/support/TriggerSpecialBeanMetaDataDeployerPlugin.java	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/bean/support/TriggerSpecialBeanMetaDataDeployerPlugin.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,48 @@
+/*
+* 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.test.deployers.vfs.deployer.bean.support;
+
+import org.jboss.deployers.spi.DeploymentException;
+import org.jboss.deployers.spi.deployer.DeploymentStages;
+import org.jboss.deployers.spi.deployer.helpers.AbstractRealDeployer;
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class TriggerSpecialBeanMetaDataDeployerPlugin extends AbstractRealDeployer
+{
+
+   public TriggerSpecialBeanMetaDataDeployerPlugin()
+   {
+      setStage(DeploymentStages.PRE_REAL);
+   }
+   
+   @Override
+   protected void internalDeploy(DeploymentUnit unit) throws DeploymentException
+   {
+      unit.addAttachment(SpecialBeanMetaDataDeployerPlugin.TRIGGER, SpecialBeanMetaDataDeployerPlugin.TRIGGER);
+   }
+
+}

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/bean/support/UndeployingSpecialBeanMetaDataDeployerPlugin.java (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/bean/support/UndeployingSpecialBeanMetaDataDeployerPlugin.java)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/bean/support/UndeployingSpecialBeanMetaDataDeployerPlugin.java	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/bean/support/UndeployingSpecialBeanMetaDataDeployerPlugin.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,62 @@
+/*
+* 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.test.deployers.vfs.deployer.bean.support;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.jboss.beans.metadata.spi.BeanMetaData;
+import org.jboss.dependency.spi.Controller;
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class UndeployingSpecialBeanMetaDataDeployerPlugin extends SpecialBeanMetaDataDeployerPlugin
+{
+   private List<String> undeployedNames = new ArrayList<String>();
+   
+   public UndeployingSpecialBeanMetaDataDeployerPlugin()
+   {
+      super();
+   }
+
+   public UndeployingSpecialBeanMetaDataDeployerPlugin(int order)
+   {
+      super(order);
+   }
+
+   public boolean uninstallContext(Controller controller, DeploymentUnit unit, BeanMetaData beanMetaData)
+   {
+      undeployedNames.add(beanMetaData.getName());
+      controller.uninstall(beanMetaData.getName());
+      return false;
+   }
+
+   public List<String> getUndeployedNames()
+   {
+      return undeployedNames;
+   }
+
+}

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/bean/test/BeanMetaDataDeployerPluginTestCase.java (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/bean/test/BeanMetaDataDeployerPluginTestCase.java)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/bean/test/BeanMetaDataDeployerPluginTestCase.java	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/bean/test/BeanMetaDataDeployerPluginTestCase.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,269 @@
+/*
+* 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.test.deployers.vfs.deployer.bean.test;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.jboss.dependency.spi.ControllerContext;
+import org.jboss.deployers.vfs.deployer.kernel.BeanDeployer;
+import org.jboss.deployers.vfs.deployer.kernel.BeanMetaDataDeployer;
+import org.jboss.deployers.vfs.deployer.kernel.KernelDeploymentDeployer;
+import org.jboss.deployers.vfs.spi.client.VFSDeployment;
+import org.jboss.kernel.Kernel;
+import org.jboss.kernel.plugins.dependency.AbstractKernelControllerContext;
+import org.jboss.test.deployers.support.TCCLClassLoaderDeployer;
+import org.jboss.test.deployers.vfs.deployer.AbstractDeployerUnitTest;
+import org.jboss.test.deployers.vfs.deployer.bean.support.NoopBeanMetaDataDeployerPlugin;
+import org.jboss.test.deployers.vfs.deployer.bean.support.NotUndeployingSpecialBeanMetaDataDeployerPlugin;
+import org.jboss.test.deployers.vfs.deployer.bean.support.SpecialBeanMetaDataDeployerPlugin;
+import org.jboss.test.deployers.vfs.deployer.bean.support.TriggerSpecialBeanMetaDataDeployerPlugin;
+import org.jboss.test.deployers.vfs.deployer.bean.support.UndeployingSpecialBeanMetaDataDeployerPlugin;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class BeanMetaDataDeployerPluginTestCase extends AbstractDeployerUnitTest
+{
+   BeanMetaDataDeployer beanMetaDataDeployer;
+   
+   public static Test suite()
+   {
+      return new TestSuite(BeanMetaDataDeployerPluginTestCase.class);
+   }
+
+   public BeanMetaDataDeployerPluginTestCase(String name) throws Throwable
+   {
+      super(name);
+   }
+
+   @Override
+   protected void addDeployers(Kernel kernel)
+   {
+      BeanDeployer beanDeployer = new BeanDeployer();
+      KernelDeploymentDeployer kernelDeploymentDeployer = new KernelDeploymentDeployer();
+      beanMetaDataDeployer = new BeanMetaDataDeployer(kernel);
+      addDeployer(main, new TCCLClassLoaderDeployer());
+      addDeployer(main, beanDeployer);
+      addDeployer(main, kernelDeploymentDeployer);
+      addDeployer(main, beanMetaDataDeployer);
+   }
+
+   public void testStandardDeployment() throws Exception
+   {
+      VFSDeployment context = createDeployment("/bean", "toplevel/my-beans.xml");
+      assertDeploy(context);
+      ControllerContext cc = controller.getInstalledContext("Test");
+      assertNotNull(cc);
+      assertEquals(AbstractKernelControllerContext.class, cc.getClass());
+      assertUndeploy(context);
+      assertNull(controller.getContext("Test", null));
+   }
+
+   public void testNoopControllerContextCreator() throws Throwable
+   {
+      NoopBeanMetaDataDeployerPlugin.getTriggered().clear();
+      NoopBeanMetaDataDeployerPlugin noop = new NoopBeanMetaDataDeployerPlugin(1);
+      beanMetaDataDeployer.addControllerContextCreator(noop);
+      try
+      {
+
+         VFSDeployment context = createDeployment("/bean", "toplevel/my-beans.xml");
+         assertDeploy(context);
+         
+         assertEquals(1, NoopBeanMetaDataDeployerPlugin.getTriggered().size());
+         assertTrue(NoopBeanMetaDataDeployerPlugin.getTriggered().contains(1));
+         
+         ControllerContext test = controller.getInstalledContext("Test");
+         assertNotNull(test);
+         assertEquals(AbstractKernelControllerContext.class, test.getClass());
+         assertUndeploy(context);
+         assertNull(controller.getContext("Test", null));
+      }
+      finally
+      {
+         beanMetaDataDeployer.removeControllerContextCreator(noop);
+      }
+   }
+
+   public void testSpecialControllerContextCreatorNotTriggered() throws Throwable
+   {
+      NoopBeanMetaDataDeployerPlugin.getTriggered().clear();
+      NoopBeanMetaDataDeployerPlugin noop1 = new NoopBeanMetaDataDeployerPlugin(1);
+      beanMetaDataDeployer.addControllerContextCreator(noop1);
+      NotUndeployingSpecialBeanMetaDataDeployerPlugin special = new NotUndeployingSpecialBeanMetaDataDeployerPlugin(2);
+      beanMetaDataDeployer.addControllerContextCreator(special);
+      NoopBeanMetaDataDeployerPlugin noop2 = new NoopBeanMetaDataDeployerPlugin(3);
+      beanMetaDataDeployer.addControllerContextCreator(noop2);
+      try
+      {
+         VFSDeployment context = createDeployment("/bean", "toplevel/my-beans.xml");
+         assertDeploy(context);
+         
+         assertEquals(2, NoopBeanMetaDataDeployerPlugin.getTriggered().size());
+         assertTrue(NoopBeanMetaDataDeployerPlugin.getTriggered().contains(1));
+         assertTrue(NoopBeanMetaDataDeployerPlugin.getTriggered().contains(3));
+         
+         ControllerContext test = controller.getInstalledContext("Test");
+         assertNotNull(test);
+         assertEquals(AbstractKernelControllerContext.class, test.getClass());
+         assertUndeploy(context);
+         assertNull(controller.getContext("Test", null));
+         assertEmpty(special.getUndeployedNames());
+      }
+      finally
+      {
+         beanMetaDataDeployer.removeControllerContextCreator(noop1);
+         beanMetaDataDeployer.removeControllerContextCreator(special);
+         beanMetaDataDeployer.removeControllerContextCreator(noop2);
+      }
+   }
+
+   public void testSpecialControllerContextCreatorTriggeredButNotHandlingUndeploy() throws Throwable
+   {
+      NoopBeanMetaDataDeployerPlugin.getTriggered().clear();
+      addDeployer(main, new TriggerSpecialBeanMetaDataDeployerPlugin());
+      
+      NoopBeanMetaDataDeployerPlugin noop1 = new NoopBeanMetaDataDeployerPlugin(1);
+      beanMetaDataDeployer.addControllerContextCreator(noop1);
+      NotUndeployingSpecialBeanMetaDataDeployerPlugin special = new NotUndeployingSpecialBeanMetaDataDeployerPlugin(2);
+      beanMetaDataDeployer.addControllerContextCreator(special);
+      NoopBeanMetaDataDeployerPlugin noop2 = new NoopBeanMetaDataDeployerPlugin(3);
+      beanMetaDataDeployer.addControllerContextCreator(noop2);
+      try
+      {
+         VFSDeployment context = createDeployment("/bean", "toplevel/my-beans.xml");
+         assertDeploy(context);
+         
+         assertEquals(1, NoopBeanMetaDataDeployerPlugin.getTriggered().size());
+         assertTrue(NoopBeanMetaDataDeployerPlugin.getTriggered().contains(1));
+         assertFalse(NoopBeanMetaDataDeployerPlugin.getTriggered().contains(3));
+         
+         ControllerContext test = controller.getInstalledContext("Test");
+         assertNotNull(test);
+         assertEquals(SpecialBeanMetaDataDeployerPlugin.SpecialControllerContext.class, test.getClass());
+         assertFalse(special.getUndeployedNames().contains("Test"));
+         assertUndeploy(context);
+         assertNull(controller.getContext("Test", null));
+         assertEquals(1, special.getUndeployedNames().size());
+         assertTrue(special.getUndeployedNames().contains("Test"));
+      }
+      finally
+      {
+         beanMetaDataDeployer.removeControllerContextCreator(noop1);
+         beanMetaDataDeployer.removeControllerContextCreator(special);
+         beanMetaDataDeployer.removeControllerContextCreator(noop2);
+      }
+   }
+   
+   public void testSpecialControllerContextCreatorTriggeredAndHandlingUndeploy() throws Throwable
+   {
+      NoopBeanMetaDataDeployerPlugin.getTriggered().clear();
+      addDeployer(main, new TriggerSpecialBeanMetaDataDeployerPlugin());
+      
+      NoopBeanMetaDataDeployerPlugin noop1 = new NoopBeanMetaDataDeployerPlugin(1);
+      beanMetaDataDeployer.addControllerContextCreator(noop1);
+      UndeployingSpecialBeanMetaDataDeployerPlugin special = new UndeployingSpecialBeanMetaDataDeployerPlugin(2);
+      beanMetaDataDeployer.addControllerContextCreator(special);
+      NoopBeanMetaDataDeployerPlugin noop2 = new NoopBeanMetaDataDeployerPlugin(3);
+      beanMetaDataDeployer.addControllerContextCreator(noop2);
+      try
+      {
+         VFSDeployment context = createDeployment("/bean", "toplevel/my-beans.xml");
+         assertDeploy(context);
+         
+         assertEquals(1, NoopBeanMetaDataDeployerPlugin.getTriggered().size());
+         assertTrue(NoopBeanMetaDataDeployerPlugin.getTriggered().contains(1));
+         assertFalse(NoopBeanMetaDataDeployerPlugin.getTriggered().contains(3));
+         
+         ControllerContext test = controller.getInstalledContext("Test");
+         assertNotNull(test);
+         assertEquals(SpecialBeanMetaDataDeployerPlugin.SpecialControllerContext.class, test.getClass());
+         assertFalse(special.getUndeployedNames().contains("Test"));
+         assertUndeploy(context);
+         assertNull(controller.getContext("Test", null));
+         assertEquals(1, special.getUndeployedNames().size());
+         assertTrue(special.getUndeployedNames().contains("Test"));
+      }
+      finally
+      {
+         beanMetaDataDeployer.removeControllerContextCreator(noop1);
+         beanMetaDataDeployer.removeControllerContextCreator(special);
+         beanMetaDataDeployer.removeControllerContextCreator(noop2);
+      }
+   }
+   
+   public void testControllerContextOrder() throws Throwable
+   {
+      NoopBeanMetaDataDeployerPlugin.getTriggered().clear();
+      NoopBeanMetaDataDeployerPlugin noop6 = new NoopBeanMetaDataDeployerPlugin(6);
+      beanMetaDataDeployer.addControllerContextCreator(noop6);
+      NoopBeanMetaDataDeployerPlugin noop1 = new NoopBeanMetaDataDeployerPlugin(1);
+      beanMetaDataDeployer.addControllerContextCreator(noop1);
+      NoopBeanMetaDataDeployerPlugin noop3 = new NoopBeanMetaDataDeployerPlugin(3);
+      beanMetaDataDeployer.addControllerContextCreator(noop3);
+      NoopBeanMetaDataDeployerPlugin noop4 = new NoopBeanMetaDataDeployerPlugin(4);
+      beanMetaDataDeployer.addControllerContextCreator(noop4);
+      NoopBeanMetaDataDeployerPlugin noop2 = new NoopBeanMetaDataDeployerPlugin(2);
+      beanMetaDataDeployer.addControllerContextCreator(noop2);
+      NoopBeanMetaDataDeployerPlugin noop5 = new NoopBeanMetaDataDeployerPlugin(5);
+      beanMetaDataDeployer.addControllerContextCreator(noop5);
+      try
+      {
+         VFSDeployment context = createDeployment("/bean", "toplevel/my-beans.xml");
+         assertDeploy(context);
+         
+         assertEquals(6, NoopBeanMetaDataDeployerPlugin.getTriggered().size());
+         assertTrue(NoopBeanMetaDataDeployerPlugin.getTriggered().contains(1));
+         assertTrue(NoopBeanMetaDataDeployerPlugin.getTriggered().contains(2));
+         assertTrue(NoopBeanMetaDataDeployerPlugin.getTriggered().contains(3));
+         assertTrue(NoopBeanMetaDataDeployerPlugin.getTriggered().contains(4));
+         assertTrue(NoopBeanMetaDataDeployerPlugin.getTriggered().contains(5));
+         assertTrue(NoopBeanMetaDataDeployerPlugin.getTriggered().contains(6));
+         
+         int last = 0;
+         for (int i : NoopBeanMetaDataDeployerPlugin.getTriggered())
+         {
+            assertTrue(last + 1 == i);
+            last = i;
+         }
+         
+         ControllerContext test = controller.getInstalledContext("Test");
+         assertNotNull(test);
+         assertEquals(AbstractKernelControllerContext.class, test.getClass());
+         assertUndeploy(context);
+         assertNull(controller.getContext("Test", null));
+      }
+      finally
+      {
+         beanMetaDataDeployer.removeControllerContextCreator(noop1);
+         beanMetaDataDeployer.removeControllerContextCreator(noop2);
+         beanMetaDataDeployer.removeControllerContextCreator(noop3);
+         beanMetaDataDeployer.removeControllerContextCreator(noop4);
+         beanMetaDataDeployer.removeControllerContextCreator(noop5);
+         beanMetaDataDeployer.removeControllerContextCreator(noop6);
+      }
+      
+   }
+}

Modified: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/bean/test/BeanScanningUnitTestCase.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/bean/test/BeanScanningUnitTestCase.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/bean/test/BeanScanningUnitTestCase.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -48,6 +48,8 @@
 import org.jboss.kernel.Kernel;
 import org.jboss.kernel.spi.dependency.KernelController;
 import org.jboss.test.deployers.vfs.deployer.AbstractDeployerUnitTest;
+import org.jboss.classloader.plugins.filter.JavaOnlyClassFilter;
+import org.jboss.classloader.plugins.filter.NothingClassFilter;
 
 /**
  * BeanScanningUnitTestCase.
@@ -94,8 +96,8 @@
       ClassLoaderSystem system = new DefaultClassLoaderSystem();
       // allow MC annotations, so that both, deployer and tester see the same
       ClassFilter mcAnnFilter = new PackageClassFilter(new String[]{"org.jboss.beans.metadata.api.annotations"});
-      ClassFilter filter = new CombiningClassFilter(false, new ClassFilter[]{ClassFilter.JAVA_ONLY, mcAnnFilter});
-      ParentPolicy policy = new ParentPolicy(filter, ClassFilter.NOTHING);
+      ClassFilter filter = new CombiningClassFilter(false, new ClassFilter[]{JavaOnlyClassFilter.INSTANCE, mcAnnFilter});
+      ParentPolicy policy = new ParentPolicy(filter, NothingClassFilter.INSTANCE);
       system.getDefaultDomain().setParentPolicy(policy);
 
       AbstractLevelClassLoaderSystemDeployer clsd = new AbstractLevelClassLoaderSystemDeployer();

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/bean/test/BeansDeploymentRegistryUnitTestCase.java (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/bean/test/BeansDeploymentRegistryUnitTestCase.java)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/bean/test/BeansDeploymentRegistryUnitTestCase.java	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/bean/test/BeansDeploymentRegistryUnitTestCase.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,168 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt 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.vfs.deployer.bean.test;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.jboss.beans.metadata.spi.BeanMetaData;
+import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
+import org.jboss.dependency.spi.ControllerContext;
+import org.jboss.deployers.client.spi.Deployment;
+import org.jboss.deployers.spi.attachments.MutableAttachments;
+import org.jboss.deployers.structure.spi.DeploymentRegistry;
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.deployers.structure.spi.helpers.AbstractDeploymentRegistry;
+import org.jboss.deployers.vfs.deployer.kernel.BeanDeployer;
+import org.jboss.deployers.vfs.deployer.kernel.BeanMetaDataDeployer;
+import org.jboss.deployers.vfs.deployer.kernel.KernelDeploymentDeployer;
+import org.jboss.deployers.vfs.spi.client.VFSDeployment;
+import org.jboss.kernel.Kernel;
+import org.jboss.test.deployers.support.TCCLClassLoaderDeployer;
+import org.jboss.test.deployers.vfs.deployer.AbstractDeployerUnitTest;
+
+/**
+ * BeansDeploymentRegistryUnitTestCase.
+ *
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
+ */
+public class BeansDeploymentRegistryUnitTestCase extends AbstractDeployerUnitTest
+{
+   private DeploymentRegistry registry;
+
+   public static Test suite()
+   {
+      return new TestSuite(BeansDeploymentRegistryUnitTestCase.class);
+   }
+
+   public BeansDeploymentRegistryUnitTestCase(String name) throws Throwable
+   {
+      super(name);
+   }
+
+   @Override
+   protected void tearDown() throws Exception
+   {
+      registry = null;
+      super.tearDown();
+   }
+
+   protected void addDeployers(Kernel kernel)
+   {
+      registry = new AbstractDeploymentRegistry();
+
+      BeanDeployer beanDeployer = new BeanDeployer();
+      KernelDeploymentDeployer kernelDeploymentDeployer = new KernelDeploymentDeployer();
+      TCCLClassLoaderDeployer tcclDeployer = new TCCLClassLoaderDeployer();
+      addDeployer(main, beanDeployer);
+      addDeployer(main, kernelDeploymentDeployer);
+      addDeployer(main, tcclDeployer);
+
+      BeanMetaDataDeployer deployer = new BeanMetaDataDeployer(kernel.getController());
+      deployer.setDeploymentRegistry(registry);
+      addDeployer(main, deployer);
+   }
+
+   public void testSuccessfulDeployment() throws Throwable
+   {
+      ControllerContext c1 = null;
+      ControllerContext c2 = null;
+      DeploymentUnit unit = null;
+
+      VFSDeployment deployment = createDeployment("/bean/multiple", "test.jar");
+      assertDeploy(deployment);
+      try
+      {
+         c1 = controller.getInstalledContext("Test1");
+         c2 = controller.getInstalledContext("Test2");
+         unit = assertDeploymentUnit(main, deployment.getName());
+
+         Set<ControllerContext> contexts = new HashSet<ControllerContext>();
+         contexts.add(c1);
+         contexts.add(c2);
+
+         assertEquals(contexts, registry.getContexts(unit));
+         assertSame(unit, registry.getDeployment(c1));
+         assertSame(unit, registry.getDeployment(c2));
+      }
+      finally
+      {
+         assertUndeploy(deployment);
+
+         assertEmpty(registry.getContexts(unit));
+         assertNull(registry.getDeployment(c1));
+         assertNull(registry.getDeployment(c2));
+      }
+   }
+
+   public void testFailedDeployment() throws Throwable
+   {
+      ControllerContext c1 = null;
+      ControllerContext c2 = null;
+      DeploymentUnit unit = null;
+
+      VFSDeployment deployment = createDeployment("/bean/multiple", "test.jar");
+      assertDeploy(deployment);
+      try
+      {
+         c1 = controller.getInstalledContext("Test1");
+         c2 = controller.getInstalledContext("Test2");
+         unit = assertDeploymentUnit(main, deployment.getName());
+
+         Set<ControllerContext> contexts = new HashSet<ControllerContext>();
+         contexts.add(c1);
+         contexts.add(c2);
+
+         assertEquals(contexts, registry.getContexts(unit));
+         assertSame(unit, registry.getDeployment(c1));
+         assertSame(unit, registry.getDeployment(c2));
+
+         Deployment failed = createSimpleDeployment("failed");
+         BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder("Foo", Object.class.getName());
+         builder.addAlias("Test1");
+         ((MutableAttachments)failed.getPredeterminedManagedObjects()).addAttachment(BeanMetaData.class, builder.getBeanMetaData());
+
+         try
+         {
+            DeploymentUnit du = addDeployment(main, failed);
+            ControllerContext foo = controller.getInstalledContext("Foo");
+            assertNull(foo);
+            assertEmpty(registry.getContexts(du));
+         }
+         finally
+         {
+            assertUndeploy(failed);
+         }
+      }
+      finally
+      {
+         assertUndeploy(deployment);
+
+         assertEmpty(registry.getContexts(unit));
+         assertNull(registry.getDeployment(c1));
+         assertNull(registry.getDeployment(c2));
+      }
+   }
+}
\ No newline at end of file

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/bean/test/BootstrapBeanMetaDataPluginTestCase.java (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/bean/test/BootstrapBeanMetaDataPluginTestCase.java)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/bean/test/BootstrapBeanMetaDataPluginTestCase.java	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/deployer/bean/test/BootstrapBeanMetaDataPluginTestCase.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,65 @@
+/*
+* 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.test.deployers.vfs.deployer.bean.test;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.jboss.dependency.spi.ControllerContext;
+import org.jboss.deployers.vfs.spi.structure.VFSDeploymentUnit;
+import org.jboss.test.deployers.BootstrapDeployersTest;
+import org.jboss.test.deployers.vfs.deployer.bean.support.SpecialBeanMetaDataDeployerPlugin;
+
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public class BootstrapBeanMetaDataPluginTestCase extends BootstrapDeployersTest
+{
+   public BootstrapBeanMetaDataPluginTestCase(String name)
+   {
+      super(name);
+   }
+
+   public static Test suite()
+   {
+      return new TestSuite(BootstrapBeanMetaDataPluginTestCase.class);
+   }
+
+   public void testSpecialControllerContextCreatorTriggered() throws Throwable
+   {
+      VFSDeploymentUnit unit = null;
+      try
+      {
+         unit = assertDeploy("/bean", "toplevel/my-beans.xml");
+         
+         ControllerContext test = getControllerContext("Test");
+         assertNotNull(test);
+         assertEquals(SpecialBeanMetaDataDeployerPlugin.SpecialControllerContext.class, test.getClass());
+      }
+      finally
+      {
+         undeploy(unit);
+      }
+   }
+}

Modified: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/matchers/VFSMatchersTestSuite.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/matchers/VFSMatchersTestSuite.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/matchers/VFSMatchersTestSuite.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -26,6 +26,7 @@
 import junit.textui.TestRunner;
 import org.jboss.test.deployers.vfs.matchers.test.FileMatchersTestCase;
 import org.jboss.test.deployers.vfs.matchers.test.JarExtensionsTestCase;
+import org.jboss.test.deployers.vfs.matchers.test.NameIgnoreMechanismTestCase;
 
 /**
  * Matchers test suite.
@@ -45,6 +46,7 @@
 
       suite.addTest(FileMatchersTestCase.suite());
       suite.addTest(JarExtensionsTestCase.suite());
+      suite.addTest(NameIgnoreMechanismTestCase.suite());
 
       return suite;
    }

Modified: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/matchers/support/FeedbackDeployer.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/matchers/support/FeedbackDeployer.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/matchers/support/FeedbackDeployer.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -23,6 +23,7 @@
 
 import java.util.Set;
 import java.util.TreeSet;
+import java.util.List;
 
 import org.jboss.deployers.vfs.spi.deployer.AbstractVFSParsingDeployer;
 import org.jboss.deployers.vfs.spi.structure.VFSDeploymentUnit;
@@ -33,11 +34,11 @@
  * 
  * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
  */
-public abstract class FeedbackDeployer extends AbstractVFSParsingDeployer<Object>
+public class FeedbackDeployer extends AbstractVFSParsingDeployer<Object>
 {
    private Set<String> files = new TreeSet<String>();
 
-   protected FeedbackDeployer()
+   public FeedbackDeployer()
    {
       super(Object.class);
    }
@@ -52,4 +53,14 @@
    {
       return files;
    }
+
+   @Override
+   protected Object mergeFiles(VFSDeploymentUnit unit, Object root, List<VirtualFile> files, Set<String> missingFiles) throws Exception
+   {
+      for (VirtualFile file : files)
+      {
+         parse(unit, file, root);
+      }
+      return null;
+   }
 }

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/matchers/support/NIMDeployer.java (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/matchers/support/NIMDeployer.java)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/matchers/support/NIMDeployer.java	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/matchers/support/NIMDeployer.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,47 @@
+/*
+ * 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.vfs.matchers.support;
+
+import org.jboss.deployers.spi.DeploymentException;
+import org.jboss.deployers.spi.deployer.DeploymentStages;
+import org.jboss.deployers.spi.deployer.helpers.AbstractDeployer;
+import org.jboss.deployers.spi.deployer.matchers.NameIgnoreMechanism;
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+
+/**
+ * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
+ */
+public class NIMDeployer extends AbstractDeployer
+{
+   private NameIgnoreMechanism mechanism;
+
+   public NIMDeployer(NameIgnoreMechanism mechanism)
+   {
+      setStage(DeploymentStages.PRE_PARSE);
+      this.mechanism = mechanism;
+   }
+
+   public void deploy(DeploymentUnit unit) throws DeploymentException
+   {
+      unit.addAttachment(NameIgnoreMechanism.class, mechanism);
+   }
+}

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/matchers/test/NameIgnoreMechanismTestCase.java (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/matchers/test/NameIgnoreMechanismTestCase.java)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/matchers/test/NameIgnoreMechanismTestCase.java	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/matchers/test/NameIgnoreMechanismTestCase.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,114 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2006, JBoss Inc., and individual contributors as indicated
+* by the @authors tag. See the copyright.txt 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.vfs.matchers.test;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+
+import junit.framework.Test;
+import org.jboss.deployers.client.spi.DeployerClient;
+import org.jboss.deployers.client.spi.Deployment;
+import org.jboss.deployers.spi.deployer.helpers.CollectionNameIgnoreMechanism;
+import org.jboss.deployers.vfs.plugins.structure.jar.JARStructure;
+import org.jboss.test.deployers.BaseDeployersVFSTest;
+import org.jboss.test.deployers.vfs.matchers.support.FeedbackDeployer;
+import org.jboss.test.deployers.vfs.matchers.support.NIMDeployer;
+
+/**
+ * Name ignore mechanism tests.
+ *
+ * @author <a href="mailto:ales.justin at jboss.com">Ales Justin</a>
+ */
+public class NameIgnoreMechanismTestCase extends BaseDeployersVFSTest
+{
+   public NameIgnoreMechanismTestCase(String name)
+   {
+      super(name);
+   }
+
+   public static Test suite()
+   {
+      return suite(NameIgnoreMechanismTestCase.class);
+   }
+
+   protected void testNameIgnoreMechanism(FeedbackDeployer fbd, int size) throws Throwable
+   {
+      NIMDeployer nimd = new NIMDeployer(new CollectionNameIgnoreMechanism(Collections.singleton("fst.txt")));
+
+      DeployerClient main = createMainDeployer(fbd, nimd);
+      addStructureDeployer(main, new JARStructure());
+
+      Deployment deployment = createDeployment("/matchers", "ignore");
+      main.deploy(deployment);
+
+      assertEquals(size, fbd.getFiles().size());
+      assertFalse(fbd.getFiles().contains("fst.txt"));
+   }
+
+   public void testSingleNameNoSuffix() throws Throwable
+   {
+      FeedbackDeployer fbd1 = new FeedbackDeployer();
+      fbd1.setName("empty.txt");
+      FeedbackDeployer fbd2 = new FeedbackDeployer();
+      fbd2.setName("fst.txt");
+      NIMDeployer nimd = new NIMDeployer(new CollectionNameIgnoreMechanism(Collections.singleton("fst.txt")));
+
+      DeployerClient main = createMainDeployer(fbd1, fbd2, nimd);
+      addStructureDeployer(main, new JARStructure());
+
+      Deployment deployment = createDeployment("/matchers", "ignore");
+      main.deploy(deployment);
+
+      assertFalse(fbd1.getFiles().isEmpty());
+      assertEmpty(fbd2.getFiles());
+   }
+
+   public void testMultipleNamesNoSuffix() throws Throwable
+   {
+      FeedbackDeployer fbd = new FeedbackDeployer();
+      Set<String> names = new HashSet<String>(Arrays.asList("empty.txt", "fst.txt", "snd.txt"));
+      fbd.setNames(names);
+
+      testNameIgnoreMechanism(fbd, 2);
+   }
+
+   public void testNoNameJustSuffix() throws Throwable
+   {
+      FeedbackDeployer fbd = new FeedbackDeployer();
+      fbd.setSuffix(".txt");
+      fbd.setAllowMultipleFiles(true);
+
+      testNameIgnoreMechanism(fbd, 2);
+   }
+
+   public void testNamesWithSuffix() throws Throwable
+   {
+      FeedbackDeployer fbd = new FeedbackDeployer();
+      Set<String> names = new HashSet<String>(Arrays.asList("empty.txt", "fst.txt", "snd.txt"));
+      fbd.setNames(names);
+      fbd.setSuffix(".tmp");
+
+      testNameIgnoreMechanism(fbd, 3);
+   }
+}
\ No newline at end of file

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect)

Deleted: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/ReflectTestSuite.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/ReflectTestSuite.java	2009-12-18 19:31:18 UTC (rev 98000)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/ReflectTestSuite.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1,54 +0,0 @@
-/*
- * 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.vfs.reflect;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import junit.textui.TestRunner;
-import org.jboss.test.deployers.vfs.reflect.test.ClassPoolTestCase;
-import org.jboss.test.deployers.vfs.reflect.test.IntrospectionTypeInfoTestCase;
-import org.jboss.test.deployers.vfs.reflect.test.JavassistTypeInfoTestCase;
-
-/**
- * Reflect test suite.
- *
- * @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
- * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
- */
-public class ReflectTestSuite extends TestSuite
-{
-   public static void main(String[] args)
-   {
-      TestRunner.run(suite());
-   }
-
-   public static Test suite()
-   {
-      TestSuite suite = new TestSuite("VFS ReflectTests");
-
-      suite.addTest(ClassPoolTestCase.suite());
-      suite.addTest(IntrospectionTypeInfoTestCase.suite());
-      suite.addTest(JavassistTypeInfoTestCase.suite());
-
-      return suite;
-   }
-}
\ No newline at end of file

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/ReflectTestSuite.java (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/ReflectTestSuite.java)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/ReflectTestSuite.java	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/ReflectTestSuite.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,54 @@
+/*
+ * 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.vfs.reflect;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import junit.textui.TestRunner;
+import org.jboss.test.deployers.vfs.reflect.test.ClassPoolTestCase;
+import org.jboss.test.deployers.vfs.reflect.test.IntrospectionTypeInfoTestCase;
+import org.jboss.test.deployers.vfs.reflect.test.JavassistTypeInfoTestCase;
+
+/**
+ * Reflect test suite.
+ *
+ * @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
+ */
+public class ReflectTestSuite extends TestSuite
+{
+   public static void main(String[] args)
+   {
+      TestRunner.run(suite());
+   }
+
+   public static Test suite()
+   {
+      TestSuite suite = new TestSuite("VFS ReflectTests");
+
+      suite.addTest(ClassPoolTestCase.suite());
+      suite.addTest(IntrospectionTypeInfoTestCase.suite());
+      suite.addTest(JavassistTypeInfoTestCase.suite());
+
+      return suite;
+   }
+}
\ No newline at end of file

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support)

Deleted: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/MockWarClassLoaderDeployer.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/MockWarClassLoaderDeployer.java	2009-12-18 19:31:18 UTC (rev 98000)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/MockWarClassLoaderDeployer.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1,109 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2006, Red Hat Middleware LLC, and individual contributors
- * by the @authors tag. See the copyright.txt 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.vfs.reflect.support;
-
-import org.jboss.classloader.spi.filter.ClassFilter;
-import org.jboss.classloader.spi.filter.RecursivePackageClassFilter;
-import org.jboss.classloading.spi.metadata.ClassLoadingMetaData;
-import org.jboss.classloading.spi.metadata.ExportAll;
-import org.jboss.classloading.spi.version.Version;
-import org.jboss.deployers.spi.DeploymentException;
-import org.jboss.deployers.spi.deployer.DeploymentStages;
-import org.jboss.deployers.vfs.spi.deployer.AbstractVFSRealDeployer;
-import org.jboss.deployers.vfs.spi.structure.VFSDeploymentUnit;
-
-/**
- * MockWarClassLoaderDeployer based on WarClassLoaderDeployer.
- *  
- * @author Scott.Stark at jboss.org
- * @author adrian at jboss.org
- * @author ales.justin at jboss.org
- * @author <a href="flavia.rainone at jboss.com">Flavia Rainone</a>
- */
-public class MockWarClassLoaderDeployer extends AbstractVFSRealDeployer
-{
-   /** The parent class loader first model flag */
-   private boolean java2ClassLoadingCompliance = false;
-
-   /** Package names that should be ignored for class loading */
-   private String filteredPackages;
-
-   /**
-    * Create a new WarClassLoaderDeployer.
-    */
-   public MockWarClassLoaderDeployer()
-   {
-      setStage(DeploymentStages.POST_PARSE);
-      addInput(ClassLoadingMetaData.class);
-      setOutput(ClassLoadingMetaData.class);
-   }
-
-   public boolean isJava2ClassLoadingCompliance()
-   {
-      return java2ClassLoadingCompliance;
-   }
-   
-   public void setJava2ClassLoadingCompliance(boolean flag)
-   {
-      this.java2ClassLoadingCompliance = flag;
-   }
-
-   public String getFilteredPackages()
-   {
-      return filteredPackages;
-   }
-   public void setFilteredPackages(String pkgs)
-   {
-      this.filteredPackages = pkgs;
-   }
-
-   public void deploy(VFSDeploymentUnit unit) throws DeploymentException
-   {
-      // ignore if it already has classloading or not war deployment
-      if (unit.getSimpleName().endsWith(".war") == false || unit.isAttachmentPresent(ClassLoadingMetaData.class))
-         return;
-
-      // The default domain name is the unit name
-      String domainName = unit.getName();
-
-      // The default classloading compliance is on the deployer
-      boolean j2seClassLoadingCompliance = java2ClassLoadingCompliance;
-
-      // Create a classloading metadata
-      // NOTE: Don't explicitly set the parentDomain otherwise it will create a top level classloader
-      //       for subdeployments rather than a classloader hanging off the main deployment's classloader
-      ClassLoadingMetaData classLoadingMetaData = new ClassLoadingMetaData();
-      classLoadingMetaData.setName(unit.getName());
-      classLoadingMetaData.setDomain(domainName);
-      classLoadingMetaData.setExportAll(ExportAll.NON_EMPTY);
-      classLoadingMetaData.setImportAll(true);
-      classLoadingMetaData.setVersion(Version.DEFAULT_VERSION);
-      classLoadingMetaData.setJ2seClassLoadingCompliance(j2seClassLoadingCompliance);
-      ClassFilter filter;
-      if (filteredPackages != null)
-      {
-         filter = RecursivePackageClassFilter.createRecursivePackageClassFilterFromString(filteredPackages);
-         classLoadingMetaData.setExcluded(filter);
-      }
-      unit.addAttachment(ClassLoadingMetaData.class, classLoadingMetaData);
-   }
-}

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/MockWarClassLoaderDeployer.java (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/MockWarClassLoaderDeployer.java)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/MockWarClassLoaderDeployer.java	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/MockWarClassLoaderDeployer.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,109 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt 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.vfs.reflect.support;
+
+import org.jboss.classloader.spi.filter.ClassFilter;
+import org.jboss.classloader.spi.filter.RecursivePackageClassFilter;
+import org.jboss.classloading.spi.metadata.ClassLoadingMetaData;
+import org.jboss.classloading.spi.metadata.ExportAll;
+import org.jboss.classloading.spi.version.Version;
+import org.jboss.deployers.spi.DeploymentException;
+import org.jboss.deployers.spi.deployer.DeploymentStages;
+import org.jboss.deployers.vfs.spi.deployer.AbstractVFSRealDeployer;
+import org.jboss.deployers.vfs.spi.structure.VFSDeploymentUnit;
+
+/**
+ * MockWarClassLoaderDeployer based on WarClassLoaderDeployer.
+ *  
+ * @author Scott.Stark at jboss.org
+ * @author adrian at jboss.org
+ * @author ales.justin at jboss.org
+ * @author <a href="flavia.rainone at jboss.com">Flavia Rainone</a>
+ */
+public class MockWarClassLoaderDeployer extends AbstractVFSRealDeployer
+{
+   /** The parent class loader first model flag */
+   private boolean java2ClassLoadingCompliance = false;
+
+   /** Package names that should be ignored for class loading */
+   private String filteredPackages;
+
+   /**
+    * Create a new WarClassLoaderDeployer.
+    */
+   public MockWarClassLoaderDeployer()
+   {
+      setStage(DeploymentStages.POST_PARSE);
+      addInput(ClassLoadingMetaData.class);
+      setOutput(ClassLoadingMetaData.class);
+   }
+
+   public boolean isJava2ClassLoadingCompliance()
+   {
+      return java2ClassLoadingCompliance;
+   }
+   
+   public void setJava2ClassLoadingCompliance(boolean flag)
+   {
+      this.java2ClassLoadingCompliance = flag;
+   }
+
+   public String getFilteredPackages()
+   {
+      return filteredPackages;
+   }
+   public void setFilteredPackages(String pkgs)
+   {
+      this.filteredPackages = pkgs;
+   }
+
+   public void deploy(VFSDeploymentUnit unit) throws DeploymentException
+   {
+      // ignore if it already has classloading or not war deployment
+      if (unit.getSimpleName().endsWith(".war") == false || unit.isAttachmentPresent(ClassLoadingMetaData.class))
+         return;
+
+      // The default domain name is the unit name
+      String domainName = unit.getName();
+
+      // The default classloading compliance is on the deployer
+      boolean j2seClassLoadingCompliance = java2ClassLoadingCompliance;
+
+      // Create a classloading metadata
+      // NOTE: Don't explicitly set the parentDomain otherwise it will create a top level classloader
+      //       for subdeployments rather than a classloader hanging off the main deployment's classloader
+      ClassLoadingMetaData classLoadingMetaData = new ClassLoadingMetaData();
+      classLoadingMetaData.setName(unit.getName());
+      classLoadingMetaData.setDomain(domainName);
+      classLoadingMetaData.setExportAll(ExportAll.NON_EMPTY);
+      classLoadingMetaData.setImportAll(true);
+      classLoadingMetaData.setVersion(Version.DEFAULT_VERSION);
+      classLoadingMetaData.setJ2seClassLoadingCompliance(j2seClassLoadingCompliance);
+      ClassFilter filter;
+      if (filteredPackages != null)
+      {
+         filter = RecursivePackageClassFilter.createRecursivePackageClassFilterFromString(filteredPackages);
+         classLoadingMetaData.setExcluded(filter);
+      }
+      unit.addAttachment(ClassLoadingMetaData.class, classLoadingMetaData);
+   }
+}

Deleted: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/PoolFactoryInitializer.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/PoolFactoryInitializer.java	2009-12-18 19:31:18 UTC (rev 98000)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/PoolFactoryInitializer.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1,56 +0,0 @@
-/*
- * 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.vfs.reflect.support;
-
-import javassist.scopedpool.ScopedClassPoolRepository;
-
-import org.jboss.reflect.plugins.javassist.JavassistTypeInfoFactoryImpl;
-import org.jboss.reflect.plugins.javassist.classpool.ClassPoolFactory;
-import org.jboss.reflect.plugins.javassist.classpool.DefaultClassPoolFactory;
-import org.jboss.reflect.plugins.javassist.classpool.RepositoryClassPoolFactory;
-
-/**
- * Initializes the pool factory.
- * 
- * @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 PoolFactoryInitializer
-{
-   private ScopedClassPoolRepository poolRepository;
-   
-   public PoolFactoryInitializer(ScopedClassPoolRepository repository)
-   {
-      this.poolRepository = repository;
-   }
-
-   public void start()
-   {
-      ClassPoolFactory classPoolFactory = new RepositoryClassPoolFactory(poolRepository);
-      JavassistTypeInfoFactoryImpl.setPoolFactory(classPoolFactory);
-   }
-
-   public void stop()
-   {
-      JavassistTypeInfoFactoryImpl.setPoolFactory(DefaultClassPoolFactory.getInstance());
-   }
-}

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/PoolFactoryInitializer.java (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/PoolFactoryInitializer.java)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/PoolFactoryInitializer.java	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/PoolFactoryInitializer.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -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.vfs.reflect.support;
+
+import javassist.scopedpool.ScopedClassPoolRepository;
+
+import org.jboss.reflect.plugins.javassist.JavassistTypeInfoFactoryImpl;
+import org.jboss.reflect.plugins.javassist.classpool.ClassPoolFactory;
+import org.jboss.reflect.plugins.javassist.classpool.DefaultClassPoolFactory;
+import org.jboss.reflect.plugins.javassist.classpool.RepositoryClassPoolFactory;
+
+/**
+ * Initializes the pool factory.
+ * 
+ * @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 PoolFactoryInitializer
+{
+   private ScopedClassPoolRepository poolRepository;
+   
+   public PoolFactoryInitializer(ScopedClassPoolRepository repository)
+   {
+      this.poolRepository = repository;
+   }
+
+   public void start()
+   {
+      ClassPoolFactory classPoolFactory = new RepositoryClassPoolFactory(poolRepository);
+      JavassistTypeInfoFactoryImpl.setPoolFactory(classPoolFactory);
+   }
+
+   public void stop()
+   {
+      JavassistTypeInfoFactoryImpl.setPoolFactory(DefaultClassPoolFactory.getInstance());
+   }
+}

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/crm (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/crm)

Deleted: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/crm/CrmFacade.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/crm/CrmFacade.java	2009-12-18 19:31:18 UTC (rev 98000)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/crm/CrmFacade.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1,33 +0,0 @@
-/*
- * 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.vfs.reflect.support.crm;
-
-/**
- * 
- * @author <a href="mailto:flavia.rainone at jboss.org">Flavia Rainone</a>
- *
- * @version $Revision$
- */
-public class CrmFacade
-{
-
-}

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/crm/CrmFacade.java (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/crm/CrmFacade.java)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/crm/CrmFacade.java	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/crm/CrmFacade.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,33 @@
+/*
+ * 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.vfs.reflect.support.crm;
+
+/**
+ * 
+ * @author <a href="mailto:flavia.rainone at jboss.org">Flavia Rainone</a>
+ *
+ * @version $Revision$
+ */
+public class CrmFacade
+{
+
+}

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/ejb (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/ejb)

Deleted: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/ejb/BusinessInterface.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/ejb/BusinessInterface.java	2009-12-18 19:31:18 UTC (rev 98000)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/ejb/BusinessInterface.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1,32 +0,0 @@
-/*
- * 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.vfs.reflect.support.ejb;
-
-/**
- * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
- * 
- * @version $Revision$
- */
-public interface BusinessInterface
-{
-   int add(int x, int y);
-}

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/ejb/BusinessInterface.java (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/ejb/BusinessInterface.java)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/ejb/BusinessInterface.java	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/ejb/BusinessInterface.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,32 @@
+/*
+ * 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.vfs.reflect.support.ejb;
+
+/**
+ * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
+ * 
+ * @version $Revision$
+ */
+public interface BusinessInterface
+{
+   int add(int x, int y);
+}

Deleted: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/ejb/MySLSBean.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/ejb/MySLSBean.java	2009-12-18 19:31:18 UTC (rev 98000)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/ejb/MySLSBean.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1,35 +0,0 @@
-/*
- * 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.vfs.reflect.support.ejb;
-
-/**
- * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
- * 
- * @version $Revision$
- */
-public class MySLSBean implements BusinessInterface
-{
-   public int add(int x, int y)
-   {
-      return x + y;
-   }
-}

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/ejb/MySLSBean.java (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/ejb/MySLSBean.java)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/ejb/MySLSBean.java	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/ejb/MySLSBean.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,35 @@
+/*
+ * 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.vfs.reflect.support.ejb;
+
+/**
+ * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
+ * 
+ * @version $Revision$
+ */
+public class MySLSBean implements BusinessInterface
+{
+   public int add(int x, int y)
+   {
+      return x + y;
+   }
+}

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/ext (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/ext)

Deleted: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/ext/External.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/ext/External.java	2009-12-18 19:31:18 UTC (rev 98000)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/ext/External.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1,31 +0,0 @@
-/*
- * 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.vfs.reflect.support.ext;
-
-/**
- * @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
- * 
- * @version $Revision$
- */
-public class External
-{
-}

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/ext/External.java (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/ext/External.java)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/ext/External.java	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/ext/External.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,31 @@
+/*
+ * 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.vfs.reflect.support.ext;
+
+/**
+ * @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
+ * 
+ * @version $Revision$
+ */
+public class External
+{
+}

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/jar (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/jar)

Deleted: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/jar/PlainJavaBean.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/jar/PlainJavaBean.java	2009-12-18 19:31:18 UTC (rev 98000)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/jar/PlainJavaBean.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1,31 +0,0 @@
-/*
- * 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.vfs.reflect.support.jar;
-
-/**
- * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
- * 
- * @version $Revision$
- */
-public class PlainJavaBean
-{
-}

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/jar/PlainJavaBean.java (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/jar/PlainJavaBean.java)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/jar/PlainJavaBean.java	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/jar/PlainJavaBean.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,31 @@
+/*
+ * 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.vfs.reflect.support.jar;
+
+/**
+ * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
+ * 
+ * @version $Revision$
+ */
+public class PlainJavaBean
+{
+}

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/jsf (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/jsf)

Deleted: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/jsf/JsfBean.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/jsf/JsfBean.java	2009-12-18 19:31:18 UTC (rev 98000)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/jsf/JsfBean.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1,34 +0,0 @@
-/*
- * 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.vfs.reflect.support.jsf;
-
-
-/**
- * 
- * @author <a href="mailto:flavia.rainone at jboss.org">Flavia Rainone</a>
- *
- * @version $Revision$
- */
-public class JsfBean
-{
-
-}

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/jsf/JsfBean.java (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/jsf/JsfBean.java)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/jsf/JsfBean.java	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/jsf/JsfBean.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,34 @@
+/*
+ * 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.vfs.reflect.support.jsf;
+
+
+/**
+ * 
+ * @author <a href="mailto:flavia.rainone at jboss.org">Flavia Rainone</a>
+ *
+ * @version $Revision$
+ */
+public class JsfBean
+{
+
+}

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/service (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/service)

Deleted: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/service/SomeMBean.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/service/SomeMBean.java	2009-12-18 19:31:18 UTC (rev 98000)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/service/SomeMBean.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1,33 +0,0 @@
-/*
- * 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.vfs.reflect.support.service;
-
-/**
- * 
- * @author <a href="mailto:flavia.rainone at jboss.org">Flavia Rainone</a>
- *
- * @version $Revision$
- */
-public class SomeMBean
-{
-
-}

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/service/SomeMBean.java (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/service/SomeMBean.java)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/service/SomeMBean.java	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/service/SomeMBean.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,33 @@
+/*
+ * 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.vfs.reflect.support.service;
+
+/**
+ * 
+ * @author <a href="mailto:flavia.rainone at jboss.org">Flavia Rainone</a>
+ *
+ * @version $Revision$
+ */
+public class SomeMBean
+{
+
+}

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/tif (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/tif)

Deleted: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/tif/TIFTester.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/tif/TIFTester.java	2009-12-18 19:31:18 UTC (rev 98000)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/tif/TIFTester.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1,35 +0,0 @@
-/*
- * 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.vfs.reflect.support.tif;
-
-import org.jboss.test.deployers.vfs.reflect.support.web.AnyServlet;
-
-/**
- * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
- */
-public class TIFTester
-{
-   public AnyServlet getAnys()
-   {
-      return new AnyServlet();
-   }
-}

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/tif/TIFTester.java (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/tif/TIFTester.java)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/tif/TIFTester.java	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/tif/TIFTester.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,35 @@
+/*
+ * 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.vfs.reflect.support.tif;
+
+import org.jboss.test.deployers.vfs.reflect.support.web.AnyServlet;
+
+/**
+ * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
+ */
+public class TIFTester
+{
+   public AnyServlet getAnys()
+   {
+      return new AnyServlet();
+   }
+}

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/ui (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/ui)

Deleted: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/ui/UIBean.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/ui/UIBean.java	2009-12-18 19:31:18 UTC (rev 98000)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/ui/UIBean.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1,33 +0,0 @@
-/*
- * 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.vfs.reflect.support.ui;
-
-/**
- * 
- * @author <a href="mailto:flavia.rainone at jboss.org">Flavia Rainone</a>
- *
- * @version $Revision$
- */
-public class UIBean
-{
-
-}

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/ui/UIBean.java (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/ui/UIBean.java)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/ui/UIBean.java	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/ui/UIBean.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,33 @@
+/*
+ * 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.vfs.reflect.support.ui;
+
+/**
+ * 
+ * @author <a href="mailto:flavia.rainone at jboss.org">Flavia Rainone</a>
+ *
+ * @version $Revision$
+ */
+public class UIBean
+{
+
+}

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/util (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/util)

Deleted: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/util/SomeUtil.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/util/SomeUtil.java	2009-12-18 19:31:18 UTC (rev 98000)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/util/SomeUtil.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1,31 +0,0 @@
-/*
- * 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.vfs.reflect.support.util;
-
-/**
- * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
- * 
- * @version $Revision$
- */
-public class SomeUtil
-{
-}

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/util/SomeUtil.java (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/util/SomeUtil.java)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/util/SomeUtil.java	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/util/SomeUtil.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,31 @@
+/*
+ * 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.vfs.reflect.support.util;
+
+/**
+ * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
+ * 
+ * @version $Revision$
+ */
+public class SomeUtil
+{
+}

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/web (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/web)

Deleted: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/web/AnyServlet.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/web/AnyServlet.java	2009-12-18 19:31:18 UTC (rev 98000)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/web/AnyServlet.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1,38 +0,0 @@
-/*
- * 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.vfs.reflect.support.web;
-
-import org.jboss.test.deployers.vfs.reflect.support.jar.PlainJavaBean;
-
-/**
- * 
- * @author <a href="mailto:flavia.rainone at jboss.org">Flavia Rainone</a>
- *
- * @version $Revision$
- */
-public class AnyServlet
-{
-   public PlainJavaBean getBean()
-   {
-      return new PlainJavaBean();
-   }
-}

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/web/AnyServlet.java (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/web/AnyServlet.java)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/web/AnyServlet.java	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/support/web/AnyServlet.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,38 @@
+/*
+ * 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.vfs.reflect.support.web;
+
+import org.jboss.test.deployers.vfs.reflect.support.jar.PlainJavaBean;
+
+/**
+ * 
+ * @author <a href="mailto:flavia.rainone at jboss.org">Flavia Rainone</a>
+ *
+ * @version $Revision$
+ */
+public class AnyServlet
+{
+   public PlainJavaBean getBean()
+   {
+      return new PlainJavaBean();
+   }
+}

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test)

Deleted: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/ClassPoolTest.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/ClassPoolTest.java	2009-12-18 19:31:18 UTC (rev 98000)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/ClassPoolTest.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1,176 +0,0 @@
-/*
- * 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.vfs.reflect.test;
-
-import java.util.Map;
-
-import javassist.ClassPool;
-import javassist.CtClass;
-import javassist.CtMethod;
-import javassist.scopedpool.ScopedClassPoolRepository;
-
-import org.jboss.deployers.structure.spi.DeploymentUnit;
-import org.jboss.reflect.plugins.javassist.JavassistTypeInfoFactory;
-import org.jboss.reflect.spi.TypeInfoFactory;
-import org.jboss.test.deployers.vfs.reflect.support.jar.PlainJavaBean;
-import org.jboss.test.deployers.vfs.reflect.support.web.AnyServlet;
-import org.jboss.virtual.VirtualFile;
-
-/**
- * Abstract test for ClassPool.
- *
- * @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
- * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
- *
- * @version $Revision$
- */
-public abstract class ClassPoolTest extends ReflectTest
-{
-   protected ScopedClassPoolRepository classPoolRepository = null; 
-   
-   protected ClassPoolTest(String name)
-   {
-      super(name);
-   }
-
-   @Override
-   public void setUp() throws Exception
-   {
-      super.setUp();
-      classPoolRepository = (ScopedClassPoolRepository) getBean("ClassPoolRepository");
-      assertNotNull(classPoolRepository);
-   }
-
-   @Override
-   protected void tearDown() throws Exception
-   {
-      classPoolRepository = null;
-      super.tearDown();
-   }
-
-   protected TypeInfoFactory createTypeInfoFactory()
-   {
-      return new JavassistTypeInfoFactory();
-   }
-
-   protected void assertReflect(VirtualFile file, Map<Class<?>, String> classes) throws Exception
-   {
-      DeploymentUnit unit = assertDeploy(file);
-      try
-      {
-         for (Map.Entry<Class<?>, String> entry : classes.entrySet())
-         {
-            DeploymentUnit du = getDeploymentUnit(unit, entry.getValue());
-            ClassLoader classLoader = getClassLoader(du);
-            Class<?> clazz = entry.getKey();
-            String className = clazz.getName();
-            // sanity check
-            Class<?> loadedClass = assertLoadClass(className, classLoader);
-            ClassPool classPool = classPoolRepository.registerClassLoader(classLoader);
-            assertNotNull("ClassPool for " + classLoader + " is null", classPool);
-            CtClass ctClass = classPool.getCtClass(className);
-            assertNotNull("Class" + className + " retrieved from pool " + classPool + " is null", ctClass);
-            assertEquals(className, clazz.getName());
-            ClassLoader cl = ctClass.getClassPool().getClassLoader();
-            assertEquals("Class has been loaded by the wrong class loader: " + clazz.getName(), loadedClass.getClassLoader(), cl);
-         }
-      }
-      finally
-      {
-         undeploy(unit);
-      }
-   }
-
-   protected void assertSimpleHierarchy(ClassLoader topCL, ClassLoader childCL) throws Exception
-   {
-      ClassPool classPool = classPoolRepository.registerClassLoader(childCL);
-      CtClass ctClass = classPool.getCtClass(AnyServlet.class.getName());
-      CtMethod ctMethod = ctClass.getDeclaredMethod("getBean");
-      assertNotNull("No such 'getBean' method on " + ctClass, ctMethod);
-
-      CtClass returnCtClass = ctMethod.getReturnType();
-      classPool = classPoolRepository.registerClassLoader(topCL);
-      CtClass returnCtClass2 = classPool.getCtClass(PlainJavaBean.class.getName());
-      assertSame(returnCtClass, returnCtClass2);
-   }
-
-   protected void assertNonDeploymentModule(ClassLoader cl, Class<?> anysClass) throws Exception
-   {
-      ClassPool classPool = classPoolRepository.registerClassLoader(cl);
-      CtClass asClass = classPool.getCtClass(anysClass.getName());
-      CtClass pjbClass = classPool.getCtClass(PlainJavaBean.class.getName());
-      CtClass rtClass = asClass.getDeclaredMethod("getBean").getReturnType();
-      assertEquals(pjbClass, rtClass);
-   }
-
-   protected void assertNonDeploymentModule(ClassLoader cl, Class<?> anysClass, Class<?> tifClass) throws Exception
-   {
-      ClassPool classPool = classPoolRepository.registerClassLoader(cl);
-      ClassPool tifClassPool = classPoolRepository.registerClassLoader(tifClass.getClassLoader());
-      ClassPool anysClassPool = classPoolRepository.registerClassLoader(anysClass.getClassLoader());
-      
-      CtClass tifCtClass = tifClassPool.getCtClass(tifClass.getName());
-      CtClass tifRT = tifCtClass.getDeclaredMethod("getAnys").getReturnType();
-      CtClass asCtClass = anysClassPool.getCtClass(anysClass.getName());
-      assertEquals(tifRT, asCtClass);
-
-      CtClass pjbCtClass = classPool.getCtClass(PlainJavaBean.class.getName());
-      CtClass rtL = asCtClass.getDeclaredMethod("getBean").getReturnType();
-      assertEquals(pjbCtClass, rtL);
-   }
-
-   protected void assertIsolated(ClassLoader cl1, ClassLoader cl2, Class<?> clazz1, Class<?> clazz2) throws Exception
-   {
-      ClassPool classPool1 = classPoolRepository.registerClassLoader(cl1);
-      ClassPool classPool2 = classPoolRepository.registerClassLoader(cl2);
-
-      CtClass class1 = classPool1.getCtClass(PlainJavaBean.class.getName());
-      CtClass class2 = classPool2.getCtClass(PlainJavaBean.class.getName());
-      assertNotSame(class1, class2);
-      
-      ClassPool classPool3 = classPoolRepository.registerClassLoader(clazz1.getClassLoader());
-      CtClass class3 = classPool3.getCtClass(clazz1.getName());
-      assertEquals(class1, class3);
-
-      ClassPool classPool4 = classPoolRepository.registerClassLoader(clazz2.getClassLoader());
-      CtClass class4 = classPool4.getCtClass(clazz2.getName());
-      assertEquals(class2, class4);
-      
-      assertNotSame(class3, class4);
-   }
-
-   protected void assertDomainHierarchy(ClassLoader topCL, ClassLoader leftCL, ClassLoader rightCL) throws Exception
-   {
-      ClassPool topClassPool = classPoolRepository.registerClassLoader(topCL);
-      ClassPool leftClassPool = classPoolRepository.registerClassLoader(leftCL);
-      ClassPool rightClassPool = classPoolRepository.registerClassLoader(rightCL);
-      CtClass pjbClass = topClassPool.getCtClass(PlainJavaBean.class.getName());
-      CtClass asClassL = leftClassPool.getCtClass(AnyServlet.class.getName());
-      CtClass asClassR = rightClassPool.getCtClass(AnyServlet.class.getName());
-
-      CtClass rtClassL = asClassL.getDeclaredMethod("getBean").getReturnType();
-      assertEquals(pjbClass, rtClassL);
-
-      CtClass rtClassR = asClassR.getDeclaredMethod("getBean").getReturnType();
-      assertEquals(pjbClass, rtClassR);
-   }
-}
\ No newline at end of file

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/ClassPoolTest.java (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/ClassPoolTest.java)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/ClassPoolTest.java	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/ClassPoolTest.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,176 @@
+/*
+ * 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.vfs.reflect.test;
+
+import java.util.Map;
+
+import javassist.ClassPool;
+import javassist.CtClass;
+import javassist.CtMethod;
+import javassist.scopedpool.ScopedClassPoolRepository;
+
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.reflect.plugins.javassist.JavassistTypeInfoFactory;
+import org.jboss.reflect.spi.TypeInfoFactory;
+import org.jboss.test.deployers.vfs.reflect.support.jar.PlainJavaBean;
+import org.jboss.test.deployers.vfs.reflect.support.web.AnyServlet;
+import org.jboss.vfs.VirtualFile;
+
+/**
+ * Abstract test for ClassPool.
+ *
+ * @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
+ *
+ * @version $Revision$
+ */
+public abstract class ClassPoolTest extends ReflectTest
+{
+   protected ScopedClassPoolRepository classPoolRepository = null; 
+   
+   protected ClassPoolTest(String name)
+   {
+      super(name);
+   }
+
+   @Override
+   public void setUp() throws Exception
+   {
+      super.setUp();
+      classPoolRepository = (ScopedClassPoolRepository) getBean("ClassPoolRepository");
+      assertNotNull(classPoolRepository);
+   }
+
+   @Override
+   protected void tearDown() throws Exception
+   {
+      classPoolRepository = null;
+      super.tearDown();
+   }
+
+   protected TypeInfoFactory createTypeInfoFactory()
+   {
+      return new JavassistTypeInfoFactory();
+   }
+
+   protected void assertReflect(VirtualFile file, Map<Class<?>, String> classes) throws Exception
+   {
+      DeploymentUnit unit = assertDeploy(file);
+      try
+      {
+         for (Map.Entry<Class<?>, String> entry : classes.entrySet())
+         {
+            DeploymentUnit du = getDeploymentUnit(unit, entry.getValue());
+            ClassLoader classLoader = getClassLoader(du);
+            Class<?> clazz = entry.getKey();
+            String className = clazz.getName();
+            // sanity check
+            Class<?> loadedClass = assertLoadClass(className, classLoader);
+            ClassPool classPool = classPoolRepository.registerClassLoader(classLoader);
+            assertNotNull("ClassPool for " + classLoader + " is null", classPool);
+            CtClass ctClass = classPool.getCtClass(className);
+            assertNotNull("Class" + className + " retrieved from pool " + classPool + " is null", ctClass);
+            assertEquals(className, clazz.getName());
+            ClassLoader cl = ctClass.getClassPool().getClassLoader();
+            assertEquals("Class has been loaded by the wrong class loader: " + clazz.getName(), loadedClass.getClassLoader(), cl);
+         }
+      }
+      finally
+      {
+         undeploy(unit);
+      }
+   }
+
+   protected void assertSimpleHierarchy(ClassLoader topCL, ClassLoader childCL) throws Exception
+   {
+      ClassPool classPool = classPoolRepository.registerClassLoader(childCL);
+      CtClass ctClass = classPool.getCtClass(AnyServlet.class.getName());
+      CtMethod ctMethod = ctClass.getDeclaredMethod("getBean");
+      assertNotNull("No such 'getBean' method on " + ctClass, ctMethod);
+
+      CtClass returnCtClass = ctMethod.getReturnType();
+      classPool = classPoolRepository.registerClassLoader(topCL);
+      CtClass returnCtClass2 = classPool.getCtClass(PlainJavaBean.class.getName());
+      assertSame(returnCtClass, returnCtClass2);
+   }
+
+   protected void assertNonDeploymentModule(ClassLoader cl, Class<?> anysClass) throws Exception
+   {
+      ClassPool classPool = classPoolRepository.registerClassLoader(cl);
+      CtClass asClass = classPool.getCtClass(anysClass.getName());
+      CtClass pjbClass = classPool.getCtClass(PlainJavaBean.class.getName());
+      CtClass rtClass = asClass.getDeclaredMethod("getBean").getReturnType();
+      assertEquals(pjbClass, rtClass);
+   }
+
+   protected void assertNonDeploymentModule(ClassLoader cl, Class<?> anysClass, Class<?> tifClass) throws Exception
+   {
+      ClassPool classPool = classPoolRepository.registerClassLoader(cl);
+      ClassPool tifClassPool = classPoolRepository.registerClassLoader(tifClass.getClassLoader());
+      ClassPool anysClassPool = classPoolRepository.registerClassLoader(anysClass.getClassLoader());
+      
+      CtClass tifCtClass = tifClassPool.getCtClass(tifClass.getName());
+      CtClass tifRT = tifCtClass.getDeclaredMethod("getAnys").getReturnType();
+      CtClass asCtClass = anysClassPool.getCtClass(anysClass.getName());
+      assertEquals(tifRT, asCtClass);
+
+      CtClass pjbCtClass = classPool.getCtClass(PlainJavaBean.class.getName());
+      CtClass rtL = asCtClass.getDeclaredMethod("getBean").getReturnType();
+      assertEquals(pjbCtClass, rtL);
+   }
+
+   protected void assertIsolated(ClassLoader cl1, ClassLoader cl2, Class<?> clazz1, Class<?> clazz2) throws Exception
+   {
+      ClassPool classPool1 = classPoolRepository.registerClassLoader(cl1);
+      ClassPool classPool2 = classPoolRepository.registerClassLoader(cl2);
+
+      CtClass class1 = classPool1.getCtClass(PlainJavaBean.class.getName());
+      CtClass class2 = classPool2.getCtClass(PlainJavaBean.class.getName());
+      assertNotSame(class1, class2);
+      
+      ClassPool classPool3 = classPoolRepository.registerClassLoader(clazz1.getClassLoader());
+      CtClass class3 = classPool3.getCtClass(clazz1.getName());
+      assertEquals(class1, class3);
+
+      ClassPool classPool4 = classPoolRepository.registerClassLoader(clazz2.getClassLoader());
+      CtClass class4 = classPool4.getCtClass(clazz2.getName());
+      assertEquals(class2, class4);
+      
+      assertNotSame(class3, class4);
+   }
+
+   protected void assertDomainHierarchy(ClassLoader topCL, ClassLoader leftCL, ClassLoader rightCL) throws Exception
+   {
+      ClassPool topClassPool = classPoolRepository.registerClassLoader(topCL);
+      ClassPool leftClassPool = classPoolRepository.registerClassLoader(leftCL);
+      ClassPool rightClassPool = classPoolRepository.registerClassLoader(rightCL);
+      CtClass pjbClass = topClassPool.getCtClass(PlainJavaBean.class.getName());
+      CtClass asClassL = leftClassPool.getCtClass(AnyServlet.class.getName());
+      CtClass asClassR = rightClassPool.getCtClass(AnyServlet.class.getName());
+
+      CtClass rtClassL = asClassL.getDeclaredMethod("getBean").getReturnType();
+      assertEquals(pjbClass, rtClassL);
+
+      CtClass rtClassR = asClassR.getDeclaredMethod("getBean").getReturnType();
+      assertEquals(pjbClass, rtClassR);
+   }
+}
\ No newline at end of file

Deleted: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/ClassPoolTestCase.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/ClassPoolTestCase.java	2009-12-18 19:31:18 UTC (rev 98000)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/ClassPoolTestCase.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1,45 +0,0 @@
-/*
- * 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.vfs.reflect.test;
-
-import junit.framework.Test;
-
-/**
- * Test case for ClassPool.
- * 
- * @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
- * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
- *
- * @version $Revision$
- */
-public class ClassPoolTestCase extends ClassPoolTest
-{
-   public ClassPoolTestCase(String name)
-   {
-      super(name);
-   }
-
-   public static Test suite()
-   {
-      return suite(ClassPoolTestCase.class);
-   }
-}
\ No newline at end of file

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/ClassPoolTestCase.java (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/ClassPoolTestCase.java)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/ClassPoolTestCase.java	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/ClassPoolTestCase.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,45 @@
+/*
+ * 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.vfs.reflect.test;
+
+import junit.framework.Test;
+
+/**
+ * Test case for ClassPool.
+ * 
+ * @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
+ *
+ * @version $Revision$
+ */
+public class ClassPoolTestCase extends ClassPoolTest
+{
+   public ClassPoolTestCase(String name)
+   {
+      super(name);
+   }
+
+   public static Test suite()
+   {
+      return suite(ClassPoolTestCase.class);
+   }
+}
\ No newline at end of file

Deleted: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/IntrospectionTypeInfoTestCase.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/IntrospectionTypeInfoTestCase.java	2009-12-18 19:31:18 UTC (rev 98000)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/IntrospectionTypeInfoTestCase.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1,51 +0,0 @@
-/*
- * 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.vfs.reflect.test;
-
-import junit.framework.Test;
-import org.jboss.reflect.plugins.introspection.IntrospectionTypeInfoFactory;
-import org.jboss.reflect.spi.TypeInfoFactory;
-
-/**
- * Introspection test case for TypeInfo.
- *
- * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
- *
- * @version $Revision: 95613 $
- */
-public class IntrospectionTypeInfoTestCase extends TypeInfoTest
-{
-   public IntrospectionTypeInfoTestCase(String name)
-   {
-      super(name);
-   }
-
-   public static Test suite()
-   {
-      return suite(IntrospectionTypeInfoTestCase.class);
-   }
-
-   protected TypeInfoFactory createTypeInfoFactory()
-   {
-      return new IntrospectionTypeInfoFactory();
-   }
-}
\ No newline at end of file

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/IntrospectionTypeInfoTestCase.java (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/IntrospectionTypeInfoTestCase.java)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/IntrospectionTypeInfoTestCase.java	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/IntrospectionTypeInfoTestCase.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -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.test.deployers.vfs.reflect.test;
+
+import junit.framework.Test;
+import org.jboss.reflect.plugins.introspection.IntrospectionTypeInfoFactory;
+import org.jboss.reflect.spi.TypeInfoFactory;
+
+/**
+ * Introspection test case for TypeInfo.
+ *
+ * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
+ *
+ * @version $Revision: 95613 $
+ */
+public class IntrospectionTypeInfoTestCase extends TypeInfoTest
+{
+   public IntrospectionTypeInfoTestCase(String name)
+   {
+      super(name);
+   }
+
+   public static Test suite()
+   {
+      return suite(IntrospectionTypeInfoTestCase.class);
+   }
+
+   protected TypeInfoFactory createTypeInfoFactory()
+   {
+      return new IntrospectionTypeInfoFactory();
+   }
+}
\ No newline at end of file

Deleted: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/JavassistTypeInfoTestCase.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/JavassistTypeInfoTestCase.java	2009-12-18 19:31:18 UTC (rev 98000)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/JavassistTypeInfoTestCase.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1,52 +0,0 @@
-/*
- * 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.vfs.reflect.test;
-
-import junit.framework.Test;
-
-import org.jboss.reflect.plugins.javassist.JavassistTypeInfoFactory;
-import org.jboss.reflect.spi.TypeInfoFactory;
-
-/**
- * Javassist test case for TypeInfo.
- *
- * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
- *
- * @version $Revision: 95613 $
- */
-public class JavassistTypeInfoTestCase extends TypeInfoTest
-{
-   public JavassistTypeInfoTestCase(String name)
-   {
-      super(name);
-   }
-
-   public static Test suite()
-   {
-      return suite(JavassistTypeInfoTestCase.class);
-   }
-
-   protected TypeInfoFactory createTypeInfoFactory()
-   {
-      return new JavassistTypeInfoFactory();
-   }
-}
\ No newline at end of file

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/JavassistTypeInfoTestCase.java (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/JavassistTypeInfoTestCase.java)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/JavassistTypeInfoTestCase.java	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/JavassistTypeInfoTestCase.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,52 @@
+/*
+ * 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.vfs.reflect.test;
+
+import junit.framework.Test;
+
+import org.jboss.reflect.plugins.javassist.JavassistTypeInfoFactory;
+import org.jboss.reflect.spi.TypeInfoFactory;
+
+/**
+ * Javassist test case for TypeInfo.
+ *
+ * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
+ *
+ * @version $Revision: 95613 $
+ */
+public class JavassistTypeInfoTestCase extends TypeInfoTest
+{
+   public JavassistTypeInfoTestCase(String name)
+   {
+      super(name);
+   }
+
+   public static Test suite()
+   {
+      return suite(JavassistTypeInfoTestCase.class);
+   }
+
+   protected TypeInfoFactory createTypeInfoFactory()
+   {
+      return new JavassistTypeInfoFactory();
+   }
+}
\ No newline at end of file

Deleted: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/ReflectTest.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/ReflectTest.java	2009-12-18 19:31:18 UTC (rev 98000)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/ReflectTest.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1,568 +0,0 @@
-/*
- * 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.vfs.reflect.test;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Set;
-import java.util.Collections;
-import java.net.URL;
-
-import org.jboss.classloader.plugins.jdk.AbstractJDKChecker;
-import org.jboss.classloading.spi.metadata.ClassLoadingMetaData;
-import org.jboss.classloading.spi.metadata.ExportAll;
-import org.jboss.classloading.spi.version.Version;
-import org.jboss.deployers.client.spi.Deployment;
-import org.jboss.deployers.client.spi.DeployerClient;
-import org.jboss.deployers.spi.attachments.MutableAttachments;
-import org.jboss.deployers.structure.spi.DeploymentUnit;
-import org.jboss.deployers.vfs.deployer.kernel.BeanMetaDataFactoryVisitor;
-import org.jboss.deployers.vfs.spi.client.VFSDeploymentFactory;
-import org.jboss.reflect.spi.ClassInfo;
-import org.jboss.reflect.spi.MethodInfo;
-import org.jboss.reflect.spi.TypeInfo;
-import org.jboss.reflect.spi.TypeInfoFactory;
-import org.jboss.test.deployers.BootstrapDeployersTest;
-import org.jboss.test.deployers.vfs.reflect.support.crm.CrmFacade;
-import org.jboss.test.deployers.vfs.reflect.support.ejb.MySLSBean;
-import org.jboss.test.deployers.vfs.reflect.support.ext.External;
-import org.jboss.test.deployers.vfs.reflect.support.jar.PlainJavaBean;
-import org.jboss.test.deployers.vfs.reflect.support.jsf.JsfBean;
-import org.jboss.test.deployers.vfs.reflect.support.service.SomeMBean;
-import org.jboss.test.deployers.vfs.reflect.support.ui.UIBean;
-import org.jboss.test.deployers.vfs.reflect.support.util.SomeUtil;
-import org.jboss.test.deployers.vfs.reflect.support.web.AnyServlet;
-import org.jboss.virtual.AssembledDirectory;
-import org.jboss.virtual.VirtualFile;
-
-/**
- * Abstract test for Reflect.
- *
- * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
- *
- * @version $Revision$
- */
-public abstract class ReflectTest extends BootstrapDeployersTest
-{
-   protected ReflectTest(String name)
-   {
-      super(name);
-   }
-
-   @Override
-   protected void setUp() throws Exception
-   {
-      // excluding class that knows hot to load from system classloader
-      Set<Class<?>> excluded = AbstractJDKChecker.getExcluded();
-      excluded.add(BeanMetaDataFactoryVisitor.class);
-
-      super.setUp();
-   }
-
-   @Override
-   protected void tearDown() throws Exception
-   {
-      super.tearDown();
-
-      // reverting exclusion performed on setUp
-      Set<Class<?>> excluded = AbstractJDKChecker.getExcluded();
-      excluded.remove(BeanMetaDataFactoryVisitor.class);
-   }
-
-   public void testJar() throws Exception
-   {
-      AssembledDirectory directory = createJar();
-      assertReflect(directory, PlainJavaBean.class);
-   }
-
-   public void testEjbJar() throws Exception
-   {
-      AssembledDirectory directory = createEjbJar();
-      assertReflect(directory, MySLSBean.class);
-   }
-
-   public void testWar() throws Exception
-   {
-      AssembledDirectory directory = createWar();
-      assertReflect(directory, AnyServlet.class);
-   }
-
-   public void testSar() throws Exception
-   {
-      AssembledDirectory directory = createSar();
-      assertReflect(directory, SomeMBean.class);
-   }
-
-   public void testBasicEar() throws Exception
-   {
-      AssembledDirectory directory = createBasicEar();
-      Map<Class<?>, String> classes = new HashMap<Class<?>, String>();
-      classes.put(SomeUtil.class, null);
-      classes.put(PlainJavaBean.class, null);
-      classes.put(MySLSBean.class, null);
-      classes.put(AnyServlet.class, "simple.war");
-      classes.put(UIBean.class, "simple.war");
-      classes.put(JsfBean.class, "jsfapp.war");
-      classes.put(CrmFacade.class, "jsfapp.war");
-      classes.put(SomeMBean.class, null);
-      assertReflect(directory, classes);
-   }
-
-   public void testTopLevelWithUtil() throws Exception
-   {
-      AssembledDirectory directory = createTopLevelWithUtil("/reflect/earutil");
-      assertReflect(directory, SomeUtil.class, External.class);
-   }
-
-   public void testWarInEar() throws Exception
-   {
-      AssembledDirectory directory = createWarInEar();
-      assertReflect(directory, Collections.<Class<?>, String>singletonMap(AnyServlet.class, "simple.war"));
-   }
-
-   public void testJarInEar() throws Exception
-   {
-      AssembledDirectory directory = createJarInEar();
-      assertReflect(directory, PlainJavaBean.class);
-   }
-
-   public void testHierarchyCLUsage() throws Exception
-   {
-      AssembledDirectory directory = createBasicEar();
-      DeploymentUnit unit = assertDeploy(directory);
-      try
-      {
-         ClassLoader topCL = getClassLoader(unit);
-         DeploymentUnit child = getDeploymentUnit(unit, "simple.war");
-         ClassLoader childCL = getClassLoader(child);
-         assertSimpleHierarchy(topCL, childCL);
-      }
-      finally
-      {
-         undeploy(unit);
-      }
-   }
-
-   public void testIsolatedJars() throws Exception
-   {
-      Deployment d1 = createIsolatedDeployment("j1.jar");
-      Deployment d2 = createIsolatedDeployment("j2.jar");
-      testIsolatedJars(d1, d2);
-   }
-
-   public void testHierarchyJarsChildFirst() throws Exception
-   {
-      Deployment d1 = createIsolatedDeployment("j1.jar");
-      ClassLoadingMetaData clmd = createDefaultClassLoadingMetaData("j2.jar", "j1.jar_Domain");
-      clmd.setJ2seClassLoadingCompliance(false);
-      Deployment d2 = createIsolatedDeployment("j2.jar", "j1.jar_Domain", PlainJavaBean.class, clmd);
-      testIsolatedJars(d1, d2);
-   }
-
-   public void testDomainHierarchy() throws Exception
-   {
-      Deployment top = createIsolatedDeployment("top.jar", null, PlainJavaBean.class);
-      Deployment left = createIsolatedDeployment("left.jar", "top.jar_Domain", AnyServlet.class);
-      Deployment right = createIsolatedDeployment("right.jar", "top.jar_Domain", AnyServlet.class);
-      testDomainHierarchy(top.getName(), left.getName(), right.getName(), top, left, right);
-   }
-
-   public void testEar2War() throws Exception
-   {
-      AssembledDirectory ear = createAssembledDirectory("ptd-ear-1.0-SNAPSHOT.ear", "ptd-ear-1.0-SNAPSHOT.ear");
-      addPath(ear, "/reflect/ear2war", "META-INF");
-      AssembledDirectory lib = ear.mkdir("lib");
-      AssembledDirectory common = lib.mkdir("common.jar");
-      addPackage(common, PlainJavaBean.class);
-
-      AssembledDirectory war1 = ear.mkdir("ptd-jsf-1.0-SNAPSHOT.war");
-      AssembledDirectory webinf1 = war1.mkdir("WEB-INF");
-      addPath(war1, "/reflect/ear2war/war1/", "WEB-INF");
-      AssembledDirectory lib1 = webinf1.mkdir("lib");
-      AssembledDirectory wj1 = lib1.mkdir("wj1.jar");
-      addPackage(wj1, AnyServlet.class);
-      addPath(wj1, "/reflect/ear2war/manifest/", "META-INF");
-
-      AssembledDirectory war2 = ear.mkdir("ptd-ws-1.0-SNAPSHOT.war");
-      AssembledDirectory webinf2 = war2.mkdir("WEB-INF");
-      addPath(war2, "/reflect/ear2war/war2/", "WEB-INF");
-      AssembledDirectory lib2 = webinf2.mkdir("lib");
-      AssembledDirectory wj2 = lib2.mkdir("wj2.jar");
-      addPackage(wj2, AnyServlet.class);
-      addPath(wj2, "/reflect/ear2war/manifest/", "META-INF");
-
-      Deployment deployment = createVFSDeployment(ear);
-      String top = deployment.getName();
-      String left = top + "ptd-jsf-1.0-SNAPSHOT.war/";
-      String right = top + "ptd-ws-1.0-SNAPSHOT.war/";
-      testDomainHierarchy(top, left, right, deployment);
-   }
-
-   public void testNonDeploymentModule() throws Exception
-   {
-      URL location = AnyServlet.class.getProtectionDomain().getCodeSource().getLocation();
-      System.setProperty("jboss.tests.url", location.toExternalForm());
-      try
-      {
-         AssembledDirectory jar = createJar();
-         addPath(jar, "/reflect/module", "META-INF");
-
-         Deployment deployment = createVFSDeployment(jar);
-         DeployerClient main = getDeployerClient();
-         main.deploy(deployment);
-         try
-         {
-            Object anys = assertBean("AnyServlet", Object.class);
-            Class<?> anysClass = anys.getClass();
-            ClassLoader anysCL = anysClass.getClassLoader();
-
-            DeploymentUnit du = getMainDeployerStructure().getDeploymentUnit(deployment.getName(), true);
-            ClassLoader cl = getClassLoader(du);
-
-            assertNotSame(cl, anysCL);
-
-            assertNonDeploymentModule(cl, anysClass);
-         }
-         finally
-         {
-            main.undeploy(deployment);
-         }
-      }
-      finally
-      {
-         System.clearProperty("jboss.tests.url");
-      }
-   }
-
-   public void testHierarchyNonDeploymentModule() throws Exception
-   {
-      testHierarchy("tif");
-   }
-
-   public void testClassLoadingMetaDataModule() throws Exception
-   {
-      testHierarchy("clmd");
-   }
-
-   //-------------------- helpers --------------------
-
-   protected abstract void assertSimpleHierarchy(ClassLoader topCL, ClassLoader childCL) throws Exception;
-
-   protected abstract void assertNonDeploymentModule(ClassLoader cl, Class<?> anysClass) throws Exception;
-
-   protected  abstract void assertNonDeploymentModule(ClassLoader cl, Class<?> anysClass, Class<?> tifClass) throws Exception;
-
-   protected abstract void assertIsolated(ClassLoader cl1, ClassLoader cl2, Class<?> clazz1, Class<?> clazz2) throws Exception;
-
-   protected abstract void assertDomainHierarchy(ClassLoader topCL, ClassLoader leftCL, ClassLoader rightCL) throws Exception;
-
-   protected void testHierarchy(String name) throws Exception
-   {
-      URL location = AnyServlet.class.getProtectionDomain().getCodeSource().getLocation();
-      System.setProperty("jboss.tests.url", location.toExternalForm());
-      try
-      {
-         AssembledDirectory jar = createJar();
-         addPath(jar, "/reflect/" + name, "META-INF");
-
-         Deployment deployment = createVFSDeployment(jar);
-         DeployerClient main = getDeployerClient();
-         main.deploy(deployment);
-         try
-         {
-            Object anys = assertBean("AnyServlet", Object.class);
-            Class<?> anysClass = anys.getClass();
-            ClassLoader anysCL = anysClass.getClassLoader();
-
-            Object tif = assertBean("TifTester", Object.class);
-            Class<?> tifClass = tif.getClass();
-            ClassLoader tifCL = tifClass.getClassLoader();
-
-            DeploymentUnit du = getMainDeployerStructure().getDeploymentUnit(deployment.getName(), true);
-            ClassLoader cl = getClassLoader(du);
-
-            assertNotSame(cl, anysCL);
-            assertNotSame(cl, tifCL);
-            assertNotSame(anysCL, tifCL);
-
-            assertNonDeploymentModule(cl, anysClass, tifClass);
-         }
-         finally
-         {
-            main.undeploy(deployment);
-         }
-      }
-      finally
-      {
-         System.clearProperty("jboss.tests.url");
-      }
-   }
-
-   protected void testIsolatedJars(Deployment d1, Deployment d2) throws Exception
-   {
-      DeployerClient main = getDeployerClient();
-      main.deploy(d1, d2);
-      try
-      {
-         DeploymentUnit du1 = getMainDeployerStructure().getDeploymentUnit(d1.getName(), true);
-         DeploymentUnit du2 = getMainDeployerStructure().getDeploymentUnit(d2.getName(), true);
-         ClassLoader cl1 = getClassLoader(du1);
-         ClassLoader cl2 = getClassLoader(du2);
-         assertFalse(cl1.equals(cl2));
-         Class<?> clazz1 = assertLoadClass(PlainJavaBean.class.getName(), cl1, cl1);
-         Class<?> clazz2 = assertLoadClass(PlainJavaBean.class.getName(), cl2, cl2);
-         assertNoClassEquality(clazz1, clazz2);
-
-         assertIsolated(cl1, cl2, clazz1, clazz2);
-      }
-      finally
-      {
-         main.undeploy(d1, d2);
-      }
-   }
-
-   protected void testDomainHierarchy(String top, String left, String right, Deployment... deployments) throws Exception
-   {
-      DeployerClient main = getDeployerClient();
-      main.deploy(deployments);
-      try
-      {
-         DeploymentUnit duTop = getMainDeployerStructure().getDeploymentUnit(top, true);
-         DeploymentUnit duLeft = getMainDeployerStructure().getDeploymentUnit(left, true);
-         DeploymentUnit duRight = getMainDeployerStructure().getDeploymentUnit(right, true);
-         ClassLoader topCL = getClassLoader(duTop);
-         ClassLoader leftCL = getClassLoader(duLeft);
-         ClassLoader rightCL = getClassLoader(duRight);
-         Class<?> asL = assertLoadClass(AnyServlet.class.getName(), leftCL);
-         Class<?> asR = assertLoadClass(AnyServlet.class.getName(), rightCL);
-         assertFalse(asL.equals(asR));
-         Class<?> pjbL = assertLoadClass(PlainJavaBean.class.getName(), leftCL, topCL);
-         Class<?> pjbR = assertLoadClass(PlainJavaBean.class.getName(), rightCL, topCL);
-         assertEquals(pjbL, pjbR);
-
-         assertDomainHierarchy(topCL, leftCL, rightCL);
-      }
-      finally
-      {
-         main.undeploy(deployments);
-      }
-   }
-
-   protected abstract TypeInfoFactory createTypeInfoFactory();
-
-   protected TypeInfo assertReturnType(TypeInfo ti, String method)
-   {
-      ClassInfo ci = assertInstanceOf(ti, ClassInfo.class);
-      MethodInfo mi = ci.getDeclaredMethod(method);
-      assertNotNull("No such '" + method + "' method on " + ci, mi);
-      return mi.getReturnType();      
-   }
-
-   protected void assertReflect(VirtualFile file, Class<?> ... classes) throws Exception
-   {
-      Map<Class<?>, String> map = new HashMap<Class<?>, String>();
-      for (Class<?> clazz : classes)
-      {
-         map.put(clazz, null);
-      }
-      assertReflect(file, map);
-   }
-
-   protected abstract void assertReflect(VirtualFile file, Map<Class<?>, String> classes) throws Exception;
-
-   protected void assertEquals(TypeInfo ti1, TypeInfo ti2)
-   {
-      assertSame(ti1, ti2);
-   }
-
-   protected void assertNotEquals(TypeInfo ti1, TypeInfo ti2)
-   {
-      assertNotSame(ti1, ti2);
-   }
-
-   protected DeploymentUnit getDeploymentUnit(DeploymentUnit parent, String name)
-   {
-      if (name == null || "".equals(name))
-         return parent;
-
-      return assertChild(parent, name);
-   }
-
-   protected AssembledDirectory createJar() throws Exception
-   {
-      return createJar("simple.jar", PlainJavaBean.class);
-   }
-
-   protected AssembledDirectory createJar(String name, Class<?> reference) throws Exception
-   {
-      AssembledDirectory jar = createAssembledDirectory(name, name);
-      addPackage(jar, reference);
-      return jar;
-   }
-
-   protected AssembledDirectory createEjbJar() throws Exception
-   {
-      AssembledDirectory jar = createAssembledDirectory("ejbs.jar", "ejbs.jar");
-      addPackage(jar, MySLSBean.class);
-
-      addPath(jar, "/reflect/ejb", "META-INF");
-      return jar;
-   }
-
-   protected AssembledDirectory createWar() throws Exception
-   {
-      AssembledDirectory war = createAssembledDirectory("simple.war", "simple.war");
-      AssembledDirectory webinf = war.mkdir("WEB-INF");
-      AssembledDirectory classes = webinf.mkdir("classes");
-      addPackage(classes, AnyServlet.class);
-      addPath(war, "/reflect/web", "WEB-INF");
-      return war;
-   }
-
-   protected AssembledDirectory createSar() throws Exception
-   {
-      AssembledDirectory sar = createAssembledDirectory("simple.sar", "simple.sar");
-      addPackage(sar, SomeMBean.class);
-      return sar;
-   }
-
-   protected AssembledDirectory createBasicEar() throws Exception
-   {
-      AssembledDirectory ear = createTopLevelWithUtil("/reflect/simple");
-
-      AssembledDirectory jar = ear.mkdir("simple.jar");
-      addPackage(jar, PlainJavaBean.class);
-
-      AssembledDirectory ejbs = ear.mkdir("ejbs.jar");
-      addPackage(ejbs, MySLSBean.class);
-      addPath(ejbs, "/reflect/ejb", "META-INF");
-
-      AssembledDirectory war = ear.mkdir("simple.war");
-      AssembledDirectory webinf = war.mkdir("WEB-INF");
-      AssembledDirectory classes = webinf.mkdir("classes");
-      addPackage(classes, AnyServlet.class);
-      addPath(war, "/reflect/web", "WEB-INF");
-
-      AssembledDirectory lib = webinf.mkdir("lib");
-
-      AssembledDirectory uijar = lib.mkdir("ui.jar");
-      addPackage(uijar, UIBean.class);
-
-      // another war
-      war = ear.mkdir("jsfapp.war");
-      webinf = war.mkdir("WEB-INF");
-      addPath(war, "/reflect/web", "WEB-INF");
-      classes = webinf.mkdir("classes");
-      addPackage(classes, JsfBean.class);
-
-      lib = webinf.mkdir("lib");
-
-      uijar = lib.mkdir("ui_util.jar");
-      addPackage(uijar, CrmFacade.class);
-
-      // a sar
-      AssembledDirectory sar = ear.mkdir("simple.sar");
-      addPackage(sar, SomeMBean.class);
-      addPath(war, "/reflect/sar", "META-INF");
-
-      enableTrace("org.jboss.deployers");
-
-      return ear;
-   }
-
-   protected AssembledDirectory createTopLevelWithUtil(String path) throws Exception
-   {
-      AssembledDirectory topLevel = createAssembledDirectory("top-level.ear", "top-level.ear");
-      addPath(topLevel, path, "META-INF");
-
-      AssembledDirectory earLib = topLevel.mkdir("lib");
-
-      AssembledDirectory util = earLib.mkdir("util.jar");
-      addPackage(util, SomeUtil.class);
-
-      AssembledDirectory ext = earLib.mkdir("ext.jar");
-      addPackage(ext, External.class);
-
-      return topLevel;
-   }
-
-   protected AssembledDirectory createWarInEar() throws Exception
-   {
-      AssembledDirectory ear = createAssembledDirectory("war-in-ear.ear", "war-in-ear.ear");
-      addPath(ear, "/reflect/warinear", "META-INF");
-
-      AssembledDirectory war = ear.mkdir("simple.war");
-      AssembledDirectory webinf = war.mkdir("WEB-INF");
-      AssembledDirectory classes = webinf.mkdir("classes");
-      addPackage(classes, AnyServlet.class);
-      addPath(war, "/reflect/web", "WEB-INF");
-
-      return ear;
-   }
-
-   protected AssembledDirectory createJarInEar() throws Exception
-   {
-      AssembledDirectory ear = createAssembledDirectory("jar-in-ear.ear", "jar-in-ear.ear");
-      addPath(ear, "/reflect/jarinear", "META-INF");
-
-      AssembledDirectory jar = ear.mkdir("simple.jar");
-      addPackage(jar, PlainJavaBean.class);
-
-      return ear;
-   }
-
-   protected Deployment createIsolatedDeployment(String name) throws Exception
-   {
-      return createIsolatedDeployment(name, null, PlainJavaBean.class);
-   }
-
-   protected Deployment createIsolatedDeployment(String name, String parentDomain, Class<?> reference) throws Exception
-   {
-      return createIsolatedDeployment(name, parentDomain, reference, null);
-   }
-
-   protected Deployment createIsolatedDeployment(String name, String parentDomain, Class<?> reference, ClassLoadingMetaData clmd) throws Exception
-   {
-      AssembledDirectory jar = createJar(name, reference);
-      Deployment deployment = VFSDeploymentFactory.getInstance().createVFSDeployment(jar);
-
-      if (clmd == null)
-         clmd = createDefaultClassLoadingMetaData(name, parentDomain);
-
-      MutableAttachments attachments = (MutableAttachments)deployment.getPredeterminedManagedObjects();
-      attachments.addAttachment(ClassLoadingMetaData.class, clmd);
-
-      return deployment;
-   }
-
-   protected ClassLoadingMetaData createDefaultClassLoadingMetaData(String name, String parentDomain)
-   {
-      ClassLoadingMetaData clmd = new ClassLoadingMetaData();
-      if (name != null)
-         clmd.setDomain(name + "_Domain");
-      clmd.setParentDomain(parentDomain);
-      clmd.setImportAll(true);
-      clmd.setExportAll(ExportAll.NON_EMPTY);
-      clmd.setVersion(Version.DEFAULT_VERSION);
-      return clmd;
-   }
-}
\ No newline at end of file

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/ReflectTest.java (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/ReflectTest.java)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/ReflectTest.java	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/ReflectTest.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,546 @@
+/*
+ * 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.vfs.reflect.test;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+import java.util.Collections;
+import java.net.URL;
+
+import org.jboss.classloader.plugins.jdk.AbstractJDKChecker;
+import org.jboss.classloading.spi.metadata.ClassLoadingMetaData;
+import org.jboss.classloading.spi.metadata.ExportAll;
+import org.jboss.classloading.spi.version.Version;
+import org.jboss.deployers.client.spi.Deployment;
+import org.jboss.deployers.client.spi.DeployerClient;
+import org.jboss.deployers.spi.attachments.MutableAttachments;
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.deployers.vfs.deployer.kernel.BeanMetaDataFactoryVisitor;
+import org.jboss.deployers.vfs.spi.client.VFSDeploymentFactory;
+import org.jboss.reflect.spi.ClassInfo;
+import org.jboss.reflect.spi.MethodInfo;
+import org.jboss.reflect.spi.TypeInfo;
+import org.jboss.reflect.spi.TypeInfoFactory;
+import org.jboss.test.deployers.BootstrapDeployersTest;
+import org.jboss.test.deployers.support.AssembledDirectory;
+import org.jboss.test.deployers.vfs.reflect.support.crm.CrmFacade;
+import org.jboss.test.deployers.vfs.reflect.support.ejb.MySLSBean;
+import org.jboss.test.deployers.vfs.reflect.support.ext.External;
+import org.jboss.test.deployers.vfs.reflect.support.jar.PlainJavaBean;
+import org.jboss.test.deployers.vfs.reflect.support.jsf.JsfBean;
+import org.jboss.test.deployers.vfs.reflect.support.service.SomeMBean;
+import org.jboss.test.deployers.vfs.reflect.support.ui.UIBean;
+import org.jboss.test.deployers.vfs.reflect.support.util.SomeUtil;
+import org.jboss.test.deployers.vfs.reflect.support.web.AnyServlet;
+import org.jboss.vfs.VFS;
+import org.jboss.vfs.VirtualFile;
+
+/**
+ * Abstract test for Reflect.
+ *
+ * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
+ *
+ * @version $Revision$
+ */
+public abstract class ReflectTest extends BootstrapDeployersTest
+{
+   protected ReflectTest(String name)
+   {
+      super(name);
+   }
+
+   @Override
+   protected void setUp() throws Exception
+   {
+      // excluding class that knows hot to load from system classloader
+      Set<Class<?>> excluded = AbstractJDKChecker.getExcluded();
+      excluded.add(BeanMetaDataFactoryVisitor.class);
+
+      super.setUp();
+   }
+
+   @Override
+   protected void tearDown() throws Exception
+   {
+      super.tearDown();
+
+      // reverting exclusion performed on setUp
+      Set<Class<?>> excluded = AbstractJDKChecker.getExcluded();
+      excluded.remove(BeanMetaDataFactoryVisitor.class);
+   }
+
+   public void testJar() throws Exception
+   {
+      VirtualFile directory = createJar();
+      assertReflect(directory, PlainJavaBean.class);
+   }
+
+   public void testEjbJar() throws Exception
+   {
+      VirtualFile directory = createEjbJar();
+      assertReflect(directory, MySLSBean.class);
+   }
+
+   public void testWar() throws Exception
+   {
+      VirtualFile directory = createWar();
+      assertReflect(directory, AnyServlet.class);
+   }
+
+   public void testSar() throws Exception
+   {
+      VirtualFile directory = createSar();
+      assertReflect(directory, SomeMBean.class);
+   }
+
+   public void testBasicEar() throws Exception
+   {
+      VirtualFile directory = createBasicEar();
+      Map<Class<?>, String> classes = new HashMap<Class<?>, String>();
+      classes.put(SomeUtil.class, null);
+      classes.put(PlainJavaBean.class, null);
+      classes.put(MySLSBean.class, null);
+      classes.put(AnyServlet.class, "simple.war");
+      classes.put(UIBean.class, "simple.war");
+      classes.put(JsfBean.class, "jsfapp.war");
+      classes.put(CrmFacade.class, "jsfapp.war");
+      classes.put(SomeMBean.class, null);
+      assertReflect(directory, classes);
+   }
+
+   public void testTopLevelWithUtil() throws Exception
+   {
+      VirtualFile directory = createTopLevelWithUtil("/reflect/earutil");
+      assertReflect(directory, SomeUtil.class, External.class);
+   }
+
+   public void testWarInEar() throws Exception
+   {
+      VirtualFile directory = createWarInEar();
+      assertReflect(directory, Collections.<Class<?>, String>singletonMap(AnyServlet.class, "simple.war"));
+   }
+
+   public void testJarInEar() throws Exception
+   {
+      VirtualFile directory = createJarInEar();
+      assertReflect(directory, PlainJavaBean.class);
+   }
+
+   public void testHierarchyCLUsage() throws Exception
+   {
+      VirtualFile directory = createBasicEar();
+      DeploymentUnit unit = assertDeploy(directory);
+      try
+      {
+         ClassLoader topCL = getClassLoader(unit);
+         DeploymentUnit child = getDeploymentUnit(unit, "simple.war");
+         ClassLoader childCL = getClassLoader(child);
+         assertSimpleHierarchy(topCL, childCL);
+      }
+      finally
+      {
+         undeploy(unit);
+      }
+   }
+
+   public void testIsolatedJars() throws Exception
+   {
+      Deployment d1 = createIsolatedDeployment("j1.jar");
+      Deployment d2 = createIsolatedDeployment("j2.jar");
+      testIsolatedJars(d1, d2);
+   }
+
+   public void testHierarchyJarsChildFirst() throws Exception
+   {
+      Deployment d1 = createIsolatedDeployment("j1.jar");
+      ClassLoadingMetaData clmd = createDefaultClassLoadingMetaData("j2.jar", "j1.jar_Domain");
+      clmd.setJ2seClassLoadingCompliance(false);
+      Deployment d2 = createIsolatedDeployment("j2.jar", "j1.jar_Domain", PlainJavaBean.class, clmd);
+      testIsolatedJars(d1, d2);
+   }
+
+   public void testDomainHierarchy() throws Exception
+   {
+      Deployment top = createIsolatedDeployment("top.jar", null, PlainJavaBean.class);
+      Deployment left = createIsolatedDeployment("left.jar", "top.jar_Domain", AnyServlet.class);
+      Deployment right = createIsolatedDeployment("right.jar", "top.jar_Domain", AnyServlet.class);
+      testDomainHierarchy(top.getName(), left.getName(), right.getName(), top, left, right);
+   }
+
+   public void testEar2War() throws Exception
+   {
+      VirtualFile earFile = VFS.getChild(getName()).getChild("ptd-ear-1.0-SNAPSHOT.ear");
+      createAssembledDirectory(earFile)
+         .addPath(getVirtualFile("/reflect/ear2war"), "META-INF")
+         .addPackage("lib/common.jar", PlainJavaBean.class)
+         .addPath(getVirtualFile("/reflect/ear2war/war1/"), "ptd-jsf-1.0-SNAPSHOT.war/WEB-INF")
+         .addPackage("ptd-jsf-1.0-SNAPSHOT.war/WEB-INF/lib/wj1.jar", AnyServlet.class)
+         .addPath(getVirtualFile("/reflect/ear2war/manifest/"), "ptd-jsf-1.0-SNAPSHOT.war/WEB-INF/lib/wj1.jar/META-INF")
+         .addPath(getVirtualFile("/reflect/ear2war/war2/"), "ptd-ws-1.0-SNAPSHOT.war/WEB-INF")
+         .addPackage("ptd-ws-1.0-SNAPSHOT.war/WEB-INF/lib/wj2.jar", AnyServlet.class)
+         .addPath(getVirtualFile("/reflect/ear2war/manifest/"), "ptd-ws-1.0-SNAPSHOT.war/WEB-INF/lib/wj2.jar/META-INF");
+
+      Deployment deployment = createVFSDeployment(earFile);
+      String top = deployment.getName();
+      String left = top + "ptd-jsf-1.0-SNAPSHOT.war/";
+      String right = top + "ptd-ws-1.0-SNAPSHOT.war/";
+      testDomainHierarchy(top, left, right, deployment);
+   }
+
+   public void testNonDeploymentModule() throws Exception
+   {
+      URL location = AnyServlet.class.getProtectionDomain().getCodeSource().getLocation();
+      System.setProperty("jboss.tests.url", location.toExternalForm());
+      try
+      {
+         VirtualFile jarFile = VFS.getChild(getName()).getChild("simple.jar");
+         createAssembledDirectory(jarFile)
+            .addPackage("", PlainJavaBean.class)
+            .addPath(getVirtualFile("/reflect/module"), "META-INF");
+
+         Deployment deployment = createVFSDeployment(jarFile);
+         DeployerClient main = getDeployerClient();
+         main.deploy(deployment);
+         try
+         {
+            Object anys = assertBean("AnyServlet", Object.class);
+            Class<?> anysClass = anys.getClass();
+            ClassLoader anysCL = anysClass.getClassLoader();
+
+            DeploymentUnit du = getMainDeployerStructure().getDeploymentUnit(deployment.getName(), true);
+            ClassLoader cl = getClassLoader(du);
+
+            assertNotSame(cl, anysCL);
+
+            assertNonDeploymentModule(cl, anysClass);
+         }
+         finally
+         {
+            main.undeploy(deployment);
+         }
+      }
+      finally
+      {
+         System.clearProperty("jboss.tests.url");
+      }
+   }
+
+   public void testHierarchyNonDeploymentModule() throws Exception
+   {
+      testHierarchy("tif");
+   }
+
+   public void testClassLoadingMetaDataModule() throws Exception
+   {
+      testHierarchy("clmd");
+   }
+
+   //-------------------- helpers --------------------
+
+   protected abstract void assertSimpleHierarchy(ClassLoader topCL, ClassLoader childCL) throws Exception;
+
+   protected abstract void assertNonDeploymentModule(ClassLoader cl, Class<?> anysClass) throws Exception;
+
+   protected  abstract void assertNonDeploymentModule(ClassLoader cl, Class<?> anysClass, Class<?> tifClass) throws Exception;
+
+   protected abstract void assertIsolated(ClassLoader cl1, ClassLoader cl2, Class<?> clazz1, Class<?> clazz2) throws Exception;
+
+   protected abstract void assertDomainHierarchy(ClassLoader topCL, ClassLoader leftCL, ClassLoader rightCL) throws Exception;
+
+   protected void testHierarchy(String name) throws Exception
+   {
+      URL location = AnyServlet.class.getProtectionDomain().getCodeSource().getLocation();
+      System.setProperty("jboss.tests.url", location.toExternalForm());
+      try
+      {
+         VirtualFile jarFile = VFS.getChild(getName()).getChild("simple.jar");
+         createAssembledDirectory(jarFile)
+            .addPackage("", PlainJavaBean.class)
+            .addPath(getVirtualFile("/reflect/module"), "META-INF")
+            .addPath(getVirtualFile("/reflect/" + name), "META-INF");
+
+         Deployment deployment = createVFSDeployment(jarFile);
+         DeployerClient main = getDeployerClient();
+         main.deploy(deployment);
+         try
+         {
+            Object anys = assertBean("AnyServlet", Object.class);
+            Class<?> anysClass = anys.getClass();
+            ClassLoader anysCL = anysClass.getClassLoader();
+
+            Object tif = assertBean("TifTester", Object.class);
+            Class<?> tifClass = tif.getClass();
+            ClassLoader tifCL = tifClass.getClassLoader();
+
+            DeploymentUnit du = getMainDeployerStructure().getDeploymentUnit(deployment.getName(), true);
+            ClassLoader cl = getClassLoader(du);
+
+            assertNotSame(cl, anysCL);
+            assertNotSame(cl, tifCL);
+            assertNotSame(anysCL, tifCL);
+
+            assertNonDeploymentModule(cl, anysClass, tifClass);
+         }
+         finally
+         {
+            main.undeploy(deployment);
+         }
+      }
+      finally
+      {
+         System.clearProperty("jboss.tests.url");
+      }
+   }
+
+   protected void testIsolatedJars(Deployment d1, Deployment d2) throws Exception
+   {
+      DeployerClient main = getDeployerClient();
+      main.deploy(d1, d2);
+      try
+      {
+         DeploymentUnit du1 = getMainDeployerStructure().getDeploymentUnit(d1.getName(), true);
+         DeploymentUnit du2 = getMainDeployerStructure().getDeploymentUnit(d2.getName(), true);
+         ClassLoader cl1 = getClassLoader(du1);
+         ClassLoader cl2 = getClassLoader(du2);
+         assertFalse(cl1.equals(cl2));
+         Class<?> clazz1 = assertLoadClass(PlainJavaBean.class.getName(), cl1, cl1);
+         Class<?> clazz2 = assertLoadClass(PlainJavaBean.class.getName(), cl2, cl2);
+         assertNoClassEquality(clazz1, clazz2);
+
+         assertIsolated(cl1, cl2, clazz1, clazz2);
+      }
+      finally
+      {
+         main.undeploy(d1, d2);
+      }
+   }
+
+   protected void testDomainHierarchy(String top, String left, String right, Deployment... deployments) throws Exception
+   {
+      DeployerClient main = getDeployerClient();
+      main.deploy(deployments);
+      try
+      {
+         DeploymentUnit duTop = getMainDeployerStructure().getDeploymentUnit(top, true);
+         DeploymentUnit duLeft = getMainDeployerStructure().getDeploymentUnit(left, true);
+         DeploymentUnit duRight = getMainDeployerStructure().getDeploymentUnit(right, true);
+         ClassLoader topCL = getClassLoader(duTop);
+         ClassLoader leftCL = getClassLoader(duLeft);
+         ClassLoader rightCL = getClassLoader(duRight);
+         Class<?> asL = assertLoadClass(AnyServlet.class.getName(), leftCL);
+         Class<?> asR = assertLoadClass(AnyServlet.class.getName(), rightCL);
+         assertFalse(asL.equals(asR));
+         Class<?> pjbL = assertLoadClass(PlainJavaBean.class.getName(), leftCL, topCL);
+         Class<?> pjbR = assertLoadClass(PlainJavaBean.class.getName(), rightCL, topCL);
+         assertEquals(pjbL, pjbR);
+
+         assertDomainHierarchy(topCL, leftCL, rightCL);
+      }
+      finally
+      {
+         main.undeploy(deployments);
+      }
+   }
+
+   protected abstract TypeInfoFactory createTypeInfoFactory();
+
+   protected TypeInfo assertReturnType(TypeInfo ti, String method)
+   {
+      ClassInfo ci = assertInstanceOf(ti, ClassInfo.class);
+      MethodInfo mi = ci.getDeclaredMethod(method);
+      assertNotNull("No such '" + method + "' method on " + ci, mi);
+      return mi.getReturnType();      
+   }
+
+   protected void assertReflect(VirtualFile file, Class<?> ... classes) throws Exception
+   {
+      Map<Class<?>, String> map = new HashMap<Class<?>, String>();
+      for (Class<?> clazz : classes)
+      {
+         map.put(clazz, null);
+      }
+      assertReflect(file, map);
+   }
+
+   protected abstract void assertReflect(VirtualFile file, Map<Class<?>, String> classes) throws Exception;
+
+   protected void assertEquals(TypeInfo ti1, TypeInfo ti2)
+   {
+      assertSame(ti1, ti2);
+   }
+
+   protected void assertNotEquals(TypeInfo ti1, TypeInfo ti2)
+   {
+      assertNotSame(ti1, ti2);
+   }
+
+   protected DeploymentUnit getDeploymentUnit(DeploymentUnit parent, String name)
+   {
+      if (name == null || "".equals(name))
+         return parent;
+
+      return assertChild(parent, name);
+   }
+
+   protected VirtualFile createJar() throws Exception
+   {
+      return createJar("simple.jar", PlainJavaBean.class);
+   }
+
+   protected VirtualFile createJar(String name, Class<?> reference) throws Exception
+   {
+      VirtualFile jarFile = VFS.getChild(getName()).getChild(name);
+      createAssembledDirectory(jarFile)
+         .addPackage("", reference);
+      return jarFile;
+   }
+
+   protected VirtualFile createEjbJar() throws Exception
+   {
+      VirtualFile jarFile = VFS.getChild(getName()).getChild("ejbs.jar");
+      createAssembledDirectory(jarFile)
+         .addPackage("", MySLSBean.class)
+         .addPath(getVirtualFile("/reflect/ejb"), "META-INF");
+      return jarFile;
+   }
+
+   protected VirtualFile createWar() throws Exception
+   {
+      VirtualFile warFile = VFS.getChild(getName()).getChild("simple.war");
+      createAssembledDirectory(warFile)
+         .addPackage("WEB-INF/classes", AnyServlet.class)
+         .addPath(getVirtualFile("/reflect/web"), "WEB-INF");
+      return warFile;
+   }
+
+   protected VirtualFile createSar() throws Exception
+   {
+      VirtualFile sarFile = VFS.getChild(getName()).getChild( "simple.sar");
+      createAssembledDirectory(sarFile)
+         .addPackage("", SomeMBean.class);
+      return sarFile;
+   }
+
+   protected VirtualFile createBasicEar() throws Exception
+   {
+      VirtualFile ear = createTopLevelWithUtil("/reflect/simple");
+      
+      VirtualFile jarFile = ear.getChild("simple.jar");
+      createAssembledDirectory(jarFile)
+         .addPackage("", PlainJavaBean.class);
+
+      VirtualFile ejbsFile = ear.getChild("ejbs.jar");
+      createAssembledDirectory(ejbsFile)
+         .addPackage("", MySLSBean.class)
+         .addPath(getVirtualFile("/reflect/ejb"), "META-INF");
+
+      
+      VirtualFile warFile = ear.getChild("simple.war");
+      createAssembledDirectory(warFile)
+         .addPackage("WEB-INF/classes", AnyServlet.class)
+         .addPath(getVirtualFile("/reflect/web"), "WEB-INF")
+         .addPackage("WEB-INF/lib/ui.jar", UIBean.class);
+
+      // another war
+      warFile = ear.getChild("jsfapp.war");
+      createAssembledDirectory(warFile)
+         .addPath(getVirtualFile("/reflect/web"), "WEB-INF")
+         .addPackage("WEB-INF/classes", JsfBean.class)
+         .addPackage("WEB-INF/lib/ui_util.jar", CrmFacade.class);
+
+      // a sar
+      VirtualFile sarFile = ear.getChild("simple.sar");
+      createAssembledDirectory(sarFile)
+         .addPackage("", SomeMBean.class)
+         .addPath(getVirtualFile("/reflect/sar"), "META-INF");
+
+      enableTrace("org.jboss.deployers");
+
+      return ear;
+   }
+
+   protected VirtualFile createTopLevelWithUtil(String path) throws Exception
+   {
+      VirtualFile earFile = VFS.getChild(getName()).getChild("top-level.ear");
+      createAssembledDirectory(earFile)
+         .addPath(getVirtualFile(path), "META-INF")
+         .addPackage("lib/util.jar", SomeUtil.class)
+         .addPackage("lib/ext.jar", External.class);
+      return earFile;
+   }
+
+   protected VirtualFile createWarInEar() throws Exception
+   {
+      VirtualFile earFile = VFS.getChild(getName()).getChild("war-in-ear.ear");
+      createAssembledDirectory(earFile)
+         .addPath(getVirtualFile("/reflect/warinear"), "META-INF")
+         .addPackage("simple.war/WEB-INF/classes", AnyServlet.class)
+         .addPath(getVirtualFile("/reflect/web"), "simple.war/WEB-INF");
+      return earFile;
+   }
+
+   protected VirtualFile createJarInEar() throws Exception
+   {
+      VirtualFile earFile = VFS.getChild(getName()).getChild("jar-in-ear.ear"); 
+      createAssembledDirectory(earFile)
+         .addPath(getVirtualFile("/reflect/jarinear"), "META-INF")
+         .addPackage("simple.jar", PlainJavaBean.class);
+      return earFile;
+   }
+
+   protected Deployment createIsolatedDeployment(String name) throws Exception
+   {
+      return createIsolatedDeployment(name, null, PlainJavaBean.class);
+   }
+
+   protected Deployment createIsolatedDeployment(String name, String parentDomain, Class<?> reference) throws Exception
+   {
+      return createIsolatedDeployment(name, parentDomain, reference, null);
+   }
+
+   protected Deployment createIsolatedDeployment(String name, String parentDomain, Class<?> reference, ClassLoadingMetaData clmd) throws Exception
+   {
+      VirtualFile jar = createJar(name, reference);
+      Deployment deployment = VFSDeploymentFactory.getInstance().createVFSDeployment(jar);
+
+      if (clmd == null)
+         clmd = createDefaultClassLoadingMetaData(name, parentDomain);
+
+      MutableAttachments attachments = (MutableAttachments)deployment.getPredeterminedManagedObjects();
+      attachments.addAttachment(ClassLoadingMetaData.class, clmd);
+
+      return deployment;
+   }
+
+   protected ClassLoadingMetaData createDefaultClassLoadingMetaData(String name, String parentDomain)
+   {
+      ClassLoadingMetaData clmd = new ClassLoadingMetaData();
+      if (name != null)
+         clmd.setDomain(name + "_Domain");
+      clmd.setParentDomain(parentDomain);
+      clmd.setImportAll(true);
+      clmd.setExportAll(ExportAll.NON_EMPTY);
+      clmd.setVersion(Version.DEFAULT_VERSION);
+      return clmd;
+   }
+}
\ No newline at end of file

Deleted: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/TypeInfoTest.java
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/TypeInfoTest.java	2009-12-18 19:31:18 UTC (rev 98000)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/TypeInfoTest.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1,138 +0,0 @@
-/*
- * 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.vfs.reflect.test;
-
-import java.util.Map;
-
-import org.jboss.deployers.structure.spi.DeploymentUnit;
-import org.jboss.reflect.spi.TypeInfo;
-import org.jboss.reflect.spi.TypeInfoFactory;
-import org.jboss.virtual.VirtualFile;
-import org.jboss.test.deployers.vfs.reflect.support.web.AnyServlet;
-import org.jboss.test.deployers.vfs.reflect.support.jar.PlainJavaBean;
-
-/**
- * Test case for TypeInfo.
- *
- * @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
- * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
- *
- * @version $Revision$
- */
-public abstract class TypeInfoTest extends ReflectTest
-{
-   public TypeInfoTest(String name)
-   {
-      super(name);
-   }
-
-   protected void assertReflect(VirtualFile file, Map<Class<?>, String> classes) throws Exception
-   {
-      DeploymentUnit unit = assertDeploy(file);
-      try
-      {
-         TypeInfoFactory typeInfoFactory = createTypeInfoFactory();
-         for (Map.Entry<Class<?>, String> entry : classes.entrySet())
-         {
-            DeploymentUnit du = getDeploymentUnit(unit, entry.getValue());
-            ClassLoader classLoader = getClassLoader(du);
-            Class<?> clazz = entry.getKey();
-            String className = clazz.getName();
-            assertLoadClass(className, classLoader);
-            TypeInfo typeInfo = typeInfoFactory.getTypeInfo(className, classLoader);
-            assertEquals(className, typeInfo.getName());
-            ClassLoader cl = typeInfo.getClassLoader();
-            assertEquals(classLoader, cl);
-         }
-      }
-      finally
-      {
-         undeploy(unit);
-      }
-   }
-
-   protected void assertSimpleHierarchy(ClassLoader topCL, ClassLoader childCL) throws Exception
-   {
-      TypeInfoFactory typeInfoFactory = createTypeInfoFactory();
-
-      TypeInfo ti = typeInfoFactory.getTypeInfo(AnyServlet.class.getName(), childCL);
-      TypeInfo rt = assertReturnType(ti, "getBean");
-      TypeInfo cti = typeInfoFactory.getTypeInfo(PlainJavaBean.class.getName(), topCL);
-      assertEquals(rt, cti);
-   }
-
-   protected void assertNonDeploymentModule(ClassLoader cl, Class<?> anysClass) throws Exception
-   {
-      TypeInfoFactory factory = createTypeInfoFactory();
-
-      TypeInfo asTIL = factory.getTypeInfo(anysClass);
-      TypeInfo pjbTI = factory.getTypeInfo(PlainJavaBean.class.getName(), cl);
-      TypeInfo rtL = assertReturnType(asTIL, "getBean");
-      assertEquals(pjbTI, rtL);
-   }
-
-   protected void assertNonDeploymentModule(ClassLoader cl, Class<?> anysClass, Class<?> tifClass) throws Exception
-   {
-      TypeInfoFactory factory = createTypeInfoFactory();
-
-      TypeInfo tifTIL = factory.getTypeInfo(tifClass);
-      TypeInfo tifRT = assertReturnType(tifTIL, "getAnys");
-      TypeInfo asTIL = factory.getTypeInfo(anysClass);
-      assertEquals(tifRT, asTIL);
-
-      TypeInfo pjbTI = factory.getTypeInfo(PlainJavaBean.class.getName(), cl);
-      TypeInfo rtL = assertReturnType(asTIL, "getBean");
-      assertEquals(pjbTI, rtL);
-   }
-
-   protected void assertIsolated(ClassLoader cl1, ClassLoader cl2, Class<?> clazz1, Class<?> clazz2) throws Exception
-   {
-      TypeInfoFactory factory = createTypeInfoFactory();
-
-      TypeInfo ti1 = factory.getTypeInfo(PlainJavaBean.class.getName(), cl1);
-      TypeInfo ti2 = factory.getTypeInfo(PlainJavaBean.class.getName(), cl2);
-      assertNotEquals(ti1, ti2);
-
-      TypeInfo ti3 = factory.getTypeInfo(clazz1);
-      assertEquals(ti1, ti3);
-
-      TypeInfo ti4 = factory.getTypeInfo(clazz2);
-      assertEquals(ti2, ti4);
-
-      assertNotEquals(ti3, ti4);
-   }
-
-   protected void assertDomainHierarchy(ClassLoader topCL, ClassLoader leftCL, ClassLoader rightCL) throws Exception
-   {
-      TypeInfoFactory factory = createTypeInfoFactory();
-
-      TypeInfo pjbTI = factory.getTypeInfo(PlainJavaBean.class.getName(), topCL);
-      TypeInfo asTIL = factory.getTypeInfo(AnyServlet.class.getName(), leftCL);
-      TypeInfo asTIR = factory.getTypeInfo(AnyServlet.class.getName(), rightCL);
-
-      TypeInfo rtL = assertReturnType(asTIL, "getBean");
-      assertEquals(pjbTI, rtL);
-
-      TypeInfo rtR = assertReturnType(asTIR, "getBean");
-      assertEquals(pjbTI, rtR);
-   }
-}
\ No newline at end of file

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/TypeInfoTest.java (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/TypeInfoTest.java)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/TypeInfoTest.java	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/reflect/test/TypeInfoTest.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,138 @@
+/*
+ * 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.vfs.reflect.test;
+
+import java.util.Map;
+
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.reflect.spi.TypeInfo;
+import org.jboss.reflect.spi.TypeInfoFactory;
+import org.jboss.vfs.VirtualFile;
+import org.jboss.test.deployers.vfs.reflect.support.web.AnyServlet;
+import org.jboss.test.deployers.vfs.reflect.support.jar.PlainJavaBean;
+
+/**
+ * Test case for TypeInfo.
+ *
+ * @author <a href="mailto:flavia.rainone at jboss.com">Flavia Rainone</a>
+ * @author <a href="mailto:ales.justin at jboss.org">Ales Justin</a>
+ *
+ * @version $Revision$
+ */
+public abstract class TypeInfoTest extends ReflectTest
+{
+   public TypeInfoTest(String name)
+   {
+      super(name);
+   }
+
+   protected void assertReflect(VirtualFile file, Map<Class<?>, String> classes) throws Exception
+   {
+      DeploymentUnit unit = assertDeploy(file);
+      try
+      {
+         TypeInfoFactory typeInfoFactory = createTypeInfoFactory();
+         for (Map.Entry<Class<?>, String> entry : classes.entrySet())
+         {
+            DeploymentUnit du = getDeploymentUnit(unit, entry.getValue());
+            ClassLoader classLoader = getClassLoader(du);
+            Class<?> clazz = entry.getKey();
+            String className = clazz.getName();
+            assertLoadClass(className, classLoader);
+            TypeInfo typeInfo = typeInfoFactory.getTypeInfo(className, classLoader);
+            assertEquals(className, typeInfo.getName());
+            ClassLoader cl = typeInfo.getClassLoader();
+            assertEquals(classLoader, cl);
+         }
+      }
+      finally
+      {
+         undeploy(unit);
+      }
+   }
+
+   protected void assertSimpleHierarchy(ClassLoader topCL, ClassLoader childCL) throws Exception
+   {
+      TypeInfoFactory typeInfoFactory = createTypeInfoFactory();
+
+      TypeInfo ti = typeInfoFactory.getTypeInfo(AnyServlet.class.getName(), childCL);
+      TypeInfo rt = assertReturnType(ti, "getBean");
+      TypeInfo cti = typeInfoFactory.getTypeInfo(PlainJavaBean.class.getName(), topCL);
+      assertEquals(rt, cti);
+   }
+
+   protected void assertNonDeploymentModule(ClassLoader cl, Class<?> anysClass) throws Exception
+   {
+      TypeInfoFactory factory = createTypeInfoFactory();
+
+      TypeInfo asTIL = factory.getTypeInfo(anysClass);
+      TypeInfo pjbTI = factory.getTypeInfo(PlainJavaBean.class.getName(), cl);
+      TypeInfo rtL = assertReturnType(asTIL, "getBean");
+      assertEquals(pjbTI, rtL);
+   }
+
+   protected void assertNonDeploymentModule(ClassLoader cl, Class<?> anysClass, Class<?> tifClass) throws Exception
+   {
+      TypeInfoFactory factory = createTypeInfoFactory();
+
+      TypeInfo tifTIL = factory.getTypeInfo(tifClass);
+      TypeInfo tifRT = assertReturnType(tifTIL, "getAnys");
+      TypeInfo asTIL = factory.getTypeInfo(anysClass);
+      assertEquals(tifRT, asTIL);
+
+      TypeInfo pjbTI = factory.getTypeInfo(PlainJavaBean.class.getName(), cl);
+      TypeInfo rtL = assertReturnType(asTIL, "getBean");
+      assertEquals(pjbTI, rtL);
+   }
+
+   protected void assertIsolated(ClassLoader cl1, ClassLoader cl2, Class<?> clazz1, Class<?> clazz2) throws Exception
+   {
+      TypeInfoFactory factory = createTypeInfoFactory();
+
+      TypeInfo ti1 = factory.getTypeInfo(PlainJavaBean.class.getName(), cl1);
+      TypeInfo ti2 = factory.getTypeInfo(PlainJavaBean.class.getName(), cl2);
+      assertNotEquals(ti1, ti2);
+
+      TypeInfo ti3 = factory.getTypeInfo(clazz1);
+      assertEquals(ti1, ti3);
+
+      TypeInfo ti4 = factory.getTypeInfo(clazz2);
+      assertEquals(ti2, ti4);
+
+      assertNotEquals(ti3, ti4);
+   }
+
+   protected void assertDomainHierarchy(ClassLoader topCL, ClassLoader leftCL, ClassLoader rightCL) throws Exception
+   {
+      TypeInfoFactory factory = createTypeInfoFactory();
+
+      TypeInfo pjbTI = factory.getTypeInfo(PlainJavaBean.class.getName(), topCL);
+      TypeInfo asTIL = factory.getTypeInfo(AnyServlet.class.getName(), leftCL);
+      TypeInfo asTIR = factory.getTypeInfo(AnyServlet.class.getName(), rightCL);
+
+      TypeInfo rtL = assertReturnType(asTIL, "getBean");
+      assertEquals(pjbTI, rtL);
+
+      TypeInfo rtR = assertReturnType(asTIR, "getBean");
+      assertEquals(pjbTI, rtR);
+   }
+}
\ No newline at end of file

Modified: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/structure/ear/support/MockEarStructureDeployer.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/structure/ear/support/MockEarStructureDeployer.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/java/org/jboss/test/deployers/vfs/structure/ear/support/MockEarStructureDeployer.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -33,7 +33,6 @@
 import java.util.jar.Manifest;
 
 import org.jboss.deployers.spi.DeploymentException;
-import org.jboss.deployers.spi.annotations.AnnotationEnvironment;
 import org.jboss.deployers.spi.structure.ContextInfo;
 import org.jboss.deployers.vfs.plugins.structure.AbstractVFSArchiveStructureDeployer;
 import org.jboss.deployers.vfs.spi.structure.CandidateAnnotationsCallback;
@@ -43,6 +42,7 @@
 import org.jboss.vfs.VirtualFile;
 import org.jboss.vfs.VirtualFileFilter;
 import org.jboss.vfs.util.SuffixMatchFilter;
+import org.jboss.mcann.AnnotationRepository;
 
 /**
  * A mock ear structure deployer that illustrates concepts involved with an ear
@@ -357,7 +357,7 @@
          map.put(Servlet.class, J2eeModuleMetaData.WEB);
       }
 
-      public void executeCallback(VirtualFile root, StructureContext currentContext, AnnotationEnvironment env, Class<? extends Annotation> annotationClass)
+      public void executeCallback(VirtualFile root, StructureContext currentContext, AnnotationRepository env, Class<? extends Annotation> annotationClass)
       {
          if (result == null)
          {

Modified: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/bootstrap/bootstrap.xml
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/bootstrap/bootstrap.xml	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/bootstrap/bootstrap.xml	2009-12-21 16:03:14 UTC (rev 98088)
@@ -85,6 +85,9 @@
    <bean name="KernelDeploymentDeployer" class="org.jboss.deployers.vfs.deployer.kernel.KernelDeploymentDeployer"/>
    <bean name="BeanMetaDataDeployer" class="org.jboss.deployers.vfs.deployer.kernel.BeanMetaDataDeployer">
       <constructor><parameter class="org.jboss.dependency.spi.Controller"><inject bean="jboss.kernel:service=KernelController"/></parameter></constructor>
+      <!-- Accept any implementor of KernelControllerContextCreator -->
+      <incallback method="addControllerContextCreator"/>
+      <uncallback method="removeControllerContextCreator"/>
    </bean>
 
    <!-- VFS ClassLoader -->

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/dependency/basic (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/dependency/basic)

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/dependency/basic/META-INF (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/dependency/basic/META-INF)

Deleted: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/dependency/basic/META-INF/jboss-dependency.xml
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/dependency/basic/META-INF/jboss-dependency.xml	2009-12-18 19:31:18 UTC (rev 98000)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/dependency/basic/META-INF/jboss-dependency.xml	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1,3 +0,0 @@
-<dependency xmlns="urn:jboss:dependency:1.0">
-  <item>Barrier</item>
-</dependency>
\ No newline at end of file

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/dependency/basic/META-INF/jboss-dependency.xml (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/dependency/basic/META-INF/jboss-dependency.xml)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/dependency/basic/META-INF/jboss-dependency.xml	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/dependency/basic/META-INF/jboss-dependency.xml	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,3 @@
+<dependency xmlns="urn:jboss:dependency:1.0">
+  <item>Barrier</item>
+</dependency>
\ No newline at end of file

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/matchers/ignore (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/matchers/ignore)

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/matchers/ignore/META-INF (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/matchers/ignore/META-INF)

Deleted: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/matchers/ignore/META-INF/empty.txt
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/matchers/ignore/META-INF/empty.txt	2009-12-18 19:31:18 UTC (rev 98000)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/matchers/ignore/META-INF/empty.txt	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1 +0,0 @@
-Empty.

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/matchers/ignore/META-INF/empty.txt (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/matchers/ignore/META-INF/empty.txt)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/matchers/ignore/META-INF/empty.txt	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/matchers/ignore/META-INF/empty.txt	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1 @@
+Empty.

Deleted: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/matchers/ignore/META-INF/fst.txt
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/matchers/ignore/META-INF/fst.txt	2009-12-18 19:31:18 UTC (rev 98000)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/matchers/ignore/META-INF/fst.txt	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1 +0,0 @@
-First.

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/matchers/ignore/META-INF/fst.txt (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/matchers/ignore/META-INF/fst.txt)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/matchers/ignore/META-INF/fst.txt	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/matchers/ignore/META-INF/fst.txt	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1 @@
+First.

Deleted: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/matchers/ignore/META-INF/qwert.tmp
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/matchers/ignore/META-INF/qwert.tmp	2009-12-18 19:31:18 UTC (rev 98000)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/matchers/ignore/META-INF/qwert.tmp	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1 +0,0 @@
-Tmp file.

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/matchers/ignore/META-INF/qwert.tmp (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/matchers/ignore/META-INF/qwert.tmp)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/matchers/ignore/META-INF/qwert.tmp	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/matchers/ignore/META-INF/qwert.tmp	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1 @@
+Tmp file.

Deleted: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/matchers/ignore/META-INF/snd.txt
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/matchers/ignore/META-INF/snd.txt	2009-12-18 19:31:18 UTC (rev 98000)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/matchers/ignore/META-INF/snd.txt	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1,2 +0,0 @@
-Second.
-

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/matchers/ignore/META-INF/snd.txt (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/matchers/ignore/META-INF/snd.txt)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/matchers/ignore/META-INF/snd.txt	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/matchers/ignore/META-INF/snd.txt	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,2 @@
+Second.
+

Modified: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/org/jboss/test/deployers/vfs/annotations/test/AnnotationsScanningUnitTestCase.xml
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/org/jboss/test/deployers/vfs/annotations/test/AnnotationsScanningUnitTestCase.xml	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/org/jboss/test/deployers/vfs/annotations/test/AnnotationsScanningUnitTestCase.xml	2009-12-21 16:03:14 UTC (rev 98088)
@@ -3,7 +3,7 @@
   <bean name="EarStructure" class="org.jboss.test.deployers.vfs.structure.ear.support.MockEarStructureDeployer"/>
   <bean name="WarStructure" class="org.jboss.deployers.vfs.plugins.structure.war.WARStructure"/>
 
-  <bean name="AnnEnvDeployer" class="org.jboss.deployers.vfs.plugins.annotations.FilteredAnnotationEnvironmentDeployer">
+  <bean name="AnnEnvDeployer" class="org.jboss.deployers.vfs.plugins.annotations.FilteredAnnotationRepositoryDeployer">
     <property name="recurseFilter">
       <bean class="org.jboss.test.deployers.vfs.annotations.support.NoExtRecurseFilter"/>
     </property>

Modified: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/org/jboss/test/deployers/vfs/annotations/test/AnnotationsScanningWithMetaDataUnitTestCase.xml
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/org/jboss/test/deployers/vfs/annotations/test/AnnotationsScanningWithMetaDataUnitTestCase.xml	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/org/jboss/test/deployers/vfs/annotations/test/AnnotationsScanningWithMetaDataUnitTestCase.xml	2009-12-21 16:03:14 UTC (rev 98088)
@@ -5,7 +5,7 @@
 
   <bean name="ScanningMDDeployer" class="org.jboss.deployers.vfs.plugins.annotations.ScanningMetaDataDeployer"/>
 
-  <bean name="AnnEnvDeployer" class="org.jboss.deployers.vfs.plugins.annotations.FilteredAnnotationEnvironmentDeployer">
+  <bean name="AnnEnvDeployer" class="org.jboss.deployers.vfs.plugins.annotations.FilteredAnnotationRepositoryDeployer">
     <property name="filter">
       <bean class="org.jboss.deployers.vfs.plugins.annotations.ScanningDeploymentUnitFilter"/>
     </property>

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/org/jboss/test/deployers/vfs/deployer (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/org/jboss/test/deployers/vfs/deployer)

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/org/jboss/test/deployers/vfs/deployer/bean (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/org/jboss/test/deployers/vfs/deployer/bean)

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/org/jboss/test/deployers/vfs/deployer/bean/test (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/org/jboss/test/deployers/vfs/deployer/bean/test)

Deleted: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/org/jboss/test/deployers/vfs/deployer/bean/test/BootstrapBeanMetaDataPluginTestCase.xml
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/org/jboss/test/deployers/vfs/deployer/bean/test/BootstrapBeanMetaDataPluginTestCase.xml	2009-12-18 19:31:18 UTC (rev 98000)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/org/jboss/test/deployers/vfs/deployer/bean/test/BootstrapBeanMetaDataPluginTestCase.xml	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1,4 +0,0 @@
-<deployment xmlns="urn:jboss:bean-deployer:2.0">
-  <bean name="SpecialControllerContextCreator" class="org.jboss.test.deployers.vfs.deployer.bean.support.NotUndeployingSpecialBeanMetaDataDeployerPlugin"/>
-  <bean name="TriggerSpecialControllerContextDeployer" class="org.jboss.test.deployers.vfs.deployer.bean.support.TriggerSpecialBeanMetaDataDeployerPlugin"/>
-</deployment>

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/org/jboss/test/deployers/vfs/deployer/bean/test/BootstrapBeanMetaDataPluginTestCase.xml (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/org/jboss/test/deployers/vfs/deployer/bean/test/BootstrapBeanMetaDataPluginTestCase.xml)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/org/jboss/test/deployers/vfs/deployer/bean/test/BootstrapBeanMetaDataPluginTestCase.xml	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/org/jboss/test/deployers/vfs/deployer/bean/test/BootstrapBeanMetaDataPluginTestCase.xml	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,4 @@
+<deployment xmlns="urn:jboss:bean-deployer:2.0">
+  <bean name="SpecialControllerContextCreator" class="org.jboss.test.deployers.vfs.deployer.bean.support.NotUndeployingSpecialBeanMetaDataDeployerPlugin"/>
+  <bean name="TriggerSpecialControllerContextDeployer" class="org.jboss.test.deployers.vfs.deployer.bean.support.TriggerSpecialBeanMetaDataDeployerPlugin"/>
+</deployment>

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/org/jboss/test/deployers/vfs/reflect (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/org/jboss/test/deployers/vfs/reflect)

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/org/jboss/test/deployers/vfs/reflect/test (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/org/jboss/test/deployers/vfs/reflect/test)

Deleted: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/org/jboss/test/deployers/vfs/reflect/test/ClassPoolTestCase.xml
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/org/jboss/test/deployers/vfs/reflect/test/ClassPoolTestCase.xml	2009-12-18 19:31:18 UTC (rev 98000)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/org/jboss/test/deployers/vfs/reflect/test/ClassPoolTestCase.xml	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1,41 +0,0 @@
-<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="ClassLoaderScopingPolicy" class="org.jboss.classpool.plugins.jbosscl.VFSClassLoaderDomainRegistry">
-     <constructor factoryMethod="getInstance"/>
-   </bean>
-
-  <bean name="RegisterModuleCallback" class="org.jboss.classpool.plugins.jbosscl.RegisterModuleCallback">
-     <constructor>
-       <parameter><inject bean="ClassLoaderScopingPolicy"/></parameter>
-     </constructor>
-     <install method="addModuleRegistry" bean="ClassLoading" whenRequired="Start">
-       <parameter><this/></parameter>
-     </install>
-     <uninstall method="removeModuleRegistry" bean="ClassLoading" whenRequired="Start">
-       <parameter><this/></parameter>
-     </uninstall>
-  </bean>
-
-  <bean name="ClassPoolFactory" class="org.jboss.classpool.plugins.jbosscl.JBossClDelegatingClassPoolFactory">
-     <constructor>
-        <parameter><inject bean="ClassLoaderScopingPolicy"/></parameter>
-        <parameter><inject bean="RegisterModuleCallback"/></parameter>
-     </constructor>
-  </bean>
-
-  <bean name="ClassPoolRepository" class="org.jboss.classpool.plugins.jbosscl.JBossClDelegatingClassPoolRepository">
-     <constructor factoryMethod="getInstance"/>
-     <property name="classPoolFactory"><inject bean="ClassPoolFactory"/></property>
-  </bean>
-
-  <bean name="PoolFactoryInitializer" class="org.jboss.test.deployers.vfs.reflect.support.PoolFactoryInitializer">
-     <constructor>
-        <parameter><inject bean="ClassPoolRepository"/></parameter>
-     </constructor>
-  </bean>
-  
-</deployment>

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/org/jboss/test/deployers/vfs/reflect/test/ClassPoolTestCase.xml (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/org/jboss/test/deployers/vfs/reflect/test/ClassPoolTestCase.xml)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/org/jboss/test/deployers/vfs/reflect/test/ClassPoolTestCase.xml	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/org/jboss/test/deployers/vfs/reflect/test/ClassPoolTestCase.xml	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,41 @@
+<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="ClassLoaderScopingPolicy" class="org.jboss.classpool.plugins.jbosscl.VFSClassLoaderDomainRegistry">
+     <constructor factoryMethod="getInstance"/>
+   </bean>
+
+  <bean name="RegisterModuleCallback" class="org.jboss.classpool.plugins.jbosscl.RegisterModuleCallback">
+     <constructor>
+       <parameter><inject bean="ClassLoaderScopingPolicy"/></parameter>
+     </constructor>
+     <install method="addModuleRegistry" bean="ClassLoading" whenRequired="Start">
+       <parameter><this/></parameter>
+     </install>
+     <uninstall method="removeModuleRegistry" bean="ClassLoading" whenRequired="Start">
+       <parameter><this/></parameter>
+     </uninstall>
+  </bean>
+
+  <bean name="ClassPoolFactory" class="org.jboss.classpool.plugins.jbosscl.JBossClDelegatingClassPoolFactory">
+     <constructor>
+        <parameter><inject bean="ClassLoaderScopingPolicy"/></parameter>
+        <parameter><inject bean="RegisterModuleCallback"/></parameter>
+     </constructor>
+  </bean>
+
+  <bean name="ClassPoolRepository" class="org.jboss.classpool.plugins.jbosscl.JBossClDelegatingClassPoolRepository">
+     <constructor factoryMethod="getInstance"/>
+     <property name="classPoolFactory"><inject bean="ClassPoolFactory"/></property>
+  </bean>
+
+  <bean name="PoolFactoryInitializer" class="org.jboss.test.deployers.vfs.reflect.support.PoolFactoryInitializer">
+     <constructor>
+        <parameter><inject bean="ClassPoolRepository"/></parameter>
+     </constructor>
+  </bean>
+  
+</deployment>

Deleted: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/org/jboss/test/deployers/vfs/reflect/test/IntrospectionTypeInfoTestCase.xml
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/org/jboss/test/deployers/vfs/reflect/test/IntrospectionTypeInfoTestCase.xml	2009-12-18 19:31:18 UTC (rev 98000)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/org/jboss/test/deployers/vfs/reflect/test/IntrospectionTypeInfoTestCase.xml	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1,7 +0,0 @@
-<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"/>
-
-</deployment>

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/org/jboss/test/deployers/vfs/reflect/test/IntrospectionTypeInfoTestCase.xml (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/org/jboss/test/deployers/vfs/reflect/test/IntrospectionTypeInfoTestCase.xml)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/org/jboss/test/deployers/vfs/reflect/test/IntrospectionTypeInfoTestCase.xml	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/org/jboss/test/deployers/vfs/reflect/test/IntrospectionTypeInfoTestCase.xml	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,7 @@
+<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"/>
+
+</deployment>

Deleted: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/org/jboss/test/deployers/vfs/reflect/test/JavassistTypeInfoTestCase.xml
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/org/jboss/test/deployers/vfs/reflect/test/JavassistTypeInfoTestCase.xml	2009-12-18 19:31:18 UTC (rev 98000)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/org/jboss/test/deployers/vfs/reflect/test/JavassistTypeInfoTestCase.xml	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1,41 +0,0 @@
-<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="ClassLoaderScopingPolicy" class="org.jboss.classpool.plugins.jbosscl.VFSClassLoaderDomainRegistry">
-     <constructor factoryMethod="getInstance"/>
-  </bean>
-
-  <bean name="RegisterModuleCallback" class="org.jboss.classpool.plugins.jbosscl.RegisterModuleCallback">
-     <constructor>
-       <parameter><inject bean="ClassLoaderScopingPolicy"/></parameter>
-     </constructor>
-     <install method="addModuleRegistry" bean="ClassLoading" whenRequired="Start">
-       <parameter><this/></parameter>
-     </install>
-     <uninstall method="removeModuleRegistry" bean="ClassLoading" whenRequired="Start">
-       <parameter><this/></parameter>
-     </uninstall>
-  </bean>
-
-  <bean name="ClassPoolFactory" class="org.jboss.classpool.plugins.jbosscl.JBossClDelegatingClassPoolFactory">
-     <constructor>
-        <parameter><inject bean="ClassLoaderScopingPolicy"/></parameter>
-        <parameter><inject bean="RegisterModuleCallback"/></parameter>
-     </constructor>
-  </bean>
-
-  <bean name="ClassPoolRepository" class="org.jboss.classpool.plugins.jbosscl.JBossClDelegatingClassPoolRepository">
-     <constructor factoryMethod="getInstance"/>
-     <property name="classPoolFactory"><inject bean="ClassPoolFactory"/></property>
-  </bean>
-
-  <bean name="PoolFactoryInitializer" class="org.jboss.test.deployers.vfs.reflect.support.PoolFactoryInitializer">
-     <constructor>
-        <parameter><inject bean="ClassPoolRepository"/></parameter>
-     </constructor>
-  </bean>
-  
-</deployment>
\ No newline at end of file

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/org/jboss/test/deployers/vfs/reflect/test/JavassistTypeInfoTestCase.xml (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/org/jboss/test/deployers/vfs/reflect/test/JavassistTypeInfoTestCase.xml)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/org/jboss/test/deployers/vfs/reflect/test/JavassistTypeInfoTestCase.xml	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/org/jboss/test/deployers/vfs/reflect/test/JavassistTypeInfoTestCase.xml	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,41 @@
+<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="ClassLoaderScopingPolicy" class="org.jboss.classpool.plugins.jbosscl.VFSClassLoaderDomainRegistry">
+     <constructor factoryMethod="getInstance"/>
+  </bean>
+
+  <bean name="RegisterModuleCallback" class="org.jboss.classpool.plugins.jbosscl.RegisterModuleCallback">
+     <constructor>
+       <parameter><inject bean="ClassLoaderScopingPolicy"/></parameter>
+     </constructor>
+     <install method="addModuleRegistry" bean="ClassLoading" whenRequired="Start">
+       <parameter><this/></parameter>
+     </install>
+     <uninstall method="removeModuleRegistry" bean="ClassLoading" whenRequired="Start">
+       <parameter><this/></parameter>
+     </uninstall>
+  </bean>
+
+  <bean name="ClassPoolFactory" class="org.jboss.classpool.plugins.jbosscl.JBossClDelegatingClassPoolFactory">
+     <constructor>
+        <parameter><inject bean="ClassLoaderScopingPolicy"/></parameter>
+        <parameter><inject bean="RegisterModuleCallback"/></parameter>
+     </constructor>
+  </bean>
+
+  <bean name="ClassPoolRepository" class="org.jboss.classpool.plugins.jbosscl.JBossClDelegatingClassPoolRepository">
+     <constructor factoryMethod="getInstance"/>
+     <property name="classPoolFactory"><inject bean="ClassPoolFactory"/></property>
+  </bean>
+
+  <bean name="PoolFactoryInitializer" class="org.jboss.test.deployers.vfs.reflect.support.PoolFactoryInitializer">
+     <constructor>
+        <parameter><inject bean="ClassPoolRepository"/></parameter>
+     </constructor>
+  </bean>
+  
+</deployment>
\ No newline at end of file

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/reflect)

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/clmd (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/reflect/clmd)

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/clmd/META-INF (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/reflect/clmd/META-INF)

Deleted: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/clmd/META-INF/clmd-beans.xml
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/reflect/clmd/META-INF/clmd-beans.xml	2009-12-18 19:31:18 UTC (rev 98000)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/clmd/META-INF/clmd-beans.xml	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<deployment xmlns="urn:jboss:bean-deployer:2.0">
-
-  <classloader name="anys-classloader" xmlns="urn:jboss:classloader:1.0">
-    <requirements>
-      <package name="org.jboss.test.deployers.vfs.reflect.support.jar"/>
-    </requirements>
-    <capabilities>
-      <package name="org.jboss.test.deployers.vfs.reflect.support.web"/>
-    </capabilities>
-    <root>${jboss.tests.url}</root>
-  </classloader>
-
-  <classloader name="tif-classloader" xmlns="urn:jboss:classloader:1.0">
-    <requirements>
-      <package name="org.jboss.test.deployers.vfs.reflect.support.web"/>
-    </requirements>
-    <capabilities>
-      <package name="org.jboss.test.deployers.vfs.reflect.support.tif"/>
-    </capabilities>
-    <root>${jboss.tests.url}</root>
-  </classloader>
-
-  <bean name="AnyServlet" class="org.jboss.test.deployers.vfs.reflect.support.web.AnyServlet">
-    <classloader><inject bean="anys-classloader:0.0.0"/></classloader>
-  </bean>
-
-  <bean name="TifTester" class="org.jboss.test.deployers.vfs.reflect.support.tif.TIFTester">
-    <classloader><inject bean="tif-classloader:0.0.0"/></classloader>
-  </bean>
-
-</deployment>

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/clmd/META-INF/clmd-beans.xml (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/reflect/clmd/META-INF/clmd-beans.xml)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/clmd/META-INF/clmd-beans.xml	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/clmd/META-INF/clmd-beans.xml	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<deployment xmlns="urn:jboss:bean-deployer:2.0">
+
+  <classloader name="anys-classloader" xmlns="urn:jboss:classloader:1.0">
+    <requirements>
+      <package name="org.jboss.test.deployers.vfs.reflect.support.jar"/>
+    </requirements>
+    <capabilities>
+      <package name="org.jboss.test.deployers.vfs.reflect.support.web"/>
+    </capabilities>
+    <root>${jboss.tests.url}</root>
+  </classloader>
+
+  <classloader name="tif-classloader" xmlns="urn:jboss:classloader:1.0">
+    <requirements>
+      <package name="org.jboss.test.deployers.vfs.reflect.support.web"/>
+    </requirements>
+    <capabilities>
+      <package name="org.jboss.test.deployers.vfs.reflect.support.tif"/>
+    </capabilities>
+    <root>${jboss.tests.url}</root>
+  </classloader>
+
+  <bean name="AnyServlet" class="org.jboss.test.deployers.vfs.reflect.support.web.AnyServlet">
+    <classloader><inject bean="anys-classloader:0.0.0"/></classloader>
+  </bean>
+
+  <bean name="TifTester" class="org.jboss.test.deployers.vfs.reflect.support.tif.TIFTester">
+    <classloader><inject bean="tif-classloader:0.0.0"/></classloader>
+  </bean>
+
+</deployment>

Deleted: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/clmd/META-INF/jboss-classloading.xml
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/reflect/clmd/META-INF/jboss-classloading.xml	2009-12-18 19:31:18 UTC (rev 98000)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/clmd/META-INF/jboss-classloading.xml	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1,5 +0,0 @@
-<classloading xmlns="urn:jboss:classloading:1.0">
-  <capabilities>
-    <package name="org.jboss.test.deployers.vfs.reflect.support.jar"/>
-  </capabilities>
-</classloading>

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/clmd/META-INF/jboss-classloading.xml (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/reflect/clmd/META-INF/jboss-classloading.xml)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/clmd/META-INF/jboss-classloading.xml	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/clmd/META-INF/jboss-classloading.xml	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,5 @@
+<classloading xmlns="urn:jboss:classloading:1.0">
+  <capabilities>
+    <package name="org.jboss.test.deployers.vfs.reflect.support.jar"/>
+  </capabilities>
+</classloading>

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ear2war (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/reflect/ear2war)

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ear2war/META-INF (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/reflect/ear2war/META-INF)

Deleted: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ear2war/META-INF/application.properties
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/reflect/ear2war/META-INF/application.properties	2009-12-18 19:31:18 UTC (rev 98000)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ear2war/META-INF/application.properties	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1,2 +0,0 @@
-jsf-module=ptd-jsf-1.0-SNAPSHOT.war
-ws-module=ptd-ws-1.0-SNAPSHOT.war

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ear2war/META-INF/application.properties (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/reflect/ear2war/META-INF/application.properties)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ear2war/META-INF/application.properties	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ear2war/META-INF/application.properties	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,2 @@
+jsf-module=ptd-jsf-1.0-SNAPSHOT.war
+ws-module=ptd-ws-1.0-SNAPSHOT.war

Deleted: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ear2war/META-INF/jboss-classloading.xml
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/reflect/ear2war/META-INF/jboss-classloading.xml	2009-12-18 19:31:18 UTC (rev 98000)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ear2war/META-INF/jboss-classloading.xml	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1,6 +0,0 @@
-<classloading xmlns="urn:jboss:classloading:1.0"
-              name="ptd-ear-1.0-SNAPSHOT.ear"
-              domain="ptd-ear-1.0-SNAPSHOT.ear"
-              export-all="NON_EMPTY"
-              import-all="true"
-              parent-first="false"/>
\ No newline at end of file

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ear2war/META-INF/jboss-classloading.xml (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/reflect/ear2war/META-INF/jboss-classloading.xml)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ear2war/META-INF/jboss-classloading.xml	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ear2war/META-INF/jboss-classloading.xml	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,6 @@
+<classloading xmlns="urn:jboss:classloading:1.0"
+              name="ptd-ear-1.0-SNAPSHOT.ear"
+              domain="ptd-ear-1.0-SNAPSHOT.ear"
+              export-all="NON_EMPTY"
+              import-all="true"
+              parent-first="false"/>
\ No newline at end of file

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ear2war/manifest (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/reflect/ear2war/manifest)

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ear2war/manifest/META-INF (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/reflect/ear2war/manifest/META-INF)

Deleted: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ear2war/manifest/META-INF/MANIFEST.MF
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/reflect/ear2war/manifest/META-INF/MANIFEST.MF	2009-12-18 19:31:18 UTC (rev 98000)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ear2war/manifest/META-INF/MANIFEST.MF	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1,4 +0,0 @@
-Manifest-Version: 1.0
-Created-By: alesj
-Class-Path: ../../../lib/common.jar
-

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ear2war/manifest/META-INF/MANIFEST.MF (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/reflect/ear2war/manifest/META-INF/MANIFEST.MF)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ear2war/manifest/META-INF/MANIFEST.MF	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ear2war/manifest/META-INF/MANIFEST.MF	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,4 @@
+Manifest-Version: 1.0
+Created-By: alesj
+Class-Path: ../../../lib/common.jar
+

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ear2war/war1 (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/reflect/ear2war/war1)

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ear2war/war1/WEB-INF (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/reflect/ear2war/war1/WEB-INF)

Deleted: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ear2war/war1/WEB-INF/jboss-classloading.xml
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/reflect/ear2war/war1/WEB-INF/jboss-classloading.xml	2009-12-18 19:31:18 UTC (rev 98000)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ear2war/war1/WEB-INF/jboss-classloading.xml	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1,7 +0,0 @@
-<classloading xmlns="urn:jboss:classloading:1.0"
-              name="ptd-jsf-1.0-SNAPSHOT.war"
-              domain="ptd-jsf-1.0-SNAPSHOT.war"
-              parent-domain="ptd-ear-1.0-SNAPSHOT.ear"
-              export-all="NON_EMPTY"
-              import-all="true"
-              parent-first="true"/>
\ No newline at end of file

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ear2war/war1/WEB-INF/jboss-classloading.xml (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/reflect/ear2war/war1/WEB-INF/jboss-classloading.xml)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ear2war/war1/WEB-INF/jboss-classloading.xml	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ear2war/war1/WEB-INF/jboss-classloading.xml	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,7 @@
+<classloading xmlns="urn:jboss:classloading:1.0"
+              name="ptd-jsf-1.0-SNAPSHOT.war"
+              domain="ptd-jsf-1.0-SNAPSHOT.war"
+              parent-domain="ptd-ear-1.0-SNAPSHOT.ear"
+              export-all="NON_EMPTY"
+              import-all="true"
+              parent-first="true"/>
\ No newline at end of file

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ear2war/war2 (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/reflect/ear2war/war2)

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ear2war/war2/WEB-INF (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/reflect/ear2war/war2/WEB-INF)

Deleted: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ear2war/war2/WEB-INF/jboss-classloading.xml
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/reflect/ear2war/war2/WEB-INF/jboss-classloading.xml	2009-12-18 19:31:18 UTC (rev 98000)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ear2war/war2/WEB-INF/jboss-classloading.xml	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1,7 +0,0 @@
-<classloading xmlns="urn:jboss:classloading:1.0"
-              name="ptd-ws-1.0-SNAPSHOT.war"
-              domain="ptd-ws-1.0-SNAPSHOT.war"
-              parent-domain="ptd-ear-1.0-SNAPSHOT.ear"
-              export-all="NON_EMPTY"
-              import-all="true"
-              parent-first="true"/>

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ear2war/war2/WEB-INF/jboss-classloading.xml (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/reflect/ear2war/war2/WEB-INF/jboss-classloading.xml)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ear2war/war2/WEB-INF/jboss-classloading.xml	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ear2war/war2/WEB-INF/jboss-classloading.xml	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,7 @@
+<classloading xmlns="urn:jboss:classloading:1.0"
+              name="ptd-ws-1.0-SNAPSHOT.war"
+              domain="ptd-ws-1.0-SNAPSHOT.war"
+              parent-domain="ptd-ear-1.0-SNAPSHOT.ear"
+              export-all="NON_EMPTY"
+              import-all="true"
+              parent-first="true"/>

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/earutil (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/reflect/earutil)

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/earutil/META-INF (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/reflect/earutil/META-INF)

Deleted: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/earutil/META-INF/application.properties
===================================================================

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/earutil/META-INF/application.properties (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/reflect/earutil/META-INF/application.properties)
===================================================================

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ejb (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/reflect/ejb)

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ejb/META-INF (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/reflect/ejb/META-INF)

Deleted: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ejb/META-INF/MANIFEST.MF
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/reflect/ejb/META-INF/MANIFEST.MF	2009-12-18 19:31:18 UTC (rev 98000)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ejb/META-INF/MANIFEST.MF	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1,2 +0,0 @@
-Manifest-Version: 1.0
-Created-By: hand

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ejb/META-INF/MANIFEST.MF (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/reflect/ejb/META-INF/MANIFEST.MF)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ejb/META-INF/MANIFEST.MF	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ejb/META-INF/MANIFEST.MF	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,2 @@
+Manifest-Version: 1.0
+Created-By: hand

Deleted: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ejb/META-INF/ejb-jar.xml
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/reflect/ejb/META-INF/ejb-jar.xml	2009-12-18 19:31:18 UTC (rev 98000)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ejb/META-INF/ejb-jar.xml	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1,2 +0,0 @@
-<ejb-jar>
-</ejb-jar>
\ No newline at end of file

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ejb/META-INF/ejb-jar.xml (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/reflect/ejb/META-INF/ejb-jar.xml)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ejb/META-INF/ejb-jar.xml	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/ejb/META-INF/ejb-jar.xml	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,2 @@
+<ejb-jar>
+</ejb-jar>
\ No newline at end of file

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/jarinear (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/reflect/jarinear)

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/jarinear/META-INF (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/reflect/jarinear/META-INF)

Deleted: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/jarinear/META-INF/application.properties
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/reflect/jarinear/META-INF/application.properties	2009-12-18 19:31:18 UTC (rev 98000)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/jarinear/META-INF/application.properties	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1 +0,0 @@
-ejb-module=simple.jar

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/jarinear/META-INF/application.properties (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/reflect/jarinear/META-INF/application.properties)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/jarinear/META-INF/application.properties	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/jarinear/META-INF/application.properties	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1 @@
+ejb-module=simple.jar

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/module (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/reflect/module)

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/module/META-INF (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/reflect/module/META-INF)

Deleted: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/module/META-INF/anys-beans.xml
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/reflect/module/META-INF/anys-beans.xml	2009-12-18 19:31:18 UTC (rev 98000)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/module/META-INF/anys-beans.xml	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<deployment xmlns="urn:jboss:bean-deployer:2.0">
-
-  <classloader><inject bean="anys-classloader:0.0.0"/></classloader>
-
-  <classloader name="anys-classloader" xmlns="urn:jboss:classloader:1.0" import-all="true">
-    <capabilities>
-      <package name="org.jboss.test.deployers.vfs.reflect.support.web"/>
-    </capabilities>
-    <root>${jboss.tests.url}</root>
-  </classloader>
-
-  <bean name="AnyServlet" class="org.jboss.test.deployers.vfs.reflect.support.web.AnyServlet"/>
-
-</deployment>

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/module/META-INF/anys-beans.xml (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/reflect/module/META-INF/anys-beans.xml)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/module/META-INF/anys-beans.xml	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/module/META-INF/anys-beans.xml	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<deployment xmlns="urn:jboss:bean-deployer:2.0">
+
+  <classloader><inject bean="anys-classloader:0.0.0"/></classloader>
+
+  <classloader name="anys-classloader" xmlns="urn:jboss:classloader:1.0" import-all="true">
+    <capabilities>
+      <package name="org.jboss.test.deployers.vfs.reflect.support.web"/>
+    </capabilities>
+    <root>${jboss.tests.url}</root>
+  </classloader>
+
+  <bean name="AnyServlet" class="org.jboss.test.deployers.vfs.reflect.support.web.AnyServlet"/>
+
+</deployment>

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/sar (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/reflect/sar)

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/sar/META-INF (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/reflect/sar/META-INF)

Deleted: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/sar/META-INF/jboss-service.xml
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/reflect/sar/META-INF/jboss-service.xml	2009-12-18 19:31:18 UTC (rev 98000)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/sar/META-INF/jboss-service.xml	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1 +0,0 @@
-<server/>

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/sar/META-INF/jboss-service.xml (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/reflect/sar/META-INF/jboss-service.xml)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/sar/META-INF/jboss-service.xml	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/sar/META-INF/jboss-service.xml	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1 @@
+<server/>

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/simple (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/reflect/simple)

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/simple/META-INF (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/reflect/simple/META-INF)

Deleted: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/simple/META-INF/application.properties
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/reflect/simple/META-INF/application.properties	2009-12-18 19:31:18 UTC (rev 98000)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/simple/META-INF/application.properties	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1,5 +0,0 @@
-jar-module=simple.jar
-ejb-module=ejbs.jar
-web-module=simple.war
-jsf-module=jsfapp.war
-sar-module=simple.sar

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/simple/META-INF/application.properties (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/reflect/simple/META-INF/application.properties)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/simple/META-INF/application.properties	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/simple/META-INF/application.properties	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,5 @@
+jar-module=simple.jar
+ejb-module=ejbs.jar
+web-module=simple.war
+jsf-module=jsfapp.war
+sar-module=simple.sar

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/tif (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/reflect/tif)

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/tif/META-INF (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/reflect/tif/META-INF)

Deleted: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/tif/META-INF/tif-beans.xml
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/reflect/tif/META-INF/tif-beans.xml	2009-12-18 19:31:18 UTC (rev 98000)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/tif/META-INF/tif-beans.xml	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<deployment xmlns="urn:jboss:bean-deployer:2.0">
-
-  <classloader name="anys-classloader" xmlns="urn:jboss:classloader:1.0" import-all="true" domain="Anys" parent-domain="DefaultDomain">
-    <capabilities>
-      <package name="org.jboss.test.deployers.vfs.reflect.support.web"/>
-    </capabilities>
-    <root>${jboss.tests.url}</root>
-  </classloader>
-
-  <classloader name="tif-classloader" xmlns="urn:jboss:classloader:1.0" import-all="true" domain="TIF" parent-domain="Anys">
-    <capabilities>
-      <package name="org.jboss.test.deployers.vfs.reflect.support.tif"/>
-    </capabilities>
-    <root>${jboss.tests.url}</root>
-  </classloader>
-
-  <bean name="AnyServlet" class="org.jboss.test.deployers.vfs.reflect.support.web.AnyServlet">
-    <classloader><inject bean="anys-classloader:0.0.0"/></classloader>
-  </bean>
-
-  <bean name="TifTester" class="org.jboss.test.deployers.vfs.reflect.support.tif.TIFTester">
-    <classloader><inject bean="tif-classloader:0.0.0"/></classloader>
-  </bean>
-
-</deployment>

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/tif/META-INF/tif-beans.xml (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/reflect/tif/META-INF/tif-beans.xml)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/tif/META-INF/tif-beans.xml	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/tif/META-INF/tif-beans.xml	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<deployment xmlns="urn:jboss:bean-deployer:2.0">
+
+  <classloader name="anys-classloader" xmlns="urn:jboss:classloader:1.0" import-all="true" domain="Anys" parent-domain="DefaultDomain">
+    <capabilities>
+      <package name="org.jboss.test.deployers.vfs.reflect.support.web"/>
+    </capabilities>
+    <root>${jboss.tests.url}</root>
+  </classloader>
+
+  <classloader name="tif-classloader" xmlns="urn:jboss:classloader:1.0" import-all="true" domain="TIF" parent-domain="Anys">
+    <capabilities>
+      <package name="org.jboss.test.deployers.vfs.reflect.support.tif"/>
+    </capabilities>
+    <root>${jboss.tests.url}</root>
+  </classloader>
+
+  <bean name="AnyServlet" class="org.jboss.test.deployers.vfs.reflect.support.web.AnyServlet">
+    <classloader><inject bean="anys-classloader:0.0.0"/></classloader>
+  </bean>
+
+  <bean name="TifTester" class="org.jboss.test.deployers.vfs.reflect.support.tif.TIFTester">
+    <classloader><inject bean="tif-classloader:0.0.0"/></classloader>
+  </bean>
+
+</deployment>

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/warinear (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/reflect/warinear)

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/warinear/META-INF (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/reflect/warinear/META-INF)

Deleted: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/warinear/META-INF/application.properties
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/reflect/warinear/META-INF/application.properties	2009-12-18 19:31:18 UTC (rev 98000)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/warinear/META-INF/application.properties	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1 +0,0 @@
-web-module=simple.war

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/warinear/META-INF/application.properties (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/reflect/warinear/META-INF/application.properties)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/warinear/META-INF/application.properties	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/warinear/META-INF/application.properties	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1 @@
+web-module=simple.war

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/web (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/reflect/web)

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/web/WEB-INF (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/reflect/web/WEB-INF)

Deleted: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/web/WEB-INF/web.xml
===================================================================
--- projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/reflect/web/WEB-INF/web.xml	2009-12-18 19:31:18 UTC (rev 98000)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/web/WEB-INF/web.xml	2009-12-21 16:03:14 UTC (rev 98088)
@@ -1,2 +0,0 @@
-<web>
-</web>
\ No newline at end of file

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/web/WEB-INF/web.xml (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs/src/test/resources/reflect/web/WEB-INF/web.xml)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/web/WEB-INF/web.xml	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs/src/test/resources/reflect/web/WEB-INF/web.xml	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,2 @@
+<web>
+</web>
\ No newline at end of file

Modified: projects/jboss-deployers/branches/vfs3/deployers-vfs-spi/pom.xml
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs-spi/pom.xml	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs-spi/pom.xml	2009-12-21 16:03:14 UTC (rev 98088)
@@ -15,6 +15,16 @@
   <dependencies>
     <!-- Global dependencies -->
     <dependency>
+      <groupId>org.jboss.kernel</groupId>
+       <artifactId>jboss-kernel</artifactId>
+       <exclusions>
+         <exclusion>
+           <groupId>org.jboss.kernel</groupId>
+           <artifactId>jboss-dependency</artifactId>
+         </exclusion>
+       </exclusions>
+    </dependency>
+    <dependency>
       <groupId>org.jboss</groupId>
       <artifactId>jboss-vfs</artifactId>
       <exclusions>
@@ -69,8 +79,42 @@
       </exclusions>
     </dependency>
     <dependency>
+      <groupId>org.jboss.mcann</groupId>
+      <artifactId>mcann-core</artifactId>
+      <exclusions>
+        <exclusion>
+          <groupId>org.jboss.vfs</groupId>
+          <artifactId>jboss-vfs</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.jboss</groupId>
+          <artifactId>jboss-reflect</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.jboss.man</groupId>
+          <artifactId>jboss-managed</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.jboss.man</groupId>
+          <artifactId>jboss-metatype</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.jboss.microcontainer</groupId>
+          <artifactId>jboss-kernel</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.jboss.kernel</groupId>
+          <artifactId>jboss-kernel</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>org.jboss.cl</groupId>
+          <artifactId>jboss-classloading</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
       <groupId>stax</groupId>
       <artifactId>stax-api</artifactId>
     </dependency>
-  </dependencies>  
+  </dependencies>
 </project>

Modified: projects/jboss-deployers/branches/vfs3/deployers-vfs-spi/src/main/java/org/jboss/deployers/vfs/spi/deployer/AbstractVFSParsingDeployer.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs-spi/src/main/java/org/jboss/deployers/vfs/spi/deployer/AbstractVFSParsingDeployer.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs-spi/src/main/java/org/jboss/deployers/vfs/spi/deployer/AbstractVFSParsingDeployer.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -190,14 +190,14 @@
    @Override
    protected T parse(DeploymentUnit unit, String name, T root) throws Exception
    {
+      if (ignoreName(unit, name))
+         return null;
+
       // Try to find the metadata
       VFSDeploymentUnit vfsDeploymentUnit = (VFSDeploymentUnit) unit;
 
       VirtualFile file = getMetadataFile(vfsDeploymentUnit, getOutput(), name, true);
-      if(file == null)
-            return null;
-
-      return parseAndInit(vfsDeploymentUnit, file, root);
+      return (file != null) ? parseAndInit(vfsDeploymentUnit, file, root) : null;
    }
 
    protected T parse(DeploymentUnit unit, Set<String> names, T root) throws Exception
@@ -209,17 +209,25 @@
 
       List<VirtualFile> files = new ArrayList<VirtualFile>();
       Set<String> missingFiles = new HashSet<String>();
+      Set<String> ignoredFiles = new HashSet<String>();
 
       for (String name : names)
       {
-         VirtualFile file = getMetadataFile(vfsDeploymentUnit, matchFileToClass(unit, name), name, true);
-         if (file != null)
-            files.add(file);
+         if (ignoreName(unit, name))
+         {
+            ignoredFiles.add(name);
+         }
          else
-            missingFiles.add(name);
+         {
+            VirtualFile file = getMetadataFile(vfsDeploymentUnit, matchFileToClass(unit, name), name, true);
+            if (file != null)
+               files.add(file);
+            else
+               missingFiles.add(name);
+         }
       }
 
-      if (missingFiles.size() == names.size())
+      if (missingFiles.size() + ignoredFiles.size() == names.size())
          return null;
 
       return mergeFiles(vfsDeploymentUnit, root, files, missingFiles);
@@ -232,14 +240,14 @@
       // The infrastructure will only check leafs anyway so no need to check here
       if (name == null && isIncludeDeploymentFile())
          name = unit.getName();
-      
+
       // Try to find the metadata
       VFSDeploymentUnit vfsDeploymentUnit = (VFSDeploymentUnit) unit;
 
       // let's check altDD first
       VirtualFile file = getMetadataFile(vfsDeploymentUnit, getOutput(), name, false);
       if (file != null)
-         return parseAndInit(vfsDeploymentUnit, file, root);
+         return parseAndInit(vfsDeploymentUnit, file, root, true);
 
       // try all name+suffix matches
       List<VirtualFile> files = vfsDeploymentUnit.getMetaDataFiles(name, suffix);
@@ -248,7 +256,7 @@
          case 0 :
             return null;
          case 1 :
-            return parseAndInit(vfsDeploymentUnit, files.get(0), root);
+            return parseAndInit(vfsDeploymentUnit, files.get(0), root, true);
          default :
             return handleMultipleFiles(vfsDeploymentUnit, root, files);
       }
@@ -265,6 +273,24 @@
     */
    protected T parseAndInit(VFSDeploymentUnit unit, VirtualFile file, T root) throws Exception
    {
+      return parseAndInit(unit, file, root, false);
+   }
+
+   /**
+    * Parse the file, initialize the result if exists.
+    *
+    * @param unit the deployment unit
+    * @param file the file
+    * @param root the root
+    * @param checkIgnore do we check for ignored names
+    * @return parsed result
+    * @throws Exception for any error
+    */
+   protected T parseAndInit(VFSDeploymentUnit unit, VirtualFile file, T root, boolean checkIgnore) throws Exception
+   {
+      if (checkIgnore && ignoreName(unit, file.getName()))
+         return null;
+
       T result = parse(unit, file, root);
       if (result != null)
          init(unit, result, file);
@@ -280,26 +306,34 @@
 
       List<VirtualFile> files = new ArrayList<VirtualFile>();
       Set<String> missingFiles = new HashSet<String>();
+      Set<String> ignoredFiles = new HashSet<String>();
 
       for (String name : names)
       {
-         // try finding altDD file
-         VirtualFile file = getMetadataFile(vfsDeploymentUnit, matchFileToClass(unit, name), name, false);
-         if (file == null)
+         if (ignoreName(unit, name))
          {
-            List<VirtualFile> matched = vfsDeploymentUnit.getMetaDataFiles(name, suffix);
-            if (matched != null && matched.isEmpty() == false)
-               files.addAll(matched);
-            else
-               missingFiles.add(name);
+            ignoredFiles.add(name);
          }
          else
          {
-            files.add(file);
+            // try finding altDD file
+            VirtualFile file = getMetadataFile(vfsDeploymentUnit, matchFileToClass(unit, name), name, false);
+            if (file == null)
+            {
+               List<VirtualFile> matched = vfsDeploymentUnit.getMetaDataFiles(name, suffix);
+               if (matched != null && matched.isEmpty() == false)
+                  files.addAll(matched);
+               else
+                  missingFiles.add(name);
+            }
+            else
+            {
+               files.add(file);
+            }
          }
       }
 
-      if (missingFiles.size() == names.size())
+      if (missingFiles.size() + ignoredFiles.size() == names.size())
          return null;
 
       return mergeFiles(vfsDeploymentUnit, root, files, missingFiles);
@@ -337,11 +371,14 @@
 
       for (VirtualFile file : files)
       {
-         T result = parse(unit, file, root);
-         if (result != null)
+         if (ignoreName(unit, file.getName()) == false)
          {
-            init(unit, result, file);
-            unit.addAttachment(file.toURL().toString(), result, getOutput());
+            T result = parse(unit, file, root);
+            if (result != null)
+            {
+               init(unit, result, file);
+               unit.addAttachment(file.toURL().toString(), result, getOutput());
+            }
          }
       }
 

Copied: projects/jboss-deployers/branches/vfs3/deployers-vfs-spi/src/main/java/org/jboss/deployers/vfs/spi/deployer/helpers/BeanMetaDataDeployerPlugin.java (from rev 98000, projects/jboss-deployers/trunk/deployers-vfs-spi/src/main/java/org/jboss/deployers/vfs/spi/deployer/helpers/BeanMetaDataDeployerPlugin.java)
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs-spi/src/main/java/org/jboss/deployers/vfs/spi/deployer/helpers/BeanMetaDataDeployerPlugin.java	                        (rev 0)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs-spi/src/main/java/org/jboss/deployers/vfs/spi/deployer/helpers/BeanMetaDataDeployerPlugin.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -0,0 +1,68 @@
+/*
+* 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.deployers.vfs.spi.deployer.helpers;
+
+import org.jboss.beans.metadata.spi.BeanMetaData;
+import org.jboss.dependency.spi.Controller;
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.kernel.spi.dependency.KernelControllerContext;
+
+/**
+ * Interface used by BeanMetaDataDeployer to create controller contexts for deployment, and
+ * to take care of special needs during undeployment.
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
+public interface BeanMetaDataDeployerPlugin
+{
+   /**
+    * The relative order of this creator. BeanMetaDataDeployer will try to 
+    * create contexts with values first.
+    * @return The relative order
+    */
+   int getRelativeOrder();
+   
+   /**
+    * Create a controller context
+    * 
+    * @param controller The controller to which the beans will be deployed
+    * @param unit The deployment unit we are deploying
+    * @param beanMetaData The bean metadata we are deploying
+    * @return the created controller context or null if this controller context creator should not handle the creation of the context 
+    */
+   KernelControllerContext createContext(Controller controller, DeploymentUnit unit, BeanMetaData beanMetaData);
+   
+   /**
+    * Hook to uninstall a context from the controller if it needs special handling on uninstall. The BeanMetaDataDeployer
+    * remembers which KernelContextCreator was used to create a KernelControllerContext and on undeploy will
+    * call this method.
+    * 
+    * @param controller The controller containing the context
+    * @param unit The deployment unit we are uninstalling
+    * @param beanMetaData The bean metadata of the context that we are uninstalling. Its name is normally 
+    * the same as the name of the context to be uninstalled
+    * @return true if uninstall was handled here, false if we did not do the uninstall (i.e. nothing special 
+    * is required for the uninstall, so it should be handled as normal by the BeanMetaDataDeployer)
+    */
+   boolean uninstallContext(Controller controller, DeploymentUnit unit, BeanMetaData beanMetaData);
+}

Modified: projects/jboss-deployers/branches/vfs3/deployers-vfs-spi/src/main/java/org/jboss/deployers/vfs/spi/structure/CandidateAnnotationsCallback.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs-spi/src/main/java/org/jboss/deployers/vfs/spi/structure/CandidateAnnotationsCallback.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs-spi/src/main/java/org/jboss/deployers/vfs/spi/structure/CandidateAnnotationsCallback.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -23,7 +23,7 @@
 
 import java.lang.annotation.Annotation;
 
-import org.jboss.deployers.spi.annotations.AnnotationEnvironment;
+import org.jboss.mcann.AnnotationRepository;
 import org.jboss.vfs.VirtualFile;
 
 /**
@@ -41,5 +41,5 @@
     * @param env the annotation environment
     * @param annotationClass the current annotation class
     */
-   void executeCallback(VirtualFile root, StructureContext currentContext, AnnotationEnvironment env, Class<? extends Annotation> annotationClass);
+   void executeCallback(VirtualFile root, StructureContext currentContext, AnnotationRepository env, Class<? extends Annotation> annotationClass);
 }
\ No newline at end of file

Modified: projects/jboss-deployers/branches/vfs3/deployers-vfs-spi/src/main/java/org/jboss/deployers/vfs/spi/structure/helpers/AbstractStructureDeployer.java
===================================================================
--- projects/jboss-deployers/branches/vfs3/deployers-vfs-spi/src/main/java/org/jboss/deployers/vfs/spi/structure/helpers/AbstractStructureDeployer.java	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/deployers-vfs-spi/src/main/java/org/jboss/deployers/vfs/spi/structure/helpers/AbstractStructureDeployer.java	2009-12-21 16:03:14 UTC (rev 98088)
@@ -28,7 +28,6 @@
 import java.util.List;
 import java.util.Set;
 
-import org.jboss.deployers.spi.annotations.AnnotationEnvironment;
 import org.jboss.deployers.spi.structure.ClassPathEntry;
 import org.jboss.deployers.spi.structure.ContextInfo;
 import org.jboss.deployers.spi.structure.StructureMetaData;
@@ -38,6 +37,7 @@
 import org.jboss.deployers.vfs.spi.structure.StructureDeployer;
 import org.jboss.deployers.vfs.spi.structure.VFSStructuralDeployers;
 import org.jboss.logging.Logger;
+import org.jboss.mcann.AnnotationRepository;
 import org.jboss.util.collection.CollectionsFactory;
 import org.jboss.vfs.VFSUtils;
 import org.jboss.vfs.VirtualFile;
@@ -258,12 +258,12 @@
    }
 
    /**
-    * Create annotation environment
+    * Create annotation repository
     *
     * @param root the deployment root
-    * @return new annotation environment
+    * @return new annotation repository
     */
-   protected abstract AnnotationEnvironment createAnnotationEnvironment(VirtualFile root);
+   protected abstract AnnotationRepository createAnnotationRepository(VirtualFile root);
 
    /**
     * Check for candidate annotations.
@@ -291,7 +291,7 @@
       boolean result = false;
       for(VirtualFile root : roots)
       {
-         AnnotationEnvironment env = createAnnotationEnvironment(root);
+         AnnotationRepository env = createAnnotationRepository(root);
          for (Class<? extends Annotation> annotationClass : candidateAnnotations)
          {
             if (env.hasClassAnnotatedWith(annotationClass))

Modified: projects/jboss-deployers/branches/vfs3/pom.xml
===================================================================
--- projects/jboss-deployers/branches/vfs3/pom.xml	2009-12-21 15:56:16 UTC (rev 98087)
+++ projects/jboss-deployers/branches/vfs3/pom.xml	2009-12-21 16:03:14 UTC (rev 98088)
@@ -22,7 +22,9 @@
 
   <properties>
     <version.jboss.vfs>3.0.0.CR1-SNAPSHOT</version.jboss.vfs>
-    <version.jboss.man>2.1.1.CR1</version.jboss.man>
+    <version.jboss.reflect>2.2.0-SNAPSHOT</version.jboss.reflect>
+    <version.jboss.classpool>1.0.0-SNAPSHOT</version.jboss.classpool>
+    <version.jboss.man>2.1.1.GA</version.jboss.man>
     <version.jboss.mdr>2.0.2.GA</version.jboss.mdr>
     <version.jboss.kernel>2.2.0-SNAPSHOT</version.jboss.kernel>
     <version.jboss.classloader>2.2.0-SNAPSHOT</version.jboss.classloader>
@@ -30,14 +32,15 @@
     <version.jboss.common.core>2.2.14.GA</version.jboss.common.core>
     <version.jboss.logging.spi>2.2.0.CR1</version.jboss.logging.spi>
     <version.jboss.logging.log4j>2.2.0.CR1</version.jboss.logging.log4j>
-    <version.jbossxb>2.0.2-SNAPSHOT</version.jbossxb>
+    <version.jbossxb>2.0.2.Beta2</version.jbossxb>
     <version.jboss.aop>2.1.0.CR3</version.jboss.aop>
     <version.org.jboss.test>1.1.1.GA</version.org.jboss.test>
     <version.junit>4.4</version.junit>
-    <version.javassist>3.10.0.GA</version.javassist>
+    <version.javassist>3.11.0.GA</version.javassist>
     <version.stax.staxapi>1.0</version.stax.staxapi>
     <version.ant.junit>1.6.5</version.ant.junit>
-    <version.jboss.byteman>1.0.2</version.jboss.byteman>
+    <version.jboss.byteman>1.0.3.CP01</version.jboss.byteman>
+    <version.jboss.mcann>1.0.0-SNAPSHOT</version.jboss.mcann>
   </properties>
 
   <modules>
@@ -332,6 +335,21 @@
         <version>${version.stax.staxapi}</version>
         <optional>true</optional>
       </dependency>
+      <dependency>
+        <groupId>org.jboss</groupId>
+        <artifactId>jboss-reflect</artifactId>
+        <version>${version.jboss.reflect}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.jboss.classpool</groupId>
+        <artifactId>jboss-classpool-jbosscl</artifactId>
+        <version>${version.jboss.classpool}</version>
+      </dependency>
+      <dependency>
+          <groupId>org.jboss.mcann</groupId>
+          <artifactId>mcann-core</artifactId>
+          <version>${version.jboss.mcann}</version>
+      </dependency>
       <!-- test dependencies -->
       <dependency>
         <groupId>org.jboss.test</groupId>




More information about the jboss-cvs-commits mailing list