Move o.e.dltk.rse.* bundles to Java 8.

Update to newer java constructs.

Change-Id: I9246fb19ab0e857012f199ca001316795bb65d0c
Signed-off-by: Alexander Kurtakov <akurtako@redhat.com>
diff --git a/rse/plugins/org.eclipse.dltk.rse.core/.classpath b/rse/plugins/org.eclipse.dltk.rse.core/.classpath
index 64c5e31..eca7bdb 100644
--- a/rse/plugins/org.eclipse.dltk.rse.core/.classpath
+++ b/rse/plugins/org.eclipse.dltk.rse.core/.classpath
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
 	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
 	<classpathentry kind="src" path="src"/>
 	<classpathentry kind="output" path="bin"/>
diff --git a/rse/plugins/org.eclipse.dltk.rse.core/.settings/org.eclipse.jdt.core.prefs b/rse/plugins/org.eclipse.dltk.rse.core/.settings/org.eclipse.jdt.core.prefs
index 0db8fa6..873ffc7 100644
--- a/rse/plugins/org.eclipse.dltk.rse.core/.settings/org.eclipse.jdt.core.prefs
+++ b/rse/plugins/org.eclipse.dltk.rse.core/.settings/org.eclipse.jdt.core.prefs
@@ -1,8 +1,104 @@
-#Fri May 15 16:28:03 NOVST 2009
 eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
-org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
 org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.5
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=warning
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=warning
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warning
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=disabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/rse/plugins/org.eclipse.dltk.rse.core/META-INF/MANIFEST.MF b/rse/plugins/org.eclipse.dltk.rse.core/META-INF/MANIFEST.MF
index d1ae356..76d90b1 100644
--- a/rse/plugins/org.eclipse.dltk.rse.core/META-INF/MANIFEST.MF
+++ b/rse/plugins/org.eclipse.dltk.rse.core/META-INF/MANIFEST.MF
@@ -23,4 +23,4 @@
 Bundle-ActivationPolicy: lazy
 Export-Package: org.eclipse.dltk.core.internal.rse;x-friends:=org.eclipse.dltk.rse.ui,
  org.eclipse.dltk.core.internal.rse.perfomance;x-internal:=true
-Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
diff --git a/rse/plugins/org.eclipse.dltk.rse.core/src/org/eclipse/dltk/core/internal/rse/MyHostShellProcessAdapter.java b/rse/plugins/org.eclipse.dltk.rse.core/src/org/eclipse/dltk/core/internal/rse/MyHostShellProcessAdapter.java
index 1f750fa..09c0a93 100644
--- a/rse/plugins/org.eclipse.dltk.rse.core/src/org/eclipse/dltk/core/internal/rse/MyHostShellProcessAdapter.java
+++ b/rse/plugins/org.eclipse.dltk.rse.core/src/org/eclipse/dltk/core/internal/rse/MyHostShellProcessAdapter.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2006 PalmSource, Inc.
+ * Copyright (c) 2006, 2017 PalmSource, Inc. 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 
@@ -87,6 +87,7 @@
 	 * 
 	 * @see java.lang.Process#destroy()
 	 */
