[jboss-svn-commits] JBoss Common SVN: r4384 - in shrinkwrap/trunk/extension-vfs3/src: test/java/org/jboss/shrinkwrap/vfs3 and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed May 12 10:04:11 EDT 2010


Author: ALRubinger
Date: 2010-05-12 10:04:11 -0400 (Wed, 12 May 2010)
New Revision: 4384

Modified:
   shrinkwrap/trunk/extension-vfs3/src/main/java/org/jboss/shrinkwrap/vfs3/ArchiveFileSystem.java
   shrinkwrap/trunk/extension-vfs3/src/test/java/org/jboss/shrinkwrap/vfs3/ArchiveFileSystemUnitTestCase.java
Log:
[SHRINKWRAP-169] Fix ArchiveFileSystem.isDirectory to return false if the path in question does not exist

Modified: shrinkwrap/trunk/extension-vfs3/src/main/java/org/jboss/shrinkwrap/vfs3/ArchiveFileSystem.java
===================================================================
--- shrinkwrap/trunk/extension-vfs3/src/main/java/org/jboss/shrinkwrap/vfs3/ArchiveFileSystem.java	2010-05-11 21:41:05 UTC (rev 4383)
+++ shrinkwrap/trunk/extension-vfs3/src/main/java/org/jboss/shrinkwrap/vfs3/ArchiveFileSystem.java	2010-05-12 14:04:11 UTC (rev 4384)
@@ -209,8 +209,17 @@
    /** {@inheritDoc} */
    public boolean isDirectory(VirtualFile mountPoint, VirtualFile target)
    {
-      final Node node = getNode(mountPoint, target);
-      return node == null || node.getAsset() == null;
+      // Only if this exists can it be a directory
+      if (this.exists(mountPoint, target))
+      {
+         final Node node = getNode(mountPoint, target);
+         final Asset asset = node.getAsset();
+         // Null assets under a node indicate a directory
+         return asset == null;
+      }
+      // Doesn't exist, return false
+      return false;
+
    }
 
    /** {@inheritDoc} */

Modified: shrinkwrap/trunk/extension-vfs3/src/test/java/org/jboss/shrinkwrap/vfs3/ArchiveFileSystemUnitTestCase.java
===================================================================
--- shrinkwrap/trunk/extension-vfs3/src/test/java/org/jboss/shrinkwrap/vfs3/ArchiveFileSystemUnitTestCase.java	2010-05-11 21:41:05 UTC (rev 4383)
+++ shrinkwrap/trunk/extension-vfs3/src/test/java/org/jboss/shrinkwrap/vfs3/ArchiveFileSystemUnitTestCase.java	2010-05-12 14:04:11 UTC (rev 4384)
@@ -115,13 +115,10 @@
    @Test
    public void testArchiveFileSystem() throws Exception
    {
+      // Create and mount an archive
       final JavaArchive archive = ShrinkWrap.create(NAME_ARCHIVE, JavaArchive.class);
+      final VirtualFile virtualFile = this.createAndMountArchive(archive);
 
-      // Back VFS by a temp directory
-      final TempDir tempDir = tempFileProvider.createTempDir(archive.getName());
-      VirtualFile virtualFile = VFS.getChild(UUID.randomUUID().toString()).getChild(archive.getName());
-      vfsHandles.add(VFS.mount(virtualFile, new ArchiveFileSystem(archive, tempDir)));
-
       // Add to the archive
       archive.addResource("META-INF/test", "META-INF/test");
       archive.addResource("test", "test");
@@ -130,8 +127,43 @@
       // Perform assertions
       Assert.assertTrue("Could not read file", virtualFile.getChild("test").isFile());
       Assert.assertTrue("Could not read directory", virtualFile.getChild("META-INF").isDirectory());
+      Assert.assertTrue("Could not read directory", virtualFile.getChild("META-INF").exists());
       Assert.assertTrue("Could not read file in a directory", virtualFile.getChild("META-INF").getChild("test")
             .isFile());
 
    }
+
+   /**
+    * Ensures that {@link VirtualFile#isDirectory()} returns false for files 
+    * that do not exist
+    */
+   @Test
+   public void nonExistentFilesAreNotDirectory() throws Exception
+   {
+      // Create and mount an archive
+      final JavaArchive archive = ShrinkWrap.create(NAME_ARCHIVE, JavaArchive.class);
+      final VirtualFile virtualFile = this.createAndMountArchive(archive);
+
+      // Control
+      final VirtualFile doesNotExistFile = virtualFile.getChild("doesnotexist");
+      Assert
+            .assertFalse("Test should indicate that this file does not exist (control test)", doesNotExistFile.exists());
+
+      // Ensure file that doesn't exist does not report as directory
+      Assert.assertFalse("File that doesn't exist should not report as a directory", doesNotExistFile.isDirectory());
+   }
+
+   //-------------------------------------------------------------------------------------||
+   // Internal Helper Methods ------------------------------------------------------------||
+   //-------------------------------------------------------------------------------------||
+
+   private VirtualFile createAndMountArchive(final Archive<?> archive) throws Exception
+   {
+      assert archive != null : "Archive was null";
+      // Back VFS by a temp directory
+      final TempDir tempDir = tempFileProvider.createTempDir(archive.getName());
+      VirtualFile virtualFile = VFS.getChild(UUID.randomUUID().toString()).getChild(archive.getName());
+      vfsHandles.add(VFS.mount(virtualFile, new ArchiveFileSystem(archive, tempDir)));
+      return virtualFile;
+   }
 }



More information about the jboss-svn-commits mailing list