Bug 525735 - Move touchpoint.natives bundle to Java 8

* Bump BREE.
* Bump minor version.
* Enable warning for newer Java versions.
* Add missing override annotations.
* Try-with-resources.
* Remove redundant type arguments.
* Lambda conversion.

Change-Id: I414b791948fd6c4f0c65df00fd6bdf3cd9814134
Signed-off-by: Alexander Kurtakov <akurtako@redhat.com>
diff --git a/bundles/org.eclipse.equinox.p2.touchpoint.natives/.classpath b/bundles/org.eclipse.equinox.p2.touchpoint.natives/.classpath
index 64c5e31..eca7bdb 100644
--- a/bundles/org.eclipse.equinox.p2.touchpoint.natives/.classpath
+++ b/bundles/org.eclipse.equinox.p2.touchpoint.natives/.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/bundles/org.eclipse.equinox.p2.touchpoint.natives/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.p2.touchpoint.natives/.settings/org.eclipse.jdt.core.prefs
index 449cf18..0d5a932 100644
--- a/bundles/org.eclipse.equinox.p2.touchpoint.natives/.settings/org.eclipse.jdt.core.prefs
+++ b/bundles/org.eclipse.equinox.p2.touchpoint.natives/.settings/org.eclipse.jdt.core.prefs
@@ -6,29 +6,45 @@
 org.eclipse.jdt.core.circularClasspath=error
 org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
 org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
+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.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.doc.comment.support=enabled
 org.eclipse.jdt.core.compiler.maxProblemPerUnit=1000
+org.eclipse.jdt.core.compiler.problem.APILeak=warning
 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=enabled
 org.eclipse.jdt.core.compiler.problem.discouragedReference=error
 org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
 org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+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=warning
 org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
 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=ignore
 org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning
@@ -36,41 +52,79 @@
 org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private
 org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning
 org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
+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.missingJavadocComments=ignore
 org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=enabled
 org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
 org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
 org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=enabled
 org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=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=warning
+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=warning
+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=warning
+org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
 org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
 org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
 org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=warning
 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=warning
 org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
 org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
 org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
 org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=enabled
+org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
 org.eclipse.jdt.core.compiler.problem.unusedImport=error
+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=enabled
 org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=enabled
 org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
+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.5
+org.eclipse.jdt.core.compiler.source=1.8
 org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
 org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
diff --git a/bundles/org.eclipse.equinox.p2.touchpoint.natives/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.p2.touchpoint.natives/META-INF/MANIFEST.MF
index 2772440..d537615 100644
--- a/bundles/org.eclipse.equinox.p2.touchpoint.natives/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.p2.touchpoint.natives/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.equinox.p2.touchpoint.natives;singleton:=true
-Bundle-Version: 1.2.200.qualifier
+Bundle-Version: 1.3.0.qualifier
 Bundle-Activator: org.eclipse.equinox.internal.p2.touchpoint.natives.Activator
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
@@ -10,7 +10,7 @@
  org.eclipse.equinox.internal.p2.touchpoint.natives.actions;x-internal:=true
 Require-Bundle: org.eclipse.equinox.common,
  org.eclipse.equinox.app;bundle-version="1.3.0";resolution:=optional
-Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Bundle-ActivationPolicy: lazy
 Import-Package: org.eclipse.equinox.internal.p2.core.helpers,
  org.eclipse.equinox.internal.p2.engine,
diff --git a/bundles/org.eclipse.equinox.p2.touchpoint.natives/META-INF/p2.inf b/bundles/org.eclipse.equinox.p2.touchpoint.natives/META-INF/p2.inf
index e397bf7..ba2ac09 100644
--- a/bundles/org.eclipse.equinox.p2.touchpoint.natives/META-INF/p2.inf
+++ b/bundles/org.eclipse.equinox.p2.touchpoint.natives/META-INF/p2.inf
@@ -13,3 +13,7 @@
 provides.3.namespace=org.eclipse.equinox.p2.iu
 provides.3.name=org.eclipse.equinox.p2.touchpoint.natives
 provides.3.version=1.2.200.$qualifier$
+
+provides.4.namespace=org.eclipse.equinox.p2.iu
+provides.4.name=org.eclipse.equinox.p2.touchpoint.natives
+provides.4.version=1.3.0.$qualifier$
diff --git a/bundles/org.eclipse.equinox.p2.touchpoint.natives/pom.xml b/bundles/org.eclipse.equinox.p2.touchpoint.natives/pom.xml
index 62bd13d..cae5498 100644
--- a/bundles/org.eclipse.equinox.p2.touchpoint.natives/pom.xml
+++ b/bundles/org.eclipse.equinox.p2.touchpoint.natives/pom.xml
@@ -9,6 +9,6 @@
   </parent>
   <groupId>org.eclipse.equinox</groupId>
   <artifactId>org.eclipse.equinox.p2.touchpoint.natives</artifactId>
-  <version>1.2.200-SNAPSHOT</version>
+  <version>1.3.0-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/Activator.java b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/Activator.java
index e3c7010..69a77f2 100644
--- a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/Activator.java
+++ b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/Activator.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2007, 2008 IBM Corporation and others.
+ *  Copyright (c) 2007, 2017 IBM Corporation 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
@@ -21,18 +21,12 @@
 		return context;
 	}
 
