Bug 515708 - Reduce warnings in o.e.ui.views.log 

* Generify.
* Try-with-resources.
* Lambdas.
* Use StandardCharsets.

Change-Id: If869bc35813309d3e71d66b9d2763ce2ce87c391
Signed-off-by: Alexander Kurtakov <akurtako@redhat.com>
diff --git a/ui/org.eclipse.ui.views.log/.settings/org.eclipse.jdt.core.prefs b/ui/org.eclipse.ui.views.log/.settings/org.eclipse.jdt.core.prefs
index 25a6c95..654cc26 100644
--- a/ui/org.eclipse.ui.views.log/.settings/org.eclipse.jdt.core.prefs
+++ b/ui/org.eclipse.ui.views.log/.settings/org.eclipse.jdt.core.prefs
@@ -16,7 +16,17 @@
 org.eclipse.jdt.core.codeComplete.localSuffixes=
 org.eclipse.jdt.core.codeComplete.staticFieldPrefixes=
 org.eclipse.jdt.core.codeComplete.staticFieldSuffixes=
+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.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.8
@@ -28,12 +38,15 @@
 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=enabled
 org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
@@ -41,6 +54,7 @@
 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=error
 org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning
@@ -48,49 +62,76 @@
 org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private
 org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
 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=ignore
+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=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.unsafeTypeOperation=warning
 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.8
diff --git a/ui/org.eclipse.ui.views.log/src/org/eclipse/ui/internal/views/log/AbstractEntry.java b/ui/org.eclipse.ui.views.log/src/org/eclipse/ui/internal/views/log/AbstractEntry.java
index 02f53c4..597f47a 100644
--- a/ui/org.eclipse.ui.views.log/src/org/eclipse/ui/internal/views/log/AbstractEntry.java
+++ b/ui/org.eclipse.ui.views.log/src/org/eclipse/ui/internal/views/log/AbstractEntry.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2007 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
@@ -26,7 +26,7 @@
 	/**
 	 * The collection of direct children of this entry
 	 */
-	private List children = new ArrayList();
+	private List<AbstractEntry> children = new ArrayList<>();
 	protected Object parent;
 
 	/**
@@ -103,7 +103,7 @@
 	 *
 	 * @param list the list of children to remove
 	 */
