From 0af43f358ee5a83dd7aac097b387da03ca2de631 Mon Sep 17 00:00:00 2001 From: Mikhail Golubev Date: Tue, 18 Nov 2014 14:13:04 +0300 Subject: [PATCH] Prepend sever URL with "http://" if protocol was not specified --- .../intellij/tasks/impl/BaseRepository.java | 24 +++++++++++++++++++ .../tasks/youtrack/YouTrackRepository.java | 3 --- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/plugins/tasks/tasks-api/src/com/intellij/tasks/impl/BaseRepository.java b/plugins/tasks/tasks-api/src/com/intellij/tasks/impl/BaseRepository.java index 636d5b5565b5..8423736c8c10 100644 --- a/plugins/tasks/tasks-api/src/com/intellij/tasks/impl/BaseRepository.java +++ b/plugins/tasks/tasks-api/src/com/intellij/tasks/impl/BaseRepository.java @@ -17,6 +17,7 @@ package com.intellij.tasks.impl; import com.intellij.openapi.util.Comparing; import com.intellij.openapi.util.PasswordUtil; +import com.intellij.openapi.util.text.StringUtil; import com.intellij.tasks.TaskRepository; import com.intellij.tasks.TaskRepositoryType; import com.intellij.util.xmlb.annotations.Tag; @@ -24,6 +25,8 @@ import com.intellij.util.xmlb.annotations.Transient; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.net.URI; +import java.net.URISyntaxException; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -137,4 +140,25 @@ public abstract class BaseRepository extends TaskRepository { Matcher matcher = PATTERN.matcher(taskName); return matcher.find() ? matcher.group() : null; } + + @Override + public void setUrl(String url) { + super.setUrl(addSchemeIfNoneSpecified(url)); + } + + @Nullable + private static String addSchemeIfNoneSpecified(@Nullable String url) { + if (StringUtil.isNotEmpty(url)) { + try { + final String scheme = new URI(url).getScheme(); + // For URL like "foo.bar:8080" host name will be parsed as scheme + if (scheme == null || !scheme.startsWith("http")) { + url = "http://" + url; + } + } + catch (URISyntaxException ignored) { + } + } + return url; + } } diff --git a/plugins/tasks/tasks-core/src/com/intellij/tasks/youtrack/YouTrackRepository.java b/plugins/tasks/tasks-core/src/com/intellij/tasks/youtrack/YouTrackRepository.java index c0cf6d30a263..2093a179b461 100644 --- a/plugins/tasks/tasks-core/src/com/intellij/tasks/youtrack/YouTrackRepository.java +++ b/plugins/tasks/tasks-core/src/com/intellij/tasks/youtrack/YouTrackRepository.java @@ -130,9 +130,6 @@ public class YouTrackRepository extends BaseRepositoryImpl { } private HttpClient login(PostMethod method) throws Exception { - if (method.getHostConfiguration().getProtocol() == null) { - throw new Exception("Protocol not specified"); - } HttpClient client = getHttpClient(); client.getState().setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(getUsername(), getPassword())); configureHttpMethod(method);