This is an automated email from the ASF dual-hosted git repository.

cziegeler pushed a commit to branch master
in repository 
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-feature-cpconverter.git


The following commit(s) were added to refs/heads/master by this push:
     new 24ea6fa  SLING-9544 : Update to latest feature model implementation
24ea6fa is described below

commit 24ea6faf24da577b088a9453091374a8579697e5
Author: Carsten Ziegeler <[email protected]>
AuthorDate: Tue Jun 23 10:23:49 2020 +0200

    SLING-9544 : Update to latest feature model implementation
---
 pom.xml                                            | 55 +++++++++-------------
 .../features/DefaultFeaturesManager.java           | 17 +++++--
 .../handlers/JsonConfigurationEntryHandler.java    | 48 ++++---------------
 3 files changed, 42 insertions(+), 78 deletions(-)

diff --git a/pom.xml b/pom.xml
index f14f03e..cebe7a7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -21,7 +21,7 @@
   <parent>
     <groupId>org.apache.sling</groupId>
     <artifactId>sling</artifactId>
-    <version>35</version>
+    <version>39</version>
     <relativePath />
   </parent>
 
@@ -35,17 +35,6 @@
     <sling.java.version>8</sling.java.version>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     <picocli.version>3.6.0</picocli.version>
-    <commons-io.version>2.6</commons-io.version>
-    <org.apache.sling.feature.version>1.1.0</org.apache.sling.feature.version>
-    
<org.apache.sling.feature.io.version>1.1.0</org.apache.sling.feature.io.version>
-    
<org.apache.felix.converter.version>1.0.8</org.apache.felix.converter.version>
-    
<org.apache.felix.configurator.version>1.0.10</org.apache.felix.configurator.version>
-    <org.apache.felix.utils.version>1.11.2</org.apache.felix.utils.version>
-    
<geronimo-json_1.0_spec.version>1.0-alpha-1</geronimo-json_1.0_spec.version>
-    <johnzon-core.version>1.0.2</johnzon-core.version>
-    
<org.osgi.annotation.versioning.version>1.0.0</org.osgi.annotation.versioning.version>
-    <osgi.core.version>6.0.0</osgi.core.version>
-    
<org.apache.felix.configadmin.version>1.9.16</org.apache.felix.configadmin.version>
     
<org.apache.jackrabbit.vault.version>3.2.8</org.apache.jackrabbit.vault.version>
     <jackrabbit-api.version>2.18.4</jackrabbit-api.version>
     <jackrabbit-spi-commons.version>2.18.4</jackrabbit-spi-commons.version>
@@ -114,7 +103,7 @@
     <dependency>
       <groupId>commons-io</groupId>
       <artifactId>commons-io</artifactId>
-      <version>${commons-io.version}</version>
+      <version>2.6</version>
       <scope>provided</scope>
     </dependency>
 
@@ -124,55 +113,55 @@
     <dependency>
       <groupId>org.apache.sling</groupId>
       <artifactId>org.apache.sling.feature</artifactId>
-      <version>${org.apache.sling.feature.version}</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.sling</groupId>
-      <artifactId>org.apache.sling.feature.io</artifactId>
-      <version>${org.apache.sling.feature.io.version}</version>
+      <version>1.2.2</version>
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.felix</groupId>
       <artifactId>org.apache.felix.converter</artifactId>
-      <version>${org.apache.felix.converter.version}</version>
+      <version>1.0.14</version>
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.felix</groupId>
-      <artifactId>org.apache.felix.configurator</artifactId>
-      <version>${org.apache.felix.configurator.version}</version>
+      <artifactId>org.apache.felix.utils</artifactId>
+      <version>1.11.4</version>
       <scope>provided</scope>
     </dependency>
     <dependency>
-      <groupId>org.apache.felix</groupId>
-      <artifactId>org.apache.felix.utils</artifactId>
-      <version>${org.apache.felix.utils.version}</version>
-      <scope>provided</scope>
+      <groupId>org.osgi</groupId>
+      <artifactId>org.osgi.util.function</artifactId>
+      <version>1.0.0</version>
+      <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.geronimo.specs</groupId>
-      <artifactId>geronimo-json_1.0_spec</artifactId>
-      <version>${geronimo-json_1.0_spec.version}</version>
+      <artifactId>geronimo-json_1.1_spec</artifactId>
+      <version>1.2</version>
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.johnzon</groupId>
       <artifactId>johnzon-core</artifactId>
