diff --git a/platform/util/src/com/intellij/util/io/URLUtil.java b/platform/util/src/com/intellij/util/io/URLUtil.java index f55d33cdd39b..c994b4cabf9f 100644 --- a/platform/util/src/com/intellij/util/io/URLUtil.java +++ b/platform/util/src/com/intellij/util/io/URLUtil.java @@ -16,6 +16,8 @@ package com.intellij.util.io; +import com.google.common.base.Splitter; +import com.google.common.collect.Lists; import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.io.FileUtil; import gnu.trove.TIntArrayList; @@ -28,10 +30,14 @@ import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.nio.charset.Charset; +import java.util.ArrayList; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; public class URLUtil { + + public static final String SCHEME_SEPARATOR = "://"; + private URLUtil() { } @@ -145,24 +151,21 @@ public class URLUtil { return -1; } - public static boolean containsScheme(String url) { - return url.contains("://"); + public static boolean containsScheme(@NotNull String url) { + return url.contains(SCHEME_SEPARATOR); } /** - * Splits the url into 2 parts: the scheme ("http://" for instance) and the rest of the URL. + * Splits the url into 2 parts: the scheme ("http", for instance) and the rest of the URL.
+ * Scheme separator is not included neither to the scheme part, nor to the url part.
* The scheme can be absent, in which case empty string is written to the first item of the Pair. */ @NotNull public static Pair splitScheme(@NotNull String url) { - final String schemeSeparator = "://"; - int ind = url.indexOf(schemeSeparator); - if (ind >= 0) { - String scheme = url.substring(0, ind + schemeSeparator.length()); - return Pair.create(scheme, url.substring(ind + schemeSeparator.length())); - } - else { - return Pair.create("", url); + ArrayList list = Lists.newArrayList(Splitter.on(SCHEME_SEPARATOR).limit(2).split(url)); + if (list.size() == 1) { + return Pair.create("", list.get(0)); } + return Pair.create(list.get(0), list.get(1)); } } diff --git a/platform/util/util.iml b/platform/util/util.iml index 3e482bfe30e0..f3a600ce9f85 100644 --- a/platform/util/util.iml +++ b/platform/util/util.iml @@ -20,6 +20,7 @@ + diff --git a/plugins/git4idea/src/git4idea/commands/GitHttpGuiAuthenticator.java b/plugins/git4idea/src/git4idea/commands/GitHttpGuiAuthenticator.java index 4185005f11bb..2d63e0783356 100644 --- a/plugins/git4idea/src/git4idea/commands/GitHttpGuiAuthenticator.java +++ b/plugins/git4idea/src/git4idea/commands/GitHttpGuiAuthenticator.java @@ -176,7 +176,7 @@ class GitHttpGuiAuthenticator implements GitHttpAuthenticator { String scheme = split.getFirst(); String urlItself = split.getSecond(); int pathStart = urlItself.indexOf("/"); - return scheme + urlItself.substring(0, pathStart); + return scheme + URLUtil.SCHEME_SEPARATOR + urlItself.substring(0, pathStart); } /** @@ -232,7 +232,7 @@ class GitHttpGuiAuthenticator implements GitHttpAuthenticator { Pair pair = URLUtil.splitScheme(url); String scheme = pair.getFirst(); if (StringUtil.isEmpty(scheme)) { - return scheme + login + "@" + pair.getSecond(); + return scheme + URLUtil.SCHEME_SEPARATOR + login + "@" + pair.getSecond(); } return login + "@" + url; }