[jboss-cvs] JBossAS SVN: r69880 - in projects/microcontainer/trunk: classloading-vfs and 57 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Mon Feb 18 08:35:09 EST 2008
Author: adrian at jboss.org
Date: 2008-02-18 08:35:09 -0500 (Mon, 18 Feb 2008)
New Revision: 69880
Added:
projects/microcontainer/trunk/classloading-vfs/
projects/microcontainer/trunk/classloading-vfs/.classpath
projects/microcontainer/trunk/classloading-vfs/.project
projects/microcontainer/trunk/classloading-vfs/.settings/
projects/microcontainer/trunk/classloading-vfs/.settings/org.eclipse.jdt.core.prefs
projects/microcontainer/trunk/classloading-vfs/pom.xml
projects/microcontainer/trunk/classloading-vfs/src/
projects/microcontainer/trunk/classloading-vfs/src/etc/
projects/microcontainer/trunk/classloading-vfs/src/etc/default.mf
projects/microcontainer/trunk/classloading-vfs/src/main/
projects/microcontainer/trunk/classloading-vfs/src/main/org/
projects/microcontainer/trunk/classloading-vfs/src/main/org/jboss/
projects/microcontainer/trunk/classloading-vfs/src/main/org/jboss/classloading/
projects/microcontainer/trunk/classloading-vfs/src/main/org/jboss/classloading/plugins/
projects/microcontainer/trunk/classloading-vfs/src/main/org/jboss/classloading/plugins/vfs/
projects/microcontainer/trunk/classloading-vfs/src/main/org/jboss/classloading/plugins/vfs/PackageVisitor.java
projects/microcontainer/trunk/classloading-vfs/src/main/org/jboss/classloading/spi/
projects/microcontainer/trunk/classloading-vfs/src/main/org/jboss/classloading/spi/vfs/
projects/microcontainer/trunk/classloading-vfs/src/main/org/jboss/classloading/spi/vfs/dependency/
projects/microcontainer/trunk/classloading-vfs/src/main/org/jboss/classloading/spi/vfs/dependency/VFSClassLoaderPolicyModule.java
projects/microcontainer/trunk/classloading-vfs/src/main/org/jboss/classloading/spi/vfs/metadata/
projects/microcontainer/trunk/classloading-vfs/src/main/org/jboss/classloading/spi/vfs/metadata/VFSClassLoaderFactory.java
projects/microcontainer/trunk/classloading-vfs/src/main/org/jboss/classloading/spi/vfs/metadata/VFSClassLoaderFactory10.java
projects/microcontainer/trunk/classloading-vfs/src/main/org/jboss/classloading/spi/vfs/metadata/package-info.java
projects/microcontainer/trunk/classloading-vfs/src/main/org/jboss/classloading/spi/vfs/policy/
projects/microcontainer/trunk/classloading-vfs/src/main/org/jboss/classloading/spi/vfs/policy/VFSClassLoaderPolicy.java
projects/microcontainer/trunk/classloading-vfs/src/resources/
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/classloader/
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/classloader/lib/
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/classloader/lib/util.jar/
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/classloader/testear1x.ear
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/classloader/testjar1/
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/classloader/testjar1/notempty
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/classloader/testjar1/package1/
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/classloader/testjar1/package1/notempty
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/classloader/testjar1/package2/
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/classloader/testjar1/package2/notempty
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/classloader/testjar1/package2/subpackage1/
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/classloader/testjar1/package2/subpackage1/notempty
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/classloader/testjar1/package2/subpackage2/
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/classloader/testjar1/package2/subpackage2/notempty
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/classloader/testjar1/package2/subpackage3/
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/classloader/testjar1/package2/subpackage3/notempty
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/classloader/testjar2/
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/classloader/testjar2/package1/
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/classloader/testjar2/package1/notempty
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/classloader/testwar1.war/
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/classloader/testwar1.war/META-INF/
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/classloader/testwar1.war/META-INF/MANIFEST.MF
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/classloader/testwar1.war/WEB-INF/
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/classloader/testwar1.war/WEB-INF/classes/
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/classloader/testwar1.war/WEB-INF/classes/test/
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/classloader/testwar1.war/WEB-INF/classes/test/Servlet.class
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/classloader/testwar1.war/WEB-INF/test-resource.txt
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/Common.xml
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/test/
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/test/A1.0.0.xml
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/test/B1.0.0.xml
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/test/SmokeTest.xml
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ExportImportMixed.xml
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ExportOneModuleNoVersion.xml
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ExportOneModuleVersioned.xml
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ExportOnePackageNoVersion.xml
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ExportOnePackageVersioned.xml
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ExportThreeModules.xml
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ExportThreePackages.xml
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ImportOneModuleNoVersion.xml
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ImportOneModuleVersioned.xml
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ImportOnePackageNoVersion.xml
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ImportOnePackageVersioned.xml
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ImportThreeModules.xml
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ImportThreePackages.xml
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ImportVersionRange.xml
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleBlackList.xml
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleCache.xml
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleContext.xml
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleDomain.xml
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleExcluded.xml
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleExcludedExport.xml
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleExportAll.xml
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleImportAll.xml
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleIncluded.xml
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleJ2seClassLoadingCompliance.xml
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleName.xml
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleParentDomain.xml
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleRoots.xml
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleSystem.xml
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleVersion.xml
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/OptionalRequirement.xml
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ReExportRequirement.xml
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/UsesRequirement.xml
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/WildcardCapability.xml
projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/WildcardRequirement.xml
projects/microcontainer/trunk/classloading-vfs/src/tests/
projects/microcontainer/trunk/classloading-vfs/src/tests/org/
projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/
projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/
projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/
projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/ClassLoadingVFSTestSuite.java
projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/
projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/
projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/VFSClassLoadingMicrocontainerTest.java
projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/VFSClassLoadingMicrocontainerTestDelegate.java
projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/support/
projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/support/a/
projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/support/a/A.java
projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/support/b/
projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/support/b/B.java
projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/support/c/
projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/support/c/C.java
projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/test/
projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/test/DomainUnitTestCase.java
projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/test/ImportAllUnitTestCase.java
projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/test/ModuleDependencyUnitTestCase.java
projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/test/PackageDependencyUnitTestCase.java
projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/test/ReExportModuleUnitTestCase.java
projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/test/ReExportPackageUnitTestCase.java
projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/test/UsesPackageUnitTestCase.java
projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/test/VFSClassLoaderFactoryUnitTestCase.java
projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/xml/
projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/xml/AbstractJBossXBTest.java
projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/xml/JBossXBTestDelegate.java
projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/xml/SchemaPrinter.java
projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/xml/TestSchemaResolver.java
projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/xml/support/
projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/xml/support/TestCapability.java
projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/xml/support/TestRequirement.java
projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/xml/support/package-info.java
projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/xml/test/
projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/xml/test/VFSClassLoaderFactoryXMLUnitTestCase.java
projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/policy/
projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/policy/test/
projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/policy/test/ExportAllUnitTestCase.java
Log:
Initial Import
Added: projects/microcontainer/trunk/classloading-vfs/.classpath
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/.classpath (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/.classpath 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src/main"/>
+ <classpathentry excluding="**/*.java" kind="src" output="target/tests-classes" path="src/resources/tests"/>
+ <classpathentry kind="src" output="target/tests-classes" path="src/tests"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="var" path="M2_REPO/jboss/jboss-common-logging-log4j/2.0.4.GA/jboss-common-logging-log4j-2.0.4.GA.jar" sourcepath="M2_REPO/jboss/jboss-common-logging-log4j/2.0.4.GA/jboss-common-logging-log4j-2.0.4.GA-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/jboss-classloading-spi/5.0.0.Beta3/jboss-classloading-spi-5.0.0.Beta3.jar" sourcepath="M2_REPO/org/jboss/jboss-classloading-spi/5.0.0.Beta3/jboss-classloading-spi-5.0.0.Beta3-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/jboss-common-core/2.2.3.GA/jboss-common-core-2.2.3.GA.jar" sourcepath="M2_REPO/org/jboss/jboss-common-core/2.2.3.GA/jboss-common-core-2.2.3.GA-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/apache-httpclient/commons-httpclient/2.0.2/commons-httpclient-2.0.2.jar"/>
+ <classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar" sourcepath="M2_REPO/junit/junit/3.8.1/junit-3.8.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/log4j/log4j/1.2.14/log4j-1.2.14.jar" sourcepath="M2_REPO/log4j/log4j/1.2.14/log4j-1.2.14-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/jboss-test/1.0.4.GA/jboss-test-1.0.4.GA.jar" sourcepath="M2_REPO/org/jboss/jboss-test/1.0.4.GA/jboss-test-1.0.4.GA-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/ant/ant-junit/1.6.5/ant-junit-1.6.5.jar"/>
+ <classpathentry kind="var" path="M2_REPO/jboss/jboss-common-logging-spi/2.0.4.GA/jboss-common-logging-spi-2.0.4.GA.jar" sourcepath="M2_REPO/jboss/jboss-common-logging-spi/2.0.4.GA/jboss-common-logging-spi-2.0.4.GA-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/apache-slide/webdavlib/2.0/webdavlib-2.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/ant/ant/1.6.5/ant-1.6.5.jar" sourcepath="M2_REPO/ant/ant/1.6.5/ant-1.6.5-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/apache-xerces/xercesImpl/2.7.1/xercesImpl-2.7.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/apache-xerces/xml-apis/2.7.1/xml-apis-2.7.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/javax/xml/bind/jaxb-api/2.0/jaxb-api-2.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/javax/xml/bind/jsr173_api/1.0/jsr173_api-1.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/javax/activation/activation/1.1/activation-1.1.jar" sourcepath="M2_REPO/javax/activation/activation/1.1/activation-1.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/jboss/jboss-logging-spi/2.0.3.GA/jboss-logging-spi-2.0.3.GA.jar" sourcepath="M2_REPO/jboss/jboss-logging-spi/2.0.3.GA/jboss-logging-spi-2.0.3.GA-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/jbossxb/2.0.0.CR5/jbossxb-2.0.0.CR5.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/jboss-vfs/2.0.0.Beta7/jboss-vfs-2.0.0.Beta7.jar"/>
+ <classpathentry combineaccessrules="false" kind="src" path="/jboss-classloader"/>
+ <classpathentry combineaccessrules="false" kind="src" path="/jboss-container"/>
+ <classpathentry combineaccessrules="false" kind="src" path="/jboss-dependency"/>
+ <classpathentry combineaccessrules="false" kind="src" path="/jboss-kernel"/>
+ <classpathentry combineaccessrules="false" kind="src" path="/jboss-classloading"/>
+ <classpathentry kind="output" path="target/classes"/>
+</classpath>
Added: projects/microcontainer/trunk/classloading-vfs/.project
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/.project (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/.project 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,13 @@
+<projectDescription>
+ <name>jboss-classloading vfs</name>
+ <comment>JBoss VFS ClassLoading</comment>
+ <projects/>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
Added: projects/microcontainer/trunk/classloading-vfs/.settings/org.eclipse.jdt.core.prefs
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/.settings/org.eclipse.jdt.core.prefs (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/.settings/org.eclipse.jdt.core.prefs 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,5 @@
+#Fri Sep 21 17:50:00 BST 2007
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.source=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
Added: projects/microcontainer/trunk/classloading-vfs/pom.xml
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/pom.xml (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/pom.xml 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,81 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <parent>
+ <groupId>org.jboss.microcontainer</groupId>
+ <artifactId>jboss-microcontainer</artifactId>
+ <version>2.0.0-SNAPSHOT</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <artifactId>jboss-classloading-vfs</artifactId>
+ <packaging>jar</packaging>
+ <name>JBoss Microcontainer ClassLoading VFS</name>
+ <url>http://www.jboss.com/products/jbossmc</url>
+ <description>JBoss ClassLoading VFS</description>
+ <build>
+ <testResources>
+ <testResource>
+ <directory>src/resources/tests</directory>
+ </testResource>
+ </testResources>
+ </build>
+ <!-- Do not add version information here, use ../build/pom.xml instead -->
+ <dependencies>
+ <!-- Global dependencies -->
+ <dependency>
+ <groupId>org.jboss.microcontainer</groupId>
+ <artifactId>jboss-container</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.microcontainer</groupId>
+ <artifactId>jboss-dependency</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.microcontainer</groupId>
+ <artifactId>jboss-kernel</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.microcontainer</groupId>
+ <artifactId>jboss-classloader</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.microcontainer</groupId>
+ <artifactId>jboss-classloading</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss</groupId>
+ <artifactId>jboss-vfs</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss</groupId>
+ <artifactId>jboss-common-core</artifactId>
+ <exclusions>
+ <exclusion>
+ <groupId>jboss</groupId>
+ <artifactId>jboss-common-logging-spi</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>jboss</groupId>
+ <artifactId>jboss-logging-spi</artifactId>
+ </dependency>
+ <!-- Test dependencies -->
+ <dependency>
+ <groupId>org.jboss</groupId>
+ <artifactId>jboss-test</artifactId>
+ <exclusions>
+ <exclusion>
+ <groupId>jboss</groupId>
+ <artifactId>jboss-common-core</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>jboss</groupId>
+ <artifactId>jboss-common-logging-spi</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ </dependency>
+ </dependencies>
+</project>
Added: projects/microcontainer/trunk/classloading-vfs/src/etc/default.mf
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/etc/default.mf (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/etc/default.mf 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,10 @@
+Manifest-Version: 1.0
+Created-By: @java.vm.version@ (@java.vm.vendor@)
+Specification-Title: @specification.title@
+Specification-Version: @specification.version@
+Specification-Vendor: @specification.vendor@
+Implementation-Title: @implementation.title@
+Implementation-URL: @implementation.url@
+Implementation-Version: @implementation.version@
+Implementation-Vendor: @implementation.vendor@
+Implementation-Vendor-Id: @implementation.vendor.id@
Added: projects/microcontainer/trunk/classloading-vfs/src/main/org/jboss/classloading/plugins/vfs/PackageVisitor.java
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/main/org/jboss/classloading/plugins/vfs/PackageVisitor.java (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/main/org/jboss/classloading/plugins/vfs/PackageVisitor.java 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,200 @@
+/*
+ * 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.classloading.plugins.vfs;
+
+import java.io.IOException;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.jboss.classloader.spi.filter.ClassFilter;
+import org.jboss.classloading.spi.metadata.ExportAll;
+import org.jboss.virtual.VirtualFile;
+import org.jboss.virtual.VirtualFileVisitor;
+import org.jboss.virtual.VisitorAttributes;
+
+/**
+ * Visits a virtual file system recursively
+ * to determine package names based on the exportAll policy
+ *
+ * @author <a href="adrian at jboss.org">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class PackageVisitor implements VirtualFileVisitor
+{
+ /** The packages */
+ private Set<String> packages = new HashSet<String>();
+
+ /** The export all */
+ private ExportAll exportAll;
+
+ /** The root */
+ private String rootPath;
+
+ /** The root with slash*/
+ private String rootPathWithSlash;
+
+ /** The included packages */
+ private ClassFilter included;
+
+ /** The excluded packages */
+ private ClassFilter excluded;
+
+ /** The excluded export packages */
+ private ClassFilter excludedExport;
+
+ /**
+ * Determine the packages
+ *
+ * @param roots the roots
+ * @param exportAll the exportAll
+ * @param included the included packages
+ * @param excluded the excluded packages
+ * @param excludedExport the excluded export packages
+ * @return the packages
+ */
+ public static Set<String> determineAllPackages(VirtualFile[] roots, ExportAll exportAll, ClassFilter included, ClassFilter excluded, ClassFilter excludedExport)
+ {
+ PackageVisitor visitor = new PackageVisitor(exportAll, included, excluded, excludedExport);
+ for (VirtualFile root : roots)
+ {
+ try
+ {
+ visitor.setRoot(root);
+ root.visit(visitor);
+ }
+ catch (Exception e)
+ {
+ throw new Error("Error visiting " + root, e);
+ }
+ }
+ return visitor.getPackages();
+ }
+
+ /**
+ * Create a new PackageVisitor.
+ *
+ * @param exportAll the export all policy
+ * @param included the included packages
+ * @param excluded the excluded packages
+ * @param excludedExport the excluded export packages
+ * @throws IllegalArgumentException for a null exportAll policy
+ */
+ PackageVisitor(ExportAll exportAll, ClassFilter included, ClassFilter excluded, ClassFilter excludedExport)
+ {
+ if (exportAll == null)
+ throw new IllegalArgumentException("Null export policy");
+ this.exportAll = exportAll;
+ this.included = included;
+ this.excluded = excluded;
+ this.excludedExport = excludedExport;
+ }
+
+ /**
+ * Set the root
+ *
+ * @param root the root
+ * @throws IllegalArgumentException for a null root
+ */
+ void setRoot(VirtualFile root)
+ {
+ if (root == null)
+ throw new IllegalArgumentException("Null root");
+ rootPath = root.getPathName();
+ rootPathWithSlash = rootPath + "/";
+ }
+
+ /**
+ * Get the packages.
+ *
+ * @return the packages.
+ */
+ Set<String> getPackages()
+ {
+ return packages;
+ }
+
+ public VisitorAttributes getAttributes()
+ {
+ VisitorAttributes attributes = new VisitorAttributes();
+ attributes.setIncludeRoot(true);
+ attributes.setRecurseFilter(VisitorAttributes.RECURSE_ALL);
+ return attributes;
+ }
+
+ public void visit(VirtualFile file)
+ {
+ try
+ {
+ // We only want only directories
+ if (file.isLeaf() == false)
+ {
+ boolean empty = true;
+ // Include empty directories?
+ if (exportAll == ExportAll.ALL)
+ empty = false;
+ else
+ {
+ // Determine whether there is anything there
+ List<VirtualFile> children = file.getChildren();
+ if (children != null && children.isEmpty() == false)
+ {
+ for (VirtualFile child : children)
+ {
+ // We must have a leaf to be non-empty
+ if (child.isLeaf())
+ {
+ empty = false;
+ break;
+ }
+ }
+ }
+ }
+ // This looks interesting
+ if (empty == false)
+ {
+ String path = file.getPathName();
+ if (path.equals(rootPath))
+ path = "";
+ else if (path.startsWith(rootPathWithSlash))
+ path = path.substring(rootPathWithSlash.length());
+ String pkg = path.replace('/', '.');
+
+ // Check for inclusions/exclusions
+ if (included != null && included.matchesPackageName(pkg) == false)
+ return;
+ if (excluded != null && excluded.matchesPackageName(pkg))
+ return;
+ if (excludedExport != null && excludedExport.matchesPackageName(pkg))
+ return;
+
+ // Ok this is a pacakge for export
+ packages.add(pkg);
+ }
+ }
+ }
+ catch (IOException e)
+ {
+ throw new Error("Error visiting " + file, e);
+ }
+ }
+}
\ No newline at end of file
Added: projects/microcontainer/trunk/classloading-vfs/src/main/org/jboss/classloading/spi/vfs/dependency/VFSClassLoaderPolicyModule.java
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/main/org/jboss/classloading/spi/vfs/dependency/VFSClassLoaderPolicyModule.java (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/main/org/jboss/classloading/spi/vfs/dependency/VFSClassLoaderPolicyModule.java 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,212 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2008, 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.classloading.spi.vfs.dependency;
+
+import java.net.URI;
+import java.util.List;
+import java.util.Set;
+import java.util.concurrent.CopyOnWriteArrayList;
+
+import org.jboss.classloader.spi.filter.ClassFilter;
+import org.jboss.classloading.plugins.vfs.PackageVisitor;
+import org.jboss.classloading.spi.dependency.policy.ClassLoaderPolicyModule;
+import org.jboss.classloading.spi.metadata.Capability;
+import org.jboss.classloading.spi.metadata.ClassLoadingMetaDataFactory;
+import org.jboss.classloading.spi.metadata.ExportAll;
+import org.jboss.classloading.spi.vfs.metadata.VFSClassLoaderFactory;
+import org.jboss.classloading.spi.vfs.policy.VFSClassLoaderPolicy;
+import org.jboss.kernel.spi.dependency.KernelControllerContext;
+import org.jboss.kernel.spi.dependency.KernelControllerContextAware;
+import org.jboss.virtual.VFS;
+import org.jboss.virtual.VirtualFile;
+
+/**
+ * VFSClassLoaderPolicyModule.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class VFSClassLoaderPolicyModule extends ClassLoaderPolicyModule implements KernelControllerContextAware
+{
+ /** The serialVersionUID */
+ private static final long serialVersionUID = 1L;
+
+ /** The roots */
+ private List<String> roots;
+
+ /** Our cached vfs roots */
+ private VirtualFile[] vfsRoots;
+
+ /**
+ * Create a new VFSClassLoaderPolicyModule.
+ *
+ * @param classLoadingMetaData the classloading metadata
+ * @param contextName the context name
+ */
+ public VFSClassLoaderPolicyModule(VFSClassLoaderFactory classLoadingMetaData, String contextName)
+ {
+ super(classLoadingMetaData, contextName);
+ }
+
+ /**
+ * Get the roots.
+ *
+ * @return the roots.
+ */
+ public List<String> getRoots()
+ {
+ return roots;
+ }
+
+ /**
+ * Set the roots.
+ *
+ * @param roots the roots.
+ */
+ public void setRoots(List<String> roots)
+ {
+ this.roots = roots;
+ }
+
+ @Override
+ protected List<Capability> determineCapabilities()
+ {
+ // While we are here, check the roots
+ VirtualFile[] roots = determineVFSRoots();
+
+ List<Capability> capabilities = super.determineCapabilities();
+ if (capabilities != null)
+ return capabilities;
+
+ // We need to work it out
+ ClassLoadingMetaDataFactory factory = ClassLoadingMetaDataFactory.getInstance();
+ capabilities = new CopyOnWriteArrayList<Capability>();
+
+ // We have a module capability
+ Object version = getVersion();
+ Capability capability = factory.createModule(getName(), version);
+ capabilities.add(capability);
+
+ // Do we determine package capabilities
+ ClassFilter included = getIncluded();
+ ClassFilter excluded = getExcluded();
+ ClassFilter excludedExport = getExcludedExport();
+ ExportAll exportAll = getExportAll();
+ if (exportAll != null)
+ {
+ Set<String> exportedPackages = PackageVisitor.determineAllPackages(roots, exportAll, included, excluded, excludedExport);
+ for (String packageName : exportedPackages)
+ {
+ capability = factory.createPackage(packageName, version);
+ capabilities.add(capability);
+ }
+ }
+
+ return capabilities;
+ }
+
+ public void setKernelControllerContext(KernelControllerContext context) throws Exception
+ {
+ setControllerContext(context);
+ }
+
+ public void unsetKernelControllerContext(KernelControllerContext context) throws Exception
+ {
+ setControllerContext(null);
+ }
+
+ @Override
+ protected VFSClassLoaderFactory getClassLoadingMetaData()
+ {
+ return (VFSClassLoaderFactory) super.getClassLoadingMetaData();
+ }
+
+ /**
+ * Get the virtual file roots
+ *
+ * @return the roots
+ */
+ protected VirtualFile[] determineVFSRoots()
+ {
+ if (vfsRoots != null)
+ return vfsRoots;
+
+ if (roots == null)
+ {
+ vfsRoots = new VirtualFile[0];
+ }
+ else
+ {
+ VirtualFile[] vfsRoots = new VirtualFile[roots.size()];
+ for (int i = 0; i < roots.size(); ++i)
+ {
+ String root = roots.get(i);
+ try
+ {
+ URI uri = new URI(root);
+ vfsRoots[i] = VFS.getRoot(uri);
+ }
+ catch (RuntimeException e)
+ {
+ throw e;
+ }
+ catch (Exception e)
+ {
+ throw new RuntimeException("Error creating VFS file for " + root, e);
+ }
+ }
+ this.vfsRoots = vfsRoots;
+ }
+ return vfsRoots;
+ }
+
+ @Override
+ public VFSClassLoaderPolicy getPolicy()
+ {
+ return (VFSClassLoaderPolicy) super.getPolicy();
+ }
+
+ @Override
+ protected VFSClassLoaderPolicy determinePolicy()
+ {
+ VirtualFile[] roots = determineVFSRoots();
+ VFSClassLoaderPolicy policy = VFSClassLoaderPolicy.createVFSClassLoaderPolicy(getContextName(), roots);
+ String[] packageNames = getPackageNames();
+ policy.setExportedPackages(packageNames);
+ policy.setIncluded(getIncluded());
+ policy.setExcluded(getExcluded());
+ policy.setExcludedExport(getExcludedExport());
+ policy.setExportAll(getExportAll());
+ policy.setImportAll(isImportAll());
+ policy.setCacheable(isCacheable());
+ policy.setBlackListable(isBlackListable());
+ policy.setDelegates(getDelegates());
+ return policy;
+ }
+
+ @Override
+ protected void reset()
+ {
+ super.reset();
+ vfsRoots = null;
+ }
+}
Added: projects/microcontainer/trunk/classloading-vfs/src/main/org/jboss/classloading/spi/vfs/metadata/VFSClassLoaderFactory.java
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/main/org/jboss/classloading/spi/vfs/metadata/VFSClassLoaderFactory.java (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/main/org/jboss/classloading/spi/vfs/metadata/VFSClassLoaderFactory.java 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,196 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2008, 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.classloading.spi.vfs.metadata;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+
+import org.jboss.beans.metadata.spi.BeanMetaData;
+import org.jboss.beans.metadata.spi.BeanMetaDataFactory;
+import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
+import org.jboss.classloader.spi.ClassLoaderSystem;
+import org.jboss.classloading.spi.metadata.ClassLoadingMetaData;
+import org.jboss.classloading.spi.version.Version;
+import org.jboss.classloading.spi.vfs.dependency.VFSClassLoaderPolicyModule;
+
+/**
+ * VFSClassLoaderFactory.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class VFSClassLoaderFactory extends ClassLoadingMetaData implements BeanMetaDataFactory
+{
+ /** The serialVersionUID */
+ private static final long serialVersionUID = -4446195023830263521L;
+
+ /** The default name for the classloading system */
+ public static final String DEFAULT_CLASSLOADER_SYSTEM_NAME = "ClassLoaderSystem";
+
+ /** The name of the classloader system */
+ private String classLoaderSystemName = DEFAULT_CLASSLOADER_SYSTEM_NAME;
+
+ /** The context name */
+ private String contextName = null;
+
+ /** The roots */
+ private List<String> roots = new CopyOnWriteArrayList<String>();
+
+ /**
+ * Create a new VFSClassLoaderFactory.
+ */
+ public VFSClassLoaderFactory()
+ {
+ }
+
+ /**
+ * Create a new VFSClassLoaderFactory.
+ *
+ * @param name the name
+ */
+ public VFSClassLoaderFactory(String name)
+ {
+ this(name, Version.DEFAULT_VERSION);
+ }
+
+ /**
+ * Create a new VFSClassLoaderFactory.
+ *
+ * @param name the name
+ * @param version the version
+ */
+ public VFSClassLoaderFactory(String name, String version)
+ {
+ this(name, Version.parseVersion(version));
+ }
+
+ /**
+ * Create a new VFSClassLoaderFactory.
+ *
+ * @param name the name
+ * @param version the version
+ */
+ public VFSClassLoaderFactory(String name, Version version)
+ {
+ setName(name);
+ setVersion(version);
+ }
+
+ /**
+ * Get the classLoaderSystemName.
+ *
+ * @return the classLoaderSystemName.
+ */
+ public String getClassLoaderSystemName()
+ {
+ return classLoaderSystemName;
+ }
+
+ /**
+ * Set the classLoaderSystemName.
+ *
+ * @param classLoaderSystemName the classLoaderSystemName.
+ */
+ @XmlAttribute(name="system")
+ public void setClassLoaderSystemName(String classLoaderSystemName)
+ {
+ if (classLoaderSystemName == null)
+ classLoaderSystemName = DEFAULT_CLASSLOADER_SYSTEM_NAME;
+ this.classLoaderSystemName = classLoaderSystemName;
+ }
+
+ /**
+ * Get the contextName.
+ *
+ * @return the contextName.
+ */
+ public String getContextName()
+ {
+ return contextName;
+ }
+
+ /**
+ * Set the contextName.
+ *
+ * @param contextName the contextName.
+ */
+ @XmlAttribute(name="context")
+ public void setContextName(String contextName)
+ {
+ this.contextName = contextName;
+ }
+
+ /**
+ * Get the roots.
+ *
+ * @return the roots.
+ */
+ public List<String> getRoots()
+ {
+ return roots;
+ }
+
+ /**
+ * Set the roots.
+ *
+ * @param roots the roots.
+ */
+ @XmlElement(name="root")
+ public void setRoots(List<String> roots)
+ {
+ if (roots == null)
+ roots = new CopyOnWriteArrayList<String>();
+ this.roots = roots;
+ }
+
+ public List<BeanMetaData> getBeans()
+ {
+ // Determine some properties
+ String contextName = getContextName();
+ if (contextName == null)
+ contextName = getName() + ":" + getVersion().toString();
+ String moduleName = contextName + "$MODULE";
+
+ // Create the module
+ BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder(moduleName, VFSClassLoaderPolicyModule.class.getName());
+ builder.addConstructorParameter(VFSClassLoaderFactory.class.getName(), this);
+ builder.addConstructorParameter(String.class.getName(), moduleName);
+ builder.addPropertyMetaData("roots", roots);
+ builder.setNoClassLoader();
+ builder.addUninstall("removeClassLoader");
+ BeanMetaData module = builder.getBeanMetaData();
+
+ // Create the classloader
+ builder = BeanMetaDataBuilder.createBuilder(contextName, ClassLoader.class.getName());
+ builder.setNoClassLoader();
+ builder.setFactory(moduleName);
+ builder.setFactoryMethod("registerClassLoaderPolicy");
+ builder.addConstructorParameter(ClassLoaderSystem.class.getName(), builder.createInject(classLoaderSystemName));
+ BeanMetaData classLoader = builder.getBeanMetaData();
+
+ return Arrays.asList(classLoader, module);
+ }
+}
Added: projects/microcontainer/trunk/classloading-vfs/src/main/org/jboss/classloading/spi/vfs/metadata/VFSClassLoaderFactory10.java
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/main/org/jboss/classloading/spi/vfs/metadata/VFSClassLoaderFactory10.java (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/main/org/jboss/classloading/spi/vfs/metadata/VFSClassLoaderFactory10.java 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,41 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2008, 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.classloading.spi.vfs.metadata;
+
+import javax.xml.bind.annotation.XmlNsForm;
+import javax.xml.bind.annotation.XmlRootElement;
+
+import org.jboss.xb.annotations.JBossXmlSchema;
+
+/**
+ * VFSClassLoaderFactory.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+ at JBossXmlSchema(namespace="urn:jboss:classloader:1.0", elementFormDefault=XmlNsForm.QUALIFIED)
+ at XmlRootElement(name="classloader")
+public class VFSClassLoaderFactory10 extends VFSClassLoaderFactory
+{
+ /** The serialVersionUID */
+ private static final long serialVersionUID = -4446195023830263521L;
+}
Added: projects/microcontainer/trunk/classloading-vfs/src/main/org/jboss/classloading/spi/vfs/metadata/package-info.java
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/main/org/jboss/classloading/spi/vfs/metadata/package-info.java (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/main/org/jboss/classloading/spi/vfs/metadata/package-info.java 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,32 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2008, 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.
+*/
+ at JBossXmlAdaptedTypes
+({
+ @JBossXmlAdaptedType(type=Version.class, valueAdapter=VersionValueAdapter.class)
+})
+package org.jboss.classloading.spi.vfs.metadata;
+
+import org.jboss.classloading.plugins.metadata.VersionValueAdapter;
+import org.jboss.classloading.spi.version.Version;
+import org.jboss.xb.annotations.JBossXmlAdaptedType;
+import org.jboss.xb.annotations.JBossXmlAdaptedTypes;
+
Added: projects/microcontainer/trunk/classloading-vfs/src/main/org/jboss/classloading/spi/vfs/policy/VFSClassLoaderPolicy.java
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/main/org/jboss/classloading/spi/vfs/policy/VFSClassLoaderPolicy.java (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/main/org/jboss/classloading/spi/vfs/policy/VFSClassLoaderPolicy.java 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,575 @@
+/*
+ * 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.classloading.spi.vfs.policy;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.security.CodeSource;
+import java.security.PermissionCollection;
+import java.security.Policy;
+import java.security.ProtectionDomain;
+import java.security.cert.Certificate;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.jar.Manifest;
+
+import org.jboss.classloader.spi.ClassLoaderPolicy;
+import org.jboss.classloader.spi.DelegateLoader;
+import org.jboss.classloader.spi.PackageInformation;
+import org.jboss.classloader.spi.filter.ClassFilter;
+import org.jboss.classloader.spi.filter.FilteredDelegateLoader;
+import org.jboss.classloading.plugins.vfs.PackageVisitor;
+import org.jboss.classloading.spi.metadata.ExportAll;
+import org.jboss.logging.Logger;
+import org.jboss.virtual.VFSUtils;
+import org.jboss.virtual.VirtualFile;
+
+/**
+ * VFSClassLoaderPolicy.
+ *
+ * @author <a href="adrian at jboss.org">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class VFSClassLoaderPolicy extends ClassLoaderPolicy
+{
+ /** The log */
+ private static Logger log = Logger.getLogger(VFSClassLoaderPolicy.class);
+
+ /** Tag for no manifest */
+ private static final Manifest NO_MANIFEST = new Manifest();
+
+ /** A name for the policy */
+ private String name;
+
+ /** The delegates */
+ private List<? extends DelegateLoader> delegates;
+
+ /** The roots */
+ private VirtualFile[] roots;
+
+ /** Whether to export all */
+ private ExportAll exportAll;
+
+ /** The included */
+ private ClassFilter included;
+
+ /** The excluded */
+ private ClassFilter excluded;
+
+ /** The excluded for export */
+ private ClassFilter excludedExport;
+
+ /** The exported packages */
+ private String[] exportedPackages;
+
+ /** The import all */
+ private boolean importAll;
+
+ /** Whether we are cachable */
+ private boolean cacheable = true;
+
+ /** Whether we are blacklistable */
+ private boolean blackListable = true;
+
+ /** Manifest cache */
+ private Map<URL, Manifest> manifestCache = new ConcurrentHashMap<URL, Manifest>();
+
+ /**
+ * Determine a name from the roots
+ *
+ * @param roots the roots
+ * @return the name
+ */
+ private static String determineName(VirtualFile[] roots)
+ {
+ if (roots == null)
+ return "";
+
+ try
+ {
+ for (VirtualFile root : roots)
+ return root.toURL().toString();
+ }
+ catch (Exception ignored)
+ {
+ }
+ return "";
+ }
+
+ /**
+ * Create a new VFSClassLoaderPolicy.
+ *
+ * @param roots the roots
+ * @return the classloader policy
+ * @throws IllegalArgumentException for null roots
+ */
+ public static VFSClassLoaderPolicy createVFSClassLoaderPolicy(VirtualFile... roots)
+ {
+ return new VFSClassLoaderPolicy(roots);
+ }
+
+ /**
+ * Create a new VFSClassLoaderPolicy.
+ *
+ * @param name a name of the policy
+ * @param roots the roots
+ * @return the classloader policy
+ * @throws IllegalArgumentException for null roots
+ */
+ public static VFSClassLoaderPolicy createVFSClassLoaderPolicy(String name, VirtualFile... roots)
+ {
+ return new VFSClassLoaderPolicy(name, roots);
+ }
+
+ /**
+ * Create a new VFSClassLoaderPolicy.
+ *
+ * @param roots the roots
+ * @throws IllegalArgumentException for null roots
+ */
+ public VFSClassLoaderPolicy(VirtualFile[] roots)
+ {
+ this(determineName(roots), roots);
+ }
+
+ /**
+ * Create a new VFSClassLoaderPolicy.
+ *
+ * @param name the name
+ * @param roots the roots
+ * @throws IllegalArgumentException for null roots
+ */
+ public VFSClassLoaderPolicy(String name, VirtualFile[] roots)
+ {
+ if (name == null)
+ throw new IllegalArgumentException("Null name");
+ if (roots == null)
+ throw new IllegalArgumentException("Null roots");
+ for (VirtualFile root : roots)
+ {
+ if (root == null)
+ throw new IllegalArgumentException("Null root in " + Arrays.asList(roots));
+ }
+
+ this.name = name;
+ this.roots = roots;
+ }
+
+ @Override
+ public String getName()
+ {
+ return name;
+ }
+
+ @Override
+ public List<? extends DelegateLoader> getDelegates()
+ {
+ return delegates;
+ }
+
+ /**
+ * Set the delegates.
+ *
+ * @param delegates the delegates.
+ */
+ public void setDelegates(List<? extends DelegateLoader> delegates)
+ {
+ this.delegates = delegates;
+ }
+
+ /**
+ * Get the included.
+ *
+ * @return the included.
+ */
+ public ClassFilter getIncluded()
+ {
+ return included;
+ }
+
+ /**
+ * Set the included.
+ *
+ * @param included the included.
+ */
+ public void setIncluded(ClassFilter included)
+ {
+ this.included = included;
+ }
+
+ /**
+ * Get the excluded.
+ *
+ * @return the excluded.
+ */
+ public ClassFilter getExcluded()
+ {
+ return excluded;
+ }
+
+ /**
+ * Set the excluded.
+ *
+ * @param excluded the excluded.
+ */
+ public void setExcluded(ClassFilter excluded)
+ {
+ this.excluded = excluded;
+ }
+
+ /**
+ * Get the excludedExport.
+ *
+ * @return the excludedExport.
+ */
+ public ClassFilter getExcludedExport()
+ {
+ return excludedExport;
+ }
+
+ /**
+ * Set the excludedExport.
+ *
+ * @param excludedExport the excludedExport.
+ */
+ public void setExcludedExport(ClassFilter excludedExport)
+ {
+ this.excludedExport = excludedExport;
+ }
+
+ /**
+ * Get the exportAll.
+ *
+ * @return the exportAll.
+ */
+ public ExportAll getExportAll()
+ {
+ return exportAll;
+ }
+
+ /**
+ * Set the exportAll.
+ *
+ * @param exportAll the exportAll.
+ */
+ public void setExportAll(ExportAll exportAll)
+ {
+ this.exportAll = exportAll;
+ if (exportAll != null)
+ {
+ if (exportedPackages == null)
+ {
+ Set<String> exported = PackageVisitor.determineAllPackages(roots, exportAll, included, excluded, excludedExport);
+ exportedPackages = exported.toArray(new String[exported.size()]);
+ }
+ }
+ }
+
+ /**
+ * Get the exported packages
+ *
+ * @return the exported packages
+ */
+ public String[] getExportedPackages()
+ {
+ return exportedPackages;
+ }
+
+ /**
+ * Set the exportedPackages.
+ *
+ * @param exportedPackages the exportedPackages.
+ */
+ public void setExportedPackages(String[] exportedPackages)
+ {
+ this.exportedPackages = exportedPackages;
+ }
+
+ @Override
+ public String[] getPackageNames()
+ {
+ return exportedPackages;
+ }
+
+ @Override
+ public boolean isImportAll()
+ {
+ return importAll;
+ }
+
+ /**
+ * Set the importAll.
+ *
+ * @param importAll the importAll.
+ */
+ public void setImportAll(boolean importAll)
+ {
+ this.importAll = importAll;
+ }
+
+ @Override
+ public boolean isCacheable()
+ {
+ return cacheable;
+ }
+
+ /**
+ * Set the cacheable.
+ *
+ * @param cacheable the cacheable.
+ */
+ public void setCacheable(boolean cacheable)
+ {
+ this.cacheable = cacheable;
+ }
+
+ @Override
+ public boolean isBlackListable()
+ {
+ return blackListable;
+ }
+
+ /**
+ * Set the blackListable.
+ *
+ * @param blackListable the blackListable.
+ */
+ public void setBlackListable(boolean blackListable)
+ {
+ this.blackListable = blackListable;
+ }
+
+ @Override
+ public DelegateLoader getExported()
+ {
+ if (getExportAll() != null)
+ return new FilteredDelegateLoader(this, ClassFilter.EVERYTHING);
+ return super.getExported();
+ }
+
+ @Override
+ public URL getResource(String path)
+ {
+ if (checkFilters(path, "getResource"))
+ return null;
+
+ VirtualFile child = findChild(path);
+ if (child != null)
+ {
+ try
+ {
+ return child.toURL();
+ }
+ catch (Exception ignored)
+ {
+ log.debug("Error determining URL for " + child, ignored);
+ return null;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public InputStream getResourceAsStream(String path)
+ {
+ if (checkFilters(path, "getResourceAsStream"))
+ return null;
+
+ VirtualFile child = findChild(path);
+ if (child != null)
+ {
+ try
+ {
+ return child.openStream();
+ }
+ catch (Exception ignored)
+ {
+ log.debug("Error opening stream for " + child, ignored);
+ return null;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public void getResources(String name, Set<URL> urls) throws IOException
+ {
+ if (checkFilters(name, "getResources"))
+ return;
+
+ for (VirtualFile root : roots)
+ {
+ try
+ {
+ VirtualFile child = root.getChild(name);
+ if (child != null)
+ urls.add(child.toURL());
+ }
+ catch (Exception e)
+ {
+ log.debug("Error getting resources for " + root, e);
+ }
+ }
+ }
+
+ /**
+ * Find a child from a path
+ *
+ * @param path the path
+ * @return the child if found in the roots
+ */
+ protected VirtualFile findChild(String path)
+ {
+ for (VirtualFile root : roots)
+ {
+ try
+ {
+ VirtualFile child = root.getChild(path);
+ if (child != null)
+ return child;
+ }
+ catch (Exception ignored)
+ {
+ // not found
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Find a root from a path
+ *
+ * @param path the path
+ * @return the root if found in the roots
+ */
+ protected VirtualFile findRoot(String path)
+ {
+ for (VirtualFile root : roots)
+ {
+ try
+ {
+ if (root.getChild(path) != null)
+ return root;
+ }
+ catch (Exception ignored)
+ {
+ // not found
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public PackageInformation getPackageInformation(String packageName)
+ {
+ String path = packageName.replace('.', '/');
+ VirtualFile root = findRoot(path);
+ Manifest manifest = null;
+ URL rootURL = null;
+ if (root != null)
+ {
+ try
+ {
+ rootURL = root.toURL();
+ manifest = manifestCache.get(rootURL);
+ if (manifest == null)
+ {
+ manifest = VFSUtils.getManifest(root);
+ if (manifest == null)
+ manifestCache.put(rootURL, NO_MANIFEST);
+ else
+ manifestCache.put(rootURL, manifest);
+ }
+
+ if (manifest == NO_MANIFEST)
+ manifest = null;
+ }
+ catch (Exception ignored)
+ {
+ if (log.isTraceEnabled())
+ log.trace("Unable to retrieve manifest for " + path + " url=" + rootURL + " error=" + ignored.getMessage());
+ }
+ }
+ return new PackageInformation(packageName, manifest);
+ }
+
+ @Override
+ protected void toLongString(StringBuilder builder)
+ {
+ builder.append(" roots=").append(Arrays.asList(roots)).append(" ");
+ super.toLongString(builder);
+ if (exportAll != null)
+ builder.append(exportAll);
+ }
+
+ @Override
+ protected ProtectionDomain getProtectionDomain(String className, String path)
+ {
+ VirtualFile clazz = findChild(path);
+ if (clazz == null)
+ {
+ log.trace("Unable to determine class file for " + className);
+ return null;
+ }
+ try
+ {
+ VirtualFile root = clazz.getVFS().getRoot();
+ URL codeSourceURL = root.toURL();
+ Certificate[] certs = null; // TODO JBMICROCONT-182 determine certificates
+ CodeSource cs = new CodeSource(codeSourceURL, certs);
+ PermissionCollection permissions = Policy.getPolicy().getPermissions(cs);
+ return new ProtectionDomain(cs, permissions);
+ }
+ catch (Exception e)
+ {
+ throw new Error("Error determining protection domain for " + clazz, e);
+ }
+ }
+
+ /**
+ * Check the filters
+ *
+ * @param path the path to check
+ * @param context the context
+ * @return true if it fails the filters
+ */
+ protected boolean checkFilters(String path, String context)
+ {
+ if (included != null && included.matchesResourcePath(path) == false)
+ {
+ if (log.isTraceEnabled())
+ log.trace(this + " " + context + " path=" + path + " doesn't match include filter: " + included);
+ return true;
+ }
+ if (excluded != null && excluded.matchesResourcePath(path))
+ {
+ if (log.isTraceEnabled())
+ log.trace(this + " " + context + " path=" + path + " matches exclude filter: " + excluded);
+ return true;
+ }
+ return false;
+ }
+}
Added: projects/microcontainer/trunk/classloading-vfs/src/resources/tests/classloader/testear1x.ear
===================================================================
(Binary files differ)
Property changes on: projects/microcontainer/trunk/classloading-vfs/src/resources/tests/classloader/testear1x.ear
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: projects/microcontainer/trunk/classloading-vfs/src/resources/tests/classloader/testjar1/notempty
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/resources/tests/classloader/testjar1/notempty (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/resources/tests/classloader/testjar1/notempty 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1 @@
+testjar1.
\ No newline at end of file
Added: projects/microcontainer/trunk/classloading-vfs/src/resources/tests/classloader/testjar1/package1/notempty
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/resources/tests/classloader/testjar1/package1/notempty (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/resources/tests/classloader/testjar1/package1/notempty 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1 @@
+testjar1.package1
\ No newline at end of file
Added: projects/microcontainer/trunk/classloading-vfs/src/resources/tests/classloader/testjar1/package2/notempty
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/resources/tests/classloader/testjar1/package2/notempty (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/resources/tests/classloader/testjar1/package2/notempty 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1 @@
+testjar1.package2
\ No newline at end of file
Added: projects/microcontainer/trunk/classloading-vfs/src/resources/tests/classloader/testjar1/package2/subpackage1/notempty
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/resources/tests/classloader/testjar1/package2/subpackage1/notempty (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/resources/tests/classloader/testjar1/package2/subpackage1/notempty 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1 @@
+testjar1.package2.subpackage1
\ No newline at end of file
Added: projects/microcontainer/trunk/classloading-vfs/src/resources/tests/classloader/testjar1/package2/subpackage2/notempty
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/resources/tests/classloader/testjar1/package2/subpackage2/notempty (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/resources/tests/classloader/testjar1/package2/subpackage2/notempty 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1 @@
+testjar1.package2.subpackage2
\ No newline at end of file
Added: projects/microcontainer/trunk/classloading-vfs/src/resources/tests/classloader/testjar1/package2/subpackage3/notempty
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/resources/tests/classloader/testjar1/package2/subpackage3/notempty (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/resources/tests/classloader/testjar1/package2/subpackage3/notempty 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1 @@
+testjar1.package2.subpackage3
\ No newline at end of file
Added: projects/microcontainer/trunk/classloading-vfs/src/resources/tests/classloader/testjar2/package1/notempty
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/resources/tests/classloader/testjar2/package1/notempty (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/resources/tests/classloader/testjar2/package1/notempty 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1 @@
+testjar2.package1
\ No newline at end of file
Added: projects/microcontainer/trunk/classloading-vfs/src/resources/tests/classloader/testwar1.war/META-INF/MANIFEST.MF
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/resources/tests/classloader/testwar1.war/META-INF/MANIFEST.MF (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/resources/tests/classloader/testwar1.war/META-INF/MANIFEST.MF 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,2 @@
+Manifest-Version: 1.0
+Class-Path: testjar1 lib/util.jar
Added: projects/microcontainer/trunk/classloading-vfs/src/resources/tests/classloader/testwar1.war/WEB-INF/classes/test/Servlet.class
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/resources/tests/classloader/testwar1.war/WEB-INF/classes/test/Servlet.class (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/resources/tests/classloader/testwar1.war/WEB-INF/classes/test/Servlet.class 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1 @@
+A servlet class
\ No newline at end of file
Added: projects/microcontainer/trunk/classloading-vfs/src/resources/tests/classloader/testwar1.war/WEB-INF/test-resource.txt
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/resources/tests/classloader/testwar1.war/WEB-INF/test-resource.txt (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/resources/tests/classloader/testwar1.war/WEB-INF/test-resource.txt 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1 @@
+A WEB-INF resource
\ No newline at end of file
Added: projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/Common.xml
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/Common.xml (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/Common.xml 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<deployment xmlns="urn:jboss:bean-deployer:2.0">
+
+ <bean name="ClassLoaderSystem" class="org.jboss.classloader.spi.ClassLoaderSystem">
+ <constructor factoryClass="org.jboss.test.classloading.vfs.metadata.VFSClassLoadingMicrocontainerTest" factoryMethod="getClassLoaderSystem"/>
+ </bean>
+
+ <bean name="ClassLoading" class="org.jboss.classloading.spi.dependency.ClassLoading">
+ <incallback method="addModule" state="Configured"/>
+ <uncallback method="removeModule" state="Configured"/>
+ </bean>
+
+ <bean name="SchemaResolverConfig" class="org.jboss.xb.binding.sunday.unmarshalling.SchemaResolverConfig">
+ <property name="bindingClasses">
+ <map keyClass="java.lang.String" valueClass="java.lang.String">
+ <entry>
+ <key>urn:jboss:classloader:1.0</key>
+ <value>org.jboss.classloading.spi.vfs.metadata.VFSClassLoaderFactory10</value>
+ </entry>
+ </map>
+ </property>
+ </bean>
+
+</deployment>
Added: projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/test/A1.0.0.xml
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/test/A1.0.0.xml (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/test/A1.0.0.xml 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<deployment xmlns="urn:jboss:bean-deployer:2.0" xmlns:cl="urn:jboss:classloader:1.0">
+
+ <cl:classloader name="a" version="1.0.0"/>
+
+</deployment>
Added: projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/test/B1.0.0.xml
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/test/B1.0.0.xml (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/test/B1.0.0.xml 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<deployment xmlns="urn:jboss:bean-deployer:2.0">
+
+ <classloader name="b" version="1.0.0" xmlns="urn:jboss:classloader:1.0">
+ <requirements>
+ <module name="a" version="1.0.0"/>
+ </requirements>
+ </classloader>
+
+</deployment>
Added: projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/test/SmokeTest.xml
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/test/SmokeTest.xml (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/test/SmokeTest.xml 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<deployment xmlns="urn:jboss:bean-deployer:2.0" xmlns:cl="urn:jboss:classloader:1.0">
+
+ <cl:classloader name="test"/>
+
+</deployment>
Added: projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ExportImportMixed.xml
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ExportImportMixed.xml (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ExportImportMixed.xml 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<classloader xmlns="urn:jboss:classloader:1.0"
+ name="test">
+ <capabilities>
+ <module name="test2" version="2.0.0"/>
+ <package name="test2" version="2.0.0"/>
+ <module name="test1" version="1.0.0"/>
+ <package name="test1" version="1.0.0"/>
+ </capabilities>
+ <requirements>
+ <module name="test2" from="2.0.0"/>
+ <package name="test2" from="2.0.0"/>
+ <module name="test1" from="1.0.0"/>
+ <package name="test1" from="1.0.0"/>
+ </requirements>
+</classloader>
Added: projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ExportOneModuleNoVersion.xml
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ExportOneModuleNoVersion.xml (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ExportOneModuleNoVersion.xml 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<classloader xmlns="urn:jboss:classloader:1.0"
+ name="test">
+ <capabilities>
+ <module name="export1"/>
+ </capabilities>
+</classloader>
Added: projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ExportOneModuleVersioned.xml
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ExportOneModuleVersioned.xml (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ExportOneModuleVersioned.xml 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<classloader xmlns="urn:jboss:classloader:1.0"
+ name="test">
+ <capabilities>
+ <module name="export1" version="1.0.0"/>
+ </capabilities>
+</classloader>
Added: projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ExportOnePackageNoVersion.xml
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ExportOnePackageNoVersion.xml (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ExportOnePackageNoVersion.xml 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<classloader xmlns="urn:jboss:classloader:1.0"
+ name="test">
+ <capabilities>
+ <package name="export1"/>
+ </capabilities>
+</classloader>
Added: projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ExportOnePackageVersioned.xml
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ExportOnePackageVersioned.xml (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ExportOnePackageVersioned.xml 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<classloader xmlns="urn:jboss:classloader:1.0"
+ name="test">
+ <capabilities>
+ <package name="export1" version="1.0.0"/>
+ </capabilities>
+</classloader>
Added: projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ExportThreeModules.xml
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ExportThreeModules.xml (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ExportThreeModules.xml 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<classloader xmlns="urn:jboss:classloader:1.0"
+ name="test">
+ <capabilities>
+ <module name="export1" version="1.0.0"/>
+ <module name="export2" version="2.0.0"/>
+ <module name="export3" version="3.0.0"/>
+ </capabilities>
+</classloader>
Added: projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ExportThreePackages.xml
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ExportThreePackages.xml (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ExportThreePackages.xml 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<classloader xmlns="urn:jboss:classloader:1.0"
+ name="test">
+ <capabilities>
+ <package name="export1" version="1.0.0"/>
+ <package name="export2" version="2.0.0"/>
+ <package name="export3" version="3.0.0"/>
+ </capabilities>
+</classloader>
Added: projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ImportOneModuleNoVersion.xml
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ImportOneModuleNoVersion.xml (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ImportOneModuleNoVersion.xml 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<classloader xmlns="urn:jboss:classloader:1.0"
+ name="test">
+ <requirements>
+ <module name="export1"/>
+ </requirements>
+</classloader>
Added: projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ImportOneModuleVersioned.xml
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ImportOneModuleVersioned.xml (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ImportOneModuleVersioned.xml 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<classloader xmlns="urn:jboss:classloader:1.0"
+ name="test">
+ <requirements>
+ <module name="export1" from="1.0.0" to="2.0.0"/>
+ </requirements>
+</classloader>
Added: projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ImportOnePackageNoVersion.xml
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ImportOnePackageNoVersion.xml (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ImportOnePackageNoVersion.xml 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<classloader xmlns="urn:jboss:classloader:1.0"
+ name="test">
+ <requirements>
+ <package name="export1"/>
+ </requirements>
+</classloader>
Added: projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ImportOnePackageVersioned.xml
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ImportOnePackageVersioned.xml (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ImportOnePackageVersioned.xml 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<classloader xmlns="urn:jboss:classloader:1.0"
+ name="test">
+ <requirements>
+ <package name="export1" from="1.0.0" to="2.0.0"/>
+ </requirements>
+</classloader>
Added: projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ImportThreeModules.xml
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ImportThreeModules.xml (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ImportThreeModules.xml 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<classloader xmlns="urn:jboss:classloader:1.0"
+ name="test">
+ <requirements>
+ <module name="export1" from="1.0.0" to="1.1.0"/>
+ <module name="export2" from="2.0.0" to="2.1.0"/>
+ <module name="export3" from="3.0.0" to="3.1.0"/>
+ </requirements>
+</classloader>
Added: projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ImportThreePackages.xml
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ImportThreePackages.xml (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ImportThreePackages.xml 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<classloader xmlns="urn:jboss:classloader:1.0"
+ name="test">
+ <requirements>
+ <package name="export1" from="1.0.0" to="1.1.0"/>
+ <package name="export2" from="2.0.0" to="2.1.0"/>
+ <package name="export3" from="3.0.0" to="3.1.0"/>
+ </requirements>
+</classloader>
Added: projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ImportVersionRange.xml
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ImportVersionRange.xml (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ImportVersionRange.xml 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<classloader xmlns="urn:jboss:classloader:1.0"
+ name="test">
+ <requirements>
+ <module name="export1"/>
+ <module name="export2" from="1.0.0"/>
+ <module name="export3" to="1.0.0"/>
+ <module name="export4" from="1.0.0" to="2.0.0"/>
+ <module name="export5" from="1.0.0" from-inclusive="false" to="2.0.0" to-inclusive="false"/>
+ <module name="export6" from="1.0.0" from-inclusive="false" to="2.0.0" to-inclusive="true"/>
+ <module name="export7" from="1.0.0" from-inclusive="true" to="2.0.0" to-inclusive="false"/>
+ <module name="export8" from="1.0.0" from-inclusive="true" to="2.0.0" to-inclusive="true"/>
+ </requirements>
+</classloader>
Added: projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleBlackList.xml
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleBlackList.xml (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleBlackList.xml 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<classloader xmlns="urn:jboss:classloader:1.0"
+ name="test"
+ blackList="false">
+</classloader>
Added: projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleCache.xml
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleCache.xml (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleCache.xml 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<classloader xmlns="urn:jboss:classloader:1.0"
+ name="test"
+ cache="false">
+</classloader>
Added: projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleContext.xml
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleContext.xml (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleContext.xml 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<classloader xmlns="urn:jboss:classloader:1.0"
+ name="test"
+ context="Context">
+</classloader>
Added: projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleDomain.xml
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleDomain.xml (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleDomain.xml 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<classloader xmlns="urn:jboss:classloader:1.0"
+ name="test"
+ domain="testDomain">
+</classloader>
Added: projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleExcluded.xml
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleExcluded.xml (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleExcluded.xml 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<classloader xmlns="urn:jboss:classloader:1.0"
+ name="test" excluded="Excluded">
+</classloader>
Added: projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleExcludedExport.xml
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleExcludedExport.xml (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleExcludedExport.xml 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<classloader xmlns="urn:jboss:classloader:1.0"
+ name="test" excludedExport="ExcludedExport">
+</classloader>
Added: projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleExportAll.xml
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleExportAll.xml (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleExportAll.xml 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<classloader xmlns="urn:jboss:classloader:1.0"
+ name="test"
+ export-all="ALL">
+</classloader>
Added: projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleImportAll.xml
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleImportAll.xml (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleImportAll.xml 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<classloader xmlns="urn:jboss:classloader:1.0"
+ name="test"
+ import-all="true">
+</classloader>
Added: projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleIncluded.xml
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleIncluded.xml (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleIncluded.xml 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<classloader xmlns="urn:jboss:classloader:1.0"
+ name="test" included="Included">
+</classloader>
Added: projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleJ2seClassLoadingCompliance.xml
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleJ2seClassLoadingCompliance.xml (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleJ2seClassLoadingCompliance.xml 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<classloader xmlns="urn:jboss:classloader:1.0"
+ name="test"
+ parent-first="false">
+</classloader>
Added: projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleName.xml
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleName.xml (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleName.xml 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<classloader xmlns="urn:jboss:classloader:1.0"
+ name="test">
+</classloader>
Added: projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleParentDomain.xml
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleParentDomain.xml (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleParentDomain.xml 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<classloader xmlns="urn:jboss:classloader:1.0"
+ name="test"
+ parent-domain="testParentDomain">
+</classloader>
Added: projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleRoots.xml
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleRoots.xml (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleRoots.xml 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<classloader xmlns="urn:jboss:classloader:1.0"
+ name="test">
+ <root>root1</root>
+ <root>root2</root>
+ <root>root3</root>
+</classloader>
Added: projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleSystem.xml
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleSystem.xml (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleSystem.xml 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<classloader xmlns="urn:jboss:classloader:1.0"
+ name="test"
+ system="System">
+</classloader>
Added: projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleVersion.xml
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleVersion.xml (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ModuleVersion.xml 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<classloader xmlns="urn:jboss:classloader:1.0"
+ name="test"
+ version="1.0.0">
+</classloader>
Added: projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/OptionalRequirement.xml
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/OptionalRequirement.xml (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/OptionalRequirement.xml 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<classloader xmlns="urn:jboss:classloader:1.0"
+ name="test">
+ <requirements>
+ <module name="test1" from="1.0.0" optional="true"/>
+ <package name="test1" from="1.0.0" optional="true"/>
+ </requirements>
+</classloader>
Added: projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ReExportRequirement.xml
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ReExportRequirement.xml (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/ReExportRequirement.xml 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<classloader xmlns="urn:jboss:classloader:1.0"
+ name="test">
+ <requirements>
+ <module name="test1" from="1.0.0" reExport="true"/>
+ <package name="test1" from="1.0.0" reExport="true"/>
+ </requirements>
+</classloader>
Added: projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/UsesRequirement.xml
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/UsesRequirement.xml (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/UsesRequirement.xml 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<classloader xmlns="urn:jboss:classloader:1.0"
+ name="test">
+ <requirements>
+ <uses name="test1" from="1.0.0"/>
+ </requirements>
+</classloader>
Added: projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/WildcardCapability.xml
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/WildcardCapability.xml (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/WildcardCapability.xml 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<classloader xmlns="urn:jboss:classloader:1.0"
+ name="test">
+ <capabilities>
+ <module name="test1" version="1.0.0"/>
+ <package name="test1" version="1.0.0"/>
+ <test xmlns="urn:jboss:test:classloader:capability:1.0" name="test" version="1.0.0"/>
+ </capabilities>
+</classloader>
Added: projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/WildcardRequirement.xml
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/WildcardRequirement.xml (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/resources/tests/org/jboss/test/classloading/vfs/metadata/xml/test/WildcardRequirement.xml 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<classloader xmlns="urn:jboss:classloader:1.0"
+ name="test">
+ <requirements>
+ <module name="test1" from="1.0.0"/>
+ <package name="test1" from="1.0.0"/>
+ <test xmlns="urn:jboss:test:classloader:requirement:1.0" name="test" from="1.0.0"/>
+ </requirements>
+</classloader>
Added: projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/ClassLoadingVFSTestSuite.java
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/ClassLoadingVFSTestSuite.java (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/ClassLoadingVFSTestSuite.java 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,79 @@
+/*
+ * 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.classloading;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import junit.textui.TestRunner;
+
+import org.jboss.test.classloading.vfs.metadata.test.DomainUnitTestCase;
+import org.jboss.test.classloading.vfs.metadata.test.ImportAllUnitTestCase;
+import org.jboss.test.classloading.vfs.metadata.test.ModuleDependencyUnitTestCase;
+import org.jboss.test.classloading.vfs.metadata.test.PackageDependencyUnitTestCase;
+import org.jboss.test.classloading.vfs.metadata.test.ReExportModuleUnitTestCase;
+import org.jboss.test.classloading.vfs.metadata.test.ReExportPackageUnitTestCase;
+import org.jboss.test.classloading.vfs.metadata.test.UsesPackageUnitTestCase;
+import org.jboss.test.classloading.vfs.metadata.test.VFSClassLoaderFactoryUnitTestCase;
+import org.jboss.test.classloading.vfs.metadata.xml.test.VFSClassLoaderFactoryXMLUnitTestCase;
+import org.jboss.test.classloading.vfs.policy.test.ExportAllUnitTestCase;
+
+/**
+ * ClassLoading VFS Test Suite.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 37459 $
+ */
+public class ClassLoadingVFSTestSuite extends TestSuite
+{
+ /**
+ * For running the testsuite from the command line
+ *
+ * @param args the command line args
+ */
+ public static void main(String[] args)
+ {
+ TestRunner.run(suite());
+ }
+
+ /**
+ * Create the testsuite
+ *
+ * @return the testsuite
+ */
+ public static Test suite()
+ {
+ TestSuite suite = new TestSuite("ClassLoading VFS Tests");
+
+ suite.addTest(ExportAllUnitTestCase.suite());
+ suite.addTest(VFSClassLoaderFactoryXMLUnitTestCase.suite());
+ suite.addTest(DomainUnitTestCase.suite());
+ suite.addTest(ImportAllUnitTestCase.suite());
+ suite.addTest(ModuleDependencyUnitTestCase.suite());
+ suite.addTest(PackageDependencyUnitTestCase.suite());
+ suite.addTest(VFSClassLoaderFactoryUnitTestCase.suite());
+ suite.addTest(ReExportModuleUnitTestCase.suite());
+ suite.addTest(ReExportPackageUnitTestCase.suite());
+ suite.addTest(UsesPackageUnitTestCase.suite());
+
+ return suite;
+ }
+}
Added: projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/VFSClassLoadingMicrocontainerTest.java
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/VFSClassLoadingMicrocontainerTest.java (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/VFSClassLoadingMicrocontainerTest.java 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,228 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2005, 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.classloading.vfs.metadata;
+
+import java.net.URL;
+import java.security.CodeSource;
+import java.security.ProtectionDomain;
+import java.util.Collections;
+
+import org.jboss.beans.metadata.spi.BeanMetaDataFactory;
+import org.jboss.classloader.plugins.ClassLoaderUtils;
+import org.jboss.classloader.plugins.jdk.AbstractJDKChecker;
+import org.jboss.classloader.plugins.system.DefaultClassLoaderSystem;
+import org.jboss.classloader.spi.ClassLoaderDomain;
+import org.jboss.classloader.spi.ClassLoaderSystem;
+import org.jboss.classloader.spi.ParentPolicy;
+import org.jboss.classloading.spi.vfs.metadata.VFSClassLoaderFactory;
+import org.jboss.kernel.plugins.deployment.AbstractKernelDeployment;
+import org.jboss.kernel.spi.deployment.KernelDeployment;
+import org.jboss.test.AbstractTestDelegate;
+import org.jboss.test.kernel.junit.MicrocontainerTest;
+
+/**
+ * VFSClassLoadingMicrocontainerTest.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class VFSClassLoadingMicrocontainerTest extends MicrocontainerTest
+{
+ protected ClassLoaderSystem system;
+
+ public static AbstractTestDelegate getDelegate(Class<?> clazz) throws Exception
+ {
+ return new VFSClassLoadingMicrocontainerTestDelegate(clazz);
+ }
+
+ public static ClassLoaderSystem getClassLoaderSystem()
+ {
+ DefaultClassLoaderSystem system = new DefaultClassLoaderSystem();
+ ClassLoaderDomain defaultDomain = system.getDefaultDomain();
+ defaultDomain.setParentPolicy(ParentPolicy.BEFORE_BUT_JAVA_ONLY);
+ return system;
+ }
+
+ public VFSClassLoadingMicrocontainerTest(String name)
+ {
+ super(name);
+ }
+
+ protected String getRoot(Class<?> clazz)
+ {
+ ProtectionDomain pd = clazz.getProtectionDomain();
+ CodeSource cs = pd.getCodeSource();
+ URL location = cs.getLocation();
+ return location.toString();
+ }
+
+ protected String getContextName(VFSClassLoaderFactory factory)
+ {
+ String contextName = factory.getContextName();
+ if (contextName == null)
+ contextName = factory.getName() + ":" + factory.getVersion();
+ return contextName;
+ }
+
+ protected ClassLoader assertClassLoader(VFSClassLoaderFactory factory) throws Exception
+ {
+ return assertClassLoader(getContextName(factory));
+ }
+
+ protected ClassLoader assertClassLoader(String name, String version) throws Exception
+ {
+ String contextName = name + ":" + version.toString();
+ return assertClassLoader(contextName);
+ }
+
+ protected ClassLoader assertClassLoader(String name) throws Exception
+ {
+ Object obj = getBean(name);
+ return assertInstanceOf(obj, ClassLoader.class);
+ }
+
+ protected void assertNoClassLoader(VFSClassLoaderFactory factory) throws Exception
+ {
+ assertNoClassLoader(getContextName(factory));
+ }
+
+ protected void assertNoClassLoader(String name, String version) throws Exception
+ {
+ String contextName = name + ":" + version.toString();
+ assertNoClassLoader(contextName);
+ }
+
+ protected void assertClassLoader(Class<?> clazz, ClassLoader expected)
+ {
+ if (expected == null)
+ return;
+ ClassLoader cl = clazz.getClassLoader();
+ boolean result = expected.equals(cl);
+ assertTrue(ClassLoaderUtils.classToString(clazz) + " should have expected classloader=" + expected, result);
+ }
+
+ protected void assertClassEquality(Class<?> expected, Class<?> actual)
+ {
+ assertTrue("Should be the same " + ClassLoaderUtils.classToString(expected) +" and " + ClassLoaderUtils.classToString(actual), expected == actual);
+ }
+
+ protected void assertNoClassEquality(Class<?> expected, Class<?> actual)
+ {
+ assertTrue("Should NOT be the same " + ClassLoaderUtils.classToString(expected) +" and " + ClassLoaderUtils.classToString(actual), expected != actual);
+ }
+
+ protected Class<?> assertLoadClass(Class<?> reference, ClassLoader start)
+ {
+ return assertLoadClass(reference, start, start, false);
+ }
+
+ protected Class<?> assertLoadClass(Class<?> reference, ClassLoader start, boolean isReference)
+ {
+ return assertLoadClass(reference, start, start, isReference);
+ }
+
+ protected Class<?> assertLoadClass(Class<?> reference, ClassLoader start, ClassLoader expected)
+ {
+ return assertLoadClass(reference, start, expected, false);
+ }
+
+ protected Class<?> assertLoadClass(Class<?> reference, ClassLoader start, ClassLoader expected, boolean isReference)
+ {
+ Class<?> result = assertLoadClass(reference.getName(), start, expected);
+ if (isReference)
+ assertClassEquality(reference, result);
+ else
+ assertNoClassEquality(reference, result);
+ return result;
+ }
+
+ protected Class<?> assertLoadClass(String name, ClassLoader start)
+ {
+ return assertLoadClass(name, start, start);
+ }
+
+ protected Class<?> assertLoadClass(String name, ClassLoader start, ClassLoader expected)
+ {
+ Class<?> result = null;
+ try
+ {
+ result = start.loadClass(name);
+ getLog().debug("Got class: " + ClassLoaderUtils.classToString(result) + " for " + name + " from " + start);
+ }
+ catch (ClassNotFoundException e)
+ {
+ failure("Did not expect CNFE for " + name + " from " + start, e);
+ }
+ assertClassLoader(result, expected);
+ return result;
+ }
+
+ protected void assertLoadClassFail(Class<?> reference, ClassLoader start)
+ {
+ assertLoadClassFail(reference.getName(), start);
+ }
+
+ protected void assertLoadClassFail(String name, ClassLoader start)
+ {
+ try
+ {
+ start.loadClass(name);
+ fail("Should not be here!");
+ }
+ catch (Exception expected)
+ {
+ checkThrowable(ClassNotFoundException.class, expected);
+ }
+ }
+
+ protected KernelDeployment install(VFSClassLoaderFactory metaData) throws Exception
+ {
+ AbstractKernelDeployment deployment = new AbstractKernelDeployment();
+ deployment.setName(metaData.getName() + ":" + metaData.getVersion());
+ deployment.setBeanFactories(Collections.singletonList((BeanMetaDataFactory) metaData));
+ deploy(deployment);
+ return deployment;
+ }
+
+ protected void assertNoClassLoader(String name) throws Exception
+ {
+ try
+ {
+ Object bean = getBean(name, null);
+ if (bean != null)
+ fail("Should not be here: " + bean);
+ }
+ catch (Throwable t)
+ {
+ checkThrowable(IllegalStateException.class, t);
+ }
+ }
+
+ protected void setUp() throws Exception
+ {
+ super.setUp();
+ // This is a hack for a hack. ;-)
+ AbstractJDKChecker.getExcluded().add(VFSClassLoadingMicrocontainerTest.class);
+
+ system = (ClassLoaderSystem) getBean("ClassLoaderSystem");
+ }
+}
Added: projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/VFSClassLoadingMicrocontainerTestDelegate.java
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/VFSClassLoadingMicrocontainerTestDelegate.java (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/VFSClassLoadingMicrocontainerTestDelegate.java 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,52 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2008, 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.classloading.vfs.metadata;
+
+import java.net.URL;
+
+import org.jboss.test.kernel.junit.MicrocontainerTestDelegate;
+
+/**
+ *
+ * An AOPMicrocontainerTestDelegate.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 63094 $
+ */
+public class VFSClassLoadingMicrocontainerTestDelegate extends MicrocontainerTestDelegate
+{
+ public VFSClassLoadingMicrocontainerTestDelegate(Class<?> clazz) throws Exception
+ {
+ super(clazz);
+ }
+
+ protected void deploy() throws Exception
+ {
+ String common = "/org/jboss/test/classloading/vfs/metadata/Common.xml";
+ URL url = getClass().getResource(common);
+ if (url == null)
+ throw new IllegalStateException(common + " not found");
+ deploy(url);
+
+ super.deploy();
+ }
+}
Added: projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/support/a/A.java
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/support/a/A.java (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/support/a/A.java 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,32 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2008, 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.classloading.vfs.metadata.support.a;
+
+/**
+ * A.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class A
+{
+}
Added: projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/support/b/B.java
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/support/b/B.java (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/support/b/B.java 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,32 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2008, 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.classloading.vfs.metadata.support.b;
+
+/**
+ * B.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class B
+{
+}
Added: projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/support/c/C.java
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/support/c/C.java (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/support/c/C.java 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,32 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2008, 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.classloading.vfs.metadata.support.c;
+
+/**
+ * C.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class C
+{
+}
Added: projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/test/DomainUnitTestCase.java
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/test/DomainUnitTestCase.java (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/test/DomainUnitTestCase.java 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,213 @@
+/*
+ * 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.classloading.vfs.metadata.test;
+
+import junit.framework.Test;
+
+import org.jboss.classloader.spi.ClassLoaderDomain;
+import org.jboss.classloader.spi.ParentPolicy;
+import org.jboss.classloading.spi.metadata.ExportAll;
+import org.jboss.classloading.spi.vfs.metadata.VFSClassLoaderFactory;
+import org.jboss.kernel.spi.deployment.KernelDeployment;
+import org.jboss.test.classloading.vfs.metadata.VFSClassLoadingMicrocontainerTest;
+import org.jboss.test.classloading.vfs.metadata.support.a.A;
+import org.jboss.test.classloading.vfs.metadata.support.b.B;
+
+/**
+ * DomainUnitTestCase.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class DomainUnitTestCase extends VFSClassLoadingMicrocontainerTest
+{
+ public static Test suite()
+ {
+ return suite(DomainUnitTestCase.class);
+ }
+
+ public DomainUnitTestCase(String name)
+ {
+ super(name);
+ }
+
+ public void testDefaultDomain() throws Exception
+ {
+ VFSClassLoaderFactory a = new VFSClassLoaderFactory("a");
+ a.getRoots().add(getRoot(A.class));
+ a.setIncludedPackages(A.class.getPackage().getName());
+ KernelDeployment depA = install(a);
+ try
+ {
+ validate();
+ ClassLoader clA = assertClassLoader(a);
+ assertLoadClass(A.class, clA);
+ assertLoadClassFail(B.class, clA);
+ }
+ finally
+ {
+ undeploy(depA);
+ }
+ validate();
+ assertNoClassLoader(a);
+ }
+
+ public void testSubDomainParentBefore() throws Exception
+ {
+ VFSClassLoaderFactory a = new VFSClassLoaderFactory("a");
+ a.setExportAll(ExportAll.NON_EMPTY);
+ a.getRoots().add(getRoot(A.class));
+ a.setIncludedPackages(A.class.getPackage().getName());
+ KernelDeployment depA = install(a);
+ try
+ {
+ validate();
+ ClassLoader clA = assertClassLoader(a);
+ assertLoadClass(A.class, clA);
+ assertLoadClassFail(B.class, clA);
+
+ VFSClassLoaderFactory b = new VFSClassLoaderFactory("b");
+ b.setDomain("SubDomainBefore");
+ b.getRoots().add(getRoot(B.class));
+ b.setIncludedPackages(A.class.getPackage().getName() + "," + B.class.getPackage().getName());
+ KernelDeployment depB = install(b);
+ try
+ {
+ assertLoadClass(A.class, clA);
+ assertLoadClassFail(B.class, clA);
+ ClassLoader clB = assertClassLoader(b);
+ assertLoadClass(B.class, clB);
+ assertLoadClass(A.class, clB, clA);
+ }
+ finally
+ {
+ undeploy(depB);
+ }
+ assertLoadClass(A.class, clA);
+ assertLoadClassFail(B.class, clA);
+ assertNoClassLoader(b);
+ }
+ finally
+ {
+ undeploy(depA);
+ }
+ assertNoClassLoader(a);
+ }
+
+ public void testSubDomainParentAfter() throws Exception
+ {
+ VFSClassLoaderFactory a = new VFSClassLoaderFactory("a");
+ a.setExportAll(ExportAll.NON_EMPTY);
+ a.getRoots().add(getRoot(A.class));
+ a.setIncludedPackages(A.class.getPackage().getName());
+ KernelDeployment depA = install(a);
+ try
+ {
+ ClassLoader clA = assertClassLoader(a);
+ assertLoadClass(A.class, clA);
+ assertLoadClassFail(B.class, clA);
+
+ VFSClassLoaderFactory b = new VFSClassLoaderFactory("b");
+ b.setDomain("SubDomainAfter");
+ b.setJ2seClassLoadingCompliance(false);
+ b.getRoots().add(getRoot(B.class));
+ b.setIncludedPackages(A.class.getPackage().getName() + "," + B.class.getPackage().getName());
+ KernelDeployment depB = install(b);
+ try
+ {
+ assertLoadClass(A.class, clA);
+ assertLoadClassFail(B.class, clA);
+ ClassLoader clB = assertClassLoader(b);
+ assertLoadClass(B.class, clB);
+ assertLoadClass(A.class, clB);
+ }
+ finally
+ {
+ undeploy(depB);
+ }
+ assertLoadClass(A.class, clA);
+ assertLoadClassFail(B.class, clA);
+ assertNoClassLoader(b);
+ }
+ finally
+ {
+ undeploy(depA);
+ }
+ assertNoClassLoader(a);
+ }
+
+ public void testParentDoesNotExist() throws Exception
+ {
+ VFSClassLoaderFactory a = new VFSClassLoaderFactory("a");
+ a.setDomain("SubDomain");
+ a.setParentDomain("DOESNOTEXIST");
+ a.getRoots().add(getRoot(A.class));
+ a.setIncludedPackages(A.class.getPackage().getName());
+ KernelDeployment depA = install(a);
+ try
+ {
+ assertNoClassLoader(a);
+ }
+ catch (Throwable t)
+ {
+ checkThrowable(IllegalStateException.class, t);
+ }
+ finally
+ {
+ undeploy(depA);
+ }
+ assertNoClassLoader(a);
+ }
+
+ public void testParentDoesExists() throws Exception
+ {
+ ClassLoaderDomain domain = system.createAndRegisterDomain("TestDomain", ParentPolicy.BEFORE_BUT_JAVA_ONLY);
+ try
+ {
+ VFSClassLoaderFactory a = new VFSClassLoaderFactory("a");
+ a.setDomain("SubDomain");
+ a.setParentDomain("TestDomain");
+ a.getRoots().add(getRoot(A.class));
+ a.setIncludedPackages(A.class.getPackage().getName());
+ KernelDeployment depA = install(a);
+ try
+ {
+ ClassLoader clA = assertClassLoader(a);
+ assertLoadClass(A.class, clA);
+ assertLoadClassFail(B.class, clA);
+ }
+ catch (Throwable t)
+ {
+ checkThrowable(IllegalStateException.class, t);
+ }
+ finally
+ {
+ undeploy(depA);
+ }
+ assertNoClassLoader(a);
+ }
+ finally
+ {
+ system.unregisterDomain(domain);
+ }
+ }
+}
Added: projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/test/ImportAllUnitTestCase.java
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/test/ImportAllUnitTestCase.java (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/test/ImportAllUnitTestCase.java 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,91 @@
+/*
+ * 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.classloading.vfs.metadata.test;
+
+import junit.framework.Test;
+
+import org.jboss.classloading.spi.metadata.ExportAll;
+import org.jboss.classloading.spi.vfs.metadata.VFSClassLoaderFactory;
+import org.jboss.kernel.spi.deployment.KernelDeployment;
+import org.jboss.test.classloading.vfs.metadata.VFSClassLoadingMicrocontainerTest;
+import org.jboss.test.classloading.vfs.metadata.support.a.A;
+import org.jboss.test.classloading.vfs.metadata.support.b.B;
+
+/**
+ * ImportAllUnitTestCase.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class ImportAllUnitTestCase extends VFSClassLoadingMicrocontainerTest
+{
+ public static Test suite()
+ {
+ return suite(ImportAllUnitTestCase.class);
+ }
+
+ public ImportAllUnitTestCase(String name)
+ {
+ super(name);
+ }
+
+ public void testImportAll() throws Exception
+ {
+ VFSClassLoaderFactory a = new VFSClassLoaderFactory("a");
+ a.setExportAll(ExportAll.NON_EMPTY);
+ a.getRoots().add(getRoot(A.class));
+ a.setIncludedPackages(A.class.getPackage().getName());
+ KernelDeployment depA = install(a);
+ try
+ {
+ ClassLoader clA = assertClassLoader(a);
+ assertLoadClass(A.class, clA);
+ assertLoadClassFail(B.class, clA);
+
+ VFSClassLoaderFactory b = new VFSClassLoaderFactory("b");
+ b.setImportAll(true);
+ b.getRoots().add(getRoot(B.class));
+ b.setIncludedPackages(B.class.getPackage().getName());
+ KernelDeployment depB = install(b);
+ try
+ {
+ assertLoadClass(A.class, clA);
+ assertLoadClassFail(B.class, clA);
+ ClassLoader clB = assertClassLoader(b);
+ assertLoadClass(B.class, clB);
+ assertLoadClass(A.class, clB, clA);
+ }
+ finally
+ {
+ undeploy(depB);
+ }
+ assertLoadClass(A.class, clA);
+ assertLoadClassFail(B.class, clA);
+ assertNoClassLoader(b);
+ }
+ finally
+ {
+ undeploy(depA);
+ }
+ assertNoClassLoader(a);
+ }
+}
Added: projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/test/ModuleDependencyUnitTestCase.java
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/test/ModuleDependencyUnitTestCase.java (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/test/ModuleDependencyUnitTestCase.java 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,179 @@
+/*
+ * 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.classloading.vfs.metadata.test;
+
+import junit.framework.Test;
+
+import org.jboss.classloading.spi.metadata.ClassLoadingMetaDataFactory;
+import org.jboss.classloading.spi.version.VersionRange;
+import org.jboss.classloading.spi.vfs.metadata.VFSClassLoaderFactory;
+import org.jboss.kernel.spi.deployment.KernelDeployment;
+import org.jboss.test.classloading.vfs.metadata.VFSClassLoadingMicrocontainerTest;
+import org.jboss.test.classloading.vfs.metadata.support.a.A;
+import org.jboss.test.classloading.vfs.metadata.support.b.B;
+
+/**
+ * ModuleDependencyUnitTestCase.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class ModuleDependencyUnitTestCase extends VFSClassLoadingMicrocontainerTest
+{
+ public static Test suite()
+ {
+ return suite(ModuleDependencyUnitTestCase.class);
+ }
+
+ public ModuleDependencyUnitTestCase(String name)
+ {
+ super(name);
+ }
+
+ public void testImportNoVersionCheck() throws Exception
+ {
+ VFSClassLoaderFactory a = new VFSClassLoaderFactory("a");
+ ClassLoadingMetaDataFactory factory = ClassLoadingMetaDataFactory.getInstance();
+ a.getCapabilities().addCapability(factory.createModule("ModuleA"));
+ a.getCapabilities().addCapability(factory.createPackage(A.class.getPackage().getName()));
+ a.getRoots().add(getRoot(A.class));
+ a.setIncludedPackages(A.class.getPackage().getName());
+ KernelDeployment depA = install(a);
+ try
+ {
+ validate();
+ ClassLoader clA = assertClassLoader(a);
+ assertLoadClass(A.class, clA);
+ assertLoadClassFail(B.class, clA);
+
+ VFSClassLoaderFactory b = new VFSClassLoaderFactory("b");
+ b.getRequirements().addRequirement(factory.createRequireModule("ModuleA"));
+ b.getRoots().add(getRoot(B.class));
+ b.setIncludedPackages(B.class.getPackage().getName());
+ KernelDeployment depB = install(b);
+ try
+ {
+ assertLoadClass(A.class, clA);
+ assertLoadClassFail(B.class, clA);
+ ClassLoader clB = assertClassLoader(b);
+ assertLoadClass(B.class, clB);
+ assertLoadClass(A.class, clB, clA);
+ }
+ finally
+ {
+ undeploy(depB);
+ }
+ assertLoadClass(A.class, clA);
+ assertLoadClassFail(B.class, clA);
+ assertNoClassLoader(b);
+ }
+ finally
+ {
+ undeploy(depA);
+ }
+ assertNoClassLoader(a);
+ }
+
+ public void testImportVersionCheck() throws Exception
+ {
+ VFSClassLoaderFactory a = new VFSClassLoaderFactory("a");
+ ClassLoadingMetaDataFactory factory = ClassLoadingMetaDataFactory.getInstance();
+ a.getCapabilities().addCapability(factory.createModule("ModuleA", "1.0.0"));
+ a.getCapabilities().addCapability(factory.createPackage(A.class.getPackage().getName()));
+ a.getRoots().add(getRoot(A.class));
+ a.setIncludedPackages(A.class.getPackage().getName());
+ KernelDeployment depA = install(a);
+ try
+ {
+ ClassLoader clA = assertClassLoader(a);
+ assertLoadClass(A.class, clA);
+ assertLoadClassFail(B.class, clA);
+
+ VFSClassLoaderFactory b = new VFSClassLoaderFactory("b");
+ b.getRequirements().addRequirement(factory.createRequireModule("ModuleA", new VersionRange("1.0.0", "2.0.0")));
+ b.getRoots().add(getRoot(B.class));
+ b.setIncludedPackages(B.class.getPackage().getName());
+ KernelDeployment depB = install(b);
+ try
+ {
+ assertLoadClass(A.class, clA);
+ assertLoadClassFail(B.class, clA);
+ ClassLoader clB = assertClassLoader(b);
+ assertLoadClass(B.class, clB);
+ assertLoadClass(A.class, clB, clA);
+ }
+ finally
+ {
+ undeploy(depB);
+ }
+ assertLoadClass(A.class, clA);
+ assertLoadClassFail(B.class, clA);
+ assertNoClassLoader(b);
+ }
+ finally
+ {
+ undeploy(depA);
+ }
+ assertNoClassLoader(a);
+ }
+
+ public void testImportVersionCheckFailed() throws Exception
+ {
+ VFSClassLoaderFactory a = new VFSClassLoaderFactory("a");
+ ClassLoadingMetaDataFactory factory = ClassLoadingMetaDataFactory.getInstance();
+ a.getCapabilities().addCapability(factory.createModule("ModuleA", "3.0.0"));
+ a.getCapabilities().addCapability(factory.createPackage(A.class.getPackage().getName()));
+ a.getRoots().add(getRoot(A.class));
+ a.setIncludedPackages(A.class.getPackage().getName());
+ KernelDeployment depA = install(a);
+ try
+ {
+ ClassLoader clA = assertClassLoader(a);
+ assertLoadClass(A.class, clA);
+ assertLoadClassFail(B.class, clA);
+
+ VFSClassLoaderFactory b = new VFSClassLoaderFactory("b");
+ b.getRequirements().addRequirement(factory.createRequireModule("ModuleA", new VersionRange("1.0.0", "2.0.0")));
+ b.getRoots().add(getRoot(B.class));
+ b.setIncludedPackages(B.class.getPackage().getName());
+ KernelDeployment depB = install(b);
+ try
+ {
+ assertLoadClass(A.class, clA);
+ assertLoadClassFail(B.class, clA);
+ assertNoClassLoader(b);
+ }
+ finally
+ {
+ undeploy(depB);
+ }
+ assertLoadClass(A.class, clA);
+ assertLoadClassFail(B.class, clA);
+ assertNoClassLoader(b);
+ }
+ finally
+ {
+ undeploy(depA);
+ }
+ assertNoClassLoader(a);
+ }
+}
Added: projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/test/PackageDependencyUnitTestCase.java
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/test/PackageDependencyUnitTestCase.java (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/test/PackageDependencyUnitTestCase.java 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,178 @@
+/*
+ * 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.classloading.vfs.metadata.test;
+
+import junit.framework.Test;
+
+import org.jboss.classloading.spi.metadata.ClassLoadingMetaDataFactory;
+import org.jboss.classloading.spi.version.VersionRange;
+import org.jboss.classloading.spi.vfs.metadata.VFSClassLoaderFactory;
+import org.jboss.kernel.spi.deployment.KernelDeployment;
+import org.jboss.test.classloading.vfs.metadata.VFSClassLoadingMicrocontainerTest;
+import org.jboss.test.classloading.vfs.metadata.support.a.A;
+import org.jboss.test.classloading.vfs.metadata.support.b.B;
+
+/**
+ * PackageDependencyUnitTestCase.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class PackageDependencyUnitTestCase extends VFSClassLoadingMicrocontainerTest
+{
+ public static Test suite()
+ {
+ return suite(PackageDependencyUnitTestCase.class);
+ }
+
+ public PackageDependencyUnitTestCase(String name)
+ {
+ super(name);
+ }
+
+ public void testImportNoVersionCheck() throws Exception
+ {
+ VFSClassLoaderFactory a = new VFSClassLoaderFactory("a");
+ ClassLoadingMetaDataFactory factory = ClassLoadingMetaDataFactory.getInstance();
+ a.getCapabilities().addCapability(factory.createModule("ModuleA"));
+ a.getCapabilities().addCapability(factory.createPackage(A.class.getPackage().getName()));
+ a.getRoots().add(getRoot(A.class));
+ a.setIncludedPackages(A.class.getPackage().getName());
+ KernelDeployment depA = install(a);
+ try
+ {
+ ClassLoader clA = assertClassLoader(a);
+ assertLoadClass(A.class, clA);
+ assertLoadClassFail(B.class, clA);
+
+ VFSClassLoaderFactory b = new VFSClassLoaderFactory("b");
+ b.getRequirements().addRequirement(factory.createRequirePackage(A.class.getPackage().getName()));
+ b.getRoots().add(getRoot(B.class));
+ b.setIncludedPackages(B.class.getPackage().getName());
+ KernelDeployment depB = install(b);
+ try
+ {
+ assertLoadClass(A.class, clA);
+ assertLoadClassFail(B.class, clA);
+ ClassLoader clB = assertClassLoader(b);
+ assertLoadClass(B.class, clB);
+ assertLoadClass(A.class, clB, clA);
+ }
+ finally
+ {
+ undeploy(depB);
+ }
+ assertLoadClass(A.class, clA);
+ assertLoadClassFail(B.class, clA);
+ assertNoClassLoader(b);
+ }
+ finally
+ {
+ undeploy(depA);
+ }
+ assertNoClassLoader(a);
+ }
+
+ public void testImportVersionCheck() throws Exception
+ {
+ VFSClassLoaderFactory a = new VFSClassLoaderFactory("a");
+ ClassLoadingMetaDataFactory factory = ClassLoadingMetaDataFactory.getInstance();
+ a.getCapabilities().addCapability(factory.createModule("ModuleA"));
+ a.getCapabilities().addCapability(factory.createPackage(A.class.getPackage().getName(), "1.0.0"));
+ a.getRoots().add(getRoot(A.class));
+ a.setIncludedPackages(A.class.getPackage().getName());
+ KernelDeployment depA = install(a);
+ try
+ {
+ ClassLoader clA = assertClassLoader(a);
+ assertLoadClass(A.class, clA);
+ assertLoadClassFail(B.class, clA);
+
+ VFSClassLoaderFactory b = new VFSClassLoaderFactory("b");
+ b.getRequirements().addRequirement(factory.createRequirePackage(A.class.getPackage().getName(), new VersionRange("1.0.0", "2.0.0")));
+ b.getRoots().add(getRoot(B.class));
+ b.setIncludedPackages(B.class.getPackage().getName());
+ KernelDeployment depB = install(b);
+ try
+ {
+ assertLoadClass(A.class, clA);
+ assertLoadClassFail(B.class, clA);
+ ClassLoader clB = assertClassLoader(b);
+ assertLoadClass(B.class, clB);
+ assertLoadClass(A.class, clB, clA);
+ }
+ finally
+ {
+ undeploy(depB);
+ }
+ assertLoadClass(A.class, clA);
+ assertLoadClassFail(B.class, clA);
+ assertNoClassLoader(b);
+ }
+ finally
+ {
+ undeploy(depA);
+ }
+ assertNoClassLoader(a);
+ }
+
+ public void testImportVersionCheckFailed() throws Exception
+ {
+ VFSClassLoaderFactory a = new VFSClassLoaderFactory("a");
+ ClassLoadingMetaDataFactory factory = ClassLoadingMetaDataFactory.getInstance();
+ a.getCapabilities().addCapability(factory.createModule("ModuleA"));
+ a.getCapabilities().addCapability(factory.createPackage(A.class.getPackage().getName(), "3.0.0"));
+ a.getRoots().add(getRoot(A.class));
+ a.setIncludedPackages(A.class.getPackage().getName());
+ KernelDeployment depA = install(a);
+ try
+ {
+ ClassLoader clA = assertClassLoader(a);
+ assertLoadClass(A.class, clA);
+ assertLoadClassFail(B.class, clA);
+
+ VFSClassLoaderFactory b = new VFSClassLoaderFactory("b");
+ b.getRequirements().addRequirement(factory.createRequirePackage(A.class.getPackage().getName(), new VersionRange("1.0.0", "2.0.0")));
+ b.getRoots().add(getRoot(B.class));
+ b.setIncludedPackages(B.class.getPackage().getName());
+ KernelDeployment depB = install(b);
+ try
+ {
+ assertLoadClass(A.class, clA);
+ assertLoadClassFail(B.class, clA);
+ assertNoClassLoader(b);
+ }
+ finally
+ {
+ undeploy(depB);
+ }
+ assertLoadClass(A.class, clA);
+ assertLoadClassFail(B.class, clA);
+ assertNoClassLoader(b);
+ }
+ finally
+ {
+ undeploy(depA);
+ }
+ assertNoClassLoader(a);
+ }
+}
Added: projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/test/ReExportModuleUnitTestCase.java
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/test/ReExportModuleUnitTestCase.java (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/test/ReExportModuleUnitTestCase.java 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,211 @@
+/*
+ * 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.classloading.vfs.metadata.test;
+
+import junit.framework.Test;
+
+import org.jboss.classloading.spi.metadata.ClassLoadingMetaDataFactory;
+import org.jboss.classloading.spi.vfs.metadata.VFSClassLoaderFactory;
+import org.jboss.kernel.spi.deployment.KernelDeployment;
+import org.jboss.test.classloading.vfs.metadata.VFSClassLoadingMicrocontainerTest;
+import org.jboss.test.classloading.vfs.metadata.support.a.A;
+import org.jboss.test.classloading.vfs.metadata.support.b.B;
+import org.jboss.test.classloading.vfs.metadata.support.c.C;
+
+/**
+ * ReExportModuleUnitTestCase.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class ReExportModuleUnitTestCase extends VFSClassLoadingMicrocontainerTest
+{
+ public static Test suite()
+ {
+ return suite(ReExportModuleUnitTestCase.class);
+ }
+
+ public ReExportModuleUnitTestCase(String name)
+ {
+ super(name);
+ }
+
+ public void testReExport() throws Exception
+ {
+ ClassLoadingMetaDataFactory factory = ClassLoadingMetaDataFactory.getInstance();
+
+ VFSClassLoaderFactory a = new VFSClassLoaderFactory("a");
+ a.getRoots().add(getRoot(A.class));
+ a.setIncludedPackages(A.class.getPackage().getName());
+ a.getCapabilities().addCapability(factory.createModule("a"));
+ a.getCapabilities().addCapability(factory.createPackage(A.class.getPackage().getName()));
+ KernelDeployment depA = install(a);
+ try
+ {
+ ClassLoader clA = assertClassLoader(a);
+ assertLoadClass(A.class, clA);
+ assertLoadClassFail(B.class, clA);
+ assertLoadClassFail(C.class, clA);
+
+ VFSClassLoaderFactory b = new VFSClassLoaderFactory("b");
+ b.getRoots().add(getRoot(B.class));
+ b.setIncludedPackages(B.class.getPackage().getName());
+ b.getCapabilities().addCapability(factory.createModule("b"));
+ b.getCapabilities().addCapability(factory.createPackage(B.class.getPackage().getName()));
+ b.getRequirements().addRequirement(factory.createReExportModule("a"));
+ KernelDeployment depB = install(b);
+ try
+ {
+ assertLoadClass(A.class, clA);
+ assertLoadClassFail(B.class, clA);
+ assertLoadClassFail(C.class, clA);
+ ClassLoader clB = assertClassLoader(b);
+ assertLoadClass(A.class, clB, clA);
+ assertLoadClass(B.class, clB);
+ assertLoadClassFail(C.class, clB);
+
+ VFSClassLoaderFactory c = new VFSClassLoaderFactory("c");
+ c.getRoots().add(getRoot(C.class));
+ c.setIncludedPackages(C.class.getPackage().getName());
+ c.getRequirements().addRequirement(factory.createRequireModule("b"));
+ KernelDeployment depC = install(c);
+ try
+ {
+ assertLoadClass(A.class, clA);
+ assertLoadClassFail(B.class, clA);
+ assertLoadClassFail(C.class, clA);
+ assertLoadClass(A.class, clB, clA);
+ assertLoadClass(B.class, clB);
+ assertLoadClassFail(C.class, clB);
+ ClassLoader clC = assertClassLoader(c);
+ assertLoadClass(A.class, clC, clA);
+ assertLoadClass(B.class, clC, clB);
+ assertLoadClass(C.class, clC);
+ }
+ finally
+ {
+ undeploy(depC);
+ }
+ assertNoClassLoader(c);
+ assertLoadClass(A.class, clA);
+ assertLoadClassFail(B.class, clA);
+ assertLoadClassFail(C.class, clA);
+ assertLoadClass(A.class, clB, clA);
+ assertLoadClass(B.class, clB);
+ assertLoadClassFail(C.class, clB);
+ }
+ finally
+ {
+ undeploy(depB);
+ }
+ assertNoClassLoader(b);
+ assertLoadClass(A.class, clA);
+ assertLoadClassFail(B.class, clA);
+ assertLoadClassFail(C.class, clA);
+ }
+ finally
+ {
+ undeploy(depA);
+ }
+ assertNoClassLoader(a);
+ }
+
+ public void testNoReExport() throws Exception
+ {
+ ClassLoadingMetaDataFactory factory = ClassLoadingMetaDataFactory.getInstance();
+
+ VFSClassLoaderFactory a = new VFSClassLoaderFactory("a");
+ a.getRoots().add(getRoot(A.class));
+ a.setIncludedPackages(A.class.getPackage().getName());
+ a.getCapabilities().addCapability(factory.createModule("a"));
+ a.getCapabilities().addCapability(factory.createPackage(A.class.getPackage().getName()));
+ KernelDeployment depA = install(a);
+ try
+ {
+ ClassLoader clA = assertClassLoader(a);
+ assertLoadClass(A.class, clA);
+ assertLoadClassFail(B.class, clA);
+ assertLoadClassFail(C.class, clA);
+
+ VFSClassLoaderFactory b = new VFSClassLoaderFactory("b");
+ b.getRoots().add(getRoot(B.class));
+ b.setIncludedPackages(B.class.getPackage().getName());
+ b.getCapabilities().addCapability(factory.createModule("b"));
+ b.getCapabilities().addCapability(factory.createPackage(B.class.getPackage().getName()));
+ b.getRequirements().addRequirement(factory.createReExportModule("a"));
+ KernelDeployment depB = install(b);
+ try
+ {
+ assertLoadClass(A.class, clA);
+ assertLoadClassFail(B.class, clA);
+ assertLoadClassFail(C.class, clA);
+ ClassLoader clB = assertClassLoader(b);
+ assertLoadClass(A.class, clB, clA);
+ assertLoadClass(B.class, clB);
+ assertLoadClassFail(C.class, clB);
+
+ VFSClassLoaderFactory c = new VFSClassLoaderFactory("c");
+ c.getRoots().add(getRoot(C.class));
+ c.setIncludedPackages(C.class.getPackage().getName());
+ c.getRequirements().addRequirement(factory.createRequirePackage(B.class.getPackage().getName()));
+ KernelDeployment depC = install(c);
+ try
+ {
+ assertLoadClass(A.class, clA);
+ assertLoadClassFail(B.class, clA);
+ assertLoadClassFail(C.class, clA);
+ assertLoadClass(A.class, clB, clA);
+ assertLoadClass(B.class, clB);
+ assertLoadClassFail(C.class, clB);
+ ClassLoader clC = assertClassLoader(c);
+ assertLoadClassFail(A.class, clC);
+ assertLoadClass(B.class, clC, clB);
+ assertLoadClass(C.class, clC);
+ }
+ finally
+ {
+ undeploy(depC);
+ }
+ assertNoClassLoader(c);
+ assertLoadClass(A.class, clA);
+ assertLoadClassFail(B.class, clA);
+ assertLoadClassFail(C.class, clA);
+ assertLoadClass(A.class, clB, clA);
+ assertLoadClass(B.class, clB);
+ assertLoadClassFail(C.class, clB);
+ }
+ finally
+ {
+ undeploy(depB);
+ }
+ assertNoClassLoader(b);
+ assertLoadClass(A.class, clA);
+ assertLoadClassFail(B.class, clA);
+ assertLoadClassFail(C.class, clA);
+ }
+ finally
+ {
+ undeploy(depA);
+ }
+ assertNoClassLoader(a);
+ }
+}
Added: projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/test/ReExportPackageUnitTestCase.java
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/test/ReExportPackageUnitTestCase.java (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/test/ReExportPackageUnitTestCase.java 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,211 @@
+/*
+ * 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.classloading.vfs.metadata.test;
+
+import junit.framework.Test;
+
+import org.jboss.classloading.spi.metadata.ClassLoadingMetaDataFactory;
+import org.jboss.classloading.spi.vfs.metadata.VFSClassLoaderFactory;
+import org.jboss.kernel.spi.deployment.KernelDeployment;
+import org.jboss.test.classloading.vfs.metadata.VFSClassLoadingMicrocontainerTest;
+import org.jboss.test.classloading.vfs.metadata.support.a.A;
+import org.jboss.test.classloading.vfs.metadata.support.b.B;
+import org.jboss.test.classloading.vfs.metadata.support.c.C;
+
+/**
+ * ReExportPackageUnitTestCase.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class ReExportPackageUnitTestCase extends VFSClassLoadingMicrocontainerTest
+{
+ public static Test suite()
+ {
+ return suite(ReExportPackageUnitTestCase.class);
+ }
+
+ public ReExportPackageUnitTestCase(String name)
+ {
+ super(name);
+ }
+
+ public void testReExport() throws Exception
+ {
+ ClassLoadingMetaDataFactory factory = ClassLoadingMetaDataFactory.getInstance();
+
+ VFSClassLoaderFactory a = new VFSClassLoaderFactory("a");
+ a.getRoots().add(getRoot(A.class));
+ a.setIncludedPackages(A.class.getPackage().getName());
+ a.getCapabilities().addCapability(factory.createModule("a"));
+ a.getCapabilities().addCapability(factory.createPackage(A.class.getPackage().getName()));
+ KernelDeployment depA = install(a);
+ try
+ {
+ ClassLoader clA = assertClassLoader(a);
+ assertLoadClass(A.class, clA);
+ assertLoadClassFail(B.class, clA);
+ assertLoadClassFail(C.class, clA);
+
+ VFSClassLoaderFactory b = new VFSClassLoaderFactory("b");
+ b.getRoots().add(getRoot(B.class));
+ b.setIncludedPackages(B.class.getPackage().getName());
+ b.getCapabilities().addCapability(factory.createModule("b"));
+ b.getCapabilities().addCapability(factory.createPackage(B.class.getPackage().getName()));
+ b.getRequirements().addRequirement(factory.createReExportPackage(A.class.getPackage().getName()));
+ KernelDeployment depB = install(b);
+ try
+ {
+ assertLoadClass(A.class, clA);
+ assertLoadClassFail(B.class, clA);
+ assertLoadClassFail(C.class, clA);
+ ClassLoader clB = assertClassLoader(b);
+ assertLoadClass(A.class, clB, clA);
+ assertLoadClass(B.class, clB);
+ assertLoadClassFail(C.class, clB);
+
+ VFSClassLoaderFactory c = new VFSClassLoaderFactory("c");
+ c.getRoots().add(getRoot(C.class));
+ c.setIncludedPackages(C.class.getPackage().getName());
+ c.getRequirements().addRequirement(factory.createRequireModule("b"));
+ KernelDeployment depC = install(c);
+ try
+ {
+ assertLoadClass(A.class, clA);
+ assertLoadClassFail(B.class, clA);
+ assertLoadClassFail(C.class, clA);
+ assertLoadClass(A.class, clB, clA);
+ assertLoadClass(B.class, clB);
+ assertLoadClassFail(C.class, clB);
+ ClassLoader clC = assertClassLoader(c);
+ assertLoadClass(A.class, clC, clA);
+ assertLoadClass(B.class, clC, clB);
+ assertLoadClass(C.class, clC);
+ }
+ finally
+ {
+ undeploy(depC);
+ }
+ assertNoClassLoader(c);
+ assertLoadClass(A.class, clA);
+ assertLoadClassFail(B.class, clA);
+ assertLoadClassFail(C.class, clA);
+ assertLoadClass(A.class, clB, clA);
+ assertLoadClass(B.class, clB);
+ assertLoadClassFail(C.class, clB);
+ }
+ finally
+ {
+ undeploy(depB);
+ }
+ assertNoClassLoader(b);
+ assertLoadClass(A.class, clA);
+ assertLoadClassFail(B.class, clA);
+ assertLoadClassFail(C.class, clA);
+ }
+ finally
+ {
+ undeploy(depA);
+ }
+ assertNoClassLoader(a);
+ }
+
+ public void testNoReExport() throws Exception
+ {
+ ClassLoadingMetaDataFactory factory = ClassLoadingMetaDataFactory.getInstance();
+
+ VFSClassLoaderFactory a = new VFSClassLoaderFactory("a");
+ a.getRoots().add(getRoot(A.class));
+ a.setIncludedPackages(A.class.getPackage().getName());
+ a.getCapabilities().addCapability(factory.createModule("a"));
+ a.getCapabilities().addCapability(factory.createPackage(A.class.getPackage().getName()));
+ KernelDeployment depA = install(a);
+ try
+ {
+ ClassLoader clA = assertClassLoader(a);
+ assertLoadClass(A.class, clA);
+ assertLoadClassFail(B.class, clA);
+ assertLoadClassFail(C.class, clA);
+
+ VFSClassLoaderFactory b = new VFSClassLoaderFactory("b");
+ b.getRoots().add(getRoot(B.class));
+ b.setIncludedPackages(B.class.getPackage().getName());
+ b.getCapabilities().addCapability(factory.createModule("b"));
+ b.getCapabilities().addCapability(factory.createPackage(B.class.getPackage().getName()));
+ b.getRequirements().addRequirement(factory.createReExportModule("a"));
+ KernelDeployment depB = install(b);
+ try
+ {
+ assertLoadClass(A.class, clA);
+ assertLoadClassFail(B.class, clA);
+ assertLoadClassFail(C.class, clA);
+ ClassLoader clB = assertClassLoader(b);
+ assertLoadClass(A.class, clB, clA);
+ assertLoadClass(B.class, clB);
+ assertLoadClassFail(C.class, clB);
+
+ VFSClassLoaderFactory c = new VFSClassLoaderFactory("c");
+ c.getRoots().add(getRoot(C.class));
+ c.setIncludedPackages(C.class.getPackage().getName());
+ c.getRequirements().addRequirement(factory.createRequirePackage(B.class.getPackage().getName()));
+ KernelDeployment depC = install(c);
+ try
+ {
+ assertLoadClass(A.class, clA);
+ assertLoadClassFail(B.class, clA);
+ assertLoadClassFail(C.class, clA);
+ assertLoadClass(A.class, clB, clA);
+ assertLoadClass(B.class, clB);
+ assertLoadClassFail(C.class, clB);
+ ClassLoader clC = assertClassLoader(c);
+ assertLoadClassFail(A.class, clC);
+ assertLoadClass(B.class, clC, clB);
+ assertLoadClass(C.class, clC);
+ }
+ finally
+ {
+ undeploy(depC);
+ }
+ assertNoClassLoader(c);
+ assertLoadClass(A.class, clA);
+ assertLoadClassFail(B.class, clA);
+ assertLoadClassFail(C.class, clA);
+ assertLoadClass(A.class, clB, clA);
+ assertLoadClass(B.class, clB);
+ assertLoadClassFail(C.class, clB);
+ }
+ finally
+ {
+ undeploy(depB);
+ }
+ assertNoClassLoader(b);
+ assertLoadClass(A.class, clA);
+ assertLoadClassFail(B.class, clA);
+ assertLoadClassFail(C.class, clA);
+ }
+ finally
+ {
+ undeploy(depA);
+ }
+ assertNoClassLoader(a);
+ }
+}
Added: projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/test/UsesPackageUnitTestCase.java
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/test/UsesPackageUnitTestCase.java (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/test/UsesPackageUnitTestCase.java 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,113 @@
+/*
+ * 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.classloading.vfs.metadata.test;
+
+import junit.framework.Test;
+
+import org.jboss.classloading.spi.metadata.ClassLoadingMetaDataFactory;
+import org.jboss.classloading.spi.vfs.metadata.VFSClassLoaderFactory;
+import org.jboss.kernel.spi.deployment.KernelDeployment;
+import org.jboss.test.classloading.vfs.metadata.VFSClassLoadingMicrocontainerTest;
+import org.jboss.test.classloading.vfs.metadata.support.a.A;
+
+/**
+ * ReExportPackageUnitTestCase.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class UsesPackageUnitTestCase extends VFSClassLoadingMicrocontainerTest
+{
+ public static Test suite()
+ {
+ return suite(UsesPackageUnitTestCase.class);
+ }
+
+ public UsesPackageUnitTestCase(String name)
+ {
+ super(name);
+ }
+
+ public void testUsesImport() throws Exception
+ {
+ ClassLoadingMetaDataFactory factory = ClassLoadingMetaDataFactory.getInstance();
+
+ VFSClassLoaderFactory a1 = new VFSClassLoaderFactory("a1");
+ a1.getRoots().add(getRoot(A.class));
+ a1.setIncludedPackages(A.class.getPackage().getName());
+ a1.getCapabilities().addCapability(factory.createModule("a"));
+ a1.getCapabilities().addCapability(factory.createPackage(A.class.getPackage().getName()));
+ KernelDeployment depA1 = install(a1);
+ try
+ {
+ ClassLoader clA1 = assertClassLoader(a1);
+ assertLoadClass(A.class, clA1);
+
+ VFSClassLoaderFactory a2 = new VFSClassLoaderFactory("a2");
+ a2.getRoots().add(getRoot(A.class));
+ a2.setIncludedPackages(A.class.getPackage().getName());
+ a2.getCapabilities().addCapability(factory.createModule("a2"));
+ a2.getRequirements().addRequirement(factory.createUsesPackage(A.class.getPackage().getName()));
+ KernelDeployment depA2 = install(a2);
+ try
+ {
+ assertLoadClass(A.class, clA1);
+ ClassLoader clA2 = assertClassLoader(a2);
+ assertLoadClass(A.class, clA2, clA1);
+ }
+ finally
+ {
+ undeploy(depA2);
+ }
+ assertNoClassLoader(a2);
+ assertLoadClass(A.class, clA1);
+ }
+ finally
+ {
+ undeploy(depA1);
+ }
+ assertNoClassLoader(a1);
+ }
+
+ public void testUsesNoImport() throws Exception
+ {
+ ClassLoadingMetaDataFactory factory = ClassLoadingMetaDataFactory.getInstance();
+
+ VFSClassLoaderFactory a1 = new VFSClassLoaderFactory("a1");
+ a1.getRoots().add(getRoot(A.class));
+ a1.setIncludedPackages(A.class.getPackage().getName());
+ a1.getCapabilities().addCapability(factory.createModule("a"));
+ a1.getRequirements().addRequirement(factory.createUsesPackage(A.class.getPackage().getName()));
+ KernelDeployment depA1 = install(a1);
+ try
+ {
+ validate();
+ ClassLoader clA1 = assertClassLoader(a1);
+ assertLoadClass(A.class, clA1);
+ }
+ finally
+ {
+ undeploy(depA1);
+ }
+ assertNoClassLoader(a1);
+ }
+}
Added: projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/test/VFSClassLoaderFactoryUnitTestCase.java
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/test/VFSClassLoaderFactoryUnitTestCase.java (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/test/VFSClassLoaderFactoryUnitTestCase.java 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,211 @@
+/*
+ * 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.classloading.vfs.metadata.test;
+
+import junit.framework.Test;
+
+import org.jboss.kernel.spi.deployment.KernelDeployment;
+import org.jboss.test.classloading.vfs.metadata.VFSClassLoadingMicrocontainerTest;
+
+/**
+ * VFSClassLoaderFactoryUnitTestCase.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class VFSClassLoaderFactoryUnitTestCase extends VFSClassLoadingMicrocontainerTest
+{
+ public static Test suite()
+ {
+ return suite(VFSClassLoaderFactoryUnitTestCase.class);
+ }
+
+ public VFSClassLoaderFactoryUnitTestCase(String name)
+ {
+ super(name);
+ }
+
+ public void testSmoke() throws Exception
+ {
+ KernelDeployment deployment = deploy("SmokeTest.xml");
+ try
+ {
+ validate();
+ assertClassLoader("test", "0.0.0");
+ }
+ finally
+ {
+ undeploy(deployment);
+ }
+ validate();
+ assertNoClassLoader("test", "0.0.0");
+ }
+
+ public void testADependsUponBCorrectWay() throws Exception
+ {
+ KernelDeployment a = deploy("A1.0.0.xml");
+ try
+ {
+ validate();
+ assertClassLoader("a", "1.0.0");
+
+ KernelDeployment b = deploy("B1.0.0.xml");
+ try
+ {
+ validate();
+ assertClassLoader("a", "1.0.0");
+ assertClassLoader("b", "1.0.0");
+ }
+ finally
+ {
+ undeploy(b);
+ }
+ validate();
+ assertNoClassLoader("b", "1.0.0");
+ assertClassLoader("a", "1.0.0");
+ }
+ finally
+ {
+ undeploy(a);
+ }
+ validate();
+ assertNoClassLoader("a", "1.0.0");
+ }
+
+ public void testADependsUponBWrongWay() throws Exception
+ {
+ KernelDeployment b = deploy("B1.0.0.xml");
+ try
+ {
+ assertNoClassLoader("b", "1.0.0");
+
+ KernelDeployment a = deploy("A1.0.0.xml");
+ try
+ {
+ validate();
+ assertClassLoader("a", "1.0.0");
+ assertClassLoader("b", "1.0.0");
+ }
+ finally
+ {
+ undeploy(a);
+ }
+ assertNoClassLoader("a", "1.0.0");
+ assertNoClassLoader("b", "1.0.0");
+ }
+ finally
+ {
+ undeploy(b);
+ }
+ validate();
+ }
+
+ public void testADependsUponBRedeployA() throws Exception
+ {
+ KernelDeployment a = deploy("A1.0.0.xml");
+ try
+ {
+ validate();
+ assertClassLoader("a", "1.0.0");
+
+ KernelDeployment b = deploy("B1.0.0.xml");
+ try
+ {
+ validate();
+ assertClassLoader("a", "1.0.0");
+ assertClassLoader("b", "1.0.0");
+
+ undeploy(a);
+ try
+ {
+ assertNoClassLoader("a", "1.0.0");
+ assertNoClassLoader("b", "1.0.0");
+ }
+ finally
+ {
+ a = deploy("A1.0.0.xml");
+ }
+ validate();
+ assertClassLoader("a", "1.0.0");
+ assertClassLoader("b", "1.0.0");
+ }
+ finally
+ {
+ undeploy(b);
+ }
+ validate();
+ assertNoClassLoader("b", "1.0.0");
+ assertClassLoader("a", "1.0.0");
+ }
+ finally
+ {
+ undeploy(a);
+ }
+ validate();
+ assertNoClassLoader("a", "1.0.0");
+ }
+
+ public void testADependsUponBRedeployB() throws Exception
+ {
+ KernelDeployment a = deploy("A1.0.0.xml");
+ try
+ {
+ validate();
+ assertClassLoader("a", "1.0.0");
+
+ KernelDeployment b = deploy("B1.0.0.xml");
+ try
+ {
+ validate();
+ assertClassLoader("a", "1.0.0");
+ assertClassLoader("b", "1.0.0");
+
+ undeploy(b);
+ try
+ {
+ assertClassLoader("a", "1.0.0");
+ assertNoClassLoader("b", "1.0.0");
+ }
+ finally
+ {
+ b = deploy("B1.0.0.xml");
+ }
+ validate();
+ assertClassLoader("a", "1.0.0");
+ assertClassLoader("b", "1.0.0");
+ }
+ finally
+ {
+ undeploy(b);
+ }
+ validate();
+ assertNoClassLoader("b", "1.0.0");
+ assertClassLoader("a", "1.0.0");
+ }
+ finally
+ {
+ undeploy(a);
+ }
+ validate();
+ assertNoClassLoader("a", "1.0.0");
+ }
+}
Added: projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/xml/AbstractJBossXBTest.java
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/xml/AbstractJBossXBTest.java (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/xml/AbstractJBossXBTest.java 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,153 @@
+/*
+* 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.classloading.vfs.metadata.xml;
+
+import java.net.URL;
+
+import org.jboss.test.AbstractTestCaseWithSetup;
+import org.jboss.test.AbstractTestDelegate;
+import org.jboss.util.UnreachableStatementException;
+import org.jboss.xb.binding.sunday.unmarshalling.SchemaBinding;
+import org.jboss.xb.builder.JBossXBBuilder;
+
+/**
+ * AbstractBuilderTest.
+ *
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class AbstractJBossXBTest extends AbstractTestCaseWithSetup
+{
+ public AbstractJBossXBTest(String name)
+ {
+ super(name);
+ }
+
+ /**
+ * Setup the test delegate
+ *
+ * @param clazz the class
+ * @return the delegate
+ * @throws Exception for any error
+ */
+ public static AbstractTestDelegate getDelegate(Class<?> clazz) throws Exception
+ {
+ return new JBossXBTestDelegate(clazz);
+ }
+
+ protected JBossXBTestDelegate getJBossXBDelegate()
+ {
+ return (JBossXBTestDelegate) getDelegate();
+ }
+
+ @Override
+ protected void setUp() throws Exception
+ {
+ super.setUp();
+ configureLogging();
+ }
+
+ protected void tearDown() throws Exception
+ {
+ super.tearDown();
+ }
+
+ protected <T, U> T unmarshalObject(Class<T> expected, Class<U> reference, Class<?>... others) throws Exception
+ {
+ TestSchemaResolver resolver = new TestSchemaResolver();
+
+ SchemaBinding schemaBinding = JBossXBBuilder.build(reference);
+ resolver.addSchemaBinding(schemaBinding);
+ if (others != null)
+ {
+ for (Class<?> other : others)
+ {
+ SchemaBinding otherBinding = JBossXBBuilder.build(other);
+ resolver.addSchemaBinding(otherBinding);
+ }
+ }
+
+ String testXml = findTestXml();
+ Object o = unmarshal(testXml, schemaBinding);
+ assertNotNull(o);
+ getLog().debug("Unmarshalled " + o + " of type " + o.getClass().getName());
+ try
+ {
+ return expected.cast(o);
+ }
+ catch (ClassCastException e)
+ {
+ fail("Expected " + expected.getName() + " got " + o.getClass().getName());
+ throw new UnreachableStatementException();
+ }
+ }
+
+ /**
+ * Unmarshal some xml
+ *
+ * @param name the name
+ * @param schema the schema
+ * @return the unmarshalled object
+ * @throws Exception for any error
+ */
+ protected Object unmarshal(String name, SchemaBinding schema) throws Exception
+ {
+ String url = findXML(name);
+ return getJBossXBDelegate().unmarshal(url, schema);
+ }
+
+ protected <T, U> T unmarshalObject(Class<T> expected, Class<U> reference) throws Exception
+ {
+ return unmarshalObject(expected, reference, null);
+ }
+
+ protected <T> T unmarshalObject(Class<T> expected) throws Exception
+ {
+ return unmarshalObject(expected, expected, null);
+ }
+
+ protected String findTestXml()
+ {
+ return getName().substring(4) + ".xml";
+ }
+
+ /**
+ * Find the xml
+ *
+ * @param name the name
+ * @return the url of the xml
+ */
+ protected String findXML(String name)
+ {
+ URL url = getResource(name);
+ if (url == null)
+ fail(name + " not found");
+ return url.toString();
+ }
+
+ @Override
+ public void configureLogging()
+ {
+ //enableTrace("org.jboss.xb");
+ }
+}
Added: projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/xml/JBossXBTestDelegate.java
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/xml/JBossXBTestDelegate.java (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/xml/JBossXBTestDelegate.java 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,171 @@
+/*
+* 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.classloading.vfs.metadata.xml;
+
+import java.lang.reflect.Method;
+import java.net.URL;
+
+import org.jboss.net.protocol.URLStreamHandlerFactory;
+import org.jboss.test.AbstractTestDelegate;
+import org.jboss.xb.binding.Unmarshaller;
+import org.jboss.xb.binding.UnmarshallerFactory;
+import org.jboss.xb.binding.sunday.unmarshalling.DefaultSchemaResolver;
+import org.jboss.xb.binding.sunday.unmarshalling.SchemaBinding;
+import org.jboss.xb.binding.sunday.unmarshalling.SchemaBindingResolver;
+import org.jboss.xb.binding.sunday.unmarshalling.XsdBinder;
+
+/**
+ * JBossXBTestDelegate.
+ *
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 40492 $
+ */
+public class JBossXBTestDelegate extends AbstractTestDelegate
+{
+ /** Whether initialization has been done */
+ private static boolean done = false;
+
+ /** The unmarshaller factory */
+ protected UnmarshallerFactory unmarshallerFactory;
+
+ /** The resolver */
+ protected SchemaBindingResolver defaultResolver;
+
+ /**
+ * Initialize
+ */
+ public synchronized static void init()
+ {
+ if (done)
+ return;
+ done = true;
+ URL.setURLStreamHandlerFactory(new URLStreamHandlerFactory());
+ URLStreamHandlerFactory.preload();
+ String handlerPkgs = System.getProperty("java.protocol.handler.pkgs");
+ if (handlerPkgs != null)
+ handlerPkgs += "|org.jboss.net.protocol";
+ else
+ handlerPkgs = "org.jboss.net.protocol";
+ System.setProperty("java.protocol.handler.pkgs", handlerPkgs);
+ }
+
+ /**
+ * Create a new JBossXBTestDelegate.
+ *
+ * @param clazz the test class
+ */
+ public JBossXBTestDelegate(Class<?> clazz)
+ {
+ super(clazz);
+ }
+
+ @Override
+ public void setUp() throws Exception
+ {
+ super.setUp();
+ init();
+ unmarshallerFactory = UnmarshallerFactory.newInstance();
+ initResolver();
+ }
+
+ protected void initResolver() throws Exception
+ {
+ try
+ {
+ Method method = clazz.getMethod("initResolver", null);
+ defaultResolver = (SchemaBindingResolver) method.invoke(null, null);
+ }
+ catch (NoSuchMethodException ignored)
+ {
+ defaultResolver = new DefaultSchemaResolver();
+ }
+ }
+
+ /**
+ * Unmarshal an object
+ *
+ * @param url the url
+ * @param resolver the resolver
+ * @return the object
+ * @throws Exception for any error
+ */
+ public Object unmarshal(String url, SchemaBindingResolver resolver) throws Exception
+ {
+ if (resolver == null)
+ resolver = defaultResolver;
+
+ long start = System.currentTimeMillis();
+ Unmarshaller unmarshaller = unmarshallerFactory.newUnmarshaller();
+ log.debug("Initialized parsing in " + (System.currentTimeMillis() - start) + "ms");
+ try
+ {
+ Object result = unmarshaller.unmarshal(url, resolver);
+ log.debug("Total parse for " + url + " took " + (System.currentTimeMillis() - start) + "ms");
+ return result;
+ }
+ catch (Exception e)
+ {
+ log.debug("Error during parsing: " + url, e);
+ throw e;
+ }
+ }
+
+ /**
+ * Unmarshal an object
+ *
+ * @param url the url
+ * @param schema the schema
+ * @return the object
+ * @throws Exception for any error
+ */
+ public Object unmarshal(String url, SchemaBinding schema) throws Exception
+ {
+ long start = System.currentTimeMillis();
+ Unmarshaller unmarshaller = unmarshallerFactory.newUnmarshaller();
+ log.debug("Initialized parsing in " + (System.currentTimeMillis() - start) + "ms");
+ try
+ {
+ Object result = unmarshaller.unmarshal(url, schema);
+ log.debug("Total parse for " + url + " took " + (System.currentTimeMillis() - start) + "ms");
+ return result;
+ }
+ catch (Exception e)
+ {
+ log.debug("Error during parsing: " + url, e);
+ throw e;
+ }
+ }
+
+ /**
+ * Bind a schema
+ *
+ * @param url the url
+ * @param resolver the resolver
+ * @return the object
+ * @throws Exception for any error
+ */
+ public SchemaBinding bind(String url, SchemaBindingResolver resolver) throws Exception
+ {
+ return XsdBinder.bind(url, resolver);
+ }
+}
Added: projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/xml/SchemaPrinter.java
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/xml/SchemaPrinter.java (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/xml/SchemaPrinter.java 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,276 @@
+/*
+* 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.classloading.vfs.metadata.xml;
+
+import java.util.Collection;
+import java.util.Iterator;
+
+import javax.xml.XMLConstants;
+
+import org.jboss.xb.binding.sunday.unmarshalling.AllBinding;
+import org.jboss.xb.binding.sunday.unmarshalling.AttributeBinding;
+import org.jboss.xb.binding.sunday.unmarshalling.ChoiceBinding;
+import org.jboss.xb.binding.sunday.unmarshalling.ElementBinding;
+import org.jboss.xb.binding.sunday.unmarshalling.ModelGroupBinding;
+import org.jboss.xb.binding.sunday.unmarshalling.ParticleBinding;
+import org.jboss.xb.binding.sunday.unmarshalling.SchemaBinding;
+import org.jboss.xb.binding.sunday.unmarshalling.SequenceBinding;
+import org.jboss.xb.binding.sunday.unmarshalling.TermBinding;
+import org.jboss.xb.binding.sunday.unmarshalling.TypeBinding;
+import org.jboss.xb.binding.sunday.unmarshalling.WildcardBinding;
+
+/**
+ * SchemaPrinter.
+ *
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class SchemaPrinter
+{
+ @SuppressWarnings("unchecked")
+ public static String printSchema(SchemaBinding schemaBinding)
+ {
+ String nsURI = (String) schemaBinding.getNamespaces().iterator().next();
+ StringBuilder builder = new StringBuilder();
+ builder.append("<xsd:schema xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n");
+ if (XMLConstants.NULL_NS_URI.equals(nsURI) == false)
+ {
+ builder.append(" targetNamespace=\"").append(nsURI).append("\"\n");
+ builder.append(" xmlns=\"").append(nsURI).append("\"\n");
+ }
+ builder.append(">\n");
+ int pad=3;
+ Iterator<ParticleBinding> elements = schemaBinding.getElementParticles();
+ while (elements != null && elements.hasNext())
+ printElement(builder, pad, elements.next());
+ Iterator<TypeBinding> types = schemaBinding.getTypes();
+ while (types != null && types.hasNext())
+ printType(builder, pad, types.next());
+ builder.append("</xsd:schema>");
+ return builder.toString();
+ }
+
+ public static void printElement(StringBuilder builder, int pad, ParticleBinding particle)
+ {
+ ElementBinding element = (ElementBinding) particle.getTerm();
+ pad(builder, pad);
+ builder.append("<element name=\"").append(element.getQName()).append("\"");
+ int minOccurs = particle.getMinOccurs();
+ if (minOccurs != 1)
+ builder.append(" minOccurs=\"").append(minOccurs).append("\"");
+ int maxOccurs = particle.getMaxOccurs();
+ if (maxOccurs != 1)
+ {
+ builder.append(" maxOccurs=\"");
+ if (maxOccurs == -1)
+ builder.append("unbounded");
+ else
+ builder.append(maxOccurs);
+ builder.append("\"");
+ }
+ TypeBinding type = element.getType();
+ if (type != null && type.getQName() != null)
+ builder.append(" type=\"").append(type.getQName()).append("\"");
+ builder.append(">");
+ if (type != null && type.getQName() == null)
+ printAnonymousType(builder, pad + 3, type);
+ pad(builder, pad);
+ builder.append("</element>");
+ }
+
+ public static void printAnonymousType(StringBuilder builder, int pad, TypeBinding type)
+ {
+ pad(builder, pad);
+ builder.append("<complexType>");
+ TypeBinding baseTypeBinding = type.getBaseType();
+ String qName;
+ if (baseTypeBinding != null)
+ qName = baseTypeBinding.getQName().toString();
+ else
+ qName = "xsd:anyType";
+ pad(builder, pad);
+ builder.append(" <restriction base=\"").append(qName).append("\">");
+ printTypeInfo(builder, pad+6, type);
+ pad(builder, pad);
+ builder.append(" </restriction>");
+ pad(builder, pad);
+ builder.append("</complexType>");
+ }
+
+ public static void printType(StringBuilder builder, int pad, TypeBinding type)
+ {
+ if (type.isSimple())
+ printSimpleType(builder, pad, type);
+ else
+ printComplexType(builder, pad, type);
+ }
+
+ public static void printSimpleType(StringBuilder builder, int pad, TypeBinding type)
+ {
+ pad(builder, pad);
+ builder.append("<simpleType name=\"").append(type.getQName()).append("\"");
+ TypeBinding baseTypeBinding = type.getBaseType();
+ String qName = null;
+ if (baseTypeBinding != null)
+ qName = baseTypeBinding.getQName().toString();
+ else
+ qName = "xsd:anySimpleType";
+ builder.append(" base=\"").append(qName).append("\">");
+ printTypeInfo(builder, pad+3, type);
+ pad(builder, pad);
+ builder.append("</simpleType>");
+ }
+
+ public static void printComplexType(StringBuilder builder, int pad, TypeBinding type)
+ {
+ pad(builder, pad);
+ builder.append("<complexType name=\"").append(type.getQName()).append("\"");
+ TypeBinding baseTypeBinding = type.getBaseType();
+ String qName = null;
+ if (baseTypeBinding != null)
+ qName = baseTypeBinding.getQName().toString();
+ else
+ qName = "xsd:anyType";
+ builder.append(" base=\"").append(qName).append("\">");
+ printTypeInfo(builder, pad+3, type);
+ pad(builder, pad);
+ builder.append("</complexType>");
+ }
+
+ @SuppressWarnings("unchecked")
+ public static void printTypeInfo(StringBuilder builder, int pad, TypeBinding type)
+ {
+ ParticleBinding particle = type.getParticle();
+ if (particle != null)
+ {
+ printParticle(builder, pad, particle);
+ }
+
+ Collection<AttributeBinding> attributes = type.getAttributes();
+ if (attributes != null)
+ {
+ for (AttributeBinding attribute : attributes)
+ {
+ printAttribute(builder, pad, attribute);
+ }
+ }
+ }
+
+ public static void printParticle(StringBuilder builder, int pad, ParticleBinding particle)
+ {
+ TermBinding term = particle.getTerm();
+ if (term instanceof ElementBinding)
+ printElement(builder, pad, particle);
+ else if (term instanceof WildcardBinding)
+ printWildcard(builder, pad, particle);
+ else if (term instanceof SequenceBinding)
+ printModel(builder, pad, particle, "sequence");
+ else if (term instanceof AllBinding)
+ printModel(builder, pad, particle, "all");
+ else if (term instanceof ChoiceBinding)
+ printModel(builder, pad, particle, "choice");
+ }
+
+ @SuppressWarnings("unchecked")
+ public static void printModel(StringBuilder builder, int pad, ParticleBinding particle, String prefix)
+ {
+ pad(builder, pad);
+ builder.append("<").append(prefix);
+ int minOccurs = particle.getMinOccurs();
+ if (minOccurs != 1)
+ builder.append(" minOccurs=\"").append(minOccurs).append("\"");
+ int maxOccurs = particle.getMaxOccurs();
+ if (maxOccurs != 1)
+ {
+ builder.append(" maxOccurs=\"");
+ if (maxOccurs == -1)
+ builder.append("unbounded");
+ else
+ builder.append(maxOccurs);
+ builder.append("\"");
+ }
+ builder.append(">");
+ ModelGroupBinding model = (ModelGroupBinding) particle.getTerm();
+ Collection<ParticleBinding> particles = model.getParticles();
+ boolean newLine = true;
+ if (particles != null)
+ {
+ for (ParticleBinding component : particles)
+ printParticle(builder, pad+3, component);
+ }
+ else
+ {
+ newLine = false;
+ }
+ pad(builder, pad, newLine);
+ builder.append("</").append(prefix).append(">");
+ }
+
+ public static void printWildcard(StringBuilder builder, int pad, ParticleBinding particle)
+ {
+ pad(builder, pad);
+ builder.append("<any");
+ int minOccurs = particle.getMinOccurs();
+ if (minOccurs != 1)
+ builder.append(" minOccurs=\"").append(minOccurs).append("\"");
+ int maxOccurs = particle.getMaxOccurs();
+ if (maxOccurs != 1)
+ {
+ builder.append(" maxOccurs=\"");
+ if (maxOccurs == -1)
+ builder.append("unbounded");
+ else
+ builder.append(maxOccurs);
+ builder.append("\"");
+ }
+ builder.append("/>");
+ }
+
+ public static void printAttribute(StringBuilder builder, int pad, AttributeBinding attribute)
+ {
+ pad(builder, pad);
+ TypeBinding typeBinding = attribute.getType();
+ String qName = null;
+ if (typeBinding != null && typeBinding.getQName() != null)
+ qName = typeBinding.getQName().toString();
+ else
+ qName = "CDATA";
+ builder.append("<attribute name=\"").append(attribute.getQName().getLocalPart()).append("\"");
+ builder.append(" type=\"").append(qName).append("\"");
+ if (attribute.getRequired() == false)
+ builder.append(" optional=\"true\"/>");
+ }
+
+ public static void pad(StringBuilder builder, int pad)
+ {
+ pad(builder, pad, true);
+ }
+
+ public static void pad(StringBuilder builder, int pad, boolean newLine)
+ {
+ if (newLine)
+ builder.append("\n");
+ for (int i = 0; i < pad; ++ i)
+ builder.append(' ');
+ }
+}
Added: projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/xml/TestSchemaResolver.java
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/xml/TestSchemaResolver.java (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/xml/TestSchemaResolver.java 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,78 @@
+/*
+* 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.classloading.vfs.metadata.xml;
+
+import java.util.HashMap;
+
+import org.jboss.logging.Logger;
+import org.jboss.xb.binding.sunday.unmarshalling.SchemaBinding;
+import org.jboss.xb.binding.sunday.unmarshalling.SchemaBindingResolver;
+import org.w3c.dom.ls.LSInput;
+
+/**
+ * TestSchemaResolver.
+ *
+ * @author <a href="ales.justin at jboss.com">Ales Justin</a>
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class TestSchemaResolver implements SchemaBindingResolver
+{
+ private static final Logger log = Logger.getLogger(TestSchemaResolver.class);
+
+ private HashMap<String, SchemaBinding> bindings = new HashMap<String, SchemaBinding>();
+
+ public String getBaseURI()
+ {
+ return null;
+ }
+
+ public void addSchemaBinding(SchemaBinding schemaBinding)
+ {
+ schemaBinding.setSchemaResolver(this);
+ String nsURI = (String) schemaBinding.getNamespaces().iterator().next();
+ bindings.put(nsURI, schemaBinding);
+ if (log.isTraceEnabled())
+ {
+ String schema = SchemaPrinter.printSchema(schemaBinding);
+ log.trace("Bound: " + nsURI + "\n" + schema);
+ }
+ }
+
+ public SchemaBinding resolve(String nsUri, String baseURI, String schemaLocation)
+ {
+ SchemaBinding result = bindings.get(nsUri);
+ if (result == null)
+ throw new RuntimeException("Schema not bound: " + nsUri + " available: " + bindings.keySet());
+ return result;
+ }
+
+ public LSInput resolveAsLSInput(String nsUri, String baseUri, String schemaLocation)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ public void setBaseURI(String baseURI)
+ {
+ throw new org.jboss.util.NotImplementedException("setBaseURI");
+ }
+}
Added: projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/xml/support/TestCapability.java
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/xml/support/TestCapability.java (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/xml/support/TestCapability.java 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,51 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2007, 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.classloading.vfs.metadata.xml.support;
+
+import javax.xml.bind.annotation.XmlNsForm;
+import javax.xml.bind.annotation.XmlRootElement;
+
+import org.jboss.classloading.spi.dependency.Module;
+import org.jboss.classloading.spi.metadata.Requirement;
+import org.jboss.classloading.spi.metadata.helpers.AbstractCapability;
+import org.jboss.xb.annotations.JBossXmlSchema;
+
+ at JBossXmlSchema(namespace="urn:jboss:test:classloader:capability:1.0", elementFormDefault=XmlNsForm.QUALIFIED)
+ at XmlRootElement(name="test")
+public class TestCapability extends AbstractCapability
+{
+ private static final long serialVersionUID = -1L;
+
+ public TestCapability()
+ {
+ }
+
+ public TestCapability(String name, Object version)
+ {
+ super(name, version);
+ }
+
+ public boolean resolves(Module module, Requirement requirement)
+ {
+ return false;
+ }
+}
Added: projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/xml/support/TestRequirement.java
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/xml/support/TestRequirement.java (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/xml/support/TestRequirement.java 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,45 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2007, 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.classloading.vfs.metadata.xml.support;
+
+import javax.xml.bind.annotation.XmlNsForm;
+import javax.xml.bind.annotation.XmlRootElement;
+
+import org.jboss.classloading.spi.metadata.helpers.AbstractRequirement;
+import org.jboss.classloading.spi.version.VersionRange;
+import org.jboss.xb.annotations.JBossXmlSchema;
+
+ at JBossXmlSchema(namespace="urn:jboss:test:classloader:requirement:1.0", elementFormDefault=XmlNsForm.QUALIFIED)
+ at XmlRootElement(name="test")
+public class TestRequirement extends AbstractRequirement
+{
+ private static final long serialVersionUID = -1L;
+
+ public TestRequirement()
+ {
+ }
+
+ public TestRequirement(String name, VersionRange range)
+ {
+ super(name, range);
+ }
+}
Added: projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/xml/support/package-info.java
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/xml/support/package-info.java (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/xml/support/package-info.java 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,32 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2008, 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.
+*/
+ at JBossXmlAdaptedTypes
+({
+ @JBossXmlAdaptedType(type=Version.class, valueAdapter=VersionValueAdapter.class)
+})
+package org.jboss.test.classloading.vfs.metadata.xml.support;
+
+import org.jboss.classloading.plugins.metadata.VersionValueAdapter;
+import org.jboss.classloading.spi.version.Version;
+import org.jboss.xb.annotations.JBossXmlAdaptedType;
+import org.jboss.xb.annotations.JBossXmlAdaptedTypes;
+
Added: projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/xml/test/VFSClassLoaderFactoryXMLUnitTestCase.java
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/xml/test/VFSClassLoaderFactoryXMLUnitTestCase.java (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/metadata/xml/test/VFSClassLoaderFactoryXMLUnitTestCase.java 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,347 @@
+/*
+ * 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.classloading.vfs.metadata.xml.test;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import junit.framework.Test;
+
+import org.jboss.classloading.spi.metadata.Capability;
+import org.jboss.classloading.spi.metadata.ClassLoadingMetaDataFactory;
+import org.jboss.classloading.spi.metadata.ExportAll;
+import org.jboss.classloading.spi.metadata.Requirement;
+import org.jboss.classloading.spi.version.Version;
+import org.jboss.classloading.spi.version.VersionRange;
+import org.jboss.classloading.spi.vfs.metadata.VFSClassLoaderFactory;
+import org.jboss.classloading.spi.vfs.metadata.VFSClassLoaderFactory10;
+import org.jboss.test.classloading.vfs.metadata.xml.AbstractJBossXBTest;
+import org.jboss.test.classloading.vfs.metadata.xml.support.TestCapability;
+import org.jboss.test.classloading.vfs.metadata.xml.support.TestRequirement;
+
+/**
+ * VFSClassLoaderFactoryXMLUnitTestCase.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class VFSClassLoaderFactoryXMLUnitTestCase extends AbstractJBossXBTest
+{
+ public static Test suite()
+ {
+ return suite(VFSClassLoaderFactoryXMLUnitTestCase.class);
+ }
+
+ public VFSClassLoaderFactoryXMLUnitTestCase(String name)
+ {
+ super(name);
+ }
+
+ public void testModuleName() throws Exception
+ {
+ VFSClassLoaderFactory result = unmarshal();
+ assertEquals("test", result.getName());
+ assertEquals(Version.DEFAULT_VERSION, result.getVersion());
+ assertNull(result.getContextName());
+ assertNull(result.getDomain());
+ assertNull(result.getParentDomain());
+ assertNull(result.getExportAll());
+ assertNull(result.getIncludedPackages());
+ assertNull(result.getExcludedPackages());
+ assertNull(result.getExcludedExportPackages());
+ assertFalse(result.isImportAll());
+ assertTrue(result.isJ2seClassLoadingCompliance());
+ assertTrue(result.isCacheable());
+ assertTrue(result.isBlackListable());
+ assertEmpty(result.getRoots());
+ assertEquals(VFSClassLoaderFactory.DEFAULT_CLASSLOADER_SYSTEM_NAME, result.getClassLoaderSystemName());
+ assertNull(result.getCapabilities().getCapabilities());
+ assertNull(result.getRequirements().getRequirements());
+ }
+
+ public void testModuleVersion() throws Exception
+ {
+ VFSClassLoaderFactory result = unmarshal();
+ assertEquals(Version.parseVersion("1.0.0"), result.getVersion());
+ }
+
+ public void testModuleContext() throws Exception
+ {
+ VFSClassLoaderFactory result = unmarshal();
+ assertEquals("Context", result.getContextName());
+ }
+
+ public void testModuleDomain() throws Exception
+ {
+ VFSClassLoaderFactory result = unmarshal();
+ assertEquals("testDomain", result.getDomain());
+ }
+
+ public void testModuleParentDomain() throws Exception
+ {
+ VFSClassLoaderFactory result = unmarshal();
+ assertEquals("testParentDomain", result.getParentDomain());
+ }
+
+ public void testModuleExportAll() throws Exception
+ {
+ VFSClassLoaderFactory result = unmarshal();
+ assertEquals(ExportAll.ALL, result.getExportAll());
+ }
+
+ public void testModuleIncluded() throws Exception
+ {
+ VFSClassLoaderFactory result = unmarshal();
+ assertEquals("Included", result.getIncludedPackages());
+ }
+
+ public void testModuleExcluded() throws Exception
+ {
+ VFSClassLoaderFactory result = unmarshal();
+ assertEquals("Excluded", result.getExcludedPackages());
+ }
+
+ public void testModuleExcludedExport() throws Exception
+ {
+ VFSClassLoaderFactory result = unmarshal();
+ assertEquals("ExcludedExport", result.getExcludedExportPackages());
+ }
+
+ public void testModuleImportAll() throws Exception
+ {
+ VFSClassLoaderFactory result = unmarshal();
+ assertTrue(result.isImportAll());
+ }
+
+ public void testModuleJ2seClassLoadingCompliance() throws Exception
+ {
+ VFSClassLoaderFactory result = unmarshal();
+ assertFalse(result.isJ2seClassLoadingCompliance());
+ }
+
+ public void testModuleCache() throws Exception
+ {
+ VFSClassLoaderFactory result = unmarshal();
+ assertFalse(result.isCacheable());
+ }
+
+ public void testModuleBlackList() throws Exception
+ {
+ VFSClassLoaderFactory result = unmarshal();
+ assertFalse(result.isBlackListable());
+ }
+
+ public void testModuleSystem() throws Exception
+ {
+ VFSClassLoaderFactory result = unmarshal();
+ assertEquals("System", result.getClassLoaderSystemName());
+ }
+
+ public void testModuleRoots() throws Exception
+ {
+ VFSClassLoaderFactory result = unmarshal();
+ assertEquals(Arrays.asList(new String[] { "root1", "root2", "root3" }), result.getRoots());
+ }
+
+ public void testExportOneModuleNoVersion() throws Exception
+ {
+ VFSClassLoaderFactory result = unmarshal();
+ ClassLoadingMetaDataFactory factory = ClassLoadingMetaDataFactory.getInstance();
+ assertCapabilities(result, factory.createModule("export1"));
+ }
+
+ public void testExportOneModuleVersioned() throws Exception
+ {
+ VFSClassLoaderFactory result = unmarshal();
+ ClassLoadingMetaDataFactory factory = ClassLoadingMetaDataFactory.getInstance();
+ assertCapabilities(result, factory.createModule("export1", "1.0.0"));
+ }
+
+ public void testExportThreeModules() throws Exception
+ {
+ VFSClassLoaderFactory result = unmarshal();
+ ClassLoadingMetaDataFactory factory = ClassLoadingMetaDataFactory.getInstance();
+ assertCapabilities(result, factory.createModule("export1", "1.0.0"),
+ factory.createModule("export2", "2.0.0"),
+ factory.createModule("export3", "3.0.0"));
+ }
+
+ public void testExportOnePackageNoVersion() throws Exception
+ {
+ VFSClassLoaderFactory result = unmarshal();
+ ClassLoadingMetaDataFactory factory = ClassLoadingMetaDataFactory.getInstance();
+ assertCapabilities(result, factory.createPackage("export1"));
+ }
+
+ public void testExportOnePackageVersioned() throws Exception
+ {
+ VFSClassLoaderFactory result = unmarshal();
+ ClassLoadingMetaDataFactory factory = ClassLoadingMetaDataFactory.getInstance();
+ assertCapabilities(result, factory.createPackage("export1", "1.0.0"));
+ }
+
+ public void testExportThreePackages() throws Exception
+ {
+ VFSClassLoaderFactory result = unmarshal();
+ ClassLoadingMetaDataFactory factory = ClassLoadingMetaDataFactory.getInstance();
+ assertCapabilities(result, factory.createPackage("export1", "1.0.0"),
+ factory.createPackage("export2", "2.0.0"),
+ factory.createPackage("export3", "3.0.0"));
+ }
+
+ public void testImportOneModuleNoVersion() throws Exception
+ {
+ VFSClassLoaderFactory result = unmarshal();
+ ClassLoadingMetaDataFactory factory = ClassLoadingMetaDataFactory.getInstance();
+ assertRequirements(result, factory.createRequireModule("export1"));
+ }
+
+ public void testImportOneModuleVersioned() throws Exception
+ {
+ VFSClassLoaderFactory result = unmarshal();
+ ClassLoadingMetaDataFactory factory = ClassLoadingMetaDataFactory.getInstance();
+ assertRequirements(result, factory.createRequireModule("export1", new VersionRange("1.0.0", "2.0.0")));
+ }
+
+ public void testImportThreeModules() throws Exception
+ {
+ VFSClassLoaderFactory result = unmarshal();
+ ClassLoadingMetaDataFactory factory = ClassLoadingMetaDataFactory.getInstance();
+ assertRequirements(result, factory.createRequireModule("export1", new VersionRange("1.0.0", "1.1.0")),
+ factory.createRequireModule("export2", new VersionRange("2.0.0", "2.1.0")),
+ factory.createRequireModule("export3", new VersionRange("3.0.0", "3.1.0")));
+ }
+
+ public void testImportOnePackageNoVersion() throws Exception
+ {
+ VFSClassLoaderFactory result = unmarshal();
+ ClassLoadingMetaDataFactory factory = ClassLoadingMetaDataFactory.getInstance();
+ assertRequirements(result, factory.createRequirePackage("export1"));
+ }
+
+ public void testImportOnePackageVersioned() throws Exception
+ {
+ VFSClassLoaderFactory result = unmarshal();
+ ClassLoadingMetaDataFactory factory = ClassLoadingMetaDataFactory.getInstance();
+ assertRequirements(result, factory.createRequirePackage("export1", new VersionRange("1.0.0", "2.0.0")));
+ }
+
+ public void testImportThreePackages() throws Exception
+ {
+ VFSClassLoaderFactory result = unmarshal();
+ ClassLoadingMetaDataFactory factory = ClassLoadingMetaDataFactory.getInstance();
+ assertRequirements(result, factory.createRequirePackage("export1", new VersionRange("1.0.0", "1.1.0")),
+ factory.createRequirePackage("export2", new VersionRange("2.0.0", "2.1.0")),
+ factory.createRequirePackage("export3", new VersionRange("3.0.0", "3.1.0")));
+ }
+
+ public void testImportVersionRange() throws Exception
+ {
+ VFSClassLoaderFactory result = unmarshal();
+ ClassLoadingMetaDataFactory factory = ClassLoadingMetaDataFactory.getInstance();
+ assertRequirements(result, factory.createRequireModule("export1"),
+ factory.createRequireModule("export2", new VersionRange("1.0.0")),
+ factory.createRequireModule("export3", new VersionRange("0.0.0", "1.0.0")),
+ factory.createRequireModule("export4", new VersionRange("1.0.0", "2.0.0")),
+ factory.createRequireModule("export5", new VersionRange("1.0.0", false, "2.0.0", false)),
+ factory.createRequireModule("export6", new VersionRange("1.0.0", false, "2.0.0", true)),
+ factory.createRequireModule("export7", new VersionRange("1.0.0", true, "2.0.0", false)),
+ factory.createRequireModule("export8", new VersionRange("1.0.0", true, "2.0.0", true)));
+ }
+
+ public void testExportImportMixed() throws Exception
+ {
+ VFSClassLoaderFactory result = unmarshal();
+ ClassLoadingMetaDataFactory factory = ClassLoadingMetaDataFactory.getInstance();
+ assertCapabilities(result, factory.createModule("test2", "2.0.0"),
+ factory.createPackage("test2", "2.0.0"),
+ factory.createModule("test1", "1.0.0"),
+ factory.createPackage("test1", "1.0.0"));
+ assertRequirements(result, factory.createRequireModule("test2", new VersionRange("2.0.0")),
+ factory.createRequirePackage("test2", new VersionRange("2.0.0")),
+ factory.createRequireModule("test1", new VersionRange("1.0.0")),
+ factory.createRequirePackage("test1", new VersionRange("1.0.0")));
+ }
+
+ public void testWildcardCapability() throws Exception
+ {
+ VFSClassLoaderFactory result = unmarshal(TestCapability.class);
+ ClassLoadingMetaDataFactory factory = ClassLoadingMetaDataFactory.getInstance();
+ assertCapabilities(result, factory.createModule("test1", "1.0.0"),
+ factory.createPackage("test1", "1.0.0"),
+ new TestCapability("test", "1.0.0"));
+ }
+
+ public void testWildcardRequirement() throws Exception
+ {
+ VFSClassLoaderFactory result = unmarshal(TestRequirement.class);
+ ClassLoadingMetaDataFactory factory = ClassLoadingMetaDataFactory.getInstance();
+ assertRequirements(result, factory.createRequireModule("test1", new VersionRange("1.0.0")),
+ factory.createRequirePackage("test1", new VersionRange("1.0.0")),
+ new TestRequirement("test", new VersionRange("1.0.0")));
+ }
+
+ public void testOptionalRequirement() throws Exception
+ {
+ VFSClassLoaderFactory result = unmarshal(TestRequirement.class);
+ ClassLoadingMetaDataFactory factory = ClassLoadingMetaDataFactory.getInstance();
+ assertRequirements(result, factory.createRequireModule("test1", new VersionRange("1.0.0"), true, false),
+ factory.createRequirePackage("test1", new VersionRange("1.0.0"), true, false));
+ }
+
+ public void testReExportRequirement() throws Exception
+ {
+ VFSClassLoaderFactory result = unmarshal(TestRequirement.class);
+ ClassLoadingMetaDataFactory factory = ClassLoadingMetaDataFactory.getInstance();
+ assertRequirements(result, factory.createReExportModule("test1", new VersionRange("1.0.0")),
+ factory.createReExportPackage("test1", new VersionRange("1.0.0")));
+ }
+
+ public void testUsesRequirement() throws Exception
+ {
+ VFSClassLoaderFactory result = unmarshal(TestRequirement.class);
+ ClassLoadingMetaDataFactory factory = ClassLoadingMetaDataFactory.getInstance();
+ assertRequirements(result, factory.createUsesPackage("test1", new VersionRange("1.0.0")));
+ }
+
+ public void assertCapabilities(VFSClassLoaderFactory metadata, Capability... expected)
+ {
+ List<Capability> temp = new ArrayList<Capability>();
+ for (Capability capability : expected)
+ temp.add(capability);
+ assertEquals(temp, metadata.getCapabilities().getCapabilities());
+ }
+
+ public void assertRequirements(org.jboss.classloading.spi.vfs.metadata.VFSClassLoaderFactory metadata, Requirement... expected)
+ {
+ List<Requirement> temp = new ArrayList<Requirement>();
+ for (Requirement requirement : expected)
+ temp.add(requirement);
+ assertEquals(temp, metadata.getRequirements().getRequirements());
+ }
+
+ protected VFSClassLoaderFactory unmarshal(Class<?>... extra) throws Exception
+ {
+ return unmarshalObject(VFSClassLoaderFactory10.class, VFSClassLoaderFactory10.class, extra);
+ }
+}
Added: projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/policy/test/ExportAllUnitTestCase.java
===================================================================
--- projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/policy/test/ExportAllUnitTestCase.java (rev 0)
+++ projects/microcontainer/trunk/classloading-vfs/src/tests/org/jboss/test/classloading/vfs/policy/test/ExportAllUnitTestCase.java 2008-02-18 13:35:09 UTC (rev 69880)
@@ -0,0 +1,302 @@
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2007, 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.classloading.vfs.policy.test;
+
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.net.URL;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+
+import org.jboss.classloader.plugins.system.DefaultClassLoaderSystem;
+import org.jboss.classloader.spi.ClassLoaderSystem;
+import org.jboss.classloading.spi.metadata.ExportAll;
+import org.jboss.classloading.spi.vfs.policy.VFSClassLoaderPolicy;
+import org.jboss.test.BaseTestCase;
+import org.jboss.virtual.VFS;
+import org.jboss.virtual.VirtualFile;
+
+/**
+ * ExportAllUnitTestCase.
+ *
+ * @author <a href="adrian at jboss.com">Adrian Brock</a>
+ * @version $Revision: 1.1 $
+ */
+public class ExportAllUnitTestCase extends BaseTestCase
+{
+ protected void testExportAll(ExportAll exportAll, Map<String, String> expected, String... urls) throws Exception
+ {
+ Set<String> empty = Collections.emptySet();
+ testExportAll(exportAll, expected, empty, urls);
+ }
+
+ protected void testExportAll(ExportAll exportAll, Map<String, String> expected, Set<String> empty, String... urls) throws Exception
+ {
+ testExportAllAbsolute(exportAll, expected, empty, urls);
+ testExportAllFromBase(exportAll, expected, empty, urls);
+ }
+
+ protected void testExportAllCommon(ExportAll exportAll, Map<String, String> expected, Set<String> empty, VirtualFile[] files) throws Exception
+ {
+ VFSClassLoaderPolicy policy = VFSClassLoaderPolicy.createVFSClassLoaderPolicy(files);
+ policy.setExportAll(exportAll);
+
+ String[] packageNames = policy.getPackageNames();
+ Set<String> actual = makeSet(packageNames);
+ assertEquals(expected.keySet(), actual);
+
+ ClassLoaderSystem system = new DefaultClassLoaderSystem();
+ ClassLoader classLoader = system.registerClassLoaderPolicy(policy);
+
+ for (Map.Entry<String, String> entry : expected.entrySet())
+ {
+ String packageName = entry.getKey();
+ String resource = packageName.replace('.', '/') + "/notempty";
+ InputStream is = classLoader.getResourceAsStream(resource);
+ if (empty.contains(packageName))
+ assertNull("Did not expect resource: " + resource, is);
+ else
+ {
+ assertNotNull("Did not find resource: " + resource, is);
+ String contents = getContents(is);
+ assertEquals(entry.getValue(), contents);
+ }
+ }
+ }
+
+ protected void testExportAllFromBase(ExportAll exportAll, Map<String, String> expected, Set<String> empty, String... urls) throws Exception
+ {
+ URL baseURL = getResource("/classloader");
+ assertNotNull(baseURL);
+ VirtualFile base = VFS.getRoot(baseURL);
+ VirtualFile[] files = new VirtualFile[urls.length];
+ for (int i = 0; i < urls.length; ++i)
+ files[i] = base.findChild(urls[i]);
+
+ testExportAllCommon(exportAll, expected, empty, files);
+ }
+
+ protected void testExportAllAbsolute(ExportAll exportAll, Map<String, String> expected, Set<String> empty, String... urls) throws Exception
+ {
+ VirtualFile[] files = new VirtualFile[urls.length];
+ for (int i = 0; i < urls.length; ++i)
+ {
+ String urlString = "/classloader/" + urls[i];
+ URL url = getResource(urlString);
+ assertNotNull("Expected to find resource: " + urlString, url);
+ files[i]= VFS.getRoot(url);
+ }
+
+ testExportAllCommon(exportAll, expected, empty, files);
+ }
+
+ public void testExportAllJar1() throws Exception
+ {
+ Map<String,String> expected = makeSimpleMap("testjar1",
+ "",
+ "package1",
+ "package2",
+ "package2.subpackage1",
+ "package2.subpackage2",
+ "package2.subpackage3"
+ );
+
+ testExportAll(ExportAll.ALL, expected, "testjar1");
+ }
+ public void testJar1Resources()
+ throws Exception
+ {
+ URL testjar1URL = getResource("/classloader/testjar1");
+ VirtualFile testjar1 = VFS.getRoot(testjar1URL);
+ VFSClassLoaderPolicy policy = VFSClassLoaderPolicy.createVFSClassLoaderPolicy(testjar1);
+ policy.setExportAll(ExportAll.ALL);
+
+ ClassLoaderSystem system = new DefaultClassLoaderSystem();
+ ClassLoader classLoader = system.registerClassLoaderPolicy(policy);
+ URL notempty = classLoader.getResource("notempty");
+ assertNotNull(notempty);
+ }
+ public void testWar1Resources()
+ throws Exception
+ {
+ URL testwar1URL = getResource("/classloader/testwar1.war");
+ VirtualFile testwar1 = VFS.getRoot(testwar1URL);
+ VFSClassLoaderPolicy policy = VFSClassLoaderPolicy.createVFSClassLoaderPolicy(testwar1);
+ policy.setExportAll(ExportAll.NON_EMPTY);
+ policy.setImportAll(true);
+
+ ClassLoaderSystem system = new DefaultClassLoaderSystem();
+ ClassLoader classLoader = system.registerClassLoaderPolicy(policy);
+ URL resURL = classLoader.getResource("test-resource.txt");
+ assertNull(resURL);
+ resURL = classLoader.getResource("WEB-INF/test-resource.txt");
+ assertNotNull(resURL);
+ }
+
+ public void testExportAllJar1NonEmpty() throws Exception
+ {
+ Map<String, String> expected = makeSimpleMap("testjar1",
+ "",
+ "package1",
+ "package2",
+ "package2.subpackage1",
+ "package2.subpackage2",
+ "package2.subpackage3"
+ );
+
+ testExportAll(ExportAll.NON_EMPTY, expected, "testjar1");
+ }
+
+ public void testExportAllJar2() throws Exception
+ {
+ Map<String,String> expected = makeSimpleMap("testjar2",
+ "",
+ "package1"
+ );
+
+ Set<String> empty = makeSet("");
+
+ testExportAll(ExportAll.ALL, expected, empty, "testjar2");
+ }
+
+ public void testExportAllJar2NonEmpty() throws Exception
+ {
+ Map<String, String> expected = makeSimpleMap("testjar2",
+ "package1"
+ );
+
+ testExportAll(ExportAll.NON_EMPTY, expected, "testjar2");
+ }
+
+ public void testExportAllJar1And2() throws Exception
+ {
+ Map<String,String> expected = makeSimpleMap("testjar1",
+ "",
+ "package1",
+ "package2",
+ "package2.subpackage1",
+ "package2.subpackage2",
+ "package2.subpackage3"
+ );
+
+ testExportAll(ExportAll.ALL, expected, "testjar1", "testjar2");
+ }
+
+ public void testExportAllJar1And2NonEmpty() throws Exception
+ {
+ Map<String, String> expected = makeSimpleMap("testjar1",
+ "",
+ "package1",
+ "package2",
+ "package2.subpackage1",
+ "package2.subpackage2",
+ "package2.subpackage3"
+ );
+
+ testExportAll(ExportAll.NON_EMPTY, expected, "testjar1", "testjar2");
+ }
+
+ public void testExportAllJar2And1() throws Exception
+ {
+ Map<String,String> expected = makeComplexMap(
+ "", "testjar1",
+ "package1", "testjar2",
+ "package2", "testjar1",
+ "package2.subpackage1", "testjar1",
+ "package2.subpackage2", "testjar1",
+ "package2.subpackage3", "testjar1"
+ );
+
+ testExportAll(ExportAll.ALL, expected, "testjar2", "testjar1");
+ }
+
+ public void testExportAllJar2And1NonEmpty() throws Exception
+ {
+ Map<String, String> expected = makeComplexMap(
+ "", "testjar1",
+ "package1", "testjar2",
+ "package2", "testjar1",
+ "package2.subpackage1", "testjar1",
+ "package2.subpackage2", "testjar1",
+ "package2.subpackage3", "testjar1"
+ );
+
+ testExportAll(ExportAll.NON_EMPTY, expected, "testjar2", "testjar1");
+ }
+
+ protected String getContents(InputStream is) throws Exception
+ {
+ StringBuilder builder = new StringBuilder();
+ InputStreamReader reader = new InputStreamReader(is);
+ int character = reader.read();
+ while (character != -1)
+ {
+ builder.append((char) character);
+ character = reader.read();
+ }
+ return builder.toString();
+ }
+
+ protected Set<String> makeSet(String... elements)
+ {
+ assertNotNull(elements);
+ Set<String> result = new HashSet<String>();
+ for (String string : elements)
+ result.add(string);
+ return result;
+ }
+
+ protected Map<String,String> makeSimpleMap(String prefix, String... elements)
+ {
+ assertNotNull(prefix);
+ assertNotNull(elements);
+ Map<String, String> result = new HashMap<String, String>();
+ for (String string : elements)
+ result.put(string, prefix + "." + string);
+ return result;
+ }
+
+ protected Map<String,String> makeComplexMap(String... elements)
+ {
+ assertNotNull(elements);
+ Map<String, String> result = new HashMap<String, String>();
+ for (int i = 0; i < elements.length; i += 2)
+ result.put(elements[i], elements[i+1] + '.' + elements[i]);
+ return result;
+ }
+
+ public static Test suite()
+ {
+ return new TestSuite(ExportAllUnitTestCase.class);
+ }
+
+ public ExportAllUnitTestCase(String name) throws Throwable
+ {
+ super(name);
+ }
+}
More information about the jboss-cvs-commits
mailing list