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/12/09 17:52:44 UTC
svn commit: r1773446 - in
/sling/trunk/contrib/extensions/contextaware-config:
impl/src/main/java/org/apache/sling/caconfig/impl/
impl/src/main/java/org/apache/sling/caconfig/management/impl/
impl/src/test/java/org/apache/sling/caconfig/example/ impl/s...
Author: sseifert
Date: Fri Dec 9 17:52:44 2016
New Revision: 1773446
URL: http://svn.apache.org/viewvc?rev=1773446&view=rev
Log:
SLING-6385 Context-Aware Config: Support default values in ConfigurationResolver for ValueMaps
Added:
sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/impl/DummyConfigurationMetadataProvider.java (with props)
Modified:
sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/impl/ConfigurationBuilderImpl.java
sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/impl/ConfigurationResolverImpl.java
sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/management/impl/ConfigurationDataImpl.java
sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/example/SimpleSlingModel.java
sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/impl/ConfigurationResolverAdaptableTest.java
sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/impl/ConfigurationResolverValueMapTest.java
sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/impl/ConfigurationTestUtils.java
sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/impl/metadata/ConfigurationMetadataProviderMultiplexerTest.java
sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/management/impl/ConfigurationManagerImplNoDefaultTest.java
sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/management/impl/ConfigurationManagerImplTest.java
sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/management/impl/console/CAConfigInventoryPrinterTest.java
sling/trunk/contrib/extensions/contextaware-config/testing/mocks/caconfig-mock-plugin/src/main/java/org/apache/sling/testing/mock/caconfig/ContextPlugins.java
Modified: sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/impl/ConfigurationBuilderImpl.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/impl/ConfigurationBuilderImpl.java?rev=1773446&r1=1773445&r2=1773446&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/impl/ConfigurationBuilderImpl.java (original)
+++ sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/impl/ConfigurationBuilderImpl.java Fri Dec 9 17:52:44 2016
@@ -21,13 +21,17 @@ package org.apache.sling.caconfig.impl;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
+import java.util.HashMap;
import java.util.Iterator;
+import java.util.Map;
import org.apache.commons.collections.IteratorUtils;
import org.apache.commons.collections.Transformer;
+import org.apache.commons.lang3.StringUtils;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ResourceUtil;
import org.apache.sling.api.resource.ValueMap;
+import org.apache.sling.api.wrappers.ValueMapDecorator;
import org.apache.sling.caconfig.ConfigurationBuilder;
import org.apache.sling.caconfig.ConfigurationResolveException;
import org.apache.sling.caconfig.ConfigurationResolver;
@@ -38,7 +42,10 @@ import org.apache.sling.caconfig.resourc
import org.apache.sling.caconfig.resource.impl.util.MapUtil;
import org.apache.sling.caconfig.resource.spi.ConfigurationResourceResolvingStrategy;
import org.apache.sling.caconfig.spi.ConfigurationInheritanceStrategy;
+import org.apache.sling.caconfig.spi.ConfigurationMetadataProvider;
import org.apache.sling.caconfig.spi.ConfigurationPersistenceStrategy;
+import org.apache.sling.caconfig.spi.metadata.ConfigurationMetadata;
+import org.apache.sling.caconfig.spi.metadata.PropertyMetadata;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -50,6 +57,7 @@ class ConfigurationBuilderImpl implement
private final ConfigurationPersistenceStrategy configurationPersistenceStrategy;
private final ConfigurationInheritanceStrategy configurationInheritanceStrategy;
private final ConfigurationOverrideManager configurationOverrideManager;
+ private final ConfigurationMetadataProvider configurationMetadataProvider;
private final Collection<String> configBucketNames;
private String configName;
@@ -62,6 +70,7 @@ class ConfigurationBuilderImpl implement
final ConfigurationPersistenceStrategy configurationPersistenceStrategy,
final ConfigurationInheritanceStrategy configurationInheritanceStrategy,
final ConfigurationOverrideManager configurationOverrideManager,
+ final ConfigurationMetadataProvider configurationMetadataProvider,
final Collection<String> configBucketNames) {
this.contentResource = resource;
this.configurationResolver = configurationResolver;
@@ -69,6 +78,7 @@ class ConfigurationBuilderImpl implement
this.configurationPersistenceStrategy = configurationPersistenceStrategy;
this.configurationInheritanceStrategy = configurationInheritanceStrategy;
this.configurationOverrideManager = configurationOverrideManager;
+ this.configurationMetadataProvider = configurationMetadataProvider;
this.configBucketNames = configBucketNames;
}
@@ -94,42 +104,42 @@ class ConfigurationBuilderImpl implement
* @param <T> Target class
*/
private interface Converter<T> {
- T convert(Resource resource, Class<T> clazz, String name);
+ T convert(Resource resource, Class<T> clazz, String configName);
}
/**
* Get singleton configuration resource and convert it to the desired target class.
- * @param name Configuration name
+ * @param configName Configuration name
* @param clazz Target class
* @param converter Conversion method
* @return Converted singleton configuration
*/
- private <T> T getConfigResource(String name, Class<T> clazz, Converter<T> converter) {
+ private <T> T getConfigResource(String configName, Class<T> clazz, Converter<T> converter) {
Iterator<Resource> resourceInheritanceChain = null;
if (this.contentResource != null) {
- validateConfigurationName(name);
+ validateConfigurationName(configName);
resourceInheritanceChain = this.configurationResourceResolvingStrategy
- .getResourceInheritanceChain(this.contentResource, configBucketNames, name);
+ .getResourceInheritanceChain(this.contentResource, configBucketNames, configName);
}
- return convert(resourceInheritanceChain, clazz, converter, name, false);
+ return convert(resourceInheritanceChain, clazz, converter, configName, false);
}
/**
* Get configuration resource collection and convert it to the desired target class.
- * @param name Configuration name
+ * @param configName Configuration name
* @param clazz Target class
* @param converter Conversion method
* @return Converted configuration collection
*/
- private <T> Collection<T> getConfigResourceCollection(String name, Class<T> clazz, Converter<T> converter) {
+ private <T> Collection<T> getConfigResourceCollection(String configName, Class<T> clazz, Converter<T> converter) {
if (this.contentResource != null) {
- validateConfigurationName(name);
+ validateConfigurationName(configName);
final Collection<T> result = new ArrayList<>();
Collection<Iterator<Resource>> resourceInheritanceChains = this.configurationResourceResolvingStrategy
- .getResourceCollectionInheritanceChain(this.contentResource, configBucketNames, name);;
+ .getResourceCollectionInheritanceChain(this.contentResource, configBucketNames, configName);;
if (resourceInheritanceChains != null) {
for (final Iterator<Resource> resourceInheritanceChain : resourceInheritanceChains) {
- final T obj = convert(resourceInheritanceChain, clazz, converter, name, true);
+ final T obj = convert(resourceInheritanceChain, clazz, converter, configName, true);
if (obj != null) {
result.add(obj);
}
@@ -171,6 +181,37 @@ class ConfigurationBuilderImpl implement
}
return converter.convert(configResource, clazz, conversionName);
}
+
+ /**
+ * Apply default values from configuration metadata (where no real data is present).
+ * @param props Properties
+ * @param configName Configuration name
+ * @return null if default values found, or a new map with added default properties.
+ */
+ private Map<String,Object> applyDefaultValues(Map<String,Object> props, String configName) {
+ ConfigurationMetadata metadata = configurationMetadataProvider.getConfigurationMetadata(configName);
+ if (metadata == null) {
+ // probably a configuration list - remove item name from end
+ if (StringUtils.contains(configName, "/")) {
+ String partialConfigName = StringUtils.substringBeforeLast(configName, "/");
+ metadata = configurationMetadataProvider.getConfigurationMetadata(partialConfigName);
+ }
+ if (metadata == null) {
+ return null;
+ }
+ }
+ Map<String,Object> updatedMap = new HashMap<>();
+ for (PropertyMetadata<?> propertyMetadata : metadata.getPropertyMetadata().values()) {
+ if (propertyMetadata.getDefaultValue() != null) {
+ updatedMap.put(propertyMetadata.getName(), propertyMetadata.getDefaultValue());
+ }
+ }
+ if (updatedMap.isEmpty()) {
+ return null;
+ }
+ updatedMap.putAll(props);
+ return updatedMap;
+ }
// --- Annotation class support ---
@@ -204,10 +245,10 @@ class ConfigurationBuilderImpl implement
private class AnnotationConverter<T> implements Converter<T> {
@Override
- public T convert(final Resource resource, final Class<T> clazz, final String name) {
+ public T convert(final Resource resource, final Class<T> clazz, final String configName) {
return ConfigurationProxy.get(resource, clazz, new ChildResolver() {
- private ConfigurationBuilder getConfiguration(String configName) {
- String childName = configurationPersistenceStrategy.getResourcePath(name) + "/" + configName;
+ private ConfigurationBuilder getConfiguration(String nestedConfigName) {
+ String childName = configurationPersistenceStrategy.getResourcePath(configName) + "/" + nestedConfigName;
return configurationResolver.get(contentResource).name(childName);
}
@Override
@@ -240,10 +281,17 @@ class ConfigurationBuilderImpl implement
return getConfigResourceCollection(this.configName, ValueMap.class, new ValueMapConverter());
}
- private static class ValueMapConverter implements Converter<ValueMap> {
+ private class ValueMapConverter implements Converter<ValueMap> {
@Override
- public ValueMap convert(Resource resource, Class<ValueMap> clazz, String name) {
- return ResourceUtil.getValueMap(resource);
+ public ValueMap convert(Resource resource, Class<ValueMap> clazz, String configName) {
+ ValueMap props = ResourceUtil.getValueMap(resource);
+ Map<String,Object> updatedMap = applyDefaultValues(props, configName);
+ if (updatedMap != null) {
+ return new ValueMapDecorator(updatedMap);
+ }
+ else {
+ return props;
+ }
}
}
@@ -265,9 +313,9 @@ class ConfigurationBuilderImpl implement
return getConfigResourceCollection(this.configName, clazz, new AdaptableConverter<T>());
}
- private static class AdaptableConverter<T> implements Converter<T> {
+ private class AdaptableConverter<T> implements Converter<T> {
@Override
- public T convert(Resource resource, Class<T> clazz, String name) {
+ public T convert(Resource resource, Class<T> clazz, String configName) {
if (resource == null || clazz == ConfigurationBuilder.class) {
return null;
}
Modified: sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/impl/ConfigurationResolverImpl.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/impl/ConfigurationResolverImpl.java?rev=1773446&r1=1773445&r2=1773446&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/impl/ConfigurationResolverImpl.java (original)
+++ sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/impl/ConfigurationResolverImpl.java Fri Dec 9 17:52:44 2016
@@ -28,6 +28,7 @@ import org.apache.commons.lang3.ArrayUti
import org.apache.sling.api.resource.Resource;
import org.apache.sling.caconfig.ConfigurationBuilder;
import org.apache.sling.caconfig.ConfigurationResolver;
+import org.apache.sling.caconfig.impl.metadata.ConfigurationMetadataProviderMultiplexer;
import org.apache.sling.caconfig.impl.override.ConfigurationOverrideManager;
import org.apache.sling.caconfig.management.impl.ConfigurationPersistenceStrategyMultiplexer;
import org.apache.sling.caconfig.resource.impl.ConfigurationResourceResolvingStrategyMultiplexer;
@@ -50,6 +51,8 @@ public class ConfigurationResolverImpl i
private ConfigurationInheritanceStrategyMultiplexer configurationInheritanceStrategy;
@Reference
private ConfigurationOverrideManager configurationOverrideManager;
+ @Reference
+ private ConfigurationMetadataProviderMultiplexer configurationMetadataProvider;
@ObjectClassDefinition(name="Apache Sling Context-Aware Configuration Resolver",
description="Getting context-aware configurations for a given resource context.")
@@ -79,7 +82,7 @@ public class ConfigurationResolverImpl i
public ConfigurationBuilder get(Resource resource) {
return new ConfigurationBuilderImpl(resource, this,
configurationResourceResolvingStrategy, configurationPersistenceStrategy,
- configurationInheritanceStrategy, configurationOverrideManager,
+ configurationInheritanceStrategy, configurationOverrideManager, configurationMetadataProvider,
configBucketNames);
}
Modified: sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/management/impl/ConfigurationDataImpl.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/management/impl/ConfigurationDataImpl.java?rev=1773446&r1=1773445&r2=1773446&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/management/impl/ConfigurationDataImpl.java (original)
+++ sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/management/impl/ConfigurationDataImpl.java Fri Dec 9 17:52:44 2016
@@ -136,7 +136,7 @@ final class ConfigurationDataImpl implem
if (valuesCache == null) {
Map<String,Object> props = new HashMap<>();
if (writebackConfigurationResource != null) {
- props.putAll( ResourceUtil.getValueMap(writebackConfigurationResource));
+ props.putAll(ResourceUtil.getValueMap(writebackConfigurationResource));
}
PropertiesFilterUtil.removeIgnoredProperties(props);
resolveNestedConfigs(props);
Modified: sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/example/SimpleSlingModel.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/example/SimpleSlingModel.java?rev=1773446&r1=1773445&r2=1773446&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/example/SimpleSlingModel.java (original)
+++ sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/example/SimpleSlingModel.java Fri Dec 9 17:52:44 2016
@@ -28,4 +28,10 @@ public interface SimpleSlingModel {
@ValueMapValue(name="stringParam")
String getStringParam();
+ @ValueMapValue(name="intParam", optional = true)
+ int getIntParam();
+
+ @ValueMapValue(name="boolParam", optional = true)
+ boolean getBoolParam();
+
}
Modified: sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/impl/ConfigurationResolverAdaptableTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/impl/ConfigurationResolverAdaptableTest.java?rev=1773446&r1=1773445&r2=1773446&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/impl/ConfigurationResolverAdaptableTest.java (original)
+++ sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/impl/ConfigurationResolverAdaptableTest.java Fri Dec 9 17:52:44 2016
@@ -80,10 +80,12 @@ public class ConfigurationResolverAdapta
SimpleSlingModel model = underTest.get(site1Page1).name("sampleName").asAdaptable(SimpleSlingModel.class);
assertEquals("configValue1", model.getStringParam());
+ assertEquals(111, model.getIntParam());
+ assertEquals(true, model.getBoolParam());
}
@Test
- public void testConfig_ValueMapCollection() {
+ public void testConfigCollection() {
context.build().resource("/conf/content/site1/sling:configs/sampleList")
.siblingsMode()
.resource("1", "stringParam", "configValue1.1")
@@ -98,6 +100,45 @@ public class ConfigurationResolverAdapta
assertEquals("configValue1.3", propsIterator.next().getStringParam());
}
+ /*
+ -- this is currently not supported --
+ @Test
+ public void testConfigWithDefaultValues() {
+ context.registerService(ConfigurationMetadataProvider.class, new DummyConfigurationMetadataProvider("sampleName",
+ ImmutableMap.<String, Object>of("stringParam", "defValue1", "intParam", 999), false));
+
+ context.build().resource("/conf/content/site1/sling:configs/sampleName",
+ "boolParam", true);
+
+ SimpleSlingModel model = underTest.get(site1Page1).name("sampleName").asAdaptable(SimpleSlingModel.class);
+ assertEquals("defValue1", model.getStringParam());
+ assertEquals(999, model.getIntParam());
+ assertEquals(true, model.getBoolParam());
+ }
+
+ @Test
+ public void testConfigCollectionWithDefaultValues() {
+ context.registerService(ConfigurationMetadataProvider.class, new DummyConfigurationMetadataProvider("sampleList",
+ ImmutableMap.<String, Object>of("intParam", 999), true));
+
+ context.build().resource("/conf/content/site1/sling:configs/sampleList")
+ .siblingsMode()
+ .resource("1", "stringParam", "configValue1.1")
+ .resource("2", "stringParam", "configValue1.2")
+ .resource("3", "stringParam", "configValue1.3");
+
+ List<SimpleSlingModel> propsList = ImmutableList.copyOf(underTest.get(site1Page1).name("sampleList").asAdaptableCollection(SimpleSlingModel.class));
+
+ assertEquals("configValue1.1", propsList.get(0).getStringParam());
+ assertEquals(999, propsList.get(0).getIntParam());
+ assertEquals("configValue1.2", propsList.get(1).getStringParam());
+ assertEquals(999, propsList.get(1).getIntParam());
+ assertEquals("configValue1.3", propsList.get(2).getStringParam());
+ assertEquals(999, propsList.get(2).getIntParam());
+ }
+ -- end --
+ */
+
@Test
public void testNonExistingContentResource() {
SimpleSlingModel model = underTest.get(null).name("sampleName").asAdaptable(SimpleSlingModel.class);
Modified: sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/impl/ConfigurationResolverValueMapTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/impl/ConfigurationResolverValueMapTest.java?rev=1773446&r1=1773445&r2=1773446&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/impl/ConfigurationResolverValueMapTest.java (original)
+++ sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/impl/ConfigurationResolverValueMapTest.java Fri Dec 9 17:52:44 2016
@@ -25,18 +25,23 @@ import static org.junit.Assert.assertTru
import java.util.Collection;
import java.util.Iterator;
+import java.util.List;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ValueMap;
import org.apache.sling.caconfig.ConfigurationResolveException;
import org.apache.sling.caconfig.ConfigurationResolver;
import org.apache.sling.caconfig.impl.override.DummyConfigurationOverrideProvider;
+import org.apache.sling.caconfig.spi.ConfigurationMetadataProvider;
import org.apache.sling.caconfig.spi.ConfigurationOverrideProvider;
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.ImmutableList;
+import com.google.common.collect.ImmutableMap;
+
/**
* Test {@link ConfigurationResolver} with ValueMap for reading the config.
*/
@@ -104,6 +109,42 @@ public class ConfigurationResolverValueM
}
@Test
+ public void testConfigWithDefaultValues() {
+ context.registerService(ConfigurationMetadataProvider.class, new DummyConfigurationMetadataProvider("sampleName",
+ ImmutableMap.<String, Object>of("stringParam", "defValue1", "intParam", 999), false));
+
+ context.build().resource("/conf/content/site1/sling:configs/sampleName",
+ "boolParam", true);
+
+ ValueMap props = underTest.get(site1Page1).name("sampleName").asValueMap();
+
+ assertEquals("defValue1", props.get("stringParam", String.class));
+ assertEquals(999, (int)props.get("intParam", 0));
+ assertEquals(true, props.get("boolParam", false));
+ }
+
+ @Test
+ public void testConfigCollectionWithDefaultValues() {
+ context.registerService(ConfigurationMetadataProvider.class, new DummyConfigurationMetadataProvider("sampleList",
+ ImmutableMap.<String, Object>of("intParam", 999), true));
+
+ context.build().resource("/conf/content/site1/sling:configs/sampleList")
+ .siblingsMode()
+ .resource("1", "stringParam", "configValue1.1")
+ .resource("2", "stringParam", "configValue1.2")
+ .resource("3", "stringParam", "configValue1.3");
+
+ List<ValueMap> propsList = ImmutableList.copyOf(underTest.get(site1Page1).name("sampleList").asValueMapCollection());
+
+ assertEquals("configValue1.1", propsList.get(0).get("stringParam", String.class));
+ assertEquals(999, (int)propsList.get(0).get("intParam", 0));
+ assertEquals("configValue1.2", propsList.get(1).get("stringParam", String.class));
+ assertEquals(999, (int)propsList.get(1).get("intParam", 0));
+ assertEquals("configValue1.3", propsList.get(2).get("stringParam", String.class));
+ assertEquals(999, (int)propsList.get(2).get("intParam", 0));
+ }
+
+ @Test
public void testConfigWithOverride() {
context.registerService(ConfigurationOverrideProvider.class, new DummyConfigurationOverrideProvider(
"[/content]sampleName={stringParam='override1',intParam=222}"));
Modified: sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/impl/ConfigurationTestUtils.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/impl/ConfigurationTestUtils.java?rev=1773446&r1=1773445&r2=1773446&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/impl/ConfigurationTestUtils.java (original)
+++ sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/impl/ConfigurationTestUtils.java Fri Dec 9 17:52:44 2016
@@ -21,6 +21,7 @@ package org.apache.sling.caconfig.impl;
import org.apache.sling.caconfig.ConfigurationResolver;
import org.apache.sling.caconfig.impl.def.DefaultConfigurationInheritanceStrategy;
import org.apache.sling.caconfig.impl.def.DefaultConfigurationPersistenceStrategy;
+import org.apache.sling.caconfig.impl.metadata.ConfigurationMetadataProviderMultiplexer;
import org.apache.sling.caconfig.impl.override.ConfigurationOverrideManager;
import org.apache.sling.caconfig.management.impl.ConfigurationPersistenceStrategyMultiplexer;
import org.apache.sling.caconfig.resource.impl.ConfigurationResourceTestUtils;
@@ -43,6 +44,7 @@ public final class ConfigurationTestUtil
context.registerInjectActivateService(new DefaultConfigurationInheritanceStrategy());
context.registerInjectActivateService(new ConfigurationInheritanceStrategyMultiplexer());
context.registerInjectActivateService(new ConfigurationOverrideManager());
+ context.registerInjectActivateService(new ConfigurationMetadataProviderMultiplexer());
return context.registerInjectActivateService(new ConfigurationResolverImpl(), properties);
}
@@ -56,6 +58,7 @@ public final class ConfigurationTestUtil
context.registerInjectActivateService(new ConfigurationPersistenceStrategyMultiplexer());
context.registerInjectActivateService(new ConfigurationInheritanceStrategyMultiplexer());
context.registerInjectActivateService(new ConfigurationOverrideManager());
+ context.registerInjectActivateService(new ConfigurationMetadataProviderMultiplexer());
return context.registerInjectActivateService(new ConfigurationResolverImpl(), properties);
}
Added: sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/impl/DummyConfigurationMetadataProvider.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/impl/DummyConfigurationMetadataProvider.java?rev=1773446&view=auto
==============================================================================
--- sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/impl/DummyConfigurationMetadataProvider.java (added)
+++ sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/impl/DummyConfigurationMetadataProvider.java Fri Dec 9 17:52:44 2016
@@ -0,0 +1,62 @@
+/*
+ * 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.caconfig.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.SortedSet;
+
+import org.apache.commons.lang3.StringUtils;
+import org.apache.sling.caconfig.spi.ConfigurationMetadataProvider;
+import org.apache.sling.caconfig.spi.metadata.ConfigurationMetadata;
+import org.apache.sling.caconfig.spi.metadata.PropertyMetadata;
+
+import com.google.common.collect.ImmutableSortedSet;
+
+class DummyConfigurationMetadataProvider implements ConfigurationMetadataProvider {
+
+ private final String configName;
+ private final Map<String,Object> defaultValues;
+ private final boolean collection;
+
+ public DummyConfigurationMetadataProvider(String configName, Map<String, Object> defaultValues, boolean collection) {
+ this.configName = configName;
+ this.defaultValues = defaultValues;
+ this.collection = collection;
+ }
+
+ @Override
+ public SortedSet<String> getConfigurationNames() {
+ return ImmutableSortedSet.of(configName);
+ }
+
+ @Override
+ public ConfigurationMetadata getConfigurationMetadata(String configName) {
+ if (!StringUtils.equals(this.configName, configName)) {
+ return null;
+ }
+ List<PropertyMetadata<?>> properties = new ArrayList<>();
+ for (Map.Entry<String, Object> entry : defaultValues.entrySet()) {
+ properties.add(new PropertyMetadata<>(entry.getKey(), entry.getValue()));
+ }
+ return new ConfigurationMetadata(configName, properties, collection);
+ }
+
+}
Propchange: sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/impl/DummyConfigurationMetadataProvider.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/impl/DummyConfigurationMetadataProvider.java
------------------------------------------------------------------------------
--- svn:keywords (added)
+++ svn:keywords Fri Dec 9 17:52:44 2016
@@ -0,0 +1 @@
+LastChangedDate LastChangedRevision LastChangedBy HeadURL Id Author
Propchange: sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/impl/DummyConfigurationMetadataProvider.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/impl/metadata/ConfigurationMetadataProviderMultiplexerTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/impl/metadata/ConfigurationMetadataProviderMultiplexerTest.java?rev=1773446&r1=1773445&r2=1773446&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/impl/metadata/ConfigurationMetadataProviderMultiplexerTest.java (original)
+++ sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/impl/metadata/ConfigurationMetadataProviderMultiplexerTest.java Fri Dec 9 17:52:44 2016
@@ -27,6 +27,8 @@ import java.util.Map;
import java.util.SortedSet;
import java.util.TreeSet;
+import org.apache.sling.caconfig.impl.def.DefaultConfigurationPersistenceStrategy;
+import org.apache.sling.caconfig.management.impl.ConfigurationPersistenceStrategyMultiplexer;
import org.apache.sling.caconfig.spi.ConfigurationMetadataProvider;
import org.apache.sling.caconfig.spi.metadata.ConfigurationMetadata;
import org.apache.sling.caconfig.spi.metadata.PropertyMetadata;
@@ -47,6 +49,8 @@ public class ConfigurationMetadataProvid
@Before
public void setUp() {
+ context.registerInjectActivateService(new ConfigurationPersistenceStrategyMultiplexer());
+ context.registerInjectActivateService(new DefaultConfigurationPersistenceStrategy());
underTest = context.registerInjectActivateService(new ConfigurationMetadataProviderMultiplexer());
}
Modified: sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/management/impl/ConfigurationManagerImplNoDefaultTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/management/impl/ConfigurationManagerImplNoDefaultTest.java?rev=1773446&r1=1773445&r2=1773446&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/management/impl/ConfigurationManagerImplNoDefaultTest.java (original)
+++ sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/management/impl/ConfigurationManagerImplNoDefaultTest.java Fri Dec 9 17:52:44 2016
@@ -29,7 +29,6 @@ import java.util.List;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.caconfig.impl.ConfigurationTestUtils;
-import org.apache.sling.caconfig.impl.metadata.ConfigurationMetadataProviderMultiplexer;
import org.apache.sling.caconfig.management.ConfigurationData;
import org.apache.sling.caconfig.management.ConfigurationManager;
import org.apache.sling.caconfig.spi.ConfigurationMetadataProvider;
@@ -69,7 +68,6 @@ public class ConfigurationManagerImplNoD
@Before
public void setUp() {
context.registerService(ConfigurationMetadataProvider.class, configurationMetadataProvider);
- context.registerInjectActivateService(new ConfigurationMetadataProviderMultiplexer());
ConfigurationTestUtils.registerConfigurationResolverWithoutDefaultImpl(context);
underTest = context.registerInjectActivateService(new ConfigurationManagerImpl());
Modified: sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/management/impl/ConfigurationManagerImplTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/management/impl/ConfigurationManagerImplTest.java?rev=1773446&r1=1773445&r2=1773446&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/management/impl/ConfigurationManagerImplTest.java (original)
+++ sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/management/impl/ConfigurationManagerImplTest.java Fri Dec 9 17:52:44 2016
@@ -34,7 +34,6 @@ import org.apache.sling.api.resource.Res
import org.apache.sling.api.resource.ValueMap;
import org.apache.sling.caconfig.impl.ConfigurationTestUtils;
import org.apache.sling.caconfig.impl.def.ConfigurationDefNameConstants;
-import org.apache.sling.caconfig.impl.metadata.ConfigurationMetadataProviderMultiplexer;
import org.apache.sling.caconfig.impl.override.DummyConfigurationOverrideProvider;
import org.apache.sling.caconfig.management.ConfigurationCollectionData;
import org.apache.sling.caconfig.management.ConfigurationData;
@@ -82,7 +81,6 @@ public class ConfigurationManagerImplTes
@Before
public void setUp() {
context.registerService(ConfigurationMetadataProvider.class, configurationMetadataProvider);
- context.registerInjectActivateService(new ConfigurationMetadataProviderMultiplexer());
ConfigurationTestUtils.registerConfigurationResolver(context,
"configBucketNames", getAlternativeBucketNames());
underTest = context.registerInjectActivateService(new ConfigurationManagerImpl());
Modified: sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/management/impl/console/CAConfigInventoryPrinterTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/management/impl/console/CAConfigInventoryPrinterTest.java?rev=1773446&r1=1773445&r2=1773446&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/management/impl/console/CAConfigInventoryPrinterTest.java (original)
+++ sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/management/impl/console/CAConfigInventoryPrinterTest.java Fri Dec 9 17:52:44 2016
@@ -29,7 +29,6 @@ import org.apache.felix.inventory.Format
import org.apache.sling.caconfig.impl.ConfigurationTestUtils;
import org.apache.sling.caconfig.impl.def.DefaultConfigurationInheritanceStrategy;
import org.apache.sling.caconfig.impl.def.DefaultConfigurationPersistenceStrategy;
-import org.apache.sling.caconfig.impl.metadata.ConfigurationMetadataProviderMultiplexer;
import org.apache.sling.caconfig.spi.ConfigurationMetadataProvider;
import org.apache.sling.caconfig.spi.ConfigurationOverrideProvider;
import org.apache.sling.caconfig.spi.metadata.ConfigurationMetadata;
@@ -64,7 +63,6 @@ public class CAConfigInventoryPrinterTes
@Before
public void setUp() {
context.registerService(ConfigurationMetadataProvider.class, configurationMetadataProvider);
- context.registerInjectActivateService(new ConfigurationMetadataProviderMultiplexer());
context.registerService(ConfigurationOverrideProvider.class, configurationOverrideProvider);
ConfigurationTestUtils.registerConfigurationResolver(context);
underTest = context.registerInjectActivateService(new CAConfigInventoryPrinter());
Modified: sling/trunk/contrib/extensions/contextaware-config/testing/mocks/caconfig-mock-plugin/src/main/java/org/apache/sling/testing/mock/caconfig/ContextPlugins.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/contextaware-config/testing/mocks/caconfig-mock-plugin/src/main/java/org/apache/sling/testing/mock/caconfig/ContextPlugins.java?rev=1773446&r1=1773445&r2=1773446&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/contextaware-config/testing/mocks/caconfig-mock-plugin/src/main/java/org/apache/sling/testing/mock/caconfig/ContextPlugins.java (original)
+++ sling/trunk/contrib/extensions/contextaware-config/testing/mocks/caconfig-mock-plugin/src/main/java/org/apache/sling/testing/mock/caconfig/ContextPlugins.java Fri Dec 9 17:52:44 2016
@@ -104,6 +104,7 @@ public final class ContextPlugins {
*/
private static void registerConfigurationResolver(SlingContextImpl context) {
context.registerInjectActivateService(new ConfigurationPersistenceStrategyMultiplexer());
+ context.registerInjectActivateService(new ConfigurationMetadataProviderMultiplexer());
// only required for impl 1.2+
registerByClassName(context, "org.apache.sling.caconfig.impl.ConfigurationInheritanceStrategyMultiplexer");
@@ -127,7 +128,6 @@ public final class ContextPlugins {
}
private static void registerConfigurationManagement(SlingContextImpl context) {
- context.registerInjectActivateService(new ConfigurationMetadataProviderMultiplexer());
context.registerInjectActivateService(new ConfigurationManagerImpl());
context.registerInjectActivateService(new AnnotationClassConfigurationMetadataProvider());
}