You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ss...@apache.org on 2017/05/24 12:38:50 UTC
svn commit: r1796051 - in /sling/trunk/testing/mocks/caconfig-mock-plugin:
./ src/main/java/org/apache/sling/testing/mock/caconfig/
src/test/java/org/apache/sling/testing/mock/caconfig/
src/test/java/org/apache/sling/testing/mock/caconfig/example/
Author: sseifert
Date: Wed May 24 12:38:50 2017
New Revision: 1796051
URL: http://svn.apache.org/viewvc?rev=1796051&view=rev
Log:
SLING-6880 CAConfig Mock Plugin: Add helper methods for writing configurations
also drop support for 1.x versions of SPI/Impl
Added:
sling/trunk/testing/mocks/caconfig-mock-plugin/src/test/java/org/apache/sling/testing/mock/caconfig/MockContextAwareConfigTest.java (with props)
sling/trunk/testing/mocks/caconfig-mock-plugin/src/test/java/org/apache/sling/testing/mock/caconfig/example/ListConfig.java (with props)
Removed:
sling/trunk/testing/mocks/caconfig-mock-plugin/src/test/java/org/apache/sling/testing/mock/caconfig/CompatibilityUtil.java
Modified:
sling/trunk/testing/mocks/caconfig-mock-plugin/pom.xml
sling/trunk/testing/mocks/caconfig-mock-plugin/src/main/java/org/apache/sling/testing/mock/caconfig/ContextPlugins.java
sling/trunk/testing/mocks/caconfig-mock-plugin/src/main/java/org/apache/sling/testing/mock/caconfig/MockContextAwareConfig.java
sling/trunk/testing/mocks/caconfig-mock-plugin/src/main/java/org/apache/sling/testing/mock/caconfig/package-info.java
sling/trunk/testing/mocks/caconfig-mock-plugin/src/test/java/org/apache/sling/testing/mock/caconfig/ContextPluginsTest.java
sling/trunk/testing/mocks/caconfig-mock-plugin/src/test/java/org/apache/sling/testing/mock/caconfig/example/SimpleConfig.java
Modified: sling/trunk/testing/mocks/caconfig-mock-plugin/pom.xml
URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/caconfig-mock-plugin/pom.xml?rev=1796051&r1=1796050&r2=1796051&view=diff
==============================================================================
--- sling/trunk/testing/mocks/caconfig-mock-plugin/pom.xml (original)
+++ sling/trunk/testing/mocks/caconfig-mock-plugin/pom.xml Wed May 24 12:38:50 2017
@@ -90,34 +90,34 @@
<profiles>
- <!-- Test with Sling CAConfig Impl/SPI 1.1 -->
+ <!-- Test with Sling CAConfig Impl/SPI 1.2 -->
<profile>
- <id>caconfig-1.1</id>
+ <id>caconfig-1.2</id>
<dependencies>
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.caconfig.api</artifactId>
- <version>1.0.0</version>
+ <version>1.1.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.caconfig.spi</artifactId>
- <version>1.1.0</version>
+ <version>1.2.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.caconfig.impl</artifactId>
- <version>1.1.0</version>
+ <version>1.2.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
</profile>
- <!-- Test with Sling CAConfig Impl/SPI 1.2 -->
+ <!-- Test with Sling CAConfig Impl/SPI 1.3 -->
<profile>
- <id>caconfig-1.2</id>
+ <id>caconfig-1.3</id>
<dependencies>
<dependency>
<groupId>org.apache.sling</groupId>
@@ -128,13 +128,13 @@
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.caconfig.spi</artifactId>
- <version>1.2.0</version>
+ <version>1.3.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.caconfig.impl</artifactId>
- <version>1.2.0</version>
+ <version>1.3.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
@@ -142,7 +142,7 @@
<!-- Test with Sling CAConfig Impl/SPI 1.3 -->
<profile>
- <id>caconfig-1.3</id>
+ <id>caconfig-1.4</id>
<dependencies>
<dependency>
<groupId>org.apache.sling</groupId>
@@ -159,7 +159,7 @@
<dependency>
<groupId>org.apache.sling</groupId>
<artifactId>org.apache.sling.caconfig.impl</artifactId>
- <version>1.3.0</version>
+ <version>1.4.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
Modified: sling/trunk/testing/mocks/caconfig-mock-plugin/src/main/java/org/apache/sling/testing/mock/caconfig/ContextPlugins.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/caconfig-mock-plugin/src/main/java/org/apache/sling/testing/mock/caconfig/ContextPlugins.java?rev=1796051&r1=1796050&r2=1796051&view=diff
==============================================================================
--- sling/trunk/testing/mocks/caconfig-mock-plugin/src/main/java/org/apache/sling/testing/mock/caconfig/ContextPlugins.java (original)
+++ sling/trunk/testing/mocks/caconfig-mock-plugin/src/main/java/org/apache/sling/testing/mock/caconfig/ContextPlugins.java Wed May 24 12:38:50 2017
@@ -23,6 +23,7 @@ import org.apache.sling.caconfig.impl.Co
import org.apache.sling.caconfig.impl.def.DefaultConfigurationPersistenceStrategy;
import org.apache.sling.caconfig.impl.metadata.AnnotationClassConfigurationMetadataProvider;
import org.apache.sling.caconfig.management.impl.ConfigurationManagerImpl;
+import org.apache.sling.caconfig.management.impl.ContextPathStrategyMultiplexerImpl;
import org.apache.sling.caconfig.resource.impl.ConfigurationResourceResolverImpl;
import org.apache.sling.caconfig.resource.impl.def.DefaultConfigurationResourceResolvingStrategy;
import org.apache.sling.caconfig.resource.impl.def.DefaultContextPathStrategy;
@@ -33,7 +34,7 @@ import org.osgi.annotation.versioning.Pr
/**
* Mock context plugins.
- * The plugin supports all versions from 1.0 to the most recent versions of the Impl/SPI.
+ * The plugin supports all versions from 1.2 to the most recent versions of the Impl/SPI.
*/
@ProviderType
public final class ContextPlugins {
@@ -77,10 +78,7 @@ public final class ContextPlugins {
*/
private static void registerConfigurationResourceResolver(SlingContextImpl context) {
- if (!registerByClassName(context, "org.apache.sling.caconfig.management.impl.ContextPathStrategyMultiplexerImpl")) {
- // fallback to impl 1.1
- registerByClassName(context, "org.apache.sling.caconfig.resource.impl.ContextPathStrategyMultiplexer");
- }
+ context.registerInjectActivateService(new ContextPathStrategyMultiplexerImpl());
if (!registerByClassName(context, "org.apache.sling.caconfig.resource.impl.ConfigurationResourceResolvingStrategyMultiplexerImpl")) {
// fallback to impl 1.2
Modified: sling/trunk/testing/mocks/caconfig-mock-plugin/src/main/java/org/apache/sling/testing/mock/caconfig/MockContextAwareConfig.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/caconfig-mock-plugin/src/main/java/org/apache/sling/testing/mock/caconfig/MockContextAwareConfig.java?rev=1796051&r1=1796050&r2=1796051&view=diff
==============================================================================
--- sling/trunk/testing/mocks/caconfig-mock-plugin/src/main/java/org/apache/sling/testing/mock/caconfig/MockContextAwareConfig.java (original)
+++ sling/trunk/testing/mocks/caconfig-mock-plugin/src/main/java/org/apache/sling/testing/mock/caconfig/MockContextAwareConfig.java Wed May 24 12:38:50 2017
@@ -18,6 +18,16 @@
*/
package org.apache.sling.testing.mock.caconfig;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.sling.api.resource.Resource;
+import org.apache.sling.caconfig.management.ConfigurationManager;
+import org.apache.sling.caconfig.spi.ConfigurationCollectionPersistData;
+import org.apache.sling.caconfig.spi.ConfigurationPersistData;
+import org.apache.sling.testing.mock.osgi.MapUtil;
import org.apache.sling.testing.mock.sling.context.SlingContextImpl;
import org.osgi.annotation.versioning.ProviderType;
@@ -49,4 +59,52 @@ public final class MockContextAwareConfi
ConfigurationMetadataUtil.registerAnnotationClasses(context.bundleContext(), classes);
}
+ /**
+ * 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
+ */
+ public static void writeConfiguration(SlingContextImpl context, String contextPath, String configName,
+ Map<String, Object> values) {
+ ConfigurationManager configManager = context.getService(ConfigurationManager.class);
+ Resource contextResource = context.resourceResolver().getResource(contextPath);
+ configManager.persistConfiguration(contextResource, configName, new ConfigurationPersistData(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
+ */
+ public static void writeConfiguration(SlingContextImpl context, String contextPath, String configName, Object... values) {
+ writeConfiguration(context, contextPath, configName, MapUtil.toMap(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
+ */
+ public static void writeConfigurationCollection(SlingContextImpl context, String contextPath, String configName,
+ Collection<Map<String, Object>> values) {
+ ConfigurationManager configManager = context.getService(ConfigurationManager.class);
+ Resource contextResource = context.resourceResolver().getResource(contextPath);
+ List<ConfigurationPersistData> items = new ArrayList<>();
+ int index = 0;
+ for (Map<String, Object> map : values) {
+ items.add(new ConfigurationPersistData(map).collectionItemName("item" + (index++)));
+ }
+ configManager.persistConfigurationCollection(contextResource, configName,
+ new ConfigurationCollectionPersistData(items));
+ }
+
}
Modified: sling/trunk/testing/mocks/caconfig-mock-plugin/src/main/java/org/apache/sling/testing/mock/caconfig/package-info.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/caconfig-mock-plugin/src/main/java/org/apache/sling/testing/mock/caconfig/package-info.java?rev=1796051&r1=1796050&r2=1796051&view=diff
==============================================================================
--- sling/trunk/testing/mocks/caconfig-mock-plugin/src/main/java/org/apache/sling/testing/mock/caconfig/package-info.java (original)
+++ sling/trunk/testing/mocks/caconfig-mock-plugin/src/main/java/org/apache/sling/testing/mock/caconfig/package-info.java Wed May 24 12:38:50 2017
@@ -19,5 +19,5 @@
/**
* Apache Sling Context-Aware Configuration Mock Plugin
*/
-@org.osgi.annotation.versioning.Version("1.0.0")
+@org.osgi.annotation.versioning.Version("1.1.0")
package org.apache.sling.testing.mock.caconfig;
Modified: sling/trunk/testing/mocks/caconfig-mock-plugin/src/test/java/org/apache/sling/testing/mock/caconfig/ContextPluginsTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/caconfig-mock-plugin/src/test/java/org/apache/sling/testing/mock/caconfig/ContextPluginsTest.java?rev=1796051&r1=1796050&r2=1796051&view=diff
==============================================================================
--- sling/trunk/testing/mocks/caconfig-mock-plugin/src/test/java/org/apache/sling/testing/mock/caconfig/ContextPluginsTest.java (original)
+++ sling/trunk/testing/mocks/caconfig-mock-plugin/src/test/java/org/apache/sling/testing/mock/caconfig/ContextPluginsTest.java Wed May 24 12:38:50 2017
@@ -32,14 +32,14 @@ import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
-import com.google.common.collect.ImmutableMap;
-
public class ContextPluginsTest {
- private static final String CONFIG_NAME = "testConfig";
+ private static final String CONFIG_NAME = SimpleConfig.class.getName();
@Rule
- public SlingContext context = new SlingContextBuilder().plugin(CACONFIG).build();
+ public SlingContext context = new SlingContextBuilder()
+ .plugin(CACONFIG)
+ .build();
private Resource contextResource;
@@ -52,10 +52,10 @@ public class ContextPluginsTest {
MockContextAwareConfig.registerAnnotationClasses(context, SimpleConfig.class);
// write config
- CompatibilityUtil.writeConfig(context, contextResource, CONFIG_NAME, ImmutableMap.<String, Object>of(
+ MockContextAwareConfig.writeConfiguration(context, contextResource.getPath(), CONFIG_NAME,
"stringParam", "value1",
"intParam", 123,
- "boolParam", true));
+ "boolParam", true);
}
@Test
Added: sling/trunk/testing/mocks/caconfig-mock-plugin/src/test/java/org/apache/sling/testing/mock/caconfig/MockContextAwareConfigTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/caconfig-mock-plugin/src/test/java/org/apache/sling/testing/mock/caconfig/MockContextAwareConfigTest.java?rev=1796051&view=auto
==============================================================================
--- sling/trunk/testing/mocks/caconfig-mock-plugin/src/test/java/org/apache/sling/testing/mock/caconfig/MockContextAwareConfigTest.java (added)
+++ sling/trunk/testing/mocks/caconfig-mock-plugin/src/test/java/org/apache/sling/testing/mock/caconfig/MockContextAwareConfigTest.java Wed May 24 12:38:50 2017
@@ -0,0 +1,90 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+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.assertNotNull;
+
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.Map;
+
+import org.apache.sling.api.resource.Resource;
+import org.apache.sling.caconfig.ConfigurationBuilder;
+import org.apache.sling.testing.mock.caconfig.example.ListConfig;
+import org.apache.sling.testing.mock.caconfig.example.SimpleConfig;
+import org.apache.sling.testing.mock.sling.junit.SlingContext;
+import org.apache.sling.testing.mock.sling.junit.SlingContextBuilder;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
+
+public class MockContextAwareConfigTest {
+
+ @Rule
+ public SlingContext context = new SlingContextBuilder()
+ .plugin(CACONFIG)
+ .build();
+
+ @Before
+ public void setUp() {
+ MockContextAwareConfig.registerAnnotationClasses(context, SimpleConfig.class, ListConfig.class);
+
+ context.create().resource("/content/region/site", "sling:configRef", "/conf/region/site");
+
+ context.currentResource(context.create().resource("/content/region/site/en"));
+
+ MockContextAwareConfig.writeConfiguration(context, "/content/region/site", SimpleConfig.class.getName(),
+ "stringParam", "value1");
+
+ MockContextAwareConfig.writeConfigurationCollection(context, "/content/region/site", ListConfig.class.getName(),
+ ImmutableList.of((Map<String, Object>) ImmutableMap.<String, Object> of("stringParam", "value1"),
+ (Map<String, Object>) ImmutableMap.<String, Object> of("stringParam", "value2")));
+ }
+
+ @Test
+ public void testSingletonConfig() {
+ Resource resource = context.request().getResource();
+ SimpleConfig config = resource.adaptTo(ConfigurationBuilder.class).as(SimpleConfig.class);
+ assertNotNull(config);
+ assertEquals("value1", config.stringParam());
+ assertEquals(5, config.intParam());
+ }
+
+ @Test
+ public void testConfigCollection() {
+ Resource resource = context.request().getResource();
+ Collection<ListConfig> config = resource.adaptTo(ConfigurationBuilder.class).asCollection(ListConfig.class);
+ assertEquals(2, config.size());
+ Iterator<ListConfig> items = config.iterator();
+
+ ListConfig item1 = items.next();
+ assertEquals("value1", item1.stringParam());
+ assertEquals(5, item1.intParam());
+
+ ListConfig item2 = items.next();
+ assertEquals("value2", item2.stringParam());
+ assertEquals(5, item2.intParam());
+ }
+
+}
Propchange: sling/trunk/testing/mocks/caconfig-mock-plugin/src/test/java/org/apache/sling/testing/mock/caconfig/MockContextAwareConfigTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: sling/trunk/testing/mocks/caconfig-mock-plugin/src/test/java/org/apache/sling/testing/mock/caconfig/MockContextAwareConfigTest.java
------------------------------------------------------------------------------
--- svn:keywords (added)
+++ svn:keywords Wed May 24 12:38:50 2017
@@ -0,0 +1 @@
+LastChangedDate LastChangedRevision LastChangedBy HeadURL Id Author
Propchange: sling/trunk/testing/mocks/caconfig-mock-plugin/src/test/java/org/apache/sling/testing/mock/caconfig/MockContextAwareConfigTest.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: sling/trunk/testing/mocks/caconfig-mock-plugin/src/test/java/org/apache/sling/testing/mock/caconfig/example/ListConfig.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/caconfig-mock-plugin/src/test/java/org/apache/sling/testing/mock/caconfig/example/ListConfig.java?rev=1796051&view=auto
==============================================================================
--- sling/trunk/testing/mocks/caconfig-mock-plugin/src/test/java/org/apache/sling/testing/mock/caconfig/example/ListConfig.java (added)
+++ sling/trunk/testing/mocks/caconfig-mock-plugin/src/test/java/org/apache/sling/testing/mock/caconfig/example/ListConfig.java Wed May 24 12:38:50 2017
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.sling.testing.mock.caconfig.example;
+
+import org.apache.sling.caconfig.annotation.Configuration;
+
+@Configuration(collection = true)
+public @interface ListConfig {
+
+ String stringParam();
+
+ int intParam() default 5;
+
+ boolean boolParam();
+
+}
Propchange: sling/trunk/testing/mocks/caconfig-mock-plugin/src/test/java/org/apache/sling/testing/mock/caconfig/example/ListConfig.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: sling/trunk/testing/mocks/caconfig-mock-plugin/src/test/java/org/apache/sling/testing/mock/caconfig/example/ListConfig.java
------------------------------------------------------------------------------
--- svn:keywords (added)
+++ svn:keywords Wed May 24 12:38:50 2017
@@ -0,0 +1 @@
+LastChangedDate LastChangedRevision LastChangedBy HeadURL Id Author
Propchange: sling/trunk/testing/mocks/caconfig-mock-plugin/src/test/java/org/apache/sling/testing/mock/caconfig/example/ListConfig.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: sling/trunk/testing/mocks/caconfig-mock-plugin/src/test/java/org/apache/sling/testing/mock/caconfig/example/SimpleConfig.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/mocks/caconfig-mock-plugin/src/test/java/org/apache/sling/testing/mock/caconfig/example/SimpleConfig.java?rev=1796051&r1=1796050&r2=1796051&view=diff
==============================================================================
--- sling/trunk/testing/mocks/caconfig-mock-plugin/src/test/java/org/apache/sling/testing/mock/caconfig/example/SimpleConfig.java (original)
+++ sling/trunk/testing/mocks/caconfig-mock-plugin/src/test/java/org/apache/sling/testing/mock/caconfig/example/SimpleConfig.java Wed May 24 12:38:50 2017
@@ -20,7 +20,7 @@ package org.apache.sling.testing.mock.ca
import org.apache.sling.caconfig.annotation.Configuration;
-@Configuration(name = "testConfig")
+@Configuration
public @interface SimpleConfig {
String stringParam();