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 12:44:39 UTC

svn commit: r612089 - /incubator/sling/whiteboard/fmeschbe/resource/sling/servlet-resolver/src/main/java/org/apache/sling/servlet/resolver/SlingServletResolver.java

Author: fmeschbe
Date: Tue Jan 15 03:44:37 2008
New Revision: 612089

URL: http://svn.apache.org/viewvc?rev=612089&view=rev
Log:
Multiple:
   * Fix servlet root path setting (must have leading and trailing slash)
   * getServletAt: If there it is not possible to list and find servlets
        at the location, try location/basename directly
   * ServiceRegistration must use resource provider not servlet

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

Modified: incubator/sling/whiteboard/fmeschbe/resource/sling/servlet-resolver/src/main/java/org/apache/sling/servlet/resolver/SlingServletResolver.java
URL: http://svn.apache.org/viewvc/incubator/sling/whiteboard/fmeschbe/resource/sling/servlet-resolver/src/main/java/org/apache/sling/servlet/resolver/SlingServletResolver.java?rev=612089&r1=612088&r2=612089&view=diff
==============================================================================
--- incubator/sling/whiteboard/fmeschbe/resource/sling/servlet-resolver/src/main/java/org/apache/sling/servlet/resolver/SlingServletResolver.java (original)
+++ incubator/sling/whiteboard/fmeschbe/resource/sling/servlet-resolver/src/main/java/org/apache/sling/servlet/resolver/SlingServletResolver.java Tue Jan 15 03:44:37 2008
@@ -88,10 +88,9 @@
      *               description="%resolver.path.description"
      */
     public static final String PROP_PATH = "path";
-    
+
     /**
-     * @scr.property value="/apps"
-     *               label="%resolver.servletRoot.name"
+     * @scr.property value="/apps" label="%resolver.servletRoot.name"
      *               description="%resolver.servletRoot.description"
      */
     public static final String PROP_SERVLET_ROOT = "servletRoot";
@@ -110,7 +109,7 @@
     private ComponentContext context;
 
     private String[] path;
-    
+
     private String servletRoot;
 
     private Servlet coreDefaultServlet;
@@ -320,6 +319,12 @@
                     result = resource.adaptTo(Servlet.class);
                 }
             }
+        } else {
+            // check alternative variant using location/basename directly
+            Resource scriptResource = resolver.getResource(location + "/" + baseName);
+            if (scriptResource != null) {
+                result = scriptResource.adaptTo(Servlet.class);
+            }
         }
 
         return result;
@@ -408,14 +413,20 @@
             path = new String[] { "/" };
         }
 
-        String tmpRoot = OsgiUtil.toString(properties.get(PROP_SERVLET_ROOT), null);
+        String tmpRoot = OsgiUtil.toString(properties.get(PROP_SERVLET_ROOT),
+            null);
         if (tmpRoot == null) {
             tmpRoot = path[0];
-        } else if (!tmpRoot.startsWith("/")) {
-            tmpRoot = "/" + tmpRoot;
+        } else {
+            if (!tmpRoot.startsWith("/")) {
+                tmpRoot = "/" + tmpRoot;
+            }
+            if (!tmpRoot.endsWith("/")) {
+                tmpRoot += "/";
+            }
         }
         servletRoot = tmpRoot;
-        
+
         Collection<ServiceReference> refs;
         synchronized (this) {
 
@@ -510,7 +521,7 @@
         params.put(ResourceProvider.ROOTS, provider.getSerlvetPaths());
 
         ServiceRegistration reg = context.getBundleContext().registerService(
-            ResourceProvider.SERVICE_NAME, servlet, params);
+            ResourceProvider.SERVICE_NAME, provider, params);
 
         servletsByReference.put(reference, reg);
 
@@ -528,7 +539,7 @@
         if (registration != null) {
 
             registration.unregister();
-            
+
             Servlet servlet = (Servlet) context.locateService(REF_SERVLET,
                 reference);
             String name = servlet.getServletConfig().getServletName();