fix workspace warnings in Hudson connector

* ignores or externalizes strings when it's obvious which to do
* replaces calls to deprecated release(monitor) with release()

Change-Id: I6aadfc825679f00dfdab47e805e09c481ad03fbc
Signed-off-by: Sam Davis <sam.davis@tasktop.com>
diff --git a/org.eclipse.mylyn.hudson.core/src/org/eclipse/mylyn/internal/hudson/core/HudsonServerBehaviour.java b/org.eclipse.mylyn.hudson.core/src/org/eclipse/mylyn/internal/hudson/core/HudsonServerBehaviour.java
index 69c8601..085d0c4 100644
--- a/org.eclipse.mylyn.hudson.core/src/org/eclipse/mylyn/internal/hudson/core/HudsonServerBehaviour.java
+++ b/org.eclipse.mylyn.hudson.core/src/org/eclipse/mylyn/internal/hudson/core/HudsonServerBehaviour.java
@@ -168,8 +168,8 @@
 		}
 
 		// unsupported kind
-		throw new UnsupportedOperationException("Unsupported request kind and scope combination: kind="
-				+ request.getKind() + ",scope=" + request.getScope());
+		throw new UnsupportedOperationException("Unsupported request kind and scope combination: kind=" //$NON-NLS-1$
+				+ request.getKind() + ",scope=" + request.getScope()); //$NON-NLS-1$
 	}
 
 	@Override
