Selaa lähdekoodia

fix #453 : improve sitePath

Shinsuke Sugaya 9 vuotta sitten
vanhempi
commit
26b4ad5b25

+ 14 - 1
src/main/java/org/codelibs/fess/helper/ViewHelper.java

@@ -78,6 +78,10 @@ import com.ibm.icu.text.SimpleDateFormat;
 
 public class ViewHelper implements Serializable {
 
+    private static final Pattern LOCAL_PATH_PATTERN = Pattern.compile("^file:/+[a-zA-Z]:");
+
+    private static final Pattern SHARED_FOLDER_PATTERN = Pattern.compile("^file:/+[^/]\\.");
+
     private static final long serialVersionUID = 1L;
 
     private static final Logger logger = LoggerFactory.getLogger(ViewHelper.class);
@@ -477,7 +481,16 @@ public class ViewHelper implements Serializable {
     public Object getSitePath(final Map<String, Object> docMap) {
         final Object urlLink = docMap.get("urlLink");
         if (urlLink != null) {
-            return StringUtils.abbreviate(urlLink.toString().replaceFirst("^[a-zA-Z0-9]*:/?/*", ""), sitePathLength);
+            final String returnUrl;
+            final String url = urlLink.toString();
+            if (LOCAL_PATH_PATTERN.matcher(url).find() || SHARED_FOLDER_PATTERN.matcher(url).find()) {
+                returnUrl = url.replaceFirst("^file:/+", "");
+            } else if (url.startsWith("file:")) {
+                returnUrl = url.replaceFirst("^file:/+", "/");
+            } else {
+                returnUrl = url.replaceFirst("^[a-zA-Z0-9]*:/+", "");
+            }
+            return StringUtils.abbreviate(returnUrl, sitePathLength);
         }
         return null;
     }

+ 21 - 1
src/test/java/org/codelibs/fess/helper/ViewHelperTest.java

@@ -118,6 +118,11 @@ public class ViewHelperTest extends UnitFessTestCase {
         docMap.put("urlLink", urlLink);
         assertEquals(sitePath, viewHelper.getSitePath(docMap));
 
+        urlLink = "://www.qwerty.jp";
+        sitePath = "www.qwerty.jp";
+        docMap.put("urlLink", urlLink);
+        assertEquals(sitePath, viewHelper.getSitePath(docMap));
+
         urlLink = "www.google.com";
         sitePath = "www.google.com";
         docMap.put("urlLink", urlLink);
@@ -128,8 +133,23 @@ public class ViewHelperTest extends UnitFessTestCase {
         docMap.put("urlLink", urlLink);
         assertEquals(sitePath, viewHelper.getSitePath(docMap));
 
+        urlLink = "file:/home/user/";
+        sitePath = "/home/user/";
+        docMap.put("urlLink", urlLink);
+        assertEquals(sitePath, viewHelper.getSitePath(docMap));
+
         urlLink = "file://home/user/";
-        sitePath = "home/user/";
+        sitePath = "/home/user/";
+        docMap.put("urlLink", urlLink);
+        assertEquals(sitePath, viewHelper.getSitePath(docMap));
+
+        urlLink = "file://c:/home/user/";
+        sitePath = "c:/home/user/";
+        docMap.put("urlLink", urlLink);
+        assertEquals(sitePath, viewHelper.getSitePath(docMap));
+
+        urlLink = "file://1.2.3.4/user/";
+        sitePath = "1.2.3.4/user/";
         docMap.put("urlLink", urlLink);
         assertEquals(sitePath, viewHelper.getSitePath(docMap));
     }