[jboss-cvs] JBossAS SVN: r74567 - in projects/vfs/trunk/src: main/java/org/jboss/virtual/plugins/context and 1 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Sat Jun 14 14:08:31 EDT 2008
Author: alesj
Date: 2008-06-14 14:08:31 -0400 (Sat, 14 Jun 2008)
New Revision: 74567
Modified:
projects/vfs/trunk/src/main/java/org/jboss/virtual/VirtualFile.java
projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/AbstractVirtualFileHandler.java
projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/JARSerializationUnitTestCase.java
projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/JARVFSContextUnitTestCase.java
Log:
Additional tests.
Fix transient streams.
Modified: projects/vfs/trunk/src/main/java/org/jboss/virtual/VirtualFile.java
===================================================================
--- projects/vfs/trunk/src/main/java/org/jboss/virtual/VirtualFile.java 2008-06-14 16:36:59 UTC (rev 74566)
+++ projects/vfs/trunk/src/main/java/org/jboss/virtual/VirtualFile.java 2008-06-14 18:08:31 UTC (rev 74567)
@@ -33,11 +33,11 @@
import java.util.Set;
import java.util.concurrent.atomic.AtomicBoolean;
-import org.jboss.util.collection.WeakSet;
import org.jboss.virtual.plugins.vfs.helpers.FilterVirtualFileVisitor;
import org.jboss.virtual.plugins.vfs.helpers.MatchAllVirtualFileFilter;
import org.jboss.virtual.spi.VFSContext;
import org.jboss.virtual.spi.VirtualFileHandler;
+import org.jboss.util.collection.WeakSet;
/**
* A virtual file as seen by the user
@@ -54,10 +54,10 @@
private final VirtualFileHandler handler;
/** Whether we are closed */
- private AtomicBoolean closed = new AtomicBoolean(false);
+ private final AtomicBoolean closed = new AtomicBoolean(false);
/** The open streams */
- private transient final Set<InputStream> streams = Collections.synchronizedSet(new WeakSet());
+ private transient Set<InputStream> streams;
/**
* Create a new VirtualFile.
@@ -214,15 +214,36 @@
public InputStream openStream() throws IOException
{
InputStream result = getHandler().openStream();
+ checkStreams();
streams.add(result);
return result;
}
/**
+ * Check if streams set exist.
+ */
+ protected void checkStreams()
+ {
+ if (streams == null)
+ {
+ synchronized (closed)
+ {
+ // double null check, so that possible
+ // waiting threads don't override streams
+ if (streams == null)
+ streams = Collections.synchronizedSet(new WeakSet());
+ }
+ }
+ }
+
+ /**
* Close the streams
*/
public void closeStreams()
{
+ if (streams == null)
+ return;
+
// Close the streams
for (InputStream stream : streams)
{
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 2008-06-14 16:36:59 UTC (rev 74566)
+++ projects/vfs/trunk/src/main/java/org/jboss/virtual/plugins/context/AbstractVirtualFileHandler.java 2008-06-14 18:08:31 UTC (rev 74567)
@@ -422,9 +422,10 @@
if (current == null || current.isLeaf())
return null;
- if (PathTokenizer.isCurrentToken(tokens.get(i)) == false)
+ String token = tokens.get(i);
+ if (PathTokenizer.isCurrentToken(token) == false)
{
- if (PathTokenizer.isReverseToken(tokens.get(i)))
+ if (PathTokenizer.isReverseToken(token))
{
VirtualFileHandler parent = current.getParent();
if (parent == null) // TODO - still IOE or null?
@@ -435,7 +436,7 @@
else if (current instanceof StructuredVirtualFileHandler)
{
StructuredVirtualFileHandler structured = (StructuredVirtualFileHandler) current;
- current = structured.createChildHandler(tokens.get(i));
+ current = structured.createChildHandler(token);
}
else
{
Modified: projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/JARSerializationUnitTestCase.java
===================================================================
--- projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/JARSerializationUnitTestCase.java 2008-06-14 16:36:59 UTC (rev 74566)
+++ projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/JARSerializationUnitTestCase.java 2008-06-14 18:08:31 UTC (rev 74567)
@@ -202,6 +202,9 @@
testText(textThree);
textThree = two.findChild("level3.zip/test3.txt");
testText(textThree);
+
+ textThree = serializeDeserialize(textThree, VirtualFile.class);
+ testText(textThree);
}
protected void testText(VirtualFile file) throws Exception
Modified: projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/JARVFSContextUnitTestCase.java
===================================================================
--- projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/JARVFSContextUnitTestCase.java 2008-06-14 16:36:59 UTC (rev 74566)
+++ projects/vfs/trunk/src/test/java/org/jboss/test/virtual/test/JARVFSContextUnitTestCase.java 2008-06-14 18:08:31 UTC (rev 74567)
@@ -198,6 +198,10 @@
// test folder
testInnerEntryOverURL(urlString, "/complex.jar/subfolder", true);
testInnerEntryOverURL(urlString, "/complex.jar/subfolder/subsubfolder", true);
+ // 3 level zips
+ url = getResource("/vfs/test/level1.zip");
+ urlString = url.toExternalForm();
+ testInnerEntryOverURL(urlString, "/level2.zip/level3.zip/test3.txt", false);
}
protected void testInnerEntryOverURL(String urlString, String entry, boolean result) throws IOException
More information about the jboss-cvs-commits
mailing list