Author: sseifert
Date: Wed Dec 7 20:12:27 2016
New Revision: 1773137
URL: http://svn.apache.org/viewvc?rev=1773137&view=rev
Log:
SLING-6347 respect service config
Added:
sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/resource/impl/util/PropertyUtil.java
(with props)
Modified:
sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/impl/def/DefaultConfigurationInheritanceStrategy.java
sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/resource/impl/def/DefaultConfigurationResourceResolvingStrategy.java
sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/impl/def/DefaultConfigurationInheritanceStrategyTest.java
sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/resource/impl/def/DefaultConfigurationResourceResolvingStrategyHierarchyTest.java
Modified:
sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/impl/def/DefaultConfigurationInheritanceStrategy.java
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/impl/def/DefaultConfigurationInheritanceStrategy.java?rev=1773137&r1=1773136&r2=1773137&view=diff
==============================================================================
---
sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/impl/def/DefaultConfigurationInheritanceStrategy.java
(original)
+++
sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/impl/def/DefaultConfigurationInheritanceStrategy.java
Wed Dec 7 20:12:27 2016
@@ -27,7 +27,9 @@ import java.util.Map;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.wrappers.ValueMapDecorator;
import org.apache.sling.caconfig.impl.ConfigurationResourceWrapper;
+import org.apache.sling.caconfig.resource.impl.util.PropertyUtil;
import org.apache.sling.caconfig.spi.ConfigurationInheritanceStrategy;
+import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.metatype.annotations.AttributeDefinition;
import org.osgi.service.metatype.annotations.Designate;
@@ -52,8 +54,18 @@ public class DefaultConfigurationInherit
}
+ private Config config;
+
+ @Activate
+ private void activate(final Config config) {
+ this.config = config;
+ }
+
@Override
public Resource getResource(Iterator<Resource> configResources) {
+ if (!config.enabled()) {
+ return null;
+ }
if (!configResources.hasNext()) {
return null;
}
@@ -66,7 +78,8 @@ public class DefaultConfigurationInherit
}
private boolean isPropertyInheritance(Resource resource) {
- return resource.getValueMap().get(PROPERTY_CONFIG_PROPERTY_INHERIT,
false);
+ return
PropertyUtil.getBooleanValueAdditionalKeys(resource.getValueMap(),
PROPERTY_CONFIG_PROPERTY_INHERIT,
+ config.configPropertyInheritancePropertyNames());
}
private Map<String,Object> getInheritedProperties(Map<String,Object>
parentProps, Iterator<Resource> inheritanceChain) {
@@ -85,4 +98,3 @@ public class DefaultConfigurationInherit
}
}
-
\ No newline at end of file
Modified:
sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/resource/impl/def/DefaultConfigurationResourceResolvingStrategy.java
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/resource/impl/def/DefaultConfigurationResourceResolvingStrategy.java?rev=1773137&r1=1773136&r2=1773137&view=diff
==============================================================================
---
sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/resource/impl/def/DefaultConfigurationResourceResolvingStrategy.java
(original)
+++
sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/resource/impl/def/DefaultConfigurationResourceResolvingStrategy.java
Wed Dec 7 20:12:27 2016
@@ -38,7 +38,6 @@ import org.apache.commons.collections.Tr
import org.apache.commons.collections.iterators.ArrayIterator;
import org.apache.commons.collections.iterators.FilterIterator;
import org.apache.commons.collections.iterators.IteratorChain;
-import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ResourceResolver;
@@ -48,6 +47,7 @@ import org.apache.sling.caconfig.managem
import org.apache.sling.caconfig.resource.impl.util.ConfigNameUtil;
import
org.apache.sling.caconfig.resource.impl.util.PathEliminateDuplicatesIterator;
import org.apache.sling.caconfig.resource.impl.util.PathParentExpandIterator;
+import org.apache.sling.caconfig.resource.impl.util.PropertyUtil;
import org.apache.sling.caconfig.resource.spi.CollectionInheritanceDecider;
import
org.apache.sling.caconfig.resource.spi.ConfigurationResourceResolvingStrategy;
import org.apache.sling.caconfig.resource.spi.ContextResource;
@@ -376,7 +376,8 @@ public class DefaultConfigurationResourc
// check collection inheritance mode on current level - should
we check on next-highest level as well?
final ValueMap valueMap = item.getValueMap();
- inherit = getBooleanValue(valueMap,
PROPERTY_CONFIG_COLLECTION_INHERIT,
config.configCollectionInheritancePropertyNames());
+ inherit = PropertyUtil.getBooleanValueAdditionalKeys(valueMap,
PROPERTY_CONFIG_COLLECTION_INHERIT,
+ config.configCollectionInheritancePropertyNames());
if (!inherit) {
break;
}
@@ -447,19 +448,6 @@ public class DefaultConfigurationResourc
return !StringUtils.equals(resource.getName(), "jcr:content");
}
- private boolean getBooleanValue(final ValueMap valueMap, final String key,
final String[] additionalKeys) {
- Boolean result = valueMap.get(key, Boolean.class);
- if ( result == null && !ArrayUtils.isEmpty(additionalKeys) ) {
- for(final String name : additionalKeys) {
- result = valueMap.get(name, Boolean.class);
- if ( result != null ) {
- break;
- }
- }
- }
- return result == null ? false : result.booleanValue();
- }
-
@Override
public String getResourcePath(Resource contentResource, String bucketName,
String configName) {
if (!isEnabledAndParamsValid(contentResource,
Collections.singleton(bucketName), configName)) {
Added:
sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/resource/impl/util/PropertyUtil.java
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/resource/impl/util/PropertyUtil.java?rev=1773137&view=auto
==============================================================================
---
sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/resource/impl/util/PropertyUtil.java
(added)
+++
sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/resource/impl/util/PropertyUtil.java
Wed Dec 7 20:12:27 2016
@@ -0,0 +1,50 @@
+/*
+ * 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.resource.impl.util;
+
+import org.apache.commons.lang3.ArrayUtils;
+import org.apache.sling.api.resource.ValueMap;
+
+public final class PropertyUtil {
+
+ private PropertyUtil() {
+ // static methods only
+ }
+
+ /**
+ * Get boolean value from value map with key, or with alternative keys if
not set.
+ * @param valueMap Value map
+ * @param key Primary key
+ * @param additionalKeys Alternative keys
+ * @return Value
+ */
+ public static boolean getBooleanValueAdditionalKeys(final ValueMap
valueMap, final String key, final String[] additionalKeys) {
+ Boolean result = valueMap.get(key, Boolean.class);
+ if ( result == null && !ArrayUtils.isEmpty(additionalKeys) ) {
+ for(final String name : additionalKeys) {
+ result = valueMap.get(name, Boolean.class);
+ if ( result != null ) {
+ break;
+ }
+ }
+ }
+ return result == null ? false : result.booleanValue();
+ }
+
+}
Propchange:
sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/resource/impl/util/PropertyUtil.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/resource/impl/util/PropertyUtil.java
------------------------------------------------------------------------------
--- svn:keywords (added)
+++ svn:keywords Wed Dec 7 20:12:27 2016
@@ -0,0 +1 @@
+LastChangedDate LastChangedRevision LastChangedBy HeadURL Id Author
Propchange:
sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/resource/impl/util/PropertyUtil.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified:
sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/impl/def/DefaultConfigurationInheritanceStrategyTest.java
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/impl/def/DefaultConfigurationInheritanceStrategyTest.java?rev=1773137&r1=1773136&r2=1773137&view=diff
==============================================================================
---
sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/impl/def/DefaultConfigurationInheritanceStrategyTest.java
(original)
+++
sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/impl/def/DefaultConfigurationInheritanceStrategyTest.java
Wed Dec 7 20:12:27 2016
@@ -28,7 +28,6 @@ import org.apache.sling.api.resource.Res
import org.apache.sling.api.resource.ValueMap;
import org.apache.sling.caconfig.spi.ConfigurationInheritanceStrategy;
import org.apache.sling.testing.mock.sling.junit.SlingContext;
-import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
@@ -36,18 +35,17 @@ import com.google.common.collect.Immutab
public class DefaultConfigurationInheritanceStrategyTest {
+ private static final String PROPERTY_CONFIG_PROPERTY_INHERIT_CUSTOM =
"custom:configPropertyInherit";
+
@Rule
public SlingContext context = new SlingContext();
private ConfigurationInheritanceStrategy underTest;
- @Before
- public void setUp() {
- underTest = context.registerInjectActivateService(new
DefaultConfigurationInheritanceStrategy());
- }
-
@Test
public void testWithoutPropertyMerging() {
+ underTest = context.registerInjectActivateService(new
DefaultConfigurationInheritanceStrategy());
+
Iterator<Resource> resources = ImmutableList.of(
context.create().resource("/conf/resource1", "prop1",
"value1a", "prop2", "value2a"),
context.create().resource("/conf/resource2", "prop2",
"value2b", "prop3", "value3b"),
@@ -65,9 +63,11 @@ public class DefaultConfigurationInherit
@Test
public void testWithPropertyMerging() {
+ underTest = context.registerInjectActivateService(new
DefaultConfigurationInheritanceStrategy(),
+ "configPropertyInheritancePropertyNames",
PROPERTY_CONFIG_PROPERTY_INHERIT_CUSTOM);
Iterator<Resource> resources = ImmutableList.of(
context.create().resource("/conf/resource1", "prop1",
"value1a", "prop2", "value2a", PROPERTY_CONFIG_PROPERTY_INHERIT, true),
- context.create().resource("/conf/resource2", "prop2",
"value2b", "prop3", "value3b", PROPERTY_CONFIG_PROPERTY_INHERIT, true),
+ context.create().resource("/conf/resource2", "prop2",
"value2b", "prop3", "value3b", PROPERTY_CONFIG_PROPERTY_INHERIT_CUSTOM, true),
context.create().resource("/conf/resource3", "prop4",
"value4b")
).iterator();
@@ -82,6 +82,8 @@ public class DefaultConfigurationInherit
@Test
public void testWithPartialPropertyMerging() {
+ underTest = context.registerInjectActivateService(new
DefaultConfigurationInheritanceStrategy());
+
Iterator<Resource> resources = ImmutableList.of(
context.create().resource("/conf/resource1", "prop1",
"value1a", "prop2", "value2a", PROPERTY_CONFIG_PROPERTY_INHERIT, true),
context.create().resource("/conf/resource2", "prop2",
"value2b", "prop3", "value3b"),
@@ -97,4 +99,19 @@ public class DefaultConfigurationInherit
assertNull(props.get("prop4", String.class));
}
+ @Test
+ public void testDisabled() {
+ underTest = context.registerInjectActivateService(new
DefaultConfigurationInheritanceStrategy(),
+ "enabled", false);
+
+ Iterator<Resource> resources = ImmutableList.of(
+ context.create().resource("/conf/resource1", "prop1",
"value1a", "prop2", "value2a", PROPERTY_CONFIG_PROPERTY_INHERIT, true),
+ context.create().resource("/conf/resource2", "prop2",
"value2b", "prop3", "value3b", PROPERTY_CONFIG_PROPERTY_INHERIT, true),
+ context.create().resource("/conf/resource3", "prop4",
"value4b")
+ ).iterator();
+
+ Resource inherited = underTest.getResource(resources);
+ assertNull(inherited);
+ }
+
}
Modified:
sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/resource/impl/def/DefaultConfigurationResourceResolvingStrategyHierarchyTest.java
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/resource/impl/def/DefaultConfigurationResourceResolvingStrategyHierarchyTest.java?rev=1773137&r1=1773136&r2=1773137&view=diff
==============================================================================
---
sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/resource/impl/def/DefaultConfigurationResourceResolvingStrategyHierarchyTest.java
(original)
+++
sling/trunk/contrib/extensions/contextaware-config/impl/src/test/java/org/apache/sling/caconfig/resource/impl/def/DefaultConfigurationResourceResolvingStrategyHierarchyTest.java
Wed Dec 7 20:12:27 2016
@@ -48,6 +48,7 @@ public class DefaultConfigurationResourc
private static final String BUCKET = "sling:test";
private static final Collection<String> BUCKETS =
Collections.singleton(BUCKET);
+ private static final String PROPERTY_CONFIG_COLLECTION_INHERIT_CUSTOM =
"custom:configCollectionInherit";
@Rule
public SlingContext context = new SlingContext();
@@ -61,7 +62,8 @@ public class DefaultConfigurationResourc
public void setUp() {
context.registerInjectActivateService(new
DefaultContextPathStrategy());
context.registerInjectActivateService(new
ContextPathStrategyMultiplexerImpl());
- underTest = context.registerInjectActivateService(new
DefaultConfigurationResourceResolvingStrategy());
+ underTest = context.registerInjectActivateService(new
DefaultConfigurationResourceResolvingStrategy(),
+ "configCollectionInheritancePropertyNames",
PROPERTY_CONFIG_COLLECTION_INHERIT_CUSTOM);
// content resources that form a deeper hierarchy
context.build()
@@ -136,8 +138,8 @@ public class DefaultConfigurationResourc
.resource("/conf/brand1/tenant1/region1/site1/sling:test/cfgCol",
PROPERTY_CONFIG_COLLECTION_INHERIT, true).resource("site1")
.resource("/conf/brand1/tenant1/region1/sling:test/cfgCol",
PROPERTY_CONFIG_COLLECTION_INHERIT, true).resource("region1")
.resource("/conf/brand1/tenant1/sling:test/cfgCol",
PROPERTY_CONFIG_COLLECTION_INHERIT, true).resource("tenant1")
- .resource("/conf/brand1/sling:test/cfgCol",
PROPERTY_CONFIG_COLLECTION_INHERIT, true).resource("brand1")
- .resource("/conf/global/sling:test/cfgCol",
PROPERTY_CONFIG_COLLECTION_INHERIT, true).resource("confGlobal")
+ .resource("/conf/brand1/sling:test/cfgCol",
PROPERTY_CONFIG_COLLECTION_INHERIT_CUSTOM, true).resource("brand1")
+ .resource("/conf/global/sling:test/cfgCol",
PROPERTY_CONFIG_COLLECTION_INHERIT_CUSTOM, true).resource("confGlobal")
.resource("/apps/conf/sling:test/cfgCol",
PROPERTY_CONFIG_COLLECTION_INHERIT, true).resource("appsGlobal")
.resource("/libs/conf/sling:test/cfgCol/libsGlobal1")
.resource("/libs/conf/sling:test/cfgCol/libsGlobal2");
@@ -169,7 +171,7 @@ public class DefaultConfigurationResourc
.siblingsMode()
.resource("item1")
.resource("item2")
- .resource("/conf/brand1/tenant1/region1/sling:test/cfgCol",
PROPERTY_CONFIG_COLLECTION_INHERIT, true)
+ .resource("/conf/brand1/tenant1/region1/sling:test/cfgCol",
PROPERTY_CONFIG_COLLECTION_INHERIT_CUSTOM, true)
.siblingsMode()
.resource("item1")
.resource("item3")
@@ -207,9 +209,9 @@ public class DefaultConfigurationResourc
.resource("/content/level1", PROPERTY_CONFIG_REF, "/conf/a1/a2")
.resource("/content/level1/level2", PROPERTY_CONFIG_REF,
"/conf/b1/b2")
.resource("/conf/a1/sling:test/cfgCol",
PROPERTY_CONFIG_COLLECTION_INHERIT, true).resource("a1")
- .resource("/conf/a1/a2/sling:test/cfgCol",
PROPERTY_CONFIG_COLLECTION_INHERIT, true).resource("a1_a2")
+ .resource("/conf/a1/a2/sling:test/cfgCol",
PROPERTY_CONFIG_COLLECTION_INHERIT_CUSTOM, true).resource("a1_a2")
.resource("/conf/b1/sling:test/cfgCol",
PROPERTY_CONFIG_COLLECTION_INHERIT, true).resource("b1")
- .resource("/conf/b1/b2/sling:test/cfgCol",
PROPERTY_CONFIG_COLLECTION_INHERIT, true).resource("b1_b2")
+ .resource("/conf/b1/b2/sling:test/cfgCol",
PROPERTY_CONFIG_COLLECTION_INHERIT_CUSTOM, true).resource("b1_b2")
.resource("/conf/global/sling:test/cfgCol",
PROPERTY_CONFIG_COLLECTION_INHERIT, true).resource("confGlobal")
.resource("/apps/conf/sling:test/cfgCol",
PROPERTY_CONFIG_COLLECTION_INHERIT, true).resource("appsGlobal")
.resource("/libs/conf/sling:test/cfgCol/libsGlobal");