From 48156b4653993c6ca3ea04ee81a6453388684b00 Mon Sep 17 00:00:00 2001 From: Jonah Graham Date: Tue, 1 Dec 2020 18:32:47 -0500 Subject: [PATCH] Bug 572594: Avoid using generic Consumer interface Using the Consumer interface means that code navigation is substantially harder. e.g. open ImportMemoryDialog and do a call hierarchy on who calls scrollRenderings. You end up in Consumer.accept, which (naturally) has 100s of callers, so identifying which ones are relevant is very difficult. Change-Id: I8817568e992955d5b01a591a9cffb2447b9e5008 --- .../core/memory/tests/CollectScrolls.java | 5 ++-- .../META-INF/MANIFEST.MF | 2 +- .../core/memory/transport/FileImport.java | 5 ++-- .../core/memory/transport/IScrollMemory.java | 25 +++++++++++++++++++ .../memory/transport/PlainTextImport.java | 4 +-- .../memory/transport/RAWBinaryImport.java | 4 +-- .../core/memory/transport/SRecordImport.java | 4 +-- .../META-INF/MANIFEST.MF | 2 +- .../ui/memory/transport/ScrollMemory.java | 12 ++------- .../memory/transport/PlainTextImporter.java | 6 ++--- .../memory/transport/RAWBinaryImporter.java | 6 ++--- .../ui/memory/transport/SRecordImporter.java | 6 ++--- 12 files changed, 49 insertions(+), 32 deletions(-) create mode 100644 memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/core/memory/transport/IScrollMemory.java diff --git a/memory/org.eclipse.cdt.debug.core.memory.tests/src/org/eclipse/cdt/debug/core/memory/tests/CollectScrolls.java b/memory/org.eclipse.cdt.debug.core.memory.tests/src/org/eclipse/cdt/debug/core/memory/tests/CollectScrolls.java index 8a9282e1c97..ed156c8957f 100644 --- a/memory/org.eclipse.cdt.debug.core.memory.tests/src/org/eclipse/cdt/debug/core/memory/tests/CollectScrolls.java +++ b/memory/org.eclipse.cdt.debug.core.memory.tests/src/org/eclipse/cdt/debug/core/memory/tests/CollectScrolls.java @@ -16,9 +16,10 @@ package org.eclipse.cdt.debug.core.memory.tests; import java.math.BigInteger; import java.util.ArrayList; import java.util.List; -import java.util.function.Consumer; -final class CollectScrolls implements Consumer { +import org.eclipse.cdt.debug.core.memory.transport.IScrollMemory; + +final class CollectScrolls implements IScrollMemory { private final List collected; diff --git a/memory/org.eclipse.cdt.debug.core.memory/META-INF/MANIFEST.MF b/memory/org.eclipse.cdt.debug.core.memory/META-INF/MANIFEST.MF index e7a1eb40455..e3ed9982a50 100644 --- a/memory/org.eclipse.cdt.debug.core.memory/META-INF/MANIFEST.MF +++ b/memory/org.eclipse.cdt.debug.core.memory/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Automatic-Module-Name: org.eclipse.cdt.debug.core.memory Bundle-ManifestVersion: 2 Bundle-SymbolicName: org.eclipse.cdt.debug.core.memory -Bundle-Version: 0.1.100.qualifier +Bundle-Version: 0.1.200.qualifier Bundle-Name: %Bundle-Name Bundle-Vendor: %Bundle-Vendor Bundle-RequiredExecutionEnvironment: JavaSE-11 diff --git a/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/core/memory/transport/FileImport.java b/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/core/memory/transport/FileImport.java index 99f89f6aab1..b7cd3ea25a8 100644 --- a/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/core/memory/transport/FileImport.java +++ b/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/core/memory/transport/FileImport.java @@ -17,7 +17,6 @@ import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.math.BigInteger; -import java.util.function.Consumer; import org.eclipse.cdt.debug.internal.core.memory.transport.Messages; import org.eclipse.core.runtime.CoreException; @@ -39,11 +38,11 @@ public abstract class FileImport implements ICoreRunnab protected final BigInteger base; protected final BigInteger start; protected final WriteMemory write; - protected final Consumer scroll; + protected final IScrollMemory scroll; private final File file; - protected FileImport(File input, ImportRequest request, Consumer scroll) { + protected FileImport(File input, ImportRequest request, IScrollMemory scroll) { this.file = input; this.base = request.base(); this.start = request.start(); diff --git a/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/core/memory/transport/IScrollMemory.java b/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/core/memory/transport/IScrollMemory.java new file mode 100644 index 00000000000..b511c2fe1ee --- /dev/null +++ b/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/core/memory/transport/IScrollMemory.java @@ -0,0 +1,25 @@ +/******************************************************************************* + * Copyright (c) 2020 Kichwa Coders Canada Inc. and others. + * + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + *******************************************************************************/ +package org.eclipse.cdt.debug.core.memory.transport; + +import java.math.BigInteger; + +@FunctionalInterface +public interface IScrollMemory { + void accept(BigInteger t); + + static IScrollMemory ignore() { + return t -> { + // ignore + }; + } + +} \ No newline at end of file diff --git a/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/internal/core/memory/transport/PlainTextImport.java b/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/internal/core/memory/transport/PlainTextImport.java index ecdeafdebc8..48ff698a006 100644 --- a/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/internal/core/memory/transport/PlainTextImport.java +++ b/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/internal/core/memory/transport/PlainTextImport.java @@ -22,9 +22,9 @@ import java.io.IOException; import java.io.InputStreamReader; import java.math.BigInteger; import java.util.StringTokenizer; -import java.util.function.Consumer; import org.eclipse.cdt.debug.core.memory.transport.FileImport; +import org.eclipse.cdt.debug.core.memory.transport.IScrollMemory; import org.eclipse.cdt.debug.core.memory.transport.ImportRequest; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; @@ -34,7 +34,7 @@ import org.osgi.framework.FrameworkUtil; public final class PlainTextImport extends FileImport { - public PlainTextImport(File input, ImportRequest request, Consumer scroll) { + public PlainTextImport(File input, ImportRequest request, IScrollMemory scroll) { super(input, request, scroll); } diff --git a/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/internal/core/memory/transport/RAWBinaryImport.java b/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/internal/core/memory/transport/RAWBinaryImport.java index 48d7c85b430..65e099e8ff9 100644 --- a/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/internal/core/memory/transport/RAWBinaryImport.java +++ b/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/internal/core/memory/transport/RAWBinaryImport.java @@ -19,16 +19,16 @@ import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.math.BigInteger; -import java.util.function.Consumer; import org.eclipse.cdt.debug.core.memory.transport.FileImport; +import org.eclipse.cdt.debug.core.memory.transport.IScrollMemory; import org.eclipse.cdt.debug.core.memory.transport.ImportRequest; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.debug.core.DebugException; public final class RAWBinaryImport extends FileImport { - public RAWBinaryImport(File input, ImportRequest request, Consumer scroll) { + public RAWBinaryImport(File input, ImportRequest request, IScrollMemory scroll) { super(input, request, scroll); } diff --git a/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/internal/core/memory/transport/SRecordImport.java b/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/internal/core/memory/transport/SRecordImport.java index db02fcc647d..da7efb38686 100644 --- a/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/internal/core/memory/transport/SRecordImport.java +++ b/memory/org.eclipse.cdt.debug.core.memory/src/org/eclipse/cdt/debug/internal/core/memory/transport/SRecordImport.java @@ -21,9 +21,9 @@ import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStreamReader; import java.math.BigInteger; -import java.util.function.Consumer; import org.eclipse.cdt.debug.core.memory.transport.FileImport; +import org.eclipse.cdt.debug.core.memory.transport.IScrollMemory; import org.eclipse.cdt.debug.core.memory.transport.ImportRequest; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; @@ -35,7 +35,7 @@ public class SRecordImport extends FileImport { private final boolean transfer; - public SRecordImport(File input, ImportRequest request, Consumer scroll, boolean transfer) { + public SRecordImport(File input, ImportRequest request, IScrollMemory scroll, boolean transfer) { super(input, request, scroll); this.transfer = transfer; } diff --git a/memory/org.eclipse.cdt.debug.ui.memory.transport/META-INF/MANIFEST.MF b/memory/org.eclipse.cdt.debug.ui.memory.transport/META-INF/MANIFEST.MF index 20dd2aeecd8..efb8ac0b999 100644 --- a/memory/org.eclipse.cdt.debug.ui.memory.transport/META-INF/MANIFEST.MF +++ b/memory/org.eclipse.cdt.debug.ui.memory.transport/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %pluginName Bundle-SymbolicName: org.eclipse.cdt.debug.ui.memory.transport;singleton:=true -Bundle-Version: 2.2.0.qualifier +Bundle-Version: 2.2.100.qualifier Bundle-Localization: plugin Bundle-Vendor: %providerName Require-Bundle: org.eclipse.cdt.debug.core.memory;bundle-version="0.1.0", diff --git a/memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/internal/ui/memory/transport/ScrollMemory.java b/memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/internal/ui/memory/transport/ScrollMemory.java index 58a24a2bfaf..85e8de66d1e 100644 --- a/memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/internal/ui/memory/transport/ScrollMemory.java +++ b/memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/internal/ui/memory/transport/ScrollMemory.java @@ -14,11 +14,11 @@ package org.eclipse.cdt.debug.internal.ui.memory.transport; import java.math.BigInteger; -import java.util.function.Consumer; +import org.eclipse.cdt.debug.core.memory.transport.IScrollMemory; import org.eclipse.cdt.debug.ui.memory.transport.ImportMemoryDialog; -public final class ScrollMemory implements Consumer { +public final class ScrollMemory implements IScrollMemory { private final ImportMemoryDialog dialog; @@ -31,12 +31,4 @@ public final class ScrollMemory implements Consumer { dialog.scrollRenderings(address); } - public static class Ignore implements Consumer { - - @Override - public void accept(BigInteger t) { - //ignore - } - } - } diff --git a/memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/ui/memory/transport/PlainTextImporter.java b/memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/ui/memory/transport/PlainTextImporter.java index 1476ccd9e20..8de863df91b 100644 --- a/memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/ui/memory/transport/PlainTextImporter.java +++ b/memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/ui/memory/transport/PlainTextImporter.java @@ -17,11 +17,11 @@ package org.eclipse.cdt.debug.ui.memory.transport; import java.io.File; import java.math.BigInteger; -import java.util.function.Consumer; +import org.eclipse.cdt.debug.core.memory.transport.IScrollMemory; import org.eclipse.cdt.debug.core.memory.transport.ImportRequest; -import org.eclipse.cdt.debug.internal.core.memory.transport.TransportJob; import org.eclipse.cdt.debug.internal.core.memory.transport.PlainTextImport; +import org.eclipse.cdt.debug.internal.core.memory.transport.TransportJob; import org.eclipse.cdt.debug.internal.ui.memory.transport.ScrollMemory; import org.eclipse.cdt.debug.internal.ui.memory.transport.WriteMemoryBlock; import org.eclipse.cdt.debug.ui.memory.transport.model.IMemoryImporter; @@ -265,7 +265,7 @@ public class PlainTextImporter implements IMemoryImporter { @Override public void importMemory() { try { - Consumer scroll = fScrollToStart ? new ScrollMemory(fParentDialog) : new ScrollMemory.Ignore(); + IScrollMemory scroll = fScrollToStart ? new ScrollMemory(fParentDialog) : IScrollMemory.ignore(); IMemoryBlockExtension block = (IMemoryBlockExtension) fMemoryBlock; ImportRequest request = new ImportRequest(block.getBigBaseAddress(), fStartAddress, new WriteMemoryBlock(block)); diff --git a/memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/ui/memory/transport/RAWBinaryImporter.java b/memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/ui/memory/transport/RAWBinaryImporter.java index c94d75419d0..c7e36d74b01 100644 --- a/memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/ui/memory/transport/RAWBinaryImporter.java +++ b/memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/ui/memory/transport/RAWBinaryImporter.java @@ -17,11 +17,11 @@ package org.eclipse.cdt.debug.ui.memory.transport; import java.io.File; import java.math.BigInteger; -import java.util.function.Consumer; +import org.eclipse.cdt.debug.core.memory.transport.IScrollMemory; import org.eclipse.cdt.debug.core.memory.transport.ImportRequest; -import org.eclipse.cdt.debug.internal.core.memory.transport.TransportJob; import org.eclipse.cdt.debug.internal.core.memory.transport.RAWBinaryImport; +import org.eclipse.cdt.debug.internal.core.memory.transport.TransportJob; import org.eclipse.cdt.debug.internal.ui.memory.transport.ScrollMemory; import org.eclipse.cdt.debug.internal.ui.memory.transport.WriteMemoryBlock; import org.eclipse.cdt.debug.ui.memory.transport.model.IMemoryImporter; @@ -248,7 +248,7 @@ public class RAWBinaryImporter implements IMemoryImporter { @Override public void importMemory() { try { - Consumer scroll = fScrollToStart ? new ScrollMemory(fParentDialog) : new ScrollMemory.Ignore(); + IScrollMemory scroll = fScrollToStart ? new ScrollMemory(fParentDialog) : IScrollMemory.ignore(); IMemoryBlockExtension block = (IMemoryBlockExtension) fMemoryBlock; ImportRequest request = new ImportRequest(block.getBigBaseAddress(), fStartAddress, new WriteMemoryBlock(block)); diff --git a/memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/ui/memory/transport/SRecordImporter.java b/memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/ui/memory/transport/SRecordImporter.java index da05e27beab..99dafba1ef6 100644 --- a/memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/ui/memory/transport/SRecordImporter.java +++ b/memory/org.eclipse.cdt.debug.ui.memory.transport/src/org/eclipse/cdt/debug/ui/memory/transport/SRecordImporter.java @@ -17,11 +17,11 @@ package org.eclipse.cdt.debug.ui.memory.transport; import java.io.File; import java.math.BigInteger; -import java.util.function.Consumer; +import org.eclipse.cdt.debug.core.memory.transport.IScrollMemory; import org.eclipse.cdt.debug.core.memory.transport.ImportRequest; -import org.eclipse.cdt.debug.internal.core.memory.transport.TransportJob; import org.eclipse.cdt.debug.internal.core.memory.transport.SRecordImport; +import org.eclipse.cdt.debug.internal.core.memory.transport.TransportJob; import org.eclipse.cdt.debug.internal.ui.memory.transport.ScrollMemory; import org.eclipse.cdt.debug.internal.ui.memory.transport.WriteMemoryBlock; import org.eclipse.cdt.debug.ui.memory.transport.model.IMemoryImporter; @@ -336,7 +336,7 @@ public class SRecordImporter implements IMemoryImporter { @Override public void importMemory() { try { - Consumer scroll = fScrollToStart ? new ScrollMemory(fParentDialog) : new ScrollMemory.Ignore(); + IScrollMemory scroll = fScrollToStart ? new ScrollMemory(fParentDialog) : IScrollMemory.ignore(); IMemoryBlockExtension block = (IMemoryBlockExtension) fMemoryBlock; ImportRequest request = new ImportRequest(block.getBigBaseAddress(), fStartAddress, new WriteMemoryBlock(block));