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


Reply via email to