[Bedework-commit] webdav r136 - releases/bedework-3.4.1.1/server/src/edu/rpi/cct/webdav/servlet/shared

svnadmin at bedework.org svnadmin at bedework.org
Fri May 23 11:12:20 EDT 2008


Author: douglm
Date: 2008-05-23 11:12:19 -0400 (Fri, 23 May 2008)
New Revision: 136

Modified:
   releases/bedework-3.4.1.1/server/src/edu/rpi/cct/webdav/servlet/shared/WebdavNsNode.java
Log:
Change WebdavNSnOde so that url handler works for root context. Also tidy it up a bit.

Modified: releases/bedework-3.4.1.1/server/src/edu/rpi/cct/webdav/servlet/shared/WebdavNsNode.java
===================================================================
--- releases/bedework-3.4.1.1/server/src/edu/rpi/cct/webdav/servlet/shared/WebdavNsNode.java	2008-05-09 13:56:04 UTC (rev 135)
+++ releases/bedework-3.4.1.1/server/src/edu/rpi/cct/webdav/servlet/shared/WebdavNsNode.java	2008-05-23 15:12:19 UTC (rev 136)
@@ -218,18 +218,26 @@
       this.relative = relative;
 
       try {
+        context = req.getContextPath();
+        if ((context == null) || (context.equals("."))) {
+          /* XXX Not at all sure why I did this.
+           * Context is "" for the root context anyway.
+           */
+          context = "";
+        }
+
         urlPrefix = req.getRequestURL().toString();
+        int pos;
 
-        int pos = urlPrefix.indexOf(req.getContextPath());
+        if (context.length() > 0) {
+          pos = urlPrefix.indexOf(context);
+        } else {
+          pos = urlPrefix.indexOf(req.getRequestURI());
+        }
 
         if (pos > 0) {
           urlPrefix = urlPrefix.substring(0, pos);
         }
-
-        context = req.getContextPath();
-        if ((context == null) || (context.equals("."))) {
-          context = "";
-        }
       } catch (Throwable t) {
         Logger.getLogger(WebdavUtils.class).warn(
             "Unable to get url from " + req);
@@ -261,31 +269,11 @@
 
         if (!relative) {
           sb.append(getUrlPrefix());
-          if (sb.charAt(sb.length() - 1) != '/') {
-            sb.append("/");
-          }
-
-          if (context.startsWith("/")) {
-            sb.append(context.substring(1));
-          } else {
-            sb.append(context);
-          }
-        } else {
-          if (!context.startsWith("/")) {
-            sb.append("/");
-          }
-          sb.append(context);
-
         }
 
-        if (!enc.startsWith("/")) {
-          if ((sb.length() == 0) || (sb.charAt(sb.length() - 1) != '/')) {
-            sb.append("/");
-          }
-        }
+        append(sb, context);
+        append(sb, enc);
 
-        sb.append(enc);
-
         return sb.toString();
       } catch (Throwable t) {
         throw new WebdavException(t);
@@ -316,6 +304,30 @@
     public String getUrlPrefix() {
       return urlPrefix;
     }
+
+    private boolean endsWithSlash(StringBuilder sb) {
+      if (sb.length() == 0) {
+        return false;
+      }
+
+      return sb.charAt(sb.length() - 1) == '/';
+    }
+
+    private void append(StringBuilder sb, String val) {
+      if (val.startsWith("/")) {
+        if (!endsWithSlash(sb)) {
+          sb.append(val);
+        } else {
+          sb.append(val.substring(1));
+        }
+      } else {
+        if (!endsWithSlash(sb)) {
+          sb.append("/");
+        }
+
+        sb.append(val);
+      }
+    }
   }
 
   /** Constructor



More information about the Bedework-commit mailing list