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