You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by bd...@apache.org on 2016/04/26 18:47:57 UTC

svn commit: r1741055 - in /sling/whiteboard/bdelacretaz/filtering-resource-decorator: ./ src/ src/main/ src/main/java/ src/main/java/org/ src/main/java/org/apache/ src/main/java/org/apache/sling/ src/main/java/org/apache/sling/filteringrd/ src/main/jav...

Author: bdelacretaz
Date: Tue Apr 26 16:47:57 2016
New Revision: 1741055

URL: http://svn.apache.org/viewvc?rev=1741055&view=rev
Log:
Experiment using a ResourceDecorator to selectively hide resources

Added:
    sling/whiteboard/bdelacretaz/filtering-resource-decorator/   (with props)
    sling/whiteboard/bdelacretaz/filtering-resource-decorator/README.md
    sling/whiteboard/bdelacretaz/filtering-resource-decorator/pom.xml
    sling/whiteboard/bdelacretaz/filtering-resource-decorator/src/
    sling/whiteboard/bdelacretaz/filtering-resource-decorator/src/main/
    sling/whiteboard/bdelacretaz/filtering-resource-decorator/src/main/java/
    sling/whiteboard/bdelacretaz/filtering-resource-decorator/src/main/java/org/
    sling/whiteboard/bdelacretaz/filtering-resource-decorator/src/main/java/org/apache/
    sling/whiteboard/bdelacretaz/filtering-resource-decorator/src/main/java/org/apache/sling/
    sling/whiteboard/bdelacretaz/filtering-resource-decorator/src/main/java/org/apache/sling/filteringrd/
    sling/whiteboard/bdelacretaz/filtering-resource-decorator/src/main/java/org/apache/sling/filteringrd/ResourceFilter.java
    sling/whiteboard/bdelacretaz/filtering-resource-decorator/src/main/java/org/apache/sling/filteringrd/impl/
    sling/whiteboard/bdelacretaz/filtering-resource-decorator/src/main/java/org/apache/sling/filteringrd/impl/DefaultResourceFilter.java
    sling/whiteboard/bdelacretaz/filtering-resource-decorator/src/main/java/org/apache/sling/filteringrd/impl/FilteredResourceWrapper.java
    sling/whiteboard/bdelacretaz/filtering-resource-decorator/src/main/java/org/apache/sling/filteringrd/impl/FilteringPredicate.java
    sling/whiteboard/bdelacretaz/filtering-resource-decorator/src/main/java/org/apache/sling/filteringrd/impl/FilteringResourceDecorator.java
    sling/whiteboard/bdelacretaz/filtering-resource-decorator/src/main/java/org/apache/sling/filteringrd/impl/FilteringResourceResolverWrapper.java
    sling/whiteboard/bdelacretaz/filtering-resource-decorator/src/main/java/org/apache/sling/filteringrd/impl/ResourceResolverWrapper.java

Propchange: sling/whiteboard/bdelacretaz/filtering-resource-decorator/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Tue Apr 26 16:47:57 2016
@@ -0,0 +1,19 @@
+target
+sling
+bin
+logs
+jackrabbit-repository
+derby.log
+*.iml
+*.ipr
+*.iws
+.settings
+.project
+.classpath
+.externalToolBuilders
+maven-eclipse.xml
+jackrabbit
+
+
+
+

Added: sling/whiteboard/bdelacretaz/filtering-resource-decorator/README.md
URL: http://svn.apache.org/viewvc/sling/whiteboard/bdelacretaz/filtering-resource-decorator/README.md?rev=1741055&view=auto
==============================================================================
--- sling/whiteboard/bdelacretaz/filtering-resource-decorator/README.md (added)
+++ sling/whiteboard/bdelacretaz/filtering-resource-decorator/README.md Tue Apr 26 16:47:57 2016
@@ -0,0 +1,15 @@
+filtering-resource-decorator
+----------------------------
+
+Experiment using a `ResourceDecorator` to selectively hide resources.
+
+Adding a boolean `sling:FilterRecursion` property which is true on a resource 
+activates the filtering resource wrapper.
+
+Then, any direct child resource of that one which has a boolean `sling:hide` property
+which is true is omitted when recursing into the parent resource.
+
+Only works one level done from the parent resource so far but that can be fixed.
+
+Performance needs to be measured as a `ResourceDecorator` service is called for 
+each resource that's created - the decision to activate it or not should be very cheap.
\ No newline at end of file

