[jboss-cvs] JBossAS SVN: r98006 - in projects/jboss-cl/branches/vfs3-int/classloading-vfs/src: test/java/org/jboss/test/classloading/vfs/metadata/test and 1 other directory.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri Dec 18 21:05:31 EST 2009
Author: johnbailey
Date: 2009-12-18 21:05:30 -0500 (Fri, 18 Dec 2009)
New Revision: 98006
Modified:
projects/jboss-cl/branches/vfs3-int/classloading-vfs/src/main/java/org/jboss/classloading/spi/vfs/policy/VFSClassLoaderPolicy.java
projects/jboss-cl/branches/vfs3-int/classloading-vfs/src/test/java/org/jboss/test/classloading/vfs/metadata/test/GeneratedClassesUnitTestCase.java
Log:
Further VFS3 integration
Modified: projects/jboss-cl/branches/vfs3-int/classloading-vfs/src/main/java/org/jboss/classloading/spi/vfs/policy/VFSClassLoaderPolicy.java
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloading-vfs/src/main/java/org/jboss/classloading/spi/vfs/policy/VFSClassLoaderPolicy.java 2009-12-19 01:35:52 UTC (rev 98005)
+++ projects/jboss-cl/branches/vfs3-int/classloading-vfs/src/main/java/org/jboss/classloading/spi/vfs/policy/VFSClassLoaderPolicy.java 2009-12-19 02:05:30 UTC (rev 98006)
@@ -49,6 +49,7 @@
import org.jboss.util.collection.SoftValueHashMap;
import org.jboss.vfs.VFSUtils;
import org.jboss.vfs.VirtualFile;
+import org.jboss.vfs.util.Automounter;
/**
* VFSClassLoaderPolicy.
@@ -521,6 +522,7 @@
{
try
{
+ ensureMounted(root);
VirtualFile child = root.getChild(name);
if (child != null)
urls.add(child.toURL());
@@ -576,6 +578,7 @@
{
try
{
+ ensureMounted(root);
VirtualFile file = root.getChild(path);
if (file.exists())
{
@@ -649,7 +652,7 @@
try
{
VirtualFile root = findRoot(path);
- URL codeSourceURL = isUseRealURL() ? VFSUtils.getPhysicalURL(root) : root.toURL();
+ URL codeSourceURL = root.toURL();
if (log.isTraceEnabled())
log.trace("getProtectionDomain:className="+ className + " path="+ path + " codeSourceURL=" + codeSourceURL);
@@ -688,6 +691,17 @@
}
return false;
}
+
+ /**
+ * Temporary hack to ensure the requested root is mounted. This should be moved to any clients creating this class directly.
+ *
+ * @param root
+ * @throws IOException
+ */
+ private void ensureMounted(VirtualFile root) throws IOException
+ {
+ Automounter.mount(root);
+ }
/**
* VirtualFileInfo. */
Modified: projects/jboss-cl/branches/vfs3-int/classloading-vfs/src/test/java/org/jboss/test/classloading/vfs/metadata/test/GeneratedClassesUnitTestCase.java
===================================================================
--- projects/jboss-cl/branches/vfs3-int/classloading-vfs/src/test/java/org/jboss/test/classloading/vfs/metadata/test/GeneratedClassesUnitTestCase.java 2009-12-19 01:35:52 UTC (rev 98005)
+++ projects/jboss-cl/branches/vfs3-int/classloading-vfs/src/test/java/org/jboss/test/classloading/vfs/metadata/test/GeneratedClassesUnitTestCase.java 2009-12-19 02:05:30 UTC (rev 98006)
@@ -22,9 +22,10 @@
package org.jboss.test.classloading.vfs.metadata.test;
import java.io.ByteArrayOutputStream;
+import java.io.Closeable;
import java.io.IOException;
import java.io.InputStream;
-import java.net.URL;
+import java.util.concurrent.Executors;
import junit.framework.Test;
@@ -38,9 +39,10 @@
import org.jboss.test.classloading.vfs.metadata.support.a.A;
import org.jboss.test.classloading.vfs.metadata.support.b.B;
import org.jboss.util.id.GUID;
-import org.jboss.vfs.MemoryFileFactory;
+import org.jboss.vfs.TempFileProvider;
import org.jboss.vfs.VFS;
-import org.jboss.vfs.plugins.context.memory.MemoryContextFactory;
+import org.jboss.vfs.VFSUtils;
+import org.jboss.vfs.VirtualFile;
/**
* DomainUnitTestCase.
@@ -53,11 +55,10 @@
final static GeneratedClassInfo NEW_PACKAGE = new GeneratedClassInfo("newpackage.GeneratedClass");
final static GeneratedClassInfo OTHER_PACKAGE = new GeneratedClassInfo("otherpackage.GeneratedClass");
final static GeneratedClassInfo EXISTING_PACKAGE = new GeneratedClassInfo("org.jboss.test.classloading.vfs.metadata.support.a.GeneratedClass");
- static
- {
- VFS.init();
- }
+ private Closeable tempDirectoryHandle;
+ private VirtualFile tempDirectory;
+
public static Test suite()
{
return suite(GeneratedClassesUnitTestCase.class);
@@ -67,6 +68,11 @@
{
super(name);
}
+
+ protected void tearDown() throws Exception
+ {
+ VFSUtils.safeClose(tempDirectoryHandle);
+ }
public void testImportAllGenerateClassInExistingPackage() throws Exception
{
@@ -86,11 +92,11 @@
private void runImportAllGenerateClass(GeneratedClassInfo info, boolean expectSuccess) throws Exception
{
ClassLoadingMetaDataFactory factory = ClassLoadingMetaDataFactory.getInstance();
- String dynamicClassRoot = getDynamicClassRoot();
+ VirtualFile dynamicClassRoot = getDynamicClassRoot();
VFSClassLoaderFactory a = new VFSClassLoaderFactory("a");
a.setImportAll(true);
a.getRoots().add(getRoot(A.class));
- a.getRoots().add(dynamicClassRoot);
+ a.getRoots().add(dynamicClassRoot.toURL().toString());
a.getCapabilities().addCapability(factory.createPackage(A.class.getPackage().getName()));
KernelDeployment depA = install(a);
@@ -138,12 +144,12 @@
}
}
- private Class<?> generateClass(ClassLoader loader, String dynamicClassRoot, GeneratedClassInfo info) throws Exception
+ private Class<?> generateClass(ClassLoader loader, VirtualFile dynamicClassRoot, GeneratedClassInfo info) throws Exception
{
- URL outputURL = new URL(dynamicClassRoot + "/" + info.getResourceName());
- MemoryContextFactory factory = MemoryContextFactory.getInstance();
- factory.putFile(outputURL, info.getClassBytes());
+ VirtualFile output = dynamicClassRoot.getChild(info.getResourceName());
+ VFSUtils.writeFile(output, info.getClassBytes());
+
if (loader instanceof RealClassLoader)
{
((RealClassLoader)loader).clearBlackList(info.getResourceName());
@@ -151,13 +157,16 @@
return loader.loadClass(info.getClassname());
}
- private String getDynamicClassRoot() throws Exception
+ private VirtualFile getDynamicClassRoot() throws Exception
{
- URL dynamicClassRoot = new URL("vfsmemory", GUID.asString(), "");
- MemoryFileFactory.createRoot(dynamicClassRoot).getRoot();
- return dynamicClassRoot.toString();
+ if(tempDirectory == null)
+ {
+ tempDirectory = VFS.getChild("/" + GUID.asString());
+ tempDirectoryHandle = VFS.mountTemp(tempDirectory, TempFileProvider.create("test", Executors.newScheduledThreadPool(2)));
+ }
+ return tempDirectory;
}
-
+
private static class GeneratedClassInfo
{
String classname;
More information about the jboss-cvs-commits
mailing list