java/com.sap.sailing.landscape.ui/src/com/sap/sailing/landscape/ui/client/LinkBuilder.java
... ...
@@ -128,7 +128,8 @@ public class LinkBuilder implements Builder<LinkBuilder, SafeHtml> {
128 128
}
129 129
130 130
private String getReleaseNotesLink(final String version) {
131
- return "https://releases.sapsailing.com/" + version + "/release-notes.txt";
131
+ // TODO bug6173: can we figure this out from the ReleaseRepository, asking a Release specified by "version"? See Release.getReleaseNotesURL()
132
+ return "https://github.com/SAP/sailing-analytics/releases/download/" + version + "/release-notes.txt";
132 133
}
133 134
134 135
/**
java/com.sap.sailing.landscape/src/com/sap/sailing/landscape/SailingReleaseRepository.java
... ...
@@ -1,8 +1,8 @@
1 1
package com.sap.sailing.landscape;
2 2
3 3
import com.sap.sse.landscape.ReleaseRepository;
4
-import com.sap.sse.landscape.impl.ReleaseRepositoryImpl;
4
+import com.sap.sse.landscape.impl.GithubReleasesRepository;
5 5
6 6
public interface SailingReleaseRepository extends ReleaseRepository {
7
- ReleaseRepository INSTANCE = new ReleaseRepositoryImpl("https://releases.sapsailing.com", /* master release name prefix */ "main");
7
+ ReleaseRepository INSTANCE = new GithubReleasesRepository("https://github.com/SAP/sailing-analytics/releases/download/", /* main release name prefix */ "main");
8 8
}
java/com.sap.sse.landscape/src/com/sap/sse/landscape/ReleaseRepository.java
... ...
@@ -13,7 +13,7 @@ public interface ReleaseRepository extends Iterable<Release> {
13 13
* repository, or {@code null} otherwise
14 14
*/
15 15
default Release getLatestMasterRelease() {
16
- return getLatestRelease(getMasterReleaseNamePrefix());
16
+ return getLatestRelease(getMainReleaseNamePrefix());
17 17
}
18 18
19 19
/**
... ...
@@ -28,5 +28,5 @@ public interface ReleaseRepository extends Iterable<Release> {
28 28
29 29
String getRepositoryBase();
30 30
31
- String getMasterReleaseNamePrefix();
31
+ String getMainReleaseNamePrefix();
32 32
}
java/com.sap.sse.landscape/src/com/sap/sse/landscape/impl/AbstractReleaseRepository.java
... ...
@@ -0,0 +1,52 @@
1
+package com.sap.sse.landscape.impl;
2
+
3
+import java.util.Iterator;
4
+
5
+import com.sap.sse.common.Util;
6
+import com.sap.sse.landscape.Release;
7
+import com.sap.sse.landscape.ReleaseRepository;
8
+
9
+public abstract class AbstractReleaseRepository implements ReleaseRepository {
10
+ private final String mainReleaseNamePrefix;
11
+ private final String repositoryBase;
12
+
13
+ public AbstractReleaseRepository(String repositoryBase, String mainReleaseNamePrefix) {
14
+ super();
15
+ this.repositoryBase = repositoryBase;
16
+ this.mainReleaseNamePrefix = mainReleaseNamePrefix;
17
+ }
18
+
19
+ @Override
20
+ public String getRepositoryBase() {
21
+ return repositoryBase;
22
+ }
23
+
24
+ @Override
25
+ public String getMainReleaseNamePrefix() {
26
+ return mainReleaseNamePrefix;
27
+ }
28
+
29
+ protected abstract Iterable<Release> getAvailableReleases();
30
+
31
+ @Override
32
+ public Iterator<Release> iterator() {
33
+ return getAvailableReleases().iterator();
34
+ }
35
+
36
+ @Override
37
+ public Release getLatestRelease(String releaseNamePrefix) {
38
+ Release result = null;
39
+ for (final Release release : getAvailableReleases()) {
40
+ if (release.getBaseName().equals(releaseNamePrefix) &&
41
+ (result == null || release.getCreationDate().after(result.getCreationDate()))) {
42
+ result = release;
43
+ }
44
+ }
45
+ return result;
46
+ }
47
+
48
+ @Override
49
+ public Release getRelease(String releaseName) {
50
+ return Util.first(Util.filter(getAvailableReleases(), r->r.getName().equals(releaseName)));
51
+ }
52
+}
java/com.sap.sse.landscape/src/com/sap/sse/landscape/impl/GithubReleasesRepository.java
... ...
@@ -0,0 +1,40 @@
1
+package com.sap.sse.landscape.impl;
2
+
3
+import java.io.IOException;
4
+import java.io.InputStream;
5
+import java.io.InputStreamReader;
6
+import java.net.URL;
7
+import java.net.URLConnection;
8
+import java.util.logging.Logger;
9
+
10
+import org.json.simple.JSONArray;
11
+import org.json.simple.parser.JSONParser;
12
+import org.json.simple.parser.ParseException;
13
+
14
+import com.sap.sse.landscape.Release;
15
+import com.sap.sse.landscape.ReleaseRepository;
16
+import com.sap.sse.util.HttpUrlConnectionHelper;
17
+
18
+public class GithubReleasesRepository extends AbstractReleaseRepository implements ReleaseRepository {
19
+ private final static Logger logger = Logger.getLogger(GithubReleasesRepository.class.getName());
20
+
21
+ public GithubReleasesRepository(String repositoryBase, String mainReleaseNamePrefix) {
22
+ super(repositoryBase, mainReleaseNamePrefix);
23
+ }
24
+
25
+ @Override
26
+ protected Iterable<Release> getAvailableReleases() {
27
+ URLConnection connection;
28
+ try {
29
+ connection = HttpUrlConnectionHelper.redirectConnection(new URL(getRepositoryBase()));
30
+ final InputStream index = (InputStream) connection.getContent();
31
+ final JSONArray releasesJson = (JSONArray) new JSONParser().parse(new InputStreamReader(index));
32
+ // TODO
33
+ return null;
34
+ } catch (IOException | ParseException e) {
35
+ logger.warning("Exception trying to find releases: "+e.getMessage());
36
+ }
37
+ return null; // TODO
38
+ }
39
+
40
+}
java/com.sap.sse.landscape/src/com/sap/sse/landscape/impl/ReleaseRepositoryImpl.java
... ...
@@ -6,7 +6,6 @@ import java.io.InputStream;
6 6
import java.net.URL;
7 7
import java.net.URLConnection;
8 8
import java.util.Collections;
9
-import java.util.Iterator;
10 9
import java.util.LinkedList;
11 10
import java.util.List;
12 11
import java.util.logging.Level;
... ...
@@ -14,34 +13,17 @@ import java.util.logging.Logger;
14 13
import java.util.regex.Matcher;
15 14
import java.util.regex.Pattern;
16 15
17
-import com.sap.sse.common.Util;
18 16
import com.sap.sse.landscape.Release;
19
-import com.sap.sse.landscape.ReleaseRepository;
20 17
import com.sap.sse.util.HttpUrlConnectionHelper;
21 18
22
-public class ReleaseRepositoryImpl implements ReleaseRepository {
19
+public class ReleaseRepositoryImpl extends AbstractReleaseRepository {
23 20
private static final Logger logger = Logger.getLogger(ReleaseRepositoryImpl.class.getName());
24
- private final String repositoryBase;
25 21
26
- private final String masterReleaseNamePrefix;
27
-
28
- public ReleaseRepositoryImpl(String repositoryBase, String masterReleaseNamePrefix) {
29
- super();
30
- this.repositoryBase = repositoryBase;
31
- this.masterReleaseNamePrefix = masterReleaseNamePrefix;
32
- }
33
-
34
- @Override
35
- public String getRepositoryBase() {
36
- return repositoryBase;
22
+ public ReleaseRepositoryImpl(String repositoryBase, String mainReleaseNamePrefix) {
23
+ super(repositoryBase, mainReleaseNamePrefix);
37 24
}
38 25
39
- @Override
40
- public String getMasterReleaseNamePrefix() {
41
- return masterReleaseNamePrefix;
42
- }
43
-
44
- private Iterable<Release> getAvailableReleases() {
26
+ protected Iterable<Release> getAvailableReleases() {
45 27
final List<Release> result = new LinkedList<>();
46 28
try {
47 29
final URLConnection connection = HttpUrlConnectionHelper.redirectConnection(new URL(getRepositoryBase()));
... ...
@@ -66,27 +48,4 @@ public class ReleaseRepositoryImpl implements ReleaseRepository {
66 48
}
67 49
return result;
68 50
}
69
-
70
- @Override
71
- public Iterator<Release> iterator() {
72
- return getAvailableReleases().iterator();
73
- }
74
-
75
- @Override
76
- public Release getLatestRelease(String releaseNamePrefix) {
77
- Release result = null;
78
- for (final Release release : getAvailableReleases()) {
79
- if (release.getBaseName().equals(releaseNamePrefix) &&
80
- (result == null || release.getCreationDate().after(result.getCreationDate()))) {
81
- result = release;
82
- }
83
- }
84
- return result;
85
- }
86
-
87
- @Override
88
- public Release getRelease(String releaseName) {
89
- return Util.first(Util.filter(getAvailableReleases(), r->r.getName().equals(releaseName)));
90
- }
91
-
92 51
}