Added: sling/whiteboard/bdelacretaz/filtering-resource-decorator/pom.xml
URL: http://svn.apache.org/viewvc/sling/whiteboard/bdelacretaz/filtering-resource-decorator/pom.xml?rev=1741055&view=auto
==============================================================================
--- sling/whiteboard/bdelacretaz/filtering-resource-decorator/pom.xml (added)
+++ sling/whiteboard/bdelacretaz/filtering-resource-decorator/pom.xml Tue Apr 26 16:47:57 2016
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    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.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.sling</groupId>
+        <artifactId>sling</artifactId>
+        <version>25</version>
+        <relativePath/>
+    </parent>
+
+    <groupId>org.apache.sling</groupId>
+    <artifactId>org.apache.sling.filtering-resource-decorator</artifactId>
+    <packaging>bundle</packaging>
+    <version>0.1.1-SNAPSHOT</version>
+
+    <name>Apache Sling Filtering ResourceDecorator</name>
+    <inceptionYear>2015</inceptionYear>
+    
+    <description>
+        Example ResourceDecorator which filters recursion into Resources.
+    </description>
+    
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>maven-scr-plugin</artifactId>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>maven-bundle-plugin</artifactId>
+                <extensions>true</extensions>
+                <configuration>
+                    <instructions>
+                        <Private-Package>org.apache.sling.filteringrd.*</Private-Package>
+                    </instructions>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+    
+    <dependencies>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.core</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.compendium</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>javax.servlet</groupId>
+            <artifactId>servlet-api</artifactId>
+			<scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.sling</groupId>
+            <artifactId>org.apache.sling.api</artifactId>
+			<version>2.1.0</version>
+			<scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.felix</groupId>
+            <artifactId>org.apache.felix.scr.annotations</artifactId>
+        </dependency>
+        <dependency>
+           <groupId>commons-collections</groupId>
+           <artifactId>commons-collections</artifactId>
+           <version>3.2.1</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+        </dependency>
+    </dependencies>
+</project>

Added: sling/whiteboard/bdelacretaz/filtering-resource-decorator/src/main/java/org/apache/sling/filteringrd/ResourceFilter.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/bdelacretaz/filtering-resource-decorator/src/main/java/org/apache/sling/filteringrd/ResourceFilter.java?rev=1741055&view=auto
==============================================================================
--- sling/whiteboard/bdelacretaz/filtering-resource-decorator/src/main/java/org/apache/sling/filteringrd/ResourceFilter.java (added)
+++ sling/whiteboard/bdelacretaz/filtering-resource-decorator/src/main/java/org/apache/sling/filteringrd/ResourceFilter.java Tue Apr 26 16:47:57 2016
@@ -0,0 +1,24 @@
+/*
+ * 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.filteringrd;
+
+import org.apache.sling.api.resource.Resource;
+
+/** Decides whether a Resource is visible */
+public interface ResourceFilter {
+    boolean isVisible(Resource r);
+}