-      <version>${johnzon-core.version}</version>
+      <version>1.2.3</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.felix</groupId>
+      <artifactId>org.apache.felix.cm.json</artifactId>
+      <version>1.0.2</version>
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.osgi</groupId>
       <artifactId>org.osgi.annotation.versioning</artifactId>
-      <version>${org.osgi.annotation.versioning.version}</version>
+      <version>1.1.0</version>
       <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.osgi</groupId>
       <artifactId>osgi.core</artifactId>
-      <version>${osgi.core.version}</version>
+      <version>7.0.0</version>
       <scope>compile</scope>
     </dependency>
 
@@ -182,7 +171,7 @@
     <dependency>
       <groupId>org.apache.felix</groupId>
       <artifactId>org.apache.felix.configadmin</artifactId>
-      <version>${org.apache.felix.configadmin.version}</version>
+      <version>1.9.16</version>
       <scope>provided</scope>
     </dependency>
     <dependency>
diff --git 
a/src/main/java/org/apache/sling/feature/cpconverter/features/DefaultFeaturesManager.java
 
b/src/main/java/org/apache/sling/feature/cpconverter/features/DefaultFeaturesManager.java
index ecf3b15..dc8c95d 100644
--- 
a/src/main/java/org/apache/sling/feature/cpconverter/features/DefaultFeaturesManager.java
+++ 
b/src/main/java/org/apache/sling/feature/cpconverter/features/DefaultFeaturesManager.java
@@ -95,6 +95,7 @@ public class DefaultFeaturesManager implements 
FeaturesManager {
         this.properties = properties;
     }
 