@@ -201,12 +201,12 @@
 	 */
 	private String getDefaultValue(Element element) throws HudsonException {
 		// parsed from job config
-		String value = getElementContent(element, "defaultValue", false);
+		String value = getElementContent(element, "defaultValue", false); //$NON-NLS-1$
 		if (value != null) {
 			return value;
 		}
 		// parsed from job actions
-		NodeList nodes = element.getElementsByTagName("defaultParameterValue");
+		NodeList nodes = element.getElementsByTagName("defaultParameterValue"); //$NON-NLS-1$
 		if (nodes.getLength() == 1) {
 			NodeList children = nodes.item(0).getChildNodes();
 			for (int i = 0; i < children.getLength(); i++) {
@@ -354,7 +354,7 @@
 	private void append(StringBuilder sb, String text) {
 		if (text != null) {
 			if (sb.length() > 0) {
-				sb.append(", ");
+				sb.append(", "); //$NON-NLS-1$
 			}
 			sb.append(text);
 		}
@@ -423,11 +423,11 @@
 				change.setAuthor(parseUser(child));
 			} else if ("comment".equals(tagName)) { //$NON-NLS-1$
 				change.setMessage(child.getTextContent());
-			} else if ("date".equals(tagName)) {
+			} else if ("date".equals(tagName)) { //$NON-NLS-1$
 				change.setDate(parseDate(child));
-			} else if ("file".equals(tagName)) {
+			} else if ("file".equals(tagName)) { //$NON-NLS-1$
 				change.getArtifacts().add(parseArtifact(child));
-			} else if ("id".equals(tagName)) {
+			} else if ("id".equals(tagName)) { //$NON-NLS-1$
 				change.setRevision(child.getTextContent());
 			} else if ("modifiedPath".equals(tagName)) { //$NON-NLS-1$
 				IChangeArtifact artifact = createChangeArtifact();
@@ -441,13 +441,13 @@
 				}
 			} else if ("node".equals(tagName)) { //$NON-NLS-1$
 				change.setRevision(child.getTextContent());
-			} else if ("rev".equals(tagName)) {
+			} else if ("rev".equals(tagName)) { //$NON-NLS-1$
 				change.setRevision(child.getTextContent());
-			} else if ("path".equals(tagName)) {
+			} else if ("path".equals(tagName)) { //$NON-NLS-1$
 				change.getArtifacts().add(parseArtifact(child));
-			} else if ("revision".equals(tagName)) {
+			} else if ("revision".equals(tagName)) { //$NON-NLS-1$
 				change.setRevision(child.getTextContent());
-			} else if ("user".equals(tagName) && change.getAuthor() == null) {
+			} else if ("user".equals(tagName) && change.getAuthor() == null) { //$NON-NLS-1$
 				IUser user = createUser();
 				user.setId(child.getTextContent());
 				change.setAuthor(user);
@@ -499,12 +499,12 @@
 	private EditType parseEditType(Element node) {
 		if (node != null) {
 			String text = node.getTextContent();
-			if ("add".equals(text)) {
+			if ("add".equals(text)) { //$NON-NLS-1$
 				return EditType.ADD;
-			} else if ("edit".equals(text)) {
+			} else if ("edit".equals(text)) { //$NON-NLS-1$
 				return EditType.EDIT;
 			}
-			if ("delete".equals(text)) {
+			if ("delete".equals(text)) { //$NON-NLS-1$
 				return EditType.DELETE;
 			}
 		}
@@ -514,10 +514,10 @@
 	private long parseDate(Element node) {
 		if (node != null) {
 			String[] patterns = { // 
-			"yyyy-MM-dd", // cvs
-					"yyyy-MM-dd HH:mm:ss Z", // git		
+			"yyyy-MM-dd", // cvs //$NON-NLS-1$
+					"yyyy-MM-dd HH:mm:ss Z", // git		 //$NON-NLS-1$
 					//"1283761613.0-7200" // mercurial
-					"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'" // svn
+					"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'" // svn //$NON-NLS-1$
 			};
 			String text = node.getTextContent();
 			for (String pattern : patterns) {
@@ -575,7 +575,7 @@
 		updateHealth(job, plan);
 		if (job.getLastBuild() != null) {
 			IBuild build = createBuild();
-			build.setId(job.getLastBuild().getNumber() + "");
+			build.setId(job.getLastBuild().getNumber() + ""); //$NON-NLS-1$
 			build.setLabel(job.getLastBuild().getNumber() + ""); //$NON-NLS-1$
 			build.setBuildNumber(job.getLastBuild().getNumber());
 			build.setUrl(job.getLastBuild().getUrl());
@@ -607,10 +607,10 @@
 
 	private IParameterDefinition parseParameter(Element element) throws HudsonException {
 		String tagName = element.getTagName();
-		if ("hudson.model.ChoiceParameterDefinition".equals(tagName) || "ChoiceParameterDefinition".equals(getElementContent(element, "type", false))) { //$NON-NLS-1$
+		if ("hudson.model.ChoiceParameterDefinition".equals(tagName) || "ChoiceParameterDefinition".equals(getElementContent(element, "type", false))) { //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
 			IChoiceParameterDefinition definition = BuildFactory.eINSTANCE.createChoiceParameterDefinition();
-			definition.setName(getElementContent(element, "name", true));
-			definition.setDescription(getElementContent(element, "description", false));
+			definition.setName(getElementContent(element, "name", true)); //$NON-NLS-1$
+			definition.setDescription(getElementContent(element, "description", false)); //$NON-NLS-1$
 			// parsed from job config
 			NodeList options = element.getElementsByTagName("string"); //$NON-NLS-1$
 			for (int i = 0; i < options.getLength(); i++) {
@@ -627,10 +627,10 @@
 			return definition;
 		}
 
-		if ("hudson.model.BooleanParameterDefinition".equals(tagName) || "BooleanParameterDefinition".equals(getElementContent(element, "type", false))) { //$NON-NLS-1$
+		if ("hudson.model.BooleanParameterDefinition".equals(tagName) || "BooleanParameterDefinition".equals(getElementContent(element, "type", false))) { //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
 			IBooleanParameterDefinition definition = IBuildFactory.INSTANCE.createBooleanParameterDefinition();
-			definition.setName(getElementContent(element, "name", true));
-			definition.setDescription(getElementContent(element, "description", false));
+			definition.setName(getElementContent(element, "name", true)); //$NON-NLS-1$
+			definition.setDescription(getElementContent(element, "description", false)); //$NON-NLS-1$
 			String defaultValue = getDefaultValue(element);
 			if (defaultValue != null) {
 				definition.setDefaultValue(Boolean.parseBoolean(defaultValue));
@@ -638,39 +638,39 @@
 			return definition;
 		}
 
-		if ("hudson.model.StringParameterDefinition".equals(tagName) || "StringParameterDefinition".equals(getElementContent(element, "type", false))) { //$NON-NLS-1$
+		if ("hudson.model.StringParameterDefinition".equals(tagName) || "StringParameterDefinition".equals(getElementContent(element, "type", false))) { //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
 			IStringParameterDefinition definition = IBuildFactory.INSTANCE.createStringParameterDefinition();
-			definition.setName(getElementContent(element, "name", true));
-			definition.setDescription(getElementContent(element, "description", false));
+			definition.setName(getElementContent(element, "name", true)); //$NON-NLS-1$
+			definition.setDescription(getElementContent(element, "description", false)); //$NON-NLS-1$
 			definition.setDefaultValue(getDefaultValue(element));
 			return definition;
 		}
 
-		if ("hudson.model.PasswordParameterDefinition".equals(tagName) || "PasswordParameterDefinition".equals(getElementContent(element, "type", false))) { //$NON-NLS-1$
+		if ("hudson.model.PasswordParameterDefinition".equals(tagName) || "PasswordParameterDefinition".equals(getElementContent(element, "type", false))) { //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
 			IPasswordParameterDefinition definition = IBuildFactory.INSTANCE.createPasswordParameterDefinition();
-			definition.setName(getElementContent(element, "name", true));
-			definition.setDescription(getElementContent(element, "description", false));
+			definition.setName(getElementContent(element, "name", true)); //$NON-NLS-1$
+			definition.setDescription(getElementContent(element, "description", false)); //$NON-NLS-1$
 			definition.setDefaultValue(getDefaultValue(element));
 			return definition;
 		}
 
-		if ("hudson.model.RunParameterDefinition".equals(tagName) || "RunParameterDefinition".equals(getElementContent(element, "type", false))) { //$NON-NLS-1$
+		if ("hudson.model.RunParameterDefinition".equals(tagName) || "RunParameterDefinition".equals(getElementContent(element, "type", false))) { //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
 			IBuildParameterDefinition definition = IBuildFactory.INSTANCE.createBuildParameterDefinition();
-			definition.setName(getElementContent(element, "name", true));
-			definition.setDescription(getElementContent(element, "description", false));
-			definition.setBuildPlanId(getElementContent(element, "projectName", false));
+			definition.setName(getElementContent(element, "name", true)); //$NON-NLS-1$
+			definition.setDescription(getElementContent(element, "description", false)); //$NON-NLS-1$
+			definition.setBuildPlanId(getElementContent(element, "projectName", false)); //$NON-NLS-1$
 			return definition;
 		}
 
-		if ("hudson.model.FileParameterDefinition".equals(tagName) || "FileParameterDefinition".equals(getElementContent(element, "type", false))) { //$NON-NLS-1$
+		if ("hudson.model.FileParameterDefinition".equals(tagName) || "FileParameterDefinition".equals(getElementContent(element, "type", false))) { //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
 			IFileParameterDefinition definition = IBuildFactory.INSTANCE.createFileParameterDefinition();
-			definition.setName(getElementContent(element, "name", true));
-			definition.setDescription(getElementContent(element, "description", false));
+			definition.setName(getElementContent(element, "name", true)); //$NON-NLS-1$
+			definition.setDescription(getElementContent(element, "description", false)); //$NON-NLS-1$
 			return definition;
 		}
 
 		throw new HudsonException(NLS.bind("Unexpected parameter ''{0}'' with type ''{1}''", tagName,
-				getElementContent(element, "type", false)));
+				getElementContent(element, "type", false))); //$NON-NLS-1$
 	}
 
 //	private void parseParametersFromJobConfig(Document document, List<IParameterDefinition> definitions)
@@ -810,16 +810,16 @@
 				}
 				String description = hudsonHealthReport.getDescription();
 				if (description != null) {
-					if (hudsonHealthReport.getDescription().startsWith("Test Result: ")) {
+					if (hudsonHealthReport.getDescription().startsWith("Test Result: ")) { //$NON-NLS-1$
 						if (testResult == null) {
 							testResult = description.substring(13);
 						}
-					} else if (hudsonHealthReport.getDescription().startsWith("Build stability: ")) {
+					} else if (hudsonHealthReport.getDescription().startsWith("Build stability: ")) { //$NON-NLS-1$
 						if (buildResult == null) {
 							buildResult = description.substring(17);
 						}
 					} else if (result == null) {
-						int i = description.indexOf(": ");
+						int i = description.indexOf(": "); //$NON-NLS-1$
 						if (i != -1) {
 							result = description.substring(i + 2);
 						} else {
@@ -921,7 +921,7 @@
 		try {
 			HudsonServerInfo info = client.validate(monitor);
 			HudsonStatus status = new HudsonStatus(IStatus.OK, HudsonCorePlugin.ID_PLUGIN, NLS.bind(
-					"Validation succesful: Hudson version {0} found", info.getVersion()));
+					Messages.HudsonServerBehaviour_Validation_succesful, info.getVersion()));
 			status.setInfo(info);
 			return status;
 		} catch (HudsonException e) {
diff --git a/org.eclipse.mylyn.hudson.core/src/org/eclipse/mylyn/internal/hudson/core/Messages.java b/org.eclipse.mylyn.hudson.core/src/org/eclipse/mylyn/internal/hudson/core/Messages.java
new file mode 100644
index 0000000..c72cdef
--- /dev/null
+++ b/org.eclipse.mylyn.hudson.core/src/org/eclipse/mylyn/internal/hudson/core/Messages.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2014 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.internal.hudson.core;
+
+import org.eclipse.osgi.util.NLS;
+
+public class Messages extends NLS {
+	private static final String BUNDLE_NAME = "org.eclipse.mylyn.internal.hudson.core.messages"; //$NON-NLS-1$
+
+	public static String HudsonServerBehaviour_Validation_succesful;
+	static {
+		// initialize resource bundle
+		NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+	}
+
+	private Messages() {
+	}
+}
diff --git a/org.eclipse.mylyn.hudson.core/src/org/eclipse/mylyn/internal/hudson/core/client/HudsonLoginForm.java b/org.eclipse.mylyn.hudson.core/src/org/eclipse/mylyn/internal/hudson/core/client/HudsonLoginForm.java
index ee0cb45..25bc747 100644
--- a/org.eclipse.mylyn.hudson.core/src/org/eclipse/mylyn/internal/hudson/core/client/HudsonLoginForm.java
+++ b/org.eclipse.mylyn.hudson.core/src/org/eclipse/mylyn/internal/hudson/core/client/HudsonLoginForm.java
@@ -37,15 +37,15 @@
 	public UrlEncodedFormEntity createEntity() throws UnsupportedEncodingException {
 		// set form content
 		List<NameValuePair> requestParameters = new ArrayList<NameValuePair>();
-		requestParameters.add(new BasicNameValuePair("j_username", j_username));
-		requestParameters.add(new BasicNameValuePair("j_password", j_password));
-		requestParameters.add(new BasicNameValuePair("from", from));
+		requestParameters.add(new BasicNameValuePair("j_username", j_username)); //$NON-NLS-1$
+		requestParameters.add(new BasicNameValuePair("j_password", j_password)); //$NON-NLS-1$
+		requestParameters.add(new BasicNameValuePair("from", from)); //$NON-NLS-1$
 
 		// set json encoded content
 		requestParameters.add(new BasicNameValuePair("json", new Gson().toJson(this))); //$NON-NLS-1$
 
 		// set form parameters
-		requestParameters.add(new BasicNameValuePair("Submit", "log in"));
+		requestParameters.add(new BasicNameValuePair("Submit", "log in")); //$NON-NLS-1$ //$NON-NLS-2$
 
 		// create entity
 		UrlEncodedFormEntity entity = new UrlEncodedFormEntity(requestParameters);
diff --git a/org.eclipse.mylyn.hudson.core/src/org/eclipse/mylyn/internal/hudson/core/client/HudsonOperation.java b/org.eclipse.mylyn.hudson.core/src/org/eclipse/mylyn/internal/hudson/core/client/HudsonOperation.java
index b1b1402..cf83363 100644
--- a/org.eclipse.mylyn.hudson.core/src/org/eclipse/mylyn/internal/hudson/core/client/HudsonOperation.java
+++ b/org.eclipse.mylyn.hudson.core/src/org/eclipse/mylyn/internal/hudson/core/client/HudsonOperation.java
@@ -53,7 +53,7 @@
  */
 public abstract class HudsonOperation<T> extends CommonHttpOperation<T> {
 
-	private static final String ID_CONTEXT_CRUMB = ".crumb";
+	private static final String ID_CONTEXT_CRUMB = ".crumb"; //$NON-NLS-1$
 
 	public HudsonOperation(CommonHttpClient client) {
 		super(client);
@@ -98,8 +98,8 @@
 			}
 
 			// validate form response
-			Header header = response.getFirstHeader("Location");
-			if (header != null && header.getValue().endsWith("/loginError")) {
+			Header header = response.getFirstHeader("Location"); //$NON-NLS-1$
+			if (header != null && header.getValue().endsWith("/loginError")) { //$NON-NLS-1$
 				getClient().setAuthenticated(false);
 				throw new AuthenticationException("Authentication failed",
 						new AuthenticationRequest<AuthenticationType<UserCredentials>>(getClient().getLocation(),
@@ -135,7 +135,7 @@
 				String charSet = EntityUtils.getContentCharSet(response.getEntity());
 				BufferedReader reader = new BufferedReader(new InputStreamReader(in, (charSet != null)
 						? charSet
-						: "UTF-8"));
+						: "UTF-8")); //$NON-NLS-1$
 				HtmlStreamTokenizer tokenizer = new HtmlStreamTokenizer(reader, null);
 				for (Token token = tokenizer.nextToken(); token.getType() != Token.EOF; token = tokenizer.nextToken()) {
 					if (token.getType() == Token.TAG) {
@@ -190,16 +190,16 @@
 			doValidate(response, monitor);
 			return doProcess(response, monitor);
 		} catch (IOException e) {
-			response.release(monitor);
+			response.release();
 			throw e;
 		} catch (HudsonException e) {
-			response.release(monitor);
+			response.release();
 			throw e;
 		} catch (JAXBException e) {
-			response.release(monitor);
+			response.release();
 			throw e;
 		} catch (RuntimeException e) {
-			response.release(monitor);
+			response.release();
 			throw e;
 		}
 	}
@@ -220,7 +220,7 @@
 			doValidate(response, monitor);
 			return doProcess(response, monitor);
 		} finally {
-			response.release(monitor);
+			response.release();
 		}
 	}
 
@@ -254,7 +254,7 @@
 		List<Cookie> cookies = new ArrayList<Cookie>(getClient().getHttpClient().getCookieStore().getCookies());
 		if (cookies != null) {
 			for (Cookie cookie : cookies) {
-				if ("JSESSIONID".equals(cookie.getName())) {
+				if ("JSESSIONID".equals(cookie.getName())) { //$NON-NLS-1$
 					return !cookie.isExpired(new Date());
 				}
 			}
diff --git a/org.eclipse.mylyn.hudson.core/src/org/eclipse/mylyn/internal/hudson/core/messages.properties b/org.eclipse.mylyn.hudson.core/src/org/eclipse/mylyn/internal/hudson/core/messages.properties
new file mode 100644
index 0000000..847407a
--- /dev/null
+++ b/org.eclipse.mylyn.hudson.core/src/org/eclipse/mylyn/internal/hudson/core/messages.properties
@@ -0,0 +1 @@
+HudsonServerBehaviour_Validation_succesful=Validation succesful: Hudson version {0} found