You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by pa...@apache.org on 2020/11/30 14:42:49 UTC

[sling-org-apache-sling-feature-cpconverter] branch issues/SLING-9926 created (now 39174a3)

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

pauls pushed a change to branch issues/SLING-9926
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-feature-cpconverter.git.


      at 39174a3  SLING-9926: allow nested folders for config folders

This branch includes the following new commits:

     new 39174a3  SLING-9926: allow nested folders for config folders

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[sling-org-apache-sling-feature-cpconverter] 01/01: SLING-9926: allow nested folders for config folders

Posted by pa...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

pauls pushed a commit to branch issues/SLING-9926
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-feature-cpconverter.git

commit 39174a367617ac65abbe1051152a0216b02e8f78
Author: Karl Pauls <ka...@gmail.com>
AuthorDate: Mon Nov 30 15:42:31 2020 +0100

    SLING-9926: allow nested folders for config folders
---
 .../AbstractConfigurationEntryHandler.java         |  6 +++-
 .../handlers/ConfigEntryHandlerTest.java           | 30 +++++++++++++++++++
 .../handlers/ConfigurationEntryHandlerTest.java    | 35 ++++++++++++----------
 3 files changed, 54 insertions(+), 17 deletions(-)

diff --git a/src/main/java/org/apache/sling/feature/cpconverter/handlers/AbstractConfigurationEntryHandler.java b/src/main/java/org/apache/sling/feature/cpconverter/handlers/AbstractConfigurationEntryHandler.java
index 1b71d29..571ca89 100644
--- a/src/main/java/org/apache/sling/feature/cpconverter/handlers/AbstractConfigurationEntryHandler.java
+++ b/src/main/java/org/apache/sling/feature/cpconverter/handlers/AbstractConfigurationEntryHandler.java
@@ -45,7 +45,11 @@ abstract class AbstractConfigurationEntryHandler extends AbstractRegexEntryHandl
         if (matcher.matches()) {
             
             String pid = matcher.group("pid");
-    
+
+            int idx = pid.lastIndexOf('/');
+            if (idx != -1) {
+                pid = pid.substring(idx + 1);
+            }
             String factoryPid = null;
             String id;
             int n = pid.indexOf('~');
diff --git a/src/test/java/org/apache/sling/feature/cpconverter/handlers/ConfigEntryHandlerTest.java b/src/test/java/org/apache/sling/feature/cpconverter/handlers/ConfigEntryHandlerTest.java
index 580df66..0bfe2a9 100644
--- a/src/test/java/org/apache/sling/feature/cpconverter/handlers/ConfigEntryHandlerTest.java
+++ b/src/test/java/org/apache/sling/feature/cpconverter/handlers/ConfigEntryHandlerTest.java
@@ -28,9 +28,12 @@ import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.when;
 
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
 import java.io.StringReader;
 import java.io.StringWriter;
 import java.util.Dictionary;
+import java.util.Hashtable;
 
 import org.apache.jackrabbit.vault.fs.io.Archive;
 import org.apache.jackrabbit.vault.fs.io.Archive.Entry;
@@ -43,6 +46,8 @@ import org.apache.sling.feature.cpconverter.features.FeaturesManager;
 import org.apache.sling.feature.io.json.FeatureJSONReader;
 import org.apache.sling.feature.io.json.FeatureJSONWriter;
 import org.junit.Test;
+import org.mockito.Mock;
+import org.mockito.Mockito;
 
 public class ConfigEntryHandlerTest {
 
@@ -90,4 +95,29 @@ public class ConfigEntryHandlerTest {
         assertTrue((boolean) configurationProperties.get("user.disableMissing"));
     }
 
+
+
+    @Test
+    public void testConfigPathWithFolders() throws Exception {
+        Archive archive = mock(Archive.class);
+        Entry entry = mock(Entry.class);
+        FeaturesManager manager = mock(FeaturesManager.class);
+        ContentPackage2FeatureModelConverter converter = mock(ContentPackage2FeatureModelConverter.class);
+        when(converter.getFeaturesManager()).thenReturn(manager);
+
+        when(entry.getName()).thenReturn("/jcr_root/apps/foo/bar/config/baz/blub.cfg");
+        when(archive.openInputStream(entry)).thenReturn(new ByteArrayInputStream("{}".getBytes()));
+
+        AbstractConfigurationEntryHandler handler = new AbstractConfigurationEntryHandler("cfg") {
+            @Override
+            protected Dictionary<String, Object> parseConfiguration(String name, InputStream input) throws Exception {
+                return new Hashtable(){{put("foo", "bar");}};
+            }
+        };
+        handler.handle("/jcr_root/apps/foo/bar/config/baz/blub.cfg", archive, entry, converter);
+
+        Mockito.verify(manager).addConfiguration(null, "blub", new Hashtable(){{put("foo","bar");}});
+        Mockito.verify(manager).addConfiguration(Mockito.any(), Mockito.anyString(), Mockito.any());
+    }
+
 }
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 38d95b9..4f5fcce 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
@@ -26,10 +26,14 @@ import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.when;
 
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
 import java.io.StringWriter;
 import java.io.Writer;
 import java.util.Arrays;
 import java.util.Collection;
+import java.util.Dictionary;
+import java.util.Hashtable;
 
 import org.apache.jackrabbit.vault.fs.io.Archive;
 import org.apache.jackrabbit.vault.fs.io.Archive.Entry;
@@ -134,24 +138,23 @@ public class ConfigurationEntryHandlerTest {
         }
 
         if (expectedConfigurationsSize != 0) {
-        Configuration configuration = configurations.get(0);
-
-        assertTrue(configuration.getPid(), configuration.getPid().startsWith(EXPECTED_PID));
-
-        if (configuration.getPid().contains(".empty")) {
-            assertTrue(configuration.getProperties().isEmpty());
-        } else {
-            assertEquals("Unmatching size: " + configuration.getProperties().size(), expectedConfigurationsEntrySize, configuration.getProperties().size());
-        }
-        // type & value check for typed configuration
-        if (this.resourceConfiguration.equals(TYPED_TESTCONFIG_PATH)) {
-            Writer writer = new StringWriter();
-            ConfigurationJSONWriter.write(writer, configurations);
-            assertEquals(EXPECTED_TYPED_CONFIG, writer.toString());
+            Configuration configuration = configurations.get(0);
+
+            assertTrue(configuration.getPid(), configuration.getPid().startsWith(EXPECTED_PID));
+
+            if (configuration.getPid().contains(".empty")) {
+                assertTrue(configuration.getProperties().isEmpty());
+            } else {
+                assertEquals("Unmatching size: " + configuration.getProperties().size(), expectedConfigurationsEntrySize, configuration.getProperties().size());
+            }
+            // type & value check for typed configuration
+            if (this.resourceConfiguration.equals(TYPED_TESTCONFIG_PATH)) {
+                Writer writer = new StringWriter();
+                ConfigurationJSONWriter.write(writer, configurations);
+                assertEquals(EXPECTED_TYPED_CONFIG, writer.toString());
+            }
         }
-
     }
-}
 
     @Parameters
     public static Collection<Object[]> data() {