diff --git a/scm-core/src/main/java/sonia/scm/config/ScmConfiguration.java b/scm-core/src/main/java/sonia/scm/config/ScmConfiguration.java index ecffcd3a38..7bb64a9454 100644 --- a/scm-core/src/main/java/sonia/scm/config/ScmConfiguration.java +++ b/scm-core/src/main/java/sonia/scm/config/ScmConfiguration.java @@ -73,7 +73,7 @@ public class ScmConfiguration implements Configuration { * SCM Manager release feed url */ public static final String DEFAULT_RELEASE_FEED_URL = - "https://www.scm-manager.org/download/rss.xml"; + "https://scm-manager.org/download/rss.xml"; /** * Default url for login information (plugin and feature tips on the login page). diff --git a/scm-webapp/src/main/java/sonia/scm/admin/ReleaseFeedParser.java b/scm-webapp/src/main/java/sonia/scm/admin/ReleaseFeedParser.java index 3976ac0e13..e398e31788 100644 --- a/scm-webapp/src/main/java/sonia/scm/admin/ReleaseFeedParser.java +++ b/scm-webapp/src/main/java/sonia/scm/admin/ReleaseFeedParser.java @@ -44,15 +44,20 @@ public class ReleaseFeedParser { this.client = client; } - Optional findLatestRelease(String url) throws IOException { + Optional findLatestRelease(String url) { LOG.info("Search for newer versions of SCM-Manager"); - ReleaseFeedDto releaseFeed = client.get(url).request().contentFromXml(ReleaseFeedDto.class); - Optional latestRelease = filterForLatestRelease(releaseFeed); - if (latestRelease.isPresent()) { - ReleaseFeedDto.Release release = latestRelease.get(); - return Optional.of(new ReleaseInfo(release.getTitle(), release.getLink())); + Optional latestRelease = parseLatestReleaseFromRssFeed(url); + return latestRelease.map(release -> new ReleaseInfo(release.getTitle(), release.getLink())); + } + + private Optional parseLatestReleaseFromRssFeed(String url) { + try { + ReleaseFeedDto releaseFeed = client.get(url).request().contentFromXml(ReleaseFeedDto.class); + return filterForLatestRelease(releaseFeed); + } catch (IOException e) { + LOG.error(String.format("Could not parse release feed from %s", url)); + return Optional.empty(); } - return Optional.empty(); } private Optional filterForLatestRelease(ReleaseFeedDto releaseFeed) { diff --git a/scm-webapp/src/main/java/sonia/scm/admin/ReleaseVersionChecker.java b/scm-webapp/src/main/java/sonia/scm/admin/ReleaseVersionChecker.java index 345a351946..6f1d384cb2 100644 --- a/scm-webapp/src/main/java/sonia/scm/admin/ReleaseVersionChecker.java +++ b/scm-webapp/src/main/java/sonia/scm/admin/ReleaseVersionChecker.java @@ -34,7 +34,6 @@ import sonia.scm.config.ScmConfiguration; import sonia.scm.version.Version; import javax.inject.Inject; -import java.io.IOException; import java.util.Optional; public class ReleaseVersionChecker { @@ -65,25 +64,19 @@ public class ReleaseVersionChecker { if (cachedReleaseInfo != null) { return Optional.of(cachedReleaseInfo); } else { - return findLatestReleaseInRssFeed(); + return findLatestRelease(); } } - private Optional findLatestReleaseInRssFeed() { - try { - String releaseFeedUrl = scmConfiguration.getReleaseFeedUrl(); - Optional latestRelease = releaseFeedParser.findLatestRelease(releaseFeedUrl); - if (latestRelease.isPresent() && isNewerVersion(latestRelease.get())) { - cache.put("latest", latestRelease.get()); - return latestRelease; - } - LOG.info("No newer version found for SCM-Manager"); - return Optional.empty(); - } catch (IOException e) { - // This is a silent action. We don't want the user to get any kind of error for this. - LOG.info("No newer version found for SCM-Manager"); - return Optional.empty(); + private Optional findLatestRelease() { + String releaseFeedUrl = scmConfiguration.getReleaseFeedUrl(); + Optional latestRelease = releaseFeedParser.findLatestRelease(releaseFeedUrl); + if (latestRelease.isPresent() && isNewerVersion(latestRelease.get())) { + cache.put("latest", latestRelease.get()); + return latestRelease; } + LOG.info("No newer version found for SCM-Manager"); + return Optional.empty(); } private boolean isNewerVersion(ReleaseInfo releaseInfo) {