Permalink
Browse files

Major overhaul for the tools; simplified the API a bit and made it ea…

…sier to write a tool that does its task without having to deal with threading, OSGi and the like.
  • Loading branch information...
jawi committed Nov 4, 2011
1 parent bbbe23d commit 728eca13bc8c5f1b3df1174c5bec59def02feb95
Showing with 6,414 additions and 5,216 deletions.
  1. +1 −0 api/pom.xml
  2. +1 −1 api/src/main/java/nl/lxtreme/ols/api/DataAcquisitionService.java
  3. +55 −0 api/src/main/java/nl/lxtreme/ols/api/devices/AcquisitionTask.java
  4. +0 −85 api/src/main/java/nl/lxtreme/ols/api/devices/CaptureCallback.java
  5. +35 −15 api/src/main/java/nl/lxtreme/ols/api/devices/Device.java
  6. +0 −75 api/src/main/java/nl/lxtreme/ols/api/devices/DeviceController.java
  7. +11 −20 api/src/main/java/nl/lxtreme/ols/api/{ProgressCallback.java → task/Task.java}
  8. +10 −9 ...c/main/java/nl/lxtreme/ols/api/{tools/ToolExecutionService.java → task/TaskExecutionService.java}
  9. +60 −0 api/src/main/java/nl/lxtreme/ols/api/task/TaskStatusListener.java
  10. +16 −22 api/src/main/java/nl/lxtreme/ols/api/tools/{AnalysisCallback.java → Annotation.java}
  11. +18 −13 api/src/main/java/nl/lxtreme/ols/api/tools/AnnotationListener.java
  12. +45 −0 api/src/main/java/nl/lxtreme/ols/api/tools/DataAnnotation.java
  13. +25 −31 api/src/main/java/nl/lxtreme/ols/api/tools/Tool.java
  14. +16 −0 api/src/main/java/nl/lxtreme/ols/api/tools/ToolContext.java
  15. +2 −22 api/src/main/java/nl/lxtreme/ols/api/tools/ToolProgressListener.java
  16. +8 −19 ...e/ols/client/StatusChangeListener.java → api/src/main/java/nl/lxtreme/ols/api/tools/ToolTask.java
  17. +2 −1 build.sh
  18. +7 −6 client/src/main/java/nl/lxtreme/ols/client/Activator.java
  19. +174 −85 client/src/main/java/nl/lxtreme/ols/client/ClientController.java
  20. +1 −1 client/src/main/java/nl/lxtreme/ols/client/action/RunToolAction.java
  21. +1 −1 client/src/main/java/nl/lxtreme/ols/client/action/manager/ActionManagerFactory.java
  22. +0 −109 client/src/main/java/nl/lxtreme/ols/client/osgi/DataAcquisitionServiceTracker.java
  23. +386 −0 client/src/main/java/nl/lxtreme/ols/client/osgi/SimpleDataAcquisitionService.java
  24. +1 −1 device.generic/pom.xml
  25. +28 −96 device.generic/src/main/java/nl/lxtreme/ols/device/generic/GenericDevice.java
  26. +162 −0 device.generic/src/main/java/nl/lxtreme/ols/device/generic/GenericDeviceAcquisitionTask.java
  27. +0 −94 device.generic/src/main/java/nl/lxtreme/ols/device/generic/GenericDeviceController.java
  28. +2 −2 device.logicsniffer/pom.xml
  29. +1,019 −0 device.logicsniffer/src/main/java/org/sump/device/logicsniffer/LogicSnifferAcquisitionTask.java
  30. +2 −2 device.logicsniffer/src/main/java/org/sump/device/logicsniffer/LogicSnifferConfig.java
  31. +1 −1 device.logicsniffer/src/main/java/org/sump/device/logicsniffer/LogicSnifferConfigDialog.java
  32. +63 −909 device.logicsniffer/src/main/java/org/sump/device/logicsniffer/LogicSnifferDevice.java
  33. +0 −177 device.logicsniffer/src/main/java/org/sump/device/logicsniffer/LogicSnifferDeviceController.java
  34. +14 −14 device.logicsniffer/src/test/java/org/sump/device/logicsniffer/LogicSnifferConfigTest.java
  35. +15 −15 device.logicsniffer/src/test/java/org/sump/device/logicsniffer/LogicSnifferDeviceComponentTest.java
  36. +2 −2 device.logicsniffer/src/test/java/org/sump/device/logicsniffer/LogicSnifferEnabledGroupTest.java
  37. +2 −2 device.logicsniffer/src/test/java/org/sump/device/logicsniffer/LogicSnifferRleComponentTest.java
  38. +2 −2 ...e.logicsniffer/src/test/java/org/sump/device/logicsniffer/LogicSnifferRleTimingComponentTest.java
  39. +3 −3 device.logicsniffer/src/test/java/org/sump/device/logicsniffer/VirtualLogicSnifferDevice.java
  40. +1 −1 device.test/pom.xml
  41. +147 −0 device.test/src/main/java/nl/lxtreme/ols/device/test/TestAcquisitionTask.java
  42. +39 −83 device.test/src/main/java/nl/lxtreme/ols/device/test/TestDevice.java
  43. +0 −102 device.test/src/main/java/nl/lxtreme/ols/device/test/TestDeviceController.java
  44. +6 −1 ols.distribution/pom.xml
  45. +4 −4 ols.distribution/src/main/assembly/assembly.xml
  46. +6 −6 pom.xml
  47. +6 −6 service.acquisition/src/main/java/nl/lxtreme/ols/acquisition/BackgroundDataAcquisitionService.java
  48. +17 −17 ...ce.acquisition/src/test/java/nl/lxtreme/ols/acquisition/BackgroundDataAcquisitionServiceTest.java
  49. +60 −0 service.taskexecution/pom.xml
  50. +72 −0 service.taskexecution/src/main/java/nl/lxtreme/ols/task/execution/Activator.java
  51. +138 −0 ...ice.taskexecution/src/main/java/nl/lxtreme/ols/task/execution/BackgroundTaskExecutionService.java
  52. +98 −0 service.taskexecution/src/main/java/nl/lxtreme/ols/task/execution/TaskStatusListenerHelper.java
  53. +296 −0 ...taskexecution/src/test/java/nl/lxtreme/ols/task/execution/BackgroundTaskExecutionServiceTest.java
  54. +26 −24 test.util/src/main/java/nl/lxtreme/ols/test/data/DataTestUtils.java
  55. +30 −16 tool.1wire/src/main/java/nl/lxtreme/ols/tool/onewire/OneWireAnalyser.java
  56. +79 −60 tool.1wire/src/main/java/nl/lxtreme/ols/tool/onewire/OneWireAnalyserDialog.java
  57. +84 −67 ...src/main/java/nl/lxtreme/ols/tool/onewire/{OneWireAnalyserWorker.java → OneWireAnalyserTask.java}
  58. +8 −4 tool.1wire/src/test/java/nl/lxtreme/ols/tool/onewire/OneWireAnalyserWorkerTest.java
  59. +37 −13 tool.asm45/src/main/java/nl/lxtreme/ols/tool/asm45/Asm45Analyser.java
  60. +107 −100 ...asm45/src/main/java/nl/lxtreme/ols/tool/asm45/{Asm45AnalyserWorker.java → Asm45AnalyserTask.java}
  61. +134 −114 tool.asm45/src/main/java/nl/lxtreme/ols/tool/asm45/Asm45ProtocolAnalysisDialog.java
  62. +8 −4 tool.asm45/src/test/java/nl/lxtreme/ols/tool/asm45/Asm45AnalyserWorkerContentTest.java
  63. +9 −5 tool.asm45/src/test/java/nl/lxtreme/ols/tool/asm45/Asm45AnalyserWorkerDataFilesTest.java
  64. +1 −1 tool.base/pom.xml
  65. +115 −0 tool.base/src/main/java/nl/lxtreme/ols/tool/base/AnnotationListenerServiceTracker.java
  66. +0 −44 tool.base/src/main/java/nl/lxtreme/ols/tool/base/AsyncToolDialog.java
  67. +0 −271 tool.base/src/main/java/nl/lxtreme/ols/tool/base/BaseAsyncTool.java
  68. +0 −561 tool.base/src/main/java/nl/lxtreme/ols/tool/base/BaseAsyncToolDialog.java
  69. +0 −298 tool.base/src/main/java/nl/lxtreme/ols/tool/base/BaseAsyncToolWorker.java
  70. +0 −203 tool.base/src/main/java/nl/lxtreme/ols/tool/base/BaseTool.java
  71. +251 −49 tool.base/src/main/java/nl/lxtreme/ols/tool/base/BaseToolDialog.java
  72. +65 −0 tool.base/src/main/java/nl/lxtreme/ols/tool/base/ExportAware.java
  73. +86 −0 tool.base/src/main/java/nl/lxtreme/ols/tool/base/TaskExecutionServiceTracker.java
  74. +13 −13 tool.base/src/main/java/nl/lxtreme/ols/tool/base/ToolDialog.java
  75. +84 −0 tool.base/src/main/java/nl/lxtreme/ols/tool/base/ToolProgressListenerServiceTracker.java
  76. +306 −0 tool.base/src/main/java/nl/lxtreme/ols/tool/base/ToolUtils.java
  77. +76 −0 tool.base/src/main/java/nl/lxtreme/ols/tool/base/annotation/ChannelLabelAnnotation.java
  78. +88 −0 tool.base/src/main/java/nl/lxtreme/ols/tool/base/annotation/SampleDataAnnotation.java
  79. +28 −25 tool.i2c/src/main/java/nl/lxtreme/ols/tool/i2c/I2CAnalyser.java
  80. +147 −105 tool.i2c/src/main/java/nl/lxtreme/ols/tool/i2c/{I2CAnalyserWorker.java → I2CAnalyserTask.java}
  81. +162 −120 tool.i2c/src/main/java/nl/lxtreme/ols/tool/i2c/I2CProtocolAnalysisDialog.java
  82. +8 −4 tool.i2c/src/test/java/nl/lxtreme/ols/tool/i2c/I2CAnalyserWorkerContentTest.java
  83. +9 −5 tool.i2c/src/test/java/nl/lxtreme/ols/tool/i2c/I2CAnalyserWorkerDataFilesTest.java
  84. +36 −12 tool.jtag/src/main/java/nl/lxtreme/ols/tool/jtag/JTAGAnalyser.java
  85. +72 −57 tool.jtag/src/main/java/nl/lxtreme/ols/tool/jtag/{JTAGAnalyserWorker.java → JTAGAnalyserTask.java}
  86. +133 −111 tool.jtag/src/main/java/nl/lxtreme/ols/tool/jtag/JTAGProtocolAnalysisDialog.java
  87. +33 −28 ...a/nl/lxtreme/ols/tool/measure/{ClockFrequencyMeasureWorker.java → ClockFrequencyMeasureTask.java}
  88. +72 −225 tool.measure/src/main/java/nl/lxtreme/ols/tool/measure/MeasurementDialog.java
  89. +44 −9 tool.measure/src/main/java/nl/lxtreme/ols/tool/measure/MeasurementTool.java
  90. +7 −6 ...asure/src/test/java/nl/lxtreme/ols/tool/measure/ClockFrequencyMeasureWorkerGeneratedDataTest.java
  91. +8 −7 tool.measure/src/test/java/nl/lxtreme/ols/tool/measure/ClockFrequencyMeasureWorkerResourceTest.java
  92. +29 −21 tool.spi/src/main/java/nl/lxtreme/ols/tool/spi/SPIAnalyser.java
  93. +121 −82 tool.spi/src/main/java/nl/lxtreme/ols/tool/spi/{SPIAnalyserWorker.java → SPIAnalyserTask.java}
  94. +172 −118 tool.spi/src/main/java/nl/lxtreme/ols/tool/spi/SPIProtocolAnalysisDialog.java
  95. +9 −5 tool.spi/src/test/java/nl/lxtreme/ols/tool/spi/SPIAnalyserWorkerContentTest.java
  96. +8 −4 tool.spi/src/test/java/nl/lxtreme/ols/tool/spi/SPIAnalyserWorkerDataFilesTest.java
  97. +36 −12 tool.state/src/main/java/nl/lxtreme/ols/tool/state/StateAnalyser.java
  98. +71 −20 tool.state/src/main/java/nl/lxtreme/ols/tool/state/StateAnalysisDialog.java
  99. +34 −32 ...state/src/main/java/nl/lxtreme/ols/tool/state/{StateAnalysisWorker.java → StateAnalysisTask.java}
  100. +36 −12 tool.uart/src/main/java/nl/lxtreme/ols/tool/uart/UARTAnalyser.java
  101. +146 −123 tool.uart/src/main/java/nl/lxtreme/ols/tool/uart/{UARTAnalyserWorker.java → UARTAnalyserTask.java}
  102. +185 −167 tool.uart/src/main/java/nl/lxtreme/ols/tool/uart/UARTProtocolAnalysisDialog.java
  103. +8 −4 tool.uart/src/test/java/nl/lxtreme/ols/tool/uart/UARTAnalyserWorkerDataFilesTest.java
  104. +112 −0 util/src/main/java/nl/lxtreme/ols/util/AccumulatingRunnable.java
  105. +1 −0 util/src/main/java/nl/lxtreme/ols/util/swing/SwingComponentUtils.java
