private FreenetURI currentUri;
/** The latest known edition. */
- private long latestEdition;
+ private long latestEdition = SonePlugin.getLatestEdition();
/** The current latest known version. */
- private Version currentLatestVersion = SonePlugin.VERSION;
+ private Version currentLatestVersion;
+ private final Version currentRunningVersion;
/** The release date of the latest version. */
private long latestVersionDate;
* The freenet interface to use
*/
@Inject
- public UpdateChecker(EventBus eventBus, FreenetInterface freenetInterface) {
+ public UpdateChecker(EventBus eventBus, FreenetInterface freenetInterface, Version currentVersion) {
this.eventBus = eventBus;
this.freenetInterface = freenetInterface;
+ this.currentRunningVersion = currentVersion;
+ this.currentLatestVersion = currentVersion;
}
//
* @return {@code true} if a new version was found
*/
public boolean hasLatestVersion() {
- return currentLatestVersion.compareTo(SonePlugin.VERSION) > 0;
+ return currentLatestVersion.compareTo(currentRunningVersion) > 0;
}
/**
if (version.compareTo(currentLatestVersion) > 0) {
currentLatestVersion = version;
latestVersionDate = releaseTime;
- logger.log(Level.INFO, String.format("Found new version: %s (%tc)", version, new Date(releaseTime)));
- eventBus.post(new UpdateFoundEvent(version, releaseTime, edition));
+ boolean disruptive = disruptiveVersionBetweenCurrentAndFound(properties);
+ logger.log(Level.INFO, String.format("Found new version: %s (%tc%s)", version, new Date(releaseTime), disruptive ? ", disruptive" : ""));
+ eventBus.post(new UpdateFoundEvent(version, releaseTime, edition, disruptive));
}
}
+ private boolean disruptiveVersionBetweenCurrentAndFound(Properties properties) {
+ for (String key : properties.stringPropertyNames()) {
+ if (key.startsWith("DisruptiveVersion/")) {
+ Version disruptiveVersion = Version.parse(key.substring("DisruptiveVersion/".length()));
+ if (disruptiveVersion.compareTo(currentRunningVersion) > 0) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
}