-	/*
-	 * (non-Javadoc)
-	 * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
-	 */
+	@Override
 	public void start(BundleContext aContext) throws Exception {
 		Activator.context = aContext;
 	}
 
-	/*
-	 * (non-Javadoc)
-	 * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
-	 */
+	@Override
 	public void stop(BundleContext aContext) throws Exception {
 		context = null;
 	}
diff --git a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/BackupStore.java b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/BackupStore.java
index 0e3ecc8..482de70 100644
--- a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/BackupStore.java
+++ b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/BackupStore.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009, 2016 Cloudsmith Inc. and others.
+ * Copyright (c) 2009, 2017 Cloudsmith 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
@@ -140,7 +140,7 @@
 	 */
 	private boolean closed;
 
-	private Map<String, String> renamedInPlace = new HashMap<String, String>();
+	private Map<String, String> renamedInPlace = new HashMap<>();
 
 	/**
 	 * Generates a BackupStore with a default prefix of ".p2bu" for backup directory and
@@ -180,6 +180,7 @@
 	 * must be closed if this instance is garbage collected and the user
 	 * of the instance has not either restored or discarded.
 	 */
+	@Override
 	protected void finalize() throws Throwable {
 		try {
 			if (socket != null && !socket.isClosed())
@@ -193,6 +194,7 @@
 	 * Returns the unique backup name (this is the name of generated backup directories).
 	 * @return the backup name.
 	 */
+	@Override
 	public String getBackupName() {
 		return backupName;
 	}
@@ -223,6 +225,7 @@
 	 * @throws ClosedBackupStoreException - if the BackupStore has been closed
 	 * @throws IllegalArgumentException - on type mismatch (file vs. directory) of earlier backup, or if file does not exist 
 	 */
+	@Override
 	public boolean backup(File file) throws IOException {
 		if (closed)
 			throw new ClosedBackupStoreException("Can not perform backup()"); //$NON-NLS-1$
@@ -331,6 +334,7 @@
 	 * @param file - file to backup or directory
 	 * @throws IOException if backup operation failed
 	 */
+	@Override
 	public void backupAll(File file) throws IOException {
 		if (!file.exists())
 			return;
@@ -350,6 +354,7 @@
 	 * @param file
 	 * @throws IOException
 	 */
+	@Override
 	public void backupCopyAll(File file) throws IOException {
 		if (!file.exists())
 			return;
@@ -391,6 +396,7 @@
 	 * @throws ClosedBackupStoreException - if the BackupStore has been closed
 	 * @throws IllegalArgumentException - on type mismatch (file vs. directory) of earlier backup, or if file is a Directory
 	 */
+	@Override
 	public boolean backupCopy(File file) throws IOException {
 		if (closed)
 			throw new ClosedBackupStoreException(Messages.BackupStore_backupCopy_closed_store);
@@ -435,6 +441,7 @@
 	 * @throws IllegalArgumentException if file is not a directory, or is not empty.
 	 * @throws IOException if directory can not be moved to the backup store, or if the directory is not writeable
 	 */
+	@Override
 	public boolean backupDirectory(File file) throws IOException {
 		if (!file.isDirectory())
 			throw new IllegalArgumentException(NLS.bind(Messages.BackupStore_not_a_directory, file.getAbsolutePath()));
@@ -476,12 +483,13 @@
 	 * @throws IOException if the backup was not fully restored - unrestored items have been logged.
 	 * @throws ClosedBackupStoreException if the backup is already closed.
 	 */
+	@Override
 	public void restore() throws IOException {
 		if (closed)
 			throw new ClosedBackupStoreException(Messages.BackupStore_restore_closed_store);
 		// put back all files 
 		// collect things that could not be restored (so final status can be reported)
-		Set<File> unrestorable = new HashSet<File>();
+		Set<File> unrestorable = new HashSet<>();
 		boolean restored = true;
 		if (!backupRoot.exists()) {
 			logError(NLS.bind(Messages.BackupStore_missing_backup_directory, backupRoot.getAbsolutePath()));
@@ -509,6 +517,7 @@
 	 * Discards and closes this BackupStore. Does nothing if this store is already
 	 * restored or discarded.
 	 */
+	@Override
 	public void discard() {
 		if (closed)
 			return;
diff --git a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/LazyBackupStore.java b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/LazyBackupStore.java
index e3dbc4c..fb321e9 100644
--- a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/LazyBackupStore.java
+++ b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/LazyBackupStore.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009 Cloudsmith Inc. and others.
+ * Copyright (c) 2009, 2017 Cloudsmith 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
@@ -16,8 +16,6 @@
 /**
  * LazyBackupStore is a BackupStore that only instantiates a real backup store
  * when needed.
- * 
- *
  */
 public class LazyBackupStore implements IBackupStore {
 	private BackupStore delegate;
@@ -31,22 +29,26 @@
 		this.prefix = prefix;
 	}
 
+	@Override
 	public boolean backup(File file) throws IOException {
 		loadDelegate();
 		return delegate.backup(file);
 	}
 
+	@Override
 	public boolean backupDirectory(File file) throws IOException {
 		loadDelegate();
 		return delegate.backupDirectory(file);
 	}
 
+	@Override
 	public void discard() {
 		if (delegate == null)
 			return;
 		delegate.discard();
 	}
 
+	@Override
 	public void restore() throws IOException {
 		if (delegate == null)
 			return;
@@ -59,21 +61,25 @@
 		delegate = new BackupStore(null, prefix);
 	}
 
+	@Override
 	public String getBackupName() {
 		loadDelegate();
 		return delegate.getBackupName();
 	}
 
+	@Override
 	public boolean backupCopy(File file) throws IOException {
 		loadDelegate();
 		return delegate.backupCopy(file);
 	}
 
+	@Override
 	public void backupCopyAll(File file) throws IOException {
 		loadDelegate();
 		delegate.backupCopyAll(file);
 	}
 
+	@Override
 	public void backupAll(File file) throws IOException {
 		loadDelegate();
 		delegate.backupAll(file);
diff --git a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/NativePackageExtractionApplication.java b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/NativePackageExtractionApplication.java
index 67ff28e..346458a 100644
--- a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/NativePackageExtractionApplication.java
+++ b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/NativePackageExtractionApplication.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2014, 2016 Rapicorp, Inc and others.
+ * Copyright (c) 2014, 2017 Rapicorp, 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
@@ -58,6 +58,7 @@
 
 	private boolean stackTrace = false;
 
+	@Override
 	public Object start(IApplicationContext context) throws Exception {
 		try {
 			processArguments((String[]) context.getArguments().get("application.args")); //$NON-NLS-1$
@@ -114,14 +115,8 @@
 	}
 
 	private void persistInformation() throws CoreException {
-		try {
-			BufferedOutputStream os = new BufferedOutputStream(new FileOutputStream(resultFile));
-			try {
-				extractedData.store(os, "Data extracted from eclipse located at " + installation); //$NON-NLS-1$
-			} finally {
-				if (os != null)
-					os.close();
-			}
+		try (BufferedOutputStream os = new BufferedOutputStream(new FileOutputStream(resultFile))) {
+			extractedData.store(os, "Data extracted from eclipse located at " + installation); //$NON-NLS-1$
 		} catch (IOException e) {
 			throw new CoreException(new Status(IStatus.ERROR, Activator.ID, Messages.NativePackageExtractionApplication_PersistencePb + resultFile.getAbsolutePath(), e));
 		}
@@ -203,7 +198,7 @@
 
 	//Code copied from the InstructionParser class
 	private Map<String, String> parseInstruction(String statement) {
-		Map<String, String> instructions = new HashMap<String, String>();
+		Map<String, String> instructions = new HashMap<>();
 
 		int openBracket = statement.indexOf('(');
 		int closeBracket = statement.lastIndexOf(')');
@@ -240,21 +235,12 @@
 		if (profileId == null) {
 			if (installation != null) {
 				File configIni = new File(installation, "configuration/config.ini"); //$NON-NLS-1$
-				InputStream in = null;
-				try {
-					Properties ciProps = new Properties();
-					in = new BufferedInputStream(new FileInputStream(configIni));
+				Properties ciProps = new Properties();
+				try (InputStream in = new BufferedInputStream(new FileInputStream(configIni))) {
 					ciProps.load(in);
 					profileId = ciProps.getProperty(PROP_P2_PROFILE);
 				} catch (IOException e) {
 					// Ignore
-				} finally {
-					if (in != null)
-						try {
-							in.close();
-						} catch (IOException e) {
-							// Ignore;
-						}
 				}
 				if (profileId == null)
 					profileId = installation.toString();
@@ -312,6 +298,7 @@
 		}
 	}
 
+	@Override
 	public void stop() {
 		//We don't handle application stopping
 	}
diff --git a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/NativeTouchpoint.java b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/NativeTouchpoint.java
index 2c85449..b001c4e 100644
--- a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/NativeTouchpoint.java
+++ b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/NativeTouchpoint.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2014 IBM Corporation and others.
+ * Copyright (c) 2007, 2017 IBM Corporation 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
@@ -33,14 +33,15 @@
 	private static final String INSTALL_COMMANDS = "installCommands.txt"; //$NON-NLS-1$
 	private static final String INSTALL_PREFIX = "installPrefix"; //$NON-NLS-1$
 
-	private static Map<IProfile, IBackupStore> backups = new WeakHashMap<IProfile, IBackupStore>();
+	private static Map<IProfile, IBackupStore> backups = new WeakHashMap<>();
 
-	private List<NativePackageEntry> packagesToInstall = new ArrayList<NativePackageEntry>();
+	private List<NativePackageEntry> packagesToInstall = new ArrayList<>();
 	private Properties installCommandsProperties = new Properties();
 
 	private IProvisioningAgent agent;
 	private String distro;
 
+	@Override
 	public IStatus initializeOperand(IProfile profile, Map<String, Object> parameters) {
 		agent = (IProvisioningAgent) parameters.get(ActionConstants.PARM_AGENT);
 		IArtifactKey artifactKey = (IArtifactKey) parameters.get(PARM_ARTIFACT);
@@ -57,15 +58,18 @@
 		return Status.OK_STATUS;
 	}
 
+	@Override
 	public IStatus initializePhase(IProgressMonitor monitor, IProfile profile, String phaseId, Map<String, Object> touchpointParameters) {
 		touchpointParameters.put(PARM_BACKUP, getBackupStore(profile));
 		return null;
 	}
 
+	@Override
 	public String qualifyAction(String actionId) {
 		return Activator.ID + "." + actionId; //$NON-NLS-1$
 	}
 
+	@Override
 	public IStatus prepare(IProfile profile) {
 		// does not have to do anything - everything is already in the correct place
 		// the commit means that the backup is discarded - if that fails it is not a 
@@ -73,6 +77,7 @@
 		return super.prepare(profile);
 	}
 
+	@Override
 	public IStatus commit(IProfile profile) {
 		promptForNativePackage();
 		IBackupStore store = getBackupStore(profile);
@@ -88,7 +93,7 @@
 		UIServices serviceUI = (UIServices) agent.getService(UIServices.SERVICE_NAME);
 		String text = Messages.PromptForNative_IntroText;
 		String downloadLinks = ""; //$NON-NLS-1$
-		List<NativePackageEntry> entriesWithoutDownloadLink = new ArrayList<NativePackageEntry>(packagesToInstall.size());
+		List<NativePackageEntry> entriesWithoutDownloadLink = new ArrayList<>(packagesToInstall.size());
 		for (NativePackageEntry nativePackageEntry : packagesToInstall) {
 			text += '\t' + nativePackageEntry.name + ' ' + formatVersion(nativePackageEntry) + '\n';
 			if (nativePackageEntry.getDownloadLink() != null) {
@@ -128,14 +133,8 @@
 		if (f == null)
 			return;
 
-		try {
-			InputStream is = new BufferedInputStream(new FileInputStream(f));
-			try {
-				properties.load(is);
-			} finally {
-				if (is != null)
-					is.close();
-			}
+		try (InputStream is = new BufferedInputStream(new FileInputStream(f))) {
+			properties.load(is);
 		} catch (IOException e) {
 			//fallthrough to return empty string
 		}
@@ -195,6 +194,7 @@
 		return buffer.toString();
 	}
 
+	@Override
 	public IStatus rollback(IProfile profile) {
 		IStatus returnStatus = Status.OK_STATUS;
 		IBackupStore store = getBackupStore(profile);
diff --git a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/Util.java b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/Util.java
index f20bafb..212c557 100644
--- a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/Util.java
+++ b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/Util.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007, 2015 IBM Corporation and others.
+ * Copyright (c) 2007, 2017 IBM Corporation 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
@@ -61,7 +61,7 @@
 		} catch (ProvisionException e) {
 			// the download cache doesn't exist or couldn't be read. Create new cache.
 			String repositoryName = location + " - Agent download cache"; //$NON-NLS-1$
-			Map<String, String> properties = new HashMap<String, String>(1);
+			Map<String, String> properties = new HashMap<>(1);
 			properties.put(IRepository.PROP_SYSTEM, Boolean.TRUE.toString());
 			repository = manager.createRepository(location, repositoryName, IArtifactRepositoryManager.TYPE_SIMPLE_REPOSITORY, properties);
 		}
@@ -94,16 +94,13 @@
 	 * If a path is specified, the path is consider as entry point in zip, as when the to directory in zip would have been the specified path.
 	 */
 	public static File[] unzipFile(File zipFile, File outputDir, String path, String[] includePatterns, String[] excludePatterns, IBackupStore store, String taskName, IProgressMonitor monitor) throws IOException {
-		InputStream in = new FileInputStream(zipFile);
-		try {
+		try (InputStream in = new FileInputStream(zipFile)) {
 			return unzipStream(in, zipFile.length(), outputDir, path, includePatterns, excludePatterns, store, taskName, monitor);
 		} catch (IOException e) {
 			// add the file name to the message
 			IOException ioException = new IOException(NLS.bind(Messages.Util_Error_Unzipping, zipFile, e.getMessage()));
 			ioException.initCause(e);
 			throw ioException;
-		} finally {
-			in.close();
 		}
 	}
 
@@ -123,90 +120,90 @@
 	 */
 	public static File[] unzipStream(InputStream stream, long size, File outputDir, String path, String[] includePatterns, String[] excludePatterns, IBackupStore store, String taskName, IProgressMonitor monitor) throws IOException {
 		InputStream is = monitor == null ? stream : stream; // new ProgressMonitorInputStream(stream, size, size, taskName, monitor); TODO Commented code
-		ZipInputStream in = new ZipInputStream(new BufferedInputStream(is));
-		ZipEntry ze = in.getNextEntry();
-		if (ze == null) {
-			// There must be at least one entry in a zip file.
-			// When there isn't getNextEntry returns null.
-			in.close();
-			throw new IOException(Messages.Util_Invalid_Zip_File_Format);
-		}
+		try (ZipInputStream in = new ZipInputStream(new BufferedInputStream(is))) {
+			ZipEntry ze = in.getNextEntry();
+			if (ze == null) {
+				// There must be at least one entry in a zip file.
+				// When there isn't getNextEntry returns null.
+				in.close();
+				throw new IOException(Messages.Util_Invalid_Zip_File_Format);
+			}
 
-		if (path != null && path.trim().length() == 0)
-			path = null;
-		Pattern pathRegex = path == null ? null : createAntStylePattern("(" + path + ")(*)"); //$NON-NLS-1$ //$NON-NLS-2$
+			if (path != null && path.trim().length() == 0)
+				path = null;
+			Pattern pathRegex = path == null ? null : createAntStylePattern("(" + path + ")(*)"); //$NON-NLS-1$ //$NON-NLS-2$
 
-		Collection<Pattern> includeRegexp = new ArrayList<Pattern>();
-		Collection<Pattern> excludeRegexp = new ArrayList<Pattern>();
-		if (includePatterns != null) {
-			for (String pattern : includePatterns) {
-				if (pattern != null) {
-					includeRegexp.add(createAntStylePattern(pattern));
+			Collection<Pattern> includeRegexp = new ArrayList<>();
+			Collection<Pattern> excludeRegexp = new ArrayList<>();
+			if (includePatterns != null) {
+				for (String pattern : includePatterns) {
+					if (pattern != null) {
+						includeRegexp.add(createAntStylePattern(pattern));
+					}
 				}
 			}
-		}
-		if (excludePatterns != null) {
-			for (String pattern : excludePatterns) {
-				if (pattern != null) {
-					excludeRegexp.add(createAntStylePattern(pattern));
+			if (excludePatterns != null) {
+				for (String pattern : excludePatterns) {
+					if (pattern != null) {
+						excludeRegexp.add(createAntStylePattern(pattern));
+					}
 				}
 			}
-		}
-		ArrayList<File> unzippedFiles = new ArrayList<File>();
-		do {
-			String name = ze.getName();
-			if (pathRegex == null || pathRegex.matcher(name).matches()) {
-				boolean unzip = includeRegexp.isEmpty();
-				for (Pattern pattern : includeRegexp) {
-					unzip = pattern.matcher(name).matches();
-					if (unzip)
-						break;
-				}
-				if (unzip && !excludeRegexp.isEmpty()) {
-					for (Pattern pattern : excludeRegexp) {
-						if (pattern.matcher(name).matches()) {
-							unzip = false;
+			ArrayList<File> unzippedFiles = new ArrayList<>();
+			do {
+				String name = ze.getName();
+				if (pathRegex == null || pathRegex.matcher(name).matches()) {
+					boolean unzip = includeRegexp.isEmpty();
+					for (Pattern pattern : includeRegexp) {
+						unzip = pattern.matcher(name).matches();
+						if (unzip)
 							break;
+					}
+					if (unzip && !excludeRegexp.isEmpty()) {
+						for (Pattern pattern : excludeRegexp) {
+							if (pattern.matcher(name).matches()) {
+								unzip = false;
+								break;
+							}
 						}
 					}
-				}
-				if (unzip) {
-					if (pathRegex != null) {
-						Matcher matcher = pathRegex.matcher(name);
-						if (matcher.matches()) {
-							name = matcher.group(2);
-							if (name.startsWith("/")) //$NON-NLS-1$
-								name = name.substring(1);
+					if (unzip) {
+						if (pathRegex != null) {
+							Matcher matcher = pathRegex.matcher(name);
+							if (matcher.matches()) {
+								name = matcher.group(2);
+								if (name.startsWith("/")) //$NON-NLS-1$
+									name = name.substring(1);
+							}
 						}
-					}
-					File outFile = new File(outputDir, name);
-					unzippedFiles.add(outFile);
-					if (ze.isDirectory()) {
-						outFile.mkdirs();
-					} else {
-						if (outFile.exists()) {
-							if (store != null)
-								store.backup(outFile);
-							else
-								outFile.delete();
+						File outFile = new File(outputDir, name);
+						unzippedFiles.add(outFile);
+						if (ze.isDirectory()) {
+							outFile.mkdirs();
 						} else {
-							outFile.getParentFile().mkdirs();
+							if (outFile.exists()) {
+								if (store != null)
+									store.backup(outFile);
+								else
+									outFile.delete();
+							} else {
+								outFile.getParentFile().mkdirs();
+							}
+							try {
+								copyStream(in, false, new FileOutputStream(outFile), true);
+							} catch (FileNotFoundException e) {
+								// TEMP: ignore this for now in case we're trying to replace
+								// a running eclipse.exe
+							}
+							outFile.setLastModified(ze.getTime());
 						}
-						try {
-							copyStream(in, false, new FileOutputStream(outFile), true);
-						} catch (FileNotFoundException e) {
-							// TEMP: ignore this for now in case we're trying to replace
-							// a running eclipse.exe
-						}
-						outFile.setLastModified(ze.getTime());
 					}
 				}
-			}
-			in.closeEntry();
-		} while ((ze = in.getNextEntry()) != null);
-		in.close();
+				in.closeEntry();
+			} while ((ze = in.getNextEntry()) != null);
+			return unzippedFiles.toArray(new File[unzippedFiles.size()]);
+		}
 
-		return unzippedFiles.toArray(new File[unzippedFiles.size()]);
 	}
 
 	/**
diff --git a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/BlockMacUpdate.java b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/BlockMacUpdate.java
index 2104384..a8e5f62 100644
--- a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/BlockMacUpdate.java
+++ b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/BlockMacUpdate.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2015 IBM Corporation and others.
+ * Copyright (c) 2015, 2017 IBM Corporation 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
diff --git a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/CheckAndPromptNativePackage.java b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/CheckAndPromptNativePackage.java
index 9752de0..94bc458 100644
--- a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/CheckAndPromptNativePackage.java
+++ b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/CheckAndPromptNativePackage.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2014 Rapicorp, Inc. and others.
+ *  Copyright (c) 2014, 2017 Rapicorp, 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
@@ -35,7 +35,7 @@
 
 		if (distro == null || packageName == null || (versionComparator != null && packageVersion == null))
 			return new Status(IStatus.ERROR, Activator.ID, Messages.Incorrect_Command);
-		
+
 		distro = distro.toLowerCase();
 
 		//If we are not running the distro we are provisioning, do nothing and return
@@ -48,7 +48,7 @@
 			return new Status(IStatus.ERROR, Activator.ID, NLS.bind(Messages.Cannot_Find_status, distro));
 
 		try {
-			List<String> cmd = new ArrayList<String>(4);
+			List<String> cmd = new ArrayList<>(4);
 			cmd.add(SHELL);
 			cmd.add(scriptToExecute.getAbsolutePath());
 			cmd.add(packageName);
@@ -84,7 +84,7 @@
 			if (scriptToExecute == null)
 				return false;
 
-			List<String> cmd = new ArrayList<String>(4);
+			List<String> cmd = new ArrayList<>(4);
 			cmd.add(SHELL);
 			cmd.add(scriptToExecute.getAbsolutePath());
 			int exitValue = new ProcessBuilder(cmd).start().waitFor();
diff --git a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/CheckAndPromptNativePackageWindowsRegistry.java b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/CheckAndPromptNativePackageWindowsRegistry.java
index d2768e0..82c263f 100644
--- a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/CheckAndPromptNativePackageWindowsRegistry.java
+++ b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/CheckAndPromptNativePackageWindowsRegistry.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2015 SAP SE and others.
+ *  Copyright (c) 2015, 2017 SAP SE 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
@@ -48,7 +48,7 @@
 			return new Status(IStatus.ERROR, Activator.ID, NLS.bind(Messages.Cannot_Find_status, WINDOWS_DISTRO));
 
 		try {
-			List<String> cmd = new ArrayList<String>(6);
+			List<String> cmd = new ArrayList<>(6);
 			cmd.add(SHELL);
 			cmd.add("/c"); //$NON-NLS-1$
 			cmd.add(scriptToExecute.getAbsolutePath());
diff --git a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/ChmodAction.java b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/ChmodAction.java
index 535e095..5c36761 100644
--- a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/ChmodAction.java
+++ b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/ChmodAction.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2008, 2012 IBM Corporation and others.
+ *  Copyright (c) 2008, 2017 IBM Corporation 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
@@ -35,6 +35,7 @@
 	//	 N          Y		N		incorrect, missing the targetFolder
 	//	 N          N		Y               Y
 	//	 N          N		N
+	@Override
 	public IStatus execute(Map<String, Object> parameters) {
 		Object absoluteFiles = parameters.get(ActionConstants.PARM_ABSOLUTE_FILES); //String or String[] 
 		String targetDir = (String) parameters.get(ActionConstants.PARM_TARGET_DIR);
@@ -74,7 +75,7 @@
 	private void doChmod(String fileToChmod, String permissions, String optionsString) {
 		String options[] = null;
 		if (optionsString != null) {
-			ArrayList<String> collect = new ArrayList<String>();
+			ArrayList<String> collect = new ArrayList<>();
 			String r = optionsString.trim();
 			while (r.length() > 0) {
 				int spaceIdx = r.indexOf(' ');
@@ -96,6 +97,7 @@
 		chmod(fileToChmod, permissions, options);
 	}
 
+	@Override
 	public IStatus undo(Map<String, Object> parameters) {
 		//TODO: implement undo ??
 		return Status.OK_STATUS;
@@ -131,19 +133,12 @@
 	}
 
 	private void readOffStream(InputStream inputStream) {
-		BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
-		try {
+		try (BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream))) {
 			while (reader.readLine() != null) {
 				// do nothing
 			}
 		} catch (IOException e) {
 			// ignore
-		} finally {
-			try {
-				reader.close();
-			} catch (IOException e) {
-				// ignore
-			}
 		}
 	}
 }
\ No newline at end of file
diff --git a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/CleanupcopyAction.java b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/CleanupcopyAction.java
index 1aa0389..3788594 100644
--- a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/CleanupcopyAction.java
+++ b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/CleanupcopyAction.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009, 2010 Cloudsmith Inc. and others.
+ * Copyright (c) 2009, 2017 Cloudsmith 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
@@ -25,10 +25,12 @@
 
 	public static final String ACTION_CLEANUPCOPY = "cleanupcopy"; //$NON-NLS-1$
 
+	@Override
 	public IStatus execute(Map<String, Object> parameters) {
 		return cleanupcopy(parameters, true);
 	}
 
+	@Override
 	public IStatus undo(Map<String, Object> parameters) {
 		return CopyAction.copy(parameters, false);
 	}
@@ -57,7 +59,7 @@
 			return Status.OK_STATUS;
 
 		StringTokenizer tokenizer = new StringTokenizer(copied, ActionConstants.PIPE);
-		List<File> directories = new ArrayList<File>();
+		List<File> directories = new ArrayList<>();
 		while (tokenizer.hasMoreTokens()) {
 			String fileName = tokenizer.nextToken();
 			File file = new File(fileName);
diff --git a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/CleanupzipAction.java b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/CleanupzipAction.java
index 622c090..e20976f 100644
--- a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/CleanupzipAction.java
+++ b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/CleanupzipAction.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2016 IBM Corporation and others.
+ * Copyright (c) 2008, 2017 IBM Corporation 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
@@ -26,10 +26,12 @@
 	private static final String UNZIPPED = "unzipped"; //$NON-NLS-1$
 	public static final String ACTION_CLEANUPZIP = "cleanupzip"; //$NON-NLS-1$
 
+	@Override
 	public IStatus execute(Map<String, Object> parameters) {
 		return cleanupzip(parameters, true);
 	}
 
+	@Override
 	public IStatus undo(Map<String, Object> parameters) {
 		return new UnzipAction().unzip(parameters, false);
 	}
@@ -70,7 +72,7 @@
 
 		IBackupStore store = restoreable ? (IBackupStore) parameters.get(NativeTouchpoint.PARM_BACKUP) : null;
 		StringTokenizer tokenizer = new StringTokenizer(unzipped, ActionConstants.PIPE);
-		List<File> directories = new ArrayList<File>();
+		List<File> directories = new ArrayList<>();
 		while (tokenizer.hasMoreTokens()) {
 			String fileName = tokenizer.nextToken();
 			File file = new File(fileName);
@@ -92,23 +94,19 @@
 		}
 		// sort directories by path length longest path is in top
 		// this will make sure that a sub folder will be removed before its parent
-		Collections.sort(directories, new Comparator<File>() {
-
-			public int compare(File f1, File f2) {
-				if (f1 == f2)
-					return 0;
-				if (f1 != null && f2 == null)
-					return -1;
-				if (f1 == null)
-					return 1;
-				try {
-					return Integer.valueOf(f2.getCanonicalPath().length()).compareTo(f1.getCanonicalPath().length());
-				} catch (IOException e) {
-					// did our best. try an absolute path compare
-					return Integer.valueOf(f2.getAbsolutePath().length()).compareTo(f1.getAbsolutePath().length());
-				}
+		Collections.sort(directories, (f1, f2) -> {
+			if (f1 == f2)
+				return 0;
+			if (f1 != null && f2 == null)
+				return -1;
+			if (f1 == null)
+				return 1;
+			try {
+				return Integer.valueOf(f2.getCanonicalPath().length()).compareTo(f1.getCanonicalPath().length());
+			} catch (IOException e) {
+				// did our best. try an absolute path compare
+				return Integer.valueOf(f2.getAbsolutePath().length()).compareTo(f1.getAbsolutePath().length());
 			}
-
 		});
 		for (File directory : directories) {
 			if (store != null) {
diff --git a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/CollectAction.java b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/CollectAction.java
index a205965..246d225 100644
--- a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/CollectAction.java
+++ b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/CollectAction.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2012 IBM Corporation and others.
+ * Copyright (c) 2008, 2017 IBM Corporation 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
@@ -28,6 +28,7 @@
 
 	public static final String ACTION_COLLECT = "collect"; //$NON-NLS-1$
 
+	@Override
 	public IStatus execute(Map<String, Object> parameters) {
 		IProfile profile = (IProfile) parameters.get(ActionConstants.PARM_PROFILE);
 		IProvisioningAgent agent = (IProvisioningAgent) parameters.get(ActionConstants.PARM_AGENT);
@@ -43,6 +44,7 @@
 		return Status.OK_STATUS;
 	}
 
+	@Override
 	public IStatus undo(Map<String, Object> parameters) {
 		// nothing to do for now
 		return Status.OK_STATUS;
diff --git a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/CopyAction.java b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/CopyAction.java
index 2983d35..cb8702c 100644
--- a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/CopyAction.java
+++ b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/CopyAction.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009, 2015 Cloudsmith Inc. and others.
+ * Copyright (c) 2009, 2017 Cloudsmith 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
@@ -33,6 +33,7 @@
 public class CopyAction extends ProvisioningAction {
 	public static final String ID = "cp"; //$NON-NLS-1$
 
+	@Override
 	public IStatus execute(Map<String, Object> parameters) {
 		return copy(parameters, true);
 	}
@@ -86,6 +87,7 @@
 		return Status.OK_STATUS;
 	}
 
+	@Override
 	public IStatus undo(Map<String, Object> parameters) {
 		return CleanupcopyAction.cleanupcopy(parameters, false);
 	}
@@ -98,7 +100,7 @@
 	 * @throws IOException
 	 */
 	private static File[] mergeCopy(File source, File target, boolean overwrite, IBackupStore backupStore) throws IOException {
-		ArrayList<File> copiedFiles = new ArrayList<File>();
+		ArrayList<File> copiedFiles = new ArrayList<>();
 		xcopy(copiedFiles, source, target, overwrite, backupStore);
 		return copiedFiles.toArray(new File[copiedFiles.size()]);
 	}
diff --git a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/LinkAction.java b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/LinkAction.java
index 03a591f..d0e56ca 100644
--- a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/LinkAction.java
+++ b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/LinkAction.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2008, 2015 IBM Corporation and others.
+ *  Copyright (c) 2008, 2017 IBM Corporation 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
@@ -21,6 +21,7 @@
 	public static final String ID = "ln"; //$NON-NLS-1$
 	private static final boolean WINDOWS = java.io.File.separatorChar == '\\';
 
+	@Override
 	public IStatus execute(Map<String, Object> parameters) {
 		String targetDir = (String) parameters.get(ActionConstants.PARM_TARGET_DIR);
 		if (targetDir == null)
@@ -46,6 +47,7 @@
 		return Status.OK_STATUS;
 	}
 
+	@Override
 	public IStatus undo(Map<String, Object> parameters) {
 		if (WINDOWS)
 			return Status.OK_STATUS;
@@ -96,19 +98,12 @@
 	}
 
 	private void readOffStream(InputStream inputStream) {
-		BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
-		try {
+		try (BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream))) {
 			while (reader.readLine() != null) {
 				// do nothing
 			}
 		} catch (IOException e) {
 			// ignore
-		} finally {
-			try {
-				reader.close();
-			} catch (IOException e) {
-				// ignore
-			}
 		}
 	}
 }
diff --git a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/MkdirAction.java b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/MkdirAction.java
index b98cfc7..e7fcde0 100644
--- a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/MkdirAction.java
+++ b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/MkdirAction.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2008, 2010 IBM Corporation and others.
+ *  Copyright (c) 2008, 2017 IBM Corporation 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
@@ -22,6 +22,7 @@
 public class MkdirAction extends ProvisioningAction {
 	public static final String ID = "mkdir"; //$NON-NLS-1$
 
+	@Override
 	public IStatus execute(Map<String, Object> parameters) {
 		String path = (String) parameters.get(ActionConstants.PARM_PATH);
 		if (path == null)
@@ -35,6 +36,7 @@
 		return Util.createError(NLS.bind(Messages.mkdir_failed, path, ID));
 	}
 
+	@Override
 	public IStatus undo(Map<String, Object> parameters) {
 		String path = (String) parameters.get(ActionConstants.PARM_PATH);
 		if (path == null)
diff --git a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/RemoveAction.java b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/RemoveAction.java
index 141d52b..8799963 100644
--- a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/RemoveAction.java
+++ b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/RemoveAction.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009, 2010 Cloudsmith Inc. and others.
+ * Copyright (c) 2009, 2017 Cloudsmith 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
@@ -22,6 +22,7 @@
 public class RemoveAction extends ProvisioningAction {
 	public static final String ID = "remove"; //$NON-NLS-1$
 
+	@Override
 	public IStatus execute(Map<String, Object> parameters) {
 		String path = (String) parameters.get(ActionConstants.PARM_PATH);
 		if (path == null)
@@ -41,6 +42,7 @@
 		return Status.OK_STATUS;
 	}
 
+	@Override
 	public IStatus undo(Map<String, Object> parameters) {
 		// Does not have to do anything as the backup will restore what was deleted
 		return Status.OK_STATUS;
diff --git a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/RmdirAction.java b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/RmdirAction.java
index d333b6e..63bd8e7 100644
--- a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/RmdirAction.java
+++ b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/RmdirAction.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- *  Copyright (c) 2008, 2011 IBM Corporation and others.
+ *  Copyright (c) 2008, 2017 IBM Corporation 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
@@ -22,6 +22,7 @@
 public class RmdirAction extends ProvisioningAction {
 	public static final String ID = "rmdir"; //$NON-NLS-1$
 
+	@Override
 	public IStatus execute(Map<String, Object> parameters) {
 		String path = (String) parameters.get(ActionConstants.PARM_PATH);
 		if (path == null)
@@ -47,6 +48,7 @@
 		return Status.OK_STATUS;
 	}
 
+	@Override
 	public IStatus undo(Map<String, Object> parameters) {
 		String path = (String) parameters.get(ActionConstants.PARM_PATH);
 		IBackupStore store = (IBackupStore) parameters.get(NativeTouchpoint.PARM_BACKUP);
diff --git a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/UnzipAction.java b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/UnzipAction.java
index 2c93bba..4b327ec 100644
--- a/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/UnzipAction.java
+++ b/bundles/org.eclipse.equinox.p2.touchpoint.natives/src/org/eclipse/equinox/internal/p2/touchpoint/natives/actions/UnzipAction.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2008, 2012 IBM Corporation and others.
+ * Copyright (c) 2008, 2017 IBM Corporation 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
@@ -28,10 +28,12 @@
 	public static final String ACTION_UNZIP = "unzip"; //$NON-NLS-1$
 	private Value<String[]> result;
 
+	@Override
 	public IStatus execute(Map<String, Object> parameters) {
 		return unzip(parameters, true);
 	}
 
+	@Override
 	public IStatus undo(Map<String, Object> parameters) {
 		return CleanupzipAction.cleanupzip(parameters, false);
 	}
@@ -75,7 +77,7 @@
 		for (int i = 0; i < unzippedFiles.length; i++) {
 			filesAsString[i] = unzippedFiles[i].getAbsolutePath();
 		}
-		result = new Value<String[]>(filesAsString);
+		result = new Value<>(filesAsString);
 
 		StringBuffer unzippedFileNameBuffer = new StringBuffer();
 		for (int i = 0; i < unzippedFiles.length; i++)