changeset 125:a13422ae169d

Rewrite containsCredentials using java.util.URI
author Dmitry Neverov <dmitry.neverov@jetbrains.com>
date Tue, 28 Sep 2010 12:49:37 +0400
parents 7b8fcccecf05
children 8eab713b01a4
files mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/Settings.java
diffstat 1 files changed, 12 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/Settings.java	Tue Sep 28 12:31:48 2010 +0400
+++ b/mercurial-common/src/jetbrains/buildServer/buildTriggers/vcs/mercurial/command/Settings.java	Tue Sep 28 12:49:37 2010 +0400
@@ -23,6 +23,8 @@
 import org.jetbrains.annotations.NotNull;
 
 import java.io.File;
+import java.net.URI;
+import java.net.URISyntaxException;
 import java.util.HashSet;
 import java.util.Set;
 
@@ -130,15 +132,18 @@
   }
 
   private boolean containsCredentials(final String repository) {
-    for (String proto: AUTH_PROTOS) {
-      if (repository.startsWith(proto)) {
-        String withoutProto = repository.substring(proto.length());
-        int comma = withoutProto.indexOf(':');
-        int at = withoutProto.indexOf('@');
-        if (at != -1 && comma != -1 && at > comma) return true;
+    try {
+      URI repositoryURI = new URI(repository);
+      String scheme = repositoryURI.getScheme();
+      if (AUTH_PROTOS.contains(scheme + "://")) {
+        String userInfo = repositoryURI.getUserInfo();
+        return userInfo != null && userInfo.contains(":");
+      } else {
+        return false;
       }
+    } catch (URISyntaxException e) {
+      return false;
     }
-    return false;
   }
 
   public void setHgCommandPath(@NotNull final String hgCommandPath) {