From 5edd86d1451512a637e0394d8a37d33333e76444 Mon Sep 17 00:00:00 2001 From: fbecker Date: Wed, 23 Feb 2011 22:02:41 +0000 Subject: NEW - bug 335278: enhance search result handler to handle additional attributes https://bugs.eclipse.org/bugs/show_bug.cgi?id=335278 --- .../org/eclipse/mylyn/tests/util/UrlBuilder.java | 76 ++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 org.eclipse.mylyn.tests.util/src/org/eclipse/mylyn/tests/util/UrlBuilder.java (limited to 'org.eclipse.mylyn.tests.util/src') diff --git a/org.eclipse.mylyn.tests.util/src/org/eclipse/mylyn/tests/util/UrlBuilder.java b/org.eclipse.mylyn.tests.util/src/org/eclipse/mylyn/tests/util/UrlBuilder.java new file mode 100644 index 000000000..f0698abf1 --- /dev/null +++ b/org.eclipse.mylyn.tests.util/src/org/eclipse/mylyn/tests/util/UrlBuilder.java @@ -0,0 +1,76 @@ +/******************************************************************************* + * Copyright (c) 2009, 2010 Tasktop Technologies and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Tasktop Technologies - initial API and implementation + *******************************************************************************/ +package org.eclipse.mylyn.tests.util; + +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; + +import org.eclipse.mylyn.tasks.core.TaskRepository; + +/** + * A builder class for constructing {@link TaskRepository task repository} URLs. + * + * @author David Green + * @since 3.5 + */ +public class UrlBuilder { + private final StringBuilder buf = new StringBuilder(512); + + private UrlBuilder() { + } + + public static UrlBuilder build(TaskRepository repository) { + UrlBuilder builder = new UrlBuilder(); + String url = repository.getRepositoryUrl(); + if (url.endsWith("/")) { + url = url.substring(0, url.length() - 1); + } + return builder.append(url); + } + + public UrlBuilder append(String urlSegment) { + buf.append(urlSegment); + return this; + } + + public UrlBuilder parameter(String name, Object value) { + return parameter(name, value == null ? null : value.toString()); + } + + public UrlBuilder parameter(String name, String value) { + int indexOfQ = buf.indexOf("?"); + if (indexOfQ == -1) { + buf.append("?"); + } else { + buf.append("&"); + } + buf.append(name); + buf.append('='); + if (value != null) { + buf.append(encode(value)); + } + return this; + } + + private String encode(String value) { + try { + return URLEncoder.encode(value, "UTF-8"); + } catch (UnsupportedEncodingException e) { + throw new IllegalStateException(e); + } + } + + @Override + public String toString() { + return buf.toString(); + } + +} -- cgit v1.2.3