Skip to content

Commit

Permalink
ResourceStore: update to proposal GSIP-136
Browse files Browse the repository at this point in the history
  • Loading branch information
NielsCharlier committed Feb 4, 2016
1 parent 8a1ccdd commit 7746739
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 33 deletions.
Expand Up @@ -20,7 +20,7 @@ public interface ResourceNotificationDispatcher {
* @param listener the resource listener * @param listener the resource listener
* @return true iff successful * @return true iff successful
*/ */
public void addListener(Resource resource, ResourceListener listener); public void addListener(String resource, ResourceListener listener);


/** /**
* Remove resource listener from this watcher. * Remove resource listener from this watcher.
Expand All @@ -29,7 +29,7 @@ public interface ResourceNotificationDispatcher {
* @param listener the resource listener * @param listener the resource listener
* @return true iff successful * @return true iff successful
*/ */
public boolean removeListener(Resource resource, ResourceListener listener); public boolean removeListener(String resource, ResourceListener listener);


/** /**
* Send notification. * Send notification.
Expand Down
Expand Up @@ -27,18 +27,18 @@ public class SimpleResourceNotificationDispatcher implements ResourceNotificatio
private Map<String, List<ResourceListener>> handlers = new HashMap<String, List<ResourceListener>>(); private Map<String, List<ResourceListener>> handlers = new HashMap<String, List<ResourceListener>>();


@Override @Override
public synchronized void addListener(Resource resource, ResourceListener listener) { public synchronized void addListener(String resource, ResourceListener listener) {
List<ResourceListener> listeners = handlers.get(resource.path()); List<ResourceListener> listeners = handlers.get(resource);
if (listeners == null) { if (listeners == null) {
listeners = new ArrayList<ResourceListener>(); listeners = new ArrayList<ResourceListener>();
handlers.put(resource.path(), listeners); handlers.put(resource, listeners);
} }
listeners.add(listener); listeners.add(listener);
} }


@Override @Override
public synchronized boolean removeListener(Resource resource, ResourceListener listener) { public synchronized boolean removeListener(String resource, ResourceListener listener) {
List<ResourceListener> listeners = handlers.get(resource.path()); List<ResourceListener> listeners = handlers.get(resource);
if (listeners != null) { if (listeners != null) {
return listeners.remove(listener); return listeners.remove(listener);
} }
Expand Down
Expand Up @@ -79,12 +79,12 @@ public void testDeleteNotification() {
chkFileC1 = new CheckingResourceListener(Kind.ENTRY_DELETE), chkFileC1 = new CheckingResourceListener(Kind.ENTRY_DELETE),
chkFileC2 = new CheckingResourceListener(Kind.ENTRY_DELETE); chkFileC2 = new CheckingResourceListener(Kind.ENTRY_DELETE);


watcher.addListener(res, chkDirA); watcher.addListener(res.path(), chkDirA);
watcher.addListener(res.get("FileA1"), chkFileA1); watcher.addListener(res.get("FileA1").path(), chkFileA1);
watcher.addListener(res.get("FileA2"), chkFileA2); watcher.addListener(res.get("FileA2").path(), chkFileA2);
watcher.addListener(res.get("DirC"), chkDirC); watcher.addListener(res.get("DirC").path(), chkDirC);
watcher.addListener(res.get("DirC/FileC1"), chkFileC1); watcher.addListener(res.get("DirC/FileC1").path(), chkFileC1);
watcher.addListener(res.get("DirC/FileC2"), chkFileC2); watcher.addListener(res.get("DirC/FileC2").path(), chkFileC2);


List<Event> events = SimpleResourceNotificationDispatcher.createEvents(res, Kind.ENTRY_DELETE); List<Event> events = SimpleResourceNotificationDispatcher.createEvents(res, Kind.ENTRY_DELETE);
watcher.changed(new ResourceNotification("DirA", Kind.ENTRY_DELETE, System.currentTimeMillis(), events)); watcher.changed(new ResourceNotification("DirA", Kind.ENTRY_DELETE, System.currentTimeMillis(), events));
Expand All @@ -98,12 +98,12 @@ public void testDeleteNotification() {
assertTrue(chkFileC2.isChecked()); assertTrue(chkFileC2.isChecked());


//remove listeners //remove listeners
assertTrue(watcher.removeListener(res, chkDirA)); assertTrue(watcher.removeListener(res.path(), chkDirA));
assertTrue(watcher.removeListener(res.get("FileA1"), chkFileA1)); assertTrue(watcher.removeListener(res.get("FileA1").path(), chkFileA1));
assertTrue(watcher.removeListener(res.get("FileA2"), chkFileA2)); assertTrue(watcher.removeListener(res.get("FileA2").path(), chkFileA2));
assertTrue(watcher.removeListener(res.get("DirC"), chkDirC)); assertTrue(watcher.removeListener(res.get("DirC").path(), chkDirC));
assertTrue(watcher.removeListener(res.get("DirC/FileC1"), chkFileC1)); assertTrue(watcher.removeListener(res.get("DirC/FileC1").path(), chkFileC1));
assertTrue(watcher.removeListener(res.get("DirC/FileC2"), chkFileC2)); assertTrue(watcher.removeListener(res.get("DirC/FileC2").path(), chkFileC2));


} }


Expand All @@ -115,9 +115,9 @@ public void testModifyNotification() {
chkDirC = new CheckingResourceListener(Kind.ENTRY_MODIFY), chkDirC = new CheckingResourceListener(Kind.ENTRY_MODIFY),
chkFileC1 = new CheckingResourceListener(Kind.ENTRY_MODIFY); chkFileC1 = new CheckingResourceListener(Kind.ENTRY_MODIFY);


watcher.addListener(res, chkFileC1); watcher.addListener(res.path(), chkFileC1);
watcher.addListener(store.get("DirA/DirC"), chkDirC); watcher.addListener(store.get("DirA/DirC").path(), chkDirC);
watcher.addListener(store.get("DirA"), chkDirA); watcher.addListener(store.get("DirA").path(), chkDirA);


List<Event> events = SimpleResourceNotificationDispatcher.createEvents(res, Kind.ENTRY_MODIFY); List<Event> events = SimpleResourceNotificationDispatcher.createEvents(res, Kind.ENTRY_MODIFY);
watcher.changed(new ResourceNotification("DirA/DirC/FileC1", Kind.ENTRY_MODIFY, System.currentTimeMillis(), events)); watcher.changed(new ResourceNotification("DirA/DirC/FileC1", Kind.ENTRY_MODIFY, System.currentTimeMillis(), events));
Expand All @@ -128,9 +128,9 @@ public void testModifyNotification() {
assertTrue(chkFileC1.isChecked()); assertTrue(chkFileC1.isChecked());


//remove listeners //remove listeners
assertTrue(watcher.removeListener(res, chkFileC1)); assertTrue(watcher.removeListener(res.path(), chkFileC1));
assertTrue(watcher.removeListener(store.get("DirA/DirC"), chkDirC)); assertTrue(watcher.removeListener(store.get("DirA/DirC").path(), chkDirC));
assertTrue(watcher.removeListener(store.get("DirA"), chkDirA)); assertTrue(watcher.removeListener(store.get("DirA").path(), chkDirA));


} }


Expand All @@ -143,10 +143,10 @@ public void testCreateNotification() {
chkDirD = new CheckingResourceListener(Kind.ENTRY_CREATE), chkDirD = new CheckingResourceListener(Kind.ENTRY_CREATE),
chkFileQ = new CheckingResourceListener(Kind.ENTRY_CREATE); chkFileQ = new CheckingResourceListener(Kind.ENTRY_CREATE);


watcher.addListener(res, chkFileQ); watcher.addListener(res.path(), chkFileQ);
watcher.addListener(store.get("DirA/DirC/DirD"), chkDirD); watcher.addListener(store.get("DirA/DirC/DirD").path(), chkDirD);
watcher.addListener(store.get("DirA/DirC"), chkDirC); watcher.addListener(store.get("DirA/DirC").path(), chkDirC);
watcher.addListener(store.get("DirA"), chkDirA); watcher.addListener(store.get("DirA").path(), chkDirA);


List<Event> events = SimpleResourceNotificationDispatcher.createEvents(res, Kind.ENTRY_CREATE); List<Event> events = SimpleResourceNotificationDispatcher.createEvents(res, Kind.ENTRY_CREATE);
watcher.changed(new ResourceNotification("DirA/DirC/DirD/FileQ", Kind.ENTRY_CREATE, System.currentTimeMillis(), events)); watcher.changed(new ResourceNotification("DirA/DirC/DirD/FileQ", Kind.ENTRY_CREATE, System.currentTimeMillis(), events));
Expand All @@ -158,10 +158,10 @@ public void testCreateNotification() {
assertTrue(chkFileQ.isChecked()); assertTrue(chkFileQ.isChecked());


//remove listeners //remove listeners
assertTrue(watcher.removeListener(res, chkFileQ)); assertTrue(watcher.removeListener(res.path(), chkFileQ));
assertTrue(watcher.removeListener(store.get("DirA/DirC/DirD"), chkDirD)); assertTrue(watcher.removeListener(store.get("DirA/DirC/DirD").path(), chkDirD));
assertTrue(watcher.removeListener(store.get("DirA/DirC"), chkDirC)); assertTrue(watcher.removeListener(store.get("DirA/DirC").path(), chkDirC));
assertTrue(watcher.removeListener(store.get("DirA"), chkDirA)); assertTrue(watcher.removeListener(store.get("DirA").path(), chkDirA));


} }


Expand Down

0 comments on commit 7746739

Please sign in to comment.