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 2016/08/30 14:43:28 UTC

svn commit: r1758402 - in /sling/trunk/contrib/extensions/contextaware-config: api/src/main/java/org/apache/sling/contextaware/config/ impl/src/main/java/org/apache/sling/contextaware/config/impl/ impl/src/test/java/org/apache/sling/contextaware/config...

Author: sseifert
Date: Tue Aug 30 14:43:28 2016
New Revision: 1758402

URL: http://svn.apache.org/viewvc?rev=1758402&view=rev
Log:
SLING-6016 split up annotation class/valuemap/adaptable usecases into separate methods and make return value handling consistent

Added:
    sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/contextaware/config/impl/ConfigurationResolverAdaptableTest.java   (with props)
Removed:
    sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/contextaware/config/impl/ConfigurationResolverSlingModelTest.java
Modified:
    sling/trunk/contrib/extensions/contextaware-config/api/src/main/java/org/apache/sling/contextaware/config/ConfigurationBuilder.java
    sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/contextaware/config/impl/ConfigurationBuilderImpl.java
    sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/contextaware/config/impl/ConfigurationResolverAnnotationClassTest.java
    sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/contextaware/config/impl/ConfigurationResolverValueMapTest.java
    sling/trunk/contrib/extensions/contextaware-config/integration-tests/src/test/java/org/apache/sling/contextaware/config/it/ConfigurationResolverValueMapIT.java

Modified: sling/trunk/contrib/extensions/contextaware-config/api/src/main/java/org/apache/sling/contextaware/config/ConfigurationBuilder.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/contextaware-config/api/src/main/java/org/apache/sling/contextaware/config/ConfigurationBuilder.java?rev=1758402&r1=1758401&r2=1758402&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/contextaware-config/api/src/main/java/org/apache/sling/contextaware/config/ConfigurationBuilder.java (original)
+++ sling/trunk/contrib/extensions/contextaware-config/api/src/main/java/org/apache/sling/contextaware/config/ConfigurationBuilder.java Tue Aug 30 14:43:28 2016
@@ -22,6 +22,7 @@ import java.util.Collection;
 
 import javax.annotation.Nonnull;
 
+import org.apache.sling.api.resource.ValueMap;
 import org.osgi.annotation.versioning.ProviderType;
 
 /**
@@ -31,26 +32,56 @@ import org.osgi.annotation.versioning.Pr
 public interface ConfigurationBuilder {
 
     /**
-     * Define configuration name. This parameter is optional, it defaults to the class
-     * name of the argument provided either to {@link #as(Class)} or {@link #asCollection(Class)}.
-     *
+     * Define configuration name.
+     * Optional for the {@link #as(Class)} and {@link #asCollection(Class)} methods, mandatory for the others. 
      * @param configName Relative path
      * @return Configuration builder
      */
     @Nonnull ConfigurationBuilder name(@Nonnull String configName);
 
     /**
-     * Get configuration as singleton and its properties mapped to the given annotation class.
-     * @param clazz Annotation class or {@link org.apache.sling.api.resource.ValueMap}
-     * @return Configuration object. Contains only the default values if the conversion fails or the provided name is invalid.
+     * Get configuration as singleton resource and its properties mapped to the given annotation class.
+     * Configuration name is optional - if not given via {@link #name(String)} method it is derived
+     * from the annotation interface class name.
+     * @param clazz Annotation interface class
+     * @return Configuration object. Contains only the default values if content resource or configuration cannot be found.
      */
     @Nonnull <T> T as(@Nonnull Class<T> clazz);
 
     /**
-     * Get collection of configuration instances with its properties mapped to the given annotation class.
-     * @param clazz Annotation class or {@link org.apache.sling.api.resource.ValueMap}
-     * @return Collection of configuration objects. Might be empty if the provided name is invalid.
+     * Get collection of configuration resources with their properties mapped to the given annotation class.
+     * Configuration name is optional - if not given via {@link #name(String)} method it is derived
+     * from the annotation interface class name.
+     * @param clazz Annotation interface class
+     * @return Collection of configuration objects. Is empty if content resource or configuration cannot be found.
      */
     @Nonnull <T> Collection<T> asCollection(@Nonnull Class<T> clazz);
 
