mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
UriUtil.trimLastSlash
refine Url nullability (newFromIdea is not yet done)
This commit is contained in:
@@ -18,7 +18,6 @@ package com.intellij.openapi.vfs.impl.http;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.fileEditor.FileDocumentManager;
|
||||
import com.intellij.openapi.fileTypes.FileType;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.openapi.vfs.VirtualFileManager;
|
||||
import com.intellij.openapi.vfs.VirtualFileSystem;
|
||||
@@ -65,7 +64,7 @@ class VirtualFileImpl extends HttpVirtualFile {
|
||||
}
|
||||
});
|
||||
|
||||
path = StringUtil.trimEnd(UriUtil.trimParameters(path), "/");
|
||||
path = UriUtil.trimLastSlash(UriUtil.trimParameters(path));
|
||||
int lastSlash = path.lastIndexOf('/');
|
||||
if (lastSlash == -1) {
|
||||
myParentPath = null;
|
||||
|
||||
+3
-7
@@ -23,21 +23,18 @@ import com.intellij.openapi.util.LowMemoryWatcher;
|
||||
import com.intellij.openapi.util.ShutDownTracker;
|
||||
import com.intellij.openapi.util.SystemInfo;
|
||||
import com.intellij.openapi.util.io.*;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.openapi.vfs.*;
|
||||
import com.intellij.openapi.vfs.newvfs.*;
|
||||
import com.intellij.openapi.vfs.newvfs.events.*;
|
||||
import com.intellij.openapi.vfs.newvfs.impl.FakeVirtualFile;
|
||||
import com.intellij.openapi.vfs.newvfs.impl.VirtualDirectoryImpl;
|
||||
import com.intellij.openapi.vfs.newvfs.impl.VirtualFileSystemEntry;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.Function;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.util.SmartList;
|
||||
import com.intellij.util.*;
|
||||
import com.intellij.util.containers.ConcurrentIntObjectMap;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.containers.StripedLockIntObjectConcurrentHashMap;
|
||||
import com.intellij.util.io.ReplicatorInputStream;
|
||||
import com.intellij.util.io.URLUtil;
|
||||
import com.intellij.util.messages.MessageBus;
|
||||
import gnu.trove.*;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
@@ -942,8 +939,7 @@ public class PersistentFSImpl extends PersistentFS implements ApplicationCompone
|
||||
@NotNull
|
||||
private static String normalizeRootUrl(@NotNull String basePath, @NotNull NewVirtualFileSystem fs) {
|
||||
// need to protect against relative path of the form "/x/../y"
|
||||
String url = fs.getProtocol() + "://" + VfsImplUtil.normalize(fs, FileUtil.toCanonicalPath(basePath));
|
||||
return StringUtil.trimEnd(url, "/");
|
||||
return UriUtil.trimLastSlash(fs.getProtocol() + URLUtil.SCHEME_SEPARATOR + VfsImplUtil.normalize(fs, FileUtil.toCanonicalPath(basePath)));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -34,15 +34,17 @@ import static com.intellij.openapi.util.text.StringUtil.stripQuotesAroundValue;
|
||||
|
||||
public final class UriUtil {
|
||||
public static final CharMatcher PARAM_CHAR_MATCHER = CharMatcher.anyOf("?#;");
|
||||
public static final CharMatcher SLASH_MATCHER = CharMatcher.is('/');
|
||||
|
||||
private static final Pattern DATA_URI_PATTERN = Pattern.compile("data:([^,;]+/[^,;]+)(;charset=[^,;]+)?(;base64)?,(.+)");
|
||||
|
||||
private UriUtil() {
|
||||
}
|
||||
|
||||
/**
|
||||
* must be synchronized with trimUrlParameters in utils.js
|
||||
*/
|
||||
public static String trimLastSlash(@NotNull String url) {
|
||||
return SLASH_MATCHER.trimTrailingFrom(url);
|
||||
}
|
||||
|
||||
public static String trimParameters(@NotNull String url) {
|
||||
int end = PARAM_CHAR_MATCHER.indexIn(url);
|
||||
return end != -1 ? url.substring(0, end) : url;
|
||||
|
||||
+2
-1
@@ -34,6 +34,7 @@ import com.intellij.ui.components.JBScrollPane;
|
||||
import com.intellij.ui.components.labels.LinkLabel;
|
||||
import com.intellij.ui.components.labels.LinkListener;
|
||||
import com.intellij.ui.table.TableView;
|
||||
import com.intellij.util.UriUtil;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.ui.*;
|
||||
import com.intellij.xml.util.XmlStringUtil;
|
||||
@@ -106,7 +107,7 @@ public class VcsDirectoryConfigurationPanel extends JPanel implements Configurab
|
||||
String directory = mapping.getDirectory();
|
||||
VirtualFile baseDir = myProject.getBaseDir();
|
||||
if (baseDir != null) {
|
||||
final File directoryFile = new File(StringUtil.trimEnd(StringUtil.trimEnd(directory, "/"), "\\") + "/");
|
||||
final File directoryFile = new File(StringUtil.trimEnd(UriUtil.trimLastSlash(directory), "\\") + "/");
|
||||
File ioBase = new File(baseDir.getPath());
|
||||
if (directoryFile.isAbsolute() && !FileUtil.isAncestor(ioBase, directoryFile, false)) {
|
||||
append(new File(directory).getPath());
|
||||
|
||||
@@ -15,8 +15,8 @@
|
||||
*/
|
||||
package org.jetbrains.idea.svn;
|
||||
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.util.UriUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.tmatesoft.svn.core.SVNURL;
|
||||
@@ -43,7 +43,7 @@ public class RootUrlInfo implements RootUrlPair {
|
||||
myNode = node;
|
||||
myFormat = format;
|
||||
myRoot = root;
|
||||
myRepositoryUrl = StringUtil.trimEnd(node.getRepositoryRootUrl().toString(), "/");
|
||||
myRepositoryUrl = UriUtil.trimLastSlash(node.getRepositoryRootUrl().toString());
|
||||
myType = type;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,12 +1,11 @@
|
||||
package com.intellij.tasks.mantis;
|
||||
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.ui.ComboBox;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.tasks.config.BaseRepositoryEditor;
|
||||
import com.intellij.ui.components.JBLabel;
|
||||
import com.intellij.util.Consumer;
|
||||
import com.intellij.util.UriUtil;
|
||||
import com.intellij.util.ui.FormBuilder;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -19,8 +18,6 @@ import java.awt.event.ItemListener;
|
||||
* Date: 9/21/12
|
||||
*/
|
||||
public class MantisRepositoryEditor extends BaseRepositoryEditor<MantisRepository> {
|
||||
private static final Logger LOG = Logger.getInstance("#com.intellij.tasks.mantis.MantisRepositoryEditor");
|
||||
|
||||
private ComboBox myProjectCombobox;
|
||||
private ComboBox myFilterCombobox;
|
||||
private JBLabel myProjectLabel;
|
||||
@@ -35,7 +32,7 @@ public class MantisRepositoryEditor extends BaseRepositoryEditor<MantisRepositor
|
||||
|
||||
@Override
|
||||
public void apply() {
|
||||
if (!myRepository.getUrl().equals(StringUtil.trimEnd(myURLText.getText(), "/")) ||
|
||||
if (!myRepository.getUrl().equals(UriUtil.trimLastSlash(myURLText.getText())) ||
|
||||
!myRepository.getUsername().equals(myUserNameText.getText()) ||
|
||||
!myRepository.getPassword().equals(myPasswordText.getText())) {
|
||||
resetComboBoxes();
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
*/
|
||||
package com.intellij.ide.browsers;
|
||||
|
||||
import com.google.common.base.CharMatcher;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
@@ -35,15 +34,13 @@ import java.util.regex.Pattern;
|
||||
public final class Urls {
|
||||
private static final Logger LOG = Logger.getInstance(Urls.class);
|
||||
|
||||
public static final CharMatcher SLASH_MATCHER = CharMatcher.is('/');
|
||||
|
||||
// about ";" see WEB-100359
|
||||
private static final Pattern URI_PATTERN = Pattern.compile("^([^:/?#]+)://([^/?#]*)([^?#;]*)(.*)");
|
||||
|
||||
@NotNull
|
||||
public static Url newFromEncoded(@NotNull String url) {
|
||||
Url result = parse(url, true);
|
||||
LOG.assertTrue(result != null);
|
||||
LOG.assertTrue(result != null, url);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
*/
|
||||
package com.intellij.javaee;
|
||||
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.openapi.vfs.VfsUtilCore;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.PsiFileSystemItem;
|
||||
@@ -40,4 +41,10 @@ public class UriUtil {
|
||||
String location = ExternalResourceManager.getInstance().getResourceLocation(uri, base.getProject());
|
||||
return VfsUtilCore.findRelativeFile(location, base.getVirtualFile());
|
||||
}
|
||||
|
||||
// cannot use UriUtil.SLASH_MATCHER.trimFrom - we don't depend on guava
|
||||
@NotNull
|
||||
public static String trimSlashFrom(@NotNull String path) {
|
||||
return StringUtil.trimStart(StringUtil.trimEnd(path, "/"), "/");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user