You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by gn...@apache.org on 2009/08/14 09:08:26 UTC

svn commit: r804095 - in /felix/trunk/fileinstall/src/main/java/org/apache/felix/fileinstall: DirectoryWatcher.java FileInstall.java

Author: gnodet
Date: Fri Aug 14 07:08:26 2009
New Revision: 804095

URL: http://svn.apache.org/viewvc?rev=804095&view=rev
Log:
FELIX-1475: Add a file filter for a given watched directory

Modified:
    felix/trunk/fileinstall/src/main/java/org/apache/felix/fileinstall/DirectoryWatcher.java
    felix/trunk/fileinstall/src/main/java/org/apache/felix/fileinstall/FileInstall.java

Modified: felix/trunk/fileinstall/src/main/java/org/apache/felix/fileinstall/DirectoryWatcher.java
URL: http://svn.apache.org/viewvc/felix/trunk/fileinstall/src/main/java/org/apache/felix/fileinstall/DirectoryWatcher.java?rev=804095&r1=804094&r2=804095&view=diff
==============================================================================
--- felix/trunk/fileinstall/src/main/java/org/apache/felix/fileinstall/DirectoryWatcher.java (original)
+++ felix/trunk/fileinstall/src/main/java/org/apache/felix/fileinstall/DirectoryWatcher.java Fri Aug 14 07:08:26 2009
@@ -57,11 +57,13 @@
     public final static String POLL = "felix.fileinstall.poll";
     public final static String DIR = "felix.fileinstall.dir";
     public final static String DEBUG = "felix.fileinstall.debug";
+    public final static String FILTER = "felix.fileinstall.filter";
     public final static String START_NEW_BUNDLES =
         "felix.fileinstall.bundles.new.start";
     File watchedDirectory;
     long poll = 2000;
     long debug;
+    String filter;
     boolean startBundles = true; // by default, we start bundles.
     BundleContext context;
     boolean reported;
@@ -97,6 +99,8 @@
         {
             startBundles = "true".equalsIgnoreCase((String)value);
         }
+
+        filter = (String) properties.get(FILTER);
     }
 
     /**
@@ -109,16 +113,32 @@
         log("{" + POLL + " (ms) = " + poll + ", "
                 + DIR + " = " + watchedDirectory.getAbsolutePath() + ", "
                 + DEBUG + " = " + debug + ", "
+                + FILTER + " = " + filter + ", "
                 + START_NEW_BUNDLES + " = " + startBundles + "}", null);
         initializeCurrentManagedBundles();
         Map currentManagedConfigs = new HashMap(); // location -> Long(time)
+
+        FilenameFilter flt;
+        if (filter != null)
+        {
+            flt = new FilenameFilter()
+            {
+                public boolean accept(File dir, String name) {
+                    return name.matches(filter);
+                }
+            };
+        }
+        else
+        {
+            flt = null;
+        }
         while (!interrupted())
         {
             try
             {
                 Map/* <String, Jar> */ installed = new HashMap();
                 Set/* <String> */ configs = new HashSet();
-                traverse(installed, configs, watchedDirectory);
+                traverse(installed, configs, watchedDirectory, flt);
                 doInstalled(installed);
                 doConfigs(currentManagedConfigs, configs);
                 Thread.sleep(poll);
@@ -464,14 +484,16 @@
      *            Returns the abspath -> file for found configurations
      * @param jardir
      *            The directory to traverse
+     * @param filter
+     *            A filter for file names
      */
-    void traverse(Map/* <String, Jar> */ jars, Set configs, File jardir)
+    void traverse(Map/* <String, Jar> */ jars, Set configs, File jardir, FilenameFilter filter)
     {
-        String list[] = jardir.list();
+        String list[] = jardir.list(filter);
         if (list == null)
         {
             prepareWatchedDir(jardir);
-            list = jardir.list();
+            list = jardir.list(filter);
         }
         for (int i = 0; (list != null) && (i < list.length); i++)
         {

Modified: felix/trunk/fileinstall/src/main/java/org/apache/felix/fileinstall/FileInstall.java
URL: http://svn.apache.org/viewvc/felix/trunk/fileinstall/src/main/java/org/apache/felix/fileinstall/FileInstall.java?rev=804095&r1=804094&r2=804095&view=diff
==============================================================================
--- felix/trunk/fileinstall/src/main/java/org/apache/felix/fileinstall/FileInstall.java (original)
+++ felix/trunk/fileinstall/src/main/java/org/apache/felix/fileinstall/FileInstall.java Fri Aug 14 07:08:26 2009
@@ -58,6 +58,7 @@
         set(ht, DirectoryWatcher.POLL);
         set(ht, DirectoryWatcher.DIR);
         set(ht, DirectoryWatcher.DEBUG);
+        set(ht, DirectoryWatcher.FILTER);
         set(ht, DirectoryWatcher.START_NEW_BUNDLES);
         updated("initial", ht);
     }