You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@taverna.apache.org by st...@apache.org on 2015/02/17 12:29:09 UTC

[05/50] [abbrv] incubator-taverna-server git commit: Use Java 7 idioms.

Use Java 7 idioms.

Project: http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/commit/867242f6
Tree: http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/tree/867242f6
Diff: http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/diff/867242f6

Branch: refs/heads/master
Commit: 867242f6225d2d79c22514d6cde89eab22238136
Parents: ef0aeb0
Author: Donal Fellows <do...@manchester.ac.uk>
Authored: Fri Mar 28 14:02:35 2014 +0000
Committer: Donal Fellows <do...@manchester.ac.uk>
Committed: Fri Mar 28 14:02:35 2014 +0000

----------------------------------------------------------------------
 .../port_description/InputDescription.java      |   2 +-
 .../server/port_description/ListValue.java      |   2 +-
 .../port_description/OutputDescription.java     |   2 +-
 .../org/taverna/server/rmidaemon/Registry.java  |  32 ++--
 .../remote/RemoteSecurityContext.java           |  13 +-
 .../org/taverna/server/unixforker/Forker.java   |   9 +-
 .../master/ContentsDescriptorBuilder.java       |  13 +-
 .../taverna/server/master/DirectoryREST.java    |   8 +-
 .../server/master/FileConcatenation.java        |   6 +-
 .../org/taverna/server/master/InputREST.java    |   2 +-
 .../taverna/server/master/ListenersREST.java    |   2 +-
 .../taverna/server/master/TavernaServer.java    |  31 ++--
 .../server/master/TavernaServerSupport.java     |  18 +--
 .../org/taverna/server/master/admin/Admin.java  |   4 +-
 .../taverna/server/master/admin/AdminBean.java  |   2 +-
 .../server/master/common/InputDescription.java  |   2 +-
 .../server/master/common/VersionedElement.java  |  14 +-
 .../taverna/server/master/common/Workflow.java  |  17 +-
 .../identity/StrippedDownAuthProvider.java      |   2 +-
 .../taverna/server/master/identity/User.java    |   2 +-
 .../server/master/identity/UserStore.java       |   8 +-
 .../identity/WorkflowInternalAuthProvider.java  |   6 +-
 .../interaction/InteractionFeedSupport.java     |   4 +-
 .../localworker/AbstractRemoteRunFactory.java   |  18 +--
 .../master/localworker/ForkRunFactory.java      |   8 +-
 .../localworker/IdAwareForkRunFactory.java      |  17 +-
 .../master/localworker/PersistedState.java      |   4 +-
 .../master/notification/NotificationEngine.java |   6 +-
 .../notification/RateLimitedDispatcher.java     |   2 +-
 .../master/notification/SMSDispatcher.java      |  12 +-
 .../master/notification/atom/EventDAO.java      |   6 +-
 .../server/master/rest/DirectoryContents.java   |   4 +-
 .../master/rest/TavernaServerInputREST.java     |   2 +-
 .../master/rest/TavernaServerListenersREST.java |  10 +-
 .../server/master/rest/TavernaServerREST.java   |  16 +-
 .../master/rest/TavernaServerRunREST.java       |   4 +-
 .../master/rest/TavernaServerSecurityREST.java  |   9 +-
 .../master/rest/handler/EntryHandler.java       |  22 ++-
 .../master/rest/handler/URIListHandler.java     |   2 +-
 .../server/master/soap/FileContents.java        |   5 +-
 .../master/usage/UsageRecordRecorder.java       |   7 +-
 .../server/master/utils/CapabilityLister.java   |  11 +-
 .../master/utils/CertificateChainFetcher.java   |  10 +-
 .../taverna/server/master/utils/X500Utils.java  |   5 +-
 .../server/master/worker/RemoteRunDelegate.java |  29 ++--
 .../server/master/worker/RunConnection.java     |   8 +-
 .../server/master/worker/RunDatabase.java       |  12 +-
 .../server/master/worker/RunDatabaseDAO.java    |  19 +--
 .../master/worker/SecurityContextDelegate.java  | 158 +++++++++----------
 .../master/WorkflowSerializationTest.java       |  15 +-
 .../taverna/server/master/mocks/ExampleRun.java |   4 +-
 .../taverna/server/master/mocks/MockPolicy.java |   2 +-
 .../master/mocks/SimpleListenerFactory.java     |   4 +-
 .../mocks/SimpleNonpersistentRunStore.java      |   9 +-
 .../localworker/impl/DirectoryDelegate.java     |   5 +-
 .../server/localworker/impl/FileDelegate.java   |  26 +--
 .../server/localworker/impl/LocalWorker.java    |  10 +-
 .../localworker/impl/TavernaRunManager.java     |   6 +-
 .../server/localworker/impl/WorkerCore.java     |  15 +-
 .../localworker/impl/LocalWorkerTest.java       |   9 +-
 60 files changed, 314 insertions(+), 398 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/867242f6/server-port-description/src/main/java/org/taverna/server/port_description/InputDescription.java
----------------------------------------------------------------------
diff --git a/server-port-description/src/main/java/org/taverna/server/port_description/InputDescription.java b/server-port-description/src/main/java/org/taverna/server/port_description/InputDescription.java
index 3064930..60b9353 100644
--- a/server-port-description/src/main/java/org/taverna/server/port_description/InputDescription.java
+++ b/server-port-description/src/main/java/org/taverna/server/port_description/InputDescription.java
@@ -26,7 +26,7 @@ import javax.xml.bind.annotation.XmlType;
 @XmlRootElement
 public class InputDescription extends AbstractPortDescription {
 	@XmlElement
-	public List<InputPort> input = new ArrayList<InputPort>();
+	public List<InputPort> input = new ArrayList<>();
 
 	@XmlType(name = "InputPort")
 	public static class InputPort extends AbstractPort {

http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/867242f6/server-port-description/src/main/java/org/taverna/server/port_description/ListValue.java
----------------------------------------------------------------------
diff --git a/server-port-description/src/main/java/org/taverna/server/port_description/ListValue.java b/server-port-description/src/main/java/org/taverna/server/port_description/ListValue.java
index 094ab03..b14cdf1 100644
--- a/server-port-description/src/main/java/org/taverna/server/port_description/ListValue.java
+++ b/server-port-description/src/main/java/org/taverna/server/port_description/ListValue.java
@@ -28,5 +28,5 @@ public class ListValue extends AbstractValue {
 			@XmlElement(name = "list", type = ListValue.class, nillable = false),
 			@XmlElement(name = "error", type = ErrorValue.class, nillable = false),
 			@XmlElement(name = "absent", type = AbsentValue.class, nillable = false) })
-	public List<AbstractValue> contents = new ArrayList<AbstractValue>();
+	public List<AbstractValue> contents = new ArrayList<>();
 }

