[jboss-cvs] JBossAS SVN: r83788 - in projects/vfs/trunk/src: main/java/org/jboss/virtual/plugins/context and 8 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Mon Feb 2 18:10:16 EST 2009
Author: alesj
Date: 2009-02-02 18:10:16 -0500 (Mon, 02 Feb 2009)
New Revision: 83788
Modified:
projects/vfs/trunk/src/main/java/org/jboss/virtual/VFSUtils.java
projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/AbstractVirtualFileHandler.java
projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/DelegatingHandler.java
projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/file/FileHandler.java
projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/file/FileSystemContext.java
projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/jar/AbstractJarHandler.java
projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/memory/MemoryContextHandler.java
projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/temp/BasicTempInfo.java
projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/vfs/AssembledDirectoryHandler.java
projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/vfs/AssembledFileHandler.java
projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/vfs/ByteArrayHandler.java
projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/zip/ZipEntryHandler.java
projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/copy/AbstractCopyMechanism.java
projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/FileCleanupUnitTestCase.java
Log:
Change how temps handle url/uri --> pointing to original.
Modified: projects/vfs/trunk/src/main/java/org/jboss/virtual/VFSUtils.java
===================================================================
--- projects/vfs/trunk/src/main/java/org/jboss/virtual/VFSUtils.java 2009-02-02 18:48:22 UTC (rev 83787)
+++ projects/vfs/trunk/src/main/java/org/jboss/virtual/VFSUtils.java 2009-02-02 23:10:16 UTC (rev 83788)
@@ -122,6 +122,9 @@
/** The temp marker flag */
public static final String IS_TEMP_FILE = "IS_TEMP_FILE";
+ /** The old root string */
+ public static final String OLD_ROOT_STRING = "OLD_ROOT_STRING";
+
/**
* Stop cache.
*/
Modified: projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/AbstractVirtualFileHandler.java
===================================================================
--- projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/AbstractVirtualFileHandler.java 2009-02-02 18:48:22 UTC (rev 83787)
+++ projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/AbstractVirtualFileHandler.java 2009-02-02 23:10:16 UTC (rev 83788)
@@ -108,6 +108,9 @@
/** The cached last modified */
protected transient long cachedLastModified;
+ /** The vfsUrlCache */
+ private transient URL vfsUrlCached;
+
/**
* Create a new handler
*
@@ -270,6 +273,60 @@
public URL toVfsUrl() throws MalformedURLException, URISyntaxException
{
+ if (vfsUrlCached == null)
+ {
+ if (isTemporary())
+ {
+ StringBuffer buf = new StringBuffer(getProtocol()).append(':');
+
+ VFSContext context = getVFSContext();
+ String rootString = context.getOptions().get(VFSUtils.OLD_ROOT_STRING);
+ if (rootString == null)
+ {
+ URI rootURI = context.getRootURI();
+ rootString = VFSUtils.stripProtocol(rootURI);
+ }
+
+ buf.append(rootString);
+ String path = getPathName();
+ if (path != null && path.length() > 0)
+ {
+ if (buf.charAt(buf.length() - 1) != '/')
+ {
+ buf.append('/');
+ }
+ buf.append(getPathName());
+ }
+
+ vfsUrlCached = new URL(buf.toString());
+ }
+ else
+ {
+ vfsUrlCached = toInternalVfsUrl();
+ }
+ }
+ return vfsUrlCached;
+ }
+
+ /**
+ * Get the protocol.
+ *
+ * @return the protocol
+ */
+ protected String getProtocol()
+ {
+ throw new IllegalArgumentException("Unsupported impl.");
+ }
+
+ /**
+ * Get internal representation of vfs url.
+ *
+ * @return the vfs url
+ * @throws MalformedURLException for any error
+ * @throws URISyntaxException for any error
+ */
+ protected URL toInternalVfsUrl() throws MalformedURLException, URISyntaxException
+ {
return vfsUrl;
}
Modified: projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/DelegatingHandler.java
===================================================================
--- projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/DelegatingHandler.java 2009-02-02 18:48:22 UTC (rev 83787)
+++ projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/DelegatingHandler.java 2009-02-02 23:10:16 UTC (rev 83788)
@@ -89,6 +89,15 @@
return delegate;
}
+ protected String getProtocol()
+ {
+ if (delegate instanceof AbstractVirtualFileHandler)
+ {
+ return ((AbstractVirtualFileHandler)delegate).getProtocol();
+ }
+ return null;
+ }
+
/**
* Set the vfs url.
*
Modified: projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/file/FileHandler.java
===================================================================
--- projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/file/FileHandler.java 2009-02-02 18:48:22 UTC (rev 83787)
+++ projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/file/FileHandler.java 2009-02-02 23:10:16 UTC (rev 83788)
@@ -98,8 +98,13 @@
// ignore that url.openConnection.lastModified
}
- public URL toVfsUrl() throws MalformedURLException, URISyntaxException
+ protected String getProtocol()
{
+ return "vfsfile";
+ }
+
+ protected URL toInternalVfsUrl() throws MalformedURLException, URISyntaxException
+ {
if (getVfsUrl() == null)
{
setVfsUrl(new URL("vfs" + getURL()));
Modified: projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/file/FileSystemContext.java
===================================================================
--- projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/file/FileSystemContext.java 2009-02-02 18:48:22 UTC (rev 83787)
+++ projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/file/FileSystemContext.java 2009-02-02 23:10:16 UTC (rev 83788)
@@ -64,7 +64,7 @@
*/
public class FileSystemContext extends AbstractVFSContext
{
- private static final Logger log = Logger.getLogger(FileSystemContext.class);
+ protected static final Logger log = Logger.getLogger(FileSystemContext.class);
/** true if forcing fallback to vfsjar from default vfszip */
private static boolean forceVfsJar;
Modified: projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/jar/AbstractJarHandler.java
===================================================================
--- projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/jar/AbstractJarHandler.java 2009-02-02 18:48:22 UTC (rev 83787)
+++ projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/jar/AbstractJarHandler.java 2009-02-02 23:10:16 UTC (rev 83788)
@@ -80,6 +80,11 @@
this.entry = entry;
}
+ protected String getProtocol()
+ {
+ return "vfsjar";
+ }
+
/**
* Get the jar.
*
Modified: projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/memory/MemoryContextHandler.java
===================================================================
--- projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/memory/MemoryContextHandler.java 2009-02-02 18:48:22 UTC (rev 83787)
+++ projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/memory/MemoryContextHandler.java 2009-02-02 23:10:16 UTC (rev 83788)
@@ -63,6 +63,11 @@
}
}
+ protected String getProtocol()
+ {
+ return "vfsmemory";
+ }
+
protected synchronized void addChild(String name, MemoryContextHandler child)
{
if (entryMap == Collections.EMPTY_MAP)
Modified: projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/temp/BasicTempInfo.java
===================================================================
--- projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/temp/BasicTempInfo.java 2009-02-02 18:48:22 UTC (rev 83787)
+++ projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/temp/BasicTempInfo.java 2009-02-02 23:10:16 UTC (rev 83788)
@@ -72,4 +72,10 @@
{
this.handler = handler;
}
+
+ @Override
+ public String toString()
+ {
+ return getPath() + " / " + getTempFile().getName();
+ }
}
\ No newline at end of file
Modified: projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/vfs/AssembledDirectoryHandler.java
===================================================================
--- projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/vfs/AssembledDirectoryHandler.java 2009-02-02 18:48:22 UTC (rev 83787)
+++ projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/vfs/AssembledDirectoryHandler.java 2009-02-02 23:10:16 UTC (rev 83788)
@@ -63,6 +63,11 @@
setVfsUrl(new URL("vfs", context.getName(), -1, path, new AssembledUrlStreamHandler(context)));
}
+ protected String getProtocol()
+ {
+ return "vfs";
+ }
+
public VirtualFileHandler addChild(VirtualFileHandler handler)
{
if (handler.getClass().isAnnotationPresent(Assembled.class) == false)
Modified: projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/vfs/AssembledFileHandler.java
===================================================================
--- projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/vfs/AssembledFileHandler.java 2009-02-02 18:48:22 UTC (rev 83787)
+++ projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/vfs/AssembledFileHandler.java 2009-02-02 23:10:16 UTC (rev 83788)
@@ -50,6 +50,12 @@
setVfsUrl(new URL("vfs", context.getName(), -1, path, new AssembledUrlStreamHandler(context)));
}
+ @Override
+ protected String getProtocol()
+ {
+ return "vfs";
+ }
+
public List<VirtualFileHandler> getChildren(boolean ignoreErrors) throws IOException
{
throw new IOException("File cannot have children: " + this);
Modified: projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/vfs/ByteArrayHandler.java
===================================================================
--- projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/vfs/ByteArrayHandler.java 2009-02-02 18:48:22 UTC (rev 83787)
+++ projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/vfs/ByteArrayHandler.java 2009-02-02 23:10:16 UTC (rev 83788)
@@ -60,6 +60,11 @@
setVfsUrl(new URL("vfs", context.getName(), -1, path, new AssembledUrlStreamHandler(context)));
}
+ protected String getProtocol()
+ {
+ return "vfsmemory";
+ }
+
@Override
public URL toURL() throws MalformedURLException, URISyntaxException
{
Modified: projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/zip/ZipEntryHandler.java
===================================================================
--- projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/zip/ZipEntryHandler.java 2009-02-02 18:48:22 UTC (rev 83787)
+++ projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/zip/ZipEntryHandler.java 2009-02-02 23:10:16 UTC (rev 83788)
@@ -72,6 +72,11 @@
}
}
+ protected String getProtocol()
+ {
+ return "vfszip";
+ }
+
private synchronized void init()
{
if (initialized)
@@ -199,7 +204,7 @@
return ((ZipEntryContext) getLocalVFSContext());
}
- public URL toVfsUrl()
+ protected URL toInternalVfsUrl()
{
init();
return super.getVfsUrl();
Modified: projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/copy/AbstractCopyMechanism.java
===================================================================
--- projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/copy/AbstractCopyMechanism.java 2009-02-02 18:48:22 UTC (rev 83787)
+++ projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/copy/AbstractCopyMechanism.java 2009-02-02 23:10:16 UTC (rev 83788)
@@ -134,14 +134,18 @@
// unpack handler
File copy = copy(guidDir, handler);
+ String path = handler.getPathName();
VFSContext oldVFSContext = handler.getVFSContext();
// create new handler
- FileSystemContext fileSystemContext = new TempContext(copy, oldVFSContext, handler.getPathName());
+ FileSystemContext fileSystemContext = new TempContext(copy, oldVFSContext, path);
// merge old options
Map<String, String> newOptions = fileSystemContext.getOptions();
if (newOptions != null) // shouldn't be null, but we check anyway
+ {
newOptions.put(VFSUtils.IS_TEMP_FILE, Boolean.TRUE.toString());
+ newOptions.put(VFSUtils.OLD_ROOT_STRING, VFSUtils.stripProtocol(oldVFSContext.getRootURI()) + path);
+ }
Map<String, String> oldOptions = oldVFSContext.getOptions();
if (newOptions != null && oldOptions != null && oldOptions.isEmpty() == false)
newOptions.putAll(oldOptions);
@@ -152,7 +156,7 @@
fileSystemContext.setExceptionHandler(eh);
VirtualFileHandler newHandler = fileSystemContext.getRoot();
- oldVFSContext.addTempInfo(new BasicTempInfo(handler.getPathName(), copy, newHandler));
+ oldVFSContext.addTempInfo(new BasicTempInfo(path, copy, newHandler));
VirtualFileHandler parent = handler.getParent();
if (parent != null && replaceOldHandler(parent, handler, newHandler))
Modified: projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/FileCleanupUnitTestCase.java
===================================================================
--- projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/FileCleanupUnitTestCase.java 2009-02-02 18:48:22 UTC (rev 83787)
+++ projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/FileCleanupUnitTestCase.java 2009-02-02 23:10:16 UTC (rev 83788)
@@ -268,4 +268,28 @@
assertCopyMechanismFiles(0);
}
+
+ // TODO - move this test
+ public void testTempUrls() throws Exception
+ {
+ URL url = getResource("/vfs/test");
+ String urlString = VFSUtils.stripProtocol(VFSUtils.toURI(url));
+ VFS root = VFS.getVFS(url);
+
+ VirtualFile ear = root.getChild("level1.zip");
+ VirtualFile earCopy = VFSUtils.temp(ear);
+ assertEquals("vfszip:" + urlString + "level1.zip", earCopy.toURL().toExternalForm());
+
+ VirtualFile l2 = earCopy.getChild("level2.zip");
+ assertEquals("vfszip:" + urlString + "level1.zip/level2.zip", l2.toURL().toExternalForm());
+ VirtualFile l2sub = l2.getChild("test2.txt");
+ assertEquals("vfszip:" + urlString + "level1.zip/level2.zip/test2.txt", l2sub.toURL().toExternalForm());
+
+ VirtualFile l3 = l2.getChild("level3.zip");
+ assertEquals("vfszip:" + urlString + "level1.zip/level2.zip/level3.zip", l3.toURL().toExternalForm());
+ VirtualFile l3sub = l3.getChild("test3.txt");
+ assertEquals("vfszip:" + urlString + "level1.zip/level2.zip/level3.zip/test3.txt", l3sub.toURL().toExternalForm());
+
+ ear.cleanup();
+ }
}
\ No newline at end of file
More information about the jboss-cvs-commits
mailing list