diff --git a/scm-core/src/main/java/sonia/scm/util/UrlBuilder.java b/scm-core/src/main/java/sonia/scm/util/UrlBuilder.java index cd39723ec1..c844f65f11 100644 --- a/scm-core/src/main/java/sonia/scm/util/UrlBuilder.java +++ b/scm-core/src/main/java/sonia/scm/util/UrlBuilder.java @@ -35,6 +35,7 @@ package sonia.scm.util; //~--- JDK imports ------------------------------------------------------------ +import com.google.common.net.UrlEscapers; import java.net.MalformedURLException; import java.net.URL; @@ -138,8 +139,11 @@ public class UrlBuilder { if (Util.isNotEmpty(name) && Util.isNotEmpty(value)) { - url = new StringBuilder(url).append(separator).append(name).append( - HttpUtil.SEPARATOR_PARAMETER_VALUE).append(value).toString(); + url = new StringBuilder(url) + .append(separator).append(name) + .append(HttpUtil.SEPARATOR_PARAMETER_VALUE) + .append(UrlEscapers.urlFragmentEscaper().escape(value)) + .toString(); separator = HttpUtil.SEPARATOR_PARAMETER; parameterAdded = true; } diff --git a/scm-core/src/test/java/sonia/scm/util/UrlBuilderTest.java b/scm-core/src/test/java/sonia/scm/util/UrlBuilderTest.java index fe64cb2d4f..16d4b59ffc 100644 --- a/scm-core/src/test/java/sonia/scm/util/UrlBuilderTest.java +++ b/scm-core/src/test/java/sonia/scm/util/UrlBuilderTest.java @@ -57,8 +57,9 @@ public class UrlBuilderTest builder.appendParameter("i", 123).appendParameter("s", "abc"); builder.appendParameter("b", true).appendParameter("l", 321l); - assertEquals("http://www.short.de?i=123&s=abc&b=true&l=321", - builder.toString()); + assertEquals("http://www.short.de?i=123&s=abc&b=true&l=321", builder.toString()); + builder.appendParameter("c", "a b"); + assertEquals("http://www.short.de?i=123&s=abc&b=true&l=321&c=a%20b", builder.toString()); } /**