This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-io.git


The following commit(s) were added to refs/heads/master by this push:
     new 3a67213  Add constructor accepting collection of file alteration 
observers (#236)
3a67213 is described below

commit 3a67213d2e297a8cab9e18860e344de51931f268
Author: nstdspace <maksim.rotm...@gmail.com>
AuthorDate: Sat May 22 14:28:20 2021 +0200

    Add constructor accepting collection of file alteration observers (#236)
    
    * Add constructor accepting collection of file alteration observers
    
    * Add missing whitespace
    
    * Use optionals for null-safe implementation
    
    * Add unit-tests for collection constructor
    
    * Add missing param descriptions
    
    Co-authored-by: Rotmann, Maksim <maksim.rotm...@soptim.de>
---
 .../commons/io/monitor/FileAlterationMonitor.java  | 18 ++++++++++++++++
 .../io/monitor/FileAlterationMonitorTestCase.java  | 25 ++++++++++++++++++++++
 2 files changed, 43 insertions(+)

diff --git 
a/src/main/java/org/apache/commons/io/monitor/FileAlterationMonitor.java 
b/src/main/java/org/apache/commons/io/monitor/FileAlterationMonitor.java
index 48fceac..534ea8d 100644
--- a/src/main/java/org/apache/commons/io/monitor/FileAlterationMonitor.java
+++ b/src/main/java/org/apache/commons/io/monitor/FileAlterationMonitor.java
@@ -16,7 +16,10 @@
  */
 package org.apache.commons.io.monitor;
 
+import java.util.Collection;
+import java.util.Collections;
 import java.util.List;
+import java.util.Optional;
 import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.concurrent.ThreadFactory;
 
@@ -53,6 +56,21 @@ public final class FileAlterationMonitor implements Runnable 
{
     }
 
     /**
+     * Wrapper constructor for {@link #FileAlterationMonitor(long, 
FileAlterationObserver...)}.
+     * Constructs a monitor with the specified interval and collection of 
observers.
+     *
+     * @param interval The amount of time in milliseconds to wait between
+     * checks of the file system
+     * @param observers The collection of observers to add to the monitor
+     */
+    public FileAlterationMonitor(final long interval, final 
Collection<FileAlterationObserver> observers) {
+        this(interval, Optional.ofNullable(observers)
+                .orElse(Collections.emptyList())
+                .toArray(new FileAlterationObserver[0])
+        );
+    }
+
+    /**
      * Constructs a monitor with the specified interval and set of observers.
      *
      * @param interval The amount of time in milliseconds to wait between
diff --git 
a/src/test/java/org/apache/commons/io/monitor/FileAlterationMonitorTestCase.java
 
b/src/test/java/org/apache/commons/io/monitor/FileAlterationMonitorTestCase.java
index 15bdf6e..5167352 100644
--- 
a/src/test/java/org/apache/commons/io/monitor/FileAlterationMonitorTestCase.java
+++ 
b/src/test/java/org/apache/commons/io/monitor/FileAlterationMonitorTestCase.java
@@ -53,6 +53,31 @@ public class FileAlterationMonitorTestCase extends 
AbstractMonitorTestCase {
         assertEquals(10000, monitor.getInterval(), "Interval");
     }
 
+    @Test
+    public void testCollectionConstructorShouldDoNothingWithNullCollection() {
+        Collection<FileAlterationObserver> observers = null;
+        final FileAlterationMonitor monitor = new FileAlterationMonitor(0, 
observers);
+        assertFalse(monitor.getObservers().iterator().hasNext());
+    }
+
+    @Test
+    public void testCollectionConstructorShouldDoNothingWithNullObservers() {
+        Collection<FileAlterationObserver> observers = new ArrayList<>(5);
+        final FileAlterationMonitor monitor = new FileAlterationMonitor(0, 
observers);
+        assertFalse(monitor.getObservers().iterator().hasNext());
+    }
+
+    @Test
+    public void testCollectionConstructor() {
+        Collection<FileAlterationObserver> observers = new ArrayList<>();
+        FileAlterationObserver observer = new FileAlterationObserver("foo");
+        observers.add(observer);
+
+        FileAlterationMonitor monitor = new FileAlterationMonitor(0, 
observers);
+        Iterator<FileAlterationObserver> iterator = 
monitor.getObservers().iterator();
+        assertEquals(observer, iterator.next());
+    }
+
     /**
      * Test add/remove observers.
      */

Reply via email to