+	@Override
 	public synchronized void destroy() {
 		if (!done && hostShell.isActive()) {
 			hostShell.writeToShell(CTRL_C);
@@ -139,6 +140,7 @@
 	 * There is no relevant exit value to return when the shell exits. This
 	 * always returns 0.
 	 */
+	@Override
 	public synchronized int exitValue() {
 		if (!done && hostShell.isActive())
 			throw new IllegalThreadStateException();
@@ -156,6 +158,7 @@
 	 * 
 	 * @see java.lang.Process#getErrorStream()
 	 */
+	@Override
 	public InputStream getErrorStream() {
 		return errorStream;
 	}
@@ -165,6 +168,7 @@
 	 * 
 	 * @see java.lang.Process#getInputStream()
 	 */
+	@Override
 	public InputStream getInputStream() {
 		return inputStream;
 	}
@@ -174,6 +178,7 @@
 	 * 
 	 * @see java.lang.Process#getOutputStream()
 	 */
+	@Override
 	public OutputStream getOutputStream() {
 		return outputStream;
 	}
@@ -183,6 +188,7 @@
 	 * 
 	 * @see java.lang.Process#waitFor()
 	 */
+	@Override
 	public synchronized int waitFor() throws InterruptedException {
 
 		while (!done && hostShell.isActive()) {
@@ -224,6 +230,7 @@
 	 */
 	private int prefixCounter = 0;
 
+	@Override
 	public void shellOutputChanged(IHostShellChangeEvent event) {
 		IHostOutput[] input = event.getLines();
 		OutputStream outputStream = event.isError() ? hostShellError
diff --git a/rse/plugins/org.eclipse.dltk.rse.core/src/org/eclipse/dltk/core/internal/rse/RSEConnectionQueryManager.java b/rse/plugins/org.eclipse.dltk.rse.core/src/org/eclipse/dltk/core/internal/rse/RSEConnectionQueryManager.java
index 8542b2f..e468747 100644
--- a/rse/plugins/org.eclipse.dltk.rse.core/src/org/eclipse/dltk/core/internal/rse/RSEConnectionQueryManager.java
+++ b/rse/plugins/org.eclipse.dltk.rse.core/src/org/eclipse/dltk/core/internal/rse/RSEConnectionQueryManager.java
@@ -35,12 +35,10 @@
 
 	private static class ConnectionRequest {
 		private IHost host;
-		private long id;
 		private boolean finished = false;
 
 		public ConnectionRequest(IHost host, long id) {
 			this.host = host;
-			this.id = id;
 		}
 
 		public synchronized boolean isFinished() {
@@ -99,7 +97,7 @@
 
 	public void markHostAsFinished(IHost host) {
 		synchronized (requests) {
-			List<ConnectionRequest> toRemove = new ArrayList<ConnectionRequest>();
+			List<ConnectionRequest> toRemove = new ArrayList<>();
 			for (ConnectionRequest request : requests) {
 				if (request.host.equals(host)) {
 					toRemove.add(request);
@@ -139,10 +137,10 @@
 		}
 	}
 
-	private LazyExtensionManager<IConnector> connectors = new LazyExtensionManager<IConnector>(
+	private LazyExtensionManager<IConnector> connectors = new LazyExtensionManager<>(
 			DLTKRSEPlugin.PLUGIN_ID + ".rseConnector");
 
-	private List<ConnectionRequest> requests = new ArrayList<ConnectionRequest>();
+	private List<ConnectionRequest> requests = new ArrayList<>();
 	private boolean isConnecting = false;
 	private long currentId;
 
diff --git a/rse/plugins/org.eclipse.dltk.rse.core/src/org/eclipse/dltk/core/internal/rse/RSEEnvironment.java b/rse/plugins/org.eclipse.dltk.rse.core/src/org/eclipse/dltk/core/internal/rse/RSEEnvironment.java
index 5a46086..6878ec2 100644
--- a/rse/plugins/org.eclipse.dltk.rse.core/src/org/eclipse/dltk/core/internal/rse/RSEEnvironment.java
+++ b/rse/plugins/org.eclipse.dltk.rse.core/src/org/eclipse/dltk/core/internal/rse/RSEEnvironment.java
@@ -18,23 +18,22 @@
 import org.eclipse.rse.subsystems.files.core.subsystems.IRemoteFileSubSystem;
 
 @SuppressWarnings("restriction")
-public class RSEEnvironment implements IEnvironment, IAdaptable {
+public class RSEEnvironment implements IEnvironment {
 	private IRemoteFileSubSystem fs;
 	private IHost host;
-	private static final Map<IRemoteFileSubSystem, Boolean> tryToConnect = new HashMap<IRemoteFileSubSystem, Boolean>();
+	private static final Map<IRemoteFileSubSystem, Boolean> tryToConnect = new HashMap<>();
 
 	public RSEEnvironment(IRemoteFileSubSystem fs) {
 		this.fs = fs;
 		this.host = fs.getConnectorService().getHost();
 	}
 
-	/*
-	 * @see org.eclipse.dltk.core.environment.IEnvironment#isLocal()
-	 */
+	@Override
 	public boolean isLocal() {
 		return false;
 	}
 
+	@Override
 	public IFileHandle getFile(IPath path) {
 		if (path == null || Path.EMPTY.equals(path)) {
 			throw new IllegalArgumentException(
@@ -43,15 +42,18 @@
 		return new RSEFileHandle(this, getURIFor(host, path.toString()));
 	}
 
+	@Override
 	public String getId() {
 		return RSEEnvironmentProvider.RSE_ENVIRONMENT_PREFIX
 				+ host.getAliasName();
 	}
 
+	@Override
 	public String getSeparator() {
 		return fs.getSeparator();
 	}
 
+	@Override
 	public char getSeparatorChar() {
 		return fs.getSeparatorChar();
 	}
@@ -70,6 +72,7 @@
 		return getId().hashCode();
 	}
 
+	@Override
 	public String getName() {
 		return host.getAliasName()
 				+ Messages.RSEEnvironment_EnvironmentNameSuffix;
@@ -79,16 +82,19 @@
 		return host;
 	}
 
+	@Override
 	@SuppressWarnings("unchecked")
-	public Object getAdapter(Class adapter) {
-		return Platform.getAdapterManager()
+	public <T> T getAdapter(Class<T> adapter) {
+		return (T) Platform.getAdapterManager()
 				.loadAdapter(this, adapter.getName());
 	}
 
+	@Override
 	public URI getURI(IPath location) {
 		return getURIFor(host, location.toString());
 	}
 
+	@Override
 	public String convertPathToString(IPath path) {
 		if (host.getSystemType().isWindows()) {
 			return path.toString().replace('/', '\\');
@@ -97,6 +103,7 @@
 		}
 	}
 
+	@Override
 	public IFileHandle getFile(URI locationURI) {
 		if (RSEEnvironmentProvider.RSE_SCHEME.equalsIgnoreCase(locationURI
 				.getScheme())
@@ -116,14 +123,17 @@
 		}
 	}
 
+	@Override
 	public String getPathsSeparator() {
 		return Character.toString(getPathsSeparatorChar());
 	}
 
+	@Override
 	public char getPathsSeparatorChar() {
 		return host.getSystemType().isWindows() ? ';' : ':';
 	}
 
+	@Override
 	public String getCanonicalPath(IPath path) {
 		IFileHandle file = getFile(path);
 		if (file instanceof RSEFileHandle) {
@@ -144,6 +154,7 @@
 	/**
 	 * @since 2.0
 	 */
+	@Override
 	public boolean isConnected() {
 		// IConnectorService[] services = host.getConnectorServices();
 		// int connected = 0;
@@ -165,6 +176,7 @@
 	/**
 	 * @since 2.0
 	 */
+	@Override
 	public boolean connect() {
 		return connect(false);
 	}
diff --git a/rse/plugins/org.eclipse.dltk.rse.core/src/org/eclipse/dltk/core/internal/rse/RSEEnvironmentProvider.java b/rse/plugins/org.eclipse.dltk.rse.core/src/org/eclipse/dltk/core/internal/rse/RSEEnvironmentProvider.java
index 6aacc08..8959ae2 100644
--- a/rse/plugins/org.eclipse.dltk.rse.core/src/org/eclipse/dltk/core/internal/rse/RSEEnvironmentProvider.java
+++ b/rse/plugins/org.eclipse.dltk.rse.core/src/org/eclipse/dltk/core/internal/rse/RSEEnvironmentProvider.java
@@ -39,10 +39,12 @@
 	public RSEEnvironmentProvider() {
 	}
 
+	@Override
 	public String getProviderName() {
 		return Messages.RSEEnvironmentProvider_providerName;
 	}
 
+	@Override
 	public IEnvironment getEnvironment(String envId) {
 		return getEnvironment(envId, true);
 	}
@@ -147,7 +149,7 @@
 
 	}
 
-	private final Set<String> firedEnvironmentIds = new HashSet<String>();
+	private final Set<String> firedEnvironmentIds = new HashSet<>();
 
 	/**
 	 * @since 2.0
@@ -165,6 +167,7 @@
 		}
 	}
 
+	@Override
 	public boolean isInitialized() {
 		return isReady(false);
 	}
@@ -218,11 +221,12 @@
 		return true;
 	}
 
+	@Override
 	public IEnvironment[] getEnvironments() {
 		if (isReady()) {
 			final IHost[] connections = SystemStartHere.getConnections();
 			if (connections != null && connections.length != 0) {
-				final List<IEnvironment> environments = new ArrayList<IEnvironment>(
+				final List<IEnvironment> environments = new ArrayList<>(
 						connections.length);
 				for (int i = 0; i < connections.length; i++) {
 					final IHost connection = connections[i];
@@ -240,6 +244,7 @@
 		return new IEnvironment[0];
 	}
 
+	@Override
 	public void waitInitialized() {
 		try {
 			int waitCount = 0;
@@ -265,6 +270,7 @@
 		}
 	}
 
+	@Override
 	public IEnvironment getProjectEnvironment(IProject project) {
 		if (RSEPerfomanceStatistics.PERFOMANCE_TRACING) {
 			RSEPerfomanceStatistics
@@ -313,9 +319,7 @@
 		}
 	}
 
-	/*
-	 * @see IEnvironmentProvider#getEnvironment(java.net.URI)
-	 */
+	@Override
 	public IEnvironment getEnvironment(URI locationURI) {
 		if (RSE_SCHEME.equalsIgnoreCase(locationURI.getScheme()) && isReady()) {
 			final IHost[] connections = SystemStartHere.getConnections();
diff --git a/rse/plugins/org.eclipse.dltk.rse.core/src/org/eclipse/dltk/core/internal/rse/RSEExecEnvironment.java b/rse/plugins/org.eclipse.dltk.rse.core/src/org/eclipse/dltk/core/internal/rse/RSEExecEnvironment.java
index 9ca2efb..c99d514 100644
--- a/rse/plugins/org.eclipse.dltk.rse.core/src/org/eclipse/dltk/core/internal/rse/RSEExecEnvironment.java
+++ b/rse/plugins/org.eclipse.dltk.rse.core/src/org/eclipse/dltk/core/internal/rse/RSEExecEnvironment.java
@@ -49,12 +49,13 @@
 	private final RSEEnvironment environment;
 	private static int counter = -1;
 
-	private static final Map<IHost, Map<String, String>> hostToEnvironment = new HashMap<IHost, Map<String, String>>();
+	private static final Map<IHost, Map<String, String>> hostToEnvironment = new HashMap<>();
 
 	public RSEExecEnvironment(RSEEnvironment env) {
 		this.environment = env;
 	}
 
+	@Override
 	public IDeployment createDeployment() {
 		if (RSEPerfomanceStatistics.PERFOMANCE_TRACING) {
 			RSEPerfomanceStatistics
@@ -127,11 +128,13 @@
 		return null;
 	}
 
+	@Override
 	public Process exec(String[] cmdLine, IPath workingDir, String[] environment)
 			throws CoreException {
 		return exec(cmdLine, workingDir, environment, null);
 	}
 
+	@Override
 	public Process exec(String[] cmdLine, IPath workingDir,
 			String[] environment, IExecutionLogger logger) throws CoreException {
 		if (RSEPerfomanceStatistics.PERFOMANCE_TRACING) {
@@ -165,7 +168,7 @@
 				+ fileService.getSeparatorChar() + tmpLauncher;
 
 		// build commands
-		final List<String> commands = new ArrayList<String>();
+		final List<String> commands = new ArrayList<>();
 		if (workingDir != null) {
 			final String p = this.environment.convertPathToString(workingDir);
 			commands.add("cd " + p); //$NON-NLS-1$
@@ -201,39 +204,23 @@
 
 		// save launcher to the remote location
 		try {
-			final OutputStream os = fileService.getFileService()
-					.getOutputStream(tmpLauncherDir, tmpLauncher,
-							IFileService.TEXT_MODE, new NullProgressMonitor());
-			try {
-				final Writer writer = new OutputStreamWriter(
-						new BufferedOutputStream(os, 4096), fileService
-								.getRemoteEncoding());
-				try {
+
+			try (final OutputStream os = fileService.getFileService().getOutputStream(tmpLauncherDir, tmpLauncher,
+					IFileService.TEXT_MODE, new NullProgressMonitor())) {
+
+				try (final Writer writer = new OutputStreamWriter(new BufferedOutputStream(os, 4096),
+						fileService.getRemoteEncoding())) {
 					for (String command : commands) {
 						writer.write(command);
 						writer.write('\n');
 					}
 					writer.flush();
-				} finally {
-					try {
-						writer.close();
-					} catch (IOException e) {
-						// ignore
-					}
-				}
-			} finally {
-				try {
-					os.close();
-				} catch (IOException e) {
-					// ignore
 				}
 			}
 		} catch (Exception e) {
-			final String msg = NLS.bind(
-					Messages.RSEExecEnvironment_LauncherUploadError, host
-							.getAliasName(), e.getMessage());
-			throw new CoreException(newStatus(
-					RSEStatusConstants.LAUNCHER_UPLOAD_ERROR, msg, e));
+			final String msg = NLS.bind(Messages.RSEExecEnvironment_LauncherUploadError, host.getAliasName(),
+					e.getMessage());
+			throw new CoreException(newStatus(RSEStatusConstants.LAUNCHER_UPLOAD_ERROR, msg, e));
 		}
 
 		// execute uploaded launcher in remote shell
@@ -302,6 +289,7 @@
 	 * @param envVarName
 	 * @return
 	 */
+	@Override
 	public boolean isSafeEnvironmentVariable(String envVarName) {
 		return !UNSAFE_ENV_VARS.contains(envVarName);
 	}
@@ -393,23 +381,23 @@
 		return cmd.toString();
 	}
 
-	@SuppressWarnings("unchecked")
-	public Map getEnvironmentVariables(boolean realyNeed) {
+	@Override
+	public Map<String, String> getEnvironmentVariables(boolean realyNeed) {
 		if (!getEnvironment().connect()) {
 			return null;
 		}
 		if (!realyNeed) {
-			return new HashMap<String, String>();
+			return new HashMap<>();
 		}
 		final long start = System.currentTimeMillis();
 		synchronized (hostToEnvironment) {
 			final Map<String, String> result = hostToEnvironment
 					.get(environment.getHost());
 			if (result != null) {
-				return new HashMap<String, String>(result);
+				return new HashMap<>(result);
 			}
 		}
-		final Map<String, String> result = new HashMap<String, String>();
+		final Map<String, String> result = new HashMap<>();
 		try {
 			Process process = exec(new String[] { "set" }, Path.EMPTY, null); //$NON-NLS-1$
 			if (process != null) {
@@ -474,10 +462,12 @@
 		return result;
 	}
 
+	@Override
 	public IEnvironment getEnvironment() {
 		return environment;
 	}
 
+	@Override
 	public boolean isValidExecutableAndEquals(String possibleName, IPath path) {
 		if (environment.getHost().getSystemType().isWindows()) {
 			possibleName = possibleName.toLowerCase();
diff --git a/rse/plugins/org.eclipse.dltk.rse.core/src/org/eclipse/dltk/core/internal/rse/RSEExecEnvironmentAdapter.java b/rse/plugins/org.eclipse.dltk.rse.core/src/org/eclipse/dltk/core/internal/rse/RSEExecEnvironmentAdapter.java
index 9f40c35..ba6b640 100644
--- a/rse/plugins/org.eclipse.dltk.rse.core/src/org/eclipse/dltk/core/internal/rse/RSEExecEnvironmentAdapter.java
+++ b/rse/plugins/org.eclipse.dltk.rse.core/src/org/eclipse/dltk/core/internal/rse/RSEExecEnvironmentAdapter.java
@@ -4,17 +4,20 @@
 import org.eclipse.dltk.core.environment.IExecutionEnvironment;

 

 public class RSEExecEnvironmentAdapter implements IAdapterFactory {

-	public static final Class[] ADAPTER_LIST = { IExecutionEnvironment.class };

+	public static final Class<?>[] ADAPTER_LIST = { IExecutionEnvironment.class };

 	

-	public Object getAdapter(Object adaptableObject, Class adapterType) {

+	@Override

+	@SuppressWarnings("unchecked")

+	public <T> T getAdapter(Object adaptableObject, Class<T> adapterType) {

 		if (adapterType == IExecutionEnvironment.class && 

 				adaptableObject instanceof RSEEnvironment) {

 			RSEEnvironment env = (RSEEnvironment) adaptableObject;

-			return new RSEExecEnvironment(env);

+			return (T) new RSEExecEnvironment(env);

 		}

 		return null;

 	}

-	public Class[] getAdapterList() {

+	@Override

+	public Class<?>[] getAdapterList() {

 		return ADAPTER_LIST; 

 	}

 

diff --git a/rse/plugins/org.eclipse.dltk.rse.core/src/org/eclipse/dltk/core/internal/rse/RSEFileHandle.java b/rse/plugins/org.eclipse.dltk.rse.core/src/org/eclipse/dltk/core/internal/rse/RSEFileHandle.java
index ecb63b8..ced6d90 100644
--- a/rse/plugins/org.eclipse.dltk.rse.core/src/org/eclipse/dltk/core/internal/rse/RSEFileHandle.java
+++ b/rse/plugins/org.eclipse.dltk.rse.core/src/org/eclipse/dltk/core/internal/rse/RSEFileHandle.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008 xored software, Inc.  
+ * Copyright (c) 2008, 2017 xored software, Inc. and others.
  *
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
@@ -59,7 +59,7 @@
 
 	}
 
-	private static final Map<IFileStore, CacheEntry> cache = new HashMap<IFileStore, CacheEntry>();
+	private static final Map<IFileStore, CacheEntry> cache = new HashMap<>();
 
 	private final IFileStore file;
 	private final IEnvironment environment;
@@ -107,6 +107,7 @@
 		this(env, RSEEnvironment.getStoreFor(locationURI));
 	}
 
+	@Override
 	public boolean exists() {
 		if (!environment.connect()) {
 			return false;
@@ -163,14 +164,17 @@
 		return file;
 	}
 
+	@Override
 	public String toOSString() {
 		return this.environment.convertPathToString(getPath());
 	}
 
+	@Override
 	public String getCanonicalPath() {
 		return this.environment.getCanonicalPath(getPath());
 	}
 
+	@Override
 	public IFileHandle getChild(final String childname) {
 		if (!environment.connect()) {
 			URI childURI;
@@ -190,6 +194,7 @@
 		return new RSEFileHandle(environment, childStore);
 	}
 
+	@Override
 	public IFileHandle[] getChildren() {
 		if (!environment.connect()) {
 			return null;
@@ -240,18 +245,22 @@
 		}
 	}
 
+	@Override
 	public IEnvironment getEnvironment() {
 		return environment;
 	}
 
+	@Override
 	public URI toURI() {
 		return file.toURI();
 	}
 
+	@Override
 	public String getName() {
 		return file.getName();
 	}
 
+	@Override
 	public IFileHandle getParent() {
 		IFileStore parent = file.getParent();
 		if (parent == null)
@@ -259,6 +268,7 @@
 		return new RSEFileHandle(environment, parent);
 	}
 
+	@Override
 	public IPath getPath() {
 		return new Path(getPathString());
 	}
@@ -267,6 +277,7 @@
 		return file.toURI().getPath();
 	}
 
+	@Override
 	public boolean isDirectory() {
 		if (!environment.connect()) {
 			return false;
@@ -278,6 +289,7 @@
 		return fetchInfo(false).isDirectory();
 	}
 
+	@Override
 	public boolean isFile() {
 		if (!environment.connect()) {
 			return false;
@@ -290,6 +302,7 @@
 		return info.exists() && !info.isDirectory();
 	}
 
+	@Override
 	public boolean isSymlink() {
 		if (!environment.connect()) {
 			return false;
@@ -338,6 +351,7 @@
 		}
 	}
 
+	@Override
 	public InputStream openInputStream(IProgressMonitor monitor)
 			throws IOException {
 		if (!environment.connect()) {
@@ -349,6 +363,7 @@
 		return this.internalOpenInputStream(monitor);
 	}
 
+	@Override
 	public OutputStream openOutputStream(IProgressMonitor monitor)
 			throws IOException {
 		if (!environment.connect()) {
@@ -400,6 +415,7 @@
 		return toOSString();
 	}
 
+	@Override
 	public long lastModified() {
 		if (!environment.connect()) {
 			return 0;
@@ -417,6 +433,7 @@
 
 	}
 
+	@Override
 	public long length() {
 		if (!environment.connect()) {
 			return 0;
@@ -428,10 +445,12 @@
 		return fetchInfo(false).getLength();
 	}
 
+	@Override
 	public IPath getFullPath() {
 		return EnvironmentPathUtils.getFullPath(environment, getPath());
 	}
 
+	@Override
 	public String getEnvironmentId() {
 		return environment.getId();
 	}
@@ -477,6 +496,7 @@
 	/**
 	 * @since 2.0
 	 */
+	@Override
 	public IFileStore getFileStore() {
 		return this.file;
 	}
@@ -537,6 +557,7 @@
 		return currentPath;
 	}
 
+	@Override
 	public void move(IFileHandle destination) throws CoreException {
 		fetchSshFile();
 		if (sshFile != null) {
diff --git a/rse/plugins/org.eclipse.dltk.rse.core/src/org/eclipse/dltk/core/internal/rse/ssh/RSESshManager.java b/rse/plugins/org.eclipse.dltk.rse.core/src/org/eclipse/dltk/core/internal/rse/ssh/RSESshManager.java
index e172a83..b9e1c10 100644
--- a/rse/plugins/org.eclipse.dltk.rse.core/src/org/eclipse/dltk/core/internal/rse/ssh/RSESshManager.java
+++ b/rse/plugins/org.eclipse.dltk.rse.core/src/org/eclipse/dltk/core/internal/rse/ssh/RSESshManager.java
@@ -27,7 +27,7 @@
 	 * Right now support only stored ssh passwords retrieval.
 	 * 
 	 */
-	private static Set<IHost> hostsInInitialization = new HashSet<IHost>();
+	private static Set<IHost> hostsInInitialization = new HashSet<>();
 
 	public static ISshConnection getConnection(final IHost host) {
 		synchronized (hostsInInitialization) {
diff --git a/rse/plugins/org.eclipse.dltk.rse.ui/.classpath b/rse/plugins/org.eclipse.dltk.rse.ui/.classpath
index 64c5e31..eca7bdb 100644
--- a/rse/plugins/org.eclipse.dltk.rse.ui/.classpath
+++ b/rse/plugins/org.eclipse.dltk.rse.ui/.classpath
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
 	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
 	<classpathentry kind="src" path="src"/>
 	<classpathentry kind="output" path="bin"/>
diff --git a/rse/plugins/org.eclipse.dltk.rse.ui/.settings/org.eclipse.jdt.core.prefs b/rse/plugins/org.eclipse.dltk.rse.ui/.settings/org.eclipse.jdt.core.prefs
index c5cfd9d..05887c0 100644
--- a/rse/plugins/org.eclipse.dltk.rse.ui/.settings/org.eclipse.jdt.core.prefs
+++ b/rse/plugins/org.eclipse.dltk.rse.ui/.settings/org.eclipse.jdt.core.prefs
@@ -1,12 +1,109 @@
-#Tue Jul 21 10:57:53 NOVST 2009
 eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
+org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
+org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
+org.eclipse.jdt.core.compiler.annotation.nonnull.secondary=
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
+org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
+org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
+org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.compliance=1.8
 org.eclipse.jdt.core.compiler.debug.lineNumber=generate
 org.eclipse.jdt.core.compiler.debug.localVariable=generate
 org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
 org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.5
+org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=warning
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
+org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning
+org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error
+org.eclipse.jdt.core.compiler.problem.nullReference=warning
+org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error
+org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
+org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
+org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=warning
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
+org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=disabled
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
+org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled
+org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/rse/plugins/org.eclipse.dltk.rse.ui/META-INF/MANIFEST.MF b/rse/plugins/org.eclipse.dltk.rse.ui/META-INF/MANIFEST.MF
index 9533adc..c469922 100644
--- a/rse/plugins/org.eclipse.dltk.rse.ui/META-INF/MANIFEST.MF
+++ b/rse/plugins/org.eclipse.dltk.rse.ui/META-INF/MANIFEST.MF
@@ -19,4 +19,4 @@
  org.eclipse.rse.subsystems.files.core
 Bundle-ActivationPolicy: lazy
 Export-Package: org.eclipse.dltk.internal.ui.rse;x-internal:=true
-Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
diff --git a/rse/plugins/org.eclipse.dltk.rse.ui/src/org/eclipse/dltk/internal/ui/rse/DLTKRSEUI.java b/rse/plugins/org.eclipse.dltk.rse.ui/src/org/eclipse/dltk/internal/ui/rse/DLTKRSEUI.java
index 078447d..fcd46ef 100644
--- a/rse/plugins/org.eclipse.dltk.rse.ui/src/org/eclipse/dltk/internal/ui/rse/DLTKRSEUI.java
+++ b/rse/plugins/org.eclipse.dltk.rse.ui/src/org/eclipse/dltk/internal/ui/rse/DLTKRSEUI.java
@@ -1,18 +1,6 @@
 package org.eclipse.dltk.internal.ui.rse;
 
-import java.net.URI;
-
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.dltk.core.DLTKCore;
-import org.eclipse.dltk.core.DLTKLanguageManager;
-import org.eclipse.dltk.core.ModelException;
-import org.eclipse.dltk.core.internal.rse.RSEEnvironmentProvider;
 import org.eclipse.rse.ui.RSEUIPlugin;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchListener;
 import org.eclipse.ui.plugin.AbstractUIPlugin;
 import org.osgi.framework.BundleContext;
 
@@ -63,58 +51,4 @@
 	public static DLTKRSEUI getDefault() {
 		return plugin;
 	}
-
-	private static class ShutdownCloseProjectsWithLinkedFiles implements
-			IWorkbenchListener {
-		public void postShutdown(IWorkbench workbench) {
-			// empty
-		}
-
-		public boolean preShutdown(IWorkbench workbench, boolean forced) {
-			closeProjectsWithLinkedFiles();
-			return true;
-		}
-
-		/**
-		 * At the moment RSE calls Display.syncExec() to ask password and if
-		 * it's called from RefreshJob when workspace is locked and at the same
-		 * time UI thread wants to perform a workspace operation - deadlock
-		 * occurs.
-		 * 
-		 * @throws ModelException
-		 * @throws CoreException
-		 */
-		private void closeProjectsWithLinkedFiles() {
-			final IProject[] projects = ResourcesPlugin.getWorkspace()
-					.getRoot().getProjects();
-			for (IProject project : projects) {
-				if (project.isAccessible()
-						&& DLTKLanguageManager.hasScriptNature(project)) {
-					try {
-						if (shouldBeClosed(project)) {
-							project.close(null);
-						}
-					} catch (CoreException e) {
-						if (DLTKCore.DEBUG)
-							e.printStackTrace();
-					}
-				}
-			}
-		}
-
-		private boolean shouldBeClosed(IProject project) throws CoreException {
-			for (final IResource child : project.members()) {
-				if (child.isLinked()) {
-					final URI location = child.getLocationURI();
-					if (location != null
-							&& RSEEnvironmentProvider.RSE_SCHEME
-									.equalsIgnoreCase(location.getScheme())) {
-						return true;
-					}
-				}
-			}
-			return false;
-		}
-
-	}
 }
diff --git a/rse/plugins/org.eclipse.dltk.rse.ui/src/org/eclipse/dltk/internal/ui/rse/RSEConnectionMonitor.java b/rse/plugins/org.eclipse.dltk.rse.ui/src/org/eclipse/dltk/internal/ui/rse/RSEConnectionMonitor.java
index 8c1421a..f2a7008 100644
--- a/rse/plugins/org.eclipse.dltk.rse.ui/src/org/eclipse/dltk/internal/ui/rse/RSEConnectionMonitor.java
+++ b/rse/plugins/org.eclipse.dltk.rse.ui/src/org/eclipse/dltk/internal/ui/rse/RSEConnectionMonitor.java
@@ -62,7 +62,7 @@
 					"Checking projects consistency", 100);
 			IProject[] projects = ResourcesPlugin.getWorkspace().getRoot()
 					.getProjects();
-			List<IScriptProject> projectsToProcess = new ArrayList<IScriptProject>();
+			List<IScriptProject> projectsToProcess = new ArrayList<>();
 			SubMonitor m = monitor.newChild(10);
 			m.beginTask("Locate projects for environment", projects.length);
 			for (IProject project : projects) {
@@ -123,6 +123,7 @@
 			return;
 		}
 		display.asyncExec(new Runnable() {
+			@Override
 			public void run() {
 				if (updatingDecorators) {
 					return;
@@ -148,9 +149,10 @@
 		t.start();
 	}
 
+	@Override
 	public void run() {
 		EnvironmentManager.waitInitialized();
-		final Set<String> eventListenerAdded = new HashSet<String>();
+		final Set<String> eventListenerAdded = new HashSet<>();
 		while (Platform.isRunning()) {
 
 			IEnvironment[] environments = EnvironmentManager.getEnvironments();
@@ -165,10 +167,12 @@
 						for (IConnectorService service : services) {
 							service
 									.addCommunicationsListener(new ICommunicationsListener() {
+										@Override
 										public boolean isPassiveCommunicationsListener() {
 											return false;
 										}
 
+										@Override
 										public void communicationsStateChange(
 												CommunicationsEvent e) {
 											if (e.getState() == CommunicationsEvent.AFTER_CONNECT) {
diff --git a/rse/plugins/org.eclipse.dltk.rse.ui/src/org/eclipse/dltk/internal/ui/rse/RSEConnector.java b/rse/plugins/org.eclipse.dltk.rse.ui/src/org/eclipse/dltk/internal/ui/rse/RSEConnector.java
index 028db96..67477ea 100644
--- a/rse/plugins/org.eclipse.dltk.rse.ui/src/org/eclipse/dltk/internal/ui/rse/RSEConnector.java
+++ b/rse/plugins/org.eclipse.dltk.rse.ui/src/org/eclipse/dltk/internal/ui/rse/RSEConnector.java
@@ -23,6 +23,7 @@
 
 	private Thread createProcessingThread() {
 		return new Thread("RSE connection resolver") {
+			@Override
 			public void run() {
 				while (running) {
 					if (RSEConnectionQueryManager.getInstance().hasHosts()) {
@@ -36,15 +37,13 @@
 										.markHostAsFinished(host);
 							}
 						} else {
-							display.syncExec(new Runnable() {
-								public void run() {
-									IHost host = RSEConnectionQueryManager
-											.getInstance().getNextHost(false);
-									if (host != null) {
-										connect(host);
-										RSEConnectionQueryManager.getInstance()
-												.markHostAsFinished(host);
-									}
+							display.syncExec(() -> {
+								IHost host = RSEConnectionQueryManager
+										.getInstance().getNextHost(false);
+								if (host != null) {
+									connect(host);
+									RSEConnectionQueryManager.getInstance()
+											.markHostAsFinished(host);
 								}
 							});
 						}
@@ -59,7 +58,7 @@
 		};
 	}
 
-	private final Set<IHost> activeConnects = new HashSet<IHost>();
+	private final Set<IHost> activeConnects = new HashSet<>();
 
 	private void connect(IHost host) {
 		ISubSystem[] subSystems = host.getSubSystems();
@@ -89,6 +88,7 @@
 	public RSEConnector() {
 	}
 
+	@Override
 	public boolean isDirectProcessingRequired() {
 		// Process direct connection request.
 		Display current = Display.getCurrent();
@@ -99,6 +99,7 @@
 		return false;
 	}
 
+	@Override
 	public void register() {
 		if (processingThread == null) {
 			processingThread = createProcessingThread();
@@ -106,6 +107,7 @@
 		}
 	}
 
+	@Override
 	public void runDisplayRunnables(long timeout) {
 		long end = System.currentTimeMillis() + timeout;
 		// We need to interrupt processingThread if it is no executing.
diff --git a/rse/plugins/org.eclipse.dltk.rse.ui/src/org/eclipse/dltk/internal/ui/rse/RSEEnvironmentUI.java b/rse/plugins/org.eclipse.dltk.rse.ui/src/org/eclipse/dltk/internal/ui/rse/RSEEnvironmentUI.java
index ff78513..033b05e 100644
--- a/rse/plugins/org.eclipse.dltk.rse.ui/src/org/eclipse/dltk/internal/ui/rse/RSEEnvironmentUI.java
+++ b/rse/plugins/org.eclipse.dltk.rse.ui/src/org/eclipse/dltk/internal/ui/rse/RSEEnvironmentUI.java
@@ -22,10 +22,12 @@
 		this.environment = environment;
 	}
 
+	@Override
 	public String selectFolder(Shell shell) {
 		return selectFolder(shell, null);
 	}
 
+	@Override
 	public String selectFolder(Shell shell, String initialFolder) {
 		if (!environment.connect(true)) {
 			return null;
@@ -85,6 +87,7 @@
 
 	private static final String FILTER_STD_SUFFIX = "/*"; //$NON-NLS-1$
 
+	@Override
 	public String selectFile(Shell shell, int fileType) {
 		return selectFile(shell, fileType, null);
 	}
@@ -92,6 +95,7 @@
 	/**
 	 * @since 2.0
 	 */
+	@Override
 	public String selectFile(Shell shell, int fileType, String initialSelection) {
 		if (!environment.connect(true)) {
 			return null;
diff --git a/rse/plugins/org.eclipse.dltk.rse.ui/src/org/eclipse/dltk/internal/ui/rse/RSEEnvironmentUIAdapter.java b/rse/plugins/org.eclipse.dltk.rse.ui/src/org/eclipse/dltk/internal/ui/rse/RSEEnvironmentUIAdapter.java
index 11b3c56..61b2361 100644
--- a/rse/plugins/org.eclipse.dltk.rse.ui/src/org/eclipse/dltk/internal/ui/rse/RSEEnvironmentUIAdapter.java
+++ b/rse/plugins/org.eclipse.dltk.rse.ui/src/org/eclipse/dltk/internal/ui/rse/RSEEnvironmentUIAdapter.java
@@ -5,20 +5,23 @@
 import org.eclipse.dltk.ui.environment.IEnvironmentUI;
 
 public class RSEEnvironmentUIAdapter implements IAdapterFactory {
-	private final static Class[] ADAPTABLES = new Class[] { IEnvironmentUI.class };
+	private final static Class<?>[] ADAPTABLES = new Class[] { IEnvironmentUI.class };
 
 	public RSEEnvironmentUIAdapter() {
 	}
 
-	public Object getAdapter(Object adaptableObject, Class adapterType) {
+	@Override
+	@SuppressWarnings("unchecked")
+	public <T> T getAdapter(Object adaptableObject, Class<T> adapterType) {
 		if (adaptableObject instanceof RSEEnvironment
 				&& adapterType == IEnvironmentUI.class) {
-			return new RSEEnvironmentUI((RSEEnvironment) adaptableObject);
+			return (T) new RSEEnvironmentUI((RSEEnvironment) adaptableObject);
 		}
 		return null;
 	}
 
-	public Class[] getAdapterList() {
+	@Override
+	public Class<?>[] getAdapterList() {
 		return ADAPTABLES;
 	}
 }
diff --git a/rse/plugins/org.eclipse.dltk.rse.ui/src/org/eclipse/dltk/internal/ui/rse/RemoteProjectLabelDecorator.java b/rse/plugins/org.eclipse.dltk.rse.ui/src/org/eclipse/dltk/internal/ui/rse/RemoteProjectLabelDecorator.java
index 6ecfe4d..418b44c 100644
--- a/rse/plugins/org.eclipse.dltk.rse.ui/src/org/eclipse/dltk/internal/ui/rse/RemoteProjectLabelDecorator.java
+++ b/rse/plugins/org.eclipse.dltk.rse.ui/src/org/eclipse/dltk/internal/ui/rse/RemoteProjectLabelDecorator.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 xored software, Inc.
+ * Copyright (c) 2009, 2017 xored software, Inc. and others.
  *
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v1.0
@@ -33,6 +33,7 @@
 	 */
 	public static final String ID = "org.eclipse.dltk.rse.decorators.projectdecorator"; //$NON-NLS-1$
 
+	@Override
 	public void decorate(Object element, IDecoration decoration) {
 		if (element instanceof IProject) {
 			decorateProjectText((IProject) element, decoration);