Added: sling/whiteboard/bdelacretaz/filtering-resource-decorator/src/main/java/org/apache/sling/filteringrd/impl/DefaultResourceFilter.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/bdelacretaz/filtering-resource-decorator/src/main/java/org/apache/sling/filteringrd/impl/DefaultResourceFilter.java?rev=1741055&view=auto
==============================================================================
--- sling/whiteboard/bdelacretaz/filtering-resource-decorator/src/main/java/org/apache/sling/filteringrd/impl/DefaultResourceFilter.java (added)
+++ sling/whiteboard/bdelacretaz/filtering-resource-decorator/src/main/java/org/apache/sling/filteringrd/impl/DefaultResourceFilter.java Tue Apr 26 16:47:57 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.filteringrd.impl;
+
+import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Property;
+import org.apache.felix.scr.annotations.Service;
+import org.apache.sling.api.resource.Resource;
+import org.apache.sling.api.resource.ValueMap;
+import org.apache.sling.filteringrd.ResourceFilter;
+import org.osgi.framework.Constants;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@Component
+@Service(value=ResourceFilter.class)
+@Property(name=Constants.SERVICE_RANKING, intValue=Integer.MIN_VALUE)
+public class DefaultResourceFilter implements ResourceFilter {
+    public static final String HIDE_PROP = "sling:hide";
+    private final Logger log = LoggerFactory.getLogger(getClass());
+    
+    @Override
+    public boolean isVisible(Resource r) {
+        if(r != null) {
+            final ValueMap vm = r.adaptTo(ValueMap.class);
+            if(vm != null) {
+                final boolean hide = vm.get(HIDE_PROP, false);
+                if(hide) {
+                    log.debug("Hiding {} due to {} being true", r, HIDE_PROP);
+                }
+                return !hide;
+            }
+        }
+        return true;
+    }
+}

Added: sling/whiteboard/bdelacretaz/filtering-resource-decorator/src/main/java/org/apache/sling/filteringrd/impl/FilteredResourceWrapper.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/bdelacretaz/filtering-resource-decorator/src/main/java/org/apache/sling/filteringrd/impl/FilteredResourceWrapper.java?rev=1741055&view=auto
==============================================================================
--- sling/whiteboard/bdelacretaz/filtering-resource-decorator/src/main/java/org/apache/sling/filteringrd/impl/FilteredResourceWrapper.java (added)
+++ sling/whiteboard/bdelacretaz/filtering-resource-decorator/src/main/java/org/apache/sling/filteringrd/impl/FilteredResourceWrapper.java Tue Apr 26 16:47:57 2016
@@ -0,0 +1,47 @@
+/*
+ * 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.filteringrd.impl;
+
+import java.util.Iterator;
+
+import org.apache.sling.api.resource.Resource;
+import org.apache.sling.api.resource.ResourceResolver;
+import org.apache.sling.api.resource.ResourceWrapper;
+import org.apache.sling.filteringrd.ResourceFilter;
+
+/** ResourceWrapper that uses a ResourceFilter to filter
+ *  recursion in the resource children.
+ */
+public class FilteredResourceWrapper extends ResourceWrapper {
+
+    private final ResourceFilter filter;
+    
+    FilteredResourceWrapper(Resource r, ResourceFilter f) {
+        super(r);
+        filter = f;
+    }
+
+    @Override
+    public Iterator<Resource> listChildren() {
+        return FilteringPredicate.wrapIterator(super.listChildren(), filter);
+    }
+
+    @Override
+    public ResourceResolver getResourceResolver() {
+        return new FilteringResourceResolverWrapper(super.getResourceResolver(), filter);
+    }
+}