-	public void removeChildren(List list) {
+	public void removeChildren(List<AbstractEntry> list) {
 		children.removeAll(list);
 	}
 
diff --git a/ui/org.eclipse.ui.views.log/src/org/eclipse/ui/internal/views/log/EventDetailsDialog.java b/ui/org.eclipse.ui.views.log/src/org/eclipse/ui/internal/views/log/EventDetailsDialog.java
index 89e91e1..c541758 100644
--- a/ui/org.eclipse.ui.views.log/src/org/eclipse/ui/internal/views/log/EventDetailsDialog.java
+++ b/ui/org.eclipse.ui.views.log/src/org/eclipse/ui/internal/views/log/EventDetailsDialog.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 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
@@ -37,10 +37,10 @@
 import org.eclipse.ui.*;
 
 /**
- * Displays details about Log Entry.
- * Event information is split in three sections: details, stack trace and session. Details
- * contain event date, message and severity. Stack trace is displayed if an exception is bound
- * to event. Stack trace entries can be filtered.
+ * Displays details about Log Entry. Event information is split in three
+ * sections: details, stack trace and session. Details contain event date,
+ * message and severity. Stack trace is displayed if an exception is bound to
+ * event. Stack trace entries can be filtered.
  */
 public class EventDetailsDialog extends TrayDialog {
 
@@ -93,12 +93,17 @@
 
 	/**
 	 *
-	 * @param parentShell shell in which dialog is displayed
-	 * @param selection entry initially selected and to be displayed
-	 * @param provider viewer
-	 * @param comparator comparator used to order all entries
+	 * @param parentShell
+	 *            shell in which dialog is displayed
+	 * @param selection
+	 *            entry initially selected and to be displayed
+	 * @param provider
+	 *            viewer
+	 * @param comparator
+	 *            comparator used to order all entries
 	 */
-	protected EventDetailsDialog(Shell parentShell, LogView logView, IAdaptable selection, ISelectionProvider provider, Comparator comparator, IMemento memento) {
+	protected EventDetailsDialog(Shell parentShell, LogView logView, IAdaptable selection, ISelectionProvider provider,
+			Comparator comparator, IMemento memento) {
 		super(parentShell);
 		this.logView = logView;
 		this.provider = (TreeViewer) provider;
@@ -180,7 +185,7 @@
 				c = 100; // Text area gets 100
 				b = height - a - c; // Stack trace should take up majority of room
 			}
-			sashWeights = new int[] {a, b, c};
+			sashWeights = new int[] { a, b, c };
 		}
 		getSashForm().setWeights(sashWeights);
 		return super.open();
@@ -271,19 +276,15 @@
 	}
 
 	protected void copyPressed() {
-		StringWriter writer = new StringWriter();
-		PrintWriter pwriter = new PrintWriter(writer);
-
-		entry.write(pwriter);
-		pwriter.flush();
-		String textVersion = writer.toString();
-		try {
-			pwriter.close();
-			writer.close();
-		} catch (IOException e) { // do nothing
+		try (StringWriter writer = new StringWriter(); PrintWriter pwriter = new PrintWriter(writer)) {
+			entry.write(pwriter);
+			pwriter.flush();
+			String textVersion = writer.toString();
+			// set the clipboard contents
+			clipboard.setContents(new Object[] { textVersion }, new Transfer[] { TextTransfer.getInstance() });
+		} catch (IOException e) {
+			// do nothing
 		}
-		// set the clipboard contents
-		clipboard.setContents(new Object[] {textVersion}, new Transfer[] {TextTransfer.getInstance()});
 	}
 
 	public void setComparator(Comparator comparator) {
@@ -293,33 +294,24 @@
 
 	private void setComparator(byte sortType, final int sortOrder) {
 		if (sortType == LogView.DATE) {
-			comparator = new Comparator() {
-				@Override
-				public int compare(Object e1, Object e2) {
-					Date date1 = ((LogEntry) e1).getDate();
-					Date date2 = ((LogEntry) e2).getDate();
-					if (sortOrder == LogView.ASCENDING)
-						return date1.getTime() < date2.getTime() ? LogView.DESCENDING : LogView.ASCENDING;
-					return date1.getTime() > date2.getTime() ? LogView.DESCENDING : LogView.ASCENDING;
-				}
+			comparator = (e1, e2) -> {
+				Date date1 = ((LogEntry) e1).getDate();
+				Date date2 = ((LogEntry) e2).getDate();
+				if (sortOrder == LogView.ASCENDING)
+					return date1.getTime() < date2.getTime() ? LogView.DESCENDING : LogView.ASCENDING;
+				return date1.getTime() > date2.getTime() ? LogView.DESCENDING : LogView.ASCENDING;
 			};
 		} else if (sortType == LogView.PLUGIN) {
-			comparator = new Comparator() {
-				@Override
-				public int compare(Object e1, Object e2) {
-					LogEntry entry1 = (LogEntry) e1;
-					LogEntry entry2 = (LogEntry) e2;
-					return collator.compare(entry1.getPluginId(), entry2.getPluginId()) * sortOrder;
-				}
+			comparator = (e1, e2) -> {
+				LogEntry entry1 = (LogEntry) e1;
+				LogEntry entry2 = (LogEntry) e2;
+				return collator.compare(entry1.getPluginId(), entry2.getPluginId()) * sortOrder;
 			};
 		} else {
-			comparator = new Comparator() {
-				@Override
-				public int compare(Object e1, Object e2) {
-					LogEntry entry1 = (LogEntry) e1;
-					LogEntry entry2 = (LogEntry) e2;
-					return collator.compare(entry1.getMessage(), entry2.getMessage()) * sortOrder;
-				}
+			comparator = (e1, e2) -> {
+				LogEntry entry1 = (LogEntry) e1;
+				LogEntry entry2 = (LogEntry) e2;
+				return collator.compare(entry1.getMessage(), entry2.getMessage()) * sortOrder;
 			};
 		}
 	}
@@ -402,7 +394,8 @@
 		if (isChild(entry)) {
 			boolean canGoToParent = (entry.getParent(entry) instanceof LogEntry);
 			backButton.setEnabled((childIndex > 0) || canGoToParent);
-			nextButton.setEnabled(nextChildExists(entry, parentEntry, entryChildren) || entry.hasChildren() || !isLastChild || !isAtEnd);
+			nextButton.setEnabled(nextChildExists(entry, parentEntry, entryChildren) || entry.hasChildren()
+					|| !isLastChild || !isAtEnd);
 		} else {
 			backButton.setEnabled(childIndex != 0);
 			nextButton.setEnabled(!isAtEnd || entry.hasChildren());
@@ -412,7 +405,7 @@
 	private void findNextSelectedChild(AbstractEntry originalEntry) {
 		if (isChild(parentEntry)) {
 			// we're at the end of the child list; find next parent
-			// to select.  If the parent is a child at the end of the child
+			// to select. If the parent is a child at the end of the child
 			// list, find its next parent entry to select, etc.
 
 			entry = parentEntry;
@@ -448,10 +441,11 @@
 		}
 	}
 
-	private boolean nextChildExists(AbstractEntry originalEntry, AbstractEntry originalParent, AbstractEntry[] originalEntries) {
+	private boolean nextChildExists(AbstractEntry originalEntry, AbstractEntry originalParent,
+			AbstractEntry[] originalEntries) {
 		if (isChild(parentEntry)) {
 			// we're at the end of the child list; find next parent
-			// to select.  If the parent is a child at the end of the child
+			// to select. If the parent is a child at the end of the child
 			// list, find its next parent entry to select, etc.
 
 			entry = parentEntry;
@@ -509,14 +503,14 @@
 		if (comparator != null)
 			Arrays.sort(children, comparator);
 
-		List result = new ArrayList();
+		List<AbstractEntry> result = new ArrayList<>();
 		for (Object element : children) {
 			if (element instanceof AbstractEntry) {
-				result.add(element);
+				result.add((AbstractEntry) element);
 			}
 		}
 
-		entryChildren = (AbstractEntry[]) result.toArray(new AbstractEntry[result.size()]);
+		entryChildren = result.toArray(new AbstractEntry[result.size()]);
 	}
 
 	public SashForm getSashForm() {
@@ -555,7 +549,7 @@
 		Composite comp = new Composite(parent, SWT.NONE);
 		GridLayout layout = new GridLayout();
 		layout.marginWidth = layout.marginHeight = 0;
-		//layout.numColumns = 1;
+		// layout.numColumns = 1;
 		comp.setLayout(layout);
 		comp.setLayoutData(new GridData(GridData.FILL_VERTICAL));
 		((GridData) comp.getLayoutData()).verticalAlignment = SWT.BOTTOM;
@@ -631,7 +625,8 @@
 			}
 		});
 
-		// set numColumns at the end, after all createButton() calls, which change this value
+		// set numColumns at the end, after all createButton() calls, which change this
+		// value
 		layout.numColumns = 2;
 	}
 
@@ -743,6 +738,7 @@
 
 	/**
 	 * Loads filters from preferences.
+	 * 
 	 * @return filters from preferences or empty array
 	 *
 	 * @since 3.4
@@ -758,18 +754,17 @@
 		}
 
 		StringTokenizer st = new StringTokenizer(filtersString, ";"); //$NON-NLS-1$
-		List filters = new ArrayList();
+		List<String> filters = new ArrayList<>();
 		while (st.hasMoreElements()) {
 			String filter = st.nextToken();
 			filters.add(filter);
 		}
 
-		return (String[]) filters.toArray(new String[filters.size()]);
+		return filters.toArray(new String[filters.size()]);
 	}
 
 	/**
-	 * Filters stack trace.
-	 * Every stack trace line is compared against all patterns.
+	 * Filters stack trace. Every stack trace line is compared against all patterns.
 	 * If line contains any of pattern strings, it's excluded from output.
 	 *
 	 * @returns filtered stack trace
@@ -800,10 +795,11 @@
 		return result.toString();
 	}
 
-	//--------------- configuration handling --------------
+	// --------------- configuration handling --------------
 
 	/**
 	 * Stores the current state in the dialog settings.
+	 * 
 	 * @since 2.0
 	 */
 	private void storeSettings() {
@@ -811,8 +807,8 @@
 	}
 
 	/**
-	 * Returns the dialog settings object used to share state
-	 * between several event detail dialogs.
+	 * Returns the dialog settings object used to share state between several event
+	 * detail dialogs.
 	 *
 	 * @return the dialog settings to be used
 	 */
@@ -825,8 +821,8 @@
 	}
 
 	/**
-	 * Initializes itself from the dialog settings with the same state
-	 * as at the previous invocation.
+	 * Initializes itself from the dialog settings with the same state as at the
+	 * previous invocation.
 	 */
 	private void readConfiguration() {
 		IDialogSettings s = getDialogSettings();
@@ -868,6 +864,7 @@
 
 	/**
 	 * Utility method to get all top level elements of the Log View
+	 * 
 	 * @return top level elements of the Log View
 	 */
 	private AbstractEntry[] getElements() {
diff --git a/ui/org.eclipse.ui.views.log/src/org/eclipse/ui/internal/views/log/FilterDialog.java b/ui/org.eclipse.ui.views.log/src/org/eclipse/ui/internal/views/log/FilterDialog.java
index 569f534..a7458aa 100644
--- a/ui/org.eclipse.ui.views.log/src/org/eclipse/ui/internal/views/log/FilterDialog.java
+++ b/ui/org.eclipse.ui.views.log/src/org/eclipse/ui/internal/views/log/FilterDialog.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2016 IBM Corporation and others.
+ * Copyright (c) 2003, 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
@@ -16,7 +16,8 @@
 import org.eclipse.jface.dialogs.Dialog;
 import org.eclipse.jface.window.Window;
 import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.*;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.*;
@@ -119,25 +120,19 @@
 		});
 
 		limitText = new Text(comp, SWT.BORDER);
-		limitText.addVerifyListener(new VerifyListener() {
-			@Override
-			public void verifyText(VerifyEvent e) {
-				if (Character.isLetter(e.character)) {
-					e.doit = false;
-				}
+		limitText.addVerifyListener(e -> {
+			if (Character.isLetter(e.character)) {
+				e.doit = false;
 			}
 		});
-		limitText.addModifyListener(new ModifyListener() {
-			@Override
-			public void modifyText(ModifyEvent e) {
-				try {
-					if (okButton == null)
-						return;
-					int value = Integer.parseInt(limitText.getText());
-					okButton.setEnabled(value > 0);
-				} catch (NumberFormatException e1) {
-					okButton.setEnabled(false);
-				}
+		limitText.addModifyListener(e -> {
+			try {
+				if (okButton == null)
+					return;
+				int value = Integer.parseInt(limitText.getText());
+				okButton.setEnabled(value > 0);
+			} catch (NumberFormatException e1) {
+				okButton.setEnabled(false);
 			}
 		});
 		limitText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
@@ -148,26 +143,20 @@
 		maxLogTailSizeLabel.setText(Messages.LogView_FilterDialog_maxLogTailSize);
 
 		maxLogTailSizeText = new Text(comp, SWT.BORDER);
-		maxLogTailSizeText.addVerifyListener(new VerifyListener() {
-			@Override
-			public void verifyText(VerifyEvent e) {
-				if (Character.isLetter(e.character)) {
-					e.doit = false;
-				}
+		maxLogTailSizeText.addVerifyListener(e -> {
+			if (Character.isLetter(e.character)) {
+				e.doit = false;
 			}
 		});
 
-		maxLogTailSizeText.addModifyListener(new ModifyListener() {
-			@Override
-			public void modifyText(ModifyEvent e) {
-				try {
-					if (okButton == null)
-						return;
-					int value = Integer.parseInt(maxLogTailSizeText.getText());
-					okButton.setEnabled(value > 0);
-				} catch (NumberFormatException e1) {
-					okButton.setEnabled(false);
-				}
+		maxLogTailSizeText.addModifyListener(e -> {
+			try {
+				if (okButton == null)
+					return;
+				int value = Integer.parseInt(maxLogTailSizeText.getText());
+				okButton.setEnabled(value > 0);
+			} catch (NumberFormatException e1) {
+				okButton.setEnabled(false);
 			}
 		});
 		maxLogTailSizeText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
@@ -274,14 +263,9 @@
 	}
 
 	private void addFilter() {
-		IInputValidator validator = new IInputValidator() {
-
-			@Override
-			public String isValid(String newText) {
-				return newText.indexOf(';') >= 0 ? Messages.FilterDialog_FilterShouldntContainSemicolon : null;
-			}
-
-		};
+		IInputValidator validator = newText -> newText.indexOf(';') >= 0
+				? Messages.FilterDialog_FilterShouldntContainSemicolon
+				: null;
 		InputDialog dialog = new InputDialog(getShell(), Messages.FilterDialog_AddFilterTitle, Messages.FilterDialog_AddFliterLabel, null, validator);
 		if (dialog.open() == Window.OK) {
 			String value = dialog.getValue().trim();
diff --git a/ui/org.eclipse.ui.views.log/src/org/eclipse/ui/internal/views/log/ImportLogAction.java b/ui/org.eclipse.ui.views.log/src/org/eclipse/ui/internal/views/log/ImportLogAction.java
index 960dcf0..1501cf6 100644
--- a/ui/org.eclipse.ui.views.log/src/org/eclipse/ui/internal/views/log/ImportLogAction.java
+++ b/ui/org.eclipse.ui.views.log/src/org/eclipse/ui/internal/views/log/ImportLogAction.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
@@ -150,7 +150,7 @@
 	 * @return list of all actions from LogFilesManager
 	 */
 	private ImportConfigurationLogAction[] getLogActions() {
-		List result = new ArrayList();
+		List<ImportConfigurationLogAction> result = new ArrayList<>();
 		Map sources = LogFilesManager.getLogSources();
 
 		for (Iterator j = sources.keySet().iterator(); j.hasNext();) {
@@ -159,7 +159,7 @@
 			result.add(new ImportConfigurationLogAction(name, location));
 		}
 
-		return (ImportConfigurationLogAction[]) result.toArray(new ImportConfigurationLogAction[result.size()]);
+		return result.toArray(new ImportConfigurationLogAction[result.size()]);
 	}
 
 	/**
diff --git a/ui/org.eclipse.ui.views.log/src/org/eclipse/ui/internal/views/log/LogEntry.java b/ui/org.eclipse.ui.views.log/src/org/eclipse/ui/internal/views/log/LogEntry.java
index ba44d5a..a4c99dd 100644
--- a/ui/org.eclipse.ui.views.log/src/org/eclipse/ui/internal/views/log/LogEntry.java
+++ b/ui/org.eclipse.ui.views.log/src/org/eclipse/ui/internal/views/log/LogEntry.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
+ * Copyright (c) 2000, 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
@@ -350,10 +350,10 @@
 		Throwable throwable = status.getException();
 		if (throwable != null) {
 			StringWriter swriter = new StringWriter();
-			PrintWriter pwriter = new PrintWriter(swriter);
-			throwable.printStackTrace(pwriter);
-			pwriter.flush();
-			pwriter.close();
+			try (PrintWriter pwriter = new PrintWriter(swriter)) {
+				throwable.printStackTrace(pwriter);
+				pwriter.flush();
+			}
 			stack = swriter.toString();
 		}
 		IStatus[] schildren = status.getChildren();
diff --git a/ui/org.eclipse.ui.views.log/src/org/eclipse/ui/internal/views/log/LogFilesManager.java b/ui/org.eclipse.ui.views.log/src/org/eclipse/ui/internal/views/log/LogFilesManager.java
index 6698393..bf9562a 100644
--- a/ui/org.eclipse.ui.views.log/src/org/eclipse/ui/internal/views/log/LogFilesManager.java
+++ b/ui/org.eclipse.ui.views.log/src/org/eclipse/ui/internal/views/log/LogFilesManager.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
@@ -19,7 +19,7 @@
  */
 public class LogFilesManager {
 
-	private static List logFileProviders = new ArrayList();
+	private static List<ILogFileProvider> logFileProviders = new ArrayList<>();
 
 	/**
 	 * Adds log file provider.
@@ -43,7 +43,7 @@
 	 * Returns the list of logs.
 	 */
 	static Map getLogSources() {
-		ILogFileProvider[] providers = (ILogFileProvider[]) logFileProviders.toArray(new ILogFileProvider[logFileProviders.size()]);
+		ILogFileProvider[] providers = logFileProviders.toArray(new ILogFileProvider[logFileProviders.size()]);
 		Map result = new HashMap(providers.length);
 
 		for (ILogFileProvider provider : providers) {
diff --git a/ui/org.eclipse.ui.views.log/src/org/eclipse/ui/internal/views/log/LogReader.java b/ui/org.eclipse.ui.views.log/src/org/eclipse/ui/internal/views/log/LogReader.java
index a9277eb..e42eb3f 100644
--- a/ui/org.eclipse.ui.views.log/src/org/eclipse/ui/internal/views/log/LogReader.java
+++ b/ui/org.eclipse.ui.views.log/src/org/eclipse/ui/internal/views/log/LogReader.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2014 IBM Corporation and others.
+ * Copyright (c) 2000, 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
@@ -14,6 +14,7 @@
 package org.eclipse.ui.internal.views.log;
 
 import java.io.*;
+import java.nio.charset.StandardCharsets;
 import java.text.ParseException;
 import java.util.*;
 import org.eclipse.core.runtime.IStatus;
@@ -48,10 +49,10 @@
 		PrintWriter writer = null;
 		int state = UNKNOWN_STATE;
 		LogSession currentSession = null;
-		BufferedReader reader = null;
-		try {
-			long maxTailSizeInBytes = maxLogTailSizeInMegaByte > 0 ? maxLogTailSizeInMegaByte * ONE_MEGA_BYTE_IN_BYTES : ONE_MEGA_BYTE_IN_BYTES;
-			reader = new BufferedReader(new InputStreamReader(new TailInputStream(file, maxTailSizeInBytes), "UTF-8")); //$NON-NLS-1$
+		long maxTailSizeInBytes = maxLogTailSizeInMegaByte > 0 ? maxLogTailSizeInMegaByte * ONE_MEGA_BYTE_IN_BYTES
+				: ONE_MEGA_BYTE_IN_BYTES;
+		try (BufferedReader reader = new BufferedReader(
+				new InputStreamReader(new TailInputStream(file, maxTailSizeInBytes), StandardCharsets.UTF_8))) {
 			for (;;) {
 				String line0 = reader.readLine();
 				if (line0 == null)
@@ -146,7 +147,6 @@
 				writerState = UNKNOWN_STATE;
 				current.setStack(swriter.toString());
 			}
-		} catch (FileNotFoundException e) { // do nothing
 		} catch (IOException e) { // do nothing
 		} finally {
 			if (file.length() > maxLogTailSizeInMegaByte && entries.size() == 0) {
@@ -154,11 +154,6 @@
 				entry.setSession(currentSession == null ? new LogSession() : currentSession);
 				entries.add(entry);
 			}
-			try {
-				if (reader != null)
-					reader.close();
-			} catch (IOException e1) { // do nothing
-			}
 			if (writer != null) {
 				setData(current, session, writerState, swriter);
 				writer.close();
diff --git a/ui/org.eclipse.ui.views.log/src/org/eclipse/ui/internal/views/log/LogView.java b/ui/org.eclipse.ui.views.log/src/org/eclipse/ui/internal/views/log/LogView.java
index 64ecb16..439bccc 100644
--- a/ui/org.eclipse.ui.views.log/src/org/eclipse/ui/internal/views/log/LogView.java
+++ b/ui/org.eclipse.ui.views.log/src/org/eclipse/ui/internal/views/log/LogView.java
@@ -23,6 +23,7 @@
 import com.ibm.icu.text.SimpleDateFormat;
 import java.io.*;
 import java.lang.reflect.InvocationTargetException;
+import java.nio.charset.StandardCharsets;
 import java.util.*;
 import java.util.List;
 import org.eclipse.core.runtime.*;
@@ -97,11 +98,11 @@
 	public static final int GROUP_BY_SESSION = 1;
 	public static final int GROUP_BY_PLUGIN = 2;
 
-	private List elements;
-	private Map groups;
+	private List<AbstractEntry> elements;
+	private Map<Object, Group> groups;
 	private LogSession currentSession;
 
-	private List batchedEntries;
+	private List<LogEntry> batchedEntries;
 	private boolean batchEntries;
 
 	private Clipboard fClipboard;
@@ -166,9 +167,9 @@
 	 * Constructor
 	 */
 	public LogView() {
-		elements = new ArrayList();
-		groups = new HashMap();
-		batchedEntries = new ArrayList();
+		elements = new ArrayList<>();
+		groups = new HashMap<>();
+		batchedEntries = new ArrayList<>();
 		fInputFile = Platform.getLogFileLocation().toFile();
 	}
 
@@ -283,31 +284,28 @@
 		fPropertiesAction = createPropertiesAction();
 
 		MenuManager popupMenuManager = new MenuManager("#PopupMenu"); //$NON-NLS-1$
-		IMenuListener listener = new IMenuListener() {
-			@Override
-			public void menuAboutToShow(IMenuManager manager) {
-				manager.add(fCopyAction);
-				manager.add(new Separator(LOG_ENTRY_GROUP));
-				clearAction.setEnabled(!(elements.size() == 0 && groups.size() == 0));
-				manager.add(clearAction);
-				manager.add(fDeleteLogAction);
-				manager.add(fOpenLogAction);
-				manager.add(fReadLogAction);
-				manager.add(new Separator());
-				manager.add(fExportLogAction);
-				manager.add(createImportLogAction());
-				manager.add(new Separator());
-				manager.add(fExportLogEntryAction);
-				manager.add(new Separator());
+		IMenuListener listener = manager -> {
+			manager.add(fCopyAction);
+			manager.add(new Separator(LOG_ENTRY_GROUP));
+			clearAction.setEnabled(!(elements.size() == 0 && groups.size() == 0));
+			manager.add(clearAction);
+			manager.add(fDeleteLogAction);
+			manager.add(fOpenLogAction);
+			manager.add(fReadLogAction);
+			manager.add(new Separator());
+			manager.add(fExportLogAction);
+			manager.add(createImportLogAction());
+			manager.add(new Separator());
+			manager.add(fExportLogEntryAction);
+			manager.add(new Separator());
 
-				((EventDetailsDialogAction) fPropertiesAction).setComparator(fComparator);
-				TreeItem[] selection = fTree.getSelection();
-				if ((selection.length > 0) && (selection[0].getData() instanceof LogEntry)) {
-					manager.add(fPropertiesAction);
-				}
-
-				manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
+			((EventDetailsDialogAction) fPropertiesAction).setComparator(fComparator);
+			TreeItem[] selection = fTree.getSelection();
+			if ((selection.length > 0) && (selection[0].getData() instanceof LogEntry)) {
+				manager.add(fPropertiesAction);
 			}
+
+			manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
 		};
 		popupMenuManager.addMenuListener(listener);
 		popupMenuManager.setRemoveAllWhenShown(true);
@@ -553,20 +551,14 @@
 		fFilteredTree.getViewer().setContentProvider(new LogViewContentProvider(this));
 		fFilteredTree.getViewer().setLabelProvider(fLabelProvider = new LogViewLabelProvider(this));
 		fLabelProvider.connect(this);
-		fFilteredTree.getViewer().addSelectionChangedListener(new ISelectionChangedListener() {
-			@Override
-			public void selectionChanged(SelectionChangedEvent e) {
-				handleSelectionChanged(e.getSelection());
-				if (fPropertiesAction.isEnabled())
-					((EventDetailsDialogAction) fPropertiesAction).resetSelection();
-			}
+		fFilteredTree.getViewer().addSelectionChangedListener(e -> {
+			handleSelectionChanged(e.getSelection());
+			if (fPropertiesAction.isEnabled())
+				((EventDetailsDialogAction) fPropertiesAction).resetSelection();
 		});
-		fFilteredTree.getViewer().addDoubleClickListener(new IDoubleClickListener() {
-			@Override
-			public void doubleClick(DoubleClickEvent event) {
-				((EventDetailsDialogAction) fPropertiesAction).setComparator(fComparator);
-				fPropertiesAction.run();
-			}
+		fFilteredTree.getViewer().addDoubleClickListener(event -> {
+			((EventDetailsDialogAction) fPropertiesAction).setComparator(fComparator);
+			fPropertiesAction.run();
 		});
 		fFilteredTree.getViewer().setInput(this);
 		addMouseListeners();
@@ -701,12 +693,9 @@
 	protected void setLogFile(File path) {
 		fInputFile = path;
 		fDirectory = fInputFile.getParent();
-		IRunnableWithProgress op = new IRunnableWithProgress() {
-			@Override
-			public void run(IProgressMonitor monitor) {
-				monitor.beginTask(Messages.LogView_operation_importing, IProgressMonitor.UNKNOWN);
-				readLogFile();
-			}
+		IRunnableWithProgress op = monitor -> {
+			monitor.beginTask(Messages.LogView_operation_importing, IProgressMonitor.UNKNOWN);
+			readLogFile();
 		};
 		ProgressMonitorDialog pmd = new ProgressMonitorDialog(getViewSite().getShell());
 		try {
@@ -739,12 +728,13 @@
 			}
 
 			BufferedReader in = null;
-			BufferedWriter out = null;
-			try {
-				out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outputFile), "UTF-8")); //$NON-NLS-1$
-				if (exportWholeLog)
-					in = new BufferedReader(new InputStreamReader(new FileInputStream(fInputFile), "UTF-8")); //$NON-NLS-1$
-				else {
+			try (BufferedWriter out = new BufferedWriter(
+					new OutputStreamWriter(new FileOutputStream(outputFile), StandardCharsets.UTF_8));) {
+				// $NON-NLS-1$
+				if (exportWholeLog) {
+					in = new BufferedReader(
+							new InputStreamReader(new FileInputStream(fInputFile), StandardCharsets.UTF_8));
+				} else {
 					String selectedEntryAsString = selectionToString(fFilteredTree.getViewer().getSelection());
 					in = new BufferedReader(new StringReader(selectedEntryAsString));
 				}
@@ -758,12 +748,6 @@
 				} catch (IOException e) {
 					// do nothing
 				}
-				try {
-					if (out != null)
-						out.close();
-				} catch (IOException e) {
-					// do nothing
-				}
 			}
 		}
 	}
@@ -798,21 +782,18 @@
 	}
 
 	public AbstractEntry[] getElements() {
-		return (AbstractEntry[]) elements.toArray(new AbstractEntry[elements.size()]);
+		return elements.toArray(new AbstractEntry[elements.size()]);
 	}
 
 	protected void handleClear() {
-		BusyIndicator.showWhile(fTree.getDisplay(), new Runnable() {
-			@Override
-			public void run() {
-				elements.clear();
-				groups.clear();
-				if (currentSession != null) {
-					currentSession.removeAllChildren();
-				}
-				asyncRefresh(false);
-				resetDialogButtons();
+		BusyIndicator.showWhile(fTree.getDisplay(), () -> {
+			elements.clear();
+			groups.clear();
+			if (currentSession != null) {
+				currentSession.removeAllChildren();
 			}
+			asyncRefresh(false);
+			resetDialogButtons();
 		});
 	}
 
@@ -820,12 +801,9 @@
 	 * Reloads the log
 	 */
 	protected void reloadLog() {
-		IRunnableWithProgress op = new IRunnableWithProgress() {
-			@Override
-			public void run(IProgressMonitor monitor) {
-				monitor.beginTask(Messages.LogView_operation_reloading, IProgressMonitor.UNKNOWN);
-				readLogFile();
-			}
+		IRunnableWithProgress op = monitor -> {
+			monitor.beginTask(Messages.LogView_operation_reloading, IProgressMonitor.UNKNOWN);
+			readLogFile();
 		};
 		ProgressMonitorDialog pmd = new ProgressMonitorDialog(getViewSite().getShell());
 		try {
@@ -847,7 +825,7 @@
 		elements.clear();
 		groups.clear();
 
-		List result = new ArrayList();
+		List<LogEntry> result = new ArrayList<>();
 		LogSession lastLogSession = LogReader.parseLogFile(this.fInputFile, getLogMaxTailSize(), result, this.fMemento);
 		if (lastLogSession != null && (lastLogSession.getDate() == null || isEclipseStartTime(lastLogSession.getDate()))) {
 			currentSession = lastLogSession;
@@ -858,12 +836,7 @@
 		group(result);
 		limitEntriesCount();
 
-		getSite().getShell().getDisplay().asyncExec(new Runnable() {
-			@Override
-			public void run() {
-				setContentDescription(getTitleSummary());
-			}
-		});
+		getSite().getShell().getDisplay().asyncExec(() -> setContentDescription(getTitleSummary()));
 
 	}
 
@@ -905,12 +878,12 @@
 	 * Add new entries to correct groups in the view.
 	 * @param entries new entries to show up in groups in the view.
 	 */
-	private void group(List entries) {
+	private void group(List<LogEntry> entries) {
 		if (fMemento.getInteger(P_GROUP_BY).intValue() == GROUP_BY_NONE) {
 			elements.addAll(entries);
 		} else {
-			for (Iterator i = entries.iterator(); i.hasNext();) {
-				LogEntry entry = (LogEntry) i.next();
+			for (Iterator<LogEntry> i = entries.iterator(); i.hasNext();) {
+				LogEntry entry = i.next();
 				Group group = getGroup(entry);
 				group.addChild(entry);
 			}
@@ -932,34 +905,31 @@
 		if (entriesCount <= limit) {
 			return;
 		}
-		Comparator dateComparator = new Comparator() {
-			@Override
-			public int compare(Object o1, Object o2) {
-				Date l1 = ((LogEntry) o1).getDate();
-				Date l2 = ((LogEntry) o2).getDate();
-				if ((l1 != null) && (l2 != null)) {
-					return l1.before(l2) ? -1 : 1;
-				} else if ((l1 == null) && (l2 == null)) {
-					return 0;
-				} else
-					return (l1 == null) ? -1 : 1;
-			}
+		Comparator<LogEntry> dateComparator = (o1, o2) -> {
+			Date l1 = o1.getDate();
+			Date l2 = o2.getDate();
+			if ((l1 != null) && (l2 != null)) {
+				return l1.before(l2) ? -1 : 1;
+			} else if ((l1 == null) && (l2 == null)) {
+				return 0;
+			} else
+				return (l1 == null) ? -1 : 1;
 		};
 
 		if (fMemento.getInteger(P_GROUP_BY).intValue() == GROUP_BY_NONE) {
 			elements.subList(0, elements.size() - limit).clear();
 		} else {
 			List copy = new ArrayList(entriesCount);
-			for (Iterator i = elements.iterator(); i.hasNext();) {
-				AbstractEntry group = (AbstractEntry) i.next();
+			for (Iterator<AbstractEntry> i = elements.iterator(); i.hasNext();) {
+				AbstractEntry group = i.next();
 				copy.addAll(Arrays.asList(group.getChildren(group)));
 			}
 
 			Collections.sort(copy, dateComparator);
 			List toRemove = copy.subList(0, copy.size() - limit);
 
-			for (Iterator i = elements.iterator(); i.hasNext();) {
-				AbstractEntry group = (AbstractEntry) i.next();
+			for (Iterator<AbstractEntry> i = elements.iterator(); i.hasNext();) {
+				AbstractEntry group = i.next();
 				group.removeChildren(toRemove);
 			}
 		}
@@ -971,8 +941,8 @@
 			return elements.size();
 		}
 		int size = 0;
-		for (Iterator i = elements.iterator(); i.hasNext();) {
-			AbstractEntry group = (AbstractEntry) i.next();
+		for (Iterator<AbstractEntry> i = elements.iterator(); i.hasNext();) {
+			AbstractEntry group = i.next();
 			size += group.size();
 		}
 		return size;
@@ -1009,7 +979,7 @@
 			return null;
 		}
 
-		Group group = (Group) groups.get(elementGroupId);
+		Group group = groups.get(elementGroupId);
 		if (group == null) {
 			if (groupBy == GROUP_BY_SESSION) {
 				group = entry.getSession();
@@ -1062,7 +1032,7 @@
 			protected IStatus run(IProgressMonitor monitor) {
 				for (int i = 0; i < batchedEntries.size(); i++) {
 					if (!monitor.isCanceled()) {
-						LogEntry entry = (LogEntry) batchedEntries.get(i);
+						LogEntry entry = batchedEntries.get(i);
 						pushEntry(entry);
 						batchedEntries.remove(i);
 					}
@@ -1102,24 +1072,22 @@
 		Display display = fTree.getDisplay();
 		final ViewPart view = this;
 		if (display != null) {
-			display.asyncExec(new Runnable() {
-				@Override
-				public void run() {
-					if (!fTree.isDisposed()) {
-						TreeViewer viewer = fFilteredTree.getViewer();
-						viewer.refresh();
-						viewer.expandToLevel(2);
-						fDeleteLogAction.setEnabled(fInputFile.exists() && fInputFile.equals(Platform.getLogFileLocation().toFile()));
-						fOpenLogAction.setEnabled(fInputFile.exists());
-						fExportLogAction.setEnabled(fInputFile.exists());
-						fExportLogEntryAction.setEnabled(!viewer.getSelection().isEmpty());
-						if (activate && fActivateViewAction.isChecked()) {
-							IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
-							if (window != null) {
-								IWorkbenchPage page = window.getActivePage();
-								if (page != null) {
-									page.bringToTop(view);
-								}
+			display.asyncExec(() -> {
+				if (!fTree.isDisposed()) {
+					TreeViewer viewer = fFilteredTree.getViewer();
+					viewer.refresh();
+					viewer.expandToLevel(2);
+					fDeleteLogAction.setEnabled(
+							fInputFile.exists() && fInputFile.equals(Platform.getLogFileLocation().toFile()));
+					fOpenLogAction.setEnabled(fInputFile.exists());
+					fExportLogAction.setEnabled(fInputFile.exists());
+					fExportLogEntryAction.setEnabled(!viewer.getSelection().isEmpty());
+					if (activate && fActivateViewAction.isChecked()) {
+						IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
+						if (window != null) {
+							IWorkbenchPage page = window.getActivePage();
+							if (page != null) {
+								page.bringToTop(view);
 							}
 						}
 					}
@@ -1179,21 +1147,17 @@
 	 * @return textual log entry representation or null if selection doesn't contain log entry
 	 */
 	private static String selectionToString(ISelection selection) {
-		StringWriter writer = new StringWriter();
-		PrintWriter pwriter = new PrintWriter(writer);
-		if (selection.isEmpty())
-			return null;
-		AbstractEntry entry = (AbstractEntry) ((IStructuredSelection) selection).getFirstElement();
-		entry.write(pwriter);
-		pwriter.flush();
-		String textVersion = writer.toString();
-		pwriter.close();
-		try {
-			writer.close();
+		String textVersion = null;
+		try (StringWriter writer = new StringWriter(); PrintWriter pwriter = new PrintWriter(writer)) {
+			if (selection.isEmpty())
+				return null;
+			AbstractEntry entry = (AbstractEntry) ((IStructuredSelection) selection).getFirstElement();
+			entry.write(pwriter);
+			pwriter.flush();
+			textVersion = writer.toString();
 		} catch (IOException e) {
 			// empty
 		}
-
 		return textVersion;
 	}
 
@@ -1294,21 +1258,18 @@
 	}
 
 	private void addMouseListeners() {
-		Listener tableListener = new Listener() {
-			@Override
-			public void handleEvent(Event e) {
-				switch (e.type) {
-					case SWT.MouseExit :
-					case SWT.MouseMove :
-						onMouseMove(e);
-						break;
-					case SWT.MouseHover :
-						onMouseHover(e);
-						break;
-					case SWT.MouseDown :
-						onMouseDown(e);
-						break;
-				}
+		Listener tableListener = e -> {
+			switch (e.type) {
+			case SWT.MouseExit:
+			case SWT.MouseMove:
+				onMouseMove(e);
+				break;
+			case SWT.MouseHover:
+				onMouseHover(e);
+				break;
+			case SWT.MouseDown:
+				onMouseDown(e);
+				break;
 			}
 		};
 		int[] tableEvents = new int[] {SWT.MouseDown, SWT.MouseMove, SWT.MouseHover, SWT.MouseExit};
@@ -1376,12 +1337,7 @@
 		gd.grabExcessHorizontalSpace = true;
 		fTextLabel.setLayoutData(gd);
 		fTextLabel.setEditable(false);
-		fTextShell.addDisposeListener(new DisposeListener() {
-			@Override
-			public void widgetDisposed(DisposeEvent e) {
-				onTextShellDispose(e);
-			}
-		});
+		fTextShell.addDisposeListener(e -> onTextShellDispose(e));
 	}
 
 	void onTextShellDispose(DisposeEvent e) {
@@ -1469,52 +1425,43 @@
 
 	private void setComparator(byte sortType) {
 		if (sortType == DATE) {
-			fComparator = new Comparator() {
-				@Override
-				public int compare(Object e1, Object e2) {
-					long date1 = 0;
-					long date2 = 0;
-					if ((e1 instanceof LogEntry) && (e2 instanceof LogEntry)) {
-						date1 = ((LogEntry) e1).getDate().getTime();
-						date2 = ((LogEntry) e2).getDate().getTime();
-					} else if ((e1 instanceof LogSession) && (e2 instanceof LogSession)) {
-						date1 = ((LogSession) e1).getDate() == null ? 0 : ((LogSession) e1).getDate().getTime();
-						date2 = ((LogSession) e2).getDate() == null ? 0 : ((LogSession) e2).getDate().getTime();
-					}
-					if (date1 == date2) {
-						int result = elements.indexOf(e2) - elements.indexOf(e1);
-						if (DATE_ORDER == DESCENDING)
-							result *= DESCENDING;
-						return result;
-					}
-					if (DATE_ORDER == DESCENDING)
-						return date1 > date2 ? DESCENDING : ASCENDING;
-					return date1 < date2 ? DESCENDING : ASCENDING;
+			fComparator = (e1, e2) -> {
+				long date1 = 0;
+				long date2 = 0;
+				if ((e1 instanceof LogEntry) && (e2 instanceof LogEntry)) {
+					date1 = ((LogEntry) e1).getDate().getTime();
+					date2 = ((LogEntry) e2).getDate().getTime();
+				} else if ((e1 instanceof LogSession) && (e2 instanceof LogSession)) {
+					date1 = ((LogSession) e1).getDate() == null ? 0 : ((LogSession) e1).getDate().getTime();
+					date2 = ((LogSession) e2).getDate() == null ? 0 : ((LogSession) e2).getDate().getTime();
 				}
+				if (date1 == date2) {
+					int result = elements.indexOf(e2) - elements.indexOf(e1);
+					if (DATE_ORDER == DESCENDING)
+						result *= DESCENDING;
+					return result;
+				}
+				if (DATE_ORDER == DESCENDING)
+					return date1 > date2 ? DESCENDING : ASCENDING;
+				return date1 < date2 ? DESCENDING : ASCENDING;
 			};
 		} else if (sortType == PLUGIN) {
-			fComparator = new Comparator() {
-				@Override
-				public int compare(Object e1, Object e2) {
-					if ((e1 instanceof LogEntry) && (e2 instanceof LogEntry)) {
-						LogEntry entry1 = (LogEntry) e1;
-						LogEntry entry2 = (LogEntry) e2;
-						return getDefaultComparator().compare(entry1.getPluginId(), entry2.getPluginId()) * PLUGIN_ORDER;
-					}
-					return 0;
+			fComparator = (e1, e2) -> {
+				if ((e1 instanceof LogEntry) && (e2 instanceof LogEntry)) {
+					LogEntry entry1 = (LogEntry) e1;
+					LogEntry entry2 = (LogEntry) e2;
+					return getDefaultComparator().compare(entry1.getPluginId(), entry2.getPluginId()) * PLUGIN_ORDER;
 				}
+				return 0;
 			};
 		} else {
-			fComparator = new Comparator() {
-				@Override
-				public int compare(Object e1, Object e2) {
-					if ((e1 instanceof LogEntry) && (e2 instanceof LogEntry)) {
-						LogEntry entry1 = (LogEntry) e1;
-						LogEntry entry2 = (LogEntry) e2;
-						return getDefaultComparator().compare(entry1.getMessage(), entry2.getMessage()) * MESSAGE_ORDER;
-					}
-					return 0;
+			fComparator = (e1, e2) -> {
+				if ((e1 instanceof LogEntry) && (e2 instanceof LogEntry)) {
+					LogEntry entry1 = (LogEntry) e1;
+					LogEntry entry2 = (LogEntry) e2;
+					return getDefaultComparator().compare(entry1.getMessage(), entry2.getMessage()) * MESSAGE_ORDER;
 				}
+				return 0;
 			};
 		}
 	}
@@ -1736,12 +1683,9 @@
 				}
 				if (failed) {
 					final OpenLogDialog openDialog = new OpenLogDialog(shell, fInputFile);
-					Display.getDefault().asyncExec(new Runnable() {
-						@Override
-						public void run() {
-							openDialog.create();
-							openDialog.open();
-						}
+					Display.getDefault().asyncExec(() -> {
+						openDialog.create();
+						openDialog.open();
 					});
 				}
 				return Status.OK_STATUS;
diff --git a/ui/org.eclipse.ui.views.log/src/org/eclipse/ui/internal/views/log/LogViewLabelProvider.java b/ui/org.eclipse.ui.views.log/src/org/eclipse/ui/internal/views/log/LogViewLabelProvider.java
index bf2730a..344925e 100644
--- a/ui/org.eclipse.ui.views.log/src/org/eclipse/ui/internal/views/log/LogViewLabelProvider.java
+++ b/ui/org.eclipse.ui.views.log/src/org/eclipse/ui/internal/views/log/LogViewLabelProvider.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 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
@@ -30,7 +30,7 @@
 	private Image warningImage;
 	private Image errorWithStackImage;
 	private Image hierarchicalImage;
-	ArrayList consumers = new ArrayList();
+	ArrayList<Object> consumers = new ArrayList<>();
 	private DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT);
 
 	private LogView logView;
diff --git a/ui/org.eclipse.ui.views.log/src/org/eclipse/ui/internal/views/log/OpenLogDialog.java b/ui/org.eclipse.ui.views.log/src/org/eclipse/ui/internal/views/log/OpenLogDialog.java
index 0b7ea0e..275c3f1 100644
--- a/ui/org.eclipse.ui.views.log/src/org/eclipse/ui/internal/views/log/OpenLogDialog.java
+++ b/ui/org.eclipse.ui.views.log/src/org/eclipse/ui/internal/views/log/OpenLogDialog.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2003, 2013 IBM Corporation and others.
+ * Copyright (c) 2003, 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
@@ -83,13 +83,13 @@
 
 	private String getLogSummary() {
 		StringWriter out = new StringWriter();
-		PrintWriter writer = new PrintWriter(out);
-		if (logFile.length() > LogReader.MAX_FILE_LENGTH) {
-			readLargeFileWithMonitor(writer);
-		} else {
-			readFileWithMonitor(writer);
+		try (PrintWriter writer = new PrintWriter(out)) {
+			if (logFile.length() > LogReader.MAX_FILE_LENGTH) {
+				readLargeFileWithMonitor(writer);
+			} else {
+				readFileWithMonitor(writer);
+			}
 		}
-		writer.close();
 		return out.toString();
 	}
 
@@ -157,27 +157,19 @@
 
 	// reading file within MAX_FILE_LENGTH size
 	void readFile(PrintWriter writer) throws FileNotFoundException, IOException {
-		BufferedReader bReader = null;
-		try {
-			bReader = new BufferedReader(new FileReader(logFile));
+		try (BufferedReader bReader = new BufferedReader(new FileReader(logFile))) {
+
 			while (bReader.ready()) {
 				writer.println(bReader.readLine());
 			}
-		} finally {
-			try {
-				if (bReader != null)
-					bReader.close();
-			} catch (IOException e1) { // do nothing
-			}
 		}
 	}
 
 	// reading large files
 	void readLargeFile(PrintWriter writer) throws FileNotFoundException, IOException {
-		RandomAccessFile random = null;
 		boolean hasStarted = false;
-		try {
-			random = new RandomAccessFile(logFile, "r"); //$NON-NLS-1$
+		try (RandomAccessFile random = new RandomAccessFile(logFile, "r");) { //$NON-NLS-1$
+
 			random.seek(logFile.length() - LogReader.MAX_FILE_LENGTH);
 			for (;;) {
 				String line = random.readLine();
@@ -192,25 +184,16 @@
 					writer.println(line);
 				continue;
 			}
-		} finally {
-			try {
-				if (random != null)
-					random.close();
-			} catch (IOException e1) { // do nothing
-			}
 		}
 	}
 
 	private void readLargeFileWithMonitor(final PrintWriter writer) {
-		IRunnableWithProgress runnable = new IRunnableWithProgress() {
-			@Override
-			public void run(IProgressMonitor monitor) {
-				monitor.beginTask(Messages.OpenLogDialog_message, IProgressMonitor.UNKNOWN);
-				try {
-					readLargeFile(writer);
-				} catch (IOException e) {
-					writer.println(Messages.OpenLogDialog_cannotDisplay);
-				}
+		IRunnableWithProgress runnable = monitor -> {
+			monitor.beginTask(Messages.OpenLogDialog_message, IProgressMonitor.UNKNOWN);
+			try {
+				readLargeFile(writer);
+			} catch (IOException e) {
+				writer.println(Messages.OpenLogDialog_cannotDisplay);
 			}
 		};
 		ProgressMonitorDialog dialog = new ProgressMonitorDialog(getParentShell());
@@ -222,15 +205,12 @@
 	}
 
 	private void readFileWithMonitor(final PrintWriter writer) {
-		IRunnableWithProgress runnable = new IRunnableWithProgress() {
-			@Override
-			public void run(IProgressMonitor monitor) {
-				monitor.beginTask(Messages.OpenLogDialog_message, IProgressMonitor.UNKNOWN);
-				try {
-					readFile(writer);
-				} catch (IOException e) {
-					writer.println(Messages.OpenLogDialog_cannotDisplay);
-				}
+		IRunnableWithProgress runnable = monitor -> {
+			monitor.beginTask(Messages.OpenLogDialog_message, IProgressMonitor.UNKNOWN);
+			try {
+				readFile(writer);
+			} catch (IOException e) {
+				writer.println(Messages.OpenLogDialog_cannotDisplay);
 			}
 		};
 		ProgressMonitorDialog dialog = new ProgressMonitorDialog(getParentShell());