This is an automated email from the ASF dual-hosted git repository.
sseifert pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-launchpad-comparator.git
The following commit(s) were added to refs/heads/master by this push:
new 57151c2 Switch to OSGI feature model artifact (#5)
57151c2 is described below
commit 57151c2d4241a4606d6ea1b2664482edf7958e5b
Author: Stefan Seifert <[email protected]>
AuthorDate: Mon Dec 16 15:14:51 2024 +0100
Switch to OSGI feature model artifact (#5)
drop support for releases <12
---
README.md | 2 +-
pom.xml | 39 +++++++++++++++++-----
.../apache/sling/tooling/lc/LaunchpadComparer.java | 37 ++++++++++----------
.../java/org/apache/sling/tooling/lc/Main.java | 4 +--
.../sling/tooling/lc/aether/AetherSetup.java | 2 +-
.../sling/tooling/lc/aether/ArtifactKey.java | 24 +++++++------
.../apache/sling/tooling/lc/aether/Artifacts.java | 10 +-----
.../sling/tooling/lc/git/GitChangeLogFinder.java | 2 +-
.../apache/sling/tooling/lc/jira/IssueFinder.java | 4 +--
.../org/apache/sling/tooling/lc/ArtifactsTest.java | 27 ++++-----------
10 files changed, 76 insertions(+), 75 deletions(-)
diff --git a/README.md b/README.md
index 5adaf91..c08ddf2 100644
--- a/README.md
+++ b/README.md
@@ -19,7 +19,7 @@ checkout:
Afterwards build and run this project
mvn clean package
- java -jar target/launchpad-comparator-0.9.0-SNAPSHOT.jar 10 11-SNAPSHOT
+ java -jar target/launchpad-comparator-1.0.0-SNAPSHOT.jar 12 13-SNAPSHOT
The report will list:
diff --git a/pom.xml b/pom.xml
index e151876..04615f0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -19,13 +19,13 @@
</parent>
<groupId>org.apache.sling.tooling</groupId>
<artifactId>launchpad-comparator</artifactId>
- <version>0.9.0-SNAPSHOT</version>
+ <version>1.0.0-SNAPSHOT</version>
<name>Apache Sling Launchpad Comparator</name>
<description>Command line utility which helps with comparing the artifacts
contained by two launchpad instances.</description>
<properties>
- <sling.java.version>8</sling.java.version>
- <aetherVersion>1.0.0.v20140518</aetherVersion>
+ <sling.java.version>11</sling.java.version>
+ <aetherVersion>1.1.0</aetherVersion>
<mavenVersion>3.1.0</mavenVersion>
<wagonVersion>1.0</wagonVersion>
</properties>
@@ -101,11 +101,35 @@
<scope>runtime</scope>
</dependency>
- <!-- Provisioning model -->
+ <!-- Feature model -->
<dependency>
<groupId>org.apache.sling</groupId>
- <artifactId>org.apache.sling.provisioning.model</artifactId>
- <version>1.8.2</version>
+ <artifactId>org.apache.sling.feature</artifactId>
+ <version>2.0.2</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>jakarta.json</groupId>
+ <artifactId>jakarta.json-api</artifactId>
+ <version>2.0.2</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>org.apache.felix.cm.json</artifactId>
+ <version>2.0.6</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.glassfish</groupId>
+ <artifactId>jakarta.json</artifactId>
+ <version>2.0.1</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.util.converter</artifactId>
+ <version>1.0.9</version>
<scope>compile</scope>
</dependency>
@@ -121,7 +145,7 @@
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
- <version>2.8.9</version>
+ <version>2.11.0</version>
<scope>compile</scope>
</dependency>
@@ -139,7 +163,6 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
- <version>2.4.1</version>
<configuration>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
diff --git a/src/main/java/org/apache/sling/tooling/lc/LaunchpadComparer.java
b/src/main/java/org/apache/sling/tooling/lc/LaunchpadComparer.java
index 01df6bd..e66f1cd 100644
--- a/src/main/java/org/apache/sling/tooling/lc/LaunchpadComparer.java
+++ b/src/main/java/org/apache/sling/tooling/lc/LaunchpadComparer.java
@@ -30,13 +30,11 @@ import java.util.function.Function;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
-import java.util.stream.StreamSupport;
import com.google.common.collect.Sets;
-import org.apache.sling.provisioning.model.Artifact;
-import org.apache.sling.provisioning.model.Model;
-import org.apache.sling.provisioning.model.ModelUtility;
-import org.apache.sling.provisioning.model.io.ModelReader;
+import org.apache.sling.feature.Artifact;
+import org.apache.sling.feature.Feature;
+import org.apache.sling.feature.io.json.FeatureJSONReader;
import org.apache.sling.tooling.lc.aether.AetherSetup;
import org.apache.sling.tooling.lc.aether.ArtifactKey;
import org.apache.sling.tooling.lc.aether.Artifacts;
@@ -71,8 +69,8 @@ public class LaunchpadComparer {
File toFile =
aether.download(Artifacts.launchpadCoordinates(secondVersion));
// 2. parse artifact definitions
- Map<ArtifactKey, Artifact> from = readArtifactsFromModel(fromFile);
- Map<ArtifactKey, Artifact> to = readArtifactsFromModel(toFile);
+ Map<ArtifactKey, Artifact> from =
readArtifactsFromOsgiFeature(fromFile);
+ Map<ArtifactKey, Artifact> to = readArtifactsFromOsgiFeature(toFile);
// 3. generate added / removed / changed
Set<Artifact> removed = Sets.difference(from.keySet(),
to.keySet()).stream()
@@ -86,11 +84,13 @@ public class LaunchpadComparer {
Map<ArtifactKey, VersionChange> changed = to.values().stream()
.filter(k -> !added.contains(k) && !removed.contains(k))
.map(k -> new ArtifactKey(k))
- .filter(k -> !Objects.equals(to.get(k).getVersion(),
from.get(k).getVersion()))
+ .filter(k -> !Objects.equals(
+ to.get(k).getId().getVersion(),
from.get(k).getId().getVersion()))
.collect(Collectors.toMap(
Function.identity(),
k -> new VersionChange(
- from.get(k).getVersion(),
to.get(k).getVersion())));
+ from.get(k).getId().getVersion(),
+ to.get(k).getId().getVersion())));
// 4. output changes
@@ -106,23 +106,20 @@ public class LaunchpadComparer {
.forEach(this::outputFormatted);
}
- private Map<ArtifactKey, Artifact> readArtifactsFromModel(File toFile)
throws IOException {
- Model fromModel;
+ private Map<ArtifactKey, Artifact> readArtifactsFromOsgiFeature(File
toFile) throws IOException {
+ Feature fromFeature;
try (BufferedReader reader = Files.newBufferedReader(toFile.toPath()))
{
- fromModel =
ModelUtility.getEffectiveModel(ModelReader.read(reader, null));
+ fromFeature = FeatureJSONReader.read(reader,
toFile.toPath().toString());
}
-
- Map<ArtifactKey, Artifact> to = fromModel.getFeatures().stream()
- .flatMap(f -> f.getRunModes().stream())
- .flatMap(r -> r.getArtifactGroups().stream())
- .flatMap(g -> StreamSupport.stream(g.spliterator(), false))
- .collect(Collectors.toMap(a -> new ArtifactKey(a),
Function.identity()));
- return to;
+ return fromFeature.getBundles().stream()
+ .collect(Collectors.toMap(a -> new ArtifactKey(a),
Function.identity(), (first, second) -> second));
}
private static void outputFormatted(Artifact a) {
- System.out.format(" %-30s : %-55s : %s%n", a.getGroupId(),
a.getArtifactId(), a.getVersion());
+ System.out.format(
+ " %-30s : %-55s : %s%n",
+ a.getId().getGroupId(), a.getId().getArtifactId(),
a.getId().getVersion());
}
private void outputFormatted(Map.Entry<ArtifactKey, VersionChange> e) {
diff --git a/src/main/java/org/apache/sling/tooling/lc/Main.java
b/src/main/java/org/apache/sling/tooling/lc/Main.java
index 0e4be41..a795ca6 100644
--- a/src/main/java/org/apache/sling/tooling/lc/Main.java
+++ b/src/main/java/org/apache/sling/tooling/lc/Main.java
@@ -22,8 +22,8 @@ public class Main {
public static void main(String[] args) throws Exception {
- String firstVersion = "8";
- String secondVersion = "9";
+ String firstVersion = "12";
+ String secondVersion = "13-SNAPSHOT";
if (args.length == 2) {
firstVersion = args[0];
secondVersion = args[1];
diff --git a/src/main/java/org/apache/sling/tooling/lc/aether/AetherSetup.java
b/src/main/java/org/apache/sling/tooling/lc/aether/AetherSetup.java
index 5f0cf9c..277d6ce 100644
--- a/src/main/java/org/apache/sling/tooling/lc/aether/AetherSetup.java
+++ b/src/main/java/org/apache/sling/tooling/lc/aether/AetherSetup.java
@@ -41,7 +41,7 @@ import
org.eclipse.aether.transport.http.HttpTransporterFactory;
public class AetherSetup {
private final List<RemoteRepository> repos = Arrays.asList(
- new RemoteRepository.Builder("central", "default",
"http://central.maven.org/maven2/").build(),
+ new RemoteRepository.Builder("central", "default",
"https://repo1.maven.org/maven2/").build(),
new RemoteRepository.Builder("apache", "default",
"https://repository.apache.org/content/groups/snapshots/")
.build());
diff --git a/src/main/java/org/apache/sling/tooling/lc/aether/ArtifactKey.java
b/src/main/java/org/apache/sling/tooling/lc/aether/ArtifactKey.java
index a4aaa37..833a052 100644
--- a/src/main/java/org/apache/sling/tooling/lc/aether/ArtifactKey.java
+++ b/src/main/java/org/apache/sling/tooling/lc/aether/ArtifactKey.java
@@ -20,18 +20,22 @@ package org.apache.sling.tooling.lc.aether;
import java.util.Objects;
-import org.apache.sling.provisioning.model.Artifact;
+import org.apache.sling.feature.Artifact;
+import org.apache.sling.feature.ArtifactId;
public class ArtifactKey implements Comparable<ArtifactKey> {
- private String groupId;
- private String artifactId;
- private String classifier;
- private String type;
+ private final String groupId;
+ private final String artifactId;
+ private final String classifier;
+ private final String type;
public ArtifactKey(Artifact artifact) {
-
- this(artifact.getGroupId(), artifact.getArtifactId(),
artifact.getClassifier(), artifact.getType());
+ this(
+ artifact.getId().getGroupId(),
+ artifact.getId().getArtifactId(),
+ artifact.getId().getClassifier(),
+ artifact.getId().getType());
}
private ArtifactKey(String groupId, String artifactId, String classifier,
String type) {
@@ -43,7 +47,6 @@ public class ArtifactKey implements Comparable<ArtifactKey> {
@Override
public int hashCode() {
-
return Objects.hash(artifactId, classifier, groupId, type);
}
@@ -80,7 +83,6 @@ public class ArtifactKey implements Comparable<ArtifactKey> {
@Override
public String toString() {
-
return "Artifact [groupId=" + groupId + ", artifactId=" + artifactId +
", classifier=" + classifier + ", type="
+ type + "]";
}
@@ -88,8 +90,8 @@ public class ArtifactKey implements Comparable<ArtifactKey> {
@Override
public int compareTo(ArtifactKey o) {
- Artifact us = new Artifact(groupId, artifactId, "0.0.0", classifier,
type);
- Artifact them = new Artifact(o.groupId, o.artifactId, "0.0.0",
o.classifier, o.type);
+ ArtifactId us = new ArtifactId(groupId, artifactId, "0.0.0",
classifier, type);
+ ArtifactId them = new ArtifactId(o.groupId, o.artifactId, "0.0.0",
o.classifier, o.type);
return us.compareTo(them);
}
diff --git a/src/main/java/org/apache/sling/tooling/lc/aether/Artifacts.java
b/src/main/java/org/apache/sling/tooling/lc/aether/Artifacts.java
index a9c3273..7c991ec 100644
--- a/src/main/java/org/apache/sling/tooling/lc/aether/Artifacts.java
+++ b/src/main/java/org/apache/sling/tooling/lc/aether/Artifacts.java
@@ -33,15 +33,7 @@ public class Artifacts {
throw new IllegalArgumentException("Invalid version " + version);
}
- int versionNumber = Integer.parseInt(versionMatcher.group(1));
-
- // versions 6 and 7 used an XML bundle list
- if (versionNumber < 8) {
- return
"org.apache.sling:org.apache.sling.launchpad:xml:bundlelist:" + version;
- }
-
- String artifactId = versionNumber < 10 ? "org.apache.sling.launchpad"
: "org.apache.sling.starter";
// versions 8 and newer use the provisioning model
- return "org.apache.sling:" + artifactId + ":txt:slingfeature:" +
version;
+ return
"org.apache.sling:org.apache.sling.starter:slingosgifeature:oak_tar:" + version;
}
}
diff --git
a/src/main/java/org/apache/sling/tooling/lc/git/GitChangeLogFinder.java
b/src/main/java/org/apache/sling/tooling/lc/git/GitChangeLogFinder.java
index 933a084..a94eb71 100644
--- a/src/main/java/org/apache/sling/tooling/lc/git/GitChangeLogFinder.java
+++ b/src/main/java/org/apache/sling/tooling/lc/git/GitChangeLogFinder.java
@@ -81,7 +81,7 @@ public class GitChangeLogFinder {
private Ref getTagChecked(Repository repository, String artifactId, String
version) throws IOException {
final String tagName = artifactId + "-" + version;
- final Ref ref = repository.getRefDatabase().getRef(Constants.R_TAGS +
tagName);
+ final Ref ref = repository.getRefDatabase().findRef(Constants.R_TAGS +
tagName);
if (ref == null)
throw new RuntimeException("No tag " + tagName + " found in git
repo at " + repository.getDirectory());
return ref;
diff --git a/src/main/java/org/apache/sling/tooling/lc/jira/IssueFinder.java
b/src/main/java/org/apache/sling/tooling/lc/jira/IssueFinder.java
index 68f5db9..bc26a34 100644
--- a/src/main/java/org/apache/sling/tooling/lc/jira/IssueFinder.java
+++ b/src/main/java/org/apache/sling/tooling/lc/jira/IssueFinder.java
@@ -32,7 +32,7 @@ import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.utils.HttpClientUtils;
import org.apache.http.client.utils.URIBuilder;
-import org.apache.http.impl.client.DefaultHttpClient;
+import org.apache.http.impl.client.HttpClientBuilder;
public class IssueFinder {
@@ -48,7 +48,7 @@ public class IssueFinder {
return Collections.emptyList();
}
- HttpClient client = new DefaultHttpClient();
+ HttpClient client = HttpClientBuilder.create().build();
HttpGet get;
try {
diff --git a/src/test/java/org/apache/sling/tooling/lc/ArtifactsTest.java
b/src/test/java/org/apache/sling/tooling/lc/ArtifactsTest.java
index 0a82dbb..d8ec957 100644
--- a/src/test/java/org/apache/sling/tooling/lc/ArtifactsTest.java
+++ b/src/test/java/org/apache/sling/tooling/lc/ArtifactsTest.java
@@ -22,36 +22,23 @@ import org.junit.Test;
import static
org.apache.sling.tooling.lc.aether.Artifacts.launchpadCoordinates;
import static org.hamcrest.CoreMatchers.equalTo;
-import static org.junit.Assert.assertThat;
+import static org.hamcrest.MatcherAssert.assertThat;
public class ArtifactsTest {
@Test
- public void launchpadV7() {
-
- assertThat(launchpadCoordinates("7"),
equalTo("org.apache.sling:org.apache.sling.launchpad:xml:bundlelist:7"));
- }
-
- @Test
- public void launchpadV7Snapshot() {
-
- assertThat(
- launchpadCoordinates("7-SNAPSHOT"),
-
equalTo("org.apache.sling:org.apache.sling.launchpad:xml:bundlelist:7-SNAPSHOT"));
- }
-
- @Test
- public void launchpadV8() {
+ public void launchpadV12() {
assertThat(
- launchpadCoordinates("8"),
equalTo("org.apache.sling:org.apache.sling.launchpad:txt:slingfeature:8"));
+ launchpadCoordinates("12"),
+
equalTo("org.apache.sling:org.apache.sling.starter:slingosgifeature:oak_tar:12"));
}
@Test
- public void launchpadV8Snapshot() {
+ public void launchpadV13Snapshot() {
assertThat(
- launchpadCoordinates("8-SNAPSHOT"),
-
equalTo("org.apache.sling:org.apache.sling.launchpad:txt:slingfeature:8-SNAPSHOT"));
+ launchpadCoordinates("13-SNAPSHOT"),
+
equalTo("org.apache.sling:org.apache.sling.starter:slingosgifeature:oak_tar:13-SNAPSHOT"));
}
}