You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by pd...@apache.org on 2014/11/07 22:44:47 UTC

svn commit: r1637461 - in /felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/customdep: Activator.java PathDependency.java PathTracker.java

Author: pderop
Date: Fri Nov  7 21:44:47 2014
New Revision: 1637461

URL: http://svn.apache.org/r1637461
Log:
fixed bugs in this sample

Modified:
    felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/customdep/Activator.java
    felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/customdep/PathDependency.java
    felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/customdep/PathTracker.java

Modified: felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/customdep/Activator.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/customdep/Activator.java?rev=1637461&r1=1637460&r2=1637461&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/customdep/Activator.java (original)
+++ felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/customdep/Activator.java Fri Nov  7 21:44:47 2014
@@ -11,6 +11,6 @@ public class Activator extends Dependenc
         m.add(createComponent()
             .setImplementation(PathTracker.class)
             .add(createServiceDependency().setService(LogService.class).setRequired(true))
-            .add(new PathDependency("/tmp").setCallbacks("add", "change", "remove")));
+            .add(new PathDependency("/tmp").setCallbacks("add", "remove")));
     }
 }

Modified: felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/customdep/PathDependency.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/customdep/PathDependency.java?rev=1637461&r1=1637460&r2=1637461&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/customdep/PathDependency.java (original)
+++ felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/customdep/PathDependency.java Fri Nov  7 21:44:47 2014
@@ -4,6 +4,7 @@ import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.nio.file.StandardWatchEventKinds;
 import java.nio.file.WatchEvent;
+import java.nio.file.WatchEvent.Kind;
 import java.nio.file.WatchKey;
 import java.nio.file.WatchService;
 import java.util.Dictionary;
@@ -12,6 +13,7 @@ import java.util.List;
 import org.apache.felix.dm.context.AbstractDependency;
 import org.apache.felix.dm.context.DependencyContext;
 import org.apache.felix.dm.context.Event;
+import org.osgi.service.log.LogService;
 
 public class PathDependency extends AbstractDependency<PathDependency> implements Runnable {
     private final String m_path;
@@ -104,15 +106,28 @@ public class PathDependency extends Abst
 
         try {
             WatchService watcher = myDir.getFileSystem().newWatchService();
-            myDir.register(watcher, StandardWatchEventKinds.ENTRY_MODIFY);
-            WatchKey watckKey = watcher.take();
-            List<WatchEvent<?>> events = watckKey.pollEvents();
-
-            for (WatchEvent event : events) {                
-                add(new PathEvent(event.context().toString()));
+            myDir.register(watcher, StandardWatchEventKinds.ENTRY_CREATE, StandardWatchEventKinds.ENTRY_DELETE);
+            while (! Thread.currentThread().isInterrupted()) {
+				WatchKey watckKey = watcher.take();
+
+				List<WatchEvent<?>> events = watckKey.pollEvents();
+
+				for (WatchEvent event : events) {
+					final Kind<?> kind = event.kind();
+					if (StandardWatchEventKinds.OVERFLOW == kind) {
+						continue;
+					}
+					if (StandardWatchEventKinds.ENTRY_CREATE == kind) {
+						add(new PathEvent(event.context().toString()));
+					} else if (StandardWatchEventKinds.ENTRY_DELETE == kind) {
+						remove(new PathEvent(event.context().toString()));
+					}
+				}
+				
+				watckKey.reset();
             }
-        } catch (Exception e) {
-            System.out.println("Error: " + e.toString());
+        } catch (Throwable e) {
+            e.printStackTrace();
         }
     }
 }
\ No newline at end of file

Modified: felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/customdep/PathTracker.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/customdep/PathTracker.java?rev=1637461&r1=1637460&r2=1637461&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/customdep/PathTracker.java (original)
+++ felix/sandbox/pderop/dependencymanager-prototype/org.apache.felix.dependencymanager.samples/src/org/apache/felix/dependencymanager/samples/customdep/PathTracker.java Fri Nov  7 21:44:47 2014
@@ -8,4 +8,8 @@ public class PathTracker {
     void add(String path) {
         logService.log(LogService.LOG_INFO, "PathTracker.add: " + path);
     }
+    
+    void remove(String path) {
+        logService.log(LogService.LOG_INFO, "PathTracker.remove: " + path);
+    }
 }