1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-23 08:55:25 +02:00

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
This commit is contained in:
Jonah Graham 2020-12-01 18:32:47 -05:00
parent f89c3c3003
commit 48156b4653
12 changed files with 49 additions and 32 deletions

View file

@ -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<BigInteger> {
import org.eclipse.cdt.debug.core.memory.transport.IScrollMemory;
final class CollectScrolls implements IScrollMemory {
private final List<BigInteger> collected;

View file

@ -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

View file

@ -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<I extends AutoCloseable> implements ICoreRunnab
protected final BigInteger base;
protected final BigInteger start;
protected final WriteMemory write;
protected final Consumer<BigInteger> scroll;
protected final IScrollMemory scroll;
private final File file;
protected FileImport(File input, ImportRequest request, Consumer<BigInteger> scroll) {
protected FileImport(File input, ImportRequest request, IScrollMemory scroll) {
this.file = input;
this.base = request.base();
this.start = request.start();

View file

@ -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
};
}
}

View file

@ -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<BufferedReader> {
public PlainTextImport(File input, ImportRequest request, Consumer<BigInteger> scroll) {
public PlainTextImport(File input, ImportRequest request, IScrollMemory scroll) {
super(input, request, scroll);
}

View file

@ -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<FileInputStream> {
public RAWBinaryImport(File input, ImportRequest request, Consumer<BigInteger> scroll) {
public RAWBinaryImport(File input, ImportRequest request, IScrollMemory scroll) {
super(input, request, scroll);
}

View file

@ -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<BufferedReader> {
private final boolean transfer;
public SRecordImport(File input, ImportRequest request, Consumer<BigInteger> scroll, boolean transfer) {
public SRecordImport(File input, ImportRequest request, IScrollMemory scroll, boolean transfer) {
super(input, request, scroll);
this.transfer = transfer;
}

View file

@ -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",

View file

@ -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<BigInteger> {
public final class ScrollMemory implements IScrollMemory {
private final ImportMemoryDialog dialog;
@ -31,12 +31,4 @@ public final class ScrollMemory implements Consumer<BigInteger> {
dialog.scrollRenderings(address);
}
public static class Ignore implements Consumer<BigInteger> {
@Override
public void accept(BigInteger t) {
//ignore
}
}
}

View file

@ -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<BigInteger> 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));

View file

@ -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<BigInteger> 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));

View file

@ -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<BigInteger> 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));