View
@@ -54,6 +54,7 @@
nl.lxtreme.ols.api.data.export,
nl.lxtreme.ols.api.data.project,
nl.lxtreme.ols.api.devices,
+ nl.lxtreme.ols.api.task,
nl.lxtreme.ols.api.tools,
nl.lxtreme.ols.api.ui</Export-Package>
</instructions>
@@ -61,5 +61,5 @@
* @throws IllegalArgumentException
* in case the given device was <code>null</code>.
*/
- void acquireData( DeviceController aDeviceController ) throws IOException;
+ void acquireData( Device aDeviceController ) throws IOException;
}
@@ -0,0 +1,55 @@
+/*
+ * OpenBench LogicSniffer / SUMP project
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin St, Fifth Floor, Boston, MA 02110, USA
+ *
+ * Copyright (C) 2006-2010 Michael Poppitz, www.sump.org
+ * Copyright (C) 2010 J.W. Janssen, www.lxtreme.nl
+ */
+package nl.lxtreme.ols.api.devices;
+
+
+import java.io.*;
+import nl.lxtreme.ols.api.acquisition.*;
+import nl.lxtreme.ols.api.task.*;
+
+
+/**
+ * Denotes a device that we can talk to by calling {@link #call()} on it. The
+ * implementation of that method should do all necessary tasks to acquire data
+ * from the device and return that data in the form of an
+ * {@link AcquisitionResult} object.
+ */
+public interface AcquisitionTask extends Task<AcquisitionResult>, Closeable
+{
+ // METHODS
+
+ /**
+ * Closes the device.
+ *
+ * @throws IOException
+ * in case of I/O problems closing the device.
+ */
+ void close() throws IOException;
+
+ /**
+ * Opens the device for acquisition.
+ *
+ * @throws IOException
+ * in case of I/O problems closing the device.
+ */
+ void open() throws IOException;
+
+}
@@ -1,85 +0,0 @@
-/*
- * OpenBench LogicSniffer / SUMP project
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or (at
- * your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin St, Fifth Floor, Boston, MA 02110, USA
- *
- *
- * Copyright (C) 2010-2011 - J.W. Janssen, http://www.lxtreme.nl
- */
-package nl.lxtreme.ols.api.devices;
-
-
-import java.util.*;
-
-import nl.lxtreme.ols.api.*;
-import nl.lxtreme.ols.api.acquisition.*;
-import nl.lxtreme.ols.api.data.*;
-
-
-/**
- * Denotes a callback for receiving captured data and keeping notified of the
- * capture progress.
- */
-public interface CaptureCallback extends ProgressCallback
-{
- // METHODS
-
- /**
- * Called when the capture was aborted.
- *
- * @param aReason
- * a reason why this run might be aborted, can be any kind of string
- * message, such as an exception message, user message, etc. Can be
- * <code>null</code>.
- */
- public void captureAborted( final String aReason );
-
- /**
- * Called upon completion of the capture process.
- *
- * @param aData
- * the captured data, never <code>null</code>.
- */
- public void captureComplete( final AcquisitionResult aData );
-
- /**
- * Called when the capture is just started.
- * <p>
- * This method will be called before any other methods of this interface.
- * </p>
- *
- * @param aSampleRate
- * the sample rate of the capture, in Hertz (Hz);
- * @param aChannelCount
- * the number of channels in a single sample (1..32);
- * @param aChannelMask
- * the bitmask used to mask out the relevant channels.
- */
- public void captureStarted( final int aSampleRate, final int aChannelCount, final int aChannelMask );
-
- /**
- * Called when a number of samples are captured.
- * <p>
- * There is no guarantee this method will be called at all! However, if
- * called, it will always be in order.
- * </p>
- *
- * @param aSamples
- * the captured samples, never <code>null</code>.
- */
- public void samplesCaptured( final List<Sample> aSamples );
-}
-
-/* EOF */
@@ -15,42 +15,62 @@
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin St, Fifth Floor, Boston, MA 02110, USA
*
- * Copyright (C) 2006-2010 Michael Poppitz, www.sump.org
- * Copyright (C) 2010 J.W. Janssen, www.lxtreme.nl
+ *
+ * Copyright (C) 2010-2011 - J.W. Janssen, http://www.lxtreme.nl
*/
package nl.lxtreme.ols.api.devices;
import java.io.*;
-import java.util.concurrent.*;
import nl.lxtreme.ols.api.acquisition.*;
/**
- * Denotes a device that we can talk to by calling {@link #call()} on it. The
- * implementation of that method should do all necessary tasks to acquire data
- * from the device and return that data in the form of an
- * {@link AcquisitionResult} object.
+ * Interface for implementing device controllers. Each supported device must
+ * implement at least this interface.
*/
-public interface Device extends Callable<AcquisitionResult>, Closeable
+public interface Device
{
// METHODS
/**
- * Closes the device.
+ * Creates a new {@link AcquisitionTask} for acquiring data from the device.
*
+ * @param aProgressListener
+ * the acquisition progress listener the acquisition task can use to
+ * report its progress, cannot be <code>null</code>.
* @throws IOException
- * in case of I/O problems closing the device.
+ * in case of I/O problems during the creation of the acquisition
+ * task.
*/
- void close() throws IOException;
+ public AcquisitionTask createAcquisitionTask( AcquisitionProgressListener aProgressListener ) throws IOException;
/**
- * Opens the device.
+ * Returns a descriptive name of this device controller.
*
- * @throws IOException
- * in case of I/O problems closing the device.
+ * @return name of the controller, cannot be <code>null</code>.
+ */
+ public String getName();
+
+ /**
+ * Returns whether this device is already set up or not.
+ *
+ * @return <code>true</code> if there is a "valid" setup for this device,
+ * <code>false</code> otherwise.
*/
- void open() throws IOException;
+ public boolean isSetup();
+ /**
+ * Allows this device controller to set up the device by means of presenting
+ * an UI.
+ *
+ * @param aParent
+ * the parent window that can be used to display (modal) dialogs, can
+ * be <code>null</code>.
+ * @return <code>true</code> if the setup is successfully completed (the user
+ * acknowledged the setup), <code>false</code> if the setup is aborted
+ * by the user.
+ */
+ public boolean setupCapture( final java.awt.Window aParent );
}
@@ -1,75 +0,0 @@
-/*
- * OpenBench LogicSniffer / SUMP project
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or (at
- * your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin St, Fifth Floor, Boston, MA 02110, USA
- *
- *
- * Copyright (C) 2010-2011 - J.W. Janssen, http://www.lxtreme.nl
- */
-package nl.lxtreme.ols.api.devices;
-
-
-import java.io.*;
-
-import nl.lxtreme.ols.api.acquisition.*;
-
-
-/**
- * Interface for implementing device controllers. Each supported device must
- * implement at least this interface.
- */
-public interface DeviceController
-{
- // METHODS
-
- /**
- * Tells the device to start acquiring data.
- *
- * @param aProgressListener
- * the acquisition progress listener the device can use to report its
- * progress, cannot be <code>null</code>.
- * @throws IOException
- * in case of I/O problems during the capturing of data.
- */
- public Device createDevice( AcquisitionProgressListener aProgressListener ) throws IOException;
-
- /**
- * Returns a descriptive name of this device controller.
- *
- * @return name of the controller, cannot be <code>null</code>.
- */
- public String getName();
-
- /**
- * Returns whether this device is already set up or not.
- *
- * @return <code>true</code> if there is a "valid" setup for this device,
- * <code>false</code> otherwise.
- */
- public boolean isSetup();
-
- /**
- * Allows this device controller to set up the device by means of presenting
- * an UI.
- *
- * @param aParent
- * the parent window that can be used to display (modal) dialogs, can
- * be <code>null</code>.
- * @return <code>true</code> if the setup is successfully completed (the user
- * acknowledged the setup), <code>false</code> if the setup is aborted
- * by the user.
- */
- public boolean setupCapture( final java.awt.Window aParent );
-}
@@ -15,31 +15,22 @@
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin St, Fifth Floor, Boston, MA 02110, USA
*
- *
- * Copyright (C) 2010-2011 - J.W. Janssen, http://www.lxtreme.nl
+ * Copyright (C) 2006-2010 Michael Poppitz, www.sump.org
+ * Copyright (C) 2010 J.W. Janssen, www.lxtreme.nl
*/
-package nl.lxtreme.ols.api;
+package nl.lxtreme.ols.api.task;
+
+
+import java.util.concurrent.*;
/**
- * Provides a callback interface for reporting back the progress of any process
- * (capture, tool analysis).
+ * Denotes a task that can be executed asynchronously.
*
- * @deprecated
+ * @param RESULT_TYPE
+ * the return type of this task.
*/
-@Deprecated
-public interface ProgressCallback
+public interface Task<RESULT_TYPE> extends Callable<RESULT_TYPE>
{
- // METHODS
-
- /**
- * Called to update the capture progress.
- *
- * @param aPercentage
- * the (new) percentage of the capture progress.
- */
- void updateProgress( final int aPercentage );
-
+ // No additional methods...
}
-
-/* EOF */
@@ -18,26 +18,27 @@
* Copyright (C) 2006-2010 Michael Poppitz, www.sump.org
* Copyright (C) 2010 J.W. Janssen, www.lxtreme.nl
*/
-package nl.lxtreme.ols.api.tools;
+package nl.lxtreme.ols.api.task;
import java.util.concurrent.*;
/**
- * Provides a service that can be used to invoke tools in a background thread.
+ * Provides a service that can execute tasks.
*/
-public interface ToolExecutionService
+public interface TaskExecutionService
{
// METHODS
/**
- * Ensures that the given tool is invoked in the background.
+ * Executes the given task.
*
- * @param aTool
- * the tool to invoke, cannot be <code>null</code>.
- * @return a {@link Future} that can be used to control the execution of the
- * tool, for example, to cancel its execution.
+ * @param aTask
+ * the task to execute, cannot be <code>null</code>.
+ * @return a {@link Future} that can be used to track the result of the task,
+ * can not be <code>null</code>.
*/
- Future<Void> execute( Tool aTool );
+ <RESULT_TYPE> Future<RESULT_TYPE> execute( Task<RESULT_TYPE> aTask );
+
}
Oops, something went wrong.

0 comments on commit 728eca1

Please sign in to comment.