fix #453 : improve sitePath

This commit is contained in:
Shinsuke Sugaya 2016-03-25 22:50:41 +09:00
parent 9dc7497be0
commit 26b4ad5b25
2 changed files with 35 additions and 2 deletions

View file

@ -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;
}

View file

@ -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));
}