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/12 14:40:29 UTC
svn commit: r1773798 - in
/sling/trunk/contrib/extensions/contextaware-config/impl/src:
main/java/org/apache/sling/caconfig/impl/override/
main/java/org/apache/sling/caconfig/management/
main/java/org/apache/sling/caconfig/management/impl/ test/java/or...
Author: sseifert
Date: Mon Dec 12 14:40:29 2016
New Revision: 1773798
URL: http://svn.apache.org/viewvc?rev=1773798&view=rev
Log:
SLING-6060 provide information in management API if whole configuration is overridden
Modified:
sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/impl/override/ConfigurationOverrideManager.java
sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/management/ConfigurationData.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/main/java/org/apache/sling/caconfig/management/impl/ValueInfoImpl.java
sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/management/impl/ConfigurationManagerImplTest.java
Modified: sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/impl/override/ConfigurationOverrideManager.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/impl/override/ConfigurationOverrideManager.java?rev=1773798&r1=1773797&r2=1773798&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/impl/override/ConfigurationOverrideManager.java (original)
+++ sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/impl/override/ConfigurationOverrideManager.java Mon Dec 12 14:40:29 2016
@@ -67,6 +67,23 @@ public class ConfigurationOverrideManage
protected void unbindConfigurationOverrideProvider(ConfigurationOverrideProvider item, Map<String, Object> props) {
items.unbind(item, props);
}
+
+ /**
+ * Checks if the whole configuration for the given context path and name is overridden.
+ * @param contextPath Context path
+ * @param configName Config name
+ * @return true if the whole configuration is overridden.
+ */
+ public boolean isAllOverridden(String contextPath, String configName) {
+ for (OverrideItem override : allOverrides) {
+ if (StringUtils.equals(configName, override.getConfigName()) && override.matchesPath(contextPath)) {
+ if (override.isAllProperties()) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
/**
* Override properties for given context path and configuration name.
Modified: sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/management/ConfigurationData.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/management/ConfigurationData.java?rev=1773798&r1=1773797&r2=1773798&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/management/ConfigurationData.java (original)
+++ sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/management/ConfigurationData.java Mon Dec 12 14:40:29 2016
@@ -76,4 +76,9 @@ public interface ConfigurationData {
*/
@CheckForNull ValueInfo<?> getValueInfo(String propertyName);
+ /**
+ * @return true if the whole configuration is overridden by an configuration override provider.
+ */
+ boolean isOverridden();
+
}
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=1773798&r1=1773797&r2=1773798&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 Mon Dec 12 14:40:29 2016
@@ -56,6 +56,7 @@ final class ConfigurationDataImpl implem
private final ConfigurationPersistenceStrategy configurationPersistenceStrategy;
private final boolean configResourceCollection;
private final String collectionItemName;
+ private final boolean isAllOverridden;
private Set<String> propertyNamesCache;
private ValueMap valuesCache;
@@ -81,6 +82,7 @@ final class ConfigurationDataImpl implem
this.configurationPersistenceStrategy = configurationPersistenceStrategy;
this.configResourceCollection = configResourceCollection;
this.collectionItemName = collectionItemName;
+ this.isAllOverridden = contextResource != null ? configurationOverrideManager.isAllOverridden(contextResource.getPath(), configName) : false;
}
public ConfigurationDataImpl(ConfigurationMetadata configMetadata,
@@ -222,7 +224,8 @@ final class ConfigurationDataImpl implem
configurationResourceInheritanceChain,
contextResource,
configName,
- configurationOverrideManager);
+ configurationOverrideManager,
+ isAllOverridden);
}
private Class<?> primitiveToWrapper(Class<?> type) {
@@ -242,5 +245,10 @@ final class ConfigurationDataImpl implem
return configMetadata.getPropertyMetadata().get(propertyName);
}
}
+
+ @Override
+ public boolean isOverridden() {
+ return isAllOverridden;
+ }
}
Modified: sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/management/impl/ValueInfoImpl.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/management/impl/ValueInfoImpl.java?rev=1773798&r1=1773797&r2=1773798&view=diff
==============================================================================
--- sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/management/impl/ValueInfoImpl.java (original)
+++ sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/management/impl/ValueInfoImpl.java Mon Dec 12 14:40:29 2016
@@ -42,11 +42,13 @@ final class ValueInfoImpl<T> implements
private final Resource contextResource;
private final String configName;
private final ConfigurationOverrideManager configurationOverrideManager;
+ private final boolean isAllOverridden;
public ValueInfoImpl(String name, T value, T effectiveValue, PropertyMetadata<T> propertyMetadata,
Resource resolvedConfigurationResource, Resource writebackConfigurationResource,
List<Resource> configurationResourceInheritanceChain,
- Resource contextResource, String configName, ConfigurationOverrideManager configurationOverrideManager) {
+ Resource contextResource, String configName, ConfigurationOverrideManager configurationOverrideManager,
+ boolean isAllOverridden) {
this.name = name;
this.value = value;
this.effectiveValue = effectiveValue;
@@ -58,6 +60,7 @@ final class ValueInfoImpl<T> implements
this.contextResource = contextResource;
this.configName = configName;
this.configurationOverrideManager = configurationOverrideManager;
+ this.isAllOverridden = isAllOverridden;
}
@Override
@@ -153,6 +156,9 @@ final class ValueInfoImpl<T> implements
if (contextResource == null) {
return false;
}
+ if (isAllOverridden) {
+ return true;
+ }
Map<String,Object> overrideProperties = configurationOverrideManager.overrideProperties(
contextResource.getPath(), configName, Collections.<String,Object>emptyMap());
if (overrideProperties != null) {
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=1773798&r1=1773797&r2=1773798&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 Mon Dec 12 14:40:29 2016
@@ -285,6 +285,7 @@ public class ConfigurationManagerImplTes
ConfigurationData configData = underTest.getConfiguration(contextResource, CONFIG_NAME);
assertNotNull(configData);
+ assertTrue(configData.isOverridden());
assertEquals(ImmutableSet.of("prop1", "prop2", "prop3"), configData.getPropertyNames());
assertEquals("value1", configData.getValues().get("prop1", String.class));
@@ -294,7 +295,7 @@ public class ConfigurationManagerImplTes
assertFalse(configData.getValueInfo("prop1").isInherited());
assertTrue(configData.getValueInfo("prop1").isOverridden());
assertFalse(configData.getValueInfo("prop3").isInherited());
- assertFalse(configData.getValueInfo("prop3").isOverridden());
+ assertTrue(configData.getValueInfo("prop3").isOverridden());
}
@Test
@@ -451,6 +452,7 @@ public class ConfigurationManagerImplTes
assertEquals(2, configDatas.size());
ConfigurationData configData1 = configDatas.get(0);
+ assertFalse(configData1.isOverridden());
assertEquals(ImmutableSet.of("prop1", "prop2", "prop3"), configData1.getPropertyNames());
assertEquals("value1", configData1.getValues().get("prop1", String.class));
assertEquals("override1", configData1.getEffectiveValues().get("prop1", String.class));
@@ -462,6 +464,7 @@ public class ConfigurationManagerImplTes
assertFalse(configData1.getValueInfo("prop3").isOverridden());
ConfigurationData configData2 = configDatas.get(1);
+ assertFalse(configData2.isOverridden());
assertEquals(ImmutableSet.of("prop1", "prop2", "prop3", "prop4"), configData2.getPropertyNames());
assertNull(configData2.getValues().get("prop1", String.class));
assertEquals("override1", configData2.getEffectiveValues().get("prop1", String.class));