SLING-10131: use the mvn id instead of the ArtifactId directly (#1)

diff --git a/src/main/java/org/apache/sling/feature/extension/unpack/Unpack.java b/src/main/java/org/apache/sling/feature/extension/unpack/Unpack.java
index 5a7fb62..ca49ba8 100644
--- a/src/main/java/org/apache/sling/feature/extension/unpack/Unpack.java
+++ b/src/main/java/org/apache/sling/feature/extension/unpack/Unpack.java
@@ -77,7 +77,7 @@
 
             for (Artifact artifact : extension.getArtifacts()) {
                 Map<String, Object> context = new HashMap<>();
-                context.put("artifact.id", artifact.getId());
+                context.put("artifact.id", artifact.getId().toMvnId());
                 context.put("dir", dir);
                 context.put("override", Boolean.toString(override));
                 context.put("key", key);
diff --git a/src/main/java/org/apache/sling/feature/extension/unpack/impl/installer/InstallUnpackArchiveTask.java b/src/main/java/org/apache/sling/feature/extension/unpack/impl/installer/InstallUnpackArchiveTask.java
index 4c2e859..1ca02fa 100644
--- a/src/main/java/org/apache/sling/feature/extension/unpack/impl/installer/InstallUnpackArchiveTask.java
+++ b/src/main/java/org/apache/sling/feature/extension/unpack/impl/installer/InstallUnpackArchiveTask.java
@@ -55,6 +55,6 @@
 
     @Override
     public String getSortKey() {
-        return getResource().getEntityId();
+        return "40-" + getResource().getEntityId();
     }
 }
diff --git a/src/main/java/org/apache/sling/feature/extension/unpack/impl/installer/UnpackArchiveExtensionHandler.java b/src/main/java/org/apache/sling/feature/extension/unpack/impl/installer/UnpackArchiveExtensionHandler.java
index 312288c..de410f1 100644
--- a/src/main/java/org/apache/sling/feature/extension/unpack/impl/installer/UnpackArchiveExtensionHandler.java
+++ b/src/main/java/org/apache/sling/feature/extension/unpack/impl/installer/UnpackArchiveExtensionHandler.java
@@ -45,7 +45,7 @@
     @Override
     public boolean handle(ExtensionHandlerContext context, Extension extension, Feature feature) throws Exception {
         return unpack.handle(extension, context.getArtifactProvider(),
-                (u,m) -> context.addInstallableArtifact((ArtifactId) m.get("artifact.id"), u, m));
+                (u,m) -> context.addInstallableArtifact(ArtifactId.fromMvnId((String) m.get("artifact.id")), u, m));
     }
 }
 
diff --git a/src/main/java/org/apache/sling/feature/extension/unpack/impl/installer/UnpackArchiveInstallerPlugin.java b/src/main/java/org/apache/sling/feature/extension/unpack/impl/installer/UnpackArchiveInstallerPlugin.java
index de36ca8..1f96300 100644
--- a/src/main/java/org/apache/sling/feature/extension/unpack/impl/installer/UnpackArchiveInstallerPlugin.java
+++ b/src/main/java/org/apache/sling/feature/extension/unpack/impl/installer/UnpackArchiveInstallerPlugin.java
@@ -83,7 +83,7 @@
             return null;
         }
         try {
-            ArtifactId aid = (ArtifactId) dict.get("artifact.id");
+            ArtifactId aid = dict.get("artifact.id") != null ? ArtifactId.fromMvnId((String) dict.get("artifact.id")) : null;
             if (aid == null) {
                 // If aid is not set, the archive doesn't come from a feature model, and we'd have
                 // to generate some sort of ID for it...
diff --git a/src/test/java/org/apache/sling/feature/extension/unpack/impl/installer/UnpackArchiveInstallerPluginTest.java b/src/test/java/org/apache/sling/feature/extension/unpack/impl/installer/UnpackArchiveInstallerPluginTest.java
index e64a9d5..826fc66 100644
--- a/src/test/java/org/apache/sling/feature/extension/unpack/impl/installer/UnpackArchiveInstallerPluginTest.java
+++ b/src/test/java/org/apache/sling/feature/extension/unpack/impl/installer/UnpackArchiveInstallerPluginTest.java
@@ -77,7 +77,7 @@
         ArtifactId aid = ArtifactId.fromMvnId("g:a:9");
         Hashtable <String,Object> props = new Hashtable<>();
         props.put("dir", "/some/where");
-        props.put("artifact.id", aid);
+        props.put("artifact.id", aid.toMvnId());
 
         InputStream bais = new ByteArrayInputStream("".getBytes());