You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by fa...@apache.org on 2019/01/04 16:07:53 UTC

svn commit: r1850394 - in /poi/trunk/src: java/org/apache/poi/poifs/filesystem/FilteringDirectoryNode.java testcases/org/apache/poi/poifs/filesystem/TestFilteringDirectoryNode.java

Author: fanningpj
Date: Fri Jan  4 16:07:53 2019
New Revision: 1850394

URL: http://svn.apache.org/viewvc?rev=1850394&view=rev
Log:
throw IllegalArgumnetException if null directory specified

Modified:
    poi/trunk/src/java/org/apache/poi/poifs/filesystem/FilteringDirectoryNode.java
    poi/trunk/src/testcases/org/apache/poi/poifs/filesystem/TestFilteringDirectoryNode.java

Modified: poi/trunk/src/java/org/apache/poi/poifs/filesystem/FilteringDirectoryNode.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/poifs/filesystem/FilteringDirectoryNode.java?rev=1850394&r1=1850393&r2=1850394&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/poifs/filesystem/FilteringDirectoryNode.java (original)
+++ poi/trunk/src/java/org/apache/poi/poifs/filesystem/FilteringDirectoryNode.java Fri Jan  4 16:07:53 2019
@@ -59,8 +59,12 @@ public class FilteringDirectoryNode impl
     *  
     * @param directory The Directory to filter
     * @param excludes The Entries to exclude
