SLING-6880 CAConfig Mock Plugin: Add helper methods for writing configurations
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1796067 13f79535-47bb-0310-9956-ffa450edef68
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 46e4135..ac13366 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
@@ -25,6 +25,7 @@
import org.apache.commons.lang3.StringUtils;
import org.apache.sling.api.resource.Resource;
+import org.apache.sling.caconfig.annotation.Configuration;
import org.apache.sling.caconfig.management.ConfigurationManager;
import org.apache.sling.caconfig.spi.ConfigurationCollectionPersistData;
import org.apache.sling.caconfig.spi.ConfigurationPersistData;
@@ -75,6 +76,19 @@
* provider.
* @param context Sling context
* @param contextPath Configuration id
+ * @param configClass Configuration class
+ * @param values Configuration values
+ */
+ public static void writeConfiguration(SlingContextImpl context, String contextPath, Class<?> configClass,
+ Map<String, Object> values) {
+ writeConfiguration(context, contextPath, getConfigurationName(configClass), values);
+ }
+
+ /**
+ * Writes configuration parameters using the primary configured persistence
+ * provider.
+ * @param context Sling context
+ * @param contextPath Configuration id
* @param configName Config name
* @param values Configuration values
*/
@@ -90,6 +104,18 @@
* provider.
* @param context Sling context
* @param contextPath Configuration id
+ * @param configClass Configuration class
+ * @param values Configuration values
+ */
+ public static void writeConfiguration(SlingContextImpl context, String contextPath, Class<?> configClass, Object... values) {
+ writeConfiguration(context, contextPath, getConfigurationName(configClass), values);
+ }
+
+ /**
+ * Writes configuration parameters using the primary configured persistence
+ * provider.
+ * @param context Sling context
+ * @param contextPath Configuration id
* @param configName Config name
* @param values Configuration values
*/
@@ -102,6 +128,19 @@
* configured persistence provider.
* @param context Sling context
* @param contextPath Configuration id
+ * @param configClass Configuration class
+ * @param values Configuration values
+ */
+ public static void writeConfigurationCollection(SlingContextImpl context, String contextPath, Class<?> configClass,
+ Collection<Map<String, Object>> values) {
+ writeConfigurationCollection(context, contextPath, getConfigurationName(configClass), values);
+ }
+
+ /**
+ * Writes a collection of configuration parameters using the primary
+ * configured persistence provider.
+ * @param context Sling context
+ * @param contextPath Configuration id
* @param configName Config name
* @param values Configuration values
*/
@@ -117,5 +156,13 @@
configManager.persistConfigurationCollection(contextResource, configName,
new ConfigurationCollectionPersistData(items));
}
+
+ private static String getConfigurationName(Class<?> configClass) {
+ Configuration annotation = configClass.getAnnotation(Configuration.class);
+ if (annotation != null && StringUtils.isNotBlank(annotation.name())) {
+ return annotation.name();
+ }
+ 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 1db5779..d331e19 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
@@ -34,7 +34,7 @@
public class ContextPluginsTest {
- private static final String CONFIG_NAME = SimpleConfig.class.getName();
+ private static final String CONFIG_NAME = "testConfig";
@Rule
public SlingContext context = new SlingContextBuilder()
@@ -52,7 +52,7 @@
MockContextAwareConfig.registerAnnotationClasses(context, SimpleConfig.class);
// write config
- MockContextAwareConfig.writeConfiguration(context, contextResource.getPath(), CONFIG_NAME,
+ MockContextAwareConfig.writeConfiguration(context, contextResource.getPath(), SimpleConfig.class,
"stringParam", "value1",
"intParam", 123,
"boolParam", true);
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 da190c2..4c71660 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
@@ -54,10 +54,10 @@
context.currentResource(context.create().resource("/content/region/site/en"));
- MockContextAwareConfig.writeConfiguration(context, "/content/region/site", SimpleConfig.class.getName(),
+ MockContextAwareConfig.writeConfiguration(context, "/content/region/site", SimpleConfig.class,
"stringParam", "value1");
- MockContextAwareConfig.writeConfigurationCollection(context, "/content/region/site", ListConfig.class.getName(),
+ MockContextAwareConfig.writeConfigurationCollection(context, "/content/region/site", ListConfig.class,
ImmutableList.of((Map<String, Object>) ImmutableMap.<String, Object> of("stringParam", "value1"),
(Map<String, Object>) ImmutableMap.<String, Object> of("stringParam", "value2")));
}
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 b314fb3..821bd9e 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
@@ -20,7 +20,7 @@
import org.apache.sling.caconfig.annotation.Configuration;
-@Configuration
+@Configuration(name = "testConfig")
public @interface SimpleConfig {
String stringParam();