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/14 15:05:14 UTC

svn commit: r611797 - /incubator/sling/whiteboard/fmeschbe/resource/sling/servlet-resolver/src/main/java/org/apache/sling/servlet/resolver/defaults/DefaultServlet.java

Author: fmeschbe
Date: Mon Jan 14 06:05:13 2008
New Revision: 611797

URL: http://svn.apache.org/viewvc?rev=611797&view=rev
Log:
If the request has no extension and the resource adapts to a Servlet
call the servlet instead. Otherwise continue dumping the properties.

This functionality may be used to directly address scripts (and 
servlets) like http://host/some/path/index.jsp.

Modified:
    incubator/sling/whiteboard/fmeschbe/resource/sling/servlet-resolver/src/main/java/org/apache/sling/servlet/resolver/defaults/DefaultServlet.java

Modified: incubator/sling/whiteboard/fmeschbe/resource/sling/servlet-resolver/src/main/java/org/apache/sling/servlet/resolver/defaults/DefaultServlet.java
URL: http://svn.apache.org/viewvc/incubator/sling/whiteboard/fmeschbe/resource/sling/servlet-resolver/src/main/java/org/apache/sling/servlet/resolver/defaults/DefaultServlet.java?rev=611797&r1=611796&r2=611797&view=diff
==============================================================================
--- incubator/sling/whiteboard/fmeschbe/resource/sling/servlet-resolver/src/main/java/org/apache/sling/servlet/resolver/defaults/DefaultServlet.java (original)
+++ incubator/sling/whiteboard/fmeschbe/resource/sling/servlet-resolver/src/main/java/org/apache/sling/servlet/resolver/defaults/DefaultServlet.java Mon Jan 14 06:05:13 2008
@@ -28,6 +28,8 @@
 import java.util.Properties;
 import java.util.TreeMap;
 
+import javax.servlet.Servlet;
+import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletResponse;
 
 import org.apache.commons.beanutils.BeanMap;
@@ -40,15 +42,15 @@
 /**
  * The <code>DefaultServlet</code> is a very simple default resource handler.
  * <p>
- * The default servlet is not registered to handle any concrete resource
- * type. Rather it is used internally on demand.
- *
+ * The default servlet is not registered to handle any concrete resource type.
+ * Rather it is used internally on demand.
  */
 public class DefaultServlet extends SlingSafeMethodsServlet {
 
     @Override
     protected void doGet(SlingHttpServletRequest request,
-            SlingHttpServletResponse response) throws IOException {
+            SlingHttpServletResponse response) throws ServletException,
+            IOException {
 
         Resource resource = request.getResource();
 
@@ -58,8 +60,18 @@
             return;
         }
 
-        // format response according to extension (use Mime mapping instead)
         String extension = request.getRequestPathInfo().getExtension();
+
+        // check whether we have a directly addressed script
+        if (extension == null) {
+            Servlet resourceServlet = resource.adaptTo(Servlet.class);
+            if (resourceServlet != null) {
+                resourceServlet.service(request, response);
+                return;
+            }
+        }
+
+        // format response according to extension (use Mime mapping instead)
         if ("html".equals(extension) || "htm".equals(extension)) {
             this.renderContentHtml(resource, response);
         } else if ("xml".equals(extension)) {
@@ -223,7 +235,7 @@
 
     @SuppressWarnings("unchecked")
     private Map<Object, Object> asMap(Resource resource) {
-        
+
         Object object = resource.adaptTo(Object.class);
         if (object != null) {
             if (object instanceof Map) {