Version 1.3: bugfix, add shutdown for SyncTarget threads.

* SyncTarget now persists the remote timeline after pushing to it.
* Added SyncTarget.shutdown() to allow callers to signal the sync timer thread
  to stop.
* Fixed a bug where a SyncTarget was added instanciated times.
This commit is contained in:
Jonathan Bernard 2013-09-13 08:48:50 -05:00
parent 6e6d799dee
commit 68ce5bb272
10 changed files with 20 additions and 7 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,5 +1,5 @@
#Fri, 09 Aug 2013 11:36:19 -0500 #Fri, 13 Sep 2013 08:25:17 -0500
name=timestamper-lib name=timestamper-lib
version=1.2 version=1.3
lib.local=true lib.local=true
build.number=1 build.number=10

Binary file not shown.

Binary file not shown.

View File

@ -153,7 +153,7 @@ public class JDBLabsWebTimelineSource extends TimelineSource {
requestContentType = JSON requestContentType = JSON
body = entryBody body = entryBody
response.success = { entryHashes.put(fullHash(entry), entry.id) } response.success = { entryHashes.put(fullHash(entry), entry.id ?: 0) }
} }
} }
} }

View File

@ -91,11 +91,19 @@ public class SyncTarget {
remoteTimeline.addAll(diffFromLocal); remoteTimeline.addAll(diffFromLocal);
syncPerformed = true; syncPerformed = true;
} }
// try to persist the updated remote timeline
SyncTarget.this.source.persist(remoteTimeline);
} }
return syncPerformed; return syncPerformed;
} }
public void shutdown() {
syncTimer.cancel();
syncTimer.purge();
}
public String getName() { return name; } public String getName() { return name; }
public TimelineSource getSource() { return source; } public TimelineSource getSource() { return source; }

View File

@ -123,9 +123,6 @@ public class TimelineProperties {
timeline = timelineSource.read(); timeline = timelineSource.read();
// search keys for remote timeline entries // search keys for remote timeline entries
// TODO: this code will add a new sync object for every remote target
// property, regardless of whether the SyncTarget for that remote URI
// already exists
for (Object keyObj : config.keySet()) { for (Object keyObj : config.keySet()) {
if (!(keyObj instanceof String)) continue; if (!(keyObj instanceof String)) continue;
@ -138,6 +135,14 @@ public class TimelineProperties {
if (!m.matches()) continue; if (!m.matches()) continue;
stName = m.group(1); stName = m.group(1);
// skip if we have already setup this remote sync
boolean stExists = false;
for (SyncTarget target : syncTargets)
if (target.getName().equals(stName))
stExists = true;
if (stExists) continue;
remoteBase = REMOTE_TIMELINE_BASE + stName; remoteBase = REMOTE_TIMELINE_BASE + stName;
strURI = (String) config.getProperty(remoteBase + ".uri", ""); strURI = (String) config.getProperty(remoteBase + ".uri", "");