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);
}