You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2016/11/03 12:46:47 UTC
svn commit: r1767879 -
/sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/resource/impl/def/DefaultConfigurationResourceResolvingStrategy.java
Author: cziegeler
Date: Thu Nov 3 12:46:47 2016
New Revision: 1767879
URL: http://svn.apache.org/viewvc?rev=1767879&view=rev
Log:
SLING-6240 : Log a warning with clearly wrong configured ref properties
Modified:
sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/caconfig/resource/impl/def/DefaultConfigurationResourceResolvingStrategy.java
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=1767879&r1=1767878&r2=1767879&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 Thu Nov 3 12:46:47 2016
@@ -110,10 +110,10 @@ public class DefaultConfigurationResourc
}
@SuppressWarnings("unchecked")
- Iterator<String> getResolvePaths(final Resource contentResource) {
+ Iterator<String> getResolvePaths(final Resource contentResource, final String bucketName) {
return new IteratorChain(
// add all config references found in resource hierarchy
- findConfigRefs(contentResource),
+ findConfigRefs(contentResource, bucketName),
// finally add the global fallbacks
new ArrayIterator(this.config.fallbackPaths())
);
@@ -138,7 +138,7 @@ public class DefaultConfigurationResourc
* @param startResource Resource to start searching
*/
@SuppressWarnings("unchecked")
- private Iterator<String> findConfigRefs(final Resource startResource) {
+ private Iterator<String> findConfigRefs(final Resource startResource, final String bucketName) {
// collect all context path resources
Iterator<ContextResource> contextResources = contextPathStrategy.findContextResources(startResource);
@@ -146,7 +146,7 @@ public class DefaultConfigurationResourc
Iterator<String> configPaths = new FilterIterator(new TransformIterator(contextResources, new Transformer() {
@Override
public Object transform(Object input) {
- return getReference((ContextResource)input);
+ return getReference((ContextResource)input, bucketName);
}
}), PredicateUtils.notNullPredicate());
@@ -154,7 +154,8 @@ public class DefaultConfigurationResourc
return new PathEliminateDuplicatesIterator(new PathParentExpandIterator(config.configPath(), configPaths));
}
- private String getReference(final ContextResource contextResource) {
+ private String getReference(final ContextResource contextResource, final String bucketName) {
+ final String notAllowedPostfix = "/" + bucketName;
Resource resource = contextResource.getResource();
String ref = contextResource.getConfigRef();
@@ -164,6 +165,10 @@ public class DefaultConfigurationResourc
// combine full path if relativeRef is present
ref = ResourceUtil.normalize(ref);
+ if (ref != null && ref.endsWith(notAllowedPostfix) ) {
+ logger.warn("Ignoring reference to {} from {} - Probably misconfigured as it ends with '/{}'", ref, resource.getPath(), bucketName);
+ ref = null;
+ }
if (ref != null && !isAllowedConfigPath(ref)) {
logger.warn("Ignoring reference to {} from {} - not in allowed paths.", ref, resource.getPath());
ref = null;
@@ -220,7 +225,7 @@ public class DefaultConfigurationResourc
// strategy: find first item among all configured paths
int idx = 1;
- Iterator<String> paths = getResolvePaths(contentResource);
+ Iterator<String> paths = getResolvePaths(contentResource, bucketName);
Resource configResource = null;
Map<String,Object> configValueMap = null;
boolean propertyInheritance = false;
@@ -278,7 +283,7 @@ public class DefaultConfigurationResourc
final Map<String,Map<String,Object>> configValueMaps = new HashMap<>();
int idx = 1;
- Iterator<String> paths = getResolvePaths(contentResource);
+ Iterator<String> paths = getResolvePaths(contentResource, bucketName);
boolean inheritCollection = false;
boolean inheritProperties = false;
boolean inherit = false;
@@ -373,7 +378,7 @@ public class DefaultConfigurationResourc
}
String name = bucketName + "/" + configName;
- Iterator<String> configPaths = this.findConfigRefs(contentResource);
+ Iterator<String> configPaths = this.findConfigRefs(contentResource, bucketName);
if (configPaths.hasNext()) {
String configPath = buildResourcePath(configPaths.next(), name);
logger.debug("Building configuration path {} for resource {}: {}", name, contentResource.getPath(), configPath);
@@ -392,7 +397,7 @@ public class DefaultConfigurationResourc
}
String name = bucketName + "/" + configName;
- Iterator<String> configPaths = this.findConfigRefs(contentResource);
+ Iterator<String> configPaths = this.findConfigRefs(contentResource, bucketName);
if (configPaths.hasNext()) {
String configPath = buildResourcePath(configPaths.next(), name);
logger.debug("Building configuration collection parent path {} for resource {}: {}", name, contentResource.getPath(), configPath);