SLING-8973 - fixing runmode handling for repoinit configuration handling
diff --git a/src/main/java/org/apache/sling/feature/cpconverter/acl/DefaultAclManager.java b/src/main/java/org/apache/sling/feature/cpconverter/acl/DefaultAclManager.java
index 3ba81a5..cb6e8e9 100644
--- a/src/main/java/org/apache/sling/feature/cpconverter/acl/DefaultAclManager.java
+++ b/src/main/java/org/apache/sling/feature/cpconverter/acl/DefaultAclManager.java
@@ -134,7 +134,7 @@
String text = formatter.toString();
if (!text.isEmpty()) {
- featureManager.addOrAppendRepoInitExtension(text);
+ featureManager.addOrAppendRepoInitExtension(text, null);
}
} finally {
if (formatter != null) {
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 1841244..ecf3b15 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
@@ -35,6 +35,7 @@
import org.apache.sling.feature.Artifacts;
import org.apache.sling.feature.Configuration;
import org.apache.sling.feature.Extension;
+import org.apache.sling.feature.ExtensionState;
import org.apache.sling.feature.ExtensionType;
import org.apache.sling.feature.Extensions;
import org.apache.sling.feature.Feature;
@@ -278,15 +279,16 @@
targetAPIRegions.addAll(regions);
return this;
}
-
+
@Override
- public void addOrAppendRepoInitExtension(String text) {
+ public void addOrAppendRepoInitExtension(String text, String runMode) {
- Extension repoInitExtension = getTargetFeature().getExtensions().getByName(Extension.EXTENSION_NAME_REPOINIT);
+ 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, true);
- getTargetFeature().getExtensions().add(repoInitExtension);
+ repoInitExtension = new Extension(ExtensionType.TEXT, Extension.EXTENSION_NAME_REPOINIT, ExtensionState.REQUIRED);
+ getRunMode(runMode).getExtensions().add(repoInitExtension);
repoInitExtension.setText(text);
} else {
repoInitExtension.setText(repoInitExtension.getText() + "\n " + text);
diff --git a/src/main/java/org/apache/sling/feature/cpconverter/features/FeaturesManager.java b/src/main/java/org/apache/sling/feature/cpconverter/features/FeaturesManager.java
index be1b5ff..b247ca2 100644
--- a/src/main/java/org/apache/sling/feature/cpconverter/features/FeaturesManager.java
+++ b/src/main/java/org/apache/sling/feature/cpconverter/features/FeaturesManager.java
@@ -37,6 +37,6 @@
void serialize() throws Exception;
- void addOrAppendRepoInitExtension(String text);
+ void addOrAppendRepoInitExtension(String text, String runMode);
}
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 0c3dfda..59413cd 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
@@ -80,7 +80,7 @@
String[] scripts = (String[]) configurationProperties.get("scripts");
if (scripts != null) {
String text = String.join("\n", scripts);
- converter.getFeaturesManager().addOrAppendRepoInitExtension(text);
+ converter.getFeaturesManager().addOrAppendRepoInitExtension(text, runMode);
} else {
// any repoinit configuration with empty scripts may be igored - filereferences are not supported at that point
}
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 d9a2215..f71cc2d 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,13 +65,16 @@
private final int expectedConfigurationsSize;
private final AbstractConfigurationEntryHandler configurationEntryHandler;
+ private final String expectedRunMode;
public ConfigurationEntryHandlerTest(String resourceConfiguration,
int expectedConfigurationsSize,
- AbstractConfigurationEntryHandler configurationEntryHandler) {
+ AbstractConfigurationEntryHandler configurationEntryHandler,
+ String expectedRunMode) {
this.resourceConfiguration = resourceConfiguration;
this.expectedConfigurationsSize = expectedConfigurationsSize;
this.configurationEntryHandler = configurationEntryHandler;
+ this.expectedRunMode = expectedRunMode;
}
@Test
@@ -102,13 +105,12 @@
configurationEntryHandler.handle(resourceConfiguration, archive, entry, converter);
- Configurations configurations = featuresManager.getTargetFeature().getConfigurations();
+ Configurations configurations = featuresManager.getRunMode(expectedRunMode).getConfigurations();
assertEquals(expectedConfigurationsSize, configurations.size());
-
if (this.resourceConfiguration.equals(REPOINIT_TESTCONFIG_PATH)) {
- assertEquals(EXPECTED_REPOINIT, featuresManager.getTargetFeature().getExtensions().getByName(Extension.EXTENSION_NAME_REPOINIT).getText());
+ assertEquals(EXPECTED_REPOINIT, featuresManager.getRunMode(expectedRunMode).getExtensions().getByName(Extension.EXTENSION_NAME_REPOINIT).getText());
}
if (expectedConfigurationsSize != 0) {
@@ -129,25 +131,25 @@
String path = "/jcr_root/apps/asd/config/";
return Arrays.asList(new Object[][] {
- { path + EXPECTED_PID + ".empty.cfg", 1, new PropertiesConfigurationEntryHandler() },
- { path + EXPECTED_PID + ".cfg", 1, new PropertiesConfigurationEntryHandler() },
+ { path + EXPECTED_PID + ".empty.cfg", 1, new PropertiesConfigurationEntryHandler(), null },
+ { path + EXPECTED_PID + ".cfg", 1, new PropertiesConfigurationEntryHandler(), null },
- { path + EXPECTED_PID + ".empty.cfg.json", 1, new JsonConfigurationEntryHandler() },
- { path + EXPECTED_PID + ".cfg.json", 1, new JsonConfigurationEntryHandler() },
+ { path + EXPECTED_PID + ".empty.cfg.json", 1, new JsonConfigurationEntryHandler(), null },
+ { path + EXPECTED_PID + ".cfg.json", 1, new JsonConfigurationEntryHandler(), null },
- { path + EXPECTED_PID + ".empty.config", 1, new ConfigurationEntryHandler() },
- { path + EXPECTED_PID + ".config", 1, new ConfigurationEntryHandler() },
+ { path + EXPECTED_PID + ".empty.config", 1, new ConfigurationEntryHandler(), null },
+ { path + EXPECTED_PID + ".config", 1, new ConfigurationEntryHandler(), null },
- { path + EXPECTED_PID + ".empty.xml", 1, new XmlConfigurationEntryHandler() },
- { path + EXPECTED_PID + ".xml", 1, new XmlConfigurationEntryHandler() },
+ { path + EXPECTED_PID + ".empty.xml", 1, new XmlConfigurationEntryHandler(), null },
+ { path + EXPECTED_PID + ".xml", 1, new XmlConfigurationEntryHandler(), null },
- { path + EXPECTED_PID + ".empty.xml.cfg", 1, new PropertiesConfigurationEntryHandler() },
- { path + EXPECTED_PID + ".xml.cfg", 1, new PropertiesConfigurationEntryHandler() },
+ { path + EXPECTED_PID + ".empty.xml.cfg", 1, new PropertiesConfigurationEntryHandler(), null },
+ { path + EXPECTED_PID + ".xml.cfg", 1, new PropertiesConfigurationEntryHandler(), null },
// runmode aware folders
- { "/jcr_root/apps/asd/config.author/" + EXPECTED_PID + ".config", 1, new ConfigurationEntryHandler() },
- { REPOINIT_TESTCONFIG_PATH, 0, new ConfigurationEntryHandler() },
- { "/jcr_root/apps/asd/config.publish/" + EXPECTED_PID + ".config", 1, new ConfigurationEntryHandler() },
+ { "/jcr_root/apps/asd/config.author/" + EXPECTED_PID + ".config", 1, new ConfigurationEntryHandler(), "author" },
+ { REPOINIT_TESTCONFIG_PATH, 0, new ConfigurationEntryHandler() , "author"},
+ { "/jcr_root/apps/asd/config.publish/" + EXPECTED_PID + ".config", 1, new ConfigurationEntryHandler(), "publish" }
});
}