+    @Override
     public void init(String groupId, String artifactId, String version) {
         targetFeature = new Feature(new ArtifactId(groupId, artifactId, 
version, null, SLING_OSGI_FEATURE_TILE_TYPE));
 
@@ -105,7 +106,7 @@ public class DefaultFeaturesManager implements 
FeaturesManager {
 
     private void initAPIRegions(Feature feature) {
         if (targetAPIRegions.size() > 0) {
-            Extension apiRegions = new Extension(ExtensionType.JSON, 
"api-regions", false);
+            Extension apiRegions = new Extension(ExtensionType.JSON, 
"api-regions", ExtensionState.OPTIONAL);
             StringBuilder jsonBuilder = new StringBuilder("[");
             for (String apiRegion : targetAPIRegions) {
                 if (jsonBuilder.length() > 1) {
@@ -121,10 +122,12 @@ public class DefaultFeaturesManager implements 
FeaturesManager {
         }
     }
 
+    @Override
     public Feature getTargetFeature() {
         return targetFeature;
     }
 
+    @Override
     public Feature getRunMode(String runMode) {
         if (getTargetFeature() == null) {
             throw new IllegalStateException("Target Feature not initialized 
yet, please make sure convert() method was invoked first.");
@@ -143,10 +146,12 @@ public class DefaultFeaturesManager implements 
FeaturesManager {
         });
     }
 
+    @Override
     public void addArtifact(String runMode, ArtifactId id) {
         addArtifact(runMode, id, null);
     }
 
+    @Override
     public void addArtifact(String runMode, ArtifactId id, Integer startOrder) 
{
         requireNonNull(id, "Artifact can not be attached to a feature without 
specifying a valid ArtifactId.");
 
@@ -160,7 +165,7 @@ public class DefaultFeaturesManager implements 
FeaturesManager {
             Extension extension = extensions.getByName(CONTENT_PACKAGES);
 
             if (extension == null) {
-                extension = new Extension(ExtensionType.ARTIFACTS, 
CONTENT_PACKAGES, true);
+                extension = new Extension(ExtensionType.ARTIFACTS, 
CONTENT_PACKAGES, ExtensionState.REQUIRED);
                 extensions.add(extension);
             }
 
@@ -191,6 +196,7 @@ public class DefaultFeaturesManager implements 
FeaturesManager {
         return newId;
     }
 
+    @Override
     public void addConfiguration(String runMode, String pid, 
Dictionary<String, Object> configurationProperties) {
         Feature feature = getRunMode(runMode);
         Configuration configuration = 
feature.getConfigurations().getConfiguration(pid);
@@ -219,6 +225,7 @@ public class DefaultFeaturesManager implements 
FeaturesManager {
         }
     }
 
+    @Override
     public void serialize() throws Exception {
         RunmodeMapper runmodeMapper = 
RunmodeMapper.open(featureModelsOutputDirectory);
 
@@ -279,13 +286,13 @@ public class DefaultFeaturesManager implements 
FeaturesManager {
         targetAPIRegions.addAll(regions);
         return this;
     }
-    
+
     @Override
     public void addOrAppendRepoInitExtension(String text, String runMode) {
-        
+
         logger.info("Adding/Appending RepoInitExtension for runMode: {}", 
runMode );
         Extension repoInitExtension = 
getRunMode(runMode).getExtensions().getByName(Extension.EXTENSION_NAME_REPOINIT);
-        
+
         if (repoInitExtension == null) {
             repoInitExtension = new Extension(ExtensionType.TEXT, 
Extension.EXTENSION_NAME_REPOINIT, ExtensionState.REQUIRED);
             getRunMode(runMode).getExtensions().add(repoInitExtension);
diff --git 
a/src/main/java/org/apache/sling/feature/cpconverter/handlers/JsonConfigurationEntryHandler.java
 
b/src/main/java/org/apache/sling/feature/cpconverter/handlers/JsonConfigurationEntryHandler.java
index 7ddaf4f..a3f095a 100644
--- 
a/src/main/java/org/apache/sling/feature/cpconverter/handlers/JsonConfigurationEntryHandler.java
+++ 
b/src/main/java/org/apache/sling/feature/cpconverter/handlers/JsonConfigurationEntryHandler.java
@@ -16,18 +16,13 @@
  */
 package org.apache.sling.feature.cpconverter.handlers;
 
-import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
-import java.io.Reader;
-import java.io.StringWriter;
-import java.net.URL;
+import java.nio.charset.StandardCharsets;
 import java.util.Dictionary;
+import java.util.Hashtable;
 
-import org.apache.commons.io.IOUtils;
-import org.apache.felix.configurator.impl.json.JSONUtil;
-import org.apache.felix.configurator.impl.json.TypeConverter;
-import org.apache.felix.configurator.impl.model.ConfigurationFile;
+import org.apache.felix.cm.json.Configurations;
 
 public final class JsonConfigurationEntryHandler extends 
AbstractConfigurationEntryHandler {
 
@@ -37,39 +32,12 @@ public final class JsonConfigurationEntryHandler extends 
AbstractConfigurationEn
 
     @Override
     protected Dictionary<String, Object> parseConfiguration(String name, 
InputStream input) throws Exception {
-        StringBuilder content = new StringBuilder()
-                                .append("{ \"")
-                                .append(name)
-                                .append("\" : ");
-        try (Reader reader = new InputStreamReader(input); StringWriter writer 
= new StringWriter()) {
-            IOUtils.copy(reader, writer);
-            content.append(writer.toString());
-        }
-        content.append("}");
+        final Hashtable<String, Object> props = Configurations.buildReader()
+            .withIdentifier(name)
+            .build(new InputStreamReader(input, StandardCharsets.UTF_8))
+            .readConfiguration();
 
-        JSONUtil.Report report = new JSONUtil.Report();
-        ConfigurationFile configuration = JSONUtil.readJSON(new 
TypeConverter(null),
-                                                            name,
-                                                            new 
URL("file://content-package/" + name),
-                                                            0,
-                                                            content.toString(),
-                                                            report);
-
-        if (!report.errors.isEmpty() || !report.warnings.isEmpty()) {
-            final StringBuilder builder = new StringBuilder();
-            builder.append("Errors in configuration:");
-            for (final String w : report.warnings) {
-                builder.append("\n");
-                builder.append(w);
-            }
-            for (final String e : report.errors) {
-                builder.append("\n");
-                builder.append(e);
-            }
-            throw new IOException(builder.toString());
-        }
-
-        return configuration.getConfigurations().get(0).getProperties();
+        return props;
     }
 
 }

Reply via email to