You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2020/11/17 15:24:10 UTC

[sling-org-apache-sling-feature-cpconverter] branch master updated: SLING-9916 : Content package converter produces broken configs for typed configuration entries.

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 0063166  SLING-9916 : Content package converter produces broken configs for typed configuration entries.
0063166 is described below

commit 006316617b1784f33283fec92c224275b73a4f01
Author: Carsten Ziegeler <cz...@apache.org>
AuthorDate: Tue Nov 17 16:23:42 2020 +0100

    SLING-9916 : Content package converter produces broken configs for typed configuration entries.
---
 .../cpconverter/handlers/XmlConfigurationEntryHandler.java | 13 ++++---------
 .../handlers/ConfigurationEntryHandlerTest.java            | 14 +++++++-------
 2 files changed, 11 insertions(+), 16 deletions(-)

diff --git a/src/main/java/org/apache/sling/feature/cpconverter/handlers/XmlConfigurationEntryHandler.java b/src/main/java/org/apache/sling/feature/cpconverter/handlers/XmlConfigurationEntryHandler.java
index d023ac9..59215cb 100644
--- a/src/main/java/org/apache/sling/feature/cpconverter/handlers/XmlConfigurationEntryHandler.java
+++ b/src/main/java/org/apache/sling/feature/cpconverter/handlers/XmlConfigurationEntryHandler.java
@@ -25,6 +25,7 @@ import java.util.List;
 
 import javax.jcr.PropertyType;
 
+import org.apache.felix.cm.json.Configurations;
 import org.apache.jackrabbit.util.ISO8601;
 import org.apache.jackrabbit.vault.util.DocViewProperty;
 import org.apache.sling.feature.cpconverter.shared.AbstractJcrNodeParser;
@@ -56,7 +57,7 @@ public final class XmlConfigurationEntryHandler extends AbstractConfigurationEnt
 
         private static final String SLING_OSGICONFIG = "sling:OsgiConfig";
 
-        private Dictionary<String, Object> configuration = null;
+        private Dictionary<String, Object> configuration;
 
         public JcrConfigurationHandler() {
             super(SLING_OSGICONFIG);
@@ -64,7 +65,7 @@ public final class XmlConfigurationEntryHandler extends AbstractConfigurationEnt
 
         @Override
         protected void onJcrRootElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
-            configuration = new Hashtable<>();
+            configuration = Configurations.newConfiguration();
 
             for (int i = 0; i < attributes.getLength(); i++) {
                 String attributeQName = attributes.getQName(i);
@@ -81,7 +82,6 @@ public final class XmlConfigurationEntryHandler extends AbstractConfigurationEnt
                             case PropertyType.DATE:
                                 // Date was never properly supported as osgi configs don't support dates so converting to millis 
                                 // Scenario should just be theoretical
-                                attributeQName += ":Long";
                                 value = Lists.transform(strValues, new Function<String, Long>() {
                                    public Long apply(String s) {
                                       Long res = null;
@@ -96,7 +96,6 @@ public final class XmlConfigurationEntryHandler extends AbstractConfigurationEnt
                                 }).toArray();
                                 break;
                             case PropertyType.DOUBLE:
-                                attributeQName += ":Double";
                                 value = Lists.transform(strValues, new Function<String, Double>() {
                                    public Double apply(String s) {
                                       Double res = null;
@@ -108,7 +107,6 @@ public final class XmlConfigurationEntryHandler extends AbstractConfigurationEnt
                                 }).toArray();
                                 break;
                             case PropertyType.LONG:
-                                attributeQName += ":Long";
                                 value = Lists.transform(strValues, new Function<String, Long>() {
                                     public Long apply(String s) {
                                        Long res = null;
@@ -120,7 +118,6 @@ public final class XmlConfigurationEntryHandler extends AbstractConfigurationEnt
                                  }).toArray();
                                 break;
                             case PropertyType.BOOLEAN:
-                                attributeQName += ":Boolean";
                                 value = Lists.transform(strValues, new Function<String, Boolean>() {
                                     public Boolean apply(String s) {
                                        Boolean res = null;
@@ -132,9 +129,7 @@ public final class XmlConfigurationEntryHandler extends AbstractConfigurationEnt
                                  }).toArray();
                                 break;
                         }
-                        if(property.isMulti) {
-                            attributeQName+="[]";
-                        } else {
+                        if (!property.isMulti) {
                             // first element to be used in case of singlevalue
                             value = ((Object[])value)[0];
                         }
diff --git a/src/test/java/org/apache/sling/feature/cpconverter/handlers/ConfigurationEntryHandlerTest.java b/src/test/java/org/apache/sling/feature/cpconverter/handlers/ConfigurationEntryHandlerTest.java
index 4c57c05..38d95b9 100644
--- a/src/test/java/org/apache/sling/feature/cpconverter/handlers/ConfigurationEntryHandlerTest.java
+++ b/src/test/java/org/apache/sling/feature/cpconverter/handlers/ConfigurationEntryHandlerTest.java
@@ -65,15 +65,15 @@ public class ConfigurationEntryHandlerTest {
 
     private static final String EXPECTED_TYPED_CONFIG = "{\n" + 
         "  \"org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.typed\":  {\n" + 
-        "    \"test.longproperty:Long\":123,\n" + 
-        "    \"user.mapping[]\":[\n" + 
+        "    \"user.default\":\"admin\",\n" + 
+        "    \"test.longproperty\":123,\n" + 
+        "    \"test.doubleproperty\":1.23,\n" + 
+        "    \"test.dateproperty\":1604743842669,\n" + 
+        "    \"test.booleanproperty\":true,\n" + 
+        "    \"user.mapping\":[\n" + 
         "      \"com.adobe.acs.acs-aem-samples-bundle=admin\",\n" + 
         "      \"com.adobe.acs.acs-aem-samples-bundle:sample-service=oauthservice\"\n" + 
-        "    ],\n" + 
-        "    \"test.booleanproperty:Boolean\":true,\n" + 
-        "    \"test.dateproperty:Long\":1604743842669,\n" + 
-        "    \"user.default\":\"admin\",\n" + 
-        "    \"test.doubleproperty:Double\":1.23\n" + 
+        "    ]\n" + 
         "  }\n" + 
         "}";