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"));
     }
 }

Reply via email to