001
014
015 package com.liferay.portal.util;
016
017 import com.liferay.portal.kernel.util.StringUtil;
018
019 import java.net.MalformedURLException;
020 import java.net.URL;
021
022
025 public class URLUtil {
026
027
031 public static URL normalizeURL(URL url) throws MalformedURLException {
032 String urlString = url.toString();
033
034 if (urlString.startsWith("vfsfile:")) {
035 urlString = StringUtil.replaceFirst(urlString, "vfsfile:", "file:");
036 }
037 else if (urlString.startsWith("vfsjar:")) {
038 urlString = StringUtil.replaceFirst(urlString, "vfsjar:", "file:");
039 }
040 else if (urlString.startsWith("vfszip:")) {
041 urlString = StringUtil.replaceFirst(urlString, "vfszip:", "file:");
042 }
043
044 if (urlString.contains(".jar/")) {
045 urlString = StringUtil.replaceFirst(urlString, ".jar/", ".jar!/");
046
047 if (urlString.startsWith("file:")) {
048 urlString = "jar:" + urlString;
049 }
050 }
051
052 urlString = urlString.replace('\\', '/');
053
054 int index = urlString.indexOf("file:");
055
056 if (index != -1) {
057 index += 5;
058
059 if (urlString.charAt(index) != '/') {
060 urlString =
061 urlString.substring(0, index) + '/' +
062 urlString.substring(index);
063 }
064 }
065
066 return new URL(urlString);
067 }
068
069 }