1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-08-01 05:15:43 +02:00

Code cleanup in DSF examples.

- Added @Override where necessary.
- Added src_ant to source directories in build.properties
- Fixed resource leaks
- Added type parameters where missing (e.g. Vector in PreProcessor.java)
- Removed unused imports

Change-Id: I28c7e295891833f9b561975da0adc92d55f2e048
Signed-off-by: Jesper Eskilson <jesper.eskilson@iar.com>
This commit is contained in:
Jesper Eskilson 2016-03-29 09:19:35 +02:00 committed by Gerrit Code Review @ Eclipse.org
parent a08b9582d3
commit 92cd626895
14 changed files with 167 additions and 101 deletions

View file

@ -424,7 +424,7 @@ public class PDAVirtualMachine {
fFilename = inputFile;
// Load all the code into memory
FileReader fileReader = new FileReader(inputFile);
try (FileReader fileReader = new FileReader(inputFile)) {
StringWriter stringWriter = new StringWriter();
List<String> code = new LinkedList<String>();
int c = fileReader.read();
@ -446,6 +446,7 @@ public class PDAVirtualMachine {
fCommandPort = commandPort;
fEventPort = eventPort;
}
}
/**
* Initializes the labels map

View file

@ -3,7 +3,7 @@ Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-Vendor: %providerName
Bundle-SymbolicName: org.eclipse.cdt.examples.dsf;singleton:=true
Bundle-Version: 2.1.0.qualifier
Bundle-Version: 2.2.0.qualifier
Bundle-Activator: org.eclipse.cdt.examples.dsf.DsfExamplesPlugin
Bundle-Localization: plugin
Require-Bundle: org.eclipse.ui,

View file

@ -8,7 +8,8 @@
# Contributors:
# Wind River Systems - initial API and implementation
###############################################################################
source.. = src/
source.. = src/,\
src_ant/
output.. = bin/
bin.includes = META-INF/,\
.,\

View file

@ -11,7 +11,7 @@
<relativePath>../../pom.xml</relativePath>
</parent>
<version>2.1.0-SNAPSHOT</version>
<version>2.2.0-SNAPSHOT</version>
<artifactId>org.eclipse.cdt.examples.dsf</artifactId>
<packaging>eclipse-plugin</packaging>
</project>

View file

@ -47,9 +47,9 @@ import org.apache.tools.ant.util.FileUtils;
*/
public class PreProcessor extends Task {
private Vector fFileSets = new Vector();
private Vector<FileSet> fFileSets = new Vector<>();
private File fDestDir = null;
private Set fSymbols = new HashSet();
private Set<String> fSymbols = new HashSet<>();
private FileUtils fUtils = FileUtils.getFileUtils();
// possible states
@ -116,7 +116,7 @@ public class PreProcessor extends Task {
throw new BuildException("destdir does not exist: " + fDestDir.getAbsolutePath());
}
StringBuffer buf = new StringBuffer("Symbols: ");
String[] symbols = (String[]) fSymbols.toArray(new String[fSymbols.size()]);
String[] symbols = fSymbols.toArray(new String[fSymbols.size()]);
for (int i = 0; i < symbols.length; i++) {
String symbol = symbols[i];
buf.append(symbol);
@ -126,9 +126,9 @@ public class PreProcessor extends Task {
}
log(buf.toString());
Iterator fileSets = fFileSets.iterator();
Iterator<FileSet> fileSets = fFileSets.iterator();
while (fileSets.hasNext()) {
FileSet fileSet = (FileSet) fileSets.next();
FileSet fileSet = fileSets.next();
DirectoryScanner scanner = fileSet.getDirectoryScanner(getProject());
String[] includedFiles = scanner.getIncludedFiles();
File baseDir = fileSet.getDir(getProject());
@ -188,9 +188,7 @@ public class PreProcessor extends Task {
* @return
*/
public String preProcessFile(File srcFile, String strip) {
try {
FileReader fileReader = new FileReader(srcFile);
BufferedReader reader = new BufferedReader(fileReader);
try (BufferedReader reader = new BufferedReader(new FileReader(srcFile))) {
StringBuffer buffer = new StringBuffer();
String line = reader.readLine();
String activeSymbol = null;

View file

@ -80,10 +80,12 @@ public class ACPMSumDataGenerator
}
}
@Override
public void getCount(final DataRequestMonitor<Integer> rm) {
// Artificially delay the retrieval of the sum data to simulate
// real processing time.
fExecutor.schedule( new Runnable() {
@Override
public void run() {
// Create the transaction here to put all the ugly
// code in one place.
@ -129,10 +131,12 @@ public class ACPMSumDataGenerator
return maxCount;
}
@Override
public void getValue(final int index, final DataRequestMonitor<Integer> rm)
{
// Add a processing delay.
fExecutor.schedule( new Runnable() {
@Override
public void run() {
new Transaction<Integer>() {
@Override
@ -175,6 +179,7 @@ public class ACPMSumDataGenerator
return sum;
}
@Override
public void shutdown(final RequestMonitor rm) {
for (DataGeneratorCacheManager dataGeneratorCM : fDataGeneratorCMs) {
dataGeneratorCM.getDataGenerator().removeListener(this);
@ -184,10 +189,12 @@ public class ACPMSumDataGenerator
rm.done();
}
@Override
public void addListener(final Listener listener) {
// Must access fListeners on executor thread.
try {
fExecutor.execute( new DsfRunnable() {
@Override
public void run() {
fListeners.add(listener);
}
@ -195,10 +202,12 @@ public class ACPMSumDataGenerator
} catch (RejectedExecutionException e) {}
}
@Override
public void removeListener(final Listener listener) {
// Must access fListeners on executor thread.
try {
fExecutor.execute( new DsfRunnable() {
@Override
public void run() {
fListeners.remove(listener);
}
@ -206,10 +215,12 @@ public class ACPMSumDataGenerator
} catch (RejectedExecutionException e) {}
}
@Override
public void countChanged() {
// Must access fListeners on executor thread.
try {
fExecutor.execute( new DsfRunnable() {
@Override
public void run() {
for (Listener listener : fListeners) {
listener.countChanged();
@ -219,10 +230,12 @@ public class ACPMSumDataGenerator
} catch (RejectedExecutionException e) {}
}
@Override
public void valuesChanged(final Set<Integer> changed) {
// Must access fListeners on executor thread.
try {
fExecutor.execute( new DsfRunnable() {
@Override
public void run() {
for (Object listener : fListeners) {
((Listener)listener).valuesChanged(changed);

View file

@ -107,6 +107,7 @@ public class ACPMSumDataViewer implements ILazyContentProvider
// Schedule a task to refresh the viewer periodically.
fRefreshFuture = fDisplayExecutor.scheduleAtFixedRate(
new Runnable() {
@Override
public void run() {
queryItemCount();
}
@ -114,6 +115,7 @@ public class ACPMSumDataViewer implements ILazyContentProvider
UPDATE_INTERVAL, UPDATE_INTERVAL, TimeUnit.MILLISECONDS);
}
@Override
public void dispose() {
// Cancel the periodic task of refreshing the view.
fRefreshFuture.cancel(false);
@ -147,11 +149,13 @@ public class ACPMSumDataViewer implements ILazyContentProvider
fItemDataRequestMonitors.clear();
}
@Override
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
// Set the initial count to the viewer after the input is set.
queryItemCount();
}
@Override
public void updateElement(final int index) {
// Calculate the visible index range.
final int topIdx = fViewer.getTable().getTopIndex();
@ -164,7 +168,8 @@ public class ACPMSumDataViewer implements ILazyContentProvider
// calls to be combined together improving performance of the viewer.
fCancelCallsPending++;
fDisplayExecutor.execute(
new Runnable() { public void run() {
new Runnable() { @Override
public void run() {
cancelStaleRequests(topIdx, botIdx);
}});
}
@ -205,6 +210,7 @@ public class ACPMSumDataViewer implements ILazyContentProvider
// if the cache is reset during processing by an event. The request
// for data will be re-issued.
fDataExecutor.execute(new Runnable() {
@Override
public void run() {
new Transaction<Integer>() {
@Override
@ -274,6 +280,7 @@ public class ACPMSumDataViewer implements ILazyContentProvider
// if the cache is reset during processing by an event. The request
// for data will be re-issued.
fDataExecutor.execute(new Runnable() {
@Override
public void run() {
new Transaction<String>() {
@Override

View file

@ -79,15 +79,18 @@ public class AsyncDataViewer
fDataGenerator.addListener(this);
}
@Override
public void dispose() {
fDataGenerator.removeListener(this);
}
@Override
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
// Set the initial count to the viewer after the input is set.
queryItemCount();
}
@Override
public void updateElement(final int index) {
// Calculate the visible index range.
final int topIdx = fViewer.getTable().getTopIndex();
@ -100,7 +103,8 @@ public class AsyncDataViewer
// calls to be combined together improving performance of the viewer.
fCancelCallsPending++;
fDisplayExecutor.schedule(
new Runnable() { public void run() {
new Runnable() { @Override
public void run() {
cancelStaleRequests(topIdx, botIdx);
}},
1, TimeUnit.MILLISECONDS);
@ -120,11 +124,13 @@ public class AsyncDataViewer
itemCount - top);
}
@Override
@ThreadSafe
public void countChanged() {
queryItemCount();
}
@Override
@ThreadSafe
public void valuesChanged(final Set<Integer> indexes) {
// Mark the changed items in table viewer as dirty, this will
@ -132,6 +138,7 @@ public class AsyncDataViewer
// visible in the viewer.
final TableViewer tableViewer = fViewer;
fDisplayExecutor.execute( new Runnable() {
@Override
public void run() {
if (!fViewer.getTable().isDisposed()) {
for (Integer index : indexes) {

View file

@ -52,10 +52,12 @@ public class AsyncSumDataGenerator implements IDataGenerator {
fDataGenerators = generators;
}
@Override
public void getCount(final DataRequestMonitor<Integer> rm) {
// Artificially delay the retrieval of the sum data to simulate
// real processing time.
fExecutor.schedule( new Runnable() {
@Override
public void run() {
doGetCount(rm);
}
@ -102,11 +104,13 @@ public class AsyncSumDataGenerator implements IDataGenerator {
crm.setDoneCount(fDataGenerators.length);
}
@Override
public void getValue(final int index, final DataRequestMonitor<Integer> rm)
{
// Artificially delay the retrieval of the sum data to simulate
// real processing time.
fExecutor.schedule( new Runnable() {
@Override
public void run() {
doGetValue(index, rm);
}
@ -156,14 +160,17 @@ public class AsyncSumDataGenerator implements IDataGenerator {
crm.setDoneCount(fDataGenerators.length);
}
@Override
public void shutdown(RequestMonitor rm) {
rm.done();
}
@Override
public void addListener(final Listener listener) {
// no events generated
}
@Override
public void removeListener(Listener listener) {
// no events generated
}

View file

@ -95,6 +95,7 @@ public class AsyncSumDataViewer implements ILazyContentProvider
// Schedule a task to refresh the viewer periodically.
fRefreshFuture = fDisplayExecutor.scheduleAtFixedRate(
new Runnable() {
@Override
public void run() {
queryItemCount();
}
@ -102,6 +103,7 @@ public class AsyncSumDataViewer implements ILazyContentProvider
UPDATE_INTERVAL, UPDATE_INTERVAL, TimeUnit.MILLISECONDS);
}
@Override
public void dispose() {
// Cancel the periodic task of refreshing the view.
fRefreshFuture.cancel(false);
@ -113,11 +115,13 @@ public class AsyncSumDataViewer implements ILazyContentProvider
fItemDataRequestMonitors.clear();
}
@Override
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
// Set the initial count to the viewer after the input is set.
queryItemCount();
}
@Override
public void updateElement(final int index) {
// Calculate the visible index range.
final int topIdx = fViewer.getTable().getTopIndex();
@ -130,7 +134,8 @@ public class AsyncSumDataViewer implements ILazyContentProvider
// calls to be combined together improving performance of the viewer.
fCancelCallsPending++;
fDisplayExecutor.execute(
new Runnable() { public void run() {
new Runnable() { @Override
public void run() {
cancelStaleRequests(topIdx, botIdx);
}});
}

View file

@ -143,6 +143,7 @@ public class DataGeneratorCacheManager implements IDataGenerator.Listener {
return value;
}
@Override
public void countChanged() {
// Reset the count cache and all the value caches.
if (fCountCache != null) {
@ -153,6 +154,7 @@ public class DataGeneratorCacheManager implements IDataGenerator.Listener {
}
}
@Override
public void valuesChanged(Set<Integer> indexes) {
// Reset selected value caches.
for (Integer index : indexes) {

View file

@ -72,8 +72,10 @@ public class DataGeneratorWithExecutor implements IDataGenerator {
fRequestMonitor = rm;
rm.addCancelListener(new RequestMonitor.ICanceledListener() {
@Override
public void requestCanceled(RequestMonitor rm) {
fExecutor.execute(new DsfRunnable() {
@Override
public void run() {
fQueue.remove(Request.this);
}
@ -184,6 +186,7 @@ public class DataGeneratorWithExecutor implements IDataGenerator {
// Schedule a runnable to make the random changes.
fExecutor.scheduleAtFixedRate(
new DsfRunnable() {
@Override
public void run() {
randomChanges();
}
@ -197,9 +200,11 @@ public class DataGeneratorWithExecutor implements IDataGenerator {
// TODO Exercise 4 - Add an annotation (ThreadSafe/ConfinedToDsfExecutor)
// indicating allowed thread access to this class/method/member
//#endif
@Override
public void shutdown(final RequestMonitor rm) {
try {
fExecutor.execute( new DsfRunnable() {
@Override
public void run() {
// Empty the queue of requests and fail them.
for (Request request : fQueue) {
@ -226,9 +231,11 @@ public class DataGeneratorWithExecutor implements IDataGenerator {
// TODO Exercise 4 - Add an annotation (ThreadSafe/ConfinedToDsfExecutor)
// indicating allowed thread access to this class/method/member
//#endif
@Override
public void getCount(final DataRequestMonitor<Integer> rm) {
try {
fExecutor.execute( new DsfRunnable() {
@Override
public void run() {
fQueue.add(new CountRequest(rm));
serviceQueue();
@ -246,9 +253,11 @@ public class DataGeneratorWithExecutor implements IDataGenerator {
// TODO Exercise 4 - Add an annotation (ThreadSafe/ConfinedToDsfExecutor)
// indicating allowed thread access to this class/method/member
//#endif
@Override
public void getValue(final int index, final DataRequestMonitor<Integer> rm) {
try {
fExecutor.execute( new DsfRunnable() {
@Override
public void run() {
fQueue.add(new ItemRequest(index, rm));
serviceQueue();
@ -265,9 +274,11 @@ public class DataGeneratorWithExecutor implements IDataGenerator {
// TODO Exercise 4 - Add an annotation (ThreadSafe/ConfinedToDsfExecutor)
// indicating allowed thread access to this class/method/member
//#endif
@Override
public void addListener(final Listener listener) {
try {
fExecutor.execute( new DsfRunnable() {
@Override
public void run() {
fListeners.add(listener);
}
@ -279,9 +290,11 @@ public class DataGeneratorWithExecutor implements IDataGenerator {
// TODO Exercise 4 - Add an annotation (ThreadSafe/ConfinedToDsfExecutor)
// indicating allowed thread access to this class/method/member
//#endif
@Override
public void removeListener(final Listener listener) {
try {
fExecutor.execute( new DsfRunnable() {
@Override
public void run() {
fListeners.remove(listener);
}
@ -299,6 +312,7 @@ public class DataGeneratorWithExecutor implements IDataGenerator {
private void serviceQueue() {
fExecutor.schedule(
new DsfRunnable() {
@Override
public void run() {
doServiceQueue();
}

View file

@ -82,7 +82,7 @@ public class DataGeneratorWithThread extends Thread
new LinkedBlockingQueue<Request>();
// ListenerList class provides thread safety.
private ListenerList fListeners = new ListenerList();
private ListenerList<Listener> fListeners = new ListenerList<>();
// Current number of elements in this generator.
private int fCount = MIN_COUNT;
@ -105,6 +105,7 @@ public class DataGeneratorWithThread extends Thread
start();
}
@Override
public void shutdown(RequestMonitor rm) {
// Mark the generator as shut down. After the fShutdown flag is set,
// all new requests should be shut down.
@ -118,6 +119,7 @@ public class DataGeneratorWithThread extends Thread
}
}
@Override
public void getCount(DataRequestMonitor<Integer> rm) {
if (!fShutdown.get()) {
fQueue.add(new CountRequest(rm));
@ -128,6 +130,7 @@ public class DataGeneratorWithThread extends Thread
}
}
@Override
public void getValue(int index, DataRequestMonitor<Integer> rm) {
if (!fShutdown.get()) {
fQueue.add(new ItemRequest(index, rm));
@ -138,10 +141,12 @@ public class DataGeneratorWithThread extends Thread
}
}
@Override
public void addListener(Listener listener) {
fListeners.add(listener);
}
@Override
public void removeListener(Listener listener) {
fListeners.remove(listener);
}

View file

@ -56,11 +56,13 @@ public class SyncDataViewer
fDataGenerator.addListener(this);
}
@Override
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
// Not used
}
@Override
public Object[] getElements(Object inputElement) {
// Create the query object for reading data count.
@ -126,15 +128,18 @@ public class SyncDataViewer
return new Object[0];
}
@Override
public void dispose() {
fDataGenerator.removeListener(this);
}
@Override
public void countChanged() {
// For any event from the generator, refresh the whole viewer.
refreshViewer();
}
@Override
public void valuesChanged(Set<Integer> indexes) {
// For any event from the generator, refresh the whole viewer.
refreshViewer();
@ -151,6 +156,7 @@ public class SyncDataViewer
// thread before calling the viewer.
Display display = fViewer.getControl().getDisplay();
display.asyncExec( new Runnable() {
@Override
public void run() {
if (!fViewer.getControl().isDisposed()) {
fViewer.refresh();