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 2021/09/18 10:58:28 UTC
[sling-org-apache-sling-feature-cpconverter] branch master updated:
SLING-10822 : Avoid duplicate parsing of configuration pid
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 a3523f4 SLING-10822 : Avoid duplicate parsing of configuration pid
a3523f4 is described below
commit a3523f47ce9bfbd5bb347b6c90d07abdea725603
Author: Carsten Ziegeler <cz...@apache.org>
AuthorDate: Sat Sep 18 12:58:20 2021 +0200
SLING-10822 : Avoid duplicate parsing of configuration pid
---
.../features/DefaultFeaturesManager.java | 41 ++++++++++------------
.../cpconverter/features/FeaturesManager.java | 12 ++++++-
.../AbstractConfigurationEntryHandler.java | 4 ++-
.../ContentPackage2FeatureModelConverterTest.java | 14 ++++----
.../accesscontrol/EnforcePrincipalBasedTest.java | 4 +--
.../BundleEntryHandleSlingInitialContentTest.java | 13 +++++--
.../handlers/ConfigEntryHandlerTest.java | 13 ++++---
.../handlers/ConfigurationEntryHandlerTest.java | 2 +-
.../feature/cpconverter/handlers/RepoInitTest.java | 2 +-
9 files changed, 62 insertions(+), 43 deletions(-)
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 e6df73f..26d301c 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
@@ -269,7 +269,7 @@ public class DefaultFeaturesManager implements FeaturesManager, PackagesEventsEm
public void addSeed(@NotNull Feature seed) throws IOException, ConverterException {
for (Configuration conf : seed.getConfigurations()) {
- handleRepoinitAndMappings("seed", conf.isFactoryConfiguration() ? conf.getFactoryPid() : conf.getPid(), conf.getPid(), conf.getConfigurationProperties(), false);
+ handleRepoinitAndMappings("seed", conf, conf.getConfigurationProperties(), false);
}
if (seed.getExtensions().getByName(Extension.EXTENSION_NAME_REPOINIT) != null) {
String repoInitText = seed.getExtensions().getByName(Extension.EXTENSION_NAME_REPOINIT).getText();
@@ -308,23 +308,23 @@ public class DefaultFeaturesManager implements FeaturesManager, PackagesEventsEm
this.aclManager = aclManager;
}
- private boolean handleRepoinitAndMappings(String runMode, String configId, final String pid, Dictionary<String, Object> configurationProperties, boolean enforceServiceMappingByPrincipal)
+ private boolean handleRepoinitAndMappings(String runMode, Configuration cfg, Dictionary<String, Object> configurationProperties, boolean enforceServiceMappingByPrincipal)
throws IOException, ConverterException {
- if (REPOINIT_FACTORY_PID.equals(configId)) {
+ if (REPOINIT_FACTORY_PID.equals(cfg.getFactoryPid())) {
final String[] scripts = Converters.standardConverter().convert(configurationProperties.get("scripts")).to(String[].class);
if (scripts != null && scripts.length > 0) {
for (final String text : scripts) {
- getAclManager().addRepoinitExtention(pid, text, runMode, this);
+ getAclManager().addRepoinitExtention(cfg.getPid(), text, runMode, this);
}
}
- checkReferences(configurationProperties, configId);
+ checkReferences(configurationProperties, cfg.getPid());
return true;
- } else if (REPOINIT_PID.equals(configId)) {
- checkReferences(configurationProperties, configId);
+ } else if (REPOINIT_PID.equals(cfg.getPid())) {
+ checkReferences(configurationProperties, cfg.getPid());
return true;
- } else if (configId.startsWith(SERVICE_USER_MAPPING_PID)) {
+ } else if (cfg.getPid().startsWith(SERVICE_USER_MAPPING_PID)) {
String[] mappings = Converters.standardConverter().convert(configurationProperties.get("user.mapping")).to(String[].class);
- List<String> newMappings = convertMappings(mappings, configId, enforceServiceMappingByPrincipal);
+ List<String> newMappings = convertMappings(mappings, cfg.getPid(), enforceServiceMappingByPrincipal);
// replace 'user.mapping' property by the new mappings, which may have been refactored
if (!newMappings.isEmpty()) {
configurationProperties.put("user.mapping", newMappings.toArray(new String[0]));
@@ -357,40 +357,35 @@ public class DefaultFeaturesManager implements FeaturesManager, PackagesEventsEm
@Override
public void addConfiguration(@Nullable String runMode,
- @NotNull String pid,
+ @NotNull Configuration cfg,
@NotNull String path,
@NotNull Dictionary<String, Object> configurationProperties)
throws IOException, ConverterException {
- String factoryPid = null;
- int n = pid.indexOf('~');
- if (n > 0) {
- factoryPid = pid.substring(0, n);
- }
- if (handleRepoinitAndMappings(runMode, factoryPid != null ? factoryPid : pid, pid, configurationProperties, enforceServiceMappingByPrincipal)) {
+ if (handleRepoinitAndMappings(runMode, cfg, configurationProperties, enforceServiceMappingByPrincipal)) {
return;
}
Feature feature = getRunMode(runMode);
- Configuration configuration = feature.getConfigurations().getConfiguration(pid);
+ Configuration configuration = feature.getConfigurations().getConfiguration(cfg.getPid());
if (configuration == null) {
- configuration = new Configuration(pid);
+ configuration = new Configuration(cfg.getPid());
feature.getConfigurations().add(configuration);
- this.pidToPathMapping.put(pid, path);
+ this.pidToPathMapping.put(cfg.getPid(), path);
} else {
switch (this.configurationHandling) {
case STRICT:
throw new ConverterException("Configuration '"
- + pid
+ + cfg.getPid()
+ "' already defined in Feature Model '"
+ feature.getId().toMvnId()
+ "', set the 'mergeConfigurations' flag to 'true' if you want to merge multiple configurations with same PID");
case ORDERED:
- final String oldPath = this.pidToPathMapping.get(pid);
+ final String oldPath = this.pidToPathMapping.get(cfg.getPid());
if (oldPath == null || oldPath.compareTo(path) > 0) {
- this.pidToPathMapping.put(pid, path);
+ this.pidToPathMapping.put(cfg.getPid(), path);
feature.getConfigurations().remove(configuration);
- configuration = new Configuration(pid);
+ configuration = new Configuration(cfg.getPid());
feature.getConfigurations().add(configuration);
} else {
return;
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 2d1ac99..4bb25a7 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
@@ -21,6 +21,7 @@ import java.util.Dictionary;
import java.util.Map;
import org.apache.sling.feature.ArtifactId;
+import org.apache.sling.feature.Configuration;
import org.apache.sling.feature.Feature;
import org.apache.sling.feature.cpconverter.ConverterException;
import org.jetbrains.annotations.NotNull;
@@ -40,8 +41,17 @@ public interface FeaturesManager {
void addAPIRegionExport(@Nullable String runMode, @NotNull String exportedPackage);
+ /**
+ * Add a configuration
+ * @param runMode Optional runmode
+ * @param cfg The configuration object for the pid and factory pid, name - no properties
+ * @param path The path for the configuration
+ * @param configurationProperties The configuration properties
+ * @throws IOException if an error occurs
+ * @throws ConverterException if conversion fails
+ */
void addConfiguration(@Nullable String runMode,
- @NotNull String pid,
+ @NotNull Configuration cfg,
@NotNull String path,
@NotNull Dictionary<String, Object> configurationProperties)
throws IOException, ConverterException;
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 4b61ecc..398c57d 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
@@ -24,6 +24,7 @@ import java.util.regex.Matcher;
import org.apache.jackrabbit.vault.fs.io.Archive;
import org.apache.jackrabbit.vault.fs.io.Archive.Entry;
+import org.apache.sling.feature.Configuration;
import org.apache.sling.feature.cpconverter.ContentPackage2FeatureModelConverter;
import org.apache.sling.feature.cpconverter.ConverterException;
import org.apache.sling.feature.cpconverter.features.FeaturesManager;
@@ -77,7 +78,8 @@ abstract class AbstractConfigurationEntryHandler extends AbstractRegexEntryHandl
runMode = matcher.group("runmode");
FeaturesManager featuresManager = Objects.requireNonNull(converter.getFeaturesManager());
- featuresManager.addConfiguration(runMode, id, path, configurationProperties);
+ final Configuration cfg = new Configuration(id);
+ featuresManager.addConfiguration(runMode, cfg, path, configurationProperties);
}
} else {
throw new IllegalStateException("Something went terribly wrong: pattern '"
diff --git a/src/test/java/org/apache/sling/feature/cpconverter/ContentPackage2FeatureModelConverterTest.java b/src/test/java/org/apache/sling/feature/cpconverter/ContentPackage2FeatureModelConverterTest.java
index 6cef58c..b573b07 100644
--- a/src/test/java/org/apache/sling/feature/cpconverter/ContentPackage2FeatureModelConverterTest.java
+++ b/src/test/java/org/apache/sling/feature/cpconverter/ContentPackage2FeatureModelConverterTest.java
@@ -562,8 +562,8 @@ public class ContentPackage2FeatureModelConverterTest extends AbstractConverterT
.convert(packageFile);
String pid = "this.is.just.a.pid";
- converter.getFeaturesManager().addConfiguration(runmodeA, pid, "/a", new Hashtable<>());
- converter.getFeaturesManager().addConfiguration(runmodeB, pid, "/b", new Hashtable<>());
+ converter.getFeaturesManager().addConfiguration(runmodeA, new Configuration(pid), "/a", new Hashtable<>());
+ converter.getFeaturesManager().addConfiguration(runmodeB, new Configuration(pid), "/b", new Hashtable<>());
} finally {
deleteDirTree(outputDirectory);
@@ -583,8 +583,8 @@ public class ContentPackage2FeatureModelConverterTest extends AbstractConverterT
.convert(packageFile);
String pid = "this.is.just.a.pid";
- converter.getFeaturesManager().addConfiguration(null, pid, "/apps/a/config/pid.json", new Hashtable<String, Object>(){{put("foo", "a");}});
- converter.getFeaturesManager().addConfiguration(null, pid, "/apps/b/config/pid.json", new Hashtable<String, Object>(){{put("foo", "b");}});
+ converter.getFeaturesManager().addConfiguration(null, new Configuration(pid), "/apps/a/config/pid.json", new Hashtable<String, Object>(){{put("foo", "a");}});
+ converter.getFeaturesManager().addConfiguration(null, new Configuration(pid), "/apps/b/config/pid.json", new Hashtable<String, Object>(){{put("foo", "b");}});
Configuration c = converter.getFeaturesManager().getTargetFeature().getConfigurations().getConfiguration(pid);
assertNotNull(c);
@@ -607,9 +607,9 @@ public class ContentPackage2FeatureModelConverterTest extends AbstractConverterT
.convert(packageFile);
String pid = "this.is.just.a.pid";
- converter.getFeaturesManager().addConfiguration(null, pid, "/apps/b/config/pid.json", new Hashtable<String, Object>(){{put("foo", "b");}});
- converter.getFeaturesManager().addConfiguration(null, pid, "/apps/a/config/pid.json", new Hashtable<String, Object>(){{put("foo", "a");}});
- converter.getFeaturesManager().addConfiguration(null, pid, "/apps/c/config/pid.json", new Hashtable<String, Object>(){{put("foo", "c");}});
+ converter.getFeaturesManager().addConfiguration(null, new Configuration(pid), "/apps/b/config/pid.json", new Hashtable<String, Object>(){{put("foo", "b");}});
+ converter.getFeaturesManager().addConfiguration(null, new Configuration(pid), "/apps/a/config/pid.json", new Hashtable<String, Object>(){{put("foo", "a");}});
+ converter.getFeaturesManager().addConfiguration(null, new Configuration(pid), "/apps/c/config/pid.json", new Hashtable<String, Object>(){{put("foo", "c");}});
Configuration c = converter.getFeaturesManager().getTargetFeature().getConfigurations().getConfiguration(pid);
assertNotNull(c);
diff --git a/src/test/java/org/apache/sling/feature/cpconverter/accesscontrol/EnforcePrincipalBasedTest.java b/src/test/java/org/apache/sling/feature/cpconverter/accesscontrol/EnforcePrincipalBasedTest.java
index dcf311b..3c26e66 100644
--- a/src/test/java/org/apache/sling/feature/cpconverter/accesscontrol/EnforcePrincipalBasedTest.java
+++ b/src/test/java/org/apache/sling/feature/cpconverter/accesscontrol/EnforcePrincipalBasedTest.java
@@ -286,7 +286,7 @@ public class EnforcePrincipalBasedTest {
seed.getConfigurations().add(foo);
fm.init(ArtifactId.parse("groupId:artifactId:version1.0"));
- fm.addConfiguration("author", foo.getPid(), "/path", props);
+ fm.addConfiguration("author", foo, "/path", props);
// verify that invalid empty mapping has been stripped (without Exception)
String[] result = (String[]) foo.getProperties().get("user.mapping");
@@ -303,7 +303,7 @@ public class EnforcePrincipalBasedTest {
props.put("user.mapping", new String[]{"serviceName:subservice=[user1]","","serviceName2:subservice2=[user2]"});
fm.init(ArtifactId.parse("groupId:artifactId:version1.0"));
- fm.addConfiguration("author", foo.getPid(), "/path", props);
+ fm.addConfiguration("author", foo, "/path", props);
// verify that invalid empty mapping has been stripped (without Exception)
String[] result = (String[]) foo.getProperties().get("user.mapping");
diff --git a/src/test/java/org/apache/sling/feature/cpconverter/handlers/BundleEntryHandleSlingInitialContentTest.java b/src/test/java/org/apache/sling/feature/cpconverter/handlers/BundleEntryHandleSlingInitialContentTest.java
index 657d643..ae0068e 100644
--- a/src/test/java/org/apache/sling/feature/cpconverter/handlers/BundleEntryHandleSlingInitialContentTest.java
+++ b/src/test/java/org/apache/sling/feature/cpconverter/handlers/BundleEntryHandleSlingInitialContentTest.java
@@ -20,7 +20,6 @@ import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
-import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.when;
import java.io.File;
@@ -37,6 +36,7 @@ import org.apache.jackrabbit.vault.packaging.PackageProperties;
import org.apache.jackrabbit.vault.packaging.VaultPackage;
import org.apache.jackrabbit.vault.packaging.impl.PackageManagerImpl;
import org.apache.sling.feature.ArtifactId;
+import org.apache.sling.feature.Configuration;
import org.apache.sling.feature.cpconverter.ContentPackage2FeatureModelConverter.SlingInitialContentPolicy;
import org.apache.sling.feature.cpconverter.artifacts.SimpleFolderArtifactsDeployer;
import org.apache.sling.feature.cpconverter.vltpkg.VaultPackageAssembler;
@@ -56,6 +56,9 @@ public class BundleEntryHandleSlingInitialContentTest extends AbstractBundleEntr
@Captor
ArgumentCaptor<Dictionary<String, Object>> dictionaryCaptor;
+ @Captor
+ ArgumentCaptor<Configuration> cfgCaptor;
+
@Test
public void testSlingInitialContent() throws Exception {
setUpArchive("/jcr_root/apps/gav/install/io.wcm.handler.media-1.11.6.jar", "io.wcm.handler.media-1.11.6.jar");
@@ -122,8 +125,9 @@ public class BundleEntryHandleSlingInitialContentTest extends AbstractBundleEntr
// modified bundle
Mockito.verify(featuresManager).addArtifact(null, ArtifactId.fromMvnId("com.composum.nodes:composum-nodes-config:2.5.3-cp2fm-converted"), null);
// need to use ArgumentCaptur to properly compare string arrays
- Mockito.verify(featuresManager).addConfiguration(ArgumentMatchers.isNull(), ArgumentMatchers.eq("org.apache.sling.jcr.base.internal.LoginAdminWhitelist.fragment~composum_core_v2"), ArgumentMatchers.eq("/jcr_root/libs/composum/nodes/install/org.apache.sling.jcr.base.internal.LoginAdminWhitelist.fragment-composum_core_v2.config"), dictionaryCaptor.capture());
+ Mockito.verify(featuresManager).addConfiguration(ArgumentMatchers.isNull(), cfgCaptor.capture(), ArgumentMatchers.eq("/jcr_root/libs/composum/nodes/install/org.apache.sling.jcr.base.internal.LoginAdminWhitelist.fragment-composum_core_v2.config"), dictionaryCaptor.capture());
assertEquals("composum_core", dictionaryCaptor.getValue().get("whitelist.name"));
+ assertEquals("org.apache.sling.jcr.base.internal.LoginAdminWhitelist.fragment~composum_core_v2", cfgCaptor.getValue().getPid());
assertArrayEquals(new String[] {
"com.composum.nodes.commons",
"com.composum.nodes.pckgmgr",
@@ -148,8 +152,11 @@ public class BundleEntryHandleSlingInitialContentTest extends AbstractBundleEntr
// original bundle
Mockito.verify(featuresManager).addArtifact(null, ArtifactId.fromMvnId("com.composum.nodes:composum-nodes-config:2.5.3"), null);
// need to use ArgumentCaptur to properly compare string arrays
- Mockito.verify(featuresManager).addConfiguration(ArgumentMatchers.isNull(), ArgumentMatchers.eq("org.apache.sling.jcr.base.internal.LoginAdminWhitelist.fragment~composum_core_v2"), ArgumentMatchers.eq("/jcr_root/libs/composum/nodes/install/org.apache.sling.jcr.base.internal.LoginAdminWhitelist.fragment-composum_core_v2.config"), dictionaryCaptor.capture());
+ Mockito.verify(featuresManager).addConfiguration(ArgumentMatchers.isNull(),
+ cfgCaptor.capture(),
+ ArgumentMatchers.eq("/jcr_root/libs/composum/nodes/install/org.apache.sling.jcr.base.internal.LoginAdminWhitelist.fragment-composum_core_v2.config"), dictionaryCaptor.capture());
assertEquals("composum_core", dictionaryCaptor.getValue().get("whitelist.name"));
+ assertEquals("org.apache.sling.jcr.base.internal.LoginAdminWhitelist.fragment~composum_core_v2", cfgCaptor.getValue().getPid());
assertArrayEquals(new String[] {
"com.composum.nodes.commons",
"com.composum.nodes.pckgmgr",
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 ba877df..ff61978 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
@@ -51,6 +51,7 @@ import org.apache.sling.feature.io.json.FeatureJSONReader;
import org.apache.sling.feature.io.json.FeatureJSONWriter;
import org.jetbrains.annotations.NotNull;
import org.junit.Test;
+import org.mockito.ArgumentCaptor;
import org.mockito.Mockito;
public class ConfigEntryHandlerTest {
@@ -68,7 +69,7 @@ public class ConfigEntryHandlerTest {
Feature expected = new Feature(new ArtifactId("org.apache.sling", "org.apache.sling.cp2fm", "0.0.1", null, null));
FeaturesManager featuresManager = spy(DefaultFeaturesManager.class);
when(featuresManager.getTargetFeature()).thenReturn(expected);
- doCallRealMethod().when(featuresManager).addConfiguration(anyString(), anyString(), anyString(), any());
+ doCallRealMethod().when(featuresManager).addConfiguration(anyString(), any(), anyString(), any());
ContentPackage2FeatureModelConverter converter = mock(ContentPackage2FeatureModelConverter.class);
when(converter.getFeaturesManager()).thenReturn(featuresManager);
@@ -115,13 +116,17 @@ public class ConfigEntryHandlerTest {
AbstractConfigurationEntryHandler handler = new AbstractConfigurationEntryHandler("cfg") {
@Override
protected @NotNull Dictionary<String, Object> parseConfiguration(@NotNull String name, @NotNull InputStream input) throws IOException {
- return new Hashtable(){{put("foo", "bar");}};
+ return new Hashtable<String, Object>(){{put("foo", "bar");}};
}
};
handler.handle("/jcr_root/apps/foo/bar/config/baz/blub.cfg", archive, entry, converter);
- Mockito.verify(manager).addConfiguration(null, "blub", "/jcr_root/apps/foo/bar/config/baz/blub.cfg", new Hashtable(){{put("foo","bar");}});
- Mockito.verify(manager).addConfiguration(Mockito.any(), Mockito.anyString(), Mockito.anyString(), Mockito.any());
+ ArgumentCaptor<Configuration> cfgCaptor = ArgumentCaptor.forClass(Configuration.class);
+
+ Mockito.verify(manager).addConfiguration(Mockito.isNull(), cfgCaptor.capture(), Mockito.eq("/jcr_root/apps/foo/bar/config/baz/blub.cfg"),
+ Mockito.eq(new Hashtable<String, Object>(){{put("foo","bar");}}));
+ assertEquals("blub", cfgCaptor.getValue().getPid());
+ Mockito.verify(manager).addConfiguration(Mockito.any(), Mockito.any(), Mockito.anyString(), Mockito.any());
}
@Test
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 dcf357c..ea83ac9 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
@@ -156,7 +156,7 @@ public class ConfigurationEntryHandlerTest {
FeaturesManager featuresManager = spy(DefaultFeaturesManager.class);
((DefaultFeaturesManager) featuresManager).setEnforceServiceMappingByPrincipal(enforceServiceMappingByPrincipal);
when(featuresManager.getTargetFeature()).thenReturn(feature);
- doCallRealMethod().when(featuresManager).addConfiguration(anyString(), anyString(), anyString(), any());
+ doCallRealMethod().when(featuresManager).addConfiguration(anyString(), any(), anyString(), any());
when(featuresManager.getRunMode(anyString())).thenReturn(feature);
ContentPackage2FeatureModelConverter converter = mock(ContentPackage2FeatureModelConverter.class);
when(converter.getFeaturesManager()).thenReturn(featuresManager);
diff --git a/src/test/java/org/apache/sling/feature/cpconverter/handlers/RepoInitTest.java b/src/test/java/org/apache/sling/feature/cpconverter/handlers/RepoInitTest.java
index 92b5be1..5fbce0d 100644
--- a/src/test/java/org/apache/sling/feature/cpconverter/handlers/RepoInitTest.java
+++ b/src/test/java/org/apache/sling/feature/cpconverter/handlers/RepoInitTest.java
@@ -163,7 +163,7 @@ public class RepoInitTest {
Feature feature = new Feature(new ArtifactId("org.apache.sling", "org.apache.sling.cp2fm", "0.0.1", null, null));
FeaturesManager featuresManager = spy(DefaultFeaturesManager.class);
when(featuresManager.getTargetFeature()).thenReturn(feature);
- doCallRealMethod().when(featuresManager).addConfiguration(anyString(), anyString(), anyString(), any());
+ doCallRealMethod().when(featuresManager).addConfiguration(anyString(), any(), anyString(), any());
when(featuresManager.getRunMode(anyString())).thenReturn(feature);
AclManager aclManager = spy(new DefaultAclManager((enforcePrincipalBasedAcSetup) ? enforcedPath : null, "system"));