Added: sling/whiteboard/bdelacretaz/filtering-resource-decorator/src/main/java/org/apache/sling/filteringrd/impl/FilteringPredicate.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/bdelacretaz/filtering-resource-decorator/src/main/java/org/apache/sling/filteringrd/impl/FilteringPredicate.java?rev=1741055&view=auto
==============================================================================
--- sling/whiteboard/bdelacretaz/filtering-resource-decorator/src/main/java/org/apache/sling/filteringrd/impl/FilteringPredicate.java (added)
+++ sling/whiteboard/bdelacretaz/filtering-resource-decorator/src/main/java/org/apache/sling/filteringrd/impl/FilteringPredicate.java Tue Apr 26 16:47:57 2016
@@ -0,0 +1,45 @@
+/*
+ * 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.filteringrd.impl;
+
+import java.util.Iterator;
+
+import org.apache.commons.collections.Predicate;
+import org.apache.commons.collections.iterators.FilterIterator;
+import org.apache.sling.api.resource.Resource;
+import org.apache.sling.filteringrd.ResourceFilter;
+
+class FilteringPredicate implements Predicate {
+    private ResourceFilter filter;
+    
+    private FilteringPredicate(ResourceFilter f) {
+        filter = f;
+    }
+    
+    @Override
+    public boolean evaluate(Object object) {
+        if(object instanceof Resource && filter != null) {
+            return filter.isVisible((Resource)object);
+        }
+        return false;
+    }
+    
+    @SuppressWarnings("unchecked")
+    static Iterator<Resource> wrapIterator(Iterator<Resource> toWrap, ResourceFilter filter) {
+        return new FilterIterator(toWrap, new FilteringPredicate(filter));
+    }
+}

Added: sling/whiteboard/bdelacretaz/filtering-resource-decorator/src/main/java/org/apache/sling/filteringrd/impl/FilteringResourceDecorator.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/bdelacretaz/filtering-resource-decorator/src/main/java/org/apache/sling/filteringrd/impl/FilteringResourceDecorator.java?rev=1741055&view=auto
==============================================================================
--- sling/whiteboard/bdelacretaz/filtering-resource-decorator/src/main/java/org/apache/sling/filteringrd/impl/FilteringResourceDecorator.java (added)
+++ sling/whiteboard/bdelacretaz/filtering-resource-decorator/src/main/java/org/apache/sling/filteringrd/impl/FilteringResourceDecorator.java Tue Apr 26 16:47:57 2016
@@ -0,0 +1,70 @@
+/*
+ * 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.filteringrd.impl;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Reference;
+import org.apache.felix.scr.annotations.ReferenceCardinality;
+import org.apache.felix.scr.annotations.Service;
+import org.apache.sling.api.resource.Resource;
+import org.apache.sling.api.resource.ResourceDecorator;
+import org.apache.sling.api.resource.ValueMap;
+import org.apache.sling.filteringrd.ResourceFilter;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/** ResourceDecorator that can hide resources
+ *  when recursing with Resource.getChild and
+ *  related methods.
+ */
+@Component
+@Service(value=ResourceDecorator.class)
+public class FilteringResourceDecorator implements ResourceDecorator {
+
+    private final Logger log = LoggerFactory.getLogger(getClass());
+    
+    public static final String FILTER_PROP = "sling:filterRecursion";
+    
+    // TODO should use a more specific way of selecting a ResourceFilter
+    @Reference
+    private ResourceFilter filter;
+    
+    @Override
+    public Resource decorate(Resource r) {
+        // TODO ResourceDecorator needs to decide cheaply whether to
+        // decorate a resource or not - we might add configurable paths
+        // or other cheap to evaluate conditions to decide more quickly
+        if(r != null) {
+            final ValueMap vm = r.adaptTo(ValueMap.class);
+            if(vm != null) {
+                if(vm.get(FILTER_PROP, false)) {
+                    log.debug("Wrapping {} using {} due to {} being true", 
+                            new Object[] { r, filter, FILTER_PROP });
+                    return new FilteredResourceWrapper(r, filter);
+                }
+            }
+        }
+        return null;
+    }
+    
+    @Override
+    public Resource decorate(Resource r, HttpServletRequest request) {
+        return decorate(r);
+    }
+}

