Author: sseifert Date: Thu Oct 13 21:21:02 2016 New Revision: 1764794 URL: http://svn.apache.org/viewvc?rev=1764794&view=rev Log: SLING-6149 Context-Aware Config: Make lookup resource name for sling:config-ref property configurable
Modified: sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/contextaware/config/resource/impl/def/DefaultConfigurationResourceResolvingStrategy.java sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/contextaware/config/resource/impl/def/DefaultContextPathStrategy.java Modified: sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/contextaware/config/resource/impl/def/DefaultConfigurationResourceResolvingStrategy.java URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/contextaware/config/resource/impl/def/DefaultConfigurationResourceResolvingStrategy.java?rev=1764794&r1=1764793&r2=1764794&view=diff ============================================================================== --- sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/contextaware/config/resource/impl/def/DefaultConfigurationResourceResolvingStrategy.java (original) +++ sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/contextaware/config/resource/impl/def/DefaultConfigurationResourceResolvingStrategy.java Thu Oct 13 21:21:02 2016 @@ -75,6 +75,10 @@ public class DefaultConfigurationResourc @AttributeDefinition(name="Fallback paths", description = "Global fallback configurations, ordered from most specific (checked first) to least specific.") String[] fallbackPaths() default {"/conf/global", "/apps/conf", "/libs/conf"}; + + @AttributeDefinition(name="Config ref. resource names", + description = "Names of resource to try to look up sling:config-ref property in. '.' is also supported as current resource.") + String[] configRefResourceNames() default { "." }; } private final Logger logger = LoggerFactory.getLogger(this.getClass()); @@ -144,7 +148,18 @@ public class DefaultConfigurationResourc } private String getReference(final Resource resource) { - String ref = resource.getValueMap().get(PROPERTY_CONFIG_REF, String.class); + + // lookup reference string in any of the configured lookup resource names + String ref = null; + for (String name : config.configRefResourceNames()) { + Resource lookupResource = resource.getChild(name); + if (lookupResource != null) { + ref = lookupResource.getValueMap().get(PROPERTY_CONFIG_REF, String.class); + if (ref != null) { + break; + } + } + } if (ref != null) { // if absolute path found we are (probably) done Modified: sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/contextaware/config/resource/impl/def/DefaultContextPathStrategy.java URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/contextaware/config/resource/impl/def/DefaultContextPathStrategy.java?rev=1764794&r1=1764793&r2=1764794&view=diff ============================================================================== --- sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/contextaware/config/resource/impl/def/DefaultContextPathStrategy.java (original) +++ sling/trunk/contrib/extensions/contextaware-config/impl/src/main/java/org/apache/sling/contextaware/config/resource/impl/def/DefaultContextPathStrategy.java Thu Oct 13 21:21:02 2016 @@ -46,6 +46,10 @@ public class DefaultContextPathStrategy description = "Enable this context path strategy.") boolean enabled() default true; + @AttributeDefinition(name="Config ref. resource names", + description = "Names of resource to try to look up sling:config-ref property in. '.' is also supported as current resource.") + String[] configRefResourceNames() default { "." }; + } private final Logger log = LoggerFactory.getLogger(this.getClass()); @@ -119,7 +123,13 @@ public class DefaultContextPathStrategy } private boolean hasConfigRef(final Resource resource) { - return resource.getValueMap().get(PROPERTY_CONFIG_REF, String.class) != null; + for (String name : config.configRefResourceNames()) { + Resource lookupResource = resource.getChild(name); + if (lookupResource != null && lookupResource.getValueMap().get(PROPERTY_CONFIG_REF, String.class) != null) { + return true; + } + } + return false; } }