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