http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/867242f6/server-port-description/src/main/java/org/taverna/server/port_description/OutputDescription.java
----------------------------------------------------------------------
diff --git a/server-port-description/src/main/java/org/taverna/server/port_description/OutputDescription.java b/server-port-description/src/main/java/org/taverna/server/port_description/OutputDescription.java
index 21fe03f..0b94973 100644
--- a/server-port-description/src/main/java/org/taverna/server/port_description/OutputDescription.java
+++ b/server-port-description/src/main/java/org/taverna/server/port_description/OutputDescription.java
@@ -23,7 +23,7 @@ import javax.xml.bind.annotation.XmlType;
 public class OutputDescription extends AbstractPortDescription {
 	private static final AbsentValue ABSENT_VALUE = new AbsentValue();
 	@XmlElement(name = "output")
-	public List<OutputPort> ports = new ArrayList<OutputPort>();
+	public List<OutputPort> ports = new ArrayList<>();
 
 	@XmlType(name = "OutputPort")
 	public static class OutputPort extends AbstractPort {

http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/867242f6/server-rmidaemon/src/main/java/org/taverna/server/rmidaemon/Registry.java
----------------------------------------------------------------------
diff --git a/server-rmidaemon/src/main/java/org/taverna/server/rmidaemon/Registry.java b/server-rmidaemon/src/main/java/org/taverna/server/rmidaemon/Registry.java
index 19fdc3b..4be7579 100644
--- a/server-rmidaemon/src/main/java/org/taverna/server/rmidaemon/Registry.java
+++ b/server-rmidaemon/src/main/java/org/taverna/server/rmidaemon/Registry.java
@@ -44,9 +44,9 @@ public class Registry {
 		}
 		try {
 			Object registryHandle = makeRegistry();
-			ObjectOutputStream oos = new ObjectOutputStream(System.out);
-			oos.writeObject(registryHandle);
-			oos.close();
+			try (ObjectOutputStream oos = new ObjectOutputStream(System.out)) {
+				oos.writeObject(registryHandle);
+			}
 		} catch (Exception e) {
 			System.err.println("problem creating registry: " + e.getMessage());
 			System.exit(1);
@@ -56,19 +56,17 @@ public class Registry {
 	private static int port = REGISTRY_PORT;
 	private static boolean localhostOnly = false;
 
-	private static MarshalledObject<Object> makeRegistry() throws IOException {
-		if (localhostOnly) {
-			setProperty("java.rmi.server.hostname", "127.0.0.1");
-			return new MarshalledObject<Object>(createRegistry(port,
-					getDefaultSocketFactory(), new RMIServerSocketFactory() {
-						@Override
-						public ServerSocket createServerSocket(int port)
-								throws IOException {
-							return new ServerSocket(port, 0, getLocalHost());
-						}
-					}));
-		} else {
-			return new MarshalledObject<Object>(createRegistry(port));
-		}
+	private static MarshalledObject<java.rmi.registry.Registry> makeRegistry() throws IOException {
+		if (!localhostOnly)
+			return new MarshalledObject<>(createRegistry(port));
+		setProperty("java.rmi.server.hostname", "127.0.0.1");
+		return new MarshalledObject<>(createRegistry(port,
+				getDefaultSocketFactory(), new RMIServerSocketFactory() {
+					@Override
+					public ServerSocket createServerSocket(int port)
+							throws IOException {
+						return new ServerSocket(port, 0, getLocalHost());
+					}
+				}));
 	}
 }

http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/867242f6/server-runinterface/src/main/java/org/taverna/server/localworker/remote/RemoteSecurityContext.java
----------------------------------------------------------------------
diff --git a/server-runinterface/src/main/java/org/taverna/server/localworker/remote/RemoteSecurityContext.java b/server-runinterface/src/main/java/org/taverna/server/localworker/remote/RemoteSecurityContext.java
index b5a8849..dac84ca 100644
--- a/server-runinterface/src/main/java/org/taverna/server/localworker/remote/RemoteSecurityContext.java
+++ b/server-runinterface/src/main/java/org/taverna/server/localworker/remote/RemoteSecurityContext.java
@@ -8,7 +8,7 @@ package org.taverna.server.localworker.remote;
 import java.net.URI;
 import java.rmi.Remote;
 import java.rmi.RemoteException;
-import java.util.HashMap;
+import java.util.Map;
 
 import edu.umd.cs.findbugs.annotations.NonNull;
 
@@ -18,13 +18,16 @@ import edu.umd.cs.findbugs.annotations.NonNull;
  * @author Donal Fellows
  */
 public interface RemoteSecurityContext extends Remote {
-	void setKeystore(@NonNull byte[] keystore) throws RemoteException, ImplementationException;
+	void setKeystore(@NonNull byte[] keystore) throws RemoteException,
+			ImplementationException;
 
-	void setPassword(@NonNull char[] password) throws RemoteException, ImplementationException;
+	void setPassword(@NonNull char[] password) throws RemoteException,
+			ImplementationException;
 
-	void setTruststore(@NonNull byte[] truststore) throws RemoteException, ImplementationException;
+	void setTruststore(@NonNull byte[] truststore) throws RemoteException,
+			ImplementationException;
 
-	void setUriToAliasMap(@NonNull HashMap<URI, String> uriToAliasMap)
+	void setUriToAliasMap(@NonNull Map<URI, String> uriToAliasMap)
 			throws RemoteException;
 
 	void setHelioToken(@NonNull String helioToken) throws RemoteException;

http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/867242f6/server-unix-forker/src/main/java/org/taverna/server/unixforker/Forker.java
----------------------------------------------------------------------
diff --git a/server-unix-forker/src/main/java/org/taverna/server/unixforker/Forker.java b/server-unix-forker/src/main/java/org/taverna/server/unixforker/Forker.java
index 439c1f0..5319a9e 100644
--- a/server-unix-forker/src/main/java/org/taverna/server/unixforker/Forker.java
+++ b/server-unix-forker/src/main/java/org/taverna/server/unixforker/Forker.java
@@ -45,18 +45,15 @@ public class Forker extends Thread {
 	 */
 	private static void loadPassword(@NonNull File passwordFile)
 			throws IOException {
-		FileReader fr = null;
 		try {
 			err.println("attempting to load password from " + passwordFile);
-			fr = new FileReader(passwordFile);
-			password = new BufferedReader(fr).readLine();
+			try (FileReader fr = new FileReader(passwordFile)) {
+				password = new BufferedReader(fr).readLine();
+			}
 		} catch (IOException e) {
 			err.println("failed to read password from file " + passwordFile
 					+ "described in password.file property");
 			throw e;
-		} finally {
-			if (fr != null)
-				fr.close();
 		}
 	}
 

http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/867242f6/server-webapp/src/main/java/org/taverna/server/master/ContentsDescriptorBuilder.java
----------------------------------------------------------------------
diff --git a/server-webapp/src/main/java/org/taverna/server/master/ContentsDescriptorBuilder.java b/server-webapp/src/main/java/org/taverna/server/master/ContentsDescriptorBuilder.java
index 7955259..f778e3a 100644
--- a/server-webapp/src/main/java/org/taverna/server/master/ContentsDescriptorBuilder.java
+++ b/server-webapp/src/main/java/org/taverna/server/master/ContentsDescriptorBuilder.java
@@ -19,6 +19,7 @@ import java.util.Collection;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Set;
 
 import javax.ws.rs.core.UriBuilder;
 import javax.ws.rs.core.UriInfo;
@@ -89,7 +90,7 @@ public class ContentsDescriptorBuilder {
 
 	private List<Element> inputPorts(Element dataflow)
 			throws XPathExpressionException {
-		List<Element> result = new ArrayList<Element>();
+		List<Element> result = new ArrayList<>();
 		if (dataflow == null)
 			return result;
 		NodeList nl = (NodeList) inputPorts.evaluate(dataflow, NODESET);
@@ -101,7 +102,7 @@ public class ContentsDescriptorBuilder {
 
 	private List<Element> outputPorts(Element dataflow)
 			throws XPathExpressionException {
-		List<Element> result = new ArrayList<Element>();
+		List<Element> result = new ArrayList<>();
 		if (dataflow == null)
 			return result;
 		NodeList nl = (NodeList) outputPorts.evaluate(dataflow, NODESET);
@@ -164,10 +165,7 @@ public class ContentsDescriptorBuilder {
 		Collection<DirectoryEntry> outs = null;
 		try {
 			outs = fileUtils.getDirectory(run, "out").getContents();
-		} catch (FilesystemAccessException e) {
-			log.warn("unexpected failure in construction of output descriptor",
-					e);
-		} catch (NoDirectoryEntryException e) {
+		} catch (FilesystemAccessException | NoDirectoryEntryException e) {
 			log.warn("unexpected failure in construction of output descriptor",
 					e);
 		}
@@ -258,8 +256,7 @@ public class ContentsDescriptorBuilder {
 			throws FilesystemAccessException {
 		ListValue v = new ListValue();
 		v.length = 0;
-		HashSet<DirectoryEntry> contents = new HashSet<DirectoryEntry>(
-				dir.getContents());
+		Set<DirectoryEntry> contents = new HashSet<>(dir.getContents());
 		Iterator<DirectoryEntry> it = contents.iterator();
 		while (it.hasNext())
 			if (!it.next().getName().matches("^[0-9]+([.].*)?$"))

http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/867242f6/server-webapp/src/main/java/org/taverna/server/master/DirectoryREST.java
----------------------------------------------------------------------
diff --git a/server-webapp/src/main/java/org/taverna/server/master/DirectoryREST.java b/server-webapp/src/main/java/org/taverna/server/master/DirectoryREST.java
index c7179b3..3284e57 100644
--- a/server-webapp/src/main/java/org/taverna/server/master/DirectoryREST.java
+++ b/server-webapp/src/main/java/org/taverna/server/master/DirectoryREST.java
@@ -174,7 +174,7 @@ class DirectoryREST implements TavernaServerDirectoryREST, DirectoryBean {
 		else if (!(de instanceof File))
 			throw new FilesystemAccessException("not a directory or file!");
 		File f = (File) de;
-		List<Variant> variants = new ArrayList<Variant>(INITIAL_FILE_VARIANTS);
+		List<Variant> variants = new ArrayList<>(INITIAL_FILE_VARIANTS);
 		String contentType = support.getEstimatedContentType(f);
 		if (!contentType.equals(APPLICATION_OCTET_STREAM)) {
 			String[] ct = contentType.split("/");
@@ -288,7 +288,7 @@ class DirectoryREST implements TavernaServerDirectoryREST, DirectoryBean {
 			throw new FilesystemAccessException(
 					"Cannot create a file that is not in a directory.");
 
-		List<PathSegment> dirPath = new ArrayList<PathSegment>(filePath);
+		List<PathSegment> dirPath = new ArrayList<>(filePath);
 		String name = dirPath.remove(dirPath.size() - 1).getPath();
 		DirectoryEntry de = fileUtils.getDirEntry(run, dirPath);
 		if (!(de instanceof Directory)) {
@@ -324,7 +324,7 @@ class DirectoryREST implements TavernaServerDirectoryREST, DirectoryBean {
 	public Response setFileContents(List<PathSegment> filePath,
 			InputStream contents, UriInfo ui) throws NoDirectoryEntryException,
 			NoUpdateException, FilesystemAccessException {
-		Holder<Boolean> isNew = new Holder<Boolean>(true);
+		Holder<Boolean> isNew = new Holder<>(true);
 		support.copyStreamToFile(contents, getFileForWrite(filePath, isNew));
 
 		if (isNew.value)
@@ -351,7 +351,7 @@ class DirectoryREST implements TavernaServerDirectoryREST, DirectoryBean {
 			return status(422).entity("URI list must have value URL in it")
 					.build();
 		}
-		Holder<Boolean> isNew = new Holder<Boolean>(true);
+		Holder<Boolean> isNew = new Holder<>(true);
 		File f = getFileForWrite(filePath, isNew);
 
 		try {

http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/867242f6/server-webapp/src/main/java/org/taverna/server/master/FileConcatenation.java
----------------------------------------------------------------------
diff --git a/server-webapp/src/main/java/org/taverna/server/master/FileConcatenation.java b/server-webapp/src/main/java/org/taverna/server/master/FileConcatenation.java
index 2f37c28..3893b3d 100644
--- a/server-webapp/src/main/java/org/taverna/server/master/FileConcatenation.java
+++ b/server-webapp/src/main/java/org/taverna/server/master/FileConcatenation.java
@@ -16,7 +16,7 @@ import org.taverna.server.master.interfaces.File;
  * @author Donal Fellows
  */
 public class FileConcatenation implements Iterable<File> {
-	private List<File> files = new ArrayList<File>();
+	private List<File> files = new ArrayList<>();
 
 	public void add(File f) {
 		files.add(f);
@@ -55,9 +55,7 @@ public class FileConcatenation implements Iterable<File> {
 		for (File f : files)
 			try {
 				baos.write(f.getContents(0, -1));
-			} catch (FilesystemAccessException e) {
-				continue;
-			} catch (IOException e) {
+			} catch (FilesystemAccessException | IOException e) {
 				continue;
 			}
 		return baos.toString(encoding);

http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/867242f6/server-webapp/src/main/java/org/taverna/server/master/InputREST.java
----------------------------------------------------------------------
diff --git a/server-webapp/src/main/java/org/taverna/server/master/InputREST.java b/server-webapp/src/main/java/org/taverna/server/master/InputREST.java
index a1a7387..4506cf5 100644
--- a/server-webapp/src/main/java/org/taverna/server/master/InputREST.java
+++ b/server-webapp/src/main/java/org/taverna/server/master/InputREST.java
@@ -152,7 +152,7 @@ class InputREST implements TavernaServerInputREST, InputBean {
 			BadPropertyValueException, FilesystemAccessException {
 		URITemplate tmpl = new URITemplate(ui.getBaseUri()
 				+ "/runs/{runName}/wd/{path:.+}");
-		MultivaluedMap<String, String> mvm = new MetadataMap<String, String>();
+		MultivaluedMap<String, String> mvm = new MetadataMap<>();
 		if (!tmpl.match(ref.contents, mvm)) {
 			throw new BadPropertyValueException(
 					"URI in reference does not refer to local disk resource");

http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/867242f6/server-webapp/src/main/java/org/taverna/server/master/ListenersREST.java
----------------------------------------------------------------------
diff --git a/server-webapp/src/main/java/org/taverna/server/master/ListenersREST.java b/server-webapp/src/main/java/org/taverna/server/master/ListenersREST.java
index a501d65..1d7b89a 100644
--- a/server-webapp/src/main/java/org/taverna/server/master/ListenersREST.java
+++ b/server-webapp/src/main/java/org/taverna/server/master/ListenersREST.java
@@ -78,7 +78,7 @@ abstract class ListenersREST implements TavernaServerListenersREST,
 	@CallCounted
 	@PerfLogged
 	public Listeners getDescription(UriInfo ui) {
-		List<ListenerDescription> result = new ArrayList<ListenerDescription>();
+		List<ListenerDescription> result = new ArrayList<>();
 		UriBuilder ub = secure(ui).path("{name}");
 		for (Listener l : run.getListeners())
 			result.add(new ListenerDescription(l,

http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/867242f6/server-webapp/src/main/java/org/taverna/server/master/TavernaServer.java
----------------------------------------------------------------------
diff --git a/server-webapp/src/main/java/org/taverna/server/master/TavernaServer.java b/server-webapp/src/main/java/org/taverna/server/master/TavernaServer.java
index 27e4255..ddca85c 100644
--- a/server-webapp/src/main/java/org/taverna/server/master/TavernaServer.java
+++ b/server-webapp/src/main/java/org/taverna/server/master/TavernaServer.java
@@ -239,7 +239,7 @@ public abstract class TavernaServer implements TavernaServerSOAP,
 	@CallCounted
 	@PerfLogged
 	public ServerDescription describeService(UriInfo ui) {
-		jaxrsUriInfo.set(new WeakReference<UriInfo>(ui));
+		jaxrsUriInfo.set(new WeakReference<>(ui));
 		return new ServerDescription(ui, resolve(interactionFeed));
 	}
 
@@ -248,7 +248,7 @@ public abstract class TavernaServer implements TavernaServerSOAP,
 	@PerfLogged
 	@RolesAllowed(USER)
 	public RunList listUsersRuns(UriInfo ui) {
-		jaxrsUriInfo.set(new WeakReference<UriInfo>(ui));
+		jaxrsUriInfo.set(new WeakReference<>(ui));
 		return new RunList(runs(), secure(ui).path("{name}"));
 	}
 
@@ -258,7 +258,7 @@ public abstract class TavernaServer implements TavernaServerSOAP,
 	@RolesAllowed(USER)
 	public Response submitWorkflow(Workflow workflow, UriInfo ui)
 			throws NoUpdateException {
-		jaxrsUriInfo.set(new WeakReference<UriInfo>(ui));
+		jaxrsUriInfo.set(new WeakReference<>(ui));
 		checkCreatePolicy(workflow);
 		String name = support.buildWorkflow(workflow);
 		return created(secure(ui).path("{uuid}").build(name)).build();
@@ -270,7 +270,7 @@ public abstract class TavernaServer implements TavernaServerSOAP,
 	@RolesAllowed(USER)
 	public Response submitWorkflowByURL(List<URI> referenceList, UriInfo ui)
 			throws NoCreateException {
-		jaxrsUriInfo.set(new WeakReference<UriInfo>(ui));
+		jaxrsUriInfo.set(new WeakReference<>(ui));
 		if (referenceList == null || referenceList.size() == 0)
 			throw new NoCreateException("no workflow URI supplied");
 		URI workflowURI = referenceList.get(0);
@@ -298,14 +298,14 @@ public abstract class TavernaServer implements TavernaServerSOAP,
 	@RolesAllowed({ USER, SELF })
 	public TavernaServerRunREST getRunResource(String runName, UriInfo ui)
 			throws UnknownRunException {
-		jaxrsUriInfo.set(new WeakReference<UriInfo>(ui));
+		jaxrsUriInfo.set(new WeakReference<>(ui));
 		RunREST rr = makeRunInterface();
 		rr.setRun(support.getRun(runName));
 		rr.setRunName(runName);
 		return rr;
 	}
 
-	private ThreadLocal<Reference<UriInfo>> jaxrsUriInfo = new InheritableThreadLocal<Reference<UriInfo>>();
+	private ThreadLocal<Reference<UriInfo>> jaxrsUriInfo = new InheritableThreadLocal<>();
 
 	private UriInfo getUriInfo() {
 		if (jaxrsUriInfo.get() == null)
@@ -344,7 +344,7 @@ public abstract class TavernaServer implements TavernaServerSOAP,
 	@PerfLogged
 	@RolesAllowed(USER)
 	public RunReference[] listRuns() {
-		ArrayList<RunReference> ws = new ArrayList<RunReference>();
+		ArrayList<RunReference> ws = new ArrayList<>();
 		UriBuilder ub = getRunUriBuilder();
 		for (String runName : runs().keySet())
 			ws.add(new RunReference(runName, ub));
@@ -531,12 +531,9 @@ public abstract class TavernaServer implements TavernaServerSOAP,
 				if (issue.isEmpty())
 					return "unknown reason for partial change";
 				return issue;
-			} catch (RuntimeException re) {
-				log.info("failed to start run " + runName, re);
-				throw re;
-			} catch (NoUpdateException nue) {
-				log.info("failed to start run " + runName, nue);
-				throw nue;
+			} catch (RuntimeException | NoUpdateException e) {
+				log.info("failed to start run " + runName, e);
+				throw e;
 			}
 		} else {
 			w.setStatus(s);
@@ -792,7 +789,7 @@ public abstract class TavernaServer implements TavernaServerSOAP,
 	public PermissionList listRunPermissions(String runName)
 			throws UnknownRunException, NotOwnerException {
 		PermissionList pl = new PermissionList();
-		pl.permission = new ArrayList<PermissionList.SinglePermissionMapping>();
+		pl.permission = new ArrayList<>();
 		Map<String, Permission> perm;
 		try {
 			perm = support.getPermissionMap(getRunSecurityContext(runName,
@@ -801,7 +798,7 @@ public abstract class TavernaServer implements TavernaServerSOAP,
 			log.error("unexpected error from internal API", e);
 			perm = emptyMap();
 		}
-		List<String> users = new ArrayList<String>(perm.keySet());
+		List<String> users = new ArrayList<>(perm.keySet());
 		sort(users);
 		for (String user : users)
 			pl.permission.add(new PermissionList.SinglePermissionMapping(user,
@@ -848,7 +845,7 @@ public abstract class TavernaServer implements TavernaServerSOAP,
 	public DirEntry[] getRunDirectoryContents(String runName, DirEntry d)
 			throws UnknownRunException, FilesystemAccessException,
 			NoDirectoryEntryException {
-		List<DirEntry> result = new ArrayList<DirEntry>();
+		List<DirEntry> result = new ArrayList<>();
 		for (DirectoryEntry e : fileUtils.getDirectory(support.getRun(runName),
 				convert(d)).getContents())
 			result.add(convert(newInstance(null, e)));
@@ -1013,7 +1010,7 @@ public abstract class TavernaServer implements TavernaServerSOAP,
 	@RolesAllowed(USER)
 	public String[] getRunListeners(String runName) throws UnknownRunException {
 		TavernaRun w = support.getRun(runName);
-		List<String> result = new ArrayList<String>();
+		List<String> result = new ArrayList<>();
 		for (Listener l : w.getListeners())
 			result.add(l.getName());
 		return result.toArray(new String[result.size()]);

http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/867242f6/server-webapp/src/main/java/org/taverna/server/master/TavernaServerSupport.java
----------------------------------------------------------------------
diff --git a/server-webapp/src/main/java/org/taverna/server/master/TavernaServerSupport.java b/server-webapp/src/main/java/org/taverna/server/master/TavernaServerSupport.java
index 9b50081..4072e67 100644
--- a/server-webapp/src/main/java/org/taverna/server/master/TavernaServerSupport.java
+++ b/server-webapp/src/main/java/org/taverna/server/master/TavernaServerSupport.java
@@ -612,12 +612,12 @@ public class TavernaServerSupport {
 		permSet = context.getPermittedReaders();
 		if (doRead) {
 			if (!permSet.contains(userName)) {
-				permSet = new HashSet<String>(permSet);
+				permSet = new HashSet<>(permSet);
 				permSet.add(userName);
 				context.setPermittedReaders(permSet);
 			}
 		} else if (permSet.contains(userName)) {
-			permSet = new HashSet<String>(permSet);
+			permSet = new HashSet<>(permSet);
 			permSet.remove(userName);
 			context.setPermittedReaders(permSet);
 		}
@@ -625,12 +625,12 @@ public class TavernaServerSupport {
 		permSet = context.getPermittedUpdaters();
 		if (doWrite) {
 			if (!permSet.contains(userName)) {
-				permSet = new HashSet<String>(permSet);
+				permSet = new HashSet<>(permSet);
 				permSet.add(userName);
 				context.setPermittedUpdaters(permSet);
 			}
 		} else if (permSet.contains(userName)) {
-			permSet = new HashSet<String>(permSet);
+			permSet = new HashSet<>(permSet);
 			permSet.remove(userName);
 			context.setPermittedUpdaters(permSet);
 		}
@@ -638,12 +638,12 @@ public class TavernaServerSupport {
 		permSet = context.getPermittedDestroyers();
 		if (doKill) {
 			if (!permSet.contains(userName)) {
-				permSet = new HashSet<String>(permSet);
+				permSet = new HashSet<>(permSet);
 				permSet.add(userName);
 				context.setPermittedDestroyers(permSet);
 			}
 		} else if (permSet.contains(userName)) {
-			permSet = new HashSet<String>(permSet);
+			permSet = new HashSet<>(permSet);
 			permSet.remove(userName);
 			context.setPermittedDestroyers(permSet);
 		}
@@ -651,7 +651,7 @@ public class TavernaServerSupport {
 
 	public Map<String, Permission> getPermissionMap(
 			TavernaSecurityContext context) {
-		Map<String, Permission> perm = new HashMap<String, Permission>();
+		Map<String, Permission> perm = new HashMap<>();
 		for (String u : context.getPermittedReaders())
 			perm.put(u, Permission.Read);
 		for (String u : context.getPermittedUpdaters())
@@ -902,9 +902,7 @@ public class TavernaServerSupport {
 		for (String name : LOGS) {
 			try {
 				fc.add(fileUtils.getFile(run, name));
-			} catch (FilesystemAccessException e) {
-				// Ignore
-			} catch (NoDirectoryEntryException e) {
+			} catch (FilesystemAccessException | NoDirectoryEntryException e) {
 				// Ignore
 			}
 		}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/867242f6/server-webapp/src/main/java/org/taverna/server/master/admin/Admin.java
----------------------------------------------------------------------
diff --git a/server-webapp/src/main/java/org/taverna/server/master/admin/Admin.java b/server-webapp/src/main/java/org/taverna/server/master/admin/Admin.java
index d8539d1..c0cf0f9 100644
--- a/server-webapp/src/main/java/org/taverna/server/master/admin/Admin.java
+++ b/server-webapp/src/main/java/org/taverna/server/master/admin/Admin.java
@@ -1017,7 +1017,7 @@ public interface Admin {
 	@XmlType(name = "StringList")
 	public static class StringList {
 		@XmlElement
-		public List<String> string = new ArrayList<String>();
+		public List<String> string = new ArrayList<>();
 	}
 
 	/**
@@ -1029,7 +1029,7 @@ public interface Admin {
 	@XmlType(name = "UserList")
 	public static class UserList {
 		@XmlElement
-		public List<URI> user = new ArrayList<URI>();
+		public List<URI> user = new ArrayList<>();
 	}
 
 	@XmlRootElement(name = "userDesc")

http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/867242f6/server-webapp/src/main/java/org/taverna/server/master/admin/AdminBean.java
----------------------------------------------------------------------
diff --git a/server-webapp/src/main/java/org/taverna/server/master/admin/AdminBean.java b/server-webapp/src/main/java/org/taverna/server/master/admin/AdminBean.java
index c91e783..b83d88f 100644
--- a/server-webapp/src/main/java/org/taverna/server/master/admin/AdminBean.java
+++ b/server-webapp/src/main/java/org/taverna/server/master/admin/AdminBean.java
@@ -753,7 +753,7 @@ public class AdminBean implements Admin {
 	@RolesAllowed(ADMIN)
 	@Override
 	public StringList setPermittedWorkflowURIs(StringList permitted) {
-		List<URI> uris = new ArrayList<URI>();
+		List<URI> uris = new ArrayList<>();
 		for (String uri : permitted.string)
 			try {
 				uris.add(myExp.resolve(uri));

http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/867242f6/server-webapp/src/main/java/org/taverna/server/master/common/InputDescription.java
----------------------------------------------------------------------
diff --git a/server-webapp/src/main/java/org/taverna/server/master/common/InputDescription.java b/server-webapp/src/main/java/org/taverna/server/master/common/InputDescription.java
index 5e773a4..bb98d6d 100644
--- a/server-webapp/src/main/java/org/taverna/server/master/common/InputDescription.java
+++ b/server-webapp/src/main/java/org/taverna/server/master/common/InputDescription.java
@@ -35,7 +35,7 @@ public class InputDescription extends VersionedElement {
 	 * The port/value assignment.
 	 */
 	@XmlElement(nillable = false)
-	public List<Port> port = new ArrayList<Port>();
+	public List<Port> port = new ArrayList<>();
 
 	/**
 	 * Make a blank input description.

http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/867242f6/server-webapp/src/main/java/org/taverna/server/master/common/VersionedElement.java
----------------------------------------------------------------------
diff --git a/server-webapp/src/main/java/org/taverna/server/master/common/VersionedElement.java b/server-webapp/src/main/java/org/taverna/server/master/common/VersionedElement.java
index 87d4a19..6eddf2d 100644
--- a/server-webapp/src/main/java/org/taverna/server/master/common/VersionedElement.java
+++ b/server-webapp/src/main/java/org/taverna/server/master/common/VersionedElement.java
@@ -38,19 +38,13 @@ public abstract class VersionedElement {
 	static {
 		Log log = getLog("Taverna.Server.Webapp");
 		Properties p = new Properties();
-		InputStream is = null;
 		try {
-			p.load(is = VersionedElement.class
-					.getResourceAsStream("/version.properties"));
+			try (InputStream is = VersionedElement.class
+					.getResourceAsStream("/version.properties")) {
+				p.load(is);
+			}
 		} catch (IOException e) {
 			log.warn("failed to read /version.properties", e);
-		} finally {
-			try {
-				if (is != null)
-					is.close();
-			} catch (IOException e) {
-				log.warn("failed to close channel", e);
-			}
 		}
 		VERSION = p.getProperty("tavernaserver.version", "unknownVersion");
 		REVISION = String.format("%s (tag: %s)",

http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/867242f6/server-webapp/src/main/java/org/taverna/server/master/common/Workflow.java
----------------------------------------------------------------------
diff --git a/server-webapp/src/main/java/org/taverna/server/master/common/Workflow.java b/server-webapp/src/main/java/org/taverna/server/master/common/Workflow.java
index 6a8960f..9aa3669 100644
--- a/server-webapp/src/main/java/org/taverna/server/master/common/Workflow.java
+++ b/server-webapp/src/main/java/org/taverna/server/master/common/Workflow.java
@@ -88,11 +88,10 @@ public class Workflow implements Serializable,Externalizable {
 			int len = in.readInt();
 			byte[] bytes = new byte[len];
 			in.readFully(bytes);
-			Reader r = new InputStreamReader(new InflaterInputStream(
-					new ByteArrayInputStream(bytes)), ENCODING);
-			Workflow w = (Workflow) unmarshaller.unmarshal(r);
-			r.close();
-			this.content = w.content;
+			try (Reader r = new InputStreamReader(new InflaterInputStream(
+					new ByteArrayInputStream(bytes)), ENCODING)) {
+				this.content = ((Workflow) unmarshaller.unmarshal(r)).content;
+			}
 			return;
 		} catch (JAXBException e) {
 			throw new IOException("failed to unmarshal", e);
@@ -105,10 +104,10 @@ public class Workflow implements Serializable,Externalizable {
 	public void writeExternal(ObjectOutput out) throws IOException {
 		try {
 			ByteArrayOutputStream baos = new ByteArrayOutputStream();
-			OutputStreamWriter w = new OutputStreamWriter(
-					new DeflaterOutputStream(baos), ENCODING);
-			marshaller.marshal(this, w);
-			w.close();
+			try (OutputStreamWriter w = new OutputStreamWriter(
+					new DeflaterOutputStream(baos), ENCODING)) {
+				marshaller.marshal(this, w);
+			}
 			byte[] bytes = baos.toByteArray();
 			out.writeInt(bytes.length);
 			out.write(bytes);

http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/867242f6/server-webapp/src/main/java/org/taverna/server/master/identity/StrippedDownAuthProvider.java
----------------------------------------------------------------------
diff --git a/server-webapp/src/main/java/org/taverna/server/master/identity/StrippedDownAuthProvider.java b/server-webapp/src/main/java/org/taverna/server/master/identity/StrippedDownAuthProvider.java
index fa2f818..06202dc 100644
--- a/server-webapp/src/main/java/org/taverna/server/master/identity/StrippedDownAuthProvider.java
+++ b/server-webapp/src/main/java/org/taverna/server/master/identity/StrippedDownAuthProvider.java
@@ -50,7 +50,7 @@ public class StrippedDownAuthProvider implements AuthenticationProvider {
 	private String userNotFoundEncodedPassword;
 	private UserDetailsService userDetailsService;
 	private PasswordEncoder passwordEncoder;
-	private Map<String, AuthCacheEntry> authCache = new HashMap<String, AuthCacheEntry>();
+	private Map<String, AuthCacheEntry> authCache = new HashMap<>();
 	protected final Log logger = LogFactory.getLog(getClass());
 
 	private static class AuthCacheEntry {

http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/867242f6/server-webapp/src/main/java/org/taverna/server/master/identity/User.java
----------------------------------------------------------------------
diff --git a/server-webapp/src/main/java/org/taverna/server/master/identity/User.java b/server-webapp/src/main/java/org/taverna/server/master/identity/User.java
index d0334cb..bdb6e40 100644
--- a/server-webapp/src/main/java/org/taverna/server/master/identity/User.java
+++ b/server-webapp/src/main/java/org/taverna/server/master/identity/User.java
@@ -64,7 +64,7 @@ public class User implements UserDetails {
 
 	@Override
 	public Collection<GrantedAuthority> getAuthorities() {
-		List<GrantedAuthority> auths = new ArrayList<GrantedAuthority>();
+		List<GrantedAuthority> auths = new ArrayList<>();
 		auths.add(new LiteralGrantedAuthority(USER));
 		if (admin)
 			auths.add(new LiteralGrantedAuthority(ADMIN));

http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/867242f6/server-webapp/src/main/java/org/taverna/server/master/identity/UserStore.java
----------------------------------------------------------------------
diff --git a/server-webapp/src/main/java/org/taverna/server/master/identity/UserStore.java b/server-webapp/src/main/java/org/taverna/server/master/identity/UserStore.java
index 7c759ff..fdd615b 100644
--- a/server-webapp/src/main/java/org/taverna/server/master/identity/UserStore.java
+++ b/server-webapp/src/main/java/org/taverna/server/master/identity/UserStore.java
@@ -61,7 +61,7 @@ public class UserStore extends JDOSupport<User> implements UserDetailsService,
 		log = null;
 	}
 
-	private Map<String, BootstrapUserInfo> base = new HashMap<String, BootstrapUserInfo>();
+	private Map<String, BootstrapUserInfo> base = new HashMap<>();
 	private String defLocalUser;
 	private PasswordEncoder encoder;
 	private volatile int epoch;
@@ -157,7 +157,7 @@ public class UserStore extends JDOSupport<User> implements UserDetailsService,
 	@ManagedOperationParameters(@ManagedOperationParameter(name = "userName", description = "The username to look up."))
 	public Map<String, String> getUserInfo(String userName) {
 		User u = getById(userName);
-		Map<String, String> info = new HashMap<String, String>();
+		Map<String, String> info = new HashMap<>();
 		info.put("name", u.getUsername());
 		info.put("admin", u.isAdmin() ? "yes" : "no");
 		info.put("enabled", u.isEnabled() ? "yes" : "no");
@@ -173,7 +173,7 @@ public class UserStore extends JDOSupport<User> implements UserDetailsService,
 	@PerfLogged
 	@WithinSingleTransaction
 	public List<UserDetails> listUsers() {
-		ArrayList<UserDetails> result = new ArrayList<UserDetails>();
+		ArrayList<UserDetails> result = new ArrayList<>();
 		for (String id : getUsers())
 			result.add(detach(getById(id)));
 		return result;
@@ -324,7 +324,7 @@ public class UserStore extends JDOSupport<User> implements UserDetailsService,
 
 	public static class CachedUserStore implements UserDetailsService {
 		private int epoch;
-		private Map<String, UserDetails> cache = new HashMap<String, UserDetails>();
+		private Map<String, UserDetails> cache = new HashMap<>();
 		private UserStore realStore;
 
 		@Required

http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/867242f6/server-webapp/src/main/java/org/taverna/server/master/identity/WorkflowInternalAuthProvider.java
----------------------------------------------------------------------
diff --git a/server-webapp/src/main/java/org/taverna/server/master/identity/WorkflowInternalAuthProvider.java b/server-webapp/src/main/java/org/taverna/server/master/identity/WorkflowInternalAuthProvider.java
index 82db9d4..d81e692 100644
--- a/server-webapp/src/main/java/org/taverna/server/master/identity/WorkflowInternalAuthProvider.java
+++ b/server-webapp/src/main/java/org/taverna/server/master/identity/WorkflowInternalAuthProvider.java
@@ -78,7 +78,7 @@ public class WorkflowInternalAuthProvider extends
 	}
 
 	public void setAuthorizedAddresses(String[] addresses) {
-		authorizedAddresses = new HashSet<String>(localAddresses);
+		authorizedAddresses = new HashSet<>(localAddresses);
 		for (String s : addresses)
 			authorizedAddresses.add(s);
 	}
@@ -94,7 +94,7 @@ public class WorkflowInternalAuthProvider extends
 		log = null;
 	}
 
-	private final Set<String> localAddresses = new HashSet<String>();
+	private final Set<String> localAddresses = new HashSet<>();
 	private Set<String> authorizedAddresses;
 	{
 		localAddresses.add("127.0.0.1"); // IPv4
@@ -106,7 +106,7 @@ public class WorkflowInternalAuthProvider extends
 		} catch (UnknownHostException e) {
 			// Ignore the exception
 		}
-		authorizedAddresses = new HashSet<String>(localAddresses);
+		authorizedAddresses = new HashSet<>(localAddresses);
 	}
 
 	/**

http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/867242f6/server-webapp/src/main/java/org/taverna/server/master/interaction/InteractionFeedSupport.java
----------------------------------------------------------------------
diff --git a/server-webapp/src/main/java/org/taverna/server/master/interaction/InteractionFeedSupport.java b/server-webapp/src/main/java/org/taverna/server/master/interaction/InteractionFeedSupport.java
index f055868..3a9808b 100644
--- a/server-webapp/src/main/java/org/taverna/server/master/interaction/InteractionFeedSupport.java
+++ b/server-webapp/src/main/java/org/taverna/server/master/interaction/InteractionFeedSupport.java
@@ -141,8 +141,8 @@ public class InteractionFeedSupport {
 
 	private List<DirectoryEntry> listPossibleEntries(TavernaRun run)
 			throws FilesystemAccessException, NoDirectoryEntryException {
-		List<DirectoryEntry> entries = new ArrayList<DirectoryEntry>(utils
-				.getDirectory(run, FEED_DIR).getContentsByDate());
+		List<DirectoryEntry> entries = new ArrayList<>(utils.getDirectory(run,
+				FEED_DIR).getContentsByDate());
 		reverse(entries);
 		return entries;
 	}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/867242f6/server-webapp/src/main/java/org/taverna/server/master/localworker/AbstractRemoteRunFactory.java
----------------------------------------------------------------------
diff --git a/server-webapp/src/main/java/org/taverna/server/master/localworker/AbstractRemoteRunFactory.java b/server-webapp/src/main/java/org/taverna/server/master/localworker/AbstractRemoteRunFactory.java
index 29d17cf..cc0a9fb 100644
--- a/server-webapp/src/main/java/org/taverna/server/master/localworker/AbstractRemoteRunFactory.java
+++ b/server-webapp/src/main/java/org/taverna/server/master/localworker/AbstractRemoteRunFactory.java
@@ -157,14 +157,14 @@ public abstract class AbstractRemoteRunFactory extends RunFactoryConfiguration
 			} catch (IllegalThreadStateException ise) {
 				// Still running!
 			}
-			ObjectInputStream ois = new ObjectInputStream(proc.getInputStream());
-			@SuppressWarnings("unchecked")
-			java.rmi.MarshalledObject<Registry> handle = (MarshalledObject<Registry>) ois
-					.readObject();
-			ois.close();
-			Registry r = handle.get();
-			registryProcess = proc;
-			return r;
+			try (ObjectInputStream ois = new ObjectInputStream(
+					proc.getInputStream())) {
+				@SuppressWarnings("unchecked")
+				Registry r = ((MarshalledObject<Registry>) ois.readObject())
+						.get();
+				registryProcess = proc;
+				return r;
+			}
 		} catch (RemoteException e) {
 			throw e;
 		} catch (ClassNotFoundException e) {
@@ -313,7 +313,7 @@ public abstract class AbstractRemoteRunFactory extends RunFactoryConfiguration
 		} catch (Exception e) {
 			log.warn("failed to get list of listener types", e);
 		}
-		return new ArrayList<String>();
+		return new ArrayList<>();
 	}
 
 	@Override

http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/867242f6/server-webapp/src/main/java/org/taverna/server/master/localworker/ForkRunFactory.java
----------------------------------------------------------------------
diff --git a/server-webapp/src/main/java/org/taverna/server/master/localworker/ForkRunFactory.java b/server-webapp/src/main/java/org/taverna/server/master/localworker/ForkRunFactory.java
index 2c19ec1..d2ec9a8 100644
--- a/server-webapp/src/main/java/org/taverna/server/master/localworker/ForkRunFactory.java
+++ b/server-webapp/src/main/java/org/taverna/server/master/localworker/ForkRunFactory.java
@@ -192,9 +192,7 @@ public class ForkRunFactory extends AbstractRemoteRunFactory implements
 		try {
 			// Validate registry connection first
 			getTheRegistry().list();
-		} catch (ConnectException ce) {
-			log.warn("connection problems with registry", ce);
-		} catch (ConnectIOException e) {
+		} catch (ConnectException | ConnectIOException e) {
 			log.warn("connection problems with registry", e);
 		}
 		RemoteRunFactory rrf = (RemoteRunFactory) getTheRegistry().lookup(name);
@@ -360,9 +358,7 @@ public class ForkRunFactory extends AbstractRemoteRunFactory implements
 			initFactory();
 			try {
 				return getRealRun(creator, wf, id);
-			} catch (ConnectException e) {
-				// factory was lost; try to recreate
-			} catch (ConnectIOException e) {
+			} catch (ConnectException | ConnectIOException e) {
 				// factory was lost; try to recreate
 			}
 			killFactory();

http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/867242f6/server-webapp/src/main/java/org/taverna/server/master/localworker/IdAwareForkRunFactory.java
----------------------------------------------------------------------
diff --git a/server-webapp/src/main/java/org/taverna/server/master/localworker/IdAwareForkRunFactory.java b/server-webapp/src/main/java/org/taverna/server/master/localworker/IdAwareForkRunFactory.java
index fd6efc7..1564af3 100644
--- a/server-webapp/src/main/java/org/taverna/server/master/localworker/IdAwareForkRunFactory.java
+++ b/server-webapp/src/main/java/org/taverna/server/master/localworker/IdAwareForkRunFactory.java
@@ -73,8 +73,8 @@ public class IdAwareForkRunFactory extends AbstractRemoteRunFactory implements
 	 *             Shouldn't happen.
 	 */
 	public IdAwareForkRunFactory() throws JAXBException {
-		factory = new HashMap<String, RemoteRunFactory>();
-		factoryProcessName = new HashMap<String, String>();
+		factory = new HashMap<>();
+		factoryProcessName = new HashMap<>();
 	}
 
 	@Override
@@ -119,9 +119,8 @@ public class IdAwareForkRunFactory extends AbstractRemoteRunFactory implements
 	@Override
 	@ManagedAttribute(description = "The mapping of user names to RMI factory IDs.", currencyTimeLimit = 60)
 	public String[] getFactoryProcessMapping() {
-		ArrayList<String> result = new ArrayList<String>();
-		ArrayList<String> keys = new ArrayList<String>(
-				factoryProcessName.keySet());
+		ArrayList<String> result = new ArrayList<>();
+		ArrayList<String> keys = new ArrayList<>(factoryProcessName.keySet());
 		String[] ks = keys.toArray(new String[keys.size()]);
 		Arrays.sort(ks);
 		for (String k : ks) {
@@ -296,9 +295,7 @@ public class IdAwareForkRunFactory extends AbstractRemoteRunFactory implements
 				initFactory(username);
 			try {
 				return getRealRun(creator, username, wf, id);
-			} catch (ConnectException e) {
-				// factory was lost; try to recreate
-			} catch (ConnectIOException e) {
+			} catch (ConnectException | ConnectIOException e) {
 				// factory was lost; try to recreate
 			}
 			factory.remove(username);
@@ -509,9 +506,7 @@ class SecureFork implements IdAwareForkRunFactory.MetaFactory {
 	public RemoteRunFactory make(String username) throws Exception {
 		try {
 			main.getTheRegistry().list(); // Validate registry connection first
-		} catch (ConnectException e) {
-			log.warn("connection problems with registry", e);
-		} catch (ConnectIOException e) {
+		} catch (ConnectException | ConnectIOException e) {
 			log.warn("connection problems with registry", e);
 		} catch (RemoteException e) {
 			if (e.getCause() != null && e.getCause() instanceof Exception) {

http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/867242f6/server-webapp/src/main/java/org/taverna/server/master/localworker/PersistedState.java
----------------------------------------------------------------------
diff --git a/server-webapp/src/main/java/org/taverna/server/master/localworker/PersistedState.java b/server-webapp/src/main/java/org/taverna/server/master/localworker/PersistedState.java
index 832dc51..83d6bda 100644
--- a/server-webapp/src/main/java/org/taverna/server/master/localworker/PersistedState.java
+++ b/server-webapp/src/main/java/org/taverna/server/master/localworker/PersistedState.java
@@ -220,8 +220,8 @@ class PersistedState implements WorkerModel {
 	public List<URI> getPermittedWorkflowURIs() {
 		String[] pw = this.permittedWorkflows;
 		if (pw == null)
-			return new ArrayList<URI>();
-		List<URI> uris = new ArrayList<URI>(pw.length);
+			return new ArrayList<>();
+		List<URI> uris = new ArrayList<>(pw.length);
 		for (String uri : pw)
 			uris.add(URI.create(uri));
 		return uris;

http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/867242f6/server-webapp/src/main/java/org/taverna/server/master/notification/NotificationEngine.java
----------------------------------------------------------------------
diff --git a/server-webapp/src/main/java/org/taverna/server/master/notification/NotificationEngine.java b/server-webapp/src/main/java/org/taverna/server/master/notification/NotificationEngine.java
index f5eeb54..bc0f60d 100644
--- a/server-webapp/src/main/java/org/taverna/server/master/notification/NotificationEngine.java
+++ b/server-webapp/src/main/java/org/taverna/server/master/notification/NotificationEngine.java
@@ -34,7 +34,7 @@ public class NotificationEngine {
 	 */
 	@Required
 	public void setDispatchers(List<MessageDispatcher> dispatchers) {
-		this.dispatchers = new HashMap<String, MessageDispatcher>();
+		this.dispatchers = new HashMap<>();
 		for (MessageDispatcher d : dispatchers)
 			this.dispatchers.put(d.getName(), d);
 	}
@@ -116,7 +116,7 @@ public class NotificationEngine {
 				URI toURI = new URI(destination.trim());
 				dispatchToChosenTarget(originator, toURI.getScheme(),
 						toURI.getSchemeSpecificPart(), message);
-			} catch (java.net.URISyntaxException e) {
+			} catch (URISyntaxException e) {
 				// Ignore
 			}
 		}
@@ -128,7 +128,7 @@ public class NotificationEngine {
 	 *         disabled by configuration somewhere).
 	 */
 	public List<String> listAvailableDispatchers() {
-		ArrayList<String> result = new ArrayList<String>();
+		ArrayList<String> result = new ArrayList<>();
 		for (Map.Entry<String, MessageDispatcher> entry : dispatchers
 				.entrySet()) {
 			if (entry.getValue().isAvailable())

http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/867242f6/server-webapp/src/main/java/org/taverna/server/master/notification/RateLimitedDispatcher.java
----------------------------------------------------------------------
diff --git a/server-webapp/src/main/java/org/taverna/server/master/notification/RateLimitedDispatcher.java b/server-webapp/src/main/java/org/taverna/server/master/notification/RateLimitedDispatcher.java
index 704698a..c8d7ef6 100644
--- a/server-webapp/src/main/java/org/taverna/server/master/notification/RateLimitedDispatcher.java
+++ b/server-webapp/src/main/java/org/taverna/server/master/notification/RateLimitedDispatcher.java
@@ -24,7 +24,7 @@ public abstract class RateLimitedDispatcher implements MessageDispatcher {
 	/** Pre-configured logger. */
 	protected Log log = LogFactory.getLog("Taverna.Server.Notification");
 	private int cooldownSeconds;
-	private Map<String, DateTime> lastSend = new HashMap<String, DateTime>();
+	private Map<String, DateTime> lastSend = new HashMap<>();
 
 	String valid(String value, String def) {
 		if (value == null || value.trim().isEmpty()

http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/867242f6/server-webapp/src/main/java/org/taverna/server/master/notification/SMSDispatcher.java
----------------------------------------------------------------------
diff --git a/server-webapp/src/main/java/org/taverna/server/master/notification/SMSDispatcher.java b/server-webapp/src/main/java/org/taverna/server/master/notification/SMSDispatcher.java
index b346c4b..5553141 100644
--- a/server-webapp/src/main/java/org/taverna/server/master/notification/SMSDispatcher.java
+++ b/server-webapp/src/main/java/org/taverna/server/master/notification/SMSDispatcher.java
@@ -136,7 +136,7 @@ public class SMSDispatcher extends RateLimitedDispatcher {
 			return;
 
 		// Build the message to send
-		List<NameValuePair> params = new ArrayList<NameValuePair>();
+		List<NameValuePair> params = new ArrayList<>();
 		params.add(new BasicNameValuePair(usernameField, user));
 		params.add(new BasicNameValuePair(passwordField, pass));
 		params.add(new BasicNameValuePair(destinationField, targetParameter));
@@ -149,14 +149,10 @@ public class SMSDispatcher extends RateLimitedDispatcher {
 
 		// Log the response
 		HttpEntity entity = response.getEntity();
-		if (entity != null) {
-			BufferedReader e = new BufferedReader(new InputStreamReader(
-					entity.getContent()));
-			try {
+		if (entity != null)
+			try (BufferedReader e = new BufferedReader(new InputStreamReader(
+					entity.getContent()))) {
 				log.info(e.readLine());
-			} finally {
-				e.close();
 			}
-		}
 	}
 }

http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/867242f6/server-webapp/src/main/java/org/taverna/server/master/notification/atom/EventDAO.java
----------------------------------------------------------------------
diff --git a/server-webapp/src/main/java/org/taverna/server/master/notification/atom/EventDAO.java b/server-webapp/src/main/java/org/taverna/server/master/notification/atom/EventDAO.java
index 19638f2..eec44f7 100644
--- a/server-webapp/src/main/java/org/taverna/server/master/notification/atom/EventDAO.java
+++ b/server-webapp/src/main/java/org/taverna/server/master/notification/atom/EventDAO.java
@@ -72,7 +72,7 @@ public class EventDAO extends JDOSupport<Event> implements MessageDispatcher {
 		if (log.isDebugEnabled())
 			log.debug("found " + ids.size() + " events for user " + user);
 
-		List<Event> result = new ArrayList<Event>();
+		List<Event> result = new ArrayList<>();
 		for (String id : ids) {
 			Event event = getById(id);
 			result.add(detach(event));
@@ -139,7 +139,7 @@ public class EventDAO extends JDOSupport<Event> implements MessageDispatcher {
 		return true;
 	}
 
-	private BlockingQueue<Event> insertQueue = new ArrayBlockingQueue<Event>(16);
+	private BlockingQueue<Event> insertQueue = new ArrayBlockingQueue<>(16);
 
 	@Override
 	public void dispatch(TavernaRun originator, String messageSubject,
@@ -163,7 +163,7 @@ public class EventDAO extends JDOSupport<Event> implements MessageDispatcher {
 			public void run() {
 				try {
 					while (true) {
-						ArrayList<Event> e = new ArrayList<Event>();
+						ArrayList<Event> e = new ArrayList<>();
 						e.add(insertQueue.take());
 						insertQueue.drainTo(e);
 						dao.storeEvents(e);

http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/867242f6/server-webapp/src/main/java/org/taverna/server/master/rest/DirectoryContents.java
----------------------------------------------------------------------
diff --git a/server-webapp/src/main/java/org/taverna/server/master/rest/DirectoryContents.java b/server-webapp/src/main/java/org/taverna/server/master/rest/DirectoryContents.java
index 93e84e7..e01d1c4 100644
--- a/server-webapp/src/main/java/org/taverna/server/master/rest/DirectoryContents.java
+++ b/server-webapp/src/main/java/org/taverna/server/master/rest/DirectoryContents.java
@@ -41,7 +41,7 @@ public class DirectoryContents {
 	 * Make an empty directory description. Required for JAXB.
 	 */
 	public DirectoryContents() {
-		contents = new ArrayList<DirEntryReference>();
+		contents = new ArrayList<>();
 	}
 
 	/**
@@ -53,7 +53,7 @@ public class DirectoryContents {
 	 *            The real directory contents that we are to describe.
 	 */
 	public DirectoryContents(UriInfo ui, Collection<DirectoryEntry> collection) {
-		contents = new ArrayList<DirEntryReference>();
+		contents = new ArrayList<>();
 		UriBuilder ub = secure(ui).path("{filename}");
 		for (DirectoryEntry e : collection)
 			contents.add(DirEntryReference.newInstance(ub, e));

http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/867242f6/server-webapp/src/main/java/org/taverna/server/master/rest/TavernaServerInputREST.java
----------------------------------------------------------------------
diff --git a/server-webapp/src/main/java/org/taverna/server/master/rest/TavernaServerInputREST.java b/server-webapp/src/main/java/org/taverna/server/master/rest/TavernaServerInputREST.java
index 14aad3f..94f5071 100644
--- a/server-webapp/src/main/java/org/taverna/server/master/rest/TavernaServerInputREST.java
+++ b/server-webapp/src/main/java/org/taverna/server/master/rest/TavernaServerInputREST.java
@@ -241,7 +241,7 @@ public interface TavernaServerInputREST {
 			super(true);
 			expected = new Uri(ui, EXPECTED);
 			baclava = new Uri(ui, BACLAVA);
-			input = new ArrayList<Uri>();
+			input = new ArrayList<>();
 			for (Input i : run.getInputs())
 				input.add(new Uri(ui, ONE_INPUT, i.getName()));
 		}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/867242f6/server-webapp/src/main/java/org/taverna/server/master/rest/TavernaServerListenersREST.java
----------------------------------------------------------------------
diff --git a/server-webapp/src/main/java/org/taverna/server/master/rest/TavernaServerListenersREST.java b/server-webapp/src/main/java/org/taverna/server/master/rest/TavernaServerListenersREST.java
index ca7e646..b868230 100644
--- a/server-webapp/src/main/java/org/taverna/server/master/rest/TavernaServerListenersREST.java
+++ b/server-webapp/src/main/java/org/taverna/server/master/rest/TavernaServerListenersREST.java
@@ -309,9 +309,9 @@ public interface TavernaServerListenersREST {
 			type = listener.getType();
 			configuration = new Uri(ub.clone().path("configuration"));
 			UriBuilder ub2 = ub.clone().path("properties/{prop}");
-			properties = new ArrayList<PropertyDescription>(
-					listener.listProperties().length);
-			for (String propName : listener.listProperties())
+			String[] props = listener.listProperties();
+			properties = new ArrayList<>(props.length);
+			for (String propName : props)
 				properties.add(new PropertyDescription(propName, ub2));
 		}
 	}
@@ -369,7 +369,7 @@ public interface TavernaServerListenersREST {
 		 * Make a blank description of listeners.
 		 */
 		public Listeners() {
-			listener = new ArrayList<ListenerDescription>();
+			listener = new ArrayList<>();
 		}
 
 		/**
@@ -421,7 +421,7 @@ public interface TavernaServerListenersREST {
 		 */
 		public Properties(UriBuilder ub, String[] properties) {
 			super(true);
-			property = new ArrayList<PropertyDescription>(properties.length);
+			property = new ArrayList<>(properties.length);
 			for (String propName : properties)
 				property.add(new PropertyDescription(propName, ub));
 		}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/867242f6/server-webapp/src/main/java/org/taverna/server/master/rest/TavernaServerREST.java
----------------------------------------------------------------------
diff --git a/server-webapp/src/main/java/org/taverna/server/master/rest/TavernaServerREST.java b/server-webapp/src/main/java/org/taverna/server/master/rest/TavernaServerREST.java
index f5c379c..b25a39a 100644
--- a/server-webapp/src/main/java/org/taverna/server/master/rest/TavernaServerREST.java
+++ b/server-webapp/src/main/java/org/taverna/server/master/rest/TavernaServerREST.java
@@ -429,7 +429,7 @@ public interface TavernaServerREST {
 		@XmlType(name = "")
 		public static class CapabilityList {
 			@XmlElement(name = "capability", namespace = SERVER)
-			public List<Capability> capability = new ArrayList<Capability>();
+			public List<Capability> capability = new ArrayList<>();
 		}
 	}
 
@@ -449,7 +449,7 @@ public interface TavernaServerREST {
 		 * Make an empty list of permitted workflows.
 		 */
 		public PermittedWorkflows() {
-			workflow = new ArrayList<URI>();
+			workflow = new ArrayList<>();
 		}
 
 		/**
@@ -459,9 +459,9 @@ public interface TavernaServerREST {
 		 */
 		public PermittedWorkflows(List<URI> permitted) {
 			if (permitted == null)
-				workflow = new ArrayList<URI>();
+				workflow = new ArrayList<>();
 			else
-				workflow = new ArrayList<URI>(permitted);
+				workflow = new ArrayList<>(permitted);
 		}
 	}
 
@@ -481,7 +481,7 @@ public interface TavernaServerREST {
 		 * Make an empty list of permitted listener types.
 		 */
 		public PermittedListeners() {
-			type = new ArrayList<String>();
+			type = new ArrayList<>();
 		}
 
 		/**
@@ -510,7 +510,7 @@ public interface TavernaServerREST {
 		 * Make an empty list of run references.
 		 */
 		public RunList() {
-			run = new ArrayList<RunReference>();
+			run = new ArrayList<>();
 		}
 
 		/**
@@ -523,7 +523,7 @@ public interface TavernaServerREST {
 		 *            secured as it needs to have its pattern applied.
 		 */
 		public RunList(Map<String, TavernaRun> runs, UriBuilder ub) {
-			run = new ArrayList<RunReference>(runs.size());
+			run = new ArrayList<>(runs.size());
 			for (String name : runs.keySet())
 				run.add(new RunReference(name, ub));
 		}
@@ -545,7 +545,7 @@ public interface TavernaServerREST {
 		 * Make an empty list of enabled notifiers.
 		 */
 		public EnabledNotificationFabrics() {
-			notifier = new ArrayList<String>();
+			notifier = new ArrayList<>();
 		}
 
 		/**

http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/867242f6/server-webapp/src/main/java/org/taverna/server/master/rest/TavernaServerRunREST.java
----------------------------------------------------------------------
diff --git a/server-webapp/src/main/java/org/taverna/server/master/rest/TavernaServerRunREST.java b/server-webapp/src/main/java/org/taverna/server/master/rest/TavernaServerRunREST.java
index e95533d..80f27ae 100644
--- a/server-webapp/src/main/java/org/taverna/server/master/rest/TavernaServerRunREST.java
+++ b/server-webapp/src/main/java/org/taverna/server/master/rest/TavernaServerRunREST.java
@@ -686,7 +686,7 @@ public interface TavernaServerRunREST {
 			 * An empty description of listeners.
 			 */
 			public ListenerList() {
-				listener = new ArrayList<Uri>();
+				listener = new ArrayList<>();
 			}
 
 			/**
@@ -697,7 +697,7 @@ public interface TavernaServerRunREST {
 			 */
 			private ListenerList(TavernaRun r, UriBuilder ub) {
 				super(ub);
-				listener = new ArrayList<Uri>(r.getListeners().size());
+				listener = new ArrayList<>(r.getListeners().size());
 				UriBuilder pathUB = ub.clone().path("{name}");
 				for (Listener l : r.getListeners())
 					listener.add(new Uri(pathUB.build(l.getName())));

http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/867242f6/server-webapp/src/main/java/org/taverna/server/master/rest/TavernaServerSecurityREST.java
----------------------------------------------------------------------
diff --git a/server-webapp/src/main/java/org/taverna/server/master/rest/TavernaServerSecurityREST.java b/server-webapp/src/main/java/org/taverna/server/master/rest/TavernaServerSecurityREST.java
index 742caaa..c76f54b 100644
--- a/server-webapp/src/main/java/org/taverna/server/master/rest/TavernaServerSecurityREST.java
+++ b/server-webapp/src/main/java/org/taverna/server/master/rest/TavernaServerSecurityREST.java
@@ -528,7 +528,7 @@ public interface TavernaServerSecurityREST {
 			public URI href;
 			/** Descriptions of the credentials themselves. */
 			@XmlElement
-			public List<CredentialHolder> credential = new ArrayList<CredentialHolder>();
+			public List<CredentialHolder> credential = new ArrayList<>();
 
 			public Credentials() {
 			}
@@ -639,7 +639,7 @@ public interface TavernaServerSecurityREST {
 		/** The descriptions of the credentials */
 		@XmlElement
 		@NonNull
-		public List<CredentialHolder> credential = new ArrayList<CredentialHolder>();
+		public List<CredentialHolder> credential = new ArrayList<>();
 
 		public CredentialList() {
 		}
@@ -750,9 +750,8 @@ public interface TavernaServerSecurityREST {
 		 */
 		public PermissionsDescription(@NonNull UriBuilder ub,
 				@NonNull Map<String, Permission> permissionMap) {
-			permission = new ArrayList<LinkedPermissionDescription>();
-			List<String> userNames = new ArrayList<String>(
-					permissionMap.keySet());
+			permission = new ArrayList<>();
+			List<String> userNames = new ArrayList<>(permissionMap.keySet());
 			Collections.sort(userNames);
 			for (String user : userNames)
 				permission.add(new LinkedPermissionDescription(ub, user,

http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/867242f6/server-webapp/src/main/java/org/taverna/server/master/rest/handler/EntryHandler.java
----------------------------------------------------------------------
diff --git a/server-webapp/src/main/java/org/taverna/server/master/rest/handler/EntryHandler.java b/server-webapp/src/main/java/org/taverna/server/master/rest/handler/EntryHandler.java
index 8673d1a..20d9f56 100644
--- a/server-webapp/src/main/java/org/taverna/server/master/rest/handler/EntryHandler.java
+++ b/server-webapp/src/main/java/org/taverna/server/master/rest/handler/EntryHandler.java
@@ -2,6 +2,7 @@ package org.taverna.server.master.rest.handler;
 
 import static java.util.Arrays.asList;
 import static java.util.Collections.singletonMap;
+import static javax.ws.rs.core.Response.notAcceptable;
 
 import java.io.IOException;
 import java.io.InputStream;
@@ -19,7 +20,6 @@ import javax.ws.rs.Produces;
 import javax.ws.rs.WebApplicationException;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.MultivaluedMap;
-import javax.ws.rs.core.Response;
 import javax.ws.rs.core.Variant;
 import javax.ws.rs.ext.MessageBodyReader;
 import javax.ws.rs.ext.MessageBodyWriter;
@@ -40,7 +40,8 @@ public class EntryHandler implements MessageBodyWriter<Entry>,
 	private static final String ENC = "UTF-8";
 	private static final MediaType ENTRY = new MediaType("application",
 			"atom+xml", singletonMap("type", "entry"));
-	private static final Variant VARIANT = new Variant(ENTRY, (String) null, ENC);
+	private static final Variant VARIANT = new Variant(ENTRY, (String) null,
+			ENC);
 	private static final Charset UTF8 = Charset.forName(ENC);
 
 	@Required
@@ -76,26 +77,23 @@ public class EntryHandler implements MessageBodyWriter<Entry>,
 			if (charset != null)
 				cs = Charset.forName(charset);
 		} catch (IllegalCharsetNameException e) {
-			throw new WebApplicationException(Response
-					.notAcceptable(asList(VARIANT)).entity("bad charset name")
-					.build());
+			throw new WebApplicationException(notAcceptable(asList(VARIANT))
+					.entity("bad charset name").build());
 		} catch (UnsupportedCharsetException e) {
-			throw new WebApplicationException(Response
-					.notAcceptable(asList(VARIANT))
+			throw new WebApplicationException(notAcceptable(asList(VARIANT))
 					.entity("unsupportd charset name").build());
 		}
 		try {
 			Document<Entry> doc = parser.parse(new InputStreamReader(
 					entityStream, cs));
 			if (!Entry.class.isAssignableFrom(doc.getRoot().getClass())) {
-				throw new WebApplicationException(Response
-						.notAcceptable(asList(VARIANT))
-						.entity("not really a feed entry").build());
+				throw new WebApplicationException(
+						notAcceptable(asList(VARIANT)).entity(
+								"not really a feed entry").build());
 			}
 			return doc.getRoot();
 		} catch (ClassCastException e) {
-			throw new WebApplicationException(Response
-					.notAcceptable(asList(VARIANT))
+			throw new WebApplicationException(notAcceptable(asList(VARIANT))
 					.entity("not really a feed entry").build());
 
 		}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/867242f6/server-webapp/src/main/java/org/taverna/server/master/rest/handler/URIListHandler.java
----------------------------------------------------------------------
diff --git a/server-webapp/src/main/java/org/taverna/server/master/rest/handler/URIListHandler.java b/server-webapp/src/main/java/org/taverna/server/master/rest/handler/URIListHandler.java
index 39c1062..378eee8 100644
--- a/server-webapp/src/main/java/org/taverna/server/master/rest/handler/URIListHandler.java
+++ b/server-webapp/src/main/java/org/taverna/server/master/rest/handler/URIListHandler.java
@@ -67,7 +67,7 @@ public class URIListHandler implements MessageBodyReader<List<URI>>,
 				.forName(enc);
 		BufferedReader br = new BufferedReader(new InputStreamReader(
 				entityStream, c));
-		ArrayList<URI> uris = new ArrayList<URI>();
+		ArrayList<URI> uris = new ArrayList<>();
 		String line;
 		while ((line = br.readLine()) != null) {
 			if (line.startsWith("#"))

http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/867242f6/server-webapp/src/main/java/org/taverna/server/master/soap/FileContents.java
----------------------------------------------------------------------
diff --git a/server-webapp/src/main/java/org/taverna/server/master/soap/FileContents.java b/server-webapp/src/main/java/org/taverna/server/master/soap/FileContents.java
index a3dc591..7ebc991 100644
--- a/server-webapp/src/main/java/org/taverna/server/master/soap/FileContents.java
+++ b/server-webapp/src/main/java/org/taverna/server/master/soap/FileContents.java
@@ -55,8 +55,7 @@ public class FileContents {
 	 */
 	public void writeToFile(File file) throws IOException,
 			FilesystemAccessException {
-		InputStream is = fileData.getInputStream();
-		try {
+		try (InputStream is = fileData.getInputStream()) {
 			byte[] buf = new byte[65536];
 			file.setContents(new byte[0]);
 			while (true) {
@@ -71,8 +70,6 @@ public class FileContents {
 					file.appendContents(shortbuf);
 				}
 			}
-		} finally {
-			is.close();
 		}
 	}
 }

http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/867242f6/server-webapp/src/main/java/org/taverna/server/master/usage/UsageRecordRecorder.java
----------------------------------------------------------------------
diff --git a/server-webapp/src/main/java/org/taverna/server/master/usage/UsageRecordRecorder.java b/server-webapp/src/main/java/org/taverna/server/master/usage/UsageRecordRecorder.java
index 5fe87fe..16f8689 100644
--- a/server-webapp/src/main/java/org/taverna/server/master/usage/UsageRecordRecorder.java
+++ b/server-webapp/src/main/java/org/taverna/server/master/usage/UsageRecordRecorder.java
@@ -83,9 +83,8 @@ public class UsageRecordRecorder extends JDOSupport<UsageRecord> {
 	 */
 	public void storeUsageRecord(String usageRecord) {
 		String logfile = state.getUsageRecordLogFile();
-		if (logfile == null) {
-			logfile = logFile;
-		}
+		if (logfile == null)
+			logfile = this.logFile;
 		if (logfile != null) {
 			logfile = contextualizer.contextualize(logfile);
 			synchronized (lock) {
@@ -144,7 +143,7 @@ public class UsageRecordRecorder extends JDOSupport<UsageRecord> {
 		@SuppressWarnings("unchecked")
 		Collection<String> urs = (Collection<String>) namedQuery("allByDate")
 				.execute();
-		List<JobUsageRecord> result = new ArrayList<JobUsageRecord>();
+		List<JobUsageRecord> result = new ArrayList<>();
 		for (String ur : urs)
 			try {
 				result.add(JobUsageRecord.unmarshal(ur));

http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/867242f6/server-webapp/src/main/java/org/taverna/server/master/utils/CapabilityLister.java
----------------------------------------------------------------------
diff --git a/server-webapp/src/main/java/org/taverna/server/master/utils/CapabilityLister.java b/server-webapp/src/main/java/org/taverna/server/master/utils/CapabilityLister.java
index 440f2b2..54b0420 100644
--- a/server-webapp/src/main/java/org/taverna/server/master/utils/CapabilityLister.java
+++ b/server-webapp/src/main/java/org/taverna/server/master/utils/CapabilityLister.java
@@ -24,16 +24,15 @@ public class CapabilityLister {
 
 	@PostConstruct
 	void loadCapabilities() throws IOException {
-		InputStream is = getClass().getResourceAsStream(
-				CAPABILITY_RESOURCE_FILE);
-		if (is != null) {
-			properties.load(is);
-			is.close();
+		try (InputStream is = getClass().getResourceAsStream(
+				CAPABILITY_RESOURCE_FILE)) {
+			if (is != null)
+				properties.load(is);
 		}
 	}
 
 	public List<Capability> getCapabilities() {
-		List<Capability> caps = new ArrayList<Capability>();
+		List<Capability> caps = new ArrayList<>();
 		for (Entry<Object, Object> entry : properties.entrySet()) {
 			Capability c = new Capability();
 			c.capability = URI.create(entry.getKey().toString());

http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/867242f6/server-webapp/src/main/java/org/taverna/server/master/utils/CertificateChainFetcher.java
----------------------------------------------------------------------
diff --git a/server-webapp/src/main/java/org/taverna/server/master/utils/CertificateChainFetcher.java b/server-webapp/src/main/java/org/taverna/server/master/utils/CertificateChainFetcher.java
index 8ac34d0..f94d497 100644
--- a/server-webapp/src/main/java/org/taverna/server/master/utils/CertificateChainFetcher.java
+++ b/server-webapp/src/main/java/org/taverna/server/master/utils/CertificateChainFetcher.java
@@ -111,7 +111,7 @@ public class CertificateChainFetcher {
 		TrustManagerFactory tmf = TrustManagerFactory.getInstance(algorithm);
 		ks.load(null, null);
 		tmf.init(ks);
-		final Holder<X509Certificate[]> chain = new Holder<X509Certificate[]>();
+		final Holder<X509Certificate[]> chain = new Holder<>();
 		final X509TrustManager defaultTrustManager = (X509TrustManager) tmf
 				.getTrustManagers()[0];
 		context.init(null, new TrustManager[] { new X509TrustManager() {
@@ -134,18 +134,16 @@ public class CertificateChainFetcher {
 			}
 		} }, null);
 		SSLSocketFactory factory = context.getSocketFactory();
-		SSLSocket socket = (SSLSocket) factory.createSocket(host, port);
-		socket.setSoTimeout(timeout);
-		try {
+		try (SSLSocket socket = (SSLSocket) factory.createSocket(host, port)) {
+			socket.setSoTimeout(timeout);
 			socket.startHandshake();
-			socket.close();
 		} catch (SSLException e) {
 			// Ignore
 		}
 		return chain.value;
 	}
 
-	private Map<URI, List<X509Certificate>> cache = new HashMap<URI, List<X509Certificate>>();
+	private Map<URI, List<X509Certificate>> cache = new HashMap<>();
 
 	/**
 	 * Gets the certificate chain for a service identified by URI.

http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/867242f6/server-webapp/src/main/java/org/taverna/server/master/utils/X500Utils.java
----------------------------------------------------------------------
diff --git a/server-webapp/src/main/java/org/taverna/server/master/utils/X500Utils.java b/server-webapp/src/main/java/org/taverna/server/master/utils/X500Utils.java
index 7ea073c..da4cff0 100644
--- a/server-webapp/src/main/java/org/taverna/server/master/utils/X500Utils.java
+++ b/server-webapp/src/main/java/org/taverna/server/master/utils/X500Utils.java
@@ -10,6 +10,7 @@ import static javax.security.auth.x500.X500Principal.RFC2253;
 import java.math.BigInteger;
 import java.security.cert.X509Certificate;
 import java.util.HashMap;
+import java.util.Map;
 
 import javax.annotation.PreDestroy;
 import javax.security.auth.x500.X500Principal;
@@ -53,7 +54,7 @@ public class X500Utils {
 		int startIndex = 0;
 		boolean ignoreThisChar = false;
 		boolean inQuotes = false;
-		HashMap<String, String> tokenized = new HashMap<String, String>();
+		Map<String, String> tokenized = new HashMap<>();
 
 		for (i = 0; i < dn.length(); i++)
 			if (ignoreThisChar)
@@ -82,7 +83,7 @@ public class X500Utils {
 		return "none";
 	}
 
-	private void storeDNField(HashMap<String, String> container, String[] split) {
+	private void storeDNField(Map<String, String> container, String[] split) {
 		if (split == null || split.length != 2)
 			return;
 		String key = split[0].toUpperCase();

http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/867242f6/server-webapp/src/main/java/org/taverna/server/master/worker/RemoteRunDelegate.java
----------------------------------------------------------------------
diff --git a/server-webapp/src/main/java/org/taverna/server/master/worker/RemoteRunDelegate.java b/server-webapp/src/main/java/org/taverna/server/master/worker/RemoteRunDelegate.java
index 44a2b3a..d5b1ca8 100644
--- a/server-webapp/src/main/java/org/taverna/server/master/worker/RemoteRunDelegate.java
+++ b/server-webapp/src/main/java/org/taverna/server/master/worker/RemoteRunDelegate.java
@@ -182,9 +182,7 @@ public class RemoteRunDelegate implements TavernaRun {
 	public void destroy() {
 		try {
 			run.destroy();
-		} catch (RemoteException e) {
-			log.warn("failed to destroy run", e);
-		} catch (ImplementationException e) {
+		} catch (RemoteException | ImplementationException e) {
 			log.warn("failed to destroy run", e);
 		}
 	}
@@ -196,7 +194,7 @@ public class RemoteRunDelegate implements TavernaRun {
 
 	@Override
 	public List<Listener> getListeners() {
-		ArrayList<Listener> listeners = new ArrayList<Listener>();
+		List<Listener> listeners = new ArrayList<>();
 		try {
 			for (RemoteListener rl : run.getListeners())
 				listeners.add(new ListenerDelegate(rl));
@@ -289,9 +287,7 @@ public class RemoteRunDelegate implements TavernaRun {
 			throw new BadStateChangeException(e.getMessage());
 		} catch (RemoteException e) {
 			throw new BadStateChangeException(e.getMessage(), e.getCause());
-		} catch (GeneralSecurityException e) {
-			throw new BadStateChangeException(e.getMessage(), e);
-		} catch (IOException e) {
+		} catch (GeneralSecurityException | IOException e) {
 			throw new BadStateChangeException(e.getMessage(), e);
 		} catch (ImplementationException e) {
 			if (e.getCause() != null)
@@ -328,7 +324,7 @@ public class RemoteRunDelegate implements TavernaRun {
 
 	@Override
 	public List<Input> getInputs() {
-		ArrayList<Input> inputs = new ArrayList<Input>();
+		ArrayList<Input> inputs = new ArrayList<>();
 		try {
 			for (RemoteInput ri : run.getInputs())
 				inputs.add(new RunInput(ri));
@@ -412,7 +408,7 @@ public class RemoteRunDelegate implements TavernaRun {
 	 *            the readers to set
 	 */
 	public void setReaders(Set<String> readers) {
-		this.readers = new HashSet<String>(readers);
+		this.readers = new HashSet<>(readers);
 		db.flushToDisk(this);
 	}
 
@@ -429,7 +425,7 @@ public class RemoteRunDelegate implements TavernaRun {
 	 *            the writers to set
 	 */
 	public void setWriters(Set<String> writers) {
-		this.writers = new HashSet<String>(writers);
+		this.writers = new HashSet<>(writers);
 		db.flushToDisk(this);
 	}
 
@@ -446,7 +442,7 @@ public class RemoteRunDelegate implements TavernaRun {
 	 *            the destroyers to set
 	 */
 	public void setDestroyers(Set<String> destroyers) {
-		this.destroyers = new HashSet<String>(destroyers);
+		this.destroyers = new HashSet<>(destroyers);
 		db.flushToDisk(this);
 	}
 
@@ -462,7 +458,7 @@ public class RemoteRunDelegate implements TavernaRun {
 		out.defaultWriteObject();
 		out.writeUTF(secContext.getOwner().getName());
 		out.writeObject(secContext.getFactory());
-		out.writeObject(new MarshalledObject<RemoteSingleRun>(run));
+		out.writeObject(new MarshalledObject<>(run));
 	}
 
 	@Override
@@ -488,9 +484,7 @@ public class RemoteRunDelegate implements TavernaRun {
 		try {
 			secContext = factory.create(this,
 					new UsernamePrincipal(creatorName));
-		} catch (RuntimeException e) {
-			throw e;
-		} catch (IOException e) {
+		} catch (RuntimeException | IOException e) {
 			throw e;
 		} catch (Exception e) {
 			throw new SecurityContextReconstructionException(e);
@@ -619,7 +613,7 @@ class DirectoryDelegate extends DEDelegate implements Directory {
 	@Override
 	public Collection<DirectoryEntry> getContents()
 			throws FilesystemAccessException {
-		ArrayList<DirectoryEntry> result = new ArrayList<DirectoryEntry>();
+		ArrayList<DirectoryEntry> result = new ArrayList<>();
 		try {
 			for (RemoteDirectoryEntry rde : rd.getContents()) {
 				if (rde instanceof RemoteDirectory)
@@ -637,8 +631,7 @@ class DirectoryDelegate extends DEDelegate implements Directory {
 	@Override
 	public Collection<DirectoryEntry> getContentsByDate()
 			throws FilesystemAccessException {
-		ArrayList<DirectoryEntry> result = new ArrayList<DirectoryEntry>(
-				getContents());
+		ArrayList<DirectoryEntry> result = new ArrayList<>(getContents());
 		sort(result, new DateComparator());
 		return result;
 	}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/867242f6/server-webapp/src/main/java/org/taverna/server/master/worker/RunConnection.java
----------------------------------------------------------------------
diff --git a/server-webapp/src/main/java/org/taverna/server/master/worker/RunConnection.java b/server-webapp/src/main/java/org/taverna/server/master/worker/RunConnection.java
index 018c15d..06ad617 100644
--- a/server-webapp/src/main/java/org/taverna/server/master/worker/RunConnection.java
+++ b/server-webapp/src/main/java/org/taverna/server/master/worker/RunConnection.java
@@ -186,9 +186,9 @@ public class RunConnection {
 		rrd.creationInstant = creationInstant;
 		rrd.workflow = workflow;
 		rrd.expiry = expiry;
-		rrd.readers = new HashSet<String>(list(readers));
-		rrd.writers = new HashSet<String>(list(writers));
-		rrd.destroyers = new HashSet<String>(list(destroyers));
+		rrd.readers = new HashSet<>(list(readers));
+		rrd.writers = new HashSet<>(list(writers));
+		rrd.destroyers = new HashSet<>(list(destroyers));
 		rrd.run = run.get();
 		rrd.doneTransitionToFinished = isFinished();
 		rrd.generateProvenance = isProvenanceGenerated();
@@ -215,7 +215,7 @@ public class RunConnection {
 		if (creationInstant == null) {
 			creationInstant = rrd.getCreationTimestamp();
 			workflow = rrd.getWorkflow();
-			run = new MarshalledObject<RemoteSingleRun>(rrd.run);
+			run = new MarshalledObject<>(rrd.run);
 			securityContextFactory = rrd.getSecurityContext().getFactory();
 			owner = rrd.getSecurityContext().getOwner().getName();
 			securityToken = ((org.taverna.server.master.worker.SecurityContextFactory) securityContextFactory)

http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/867242f6/server-webapp/src/main/java/org/taverna/server/master/worker/RunDatabase.java
----------------------------------------------------------------------
diff --git a/server-webapp/src/main/java/org/taverna/server/master/worker/RunDatabase.java b/server-webapp/src/main/java/org/taverna/server/master/worker/RunDatabase.java
index eb684a6..8822d03 100644
--- a/server-webapp/src/main/java/org/taverna/server/master/worker/RunDatabase.java
+++ b/server-webapp/src/main/java/org/taverna/server/master/worker/RunDatabase.java
@@ -46,7 +46,7 @@ public class RunDatabase implements RunStore, RunDBSupport {
 	private NotificationEngine notificationEngine;
 	@Autowired
 	private FactoryBean factory;
-	private Map<String, TavernaRun> cache = new HashMap<String, TavernaRun>();
+	private Map<String, TavernaRun> cache = new HashMap<>();
 
 	@Override
 	@Required
@@ -55,7 +55,7 @@ public class RunDatabase implements RunStore, RunDBSupport {
 	}
 
 	public void setTypeNotifiers(List<CompletionNotifier> notifiers) {
-		typedNotifiers = new HashMap<String, CompletionNotifier>();
+		typedNotifiers = new HashMap<>();
 		for (CompletionNotifier n : notifiers)
 			typedNotifiers.put(n.getName(), n);
 	}
@@ -198,7 +198,7 @@ public class RunDatabase implements RunStore, RunDBSupport {
 	@Override
 	public Map<String, TavernaRun> listRuns(UsernamePrincipal user, Policy p) {
 		synchronized (cache) {
-			Map<String, TavernaRun> cached = new HashMap<String, TavernaRun>();
+			Map<String, TavernaRun> cached = new HashMap<>();
 			for (Entry<String, TavernaRun> e : cache.entrySet()) {
 				TavernaRun r = e.getValue();
 				if (p.permitAccess(user, r))
@@ -215,9 +215,9 @@ public class RunDatabase implements RunStore, RunDBSupport {
 			return;
 		try {
 			ByteArrayOutputStream baos = new ByteArrayOutputStream();
-			ObjectOutputStream oos = new ObjectOutputStream(baos);
-			oos.writeObject(obj);
-			oos.close();
+			try (ObjectOutputStream oos = new ObjectOutputStream(baos)) {
+				oos.writeObject(obj);
+			}
 			log.debug(message + ": " + baos.size());
 		} catch (Exception e) {
 			log.warn("oops", e);

http://git-wip-us.apache.org/repos/asf/incubator-taverna-server/blob/867242f6/server-webapp/src/main/java/org/taverna/server/master/worker/RunDatabaseDAO.java
----------------------------------------------------------------------
diff --git a/server-webapp/src/main/java/org/taverna/server/master/worker/RunDatabaseDAO.java b/server-webapp/src/main/java/org/taverna/server/master/worker/RunDatabaseDAO.java
index 6568d33..1445373 100644
--- a/server-webapp/src/main/java/org/taverna/server/master/worker/RunDatabaseDAO.java
+++ b/server-webapp/src/main/java/org/taverna/server/master/worker/RunDatabaseDAO.java
@@ -109,7 +109,7 @@ public class RunDatabaseDAO extends JDOSupport<RunConnection> {
 	@NonNull
 	private List<RunConnection> allRuns() {
 		try {
-			List<RunConnection> rcs = new ArrayList<RunConnection>();
+			List<RunConnection> rcs = new ArrayList<>();
 			List<String> names = nameRuns();
 			for (String id : names) {
 				try {
@@ -158,8 +158,8 @@ public class RunDatabaseDAO extends JDOSupport<RunConnection> {
 	@NonNull
 	@WithinSingleTransaction
 	public Map<String, TavernaRun> listRuns(UsernamePrincipal user, Policy p) {
-		Map<String, TavernaRun> result = new HashMap<String, TavernaRun>();
-		for (String id : nameRuns()) {
+		Map<String, TavernaRun> result = new HashMap<>();
+		for (String id : nameRuns())
 			try {
 				RemoteRunDelegate rrd = pickRun(id).fromDBform(facade);
 				if (p.permitAccess(user, rrd))
@@ -167,7 +167,6 @@ public class RunDatabaseDAO extends JDOSupport<RunConnection> {
 			} catch (Exception e) {
 				continue;
 			}
-		}
 		return result;
 	}
 
@@ -177,11 +176,10 @@ public class RunDatabaseDAO extends JDOSupport<RunConnection> {
 	@NonNull
 	@WithinSingleTransaction
 	public List<String> listRunNames() {
-		ArrayList<String> runNames = new ArrayList<String>();
-		for (RunConnection rc : allRuns()) {
+		List<String> runNames = new ArrayList<>();
+		for (RunConnection rc : allRuns())
 			if (rc.getId() != null)
 				runNames.add(rc.getId());
-		}
 		return runNames;
 	}
 
@@ -279,15 +277,14 @@ public class RunDatabaseDAO extends JDOSupport<RunConnection> {
 	@PerfLogged
 	@WithinSingleTransaction
 	public List<RemoteRunDelegate> getPotentiallyNotifiable() {
-		List<RemoteRunDelegate> toNotify = new ArrayList<RemoteRunDelegate>();
+		List<RemoteRunDelegate> toNotify = new ArrayList<>();
 		for (String id : unterminatedRuns())
 			try {
 				RunConnection rc = getById(id);
 				toNotify.add(rc.fromDBform(facade));
 			} catch (Exception e) {
-				log.warn(
-						"failed to fetch for notification of completion check",
-						e);
+				log.warn("failed to fetch connection token"
+						+ "for notification of completion check", e);
 			}
 		return toNotify;
 	}