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