+    /**
+     * Get configuration as singleton resource and return its properties as value map.
+     * @return Value map. Map is empty if content resource or configuration cannot be found.
+     */
+    @Nonnull ValueMap asValueMap();
+
+    /**
+     * Get collection of configuration resources with their properties mapped to the given annotation class.
+     * @param clazz Annotation interface class
+     * @return Collection of value map. Is empty if content resource or configuration cannot be found.
+     */
+    @Nonnull Collection<ValueMap> asValueMapCollection();
+
+    /**
+     * Get configuration as singleton configuration resource and adapt it to the given class.
+     * @param clazz Class that can be adapted from a {@link Resource}
+     * @return Object instance or null if content resource or configuration cannot be found or if the adaption was not possible.
+     */
+    <T> T asAdaptable(@Nonnull Class<T> clazz);
+
+    /**
+     * Get collection of configuration resources and adapt them to the given class.
+     * @param clazz Class that can be adapted from a {@link Resource}
+     * @return Collection of object instances. Is empty if content resource or configuration cannot be found or if the adaption was not possible.
+     */
+    @Nonnull <T> Collection<T> asAdaptableCollection(@Nonnull Class<T> clazz);
+
 }

Modified: sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/contextaware/config/impl/ConfigurationBuilderImpl.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/contextaware/config/impl/ConfigurationBuilderImpl.java?rev=1758402&r1=1758401&r2=1758402&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/contextaware/config/impl/ConfigurationBuilderImpl.java (original)
+++ sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/contextaware/config/impl/ConfigurationBuilderImpl.java Tue Aug 30 14:43:28 2016
@@ -19,8 +19,9 @@
 package org.apache.sling.contextaware.config.impl;
 
 import java.util.Collection;
-import java.util.Collections;
+import java.util.function.BiFunction;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 import org.apache.commons.lang3.StringUtils;
 import org.apache.sling.api.resource.Resource;
@@ -65,56 +66,118 @@ class ConfigurationBuilderImpl implement
                 && !StringUtils.startsWith(name, "/")
                 && !StringUtils.contains(name, "../");
     }
+    
+    /**
+     * Configurations are stored below a "sling:configs" child node in the config resource.
+     * @param name Configuration name or relative path
+     * @return Full relative path under configuration resource
+     */
+    private String getConfigRelativePath(String name) {
+        if (name == null) {
+            throw new ConfigurationResolveException("Configuration name is required.");
+        }
+        return CONFIGS_PARENT_NAME + "/" + name;
+    }
 
