@Override public Service newService(String serviceType) { assert "update.check".equals(serviceType); return new UpdateCheckService(); } }
@Override public void checkForUpdate() { if (updateCheckService != null) { updateCheckService.checkForUpdate(this); } else { // Requirement to run check even is service isn't running Service service = ServiceFactory.newServiceFactory().newService("update.check"); if (service != null) { updateCheckService = (UpdateCheckService) service; updateCheckService.checkForUpdate(this); } } }
private void notifyListeners() { for (UpdateCheckListener listener : listeners) { if (listener != null) { listener.newVersionAvailable(currentVersion, getLatestGatewayVersion()); } } }
@Override public void run() { GatewayVersion latestVersion = fetchLatestVersion(); if (latestVersion != null) { updateCheckService.setLatestGatewayVersion(latestVersion); } }
@Override public void start() throws Exception { // add listeners listeners.clear(); addListener(new UpdateCheckLoggingListener()); Map<String, Object> serviceSpecificObjects = serviceContext.getServiceSpecificObjects(); Object managementListener = serviceSpecificObjects.get(MANAGEMENT_UPDATE_CHECK_LISTENER); if (managementListener != null && managementListener instanceof UpdateCheckListener) { addListener((UpdateCheckListener) managementListener); } for (UpdateCheckListener listener : listeners) { listener.setUpdateCheckService(this); } scheduledTasks = scheduler.scheduleAtFixedRate(new UpdateCheckTask(this, versionServiceUrl, productName), 0, 7, DAYS); }
protected void setLatestGatewayVersion(GatewayVersion newlatestVersion) { if (this.latestVersion == null || this.latestVersion.compareTo(newlatestVersion) < 0) { synchronized (this) { this.latestVersion = newlatestVersion; } if (newlatestVersion.compareTo(currentVersion) > 0) { notifyListeners(); } } }
/** * Adds a @UpdateCheckListener who will be notified when the version changes, * @param newListener */ public void addListener(UpdateCheckListener newListener) { GatewayVersion latestGatewayVersion = this.getLatestGatewayVersion(); if (latestGatewayVersion != null && latestGatewayVersion.compareTo(currentVersion) > 0) { newListener.newVersionAvailable(currentVersion, latestGatewayVersion); } newListener.setUpdateCheckService(this); listeners.add(newListener); } }