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();