This is an automated email from the ASF dual-hosted git repository. sseifert pushed a commit to branch feature/SLING-12284-parent-60 in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-testing-caconfig-mock-plugin.git
commit 6c06cac84fa966bc349547ea05b366c1dd097935 Author: Stefan Seifert <stefanseif...@users.noreply.github.com> AuthorDate: Tue Apr 9 17:55:02 2024 +0200 SLING-12284 apply spotless code formatting --- pom.xml | 36 +++---- .../mock/caconfig/ConfigurationDataParts.java | 19 ++-- .../mock/caconfig/ConfigurationMetadataUtil.java | 20 ++-- .../mock/caconfig/ConfigurationPersistHelper.java | 45 ++++++--- .../testing/mock/caconfig/ContextPlugins.java | 108 ++++++++++++--------- .../mock/caconfig/MockContextAwareConfig.java | 45 ++++++--- .../testing/mock/caconfig/ContextPluginsTest.java | 37 ++++--- .../mock/caconfig/MockContextAwareConfigTest.java | 105 ++++++++++++-------- ...kContextAwareConfig_CustomPersistence2Test.java | 8 +- ...kContextAwareConfig_CustomPersistence3Test.java | 8 +- ...ckContextAwareConfig_CustomPersistenceTest.java | 8 +- .../testing/mock/caconfig/example/ListConfig.java | 1 - .../mock/caconfig/example/NestedConfig.java | 9 +- .../mock/caconfig/example/NestedConfigSub.java | 9 +- .../mock/caconfig/example/NestedConfigSub2.java | 7 +- .../mock/caconfig/example/NestedListConfig.java | 9 +- .../mock/caconfig/example/SimpleConfig.java | 1 - .../CustomConfigurationPersistenceStrategy.java | 39 ++++---- .../CustomConfigurationPersistenceStrategy2.java | 63 ++++++------ .../CustomConfigurationPersistenceStrategy3.java | 45 +++++---- 20 files changed, 351 insertions(+), 271 deletions(-) diff --git a/pom.xml b/pom.xml index 4d98322..42d9301 100644 --- a/pom.xml +++ b/pom.xml @@ -28,34 +28,21 @@ </parent> <artifactId>org.apache.sling.testing.caconfig-mock-plugin</artifactId> - <packaging>jar</packaging> <version>1.6.0-SNAPSHOT</version> + <packaging>jar</packaging> <name>Apache Sling Context-Aware Configuration Mock Plugin</name> <description>Mock Context Plugin for Apache Sling Context-Aware Configuration</description> - <properties> - <project.build.outputTimestamp>2023-12-11T14:53:01Z</project.build.outputTimestamp> - </properties> - <scm> <connection>scm:git:https://gitbox.apache.org/repos/asf/sling-org-apache-sling-testing-caconfig-mock-plugin.git</connection> <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/sling-org-apache-sling-testing-caconfig-mock-plugin.git</developerConnection> - <url>https://github.com/apache/sling-org-apache-sling-testing-caconfig-mock-plugin.git</url> <tag>HEAD</tag> + <url>https://github.com/apache/sling-org-apache-sling-testing-caconfig-mock-plugin.git</url> </scm> - <build> - <plugins> - <plugin> - <groupId>biz.aQute.bnd</groupId> - <artifactId>bnd-maven-plugin</artifactId> - </plugin> - <plugin> - <groupId>biz.aQute.bnd</groupId> - <artifactId>bnd-baseline-maven-plugin</artifactId> - </plugin> - </plugins> - </build> + <properties> + <project.build.outputTimestamp>2023-12-11T14:53:01Z</project.build.outputTimestamp> + </properties> <dependencies> <dependency> @@ -118,6 +105,19 @@ </dependency> </dependencies> + <build> + <plugins> + <plugin> + <groupId>biz.aQute.bnd</groupId> + <artifactId>bnd-maven-plugin</artifactId> + </plugin> + <plugin> + <groupId>biz.aQute.bnd</groupId> + <artifactId>bnd-baseline-maven-plugin</artifactId> + </plugin> + </plugins> + </build> + <profiles> <!-- Test with Sling CAConfig Impl/SPI 1.2 --> diff --git a/src/main/java/org/apache/sling/testing/mock/caconfig/ConfigurationDataParts.java b/src/main/java/org/apache/sling/testing/mock/caconfig/ConfigurationDataParts.java index 080492d..4e77081 100644 --- a/src/main/java/org/apache/sling/testing/mock/caconfig/ConfigurationDataParts.java +++ b/src/main/java/org/apache/sling/testing/mock/caconfig/ConfigurationDataParts.java @@ -27,22 +27,20 @@ import java.util.TreeMap; */ class ConfigurationDataParts { - private final Map<String,Object> values = new TreeMap<>(); - private final Map<String,Map<String,Object>> maps = new TreeMap<>(); - private final Map<String,Collection<Map<String,Object>>> collections = new TreeMap<>(); + private final Map<String, Object> values = new TreeMap<>(); + private final Map<String, Map<String, Object>> maps = new TreeMap<>(); + private final Map<String, Collection<Map<String, Object>>> collections = new TreeMap<>(); @SuppressWarnings("unchecked") - ConfigurationDataParts(Map<String,Object> input) { + ConfigurationDataParts(Map<String, Object> input) { for (Map.Entry<String, Object> entry : input.entrySet()) { String key = entry.getKey(); Object value = entry.getValue(); if (value instanceof Map) { - maps.put(key, (Map)value); - } - else if (value instanceof Collection) { - collections.put(key, (Collection)value); - } - else { + maps.put(key, (Map) value); + } else if (value instanceof Collection) { + collections.put(key, (Collection) value); + } else { values.put(key, value); } } @@ -59,5 +57,4 @@ class ConfigurationDataParts { Map<String, Collection<Map<String, Object>>> getCollections() { return collections; } - } diff --git a/src/main/java/org/apache/sling/testing/mock/caconfig/ConfigurationMetadataUtil.java b/src/main/java/org/apache/sling/testing/mock/caconfig/ConfigurationMetadataUtil.java index 0fdaa57..b5e65df 100644 --- a/src/main/java/org/apache/sling/testing/mock/caconfig/ConfigurationMetadataUtil.java +++ b/src/main/java/org/apache/sling/testing/mock/caconfig/ConfigurationMetadataUtil.java @@ -18,8 +18,6 @@ */ package org.apache.sling.testing.mock.caconfig; -import static org.apache.sling.caconfig.impl.ConfigurationNameConstants.CONFIGURATION_CLASSES_HEADER; - import java.io.File; import java.io.IOException; import java.io.InputStream; @@ -49,6 +47,8 @@ import org.osgi.framework.ServiceReference; import org.osgi.framework.Version; import org.reflections.Reflections; +import static org.apache.sling.caconfig.impl.ConfigurationNameConstants.CONFIGURATION_CLASSES_HEADER; + /** * Helper methods for registering Configuration annotation classes from the classpath. */ @@ -56,7 +56,8 @@ import org.reflections.Reflections; final class ConfigurationMetadataUtil { private static final @NotNull String @NotNull [] CONFIGURATION_CLASSES_FROM_MANIFEST; - private static final @NotNull ConcurrentMap<String, List<Class>> CONFIGURATION_CLASSES_FOR_PACKAGES = new ConcurrentHashMap<>(); + private static final @NotNull ConcurrentMap<String, List<Class>> CONFIGURATION_CLASSES_FOR_PACKAGES = + new ConcurrentHashMap<>(); static { // scan classpath for configuration classes bundle header entries only once @@ -76,7 +77,8 @@ final class ConfigurationMetadataUtil { * @param bundleContext Bundle context * @param classNames Java class names */ - public static void registerAnnotationClasses(@NotNull BundleContext bundleContext, @NotNull String @NotNull ... classNames) { + public static void registerAnnotationClasses( + @NotNull BundleContext bundleContext, @NotNull String @NotNull ... classNames) { Bundle bundle = new RegisterConfigurationMetadataBundle(bundleContext, Bundle.ACTIVE, classNames); BundleEvent event = new BundleEvent(BundleEvent.STARTED, bundle); MockOsgi.sendBundleEvent(bundleContext, event); @@ -87,7 +89,8 @@ final class ConfigurationMetadataUtil { * @param bundleContext Bundle context * @param classNames Java class names */ - public static void registerAnnotationClasses(@NotNull BundleContext bundleContext, @NotNull Class @NotNull ... classes) { + public static void registerAnnotationClasses( + @NotNull BundleContext bundleContext, @NotNull Class @NotNull ... classes) { String[] classNames = new String[classes.length]; for (int i = 0; i < classes.length; i++) { classNames[i] = classes[i].getName(); @@ -127,7 +130,6 @@ final class ConfigurationMetadataUtil { return classes; } - private static class RegisterConfigurationMetadataBundle implements Bundle { private final BundleContext bundleContext; @@ -153,7 +155,7 @@ final class ConfigurationMetadataUtil { } @Override - public Dictionary<String,String> getHeaders() { + public Dictionary<String, String> getHeaders() { Dictionary<String, String> headers = new Hashtable<>(); headers.put(CONFIGURATION_CLASSES_HEADER, classNames); return headers; @@ -240,7 +242,7 @@ final class ConfigurationMetadataUtil { } @Override - public Dictionary<String,String> getHeaders(String locale) { + public Dictionary<String, String> getHeaders(String locale) { return null; } @@ -293,7 +295,5 @@ final class ConfigurationMetadataUtil { public File getDataFile(String filename) { return null; } - } - } diff --git a/src/main/java/org/apache/sling/testing/mock/caconfig/ConfigurationPersistHelper.java b/src/main/java/org/apache/sling/testing/mock/caconfig/ConfigurationPersistHelper.java index 988d33e..c980cb3 100644 --- a/src/main/java/org/apache/sling/testing/mock/caconfig/ConfigurationPersistHelper.java +++ b/src/main/java/org/apache/sling/testing/mock/caconfig/ConfigurationPersistHelper.java @@ -64,14 +64,17 @@ class ConfigurationPersistHelper { void writeConfiguration(@NotNull String configName, @NotNull Map<String, Object> values) { // write properties of main configuration ConfigurationDataParts parts = new ConfigurationDataParts(values); - configManager.persistConfiguration(contextResource, configName, new ConfigurationPersistData(parts.getValues())); + configManager.persistConfiguration( + contextResource, configName, new ConfigurationPersistData(parts.getValues())); // write nested configuration and nested configuration collections - for (Map.Entry<String,Map<String,Object>> nestedMap : parts.getMaps().entrySet()) { + for (Map.Entry<String, Map<String, Object>> nestedMap : parts.getMaps().entrySet()) { writeConfiguration(getNestedConfigName(configName, nestedMap.getKey()), nestedMap.getValue()); } - for (Map.Entry<String,Collection<Map<String,Object>>> nestedCollection : parts.getCollections().entrySet()) { - writeConfigurationCollection(getNestedConfigName(configName, nestedCollection.getKey()), nestedCollection.getValue()); + for (Map.Entry<String, Collection<Map<String, Object>>> nestedCollection : + parts.getCollections().entrySet()) { + writeConfigurationCollection( + getNestedConfigName(configName, nestedCollection.getKey()), nestedCollection.getValue()); } } @@ -80,7 +83,8 @@ class ConfigurationPersistHelper { * @param configName Config name * @param values Configuration values */ - void writeConfigurationCollection(@NotNull String configName, @NotNull Collection<@NotNull Map<String, Object>> values) { + void writeConfigurationCollection( + @NotNull String configName, @NotNull Collection<@NotNull Map<String, Object>> values) { // split each collection item map in it's parts Map<String, ConfigurationDataParts> partsCollection = new LinkedHashMap<>(); int index = 0; @@ -90,20 +94,27 @@ class ConfigurationPersistHelper { // write properties of main configuration collection List<ConfigurationPersistData> items = partsCollection.entrySet().stream() - .map(entry -> new ConfigurationPersistData(entry.getValue().getValues()).collectionItemName(entry.getKey())) + .map(entry -> + new ConfigurationPersistData(entry.getValue().getValues()).collectionItemName(entry.getKey())) .collect(Collectors.toList()); - configManager.persistConfigurationCollection(contextResource, configName, - new ConfigurationCollectionPersistData(items)); + configManager.persistConfigurationCollection( + contextResource, configName, new ConfigurationCollectionPersistData(items)); // write nested configuration and nested configuration collections for (Map.Entry<String, ConfigurationDataParts> entry : partsCollection.entrySet()) { String itemName = entry.getKey(); ConfigurationDataParts parts = entry.getValue(); - for (Map.Entry<String,Map<String,Object>> nestedMap : parts.getMaps().entrySet()) { - writeConfiguration(getNestedCollectionItemConfigName(configName, itemName, nestedMap.getKey()), nestedMap.getValue()); + for (Map.Entry<String, Map<String, Object>> nestedMap : + parts.getMaps().entrySet()) { + writeConfiguration( + getNestedCollectionItemConfigName(configName, itemName, nestedMap.getKey()), + nestedMap.getValue()); } - for (Map.Entry<String,Collection<Map<String,Object>>> nestedCollection : parts.getCollections().entrySet()) { - writeConfigurationCollection(getNestedCollectionItemConfigName(configName, itemName, nestedCollection.getKey()), nestedCollection.getValue()); + for (Map.Entry<String, Collection<Map<String, Object>>> nestedCollection : + parts.getCollections().entrySet()) { + writeConfigurationCollection( + getNestedCollectionItemConfigName(configName, itemName, nestedCollection.getKey()), + nestedCollection.getValue()); } } } @@ -113,19 +124,21 @@ class ConfigurationPersistHelper { } private String getCollectionParentConfigName(@NotNull String configName) { - return StringUtils.defaultString(configurationPersistenceStrategy.getCollectionParentConfigName(configName, null), configName); + return StringUtils.defaultString( + configurationPersistenceStrategy.getCollectionParentConfigName(configName, null), configName); } private String getCollectionItemConfigName(@NotNull String configName) { - return StringUtils.defaultString(configurationPersistenceStrategy.getCollectionItemConfigName(configName, null), configName); + return StringUtils.defaultString( + configurationPersistenceStrategy.getCollectionItemConfigName(configName, null), configName); } private String getNestedConfigName(@NotNull String configName, @NotNull String key) { return getConfigName(configName) + "/" + key; } - private String getNestedCollectionItemConfigName(@NotNull String configName, @NotNull String itemName, @NotNull String key) { + private String getNestedCollectionItemConfigName( + @NotNull String configName, @NotNull String itemName, @NotNull String key) { return getCollectionItemConfigName(getCollectionParentConfigName(configName) + "/" + itemName) + "/" + key; } - } diff --git a/src/main/java/org/apache/sling/testing/mock/caconfig/ContextPlugins.java b/src/main/java/org/apache/sling/testing/mock/caconfig/ContextPlugins.java index 01f2752..7958c31 100644 --- a/src/main/java/org/apache/sling/testing/mock/caconfig/ContextPlugins.java +++ b/src/main/java/org/apache/sling/testing/mock/caconfig/ContextPlugins.java @@ -47,38 +47,42 @@ public final class ContextPlugins { /** * Context plugin for Sling Context-Aware Configuration. */ - public static final @NotNull ContextPlugin<? extends SlingContextImpl> CACONFIG = new AbstractContextPlugin<SlingContextImpl>() { - @Override - public void beforeSetUp(@NotNull SlingContextImpl context) throws Exception { - // register models injector and it's dependencies before setup, to ensure it is present - // before sling models are auto-detected from classpath - registerConfigurationResourceResolver(context); - registerConfigurationResolver(context); - registerConfigurationManagement(context); - registerModelsInjector(context); - } - @Override - public void afterSetUp(@NotNull SlingContextImpl context) throws Exception { - registerConfigurationResourceResolverDefaultImpl(context); - registerConfigurationResolverDefaultImpl(context); - - // Scan MANIFEST.MF in the classpath and automatically register all Configuration annotation classes found. - ConfigurationMetadataUtil.addAnnotationClassesForManifestEntries(context.bundleContext()); - } - }; + public static final @NotNull ContextPlugin<? extends SlingContextImpl> CACONFIG = + new AbstractContextPlugin<SlingContextImpl>() { + @Override + public void beforeSetUp(@NotNull SlingContextImpl context) throws Exception { + // register models injector and it's dependencies before setup, to ensure it is present + // before sling models are auto-detected from classpath + registerConfigurationResourceResolver(context); + registerConfigurationResolver(context); + registerConfigurationManagement(context); + registerModelsInjector(context); + } + + @Override + public void afterSetUp(@NotNull SlingContextImpl context) throws Exception { + registerConfigurationResourceResolverDefaultImpl(context); + registerConfigurationResolverDefaultImpl(context); + + // Scan MANIFEST.MF in the classpath and automatically register all Configuration annotation classes + // found. + ConfigurationMetadataUtil.addAnnotationClassesForManifestEntries(context.bundleContext()); + } + }; /** * Context plugin for Sling Context-Aware Configuration (without the default implementations). */ - public static final @NotNull ContextPlugin<? extends SlingContextImpl> CACONFIG_NODEF = new AbstractContextPlugin<SlingContextImpl>() { - @Override - public void afterSetUp(@NotNull SlingContextImpl context) throws Exception { - registerConfigurationResourceResolver(context); - registerConfigurationResolver(context); - registerConfigurationManagement(context); - registerModelsInjector(context); - } - }; + public static final @NotNull ContextPlugin<? extends SlingContextImpl> CACONFIG_NODEF = + new AbstractContextPlugin<SlingContextImpl>() { + @Override + public void afterSetUp(@NotNull SlingContextImpl context) throws Exception { + registerConfigurationResourceResolver(context); + registerConfigurationResolver(context); + registerConfigurationManagement(context); + registerModelsInjector(context); + } + }; /** * Register all services for ConfigurationResourceResolver (without the default implementations). @@ -88,9 +92,13 @@ public final class ContextPlugins { context.registerInjectActivateService(new ContextPathStrategyMultiplexerImpl()); - if (!registerByClassName(context, "org.apache.sling.caconfig.resource.impl.ConfigurationResourceResolvingStrategyMultiplexerImpl")) { + if (!registerByClassName( + context, + "org.apache.sling.caconfig.resource.impl.ConfigurationResourceResolvingStrategyMultiplexerImpl")) { // fallback to impl 1.2 - registerByClassName(context, "org.apache.sling.caconfig.resource.impl.ConfigurationResourceResolvingStrategyMultiplexer"); + registerByClassName( + context, + "org.apache.sling.caconfig.resource.impl.ConfigurationResourceResolvingStrategyMultiplexer"); } context.registerInjectActivateService(new ConfigurationResourceResolverImpl()); @@ -112,25 +120,31 @@ public final class ContextPlugins { private static void registerConfigurationResolver(SlingContextImpl context) { registerByClassName(context, "org.apache.sling.caconfig.management.impl.ConfigurationManagementSettingsImpl"); - if (!registerByClassName(context, "org.apache.sling.caconfig.management.impl.ConfigurationPersistenceStrategyMultiplexerImpl")) { + if (!registerByClassName( + context, "org.apache.sling.caconfig.management.impl.ConfigurationPersistenceStrategyMultiplexerImpl")) { // fallback to impl 1.2 - registerByClassName(context, "org.apache.sling.caconfig.management.impl.ConfigurationPersistenceStrategyMultiplexer"); + registerByClassName( + context, "org.apache.sling.caconfig.management.impl.ConfigurationPersistenceStrategyMultiplexer"); } // only required for impl 1.3+ registerByClassName(context, "org.apache.sling.caconfig.impl.ConfigurationPersistenceStrategyBridge"); - if (!registerByClassName(context, "org.apache.sling.caconfig.impl.metadata.ConfigurationMetadataProviderMultiplexerImpl")) { + if (!registerByClassName( + context, "org.apache.sling.caconfig.impl.metadata.ConfigurationMetadataProviderMultiplexerImpl")) { // fallback to impl 1.2 - registerByClassName(context, "org.apache.sling.caconfig.impl.metadata.ConfigurationMetadataProviderMultiplexer"); + registerByClassName( + context, "org.apache.sling.caconfig.impl.metadata.ConfigurationMetadataProviderMultiplexer"); } - if (!registerByClassName(context, "org.apache.sling.caconfig.impl.ConfigurationInheritanceStrategyMultiplexerImpl")) { + if (!registerByClassName( + context, "org.apache.sling.caconfig.impl.ConfigurationInheritanceStrategyMultiplexerImpl")) { // fallback to impl 1.2 (not existing in 1.1 or below) registerByClassName(context, "org.apache.sling.caconfig.impl.ConfigurationInheritanceStrategyMultiplexer"); } - if (!registerByClassName(context, "org.apache.sling.caconfig.impl.override.ConfigurationOverrideMultiplexerImpl")) { + if (!registerByClassName( + context, "org.apache.sling.caconfig.impl.override.ConfigurationOverrideMultiplexerImpl")) { // fallback to impl 1.2 (not existing in 1.1 or below) registerByClassName(context, "org.apache.sling.caconfig.impl.override.ConfigurationOverrideManager"); } @@ -147,10 +161,11 @@ public final class ContextPlugins { context.registerInjectActivateService(new DefaultConfigurationPersistenceStrategy()); // only required for impl 1.2+ - registerByClassName(context,"org.apache.sling.caconfig.impl.def.DefaultConfigurationInheritanceStrategy"); + registerByClassName(context, "org.apache.sling.caconfig.impl.def.DefaultConfigurationInheritanceStrategy"); // required for impl 1.6+ - registerByClassName(context, "org.apache.sling.caconfig.impl.def.DefaultConfigurationInjectResourceDetectionStrategy"); + registerByClassName( + context, "org.apache.sling.caconfig.impl.def.DefaultConfigurationInjectResourceDetectionStrategy"); } private static void registerConfigurationManagement(SlingContextImpl context) { @@ -158,12 +173,14 @@ public final class ContextPlugins { context.registerInjectActivateService(new AnnotationClassConfigurationMetadataProvider()); // required for impl 1.6 - registerByClassName(context, "org.apache.sling.caconfig.impl.ConfigurationInjectResourceDetectionStrategyMultiplexerImpl"); + registerByClassName( + context, "org.apache.sling.caconfig.impl.ConfigurationInjectResourceDetectionStrategyMultiplexerImpl"); } private static void registerModelsInjector(SlingContextImpl context) { // required for impl 1.6 - registerByClassName(context, "org.apache.sling.models.caconfig.impl.injectors.ContextAwareConfigurationInjector"); + registerByClassName( + context, "org.apache.sling.models.caconfig.impl.injectors.ContextAwareConfigurationInjector"); } @SuppressWarnings("null") @@ -172,17 +189,12 @@ public final class ContextPlugins { Class<?> clazz = Class.forName(className); context.registerInjectActivateService(clazz.newInstance()); return true; - } - catch (ClassNotFoundException ex) { + } catch (ClassNotFoundException ex) { return false; - } - catch (InstantiationException ex) { + } catch (InstantiationException ex) { throw new RuntimeException(ex); - } - catch (IllegalAccessException ex) { + } catch (IllegalAccessException ex) { throw new RuntimeException(ex); } - } - } diff --git a/src/main/java/org/apache/sling/testing/mock/caconfig/MockContextAwareConfig.java b/src/main/java/org/apache/sling/testing/mock/caconfig/MockContextAwareConfig.java index 7ffaf71..ea085ec 100644 --- a/src/main/java/org/apache/sling/testing/mock/caconfig/MockContextAwareConfig.java +++ b/src/main/java/org/apache/sling/testing/mock/caconfig/MockContextAwareConfig.java @@ -43,7 +43,8 @@ public final class MockContextAwareConfig { * @param context Sling context * @param classNames Java class names */ - public static void registerAnnotationClasses(@NotNull SlingContextImpl context, @NotNull String @NotNull ... classNames) { + public static void registerAnnotationClasses( + @NotNull SlingContextImpl context, @NotNull String @NotNull ... classNames) { ConfigurationMetadataUtil.registerAnnotationClasses(context.bundleContext(), classNames); } @@ -52,7 +53,8 @@ public final class MockContextAwareConfig { * @param context Sling context * @param classes Java classes */ - public static void registerAnnotationClasses(@NotNull SlingContextImpl context, @NotNull Class @NotNull ... classes) { + public static void registerAnnotationClasses( + @NotNull SlingContextImpl context, @NotNull Class @NotNull ... classes) { ConfigurationMetadataUtil.registerAnnotationClasses(context.bundleContext(), classes); } @@ -61,8 +63,10 @@ public final class MockContextAwareConfig { * @param context Sling context * @param packageNames Java package names */ - public static void registerAnnotationPackages(@NotNull SlingContextImpl context, @NotNull String @NotNull ... packageNames) { - Collection<Class> classes = ConfigurationMetadataUtil.getConfigurationClassesForPackages(StringUtils.join(packageNames, ",")); + public static void registerAnnotationPackages( + @NotNull SlingContextImpl context, @NotNull String @NotNull ... packageNames) { + Collection<Class> classes = + ConfigurationMetadataUtil.getConfigurationClassesForPackages(StringUtils.join(packageNames, ",")); registerAnnotationClasses(context, classes.toArray(new Class[classes.size()])); } @@ -74,7 +78,10 @@ public final class MockContextAwareConfig { * @param configClass Configuration class * @param values Configuration values */ - public static void writeConfiguration(@NotNull SlingContextImpl context, @NotNull String contextPath, @NotNull Class<?> configClass, + public static void writeConfiguration( + @NotNull SlingContextImpl context, + @NotNull String contextPath, + @NotNull Class<?> configClass, @NotNull Map<String, Object> values) { writeConfiguration(context, contextPath, getConfigurationName(configClass), values); } @@ -87,7 +94,10 @@ public final class MockContextAwareConfig { * @param configName Config name * @param values Configuration values */ - public static void writeConfiguration(@NotNull SlingContextImpl context, @NotNull String contextPath, @NotNull String configName, + public static void writeConfiguration( + @NotNull SlingContextImpl context, + @NotNull String contextPath, + @NotNull String configName, @NotNull Map<String, Object> values) { ConfigurationPersistHelper helper = new ConfigurationPersistHelper(context, contextPath); helper.writeConfiguration(configName, values); @@ -101,7 +111,11 @@ public final class MockContextAwareConfig { * @param configClass Configuration class * @param values Configuration values */ - public static void writeConfiguration(@NotNull SlingContextImpl context, @NotNull String contextPath, Class<?> configClass, @NotNull Object @NotNull ... values) { + public static void writeConfiguration( + @NotNull SlingContextImpl context, + @NotNull String contextPath, + Class<?> configClass, + @NotNull Object @NotNull ... values) { writeConfiguration(context, contextPath, getConfigurationName(configClass), values); } @@ -113,7 +127,11 @@ public final class MockContextAwareConfig { * @param configName Config name * @param values Configuration values */ - public static void writeConfiguration(@NotNull SlingContextImpl context, @NotNull String contextPath, @NotNull String configName, @NotNull Object @NotNull ... values) { + public static void writeConfiguration( + @NotNull SlingContextImpl context, + @NotNull String contextPath, + @NotNull String configName, + @NotNull Object @NotNull ... values) { writeConfiguration(context, contextPath, configName, MapUtil.toMap(values)); } @@ -125,7 +143,10 @@ public final class MockContextAwareConfig { * @param configClass Configuration class * @param values Configuration values */ - public static void writeConfigurationCollection(@NotNull SlingContextImpl context, @NotNull String contextPath, @NotNull Class<?> configClass, + public static void writeConfigurationCollection( + @NotNull SlingContextImpl context, + @NotNull String contextPath, + @NotNull Class<?> configClass, @NotNull Collection<@NotNull Map<String, Object>> values) { writeConfigurationCollection(context, contextPath, getConfigurationName(configClass), values); } @@ -138,7 +159,10 @@ public final class MockContextAwareConfig { * @param configName Config name * @param values Configuration values */ - public static void writeConfigurationCollection(@NotNull SlingContextImpl context, @NotNull String contextPath, @NotNull String configName, + public static void writeConfigurationCollection( + @NotNull SlingContextImpl context, + @NotNull String contextPath, + @NotNull String configName, @NotNull Collection<@NotNull Map<String, Object>> values) { ConfigurationPersistHelper helper = new ConfigurationPersistHelper(context, contextPath); helper.writeConfigurationCollection(configName, values); @@ -152,5 +176,4 @@ public final class MockContextAwareConfig { } return configClass.getName(); } - } diff --git a/src/test/java/org/apache/sling/testing/mock/caconfig/ContextPluginsTest.java b/src/test/java/org/apache/sling/testing/mock/caconfig/ContextPluginsTest.java index 11e7ba1..aeeb157 100644 --- a/src/test/java/org/apache/sling/testing/mock/caconfig/ContextPluginsTest.java +++ b/src/test/java/org/apache/sling/testing/mock/caconfig/ContextPluginsTest.java @@ -18,10 +18,6 @@ */ package org.apache.sling.testing.mock.caconfig; -import static org.apache.sling.testing.mock.caconfig.ContextPlugins.CACONFIG; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - import org.apache.sling.api.resource.Resource; import org.apache.sling.api.resource.ValueMap; import org.apache.sling.caconfig.ConfigurationBuilder; @@ -32,15 +28,17 @@ import org.junit.Before; import org.junit.Rule; import org.junit.Test; +import static org.apache.sling.testing.mock.caconfig.ContextPlugins.CACONFIG; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + @SuppressWarnings("null") public class ContextPluginsTest { private static final String CONFIG_NAME = "testConfig"; @Rule - public SlingContext context = new SlingContextBuilder() - .plugin(CACONFIG) - .build(); + public SlingContext context = new SlingContextBuilder().plugin(CACONFIG).build(); private Resource contextResource; @@ -53,28 +51,37 @@ public class ContextPluginsTest { MockContextAwareConfig.registerAnnotationClasses(context, SimpleConfig.class); // write config - MockContextAwareConfig.writeConfiguration(context, contextResource.getPath(), SimpleConfig.class, - "stringParam", "value1", - "intParam", 123, - "boolParam", true); + MockContextAwareConfig.writeConfiguration( + context, + contextResource.getPath(), + SimpleConfig.class, + "stringParam", + "value1", + "intParam", + 123, + "boolParam", + true); } @Test public void testValueMap() { // read config - ValueMap props = contextResource.adaptTo(ConfigurationBuilder.class).name(CONFIG_NAME).asValueMap(); + ValueMap props = contextResource + .adaptTo(ConfigurationBuilder.class) + .name(CONFIG_NAME) + .asValueMap(); assertEquals("value1", props.get("stringParam", String.class)); - assertEquals((Integer)123, props.get("intParam", Integer.class)); + assertEquals((Integer) 123, props.get("intParam", Integer.class)); assertTrue(props.get("boolParam", Boolean.class)); } @Test public void testAnnotationClass() { // read config - SimpleConfig config = contextResource.adaptTo(ConfigurationBuilder.class).as(SimpleConfig.class); + SimpleConfig config = + contextResource.adaptTo(ConfigurationBuilder.class).as(SimpleConfig.class); assertEquals("value1", config.stringParam()); assertEquals(123, config.intParam()); assertTrue(config.boolParam()); } - } diff --git a/src/test/java/org/apache/sling/testing/mock/caconfig/MockContextAwareConfigTest.java b/src/test/java/org/apache/sling/testing/mock/caconfig/MockContextAwareConfigTest.java index 92de0c9..bef9eb7 100644 --- a/src/test/java/org/apache/sling/testing/mock/caconfig/MockContextAwareConfigTest.java +++ b/src/test/java/org/apache/sling/testing/mock/caconfig/MockContextAwareConfigTest.java @@ -18,11 +18,6 @@ */ package org.apache.sling.testing.mock.caconfig; -import static org.apache.sling.testing.mock.caconfig.ContextPlugins.CACONFIG; -import static org.junit.Assert.assertArrayEquals; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - import java.util.Collection; import java.util.Iterator; import java.util.List; @@ -44,12 +39,15 @@ import org.junit.Before; import org.junit.Rule; import org.junit.Test; +import static org.apache.sling.testing.mock.caconfig.ContextPlugins.CACONFIG; +import static org.junit.Assert.assertArrayEquals; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + public class MockContextAwareConfigTest { @Rule - public SlingContext context = new SlingContextBuilder() - .plugin(CACONFIG) - .build(); + public SlingContext context = new SlingContextBuilder().plugin(CACONFIG).build(); @Before public void setUp() { @@ -62,8 +60,8 @@ public class MockContextAwareConfigTest { @Test public void testSingletonConfig() { - MockContextAwareConfig.writeConfiguration(context, "/content/region/site", SimpleConfig.class, - "stringParam", "value1"); + MockContextAwareConfig.writeConfiguration( + context, "/content/region/site", SimpleConfig.class, "stringParam", "value1"); SimpleConfig config = getConfig(SimpleConfig.class); assertEquals("value1", config.stringParam()); @@ -72,9 +70,11 @@ public class MockContextAwareConfigTest { @Test public void testCollectionConfig() { - MockContextAwareConfig.writeConfigurationCollection(context, "/content/region/site", ListConfig.class, List.of( - Map.of("stringParam", "value1"), - Map.of("stringParam", "value2"))); + MockContextAwareConfig.writeConfigurationCollection( + context, + "/content/region/site", + ListConfig.class, + List.of(Map.of("stringParam", "value1"), Map.of("stringParam", "value2"))); Collection<ListConfig> config = getConfigCollection(ListConfig.class); assertEquals(2, config.size()); @@ -91,10 +91,14 @@ public class MockContextAwareConfigTest { @Test public void testCollectionConfig_DifferentOrder() { - MockContextAwareConfig.writeConfigurationCollection(context, "/content/region/site", ListConfig.class, List.of( - Map.of("stringParam", "value2"), - Map.of("stringParam", "value3"), - Map.of("stringParam", "value1"))); + MockContextAwareConfig.writeConfigurationCollection( + context, + "/content/region/site", + ListConfig.class, + List.of( + Map.of("stringParam", "value2"), + Map.of("stringParam", "value3"), + Map.of("stringParam", "value1"))); Collection<ListConfig> config = getConfigCollection(ListConfig.class); assertEquals(3, config.size()); @@ -115,17 +119,23 @@ public class MockContextAwareConfigTest { @Test public void testNestedSingletonConfig() { - MockContextAwareConfig.writeConfiguration(context, "/content/region/site", NestedConfig.class, - "stringParam", "value1", - "sub", List.of( - Map.of("subStringParam", "v1", "intParam", 5, "stringArrayParam", new String[] {"v1a","v1b"}), + MockContextAwareConfig.writeConfiguration( + context, + "/content/region/site", + NestedConfig.class, + "stringParam", + "value1", + "sub", + List.of( + Map.of("subStringParam", "v1", "intParam", 5, "stringArrayParam", new String[] {"v1a", "v1b"}), Map.of("subStringParam", "v2")), - "sub2", Map.of( + "sub2", + Map.of( "sub2StringParam", "v3", "sub", Map.of("subStringParam", "v4"), - "subList", List.of(Map.of("subStringParam", "v5a"),Map.of("subStringParam", "v5b"))), - "sub2List", List.of( - Map.of("sub2StringParam", "v6"))); + "subList", List.of(Map.of("subStringParam", "v5a"), Map.of("subStringParam", "v5b"))), + "sub2List", + List.of(Map.of("sub2StringParam", "v6"))); NestedConfig config = getConfig(NestedConfig.class); assertEquals("value1", config.stringParam()); @@ -134,7 +144,7 @@ public class MockContextAwareConfigTest { assertEquals(2, sub.length); assertEquals("v1", sub[0].subStringParam()); assertEquals(5, sub[0].intParam()); - assertArrayEquals(new String[] {"v1a","v1b"}, sub[0].stringArrayParam()); + assertArrayEquals(new String[] {"v1a", "v1b"}, sub[0].stringArrayParam()); assertEquals("v2", sub[1].subStringParam()); NestedConfigSub2 sub2 = config.sub2(); @@ -152,18 +162,31 @@ public class MockContextAwareConfigTest { @Test public void testNestedCollectionConfig() { - MockContextAwareConfig.writeConfigurationCollection(context, "/content/region/site", NestedListConfig.class, List.of( - Map.of("stringParam", "value1", - "sub", List.of( - Map.of("subStringParam", "v1", "intParam", 5, "stringArrayParam", new String[] {"v1a","v1b"}), - Map.of("subStringParam", "v2")), - "sub2", Map.of( - "sub2StringParam", "v3", - "sub", Map.of("subStringParam", "v4"), - "subList", List.of(Map.of("subStringParam", "v5a"),Map.of("subStringParam", "v5b"))), - "sub2List", List.of( - Map.of("sub2StringParam", "v6"))), - Map.of("stringParam", "value2"))); + MockContextAwareConfig.writeConfigurationCollection( + context, + "/content/region/site", + NestedListConfig.class, + List.of( + Map.of( + "stringParam", + "value1", + "sub", + List.of( + Map.of("subStringParam", "v1", "intParam", 5, "stringArrayParam", new String[] { + "v1a", "v1b" + }), + Map.of("subStringParam", "v2")), + "sub2", + Map.of( + "sub2StringParam", "v3", + "sub", Map.of("subStringParam", "v4"), + "subList", + List.of( + Map.of("subStringParam", "v5a"), + Map.of("subStringParam", "v5b"))), + "sub2List", + List.of(Map.of("sub2StringParam", "v6"))), + Map.of("stringParam", "value2"))); Collection<NestedListConfig> config = getConfigCollection(NestedListConfig.class); assertEquals(2, config.size()); @@ -176,7 +199,7 @@ public class MockContextAwareConfigTest { assertEquals(2, sub.length); assertEquals("v1", sub[0].subStringParam()); assertEquals(5, sub[0].intParam()); - assertArrayEquals(new String[] {"v1a","v1b"}, sub[0].stringArrayParam()); + assertArrayEquals(new String[] {"v1a", "v1b"}, sub[0].stringArrayParam()); assertEquals("v2", sub[1].subStringParam()); NestedConfigSub2 sub2 = item1.sub2(); @@ -206,9 +229,9 @@ public class MockContextAwareConfigTest { @SuppressWarnings("null") private <T> @NotNull Collection<@Nullable T> getConfigCollection(@NotNull Class<T> configClass) { Resource resource = context.request().getResource(); - Collection<@Nullable T> result = resource.adaptTo(ConfigurationBuilder.class).asCollection(configClass); + Collection<@Nullable T> result = + resource.adaptTo(ConfigurationBuilder.class).asCollection(configClass); assertNotNull(result); return result; } - } diff --git a/src/test/java/org/apache/sling/testing/mock/caconfig/MockContextAwareConfig_CustomPersistence2Test.java b/src/test/java/org/apache/sling/testing/mock/caconfig/MockContextAwareConfig_CustomPersistence2Test.java index 77ae670..502aebf 100644 --- a/src/test/java/org/apache/sling/testing/mock/caconfig/MockContextAwareConfig_CustomPersistence2Test.java +++ b/src/test/java/org/apache/sling/testing/mock/caconfig/MockContextAwareConfig_CustomPersistence2Test.java @@ -28,10 +28,12 @@ public class MockContextAwareConfig_CustomPersistence2Test extends MockContextAw @Override @Before public void setUp() { - context.registerService(ConfigurationPersistenceStrategy2.class, new CustomConfigurationPersistenceStrategy2(), - Constants.SERVICE_RANKING, 2000); + context.registerService( + ConfigurationPersistenceStrategy2.class, + new CustomConfigurationPersistenceStrategy2(), + Constants.SERVICE_RANKING, + 2000); super.setUp(); } - } diff --git a/src/test/java/org/apache/sling/testing/mock/caconfig/MockContextAwareConfig_CustomPersistence3Test.java b/src/test/java/org/apache/sling/testing/mock/caconfig/MockContextAwareConfig_CustomPersistence3Test.java index 4fabda3..dfe683b 100644 --- a/src/test/java/org/apache/sling/testing/mock/caconfig/MockContextAwareConfig_CustomPersistence3Test.java +++ b/src/test/java/org/apache/sling/testing/mock/caconfig/MockContextAwareConfig_CustomPersistence3Test.java @@ -28,10 +28,12 @@ public class MockContextAwareConfig_CustomPersistence3Test extends MockContextAw @Override @Before public void setUp() { - context.registerService(ConfigurationPersistenceStrategy2.class, new CustomConfigurationPersistenceStrategy3(), - Constants.SERVICE_RANKING, 2000); + context.registerService( + ConfigurationPersistenceStrategy2.class, + new CustomConfigurationPersistenceStrategy3(), + Constants.SERVICE_RANKING, + 2000); super.setUp(); } - } diff --git a/src/test/java/org/apache/sling/testing/mock/caconfig/MockContextAwareConfig_CustomPersistenceTest.java b/src/test/java/org/apache/sling/testing/mock/caconfig/MockContextAwareConfig_CustomPersistenceTest.java index 5278ad5..e6c872b 100644 --- a/src/test/java/org/apache/sling/testing/mock/caconfig/MockContextAwareConfig_CustomPersistenceTest.java +++ b/src/test/java/org/apache/sling/testing/mock/caconfig/MockContextAwareConfig_CustomPersistenceTest.java @@ -28,10 +28,12 @@ public class MockContextAwareConfig_CustomPersistenceTest extends MockContextAwa @Override @Before public void setUp() { - context.registerService(ConfigurationPersistenceStrategy2.class, new CustomConfigurationPersistenceStrategy(), - Constants.SERVICE_RANKING, 2000); + context.registerService( + ConfigurationPersistenceStrategy2.class, + new CustomConfigurationPersistenceStrategy(), + Constants.SERVICE_RANKING, + 2000); super.setUp(); } - } diff --git a/src/test/java/org/apache/sling/testing/mock/caconfig/example/ListConfig.java b/src/test/java/org/apache/sling/testing/mock/caconfig/example/ListConfig.java index 4f7c701..e6f3738 100644 --- a/src/test/java/org/apache/sling/testing/mock/caconfig/example/ListConfig.java +++ b/src/test/java/org/apache/sling/testing/mock/caconfig/example/ListConfig.java @@ -28,5 +28,4 @@ public @interface ListConfig { int intParam() default 5; boolean boolParam(); - } diff --git a/src/test/java/org/apache/sling/testing/mock/caconfig/example/NestedConfig.java b/src/test/java/org/apache/sling/testing/mock/caconfig/example/NestedConfig.java index 80fd4aa..b146f5a 100644 --- a/src/test/java/org/apache/sling/testing/mock/caconfig/example/NestedConfig.java +++ b/src/test/java/org/apache/sling/testing/mock/caconfig/example/NestedConfig.java @@ -26,12 +26,11 @@ import org.apache.sling.caconfig.annotation.Configuration; @Configuration public @interface NestedConfig { - String stringParam(); + String stringParam(); - NestedConfigSub[] sub(); + NestedConfigSub[] sub(); - NestedConfigSub2 sub2(); - - NestedConfigSub2[] sub2List(); + NestedConfigSub2 sub2(); + NestedConfigSub2[] sub2List(); } diff --git a/src/test/java/org/apache/sling/testing/mock/caconfig/example/NestedConfigSub.java b/src/test/java/org/apache/sling/testing/mock/caconfig/example/NestedConfigSub.java index 8714c9e..07ec767 100644 --- a/src/test/java/org/apache/sling/testing/mock/caconfig/example/NestedConfigSub.java +++ b/src/test/java/org/apache/sling/testing/mock/caconfig/example/NestedConfigSub.java @@ -23,12 +23,9 @@ package org.apache.sling.testing.mock.caconfig.example; */ public @interface NestedConfigSub { - String subStringParam(); + String subStringParam(); - int intParam(); - - String[] stringArrayParam() default { - "value1", "value2" - }; + int intParam(); + String[] stringArrayParam() default {"value1", "value2"}; } diff --git a/src/test/java/org/apache/sling/testing/mock/caconfig/example/NestedConfigSub2.java b/src/test/java/org/apache/sling/testing/mock/caconfig/example/NestedConfigSub2.java index c640056..f9caacf 100644 --- a/src/test/java/org/apache/sling/testing/mock/caconfig/example/NestedConfigSub2.java +++ b/src/test/java/org/apache/sling/testing/mock/caconfig/example/NestedConfigSub2.java @@ -23,10 +23,9 @@ package org.apache.sling.testing.mock.caconfig.example; */ public @interface NestedConfigSub2 { - String sub2StringParam(); + String sub2StringParam(); - NestedConfigSub sub(); - - NestedConfigSub[] subList(); + NestedConfigSub sub(); + NestedConfigSub[] subList(); } diff --git a/src/test/java/org/apache/sling/testing/mock/caconfig/example/NestedListConfig.java b/src/test/java/org/apache/sling/testing/mock/caconfig/example/NestedListConfig.java index 28e7c27..ff0daee 100644 --- a/src/test/java/org/apache/sling/testing/mock/caconfig/example/NestedListConfig.java +++ b/src/test/java/org/apache/sling/testing/mock/caconfig/example/NestedListConfig.java @@ -26,12 +26,11 @@ import org.apache.sling.caconfig.annotation.Configuration; @Configuration(collection = true) public @interface NestedListConfig { - String stringParam(); + String stringParam(); - NestedConfigSub[] sub(); + NestedConfigSub[] sub(); - NestedConfigSub2 sub2(); - - NestedConfigSub2[] sub2List(); + NestedConfigSub2 sub2(); + NestedConfigSub2[] sub2List(); } diff --git a/src/test/java/org/apache/sling/testing/mock/caconfig/example/SimpleConfig.java b/src/test/java/org/apache/sling/testing/mock/caconfig/example/SimpleConfig.java index 53ab6ec..26bb48f 100644 --- a/src/test/java/org/apache/sling/testing/mock/caconfig/example/SimpleConfig.java +++ b/src/test/java/org/apache/sling/testing/mock/caconfig/example/SimpleConfig.java @@ -28,5 +28,4 @@ public @interface SimpleConfig { int intParam() default 5; boolean boolParam(); - } diff --git a/src/test/java/org/apache/sling/testing/mock/caconfig/persistence/CustomConfigurationPersistenceStrategy.java b/src/test/java/org/apache/sling/testing/mock/caconfig/persistence/CustomConfigurationPersistenceStrategy.java index 6d76318..e73aecc 100644 --- a/src/test/java/org/apache/sling/testing/mock/caconfig/persistence/CustomConfigurationPersistenceStrategy.java +++ b/src/test/java/org/apache/sling/testing/mock/caconfig/persistence/CustomConfigurationPersistenceStrategy.java @@ -18,8 +18,6 @@ */ package org.apache.sling.testing.mock.caconfig.persistence; -import static org.junit.Assert.assertNotNull; - import java.util.HashSet; import java.util.Map; @@ -38,6 +36,8 @@ import org.apache.sling.caconfig.spi.ConfigurationPersistenceStrategy2; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import static org.junit.Assert.assertNotNull; + /** * This is a variant of {@link org.apache.sling.caconfig.impl.def.DefaultConfigurationPersistenceStrategy} * which reads and stores data from a sub-resources named "jcr:content". @@ -102,7 +102,9 @@ public class CustomConfigurationPersistenceStrategy implements ConfigurationPers } @Override - public boolean persistConfiguration(@NotNull ResourceResolver resourceResolver, @NotNull String configResourcePath, + public boolean persistConfiguration( + @NotNull ResourceResolver resourceResolver, + @NotNull String configResourcePath, @NotNull ConfigurationPersistData data) { getOrCreateResource(resourceResolver, configResourcePath + "/" + CHILD_NODE_NAME, data.getProperties()); commit(resourceResolver); @@ -110,9 +112,12 @@ public class CustomConfigurationPersistenceStrategy implements ConfigurationPers } @Override - public boolean persistConfigurationCollection(@NotNull ResourceResolver resourceResolver, @NotNull String configResourceCollectionParentPath, + public boolean persistConfigurationCollection( + @NotNull ResourceResolver resourceResolver, + @NotNull String configResourceCollectionParentPath, @NotNull ConfigurationCollectionPersistData data) { - Resource configResourceParent = getOrCreateResource(resourceResolver, configResourceCollectionParentPath, ValueMap.EMPTY); + Resource configResourceParent = + getOrCreateResource(resourceResolver, configResourceCollectionParentPath, ValueMap.EMPTY); // delete existing children and create new ones deleteChildren(configResourceParent); @@ -136,22 +141,23 @@ public class CustomConfigurationPersistenceStrategy implements ConfigurationPers if (resource != null) { try { resourceResolver.delete(resource); - } - catch (PersistenceException ex) { - throw new ConfigurationPersistenceException("Unable to delete configuration at " + configResourcePath, ex); + } catch (PersistenceException ex) { + throw new ConfigurationPersistenceException( + "Unable to delete configuration at " + configResourcePath, ex); } } commit(resourceResolver); return true; } - private Resource getOrCreateResource(ResourceResolver resourceResolver, String path, Map<String,Object> properties) { + private Resource getOrCreateResource( + ResourceResolver resourceResolver, String path, Map<String, Object> properties) { try { - Resource resource = ResourceUtil.getOrCreateResource(resourceResolver, path, DEFAULT_RESOURCE_TYPE, DEFAULT_RESOURCE_TYPE, false); + Resource resource = ResourceUtil.getOrCreateResource( + resourceResolver, path, DEFAULT_RESOURCE_TYPE, DEFAULT_RESOURCE_TYPE, false); replaceProperties(resource, properties); return resource; - } - catch (PersistenceException ex) { + } catch (PersistenceException ex) { throw new ConfigurationPersistenceException("Unable to persist configuration to " + path, ex); } } @@ -162,14 +168,13 @@ public class CustomConfigurationPersistenceStrategy implements ConfigurationPers for (Resource child : resource.getChildren()) { resourceResolver.delete(child); } - } - catch (PersistenceException ex) { + } catch (PersistenceException ex) { throw new ConfigurationPersistenceException("Unable to remove children from " + resource.getPath(), ex); } } @SuppressWarnings("null") - private void replaceProperties(Resource resource, Map<String,Object> properties) { + private void replaceProperties(Resource resource, Map<String, Object> properties) { ModifiableValueMap modValueMap = resource.adaptTo(ModifiableValueMap.class); // remove all existing properties that do not have jcr: namespace for (String propertyName : new HashSet<>(modValueMap.keySet())) { @@ -184,10 +189,8 @@ public class CustomConfigurationPersistenceStrategy implements ConfigurationPers private void commit(ResourceResolver resourceResolver) { try { resourceResolver.commit(); - } - catch (PersistenceException ex) { + } catch (PersistenceException ex) { throw new ConfigurationPersistenceException("Unable to save configuration: " + ex.getMessage(), ex); } } - } diff --git a/src/test/java/org/apache/sling/testing/mock/caconfig/persistence/CustomConfigurationPersistenceStrategy2.java b/src/test/java/org/apache/sling/testing/mock/caconfig/persistence/CustomConfigurationPersistenceStrategy2.java index 1f9cb38..c4d6c92 100644 --- a/src/test/java/org/apache/sling/testing/mock/caconfig/persistence/CustomConfigurationPersistenceStrategy2.java +++ b/src/test/java/org/apache/sling/testing/mock/caconfig/persistence/CustomConfigurationPersistenceStrategy2.java @@ -18,8 +18,6 @@ */ package org.apache.sling.testing.mock.caconfig.persistence; -import static org.junit.Assert.assertNotNull; - import java.util.HashSet; import java.util.Map; import java.util.regex.Pattern; @@ -39,6 +37,8 @@ import org.apache.sling.caconfig.spi.ConfigurationPersistenceStrategy2; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import static org.junit.Assert.assertNotNull; + /** * This is a variant of {@link org.apache.sling.caconfig.impl.def.DefaultConfigurationPersistenceStrategy} * which reads and stores data from a sub-resources named "jcr:content". @@ -51,15 +51,15 @@ public class CustomConfigurationPersistenceStrategy2 implements ConfigurationPer private static final String DEFAULT_RESOURCE_TYPE = JcrConstants.NT_UNSTRUCTURED; private static final String CHILD_NODE_NAME = JcrConstants.JCR_CONTENT; - private static final Pattern JCR_CONTENT_PATTERN = Pattern.compile("(.*/)?" + Pattern.quote(CHILD_NODE_NAME) + "(/.*)?"); + private static final Pattern JCR_CONTENT_PATTERN = + Pattern.compile("(.*/)?" + Pattern.quote(CHILD_NODE_NAME) + "(/.*)?"); @Override public Resource getResource(@NotNull Resource resource) { assertNotNull(resource); if (containsJcrContent(resource.getPath())) { return resource; - } - else { + } else { return resource.getChild(CHILD_NODE_NAME); } } @@ -69,8 +69,7 @@ public class CustomConfigurationPersistenceStrategy2 implements ConfigurationPer assertNotNull(resource); if (containsJcrContent(resource.getPath())) { return resource; - } - else { + } else { return resource.getChild(CHILD_NODE_NAME); } } @@ -86,8 +85,7 @@ public class CustomConfigurationPersistenceStrategy2 implements ConfigurationPer assertNotNull(resourcePath); if (containsJcrContent(resourcePath)) { return resourcePath; - } - else { + } else { return resourcePath + "/" + CHILD_NODE_NAME; } } @@ -97,8 +95,7 @@ public class CustomConfigurationPersistenceStrategy2 implements ConfigurationPer assertNotNull(resourcePath); if (containsJcrContent(resourcePath)) { return resourcePath; - } - else { + } else { return resourcePath + "/" + CHILD_NODE_NAME; } } @@ -114,8 +111,7 @@ public class CustomConfigurationPersistenceStrategy2 implements ConfigurationPer assertNotNull(configName); if (containsJcrContent(configName)) { return configName; - } - else { + } else { return configName + "/" + CHILD_NODE_NAME; } } @@ -125,8 +121,7 @@ public class CustomConfigurationPersistenceStrategy2 implements ConfigurationPer assertNotNull(configName); if (containsJcrContent(configName)) { return configName; - } - else { + } else { return configName + "/" + CHILD_NODE_NAME; } } @@ -138,7 +133,9 @@ public class CustomConfigurationPersistenceStrategy2 implements ConfigurationPer } @Override - public boolean persistConfiguration(@NotNull ResourceResolver resourceResolver, @NotNull String configResourcePath, + public boolean persistConfiguration( + @NotNull ResourceResolver resourceResolver, + @NotNull String configResourcePath, @NotNull ConfigurationPersistData data) { getOrCreateResource(resourceResolver, getResourcePath(configResourcePath), data.getProperties()); commit(resourceResolver); @@ -146,7 +143,9 @@ public class CustomConfigurationPersistenceStrategy2 implements ConfigurationPer } @Override - public boolean persistConfigurationCollection(@NotNull ResourceResolver resourceResolver, @NotNull String configResourceCollectionParentPath, + public boolean persistConfigurationCollection( + @NotNull ResourceResolver resourceResolver, + @NotNull String configResourceCollectionParentPath, @NotNull ConfigurationCollectionPersistData data) { String parentPath = getCollectionParentResourcePath(configResourceCollectionParentPath); Resource configResourceParent = getOrCreateResource(resourceResolver, parentPath, ValueMap.EMPTY); @@ -154,13 +153,15 @@ public class CustomConfigurationPersistenceStrategy2 implements ConfigurationPer // delete existing children and create new ones deleteChildren(configResourceParent); for (ConfigurationPersistData item : data.getItems()) { - String path = getCollectionItemResourcePath(configResourceParent.getPath() + "/" + item.getCollectionItemName()); + String path = + getCollectionItemResourcePath(configResourceParent.getPath() + "/" + item.getCollectionItemName()); getOrCreateResource(resourceResolver, path, item.getProperties()); } // if resource collection parent properties are given replace them as well if (data.getProperties() != null) { - Resource propsResource = getOrCreateResource(resourceResolver, parentPath + "/colPropsResource", ValueMap.EMPTY); + Resource propsResource = + getOrCreateResource(resourceResolver, parentPath + "/colPropsResource", ValueMap.EMPTY); replaceProperties(propsResource, data.getProperties()); } @@ -174,22 +175,23 @@ public class CustomConfigurationPersistenceStrategy2 implements ConfigurationPer if (resource != null) { try { resourceResolver.delete(resource); - } - catch (PersistenceException ex) { - throw new ConfigurationPersistenceException("Unable to delete configuration at " + configResourcePath, ex); + } catch (PersistenceException ex) { + throw new ConfigurationPersistenceException( + "Unable to delete configuration at " + configResourcePath, ex); } } commit(resourceResolver); return true; } - private Resource getOrCreateResource(ResourceResolver resourceResolver, String path, Map<String,Object> properties) { + private Resource getOrCreateResource( + ResourceResolver resourceResolver, String path, Map<String, Object> properties) { try { - Resource resource = ResourceUtil.getOrCreateResource(resourceResolver, path, DEFAULT_RESOURCE_TYPE, DEFAULT_RESOURCE_TYPE, false); + Resource resource = ResourceUtil.getOrCreateResource( + resourceResolver, path, DEFAULT_RESOURCE_TYPE, DEFAULT_RESOURCE_TYPE, false); replaceProperties(resource, properties); return resource; - } - catch (PersistenceException ex) { + } catch (PersistenceException ex) { throw new ConfigurationPersistenceException("Unable to persist configuration to " + path, ex); } } @@ -200,14 +202,13 @@ public class CustomConfigurationPersistenceStrategy2 implements ConfigurationPer for (Resource child : resource.getChildren()) { resourceResolver.delete(child); } - } - catch (PersistenceException ex) { + } catch (PersistenceException ex) { throw new ConfigurationPersistenceException("Unable to remove children from " + resource.getPath(), ex); } } @SuppressWarnings("null") - private void replaceProperties(Resource resource, Map<String,Object> properties) { + private void replaceProperties(Resource resource, Map<String, Object> properties) { ModifiableValueMap modValueMap = resource.adaptTo(ModifiableValueMap.class); // remove all existing properties that do not have jcr: namespace for (String propertyName : new HashSet<>(modValueMap.keySet())) { @@ -222,8 +223,7 @@ public class CustomConfigurationPersistenceStrategy2 implements ConfigurationPer private void commit(ResourceResolver resourceResolver) { try { resourceResolver.commit(); - } - catch (PersistenceException ex) { + } catch (PersistenceException ex) { throw new ConfigurationPersistenceException("Unable to save configuration: " + ex.getMessage(), ex); } } @@ -231,5 +231,4 @@ public class CustomConfigurationPersistenceStrategy2 implements ConfigurationPer static boolean containsJcrContent(String path) { return JCR_CONTENT_PATTERN.matcher(path).matches(); } - } diff --git a/src/test/java/org/apache/sling/testing/mock/caconfig/persistence/CustomConfigurationPersistenceStrategy3.java b/src/test/java/org/apache/sling/testing/mock/caconfig/persistence/CustomConfigurationPersistenceStrategy3.java index 3641adb..4a8092a 100644 --- a/src/test/java/org/apache/sling/testing/mock/caconfig/persistence/CustomConfigurationPersistenceStrategy3.java +++ b/src/test/java/org/apache/sling/testing/mock/caconfig/persistence/CustomConfigurationPersistenceStrategy3.java @@ -18,8 +18,6 @@ */ package org.apache.sling.testing.mock.caconfig.persistence; -import static org.junit.Assert.assertNotNull; - import java.util.HashSet; import java.util.Map; import java.util.regex.Pattern; @@ -39,6 +37,8 @@ import org.apache.sling.caconfig.spi.ConfigurationPersistenceStrategy2; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import static org.junit.Assert.assertNotNull; + /** * This is a variant of {@link org.apache.sling.caconfig.impl.def.DefaultConfigurationPersistenceStrategy} * which reads and stores data from a sub-resources named "jcr:content". @@ -51,7 +51,8 @@ public class CustomConfigurationPersistenceStrategy3 implements ConfigurationPer private static final String DEFAULT_RESOURCE_TYPE = JcrConstants.NT_UNSTRUCTURED; private static final String CHILD_NODE_NAME = JcrConstants.JCR_CONTENT; - private static final Pattern JCR_CONTENT_PATTERN = Pattern.compile("(.*/)?" + Pattern.quote(CHILD_NODE_NAME) + "(/.*)?"); + private static final Pattern JCR_CONTENT_PATTERN = + Pattern.compile("(.*/)?" + Pattern.quote(CHILD_NODE_NAME) + "(/.*)?"); @Override public Resource getResource(@NotNull Resource resource) { @@ -114,7 +115,9 @@ public class CustomConfigurationPersistenceStrategy3 implements ConfigurationPer } @Override - public boolean persistConfiguration(@NotNull ResourceResolver resourceResolver, @NotNull String configResourcePath, + public boolean persistConfiguration( + @NotNull ResourceResolver resourceResolver, + @NotNull String configResourcePath, @NotNull ConfigurationPersistData data) { getOrCreateResource(resourceResolver, getResourcePath(configResourcePath), data.getProperties()); commit(resourceResolver); @@ -122,7 +125,9 @@ public class CustomConfigurationPersistenceStrategy3 implements ConfigurationPer } @Override - public boolean persistConfigurationCollection(@NotNull ResourceResolver resourceResolver, @NotNull String configResourceCollectionParentPath, + public boolean persistConfigurationCollection( + @NotNull ResourceResolver resourceResolver, + @NotNull String configResourceCollectionParentPath, @NotNull ConfigurationCollectionPersistData data) { String parentPath = getCollectionParentResourcePath(configResourceCollectionParentPath); Resource configResourceParent = getOrCreateResource(resourceResolver, parentPath, ValueMap.EMPTY); @@ -130,13 +135,15 @@ public class CustomConfigurationPersistenceStrategy3 implements ConfigurationPer // delete existing children and create new ones deleteChildren(configResourceParent); for (ConfigurationPersistData item : data.getItems()) { - String path = getCollectionItemResourcePath(configResourceParent.getPath() + "/" + item.getCollectionItemName()); + String path = + getCollectionItemResourcePath(configResourceParent.getPath() + "/" + item.getCollectionItemName()); getOrCreateResource(resourceResolver, path, item.getProperties()); } // if resource collection parent properties are given replace them as well if (data.getProperties() != null) { - Resource propsResource = getOrCreateResource(resourceResolver, parentPath + "/colPropsResource", ValueMap.EMPTY); + Resource propsResource = + getOrCreateResource(resourceResolver, parentPath + "/colPropsResource", ValueMap.EMPTY); replaceProperties(propsResource, data.getProperties()); } @@ -150,22 +157,23 @@ public class CustomConfigurationPersistenceStrategy3 implements ConfigurationPer if (resource != null) { try { resourceResolver.delete(resource); - } - catch (PersistenceException ex) { - throw new ConfigurationPersistenceException("Unable to delete configuration at " + configResourcePath, ex); + } catch (PersistenceException ex) { + throw new ConfigurationPersistenceException( + "Unable to delete configuration at " + configResourcePath, ex); } } commit(resourceResolver); return true; } - private Resource getOrCreateResource(ResourceResolver resourceResolver, String path, Map<String,Object> properties) { + private Resource getOrCreateResource( + ResourceResolver resourceResolver, String path, Map<String, Object> properties) { try { - Resource resource = ResourceUtil.getOrCreateResource(resourceResolver, path, DEFAULT_RESOURCE_TYPE, DEFAULT_RESOURCE_TYPE, false); + Resource resource = ResourceUtil.getOrCreateResource( + resourceResolver, path, DEFAULT_RESOURCE_TYPE, DEFAULT_RESOURCE_TYPE, false); replaceProperties(resource, properties); return resource; - } - catch (PersistenceException ex) { + } catch (PersistenceException ex) { throw new ConfigurationPersistenceException("Unable to persist configuration to " + path, ex); } } @@ -176,14 +184,13 @@ public class CustomConfigurationPersistenceStrategy3 implements ConfigurationPer for (Resource child : resource.getChildren()) { resourceResolver.delete(child); } - } - catch (PersistenceException ex) { + } catch (PersistenceException ex) { throw new ConfigurationPersistenceException("Unable to remove children from " + resource.getPath(), ex); } } @SuppressWarnings("null") - private void replaceProperties(Resource resource, Map<String,Object> properties) { + private void replaceProperties(Resource resource, Map<String, Object> properties) { ModifiableValueMap modValueMap = resource.adaptTo(ModifiableValueMap.class); // remove all existing properties that do not have jcr: namespace for (String propertyName : new HashSet<>(modValueMap.keySet())) { @@ -198,8 +205,7 @@ public class CustomConfigurationPersistenceStrategy3 implements ConfigurationPer private void commit(ResourceResolver resourceResolver) { try { resourceResolver.commit(); - } - catch (PersistenceException ex) { + } catch (PersistenceException ex) { throw new ConfigurationPersistenceException("Unable to save configuration: " + ex.getMessage(), ex); } } @@ -207,5 +213,4 @@ public class CustomConfigurationPersistenceStrategy3 implements ConfigurationPer static boolean containsJcrContent(String path) { return JCR_CONTENT_PATTERN.matcher(path).matches(); } - }