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:50 UTC
[sling-org-apache-sling-feature-cpconverter] 01/01: SLING-9926:
allow nested folders for config folders
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() {