-    private String getConfigurationName(Class<?> clazz) {
-        if (clazz == ValueMap.class && configName == null) {
-            throw new ConfigurationResolveException("Configuration name is required when getting configuration properties as ValueMap.");
+    /**
+     * Get singleton configuration resource and convert it to the desired target class.
+     * @param name Configuration name
+     * @param clazz Target class
+     * @param converter Conversion method
+     * @return Converted singleton configuration
+     */
+    private <T> T getConfigResource(String name, Class<T> clazz, BiFunction<Resource,Class<T>,T> converter) {
+        Resource configResource = null;
+        if (this.contentResource != null) {
+            String path = getConfigRelativePath(name);
+            configResource = this.configurationResourceResolver.getResource(this.contentResource, path);
         }
-        String name = configName;
+        return converter.apply(configResource, clazz);
+    }
 
-        // derive configuration name from annotation class if no name specified
-        if (name == null) {
-            name = clazz.getName();
+    /**
+     * Get configuration resource collection and convert it to the desired target class.
+     * @param name Configuration name
+     * @param clazz Target class
+     * @param converter Conversion method
+     * @return Converted configuration collection
+     */
+    private <T> Collection<T> getConfigResourceCollection(String name, Class<T> clazz, BiFunction<Resource,Class<T>,T> converter) {
+        Stream<Resource> configResources;
+        if (this.contentResource != null) {
+            String path = getConfigRelativePath(name);
+            configResources = this.configurationResourceResolver.getResourceCollection(this.contentResource, path).stream();
+        }
+        else {
+            configResources = Stream.of();
         }
+        return configResources
+                .map(resource -> converter.apply(resource, clazz))
+                .filter(item -> item != null)
+                .collect(Collectors.toList());
+    }
+    
+    // --- Annotation class support ---
+    
+    @Override
+    public <T> T as(final Class<T> clazz) {
+        final String name = getConfigurationNameForAnnotationClass(clazz);
+        return getConfigResource(name, clazz, this::convertToAnnotationClass);
+    }
 
-        return CONFIGS_PARENT_NAME + '/' + name;
+    @Override
+    public <T> Collection<T> asCollection(Class<T> clazz) {
+        final String name = getConfigurationNameForAnnotationClass(clazz);
+        return getConfigResourceCollection(name, clazz, this::convertToAnnotationClass);
     }
 
-    @SuppressWarnings("unchecked")
-    private <T> T convert(final Resource resource, Class<T> clazz) {
-        if (clazz == ValueMap.class) {
-            return (T)ResourceUtil.getValueMap(resource);
+    private String getConfigurationNameForAnnotationClass(Class<?> clazz) {
+        if (this.configName != null) {
+            return this.configName;
         }
-        // try adapting resource, avoid endless loop
-        if ( resource != null && clazz != ConfigurationBuilder.class ) {
-            final T adaptedObject = resource.adaptTo(clazz);
-            if ( adaptedObject != null ) {
-                return adaptedObject;
-            }
+        else {
+            // derive configuration name from annotation class if no name specified
+            return clazz.getName();
         }
+    }
+    
+    private <T> T convertToAnnotationClass(Resource resource, Class<T> clazz) {
         return ConfigurationProxy.get(resource, clazz);
     }
+    
+    // --- ValueMap support ---
+    
+    @Override
+    public ValueMap asValueMap() {
+        return getConfigResource(this.configName, ValueMap.class, this::convertToValueMap);
+    }
 
     @Override
-    public <T> T as(final Class<T> clazz) {
-        Resource configResource = null;
-        if (this.contentResource != null) {
-            final String name = getConfigurationName(clazz);
-            configResource = this.configurationResourceResolver.getResource(this.contentResource, name);
-        }
-        return convert(configResource, clazz);
+    public Collection<ValueMap> asValueMapCollection() {
+        return getConfigResourceCollection(this.configName, ValueMap.class, this::convertToValueMap);
     }
 
+    private ValueMap convertToValueMap(Resource resource, Class<ValueMap> clazz) {
+        return ResourceUtil.getValueMap(resource);
+    }
+    
+    // --- Adaptable support ---
+    
     @Override
-    public <T> Collection<T> asCollection(Class<T> clazz) {
-        if (this.contentResource != null) {
-            final String name = getConfigurationName(clazz);
-            Collection<Resource> configResources = this.configurationResourceResolver.getResourceCollection(this.contentResource, name);
-            return configResources.stream()
-                .map(resource -> convert(resource, clazz))
-                .collect(Collectors.toList());
-        }
-        return Collections.emptyList();
+    public <T> T asAdaptable(Class<T> clazz) {
+        return getConfigResource(this.configName, clazz, this::convertToAdaptable);
     }
 
+    @Override
+    public <T> Collection<T> asAdaptableCollection(Class<T> clazz) {
+        return getConfigResourceCollection(this.configName, clazz, this::convertToAdaptable);
+    }
+
+    private <T> T convertToAdaptable(Resource resource, Class<T> clazz) {
+        if (resource == null || clazz == ConfigurationBuilder.class) {
+            return null;
+        }
+        return resource.adaptTo(clazz);
+    }
+    
 }

Added: sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/contextaware/config/impl/ConfigurationResolverAdaptableTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/contextaware/config/impl/ConfigurationResolverAdaptableTest.java?rev=1758402&view=auto
==============================================================================
--- sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/contextaware/config/impl/ConfigurationResolverAdaptableTest.java (added)
+++ sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/contextaware/config/impl/ConfigurationResolverAdaptableTest.java Tue Aug 30 14:43:28 2016
@@ -0,0 +1,151 @@
+/*
+ * 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.contextaware.config.impl;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import java.util.Collection;
+import java.util.Iterator;
+
+import org.apache.sling.api.resource.Resource;
+import org.apache.sling.contextaware.config.ConfigurationBuilder;
+import org.apache.sling.contextaware.config.ConfigurationResolveException;
+import org.apache.sling.contextaware.config.ConfigurationResolver;
+import org.apache.sling.contextaware.config.example.SimpleSlingModel;
+import org.apache.sling.contextaware.config.resource.impl.ConfigurationResourceResolverImpl;
+import org.apache.sling.testing.mock.sling.junit.SlingContext;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+
+import com.google.common.collect.ImmutableMap;
+
+/**
+ * Test {@link ConfigurationResolver} with custom adaptions (in this case: Sling Models) for reading the config.
+ */
+public class ConfigurationResolverAdaptableTest {
+
+    @Rule
+    public SlingContext context = new SlingContext();
+
+    private ConfigurationResolver underTest;
+
+    private Resource site1Page1;
+    private Resource site2Page1;
+
+    @Before
+    public void setUp() {
+        context.registerInjectActivateService(new ConfigurationResourceResolverImpl());
+        underTest = context.registerInjectActivateService(new ConfigurationResolverImpl());
+
+        context.addModelsForPackage("org.apache.sling.contextaware.config.example");
+        
+        // config resources
+        context.create().resource("/config/content/site2/sling:configs/sampleName", ImmutableMap.<String, Object>builder()
+                .put("stringParam", "configValue1")
+                .put("intParam", 111)
+                .put("boolParam", true)
+                .build());
+
+        context.create().resource("/config/content/site2/sling:configs/sampleList/1", ImmutableMap.<String, Object>builder()
+                .put("stringParam", "configValue1.1")
+                .build());
+        context.create().resource("/config/content/site2/sling:configs/sampleList/2", ImmutableMap.<String, Object>builder()
+                .put("stringParam", "configValue1.2")
+                .build());
+        context.create().resource("/config/content/site2/sling:configs/sampleList/3", ImmutableMap.<String, Object>builder()
+                .put("stringParam", "configValue1.3")
+                .build());
+
+        // content resources
+        context.create().resource("/content/site1", ImmutableMap.<String, Object>builder()
+                .put("sling:config", "/config/content/site1")
+                .build());
+        context.create().resource("/content/site2", ImmutableMap.<String, Object>builder()
+                .put("sling:config", "/config/content/site2")
+                .build());
+        site1Page1 = context.create().resource("/content/site1/page1");
+        site2Page1 = context.create().resource("/content/site2/page1");   
+    }
+
+    @Test
+    public void testNonExistingConfig() {
+        SimpleSlingModel model = underTest.get(site1Page1).name("sampleName").asAdaptable(SimpleSlingModel.class);
+        assertNull(model);
+    }
+
+    @Test
+    public void testNonExistingConfigCollection() {
+        Collection<SimpleSlingModel> propsList = underTest.get(site1Page1).name("sampleList").asAdaptableCollection(SimpleSlingModel.class);
+        assertTrue(propsList.isEmpty());
+    }
+
+    @Test
+    public void testConfig() {
+        SimpleSlingModel model = underTest.get(site2Page1).name("sampleName").asAdaptable(SimpleSlingModel.class);
+        assertEquals("configValue1", model.getStringParam());
+    }
+
+    @Test
+    public void testConfig_ValueMapCollection() {
+        Collection<SimpleSlingModel> propsList = underTest.get(site2Page1).name("sampleList").asAdaptableCollection(SimpleSlingModel.class);
+
+        Iterator<SimpleSlingModel> propsIterator = propsList.iterator();
+        assertEquals("configValue1.1", propsIterator.next().getStringParam());
+        assertEquals("configValue1.2", propsIterator.next().getStringParam());
+        assertEquals("configValue1.3", propsIterator.next().getStringParam());
+    }
+
+    @Test
+    public void testNonExistingContentResource() {
+        SimpleSlingModel model = underTest.get(null).name("sampleName").asAdaptable(SimpleSlingModel.class);
+        assertNull(model);
+    }
+
+    @Test
+    public void testNonExistingContentResourceCollection() {
+        Collection<SimpleSlingModel> propsList = underTest.get(null).name("sampleList").asAdaptableCollection(SimpleSlingModel.class);
+        assertTrue(propsList.isEmpty());
+    }
+
+    @Test(expected=IllegalArgumentException.class)
+    public void testNullConfigName() {
+        underTest.get(site2Page1).name(null).asAdaptable(SimpleSlingModel.class);
+    }
+
+    @Test(expected=IllegalArgumentException.class)
+    public void testInvalidConfigName() {
+        underTest.get(site2Page1).name("/a/b/c").asAdaptable(SimpleSlingModel.class);
+    }
+
+    @Test(expected=ConfigurationResolveException.class)
+    public void testWithoutConfigName() {
+        underTest.get(site2Page1).asAdaptable(SimpleSlingModel.class);
+    }
+
+    @Test
+    public void testAdaptToConfigurationBuilder() {
+        // make sure not endless loop occurs
+        ConfigurationBuilder model = underTest.get(site2Page1).name("sampleName").asAdaptable(ConfigurationBuilder.class);
+        assertNull(model);
+    }
+
+}

Propchange: sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/contextaware/config/impl/ConfigurationResolverAdaptableTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/contextaware/config/impl/ConfigurationResolverAdaptableTest.java
------------------------------------------------------------------------------
--- svn:keywords (added)
+++ svn:keywords Tue Aug 30 14:43:28 2016
@@ -0,0 +1 @@
+LastChangedDate LastChangedRevision LastChangedBy HeadURL Id Author

Propchange: sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/contextaware/config/impl/ConfigurationResolverAdaptableTest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/contextaware/config/impl/ConfigurationResolverAnnotationClassTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/contextaware/config/impl/ConfigurationResolverAnnotationClassTest.java?rev=1758402&r1=1758401&r2=1758402&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/contextaware/config/impl/ConfigurationResolverAnnotationClassTest.java (original)
+++ sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/contextaware/config/impl/ConfigurationResolverAnnotationClassTest.java Tue Aug 30 14:43:28 2016
@@ -60,15 +60,15 @@ public class ConfigurationResolverAnnota
         underTest = context.registerInjectActivateService(new ConfigurationResolverImpl());
 
         // config resources
-        context.create().resource("/config/content/site2/sampleName", ImmutableMap.<String, Object>builder()
+        context.create().resource("/config/content/site2/sling:configs/org.apache.sling.contextaware.config.example.SimpleConfig", ImmutableMap.<String, Object>builder()
                 .put("stringParam", "configValue1")
                 .put("intParam", 111)
                 .put("boolParam", true)
                 .build());
 
-        context.create().resource("/config/content/site2/sling:configs/org.apache.sling.contextaware.config.example.SimpleConfig", ImmutableMap.<String, Object>builder()
-                .put("stringParam", "configValue1")
-                .put("intParam", 111)
+        context.create().resource("/config/content/site2/sling:configs/sampleName", ImmutableMap.<String, Object>builder()
+                .put("stringParam", "configValue1.1")
+                .put("intParam", 1111)
                 .put("boolParam", true)
                 .build());
 
@@ -145,6 +145,15 @@ public class ConfigurationResolverAnnota
         assertEquals(true, cfg.boolParam());
     }
 
+    @Test
+    public void testConfig_SimpleWithName() {
+        SimpleConfig cfg = underTest.get(site2Page1).name("sampleName").as(SimpleConfig.class);
+
+        assertEquals("configValue1.1", cfg.stringParam());
+        assertEquals(1111, cfg.intParam());
+        assertEquals(true, cfg.boolParam());
+    }
+
     @Test
     public void testConfig_List() {
         Collection<ListConfig> cfgList = underTest.get(site2Page1).asCollection(ListConfig.class);

Modified: sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/contextaware/config/impl/ConfigurationResolverValueMapTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/contextaware/config/impl/ConfigurationResolverValueMapTest.java?rev=1758402&r1=1758401&r2=1758402&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/contextaware/config/impl/ConfigurationResolverValueMapTest.java (original)
+++ sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/contextaware/config/impl/ConfigurationResolverValueMapTest.java Tue Aug 30 14:43:28 2016
@@ -85,7 +85,7 @@ public class ConfigurationResolverValueM
 
     @Test
     public void testNonExistingConfigMap() {
-        ValueMap props = underTest.get(site1Page1).name("sampleName").as(ValueMap.class);
+        ValueMap props = underTest.get(site1Page1).name("sampleName").asValueMap();
 
         assertNull(props.get("stringParam", String.class));
         assertEquals(0, (int)props.get("intParam", 0));
@@ -94,13 +94,13 @@ public class ConfigurationResolverValueM
 
     @Test
     public void testNonExistingConfigCollection() {
-        Collection<ValueMap> propsList = underTest.get(site1Page1).name("sampleList").asCollection(ValueMap.class);
+        Collection<ValueMap> propsList = underTest.get(site1Page1).name("sampleList").asValueMapCollection();
         assertTrue(propsList.isEmpty());
     }
 
     @Test
     public void testConfig() {
-        ValueMap props = underTest.get(site2Page1).name("sampleName").as(ValueMap.class);
+        ValueMap props = underTest.get(site2Page1).name("sampleName").asValueMap();
 
         assertEquals("configValue1", props.get("stringParam", String.class));
         assertEquals(111, (int)props.get("intParam", 0));
@@ -109,7 +109,7 @@ public class ConfigurationResolverValueM
 
     @Test
     public void testConfigCollection() {
-        Collection<ValueMap> propsList = underTest.get(site2Page1).name("sampleList").asCollection(ValueMap.class);
+        Collection<ValueMap> propsList = underTest.get(site2Page1).name("sampleList").asValueMapCollection();
 
         Iterator<ValueMap> propsIterator = propsList.iterator();
         assertEquals("configValue1.1", propsIterator.next().get("stringParam", String.class));
@@ -119,7 +119,7 @@ public class ConfigurationResolverValueM
 
     @Test
     public void testNonExistingContentResource() {
-        ValueMap props = underTest.get(null).name("sampleName").as(ValueMap.class);
+        ValueMap props = underTest.get(null).name("sampleName").asValueMap();
 
         assertNull(props.get("stringParam", String.class));
         assertEquals(0, (int)props.get("intParam", 0));
@@ -128,23 +128,28 @@ public class ConfigurationResolverValueM
 
     @Test
     public void testNonExistingContentResourceCollection() {
-        Collection<ValueMap> propsList = underTest.get(null).name("sampleList").asCollection(ValueMap.class);
+        Collection<ValueMap> propsList = underTest.get(null).name("sampleList").asValueMapCollection();
         assertTrue(propsList.isEmpty());
     }
 
     @Test(expected=IllegalArgumentException.class)
     public void testNullConfigName() {
-        underTest.get(site2Page1).name(null).as(ValueMap.class);
+        underTest.get(site2Page1).name(null).asValueMap();
     }
 
     @Test(expected=IllegalArgumentException.class)
     public void testInvalidConfigName() {
-        underTest.get(site2Page1).name("/a/b/c").as(ValueMap.class);
+        underTest.get(site2Page1).name("/a/b/c").asValueMap();
+    }
+
+    @Test(expected=IllegalArgumentException.class)
+    public void testInvalidConfigName2() {
+        underTest.get(site2Page1).name("../a/b/c").asValueMap();
     }
 
     @Test(expected=ConfigurationResolveException.class)
     public void testWithoutConfigName() {
-        underTest.get(site2Page1).as(ValueMap.class);
+        underTest.get(site2Page1).asValueMap();
     }
 
 }

Modified: sling/trunk/contrib/extensions/contextaware-config/integration-tests/src/test/java/org/apache/sling/contextaware/config/it/ConfigurationResolverValueMapIT.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/contextaware-config/integration-tests/src/test/java/org/apache/sling/contextaware/config/it/ConfigurationResolverValueMapIT.java?rev=1758402&r1=1758401&r2=1758402&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/contextaware-config/integration-tests/src/test/java/org/apache/sling/contextaware/config/it/ConfigurationResolverValueMapIT.java (original)
+++ sling/trunk/contrib/extensions/contextaware-config/integration-tests/src/test/java/org/apache/sling/contextaware/config/it/ConfigurationResolverValueMapIT.java Tue Aug 30 14:43:28 2016
@@ -58,7 +58,7 @@ public class ConfigurationResolverValueM
         Resource resourcePage1 = resourceResolver.getResource("/content/page1");
         
         ConfigurationResolver configResolver = teleporter.getService(ConfigurationResolver.class);
-        ValueMap props = configResolver.get(resourcePage1).name("test").as(ValueMap.class);
+        ValueMap props = configResolver.get(resourcePage1).name("test").asValueMap();
         assertNotNull(props);
 
         assertNull(props.get("stringParam", String.class));
@@ -79,7 +79,7 @@ public class ConfigurationResolverValueM
         Resource resourcePage1 = resourceResolver.getResource("/content/page1");
         
         ConfigurationResolver configResolver = teleporter.getService(ConfigurationResolver.class);
-        ValueMap props = configResolver.get(resourcePage1).name("test").as(ValueMap.class);
+        ValueMap props = configResolver.get(resourcePage1).name("test").asValueMap();
         assertNotNull(props);
         
         assertEquals("value1", props.get("stringParam", String.class));