Move modules to attic

git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1811947 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/urlfilter/README.md b/urlfilter/README.md
deleted file mode 100644
index c1ff03d..0000000
--- a/urlfilter/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# Apache Sling Samples URL Filter
-
-This module is part of the [Apache Sling](https://sling.apache.org) project.
diff --git a/urlfilter/pom.xml b/urlfilter/pom.xml
deleted file mode 100644
index 40ea825..0000000
--- a/urlfilter/pom.xml
+++ /dev/null
@@ -1,109 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-  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>16</version>
-        <relativePath/>
-    </parent>
-    <groupId>org.apache.sling.samples</groupId>
-    <artifactId>org.apache.sling.samples.urlfilter</artifactId>
-    <packaging>bundle</packaging>
-    <version>0.0.1-SNAPSHOT</version>
-    <name>Apache Sling Samples URL Filter</name>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.felix</groupId>
-                <artifactId>maven-scr-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <id>generate-scr-descriptor</id>
-                        <goals>
-                            <goal>scr</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.felix</groupId>
-                <artifactId>maven-bundle-plugin</artifactId>
-                <extensions>true</extensions>
-            </plugin>
-        </plugins>
-    </build>
-    <dependencies>
-        <dependency>
-            <groupId>javax.servlet</groupId>
-            <artifactId>servlet-api</artifactId>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.osgi</groupId>
-            <artifactId>org.osgi.compendium</artifactId>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.osgi</groupId>
-            <artifactId>org.osgi.core</artifactId>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.sling</groupId>
-            <artifactId>org.apache.sling.api</artifactId>
-            <version>2.2.0</version>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-api</artifactId>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.felix</groupId>
-            <artifactId>org.apache.felix.scr.annotations</artifactId>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>commons-lang</groupId>
-            <artifactId>commons-lang</artifactId>
-            <version>2.4</version>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.jmock</groupId>
-            <artifactId>jmock-junit4</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-simple</artifactId>
-            <scope>test</scope>
-        </dependency>
-    </dependencies>
-</project>
diff --git a/urlfilter/src/main/java/org/apache/sling/samples/urlfilter/impl/UrlFilter.java b/urlfilter/src/main/java/org/apache/sling/samples/urlfilter/impl/UrlFilter.java
deleted file mode 100644
index c0e407c..0000000
--- a/urlfilter/src/main/java/org/apache/sling/samples/urlfilter/impl/UrlFilter.java
+++ /dev/null
@@ -1,202 +0,0 @@
-/*
- * 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.samples.urlfilter.impl;
-
-import java.io.IOException;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.regex.Pattern;
-
-import javax.servlet.Filter;
-import javax.servlet.FilterChain;
-import javax.servlet.FilterConfig;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-
-import org.apache.commons.lang.ArrayUtils;
-import org.apache.felix.scr.annotations.sling.SlingFilter;
-import org.apache.felix.scr.annotations.sling.SlingFilterScope;
-import org.apache.sling.api.SlingHttpServletRequest;
-import org.apache.sling.api.SlingHttpServletResponse;
-import org.apache.sling.api.request.RequestPathInfo;
-import org.apache.sling.api.resource.Resource;
-import org.apache.sling.api.resource.ResourceResolver;
-import org.apache.sling.api.resource.ValueMap;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Illustration of a technique for url filtering on suffixes, selectors, and/or
- * extensions
- */
-@SlingFilter(scope = SlingFilterScope.REQUEST, order = Integer.MIN_VALUE)
-public class UrlFilter implements Filter {
-
-    static final String PN_ALLOWED_EXTENSION_PATTERN = "allowedExtensionPattern";
-
-    static final String PN_ALLOWED_EXTENSIONS = "allowedExtensions";
-
-    static final String PN_ALLOWED_SELECTOR_PATTERN = "allowedSelectorPattern";
-
-    static final String PN_ALLOWED_SELECTORS = "allowedSelectors";
-
-    static final String PN_ALLOWED_SUFFIX_PATTERN = "allowedSuffixPattern";
-
-    static final String PN_ALLOWED_SUFFIXES = "allowedSuffixes";
-
-    static final Collection<String> PROPERTY_NAMES = Arrays.asList(PN_ALLOWED_SUFFIXES, PN_ALLOWED_EXTENSIONS,
-            PN_ALLOWED_SELECTORS, PN_ALLOWED_SUFFIX_PATTERN, PN_ALLOWED_SELECTOR_PATTERN, PN_ALLOWED_EXTENSION_PATTERN);
-
-    private Logger logger = LoggerFactory.getLogger(this.getClass());
-
-    public void destroy() {
-        // nothing to do
-    }
-
-    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,
-            ServletException {
-        if (request instanceof SlingHttpServletRequest && response instanceof SlingHttpServletResponse) {
-            SlingHttpServletRequest slingRequest = (SlingHttpServletRequest) request;
-            SlingHttpServletResponse slingResponse = (SlingHttpServletResponse) response;
-
-            RequestPathInfo pathInfo = slingRequest.getRequestPathInfo();
-
-            Resource definitionResource = findUrlFilterDefinitionResource(slingRequest.getResource(),
-                    slingRequest.getResourceResolver());
-
-            if (definitionResource != null) {
-                logger.debug("found url filter definition resource at {}", definitionResource.getPath());
-                ValueMap properties = definitionResource.adaptTo(ValueMap.class);
-                if (properties != null) {
-                    if (checkSelector(pathInfo, properties) && checkSuffix(pathInfo, properties)
-                            && checkExtension(pathInfo, properties)) {
-                        logger.debug("url filter definition resource at {} passed for request {}.",
-                                definitionResource.getPath(), slingRequest.getRequestPathInfo());
-                    } else {
-                        logger.info("url filter definition resource at {} FAILED for request {}.",
-                                definitionResource.getPath(), slingRequest.getRequestPathInfo());
-                        slingResponse.sendError(403);
-                        return;
-                    }
-                }
-            }
-
-        }
-
-        chain.doFilter(request, response);
-
-    }
-
-    public void init(FilterConfig filterConfig) throws ServletException {
-        // nothing to do
-    }
-
-    boolean checkExtension(RequestPathInfo pathInfo, ValueMap properties) {
-        return check(pathInfo.getExtension(), PN_ALLOWED_EXTENSIONS, PN_ALLOWED_EXTENSION_PATTERN, properties);
-    }
-
-    boolean checkSelector(RequestPathInfo pathInfo, ValueMap properties) {
-        return check(pathInfo.getSelectorString(), PN_ALLOWED_SELECTORS, PN_ALLOWED_SELECTOR_PATTERN, properties);
-    }
-
-    boolean check(String value, String allowedArrayPropertyName, String allowedPatternPropertyName, ValueMap properties) {
-        if (value == null) {
-            // no value is always allowed
-            return true;
-        }
-        String[] allowedValues = properties.get(allowedArrayPropertyName, String[].class);
-        if (allowedValues != null) {
-            if (allowedValues.length == 0) {
-                logger.debug("{} was empty, therefore not allowing any value.", allowedArrayPropertyName);
-                return false;
-            } else if (!ArrayUtils.contains(allowedValues, value)) {
-                logger.debug("{} did not contain our string {}. checking the pattern.", allowedArrayPropertyName, value);
-                String allowedPattern = properties.get(allowedPatternPropertyName, String.class);
-                if (allowedPattern == null || !Pattern.matches(allowedPattern, value)) {
-                    logger.debug("allowedPattern ({}) did not match our string {}", allowedPattern, value);
-                    return false;
-                } else {
-                    logger.debug("allowedPattern ({}) did match our string {}", allowedPattern, value);
-                    return true;
-                }
-            } else {
-                return true;
-            }
-        } else {
-            String allowedPattern = properties.get(allowedPatternPropertyName, String.class);
-            if (allowedPattern != null && !Pattern.matches(allowedPattern, value)) {
-                logger.debug("allowedPattern ({}) did not match our string {}", allowedPattern, value);
-                return false;
-            } else {
-                return true;
-            }
-        }
-    }
-
-    boolean checkSuffix(RequestPathInfo pathInfo, ValueMap properties) {
-        return check(pathInfo.getSuffix(), PN_ALLOWED_SUFFIXES, PN_ALLOWED_SUFFIX_PATTERN, properties);
-    }
-
-    Resource findUrlFilterDefinitionResource(Resource resource, ResourceResolver resolver) {
-        if (resource == null) {
-            return null;
-        }
-        
-        Resource contentResource = resource.getChild("jcr:content");
-        if (contentResource != null) {
-            resource = contentResource;
-        }
-
-        String resourceType = resource.getResourceType();
-
-        Resource definitionResource = findUrlFilterDefinitionResource(resourceType, resolver);
-        if (definitionResource == null) {
-            return findUrlFilterDefinitionResource(resource.getResourceSuperType(), resolver);
-        } else {
-            return definitionResource;
-        }
-    }
-
-    private Resource findUrlFilterDefinitionResource(String resourceType, ResourceResolver resolver) {
-        if (resourceType == null) {
-            return null;
-        }
-        Resource typeResource = resolver.getResource(resourceType);
-        if (typeResource == null) {
-            return null;
-        }
-
-        ValueMap properties = typeResource.adaptTo(ValueMap.class);
-        if (properties == null) {
-            return null;
-        }
-
-        // Collections.disjoint returns true if the collections
-        // have nothing in common, so when it is false, use the current resource
-        if (!Collections.disjoint(properties.keySet(), PROPERTY_NAMES)) {
-            return typeResource;
-        } else {
-            // otherwise, look at the resource type resource's super type
-            return findUrlFilterDefinitionResource(typeResource.getResourceSuperType(), resolver);
-        }
-
-    }
-}
diff --git a/urlfilter/src/test/java/org/apache/sling/samples/urlfilter/impl/UrlFilterTest.java b/urlfilter/src/test/java/org/apache/sling/samples/urlfilter/impl/UrlFilterTest.java
deleted file mode 100644
index e85babc..0000000
--- a/urlfilter/src/test/java/org/apache/sling/samples/urlfilter/impl/UrlFilterTest.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * 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.samples.urlfilter.impl;
-
-import static org.junit.Assert.*;
-
-import java.util.HashMap;
-
-import org.apache.sling.api.request.RequestPathInfo;
-import org.apache.sling.api.resource.ValueMap;
-import org.apache.sling.api.wrappers.ValueMapDecorator;
-import org.jmock.Expectations;
-import org.jmock.Mockery;
-import org.jmock.integration.junit4.JMock;
-import org.jmock.integration.junit4.JUnit4Mockery;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-@RunWith(JMock.class)
-public class UrlFilterTest {
-
-    private Mockery context = new JUnit4Mockery();
-    private ValueMap properties;
-
-    @Before
-    public void setup() {
-        properties = new ValueMapDecorator(new HashMap<String, Object>());
-    }
-
-    @Test
-    public void null_selector() {
-        UrlFilter filter = new UrlFilter();
-
-        final RequestPathInfo testInfo = context.mock(RequestPathInfo.class);
-        this.context.checking(new Expectations() {
-            {
-                allowing(testInfo).getSelectorString();
-                will(returnValue(null));
-            }
-        });
-
-        assertTrue(filter.checkSelector(testInfo, null));
-    }
-
-    @Test
-    public void non_null_selector() {
-        UrlFilter filter = new UrlFilter();
-
-        final RequestPathInfo testInfo = context.mock(RequestPathInfo.class);
-        this.context.checking(new Expectations() {
-            {
-                allowing(testInfo).getSelectorString();
-                will(returnValue("sample"));
-            }
-        });
-
-        // null allowedSelectors = ok
-        assertTrue(filter.checkSelector(testInfo, properties));
-
-        // empty array allowedSelectors = fail
-        properties.put(UrlFilter.PN_ALLOWED_SELECTORS, (Object) new String[0]);
-        assertFalse(filter.checkSelector(testInfo, properties));
-
-        // selector string in array = ok
-        properties.put(UrlFilter.PN_ALLOWED_SELECTORS, (Object) new String[] { "sample", "sample2" });
-        assertTrue(filter.checkSelector(testInfo, properties));
-
-        // selector string not in array = fail
-        properties.put(UrlFilter.PN_ALLOWED_SELECTORS, (Object) new String[] { "other" });
-        assertFalse(filter.checkSelector(testInfo, properties));
-        
-        properties.clear();
-        
-        // matches regex
-        properties.put(UrlFilter.PN_ALLOWED_SELECTOR_PATTERN, "^s[a-z]m.*$");
-        assertTrue(filter.checkSelector(testInfo, properties));
-
-        // doesn't match regex
-        properties.put(UrlFilter.PN_ALLOWED_SELECTOR_PATTERN, "^s[1-2]m$");
-        assertFalse(filter.checkSelector(testInfo, properties));
-        
-        properties.clear();
-        
-        // matches array or regex = ok
-        properties.put(UrlFilter.PN_ALLOWED_SELECTORS, (Object) new String[] { "other" });
-        properties.put(UrlFilter.PN_ALLOWED_SELECTOR_PATTERN, "^s[a-z]m.*$");
-        assertTrue(filter.checkSelector(testInfo, properties));
-        
-        properties.put(UrlFilter.PN_ALLOWED_SELECTORS, (Object) new String[] { "sample" });
-        properties.put(UrlFilter.PN_ALLOWED_SELECTOR_PATTERN, "^s[a-z]m$");
-        assertTrue(filter.checkSelector(testInfo, properties));
-
-        
-    }
-}