Added: sling/whiteboard/bdelacretaz/filtering-resource-decorator/src/main/java/org/apache/sling/filteringrd/impl/FilteringResourceResolverWrapper.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/bdelacretaz/filtering-resource-decorator/src/main/java/org/apache/sling/filteringrd/impl/FilteringResourceResolverWrapper.java?rev=1741055&view=auto
==============================================================================
--- sling/whiteboard/bdelacretaz/filtering-resource-decorator/src/main/java/org/apache/sling/filteringrd/impl/FilteringResourceResolverWrapper.java (added)
+++ sling/whiteboard/bdelacretaz/filtering-resource-decorator/src/main/java/org/apache/sling/filteringrd/impl/FilteringResourceResolverWrapper.java Tue Apr 26 16:47:57 2016
@@ -0,0 +1,37 @@
+/*
+ * 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.filteringrd.impl;
+
+import java.util.Iterator;
+
+import org.apache.sling.api.resource.Resource;
+import org.apache.sling.api.resource.ResourceResolver;
+import org.apache.sling.filteringrd.ResourceFilter;
+
+class FilteringResourceResolverWrapper extends ResourceResolverWrapper {
+    private final ResourceFilter filter;
+    
+    FilteringResourceResolverWrapper(ResourceResolver toWrap, ResourceFilter f) {
+        super(toWrap);
+        filter = f;
+    }
+
+    @Override
+    public Iterator<Resource> listChildren(final Resource r) {
+        return FilteringPredicate.wrapIterator(super.listChildren(r), filter);
+    }
+}

Added: sling/whiteboard/bdelacretaz/filtering-resource-decorator/src/main/java/org/apache/sling/filteringrd/impl/ResourceResolverWrapper.java
URL: http://svn.apache.org/viewvc/sling/whiteboard/bdelacretaz/filtering-resource-decorator/src/main/java/org/apache/sling/filteringrd/impl/ResourceResolverWrapper.java?rev=1741055&view=auto
==============================================================================
--- sling/whiteboard/bdelacretaz/filtering-resource-decorator/src/main/java/org/apache/sling/filteringrd/impl/ResourceResolverWrapper.java (added)
+++ sling/whiteboard/bdelacretaz/filtering-resource-decorator/src/main/java/org/apache/sling/filteringrd/impl/ResourceResolverWrapper.java Tue Apr 26 16:47:57 2016
@@ -0,0 +1,125 @@
+/*
+ * 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.filteringrd.impl;
+
+import java.util.Iterator;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.apache.sling.api.resource.LoginException;
+import org.apache.sling.api.resource.Resource;
+import org.apache.sling.api.resource.ResourceResolver;
+
+abstract class ResourceResolverWrapper implements ResourceResolver {
+    private final ResourceResolver wrapped;
+    
+    ResourceResolverWrapper(ResourceResolver wrapped) {
+        this.wrapped = wrapped;
+    }
+
+    @Override
+    public <AdapterType> AdapterType adaptTo(Class<AdapterType> arg0) {
+        return wrapped.adaptTo(arg0);
+    }
+
+    @Override
+    public ResourceResolver clone(Map<String, Object> arg0)
+            throws LoginException {
+        return wrapped.clone(arg0);
+    }
+
+    @Override
+    public void close() {
+        wrapped.close();
+    }
+
+    @Override
+    public Iterator<Resource> findResources(String arg0, String arg1) {
+        return wrapped.findResources(arg0, arg1);
+    }
+
+    @Override
+    public Object getAttribute(String arg0) {
+        return wrapped.getAttribute(arg0);
+    }
+
+    @Override
+    public Iterator<String> getAttributeNames() {
+        return wrapped.getAttributeNames();
+    }
+
+    @Override
+    public Resource getResource(Resource arg0, String arg1) {
+        return wrapped.getResource(arg0, arg1);
+    }
+
+    @Override
+    public Resource getResource(String arg0) {
+        return wrapped.getResource(arg0);
+    }
+
+    @Override
+    public String[] getSearchPath() {
+        return wrapped.getSearchPath();
+    }
+
+    @Override
+    public String getUserID() {
+        return wrapped.getUserID();
+    }
+
+    @Override
+    public boolean isLive() {
+        return wrapped.isLive();
+    }
+
+    @Override
+    public Iterator<Resource> listChildren(Resource arg0) {
+        return wrapped.listChildren(arg0);
+    }
+
+    @Override
+    public String map(HttpServletRequest arg0, String arg1) {
+        return wrapped.map(arg0, arg1);
+    }
+
+    @Override
+    public String map(String arg0) {
+        return wrapped.map(arg0);
+    }
+
+    @Override
+    public Iterator<Map<String, Object>> queryResources(String arg0, String arg1) {
+        return wrapped.queryResources(arg0, arg1);
+    }
+
+    @Override
+    public Resource resolve(HttpServletRequest arg0, String arg1) {
+        return wrapped.resolve(arg0, arg1);
+    }
+
+    @Override
+    public Resource resolve(HttpServletRequest arg0) {
+        return wrapped.resolve(arg0);
+    }
+
+    @Override
+    public Resource resolve(String arg0) {
+        return wrapped.resolve(arg0);
+    }
+}