Author: justin
Date: Wed Apr 20 23:59:29 2011
New Revision: 1095567
URL: http://svn.apache.org/viewvc?rev=1095567&view=rev
Log:
SLING-2054 - renaming isHtml to isDefaultExtension and allowing there to be a
configurable list of default extensions, which defaults to html
Modified:
sling/trunk/bundles/servlets/resolver/pom.xml
sling/trunk/bundles/servlets/resolver/src/main/java/org/apache/sling/servlets/resolver/internal/SlingServletResolver.java
sling/trunk/bundles/servlets/resolver/src/main/java/org/apache/sling/servlets/resolver/internal/helper/ResourceCollector.java
sling/trunk/bundles/servlets/resolver/src/main/resources/OSGI-INF/metatype/metatype.properties
sling/trunk/bundles/servlets/resolver/src/test/java/org/apache/sling/servlets/resolver/internal/helper/ResourceCollectorTest.java
sling/trunk/bundles/servlets/resolver/src/test/java/org/apache/sling/servlets/resolver/internal/helper/ScriptSelectionTest.java
Modified: sling/trunk/bundles/servlets/resolver/pom.xml
URL:
http://svn.apache.org/viewvc/sling/trunk/bundles/servlets/resolver/pom.xml?rev=1095567&r1=1095566&r2=1095567&view=diff
==============================================================================
--- sling/trunk/bundles/servlets/resolver/pom.xml (original)
+++ sling/trunk/bundles/servlets/resolver/pom.xml Wed Apr 20 23:59:29 2011
@@ -105,6 +105,12 @@
<scope>provided</scope>
</dependency>
<dependency>
+ <groupId>commons-lang</groupId>
+ <artifactId>commons-lang</artifactId>
+ <version>2.4</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
<groupId>org.osgi</groupId>
<artifactId>org.osgi.core</artifactId>
</dependency>
Modified:
sling/trunk/bundles/servlets/resolver/src/main/java/org/apache/sling/servlets/resolver/internal/SlingServletResolver.java
URL:
http://svn.apache.org/viewvc/sling/trunk/bundles/servlets/resolver/src/main/java/org/apache/sling/servlets/resolver/internal/SlingServletResolver.java?rev=1095567&r1=1095566&r2=1095567&view=diff
==============================================================================
---
sling/trunk/bundles/servlets/resolver/src/main/java/org/apache/sling/servlets/resolver/internal/SlingServletResolver.java
(original)
+++
sling/trunk/bundles/servlets/resolver/src/main/java/org/apache/sling/servlets/resolver/internal/SlingServletResolver.java
Wed Apr 20 23:59:29 2011
@@ -158,6 +158,13 @@ public class SlingServletResolver implem
private static final String[] DEFAULT_PATHS = new String[] {"/"};
+ /**
+ * @scr.property values="html"
+ */
+ public static final String PROP_DEFAULT_EXTENSIONS =
"servletresolver.defaultExtensions";
+
+ private static final String[] DEFAULT_DEFAULT_EXTENSIONS = new String[]
{"html"};
+
/** @scr.reference */
private ServletContext servletContext;
@@ -218,6 +225,11 @@ public class SlingServletResolver implem
* The allowed execution paths.
*/
private String[] executionPaths;
+
+ /**
+ * The default extensions
+ */
+ private String[] defaultExtensions;
// ---------- ServletResolver interface -----------------------------------
@@ -572,7 +584,7 @@ public class SlingServletResolver implem
}
if ( servlet == null ) {
// the resource type is not absolute, so lets go for the deep
search
- final ResourceCollector locationUtil =
ResourceCollector.create(request, workspaceName, this.executionPaths);
+ final ResourceCollector locationUtil =
ResourceCollector.create(request, workspaceName, this.executionPaths,
this.defaultExtensions);
servlet = getServlet(locationUtil, request, resolver);
if (log.isDebugEnabled()) {
@@ -845,6 +857,7 @@ public class SlingServletResolver implem
}
}
}
+ this.defaultExtensions =
OsgiUtil.toStringArray(properties.get(PROP_DEFAULT_EXTENSIONS),
DEFAULT_DEFAULT_EXTENSIONS);
// create cache - if a cache size is configured
this.cacheSize = OsgiUtil.toInteger(properties.get(PROP_CACHE_SIZE),
DEFAULT_CACHE_SIZE);
Modified:
sling/trunk/bundles/servlets/resolver/src/main/java/org/apache/sling/servlets/resolver/internal/helper/ResourceCollector.java
URL:
http://svn.apache.org/viewvc/sling/trunk/bundles/servlets/resolver/src/main/java/org/apache/sling/servlets/resolver/internal/helper/ResourceCollector.java?rev=1095567&r1=1095566&r2=1095567&view=diff
==============================================================================
---
sling/trunk/bundles/servlets/resolver/src/main/java/org/apache/sling/servlets/resolver/internal/helper/ResourceCollector.java
(original)
+++
sling/trunk/bundles/servlets/resolver/src/main/java/org/apache/sling/servlets/resolver/internal/helper/ResourceCollector.java
Wed Apr 20 23:59:29 2011
@@ -21,6 +21,7 @@ package org.apache.sling.servlets.resolv
import java.util.Iterator;
import java.util.Set;
+import org.apache.commons.lang.ArrayUtils;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.request.RequestPathInfo;
import org.apache.sling.api.resource.Resource;
@@ -60,7 +61,7 @@ public class ResourceCollector extends A
private final boolean isGet;
// request is GET or HEAD and extension is html
- private final boolean isHtml;
+ private final boolean isDefaultExtension;
private final String suffExt;
@@ -84,8 +85,9 @@ public class ResourceCollector extends A
*/
public static ResourceCollector create(
final SlingHttpServletRequest request, final String workspaceName,
- final String[] executionPaths) {
- return new ResourceCollector(request, workspaceName, executionPaths);
+ final String[] executionPaths, final String[] defaultExtensions) {
+ boolean isDefaultExtension = ArrayUtils.contains(defaultExtensions,
request.getRequestPathInfo().getExtension());
+ return new ResourceCollector(request, workspaceName, executionPaths,
isDefaultExtension);
}
/**
@@ -114,7 +116,7 @@ public class ResourceCollector extends A
this.requestSelectors = new String[0];
this.numRequestSelectors = 0;
this.isGet = false;
- this.isHtml = false;
+ this.isDefaultExtension = false;
this.suffExt = "." + extension;
this.suffMethod = "." + methodName;
@@ -143,7 +145,8 @@ public class ResourceCollector extends A
* is assumed.
*/
private ResourceCollector(final SlingHttpServletRequest request,
- final String workspaceName, final String[] executionPaths) {
+ final String workspaceName, final String[] executionPaths,
+ final boolean isDefaultExtension) {
super(ServletResolverConstants.DEFAULT_SERVLET_NAME,
request.getResource().getResourceType(),
request.getResource().getResourceSuperType(), workspaceName,
@@ -156,11 +159,11 @@ public class ResourceCollector extends A
RequestPathInfo requestpaInfo = request.getRequestPathInfo();
- requestSelectors = requestpaInfo.getSelectors();
- numRequestSelectors = requestSelectors.length;
+ this.requestSelectors = requestpaInfo.getSelectors();
+ this.numRequestSelectors = requestSelectors.length;
- isGet = "GET".equals(methodName) || "HEAD".equals(methodName);
- isHtml = "html".equals(extension);
+ this.isGet = "GET".equals(methodName) || "HEAD".equals(methodName);
+ this.isDefaultExtension = isDefaultExtension;
// create the hash code once
final String key = methodName + ':' + baseResourceType + ':'
@@ -292,7 +295,7 @@ public class ResourceCollector extends A
return true;
}
- if (isHtml) {
+ if (isDefaultExtension) {
if (selector != null && matches(scriptName, selector, htmlSuffix))
{
addWeightedResource(resources, child, selIdx + 1,
WeightedResource.WEIGHT_NONE);
@@ -345,7 +348,7 @@ public class ResourceCollector extends A
}
if (super.equals(obj)) {
final ResourceCollector o = (ResourceCollector) obj;
- if (isGet == o.isGet && isHtml == o.isHtml
+ if (isGet == o.isGet && isDefaultExtension == o.isDefaultExtension
&& numRequestSelectors == o.numRequestSelectors
&& stringEquals(methodName, o.methodName)) {
// now compare selectors
Modified:
sling/trunk/bundles/servlets/resolver/src/main/resources/OSGI-INF/metatype/metatype.properties
URL:
http://svn.apache.org/viewvc/sling/trunk/bundles/servlets/resolver/src/main/resources/OSGI-INF/metatype/metatype.properties?rev=1095567&r1=1095566&r2=1095567&view=diff
==============================================================================
---
sling/trunk/bundles/servlets/resolver/src/main/resources/OSGI-INF/metatype/metatype.properties
(original)
+++
sling/trunk/bundles/servlets/resolver/src/main/resources/OSGI-INF/metatype/metatype.properties
Wed Apr 20 23:59:29 2011
@@ -65,4 +65,8 @@ servletresolver.paths.name = Execution P
servletresolver.paths.description = The paths to search for executable
scripts. If no path is configured \
this is treated like the default (/ = root) which allows to execute all
scripts. By configuring some \
paths the execution of scripts can be limited. If a configured value ends
with a slash, the whole sub tree \
- is allowed. Without a slash an exact matching script is allowed.
\ No newline at end of file
+ is allowed. Without a slash an exact matching script is allowed.
+
+servletresolver.defaultExtensions.name = Default Extensions
+servletresolver.defaultExtensions.description = The list of extensions for
which the default behavior \
+ will be used. This means that the last path segement of the resource type can
be used as the script name.
\ No newline at end of file
Modified:
sling/trunk/bundles/servlets/resolver/src/test/java/org/apache/sling/servlets/resolver/internal/helper/ResourceCollectorTest.java
URL:
http://svn.apache.org/viewvc/sling/trunk/bundles/servlets/resolver/src/test/java/org/apache/sling/servlets/resolver/internal/helper/ResourceCollectorTest.java?rev=1095567&r1=1095566&r2=1095567&view=diff
==============================================================================
---
sling/trunk/bundles/servlets/resolver/src/test/java/org/apache/sling/servlets/resolver/internal/helper/ResourceCollectorTest.java
(original)
+++
sling/trunk/bundles/servlets/resolver/src/test/java/org/apache/sling/servlets/resolver/internal/helper/ResourceCollectorTest.java
Wed Apr 20 23:59:29 2011
@@ -270,7 +270,7 @@ public class ResourceCollectorTest exten
pathMap.put(name, path);
}
- ResourceCollector lu = ResourceCollector.create(request, null, null);
+ ResourceCollector lu = ResourceCollector.create(request, null, null,
new String[] {"html"});
Collection<Resource> res =
lu.getServlets(request.getResource().getResourceResolver());
Iterator<Resource> rIter = res.iterator();
Modified:
sling/trunk/bundles/servlets/resolver/src/test/java/org/apache/sling/servlets/resolver/internal/helper/ScriptSelectionTest.java
URL:
http://svn.apache.org/viewvc/sling/trunk/bundles/servlets/resolver/src/test/java/org/apache/sling/servlets/resolver/internal/helper/ScriptSelectionTest.java?rev=1095567&r1=1095566&r2=1095567&view=diff
==============================================================================
---
sling/trunk/bundles/servlets/resolver/src/test/java/org/apache/sling/servlets/resolver/internal/helper/ScriptSelectionTest.java
(original)
+++
sling/trunk/bundles/servlets/resolver/src/test/java/org/apache/sling/servlets/resolver/internal/helper/ScriptSelectionTest.java
Wed Apr 20 23:59:29 2011
@@ -67,7 +67,7 @@ public class ScriptSelectionTest extends
// Create mock request and get scripts from ResourceCollector
final MockSlingHttpServletRequest req = makeRequest(method, selectors,
extension);
- final ResourceCollector u = ResourceCollector.create(req, null, null);
+ final ResourceCollector u = ResourceCollector.create(req, null, null,
new String[] {"html"});
final Collection<Resource> s =
u.getServlets(req.getResource().getResourceResolver());
if(expectedScript == null) {