SLING-3917 - Add transformQuery support to the ResourceAccessSecurity Implementation

git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1623676 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/sling/resourceaccesssecurity/ResourceAccessGate.java b/src/main/java/org/apache/sling/resourceaccesssecurity/ResourceAccessGate.java
index 6ee4e2b..dd7ce7a 100644
--- a/src/main/java/org/apache/sling/resourceaccesssecurity/ResourceAccessGate.java
+++ b/src/main/java/org/apache/sling/resourceaccesssecurity/ResourceAccessGate.java
@@ -187,7 +187,8 @@
      *            the language in which the query is expressed
      * @param resourceResolver
      *            the resource resolver which resolves the query
-     * @return the transformed query
+     * @return the transformed query or the original query if no tranformation
+     *      took place. This method should never return <code>null</code>
      * @throws AccessSecurityException
      */
     public String transformQuery(String query, String language,
diff --git a/src/main/java/org/apache/sling/resourceaccesssecurity/impl/ResourceAccessSecurityImpl.java b/src/main/java/org/apache/sling/resourceaccesssecurity/impl/ResourceAccessSecurityImpl.java
index cd1f200..53adb79 100644
--- a/src/main/java/org/apache/sling/resourceaccesssecurity/impl/ResourceAccessSecurityImpl.java
+++ b/src/main/java/org/apache/sling/resourceaccesssecurity/impl/ResourceAccessSecurityImpl.java
@@ -339,7 +339,20 @@
             final String language,
             final ResourceResolver resourceResolver)
     throws AccessSecurityException {
-        return query;
+        String returnValue = query;
+
+        for (ResourceAccessGateHandler handler : allHandlers) {
+            returnValue = handler.getResourceAccessGate().transformQuery(
+                    returnValue, language, resourceResolver);
+            if (returnValue == null) {
+                throw new AccessSecurityException(
+                        "Method transformQuery in ResourceAccessGate "
+                                + handler.getResourceAccessGate().getClass()
+                                        .getName() + " returned null.");
+            }
+        }
+
+        return returnValue;
     }
 
     /**