You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by fm...@apache.org on 2008/01/15 10:49:29 UTC
svn commit: r612063 - in
/incubator/sling/whiteboard/fmeschbe/resource/sling/servlet-resolver/src/main/java/org/apache/sling/servlet/resolver:
ServletResolverConstants.java resource/ServletResourceProvider.java
Author: fmeschbe
Date: Tue Jan 15 01:49:28 2008
New Revision: 612063
URL: http://svn.apache.org/viewvc?rev=612063&view=rev
Log:
Add support to configure selectors for path construction
Modified:
incubator/sling/whiteboard/fmeschbe/resource/sling/servlet-resolver/src/main/java/org/apache/sling/servlet/resolver/ServletResolverConstants.java
incubator/sling/whiteboard/fmeschbe/resource/sling/servlet-resolver/src/main/java/org/apache/sling/servlet/resolver/resource/ServletResourceProvider.java
Modified: incubator/sling/whiteboard/fmeschbe/resource/sling/servlet-resolver/src/main/java/org/apache/sling/servlet/resolver/ServletResolverConstants.java
URL: http://svn.apache.org/viewvc/incubator/sling/whiteboard/fmeschbe/resource/sling/servlet-resolver/src/main/java/org/apache/sling/servlet/resolver/ServletResolverConstants.java?rev=612063&r1=612062&r2=612063&view=diff
==============================================================================
--- incubator/sling/whiteboard/fmeschbe/resource/sling/servlet-resolver/src/main/java/org/apache/sling/servlet/resolver/ServletResolverConstants.java (original)
+++ incubator/sling/whiteboard/fmeschbe/resource/sling/servlet-resolver/src/main/java/org/apache/sling/servlet/resolver/ServletResolverConstants.java Tue Jan 15 01:49:28 2008
@@ -44,6 +44,20 @@
/**
* The name of the service registration property of a Servlet registered as
+ * a service containing the request URL selectors supported by the servlet
+ * (value is "sling.servlet.selectors"). The selectors must be configured as
+ * they would be specified in the URL that is as a list of dot-separated
+ * strings such as <em>print.a4</em>.
+ * <p>
+ * The type of this property is a String or String[] (array of strings)
+ * denoting the resource types. This property is ignored if the
+ * {@link #SLING_SERVLET_PATHS} property is set. Otherwise this property is
+ * optional and ignored if not set.
+ */
+ public static final String SLING_SERVLET_SELECTORS = "sling.servlet.selectors";
+
+ /**
+ * The name of the service registration property of a Servlet registered as
* a service containing the request URL extensions supported by the servlet
* for GET requests (value is "sling.servlet.extensions").
* <p>
Modified: incubator/sling/whiteboard/fmeschbe/resource/sling/servlet-resolver/src/main/java/org/apache/sling/servlet/resolver/resource/ServletResourceProvider.java
URL: http://svn.apache.org/viewvc/incubator/sling/whiteboard/fmeschbe/resource/sling/servlet-resolver/src/main/java/org/apache/sling/servlet/resolver/resource/ServletResourceProvider.java?rev=612063&r1=612062&r2=612063&view=diff
==============================================================================
--- incubator/sling/whiteboard/fmeschbe/resource/sling/servlet-resolver/src/main/java/org/apache/sling/servlet/resolver/resource/ServletResourceProvider.java (original)
+++ incubator/sling/whiteboard/fmeschbe/resource/sling/servlet-resolver/src/main/java/org/apache/sling/servlet/resolver/resource/ServletResourceProvider.java Tue Jan 15 01:49:28 2008
@@ -22,6 +22,7 @@
import static org.apache.sling.servlet.resolver.ServletResolverConstants.SLING_SERVLET_METHODS;
import static org.apache.sling.servlet.resolver.ServletResolverConstants.SLING_SERVLET_PATHS;
import static org.apache.sling.servlet.resolver.ServletResolverConstants.SLING_SERVLET_RESOURCE_TYPES;
+import static org.apache.sling.servlet.resolver.ServletResolverConstants.SLING_SERVLET_SELECTORS;
import java.util.ArrayList;
import java.util.HashMap;
@@ -35,6 +36,7 @@
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ResourceProvider;
import org.apache.sling.osgi.commons.OsgiUtil;
+import org.apache.sling.servlet.resolver.ServletResolverConstants;
import org.apache.sling.servlet.resolver.helper.PathSupport;
import org.osgi.framework.ServiceReference;
@@ -64,6 +66,12 @@
return null;
}
+ // check for selectors
+ String[] selectors = OsgiUtil.toStringArray(ref.getProperty(SLING_SERVLET_SELECTORS));
+ if (selectors == null) {
+ selectors = new String[]{ null };
+ }
+
// we have types and expect extensions and/or methods
String[] extensions = OsgiUtil.toStringArray(ref.getProperty(SLING_SERVLET_EXTENSIONS));
String[] methods = OsgiUtil.toStringArray(ref.getProperty(SLING_SERVLET_METHODS));
@@ -89,17 +97,26 @@
type += "/";
}
- // create paths with extensions
- if (extensions != null) {
- for (String ext : extensions) {
- pathList.add(type + ext);
+ // add entries for each selector combined with each ext and method
+ for (String selector : selectors) {
+
+ String selPath = type;
+ if (selector != null && selector.length() > 0) {
+ selPath += selector.replace('.', '/') + "/";
+ }
+
+ // create paths with extensions
+ if (extensions != null) {
+ for (String ext : extensions) {
+ pathList.add(selPath + ext);
+ }
}
- }
- // create paths with method names
- if (methods != null) {
- for (String method : methods) {
- pathList.add(type + method);
+ // create paths with method names
+ if (methods != null) {
+ for (String method : methods) {
+ pathList.add(selPath + method);
+ }
}
}
}