+    * @throws IllegalArgumentException if directory is null
     */
    public FilteringDirectoryNode(DirectoryEntry directory, Collection<String> excludes) {
+      if (directory == null) {
+         throw new IllegalArgumentException("directory cannot be null");
+      }
       this.directory = directory;
       
       // Process the excludes

Modified: poi/trunk/src/testcases/org/apache/poi/poifs/filesystem/TestFilteringDirectoryNode.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/poifs/filesystem/TestFilteringDirectoryNode.java?rev=1850394&r1=1850393&r2=1850394&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/poifs/filesystem/TestFilteringDirectoryNode.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/poifs/filesystem/TestFilteringDirectoryNode.java Fri Jan  4 16:07:53 2019
@@ -25,148 +25,165 @@ import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 
-import junit.framework.TestCase;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.junit.Assert.*;
 
 /**
  * Class to test FilteringDirectoryNode functionality
  */
-public final class TestFilteringDirectoryNode extends TestCase {
-    private POIFSFileSystem fs;
-    private DirectoryEntry dirA;
-    private DirectoryEntry dirAA;
-    private DirectoryEntry dirB;
-    private DocumentEntry eRoot;
-    private DocumentEntry eA;
-    private DocumentEntry eAA;
-    
-    @Override
-    protected void setUp() throws Exception {
-       fs = new POIFSFileSystem();
-       dirA = fs.createDirectory("DirA");
-       dirB = fs.createDirectory("DirB");
-       dirAA = dirA.createDirectory("DirAA");
-       eRoot = fs.getRoot().createDocument("Root", new ByteArrayInputStream(new byte[] {}));
-       eA  = dirA.createDocument("NA", new ByteArrayInputStream(new byte[] {}));
-       eAA = dirAA.createDocument("NAA", new ByteArrayInputStream(new byte[] {}));
-    }
-    
-    public void testNoFiltering() throws Exception {
-       FilteringDirectoryNode d = new FilteringDirectoryNode(fs.getRoot(), new HashSet<>());
-       assertEquals(3, d.getEntryCount());
-       assertEquals(dirA.getName(), d.getEntry(dirA.getName()).getName());
-       
-       assertEquals(true, d.getEntry(dirA.getName()).isDirectoryEntry());
-       assertEquals(false, d.getEntry(dirA.getName()).isDocumentEntry());
-       
-       assertEquals(true, d.getEntry(dirB.getName()).isDirectoryEntry());
-       assertEquals(false, d.getEntry(dirB.getName()).isDocumentEntry());
-       
-       assertEquals(false, d.getEntry(eRoot.getName()).isDirectoryEntry());
-       assertEquals(true, d.getEntry(eRoot.getName()).isDocumentEntry());
-       
-       Iterator<Entry> i = d.getEntries();
-       assertEquals(dirA, i.next());
-       assertEquals(dirB, i.next());
-       assertEquals(eRoot, i.next());
-       assertEquals(null, i.next());
-    }
-    
-    public void testChildFiltering() throws Exception {
-       List<String> excl = Arrays.asList(new String[] {"NotThere","AlsoNotThere", eRoot.getName()});
-       FilteringDirectoryNode d = new FilteringDirectoryNode(fs.getRoot(), excl);
-       
-       assertEquals(2, d.getEntryCount());
-       assertEquals(true, d.hasEntry(dirA.getName()));
-       assertEquals(true, d.hasEntry(dirB.getName()));
-       assertEquals(false, d.hasEntry(eRoot.getName()));
-       
-       assertEquals(dirA, d.getEntry(dirA.getName()));
-       assertEquals(dirB, d.getEntry(dirB.getName()));
-       try {
-          d.getEntry(eRoot.getName());
-          fail("Should be filtered");
-       } catch(FileNotFoundException e) {}
-       
-       Iterator<Entry> i = d.getEntries();
-       assertEquals(dirA, i.next());
-       assertEquals(dirB, i.next());
-       assertEquals(null, i.next());
-       
-       
-       // Filter more
-       excl = Arrays.asList(new String[] {"NotThere","AlsoNotThere", eRoot.getName(), dirA.getName()});
-       d = new FilteringDirectoryNode(fs.getRoot(), excl);
-       
-       assertEquals(1, d.getEntryCount());
-       assertEquals(false, d.hasEntry(dirA.getName()));
-       assertEquals(true, d.hasEntry(dirB.getName()));
-       assertEquals(false, d.hasEntry(eRoot.getName()));
-       
-       try {
-          d.getEntry(dirA.getName());
-          fail("Should be filtered");
-       } catch(FileNotFoundException e) {}
-       assertEquals(dirB, d.getEntry(dirB.getName()));
-       try {
-          d.getEntry(eRoot.getName());
-          fail("Should be filtered");
-       } catch(FileNotFoundException e) {}
-       
-       i = d.getEntries();
-       assertEquals(dirB, i.next());
-       assertEquals(null, i.next());
-       
-       
-       // Filter everything
-       excl = Arrays.asList(new String[] {"NotThere", eRoot.getName(), dirA.getName(), dirB.getName()});
-       d = new FilteringDirectoryNode(fs.getRoot(), excl);
-       
-       assertEquals(0, d.getEntryCount());
-       assertEquals(false, d.hasEntry(dirA.getName()));
-       assertEquals(false, d.hasEntry(dirB.getName()));
-       assertEquals(false, d.hasEntry(eRoot.getName()));
-       
-       try {
-          d.getEntry(dirA.getName());
-          fail("Should be filtered");
-       } catch(FileNotFoundException e) {}
-       try {
-          d.getEntry(dirB.getName());
-          fail("Should be filtered");
-       } catch(FileNotFoundException e) {}
-       try {
-          d.getEntry(eRoot.getName());
-          fail("Should be filtered");
-       } catch(FileNotFoundException e) {}
-       
-       i = d.getEntries();
-       assertEquals(null, i.next());
-    }
-    
-    public void testNestedFiltering() throws Exception {
-       List<String> excl = Arrays.asList(new String[] {
-             dirA.getName()+"/"+"MadeUp",
-             dirA.getName()+"/"+eA.getName(),
-             dirA.getName()+"/"+dirAA.getName()+"/Test",
-             eRoot.getName()
-       });
-       FilteringDirectoryNode d = new FilteringDirectoryNode(fs.getRoot(), excl);
-       
-       // Check main
-       assertEquals(2, d.getEntryCount());
-       assertEquals(true, d.hasEntry(dirA.getName()));
-       assertEquals(true, d.hasEntry(dirB.getName()));
-       assertEquals(false, d.hasEntry(eRoot.getName()));
-       
-       // Check filtering down
-       assertEquals(true, d.getEntry(dirA.getName()) instanceof FilteringDirectoryNode);
-       assertEquals(false, d.getEntry(dirB.getName()) instanceof FilteringDirectoryNode);
-       
-       DirectoryEntry fdA = (DirectoryEntry)d.getEntry(dirA.getName()); 
-       assertEquals(false, fdA.hasEntry(eA.getName()));
-       assertEquals(true, fdA.hasEntry(dirAA.getName()));
-       
-       DirectoryEntry fdAA = (DirectoryEntry)fdA.getEntry(dirAA.getName()); 
-       assertEquals(true, fdAA.hasEntry(eAA.getName()));
-    }
-}
+public final class TestFilteringDirectoryNode {
+   private POIFSFileSystem fs;
+   private DirectoryEntry dirA;
+   private DirectoryEntry dirAA;
+   private DirectoryEntry dirB;
+   private DocumentEntry eRoot;
+   private DocumentEntry eA;
+   private DocumentEntry eAA;
+
+   @Before
+   public void setUp() throws Exception {
+      fs = new POIFSFileSystem();
+      dirA = fs.createDirectory("DirA");
+      dirB = fs.createDirectory("DirB");
+      dirAA = dirA.createDirectory("DirAA");
+      eRoot = fs.getRoot().createDocument("Root", new ByteArrayInputStream(new byte[]{}));
+      eA = dirA.createDocument("NA", new ByteArrayInputStream(new byte[]{}));
+      eAA = dirAA.createDocument("NAA", new ByteArrayInputStream(new byte[]{}));
+   }
+
+   @Test
+   public void testNoFiltering() throws Exception {
+      FilteringDirectoryNode d = new FilteringDirectoryNode(fs.getRoot(), new HashSet<>());
+      assertEquals(3, d.getEntryCount());
+      assertEquals(dirA.getName(), d.getEntry(dirA.getName()).getName());
+
+      assertEquals(true, d.getEntry(dirA.getName()).isDirectoryEntry());
+      assertEquals(false, d.getEntry(dirA.getName()).isDocumentEntry());
+
+      assertEquals(true, d.getEntry(dirB.getName()).isDirectoryEntry());
+      assertEquals(false, d.getEntry(dirB.getName()).isDocumentEntry());
+
+      assertEquals(false, d.getEntry(eRoot.getName()).isDirectoryEntry());
+      assertEquals(true, d.getEntry(eRoot.getName()).isDocumentEntry());
+
+      Iterator<Entry> i = d.getEntries();
+      assertEquals(dirA, i.next());
+      assertEquals(dirB, i.next());
+      assertEquals(eRoot, i.next());
+      assertEquals(null, i.next());
+   }
+
+   @Test
+   public void testChildFiltering() throws Exception {
+      List<String> excl = Arrays.asList(new String[]{"NotThere", "AlsoNotThere", eRoot.getName()});
+      FilteringDirectoryNode d = new FilteringDirectoryNode(fs.getRoot(), excl);
+
+      assertEquals(2, d.getEntryCount());
+      assertEquals(true, d.hasEntry(dirA.getName()));
+      assertEquals(true, d.hasEntry(dirB.getName()));
+      assertEquals(false, d.hasEntry(eRoot.getName()));
+
+      assertEquals(dirA, d.getEntry(dirA.getName()));
+      assertEquals(dirB, d.getEntry(dirB.getName()));
+      try {
+         d.getEntry(eRoot.getName());
+         fail("Should be filtered");
+      } catch (FileNotFoundException e) {
+      }
+
+      Iterator<Entry> i = d.getEntries();
+      assertEquals(dirA, i.next());
+      assertEquals(dirB, i.next());
+      assertEquals(null, i.next());
+
+
+      // Filter more
+      excl = Arrays.asList(new String[]{"NotThere", "AlsoNotThere", eRoot.getName(), dirA.getName()});
+      d = new FilteringDirectoryNode(fs.getRoot(), excl);
+
+      assertEquals(1, d.getEntryCount());
+      assertEquals(false, d.hasEntry(dirA.getName()));
+      assertEquals(true, d.hasEntry(dirB.getName()));
+      assertEquals(false, d.hasEntry(eRoot.getName()));
+
+      try {
+         d.getEntry(dirA.getName());
+         fail("Should be filtered");
+      } catch (FileNotFoundException e) {
+      }
+      assertEquals(dirB, d.getEntry(dirB.getName()));
+      try {
+         d.getEntry(eRoot.getName());
+         fail("Should be filtered");
+      } catch (FileNotFoundException e) {
+      }
+
+      i = d.getEntries();
+      assertEquals(dirB, i.next());
+      assertEquals(null, i.next());
+
+
+      // Filter everything
+      excl = Arrays.asList(new String[]{"NotThere", eRoot.getName(), dirA.getName(), dirB.getName()});
+      d = new FilteringDirectoryNode(fs.getRoot(), excl);
+
+      assertEquals(0, d.getEntryCount());
+      assertEquals(false, d.hasEntry(dirA.getName()));
+      assertEquals(false, d.hasEntry(dirB.getName()));
+      assertEquals(false, d.hasEntry(eRoot.getName()));
+
+      try {
+         d.getEntry(dirA.getName());
+         fail("Should be filtered");
+      } catch (FileNotFoundException e) {
+      }
+      try {
+         d.getEntry(dirB.getName());
+         fail("Should be filtered");
+      } catch (FileNotFoundException e) {
+      }
+      try {
+         d.getEntry(eRoot.getName());
+         fail("Should be filtered");
+      } catch (FileNotFoundException e) {
+      }
+
+      i = d.getEntries();
+      assertEquals(null, i.next());
+   }
+
+   @Test
+   public void testNestedFiltering() throws Exception {
+      List<String> excl = Arrays.asList(new String[]{
+              dirA.getName() + "/" + "MadeUp",
+              dirA.getName() + "/" + eA.getName(),
+              dirA.getName() + "/" + dirAA.getName() + "/Test",
+              eRoot.getName()
+      });
+      FilteringDirectoryNode d = new FilteringDirectoryNode(fs.getRoot(), excl);
+
+      // Check main
+      assertEquals(2, d.getEntryCount());
+      assertEquals(true, d.hasEntry(dirA.getName()));
+      assertEquals(true, d.hasEntry(dirB.getName()));
+      assertEquals(false, d.hasEntry(eRoot.getName()));
+
+      // Check filtering down
+      assertEquals(true, d.getEntry(dirA.getName()) instanceof FilteringDirectoryNode);
+      assertEquals(false, d.getEntry(dirB.getName()) instanceof FilteringDirectoryNode);
+
+      DirectoryEntry fdA = (DirectoryEntry) d.getEntry(dirA.getName());
+      assertEquals(false, fdA.hasEntry(eA.getName()));
+      assertEquals(true, fdA.hasEntry(dirAA.getName()));
+
+      DirectoryEntry fdAA = (DirectoryEntry) fdA.getEntry(dirAA.getName());
+      assertEquals(true, fdAA.hasEntry(eAA.getName()));
+   }
+
+   @Test(expected = IllegalArgumentException.class)
+   public void testNullDirectory() {
+      new FilteringDirectoryNode(null, null);
+   }
+}
\ No newline at end of file



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org