This is an automated email from the ASF dual-hosted git repository.
pauls 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 ad14cfd SLING-9926: allow nested folders for config folders (#37)
ad14cfd is described below
commit ad14cfd1be5f18f3f01d2eb54ec4f5e7c1ca3719
Author: Karl Pauls <[email protected]>
AuthorDate: Mon Dec 7 09:20:34 2020 +0100
SLING-9926: allow nested folders for config folders (#37)
---
.../AbstractConfigurationEntryHandler.java | 6 ++++-
.../handlers/ConfigEntryHandlerTest.java | 29 ++++++++++++++++++++
.../handlers/ConfigurationEntryHandlerTest.java | 31 +++++++++++-----------
3 files changed, 49 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..400b4fe 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,7 @@ 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.Mockito;
public class ConfigEntryHandlerTest {
@@ -90,4 +94,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..ae5c08a 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
@@ -134,24 +134,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() {