tmf: Fix regression in event requests
authorAlexandre Montplaisir <alexmonthy@voxpopuli.im>
Mon, 21 Jan 2013 15:30:22 +0000 (10:30 -0500)
committerAlexandre Montplaisir <alexmonthy@voxpopuli.im>
Mon, 21 Jan 2013 15:30:22 +0000 (10:30 -0500)
The following commits introduced a regression, where event
requests for partial ranges would stop working for trace
types that don't define event ranks:

4ca3bebf55c097f872185ac53e18eba4dc88745b
f08203da275a49739af94f6dc1532116d67af593
42eaaef87cf60a5129d64bead5698a84d3d43349
8ed1afa7534fa011991dee35874910f8de01758a
b341bd59ed80f4e848039acc6477ce5711318841
88b2d8d9a2114b2580a1f62c51752754fad39cec

Revert them out of master until they get more testing.

Change-Id: Iee00ba9f1e619737c0406222e607b994301c0ff9
Signed-off-by: Alexandre Montplaisir <alexmonthy@voxpopuli.im>
61 files changed:
org.eclipse.linuxtools.tmf.core.tests/src/org/eclipse/linuxtools/tmf/core/tests/component/TmfEventProviderTest.java
org.eclipse.linuxtools.tmf.core.tests/src/org/eclipse/linuxtools/tmf/core/tests/component/TmfProviderManagerTest.java
org.eclipse.linuxtools.tmf.core.tests/src/org/eclipse/linuxtools/tmf/core/tests/ctfadaptor/headless/RequestBenchmark.java
org.eclipse.linuxtools.tmf.core.tests/src/org/eclipse/linuxtools/tmf/core/tests/request/AllTests.java
org.eclipse.linuxtools.tmf.core.tests/src/org/eclipse/linuxtools/tmf/core/tests/request/TmfBlockFilterTest.java [deleted file]
org.eclipse.linuxtools.tmf.core.tests/src/org/eclipse/linuxtools/tmf/core/tests/request/TmfCoalescedDataRequestTest.java [new file with mode: 0644]
org.eclipse.linuxtools.tmf.core.tests/src/org/eclipse/linuxtools/tmf/core/tests/request/TmfCoalescedEventRequestTest.java [new file with mode: 0644]
org.eclipse.linuxtools.tmf.core.tests/src/org/eclipse/linuxtools/tmf/core/tests/request/TmfCoalescedRequestTest.java [deleted file]
org.eclipse.linuxtools.tmf.core.tests/src/org/eclipse/linuxtools/tmf/core/tests/request/TmfDataRequestTest.java
org.eclipse.linuxtools.tmf.core.tests/src/org/eclipse/linuxtools/tmf/core/tests/request/TmfEventRequestTest.java
org.eclipse.linuxtools.tmf.core.tests/src/org/eclipse/linuxtools/tmf/core/tests/request/TmfEventTypeFilterTest.java [deleted file]
org.eclipse.linuxtools.tmf.core.tests/src/org/eclipse/linuxtools/tmf/core/tests/request/TmfRangeFilterTest.java [deleted file]
org.eclipse.linuxtools.tmf.core.tests/src/org/eclipse/linuxtools/tmf/core/tests/request/TmfRequestExecutorTest.java
org.eclipse.linuxtools.tmf.core.tests/src/org/eclipse/linuxtools/tmf/core/tests/request/TmfRequestTest.java [deleted file]
org.eclipse.linuxtools.tmf.core.tests/src/org/eclipse/linuxtools/tmf/core/tests/request/TmfTraceFilterTest.java [deleted file]
org.eclipse.linuxtools.tmf.core.tests/src/org/eclipse/linuxtools/tmf/core/tests/trace/TmfExperimentTest.java
org.eclipse.linuxtools.tmf.core.tests/src/org/eclipse/linuxtools/tmf/core/tests/trace/TmfMultiTraceExperimentTest.java
org.eclipse.linuxtools.tmf.core.tests/src/org/eclipse/linuxtools/tmf/core/tests/trace/TmfTraceTest.java
org.eclipse.linuxtools.tmf.core.tests/stubs/org/eclipse/linuxtools/tmf/tests/stubs/component/TmfDataProviderStub.java
org.eclipse.linuxtools.tmf.core.tests/stubs/org/eclipse/linuxtools/tmf/tests/stubs/component/TmfEventProviderStub.java
org.eclipse.linuxtools.tmf.core.tests/stubs/org/eclipse/linuxtools/tmf/tests/stubs/component/TmfSyntheticEventProviderStub.java
org.eclipse.linuxtools.tmf.core.tests/stubs/org/eclipse/linuxtools/tmf/tests/stubs/request/TmfDataRequestStub.java
org.eclipse.linuxtools.tmf.core.tests/stubs/org/eclipse/linuxtools/tmf/tests/stubs/request/TmfEventRequestStub.java
org.eclipse.linuxtools.tmf.core.tests/stubs/org/eclipse/linuxtools/tmf/tests/stubs/request/TmfRequestStub.java [deleted file]
org.eclipse.linuxtools.tmf.core.tests/stubs/org/eclipse/linuxtools/tmf/tests/stubs/trace/TmfEventParserStub.java
org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/internal/tmf/core/TmfCoreTracer.java
org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/internal/tmf/core/component/TmfEventThread.java
org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/internal/tmf/core/request/TmfCoalescedDataRequest.java [new file with mode: 0644]
org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/internal/tmf/core/request/TmfCoalescedEventRequest.java [new file with mode: 0644]
org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/internal/tmf/core/request/TmfCoalescedRequest.java [deleted file]
org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/internal/tmf/core/request/TmfRequestExecutor.java
org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/internal/tmf/core/statesystem/HistoryBuilder.java
org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/component/ITmfDataProvider.java
org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/component/ITmfEventProvider.java [deleted file]
org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/component/TmfDataProvider.java
org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/component/TmfEventProvider.java
org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/event/TmfTimeRange.java
org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/event/TmfTimestamp.java
org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/event/TmfTimestampFormat.java
org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/request/ITmfDataRequest.java
org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/request/ITmfEventRequest.java
org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/request/ITmfRequest.java [deleted file]
org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/request/TmfBlockFilter.java [deleted file]
org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/request/TmfDataRequest.java
org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/request/TmfEventRequest.java
org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/request/TmfEventTypeFilter.java [deleted file]
org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/request/TmfRangeFilter.java [deleted file]
org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/request/TmfRequest.java [deleted file]
org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/request/TmfTraceFilter.java [deleted file]
org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/statistics/TmfEventsStatistics.java
org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/trace/ITmfTrace.java
org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/trace/TmfCheckpointIndexer.java
org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/trace/TmfExperiment.java
org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/trace/TmfTrace.java
org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/trace/TmfTraceIterator.java [deleted file]
org.eclipse.linuxtools.tmf.ui.tests/widgetStubs/org/eclipse/linuxtools/tmf/ui/tests/uml2sd/trace/TmfUml2SDTestTrace.java
org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/viewers/events/TmfEventsTable.java
org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/histogram/HistogramCurrentTimeControl.java
org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/histogram/HistogramRequest.java
org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/histogram/HistogramView.java
org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/uml2sd/loader/TmfUml2SDSyncLoader.java

index 77f8f2ad9b00beb574bfc0705100fcc3d1b349ba..3854007fb1385e32f03d70d6c3beeb3771dfd2f0 100644 (file)
@@ -17,7 +17,7 @@ import java.util.Vector;
 import junit.framework.TestCase;
 
 import org.eclipse.linuxtools.internal.tmf.core.component.TmfProviderManager;
-import org.eclipse.linuxtools.tmf.core.component.ITmfEventProvider;
+import org.eclipse.linuxtools.tmf.core.component.ITmfDataProvider;
 import org.eclipse.linuxtools.tmf.core.event.ITmfEvent;
 import org.eclipse.linuxtools.tmf.core.event.TmfEvent;
 import org.eclipse.linuxtools.tmf.core.event.TmfTimeRange;
@@ -73,7 +73,7 @@ public class TmfEventProviderTest extends TestCase {
 
         // There should be 2 TmfEvent providers: a TmfTraceStub and a
         // TmfEventProviderStub
-        ITmfEventProvider[] eventProviders = TmfProviderManager.getProviders(TmfEvent.class);
+        ITmfDataProvider[] eventProviders = TmfProviderManager.getProviders(TmfEvent.class);
         assertEquals("getProviders", 2, eventProviders.length);
 
         eventProviders = TmfProviderManager.getProviders(TmfEvent.class, TmfTraceStub.class);
@@ -101,13 +101,13 @@ public class TmfEventProviderTest extends TestCase {
         final Vector<ITmfEvent> requestedEvents = new Vector<ITmfEvent>();
 
         // Get the TmfSyntheticEventStub provider
-        ITmfEventProvider[] eventProviders = TmfProviderManager.getProviders(TmfEvent.class, TmfEventProviderStub.class);
-        ITmfEventProvider provider = eventProviders[0];
+        ITmfDataProvider[] eventProviders = TmfProviderManager.getProviders(TmfEvent.class,
+                TmfEventProviderStub.class);
+        ITmfDataProvider provider = eventProviders[0];
 
         TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BIG_BANG, TmfTimestamp.BIG_CRUNCH);
         final TmfEventRequest request = new TmfEventRequest(TmfEvent.class, range, NB_EVENTS, BLOCK_SIZE) {
             @Override
-            @SuppressWarnings("deprecation")
             public void handleData(ITmfEvent event) {
                 super.handleData(event);
                 requestedEvents.add(event);
@@ -145,15 +145,15 @@ public class TmfEventProviderTest extends TestCase {
         final Vector<ITmfEvent> requestedEventsReq2 = new Vector<ITmfEvent>();
 
         // Get the TmfSyntheticEventStub provider
-        ITmfEventProvider[] eventProviders = TmfProviderManager.getProviders(TmfEvent.class, TmfEventProviderStub.class);
-        ITmfEventProvider provider = eventProviders[0];
+        ITmfDataProvider[] eventProviders = TmfProviderManager.getProviders(TmfEvent.class,
+                TmfEventProviderStub.class);
+        ITmfDataProvider provider = eventProviders[0];
 
         TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BIG_BANG, TmfTimestamp.BIG_CRUNCH);
 
         // Create first request
         final TmfEventRequest request1 = new TmfEventRequest(TmfEvent.class, range, NB_EVENTS, BLOCK_SIZE) {
             @Override
-            @SuppressWarnings("deprecation")
             public void handleData(ITmfEvent event) {
                 super.handleData(event);
                 requestedEventsReq1.add(event);
@@ -181,7 +181,6 @@ public class TmfEventProviderTest extends TestCase {
         // Create second request
         final TmfEventRequest request2 = new TmfEventRequest(TmfEvent.class, range, NB_EVENTS, BLOCK_SIZE) {
             @Override
-            @SuppressWarnings("deprecation")
             public void handleData(ITmfEvent event) {
                 super.handleData(event);
                 requestedEventsReq2.add(event);
@@ -249,13 +248,13 @@ public class TmfEventProviderTest extends TestCase {
         final Vector<ITmfEvent> requestedEvents = new Vector<ITmfEvent>();
 
         // Get the event provider
-        ITmfEventProvider[] eventProviders = TmfProviderManager.getProviders(TmfSyntheticEventStub.class);
-        ITmfEventProvider provider = eventProviders[0];
+        ITmfDataProvider[] eventProviders = TmfProviderManager
+                .getProviders(TmfSyntheticEventStub.class);
+        ITmfDataProvider provider = eventProviders[0];
 
         final TmfEventRequest request = new TmfEventRequest(TmfSyntheticEventStub.class, range,
                 nbEvents, blockSize) {
             @Override
-            @SuppressWarnings("deprecation")
             public void handleData(ITmfEvent event) {
                 super.handleData(event);
                 requestedEvents.add(event);
@@ -366,7 +365,7 @@ public class TmfEventProviderTest extends TestCase {
 
         // There should be 2 TmfEvent providers: a TmfTraceStub and a
         // TmfEventProviderStub
-        ITmfEventProvider[] eventProviders = TmfProviderManager.getProviders(TmfEvent.class);
+        ITmfDataProvider[] eventProviders = TmfProviderManager.getProviders(TmfEvent.class);
         assertEquals("getProviders", 2, eventProviders.length);
 
         eventProviders = TmfProviderManager.getProviders(TmfEvent.class, TmfTraceStub.class);
index fb32a3efa12650ccd4cc8fe82fef852f4e4796b9..4f9c425f1739e84c2cc5c1560838d68a4646cb68 100644 (file)
@@ -18,7 +18,7 @@ import org.eclipse.linuxtools.internal.tmf.core.component.TmfProviderManager;
 import org.eclipse.linuxtools.tmf.core.component.TmfDataProvider;
 import org.eclipse.linuxtools.tmf.core.event.ITmfEvent;
 import org.eclipse.linuxtools.tmf.core.event.TmfEvent;
-import org.eclipse.linuxtools.tmf.core.request.ITmfRequest;
+import org.eclipse.linuxtools.tmf.core.request.ITmfDataRequest;
 import org.eclipse.linuxtools.tmf.core.trace.ITmfContext;
 
 /**
@@ -26,7 +26,7 @@ import org.eclipse.linuxtools.tmf.core.trace.ITmfContext;
  * <p>
  * Test suite for the TmfProviderManager class.
  */
-@SuppressWarnings("nls")
+@SuppressWarnings({ "nls" })
 public class TmfProviderManagerTest extends TestCase {
 
        /**
@@ -54,8 +54,8 @@ public class TmfProviderManagerTest extends TestCase {
                public TestProvider1(Class<TmfEvent> type) {
                        super("TestProvider1", type);
                }
-        @Override
-               public ITmfContext armRequest(ITmfRequest request) {
+               @Override
+               public ITmfContext armRequest(ITmfDataRequest request) {
                        return null;
                }
                @Override
@@ -63,7 +63,7 @@ public class TmfProviderManagerTest extends TestCase {
                        return null;
                }
                @Override
-               public boolean isCompleted(ITmfRequest request, ITmfEvent data, int nbRead) {
+               public boolean isCompleted(ITmfDataRequest request, ITmfEvent data, int nbRead) {
                        return false;
                }
        }
@@ -73,7 +73,7 @@ public class TmfProviderManagerTest extends TestCase {
                        super("TestProvider2", type);
                }
                @Override
-               public ITmfContext armRequest(ITmfRequest request) {
+               public ITmfContext armRequest(ITmfDataRequest request) {
                        return null;
                }
                @Override
@@ -81,7 +81,7 @@ public class TmfProviderManagerTest extends TestCase {
                        return null;
                }
                @Override
-               public boolean isCompleted(ITmfRequest request, ITmfEvent data, int nbRead) {
+               public boolean isCompleted(ITmfDataRequest request, ITmfEvent data, int nbRead) {
                        return false;
                }
        }
@@ -98,7 +98,7 @@ public class TmfProviderManagerTest extends TestCase {
                        super("TestProvider3", type);
                }
                @Override
-               public ITmfContext armRequest(ITmfRequest request) {
+               public ITmfContext armRequest(ITmfDataRequest request) {
                        return null;
                }
                @Override
@@ -106,7 +106,7 @@ public class TmfProviderManagerTest extends TestCase {
                        return null;
                }
                @Override
-               public boolean isCompleted(ITmfRequest request, ITmfEvent data, int nbRead) {
+               public boolean isCompleted(ITmfDataRequest request, ITmfEvent data, int nbRead) {
                        return false;
                }
        }
index 9cb522ae0a96bcaf9ada694ea5e3ca115a477a76..c9adc374e2986ffccee1be851bea0f455081335c 100644 (file)
@@ -83,8 +83,8 @@ public class RequestBenchmark extends TmfEventRequest {
     }
 
     @Override
-    public synchronized void handleEvent(final ITmfEvent event) {
-        super.handleEvent(event);
+    public void handleData(final ITmfEvent event) {
+        super.handleData(event);
         nbEvent++;
 
     }
@@ -92,7 +92,7 @@ public class RequestBenchmark extends TmfEventRequest {
     static long prev;
     static long done = 0;
     @Override
-    public synchronized void handleCompleted() {
+    public void handleCompleted() {
         final long next = System.nanoTime();
         double val = next - prev;
         final int nbEvent2 = nbEvent;
index 92c299c128edd877196bbbbd3e878de06ef6474d..e6d2e3561d6c4faf6539e3ace823ce0c25228232 100644 (file)
@@ -1,15 +1,3 @@
-/*******************************************************************************
- * Copyright (c) 2012 Ericsson
- *
- * 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *   Francois Chouinard - Initial API and implementation
- *******************************************************************************/
-
 package org.eclipse.linuxtools.tmf.core.tests.request;
 
 import junit.framework.Test;
@@ -20,7 +8,7 @@ import org.eclipse.linuxtools.internal.tmf.core.Activator;
 /**
  * <b><u>AllTests</u></b>
  * <p>
- * Test suite for the package o.e.l.tmf.core.request
+ * Implement me. Please.
  * <p>
  */
 @SuppressWarnings({ "nls" })
@@ -32,13 +20,10 @@ public class AllTests {
        public static Test suite() {
                TestSuite suite = new TestSuite("Test suite for " + Activator.PLUGIN_ID + ".request"); //$NON-NLS-1$);
                //$JUnit-BEGIN$
-        suite.addTestSuite(TmfBlockFilterTest.class);
-        suite.addTestSuite(TmfRangeFilterTest.class);
-        suite.addTestSuite(TmfEventTypeFilterTest.class);
-        suite.addTestSuite(TmfRequestTest.class);
-        suite.addTestSuite(TmfCoalescedRequestTest.class);
                suite.addTestSuite(TmfDataRequestTest.class);
                suite.addTestSuite(TmfEventRequestTest.class);
+               suite.addTestSuite(TmfCoalescedDataRequestTest.class);
+               suite.addTestSuite(TmfCoalescedEventRequestTest.class);
                suite.addTestSuite(TmfRequestExecutorTest.class);
                //$JUnit-END$
                return suite;
diff --git a/org.eclipse.linuxtools.tmf.core.tests/src/org/eclipse/linuxtools/tmf/core/tests/request/TmfBlockFilterTest.java b/org.eclipse.linuxtools.tmf.core.tests/src/org/eclipse/linuxtools/tmf/core/tests/request/TmfBlockFilterTest.java
deleted file mode 100644 (file)
index 94e6ccc..0000000
+++ /dev/null
@@ -1,243 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2012 Ericsson
- *
- * 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *   Francois Chouinard - Initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.linuxtools.tmf.core.tests.request;
-
-import junit.framework.TestCase;
-
-import org.eclipse.linuxtools.tmf.core.event.ITmfEvent;
-import org.eclipse.linuxtools.tmf.core.event.TmfEvent;
-import org.eclipse.linuxtools.tmf.core.request.ITmfRequest;
-import org.eclipse.linuxtools.tmf.core.request.TmfBlockFilter;
-import org.junit.Test;
-
-/**
- * <b><u>TmfBlockFilterTest</u></b>
- * <p>
- * Test suite for the TmfBlockFilter class.
- */
-@SuppressWarnings({"nls","javadoc"})
-public class TmfBlockFilterTest extends TestCase {
-
-    // ------------------------------------------------------------------------
-    // Constants
-    // ------------------------------------------------------------------------
-
-    private static final long ALL_EVENTS = ITmfRequest.ALL_EVENTS;
-
-    // ------------------------------------------------------------------------
-       // Housekeeping
-       // ------------------------------------------------------------------------
-
-    /**
-     * @param name the test name
-     */
-       public TmfBlockFilterTest(String name) {
-               super(name);
-       }
-
-       @Override
-       protected void setUp() throws Exception {
-               super.setUp();
-       }
-
-       @Override
-       protected void tearDown() throws Exception {
-               super.tearDown();
-       }
-
-    // ------------------------------------------------------------------------
-       // Constructors
-       // ------------------------------------------------------------------------
-
-       @Test
-       public void testTmfBlockFilter() {
-           TmfBlockFilter filter = TmfBlockFilter.ALL_EVENTS;
-        assertEquals("getStartIndex",           0, filter.getStartIndex());
-        assertEquals("getEndIndex",    ALL_EVENTS, filter.getEndIndex());
-        assertEquals("getNbRequested", ALL_EVENTS, filter.getNbRequested());
-
-        filter = new TmfBlockFilter(0, 1000);
-        assertEquals("getStartIndex",     0, filter.getStartIndex());
-        assertEquals("getEndIndex",    1000, filter.getEndIndex());
-        assertEquals("getNbRequested", 1000, filter.getNbRequested());
-
-        filter = new TmfBlockFilter(-1, 1000);
-        assertEquals("getStartIndex",     0, filter.getStartIndex());
-        assertEquals("getEndIndex",    1000, filter.getEndIndex());
-        assertEquals("getNbRequested", 1000, filter.getNbRequested());
-
-        filter = new TmfBlockFilter(0, -1);
-        assertEquals("getStartIndex",           0, filter.getStartIndex());
-        assertEquals("getEndIndex",    ALL_EVENTS, filter.getEndIndex());
-        assertEquals("getNbRequested", ALL_EVENTS, filter.getNbRequested());
-
-        filter = new TmfBlockFilter(1000, ALL_EVENTS);
-        assertEquals("getStartIndex",        1000, filter.getStartIndex());
-        assertEquals("getEndIndex",    ALL_EVENTS, filter.getEndIndex());
-        assertEquals("getNbRequested", ALL_EVENTS, filter.getNbRequested());
-       }
-
-    @Test
-    public void testTmfBlockFilterCopy() {
-        TmfBlockFilter filter1 = new TmfBlockFilter(0, 1000);
-        TmfBlockFilter filter2 = new TmfBlockFilter(filter1);
-
-        assertEquals("getStartIndex",  filter1.getStartIndex(),  filter2.getStartIndex());
-        assertEquals("getEndIndex",    filter1.getEndIndex(),    filter2.getEndIndex());
-        assertEquals("getNbRequested", filter1.getNbRequested(), filter2.getNbRequested());
-    }
-
-    // ------------------------------------------------------------------------
-       // equals
-       // ------------------------------------------------------------------------
-
-    @Test
-    public void testEqualsReflexivity() {
-        TmfBlockFilter filter1 = new TmfBlockFilter( 0, 1000);
-        TmfBlockFilter filter2 = new TmfBlockFilter(10, 1000);
-
-        assertEquals("equals", filter1, filter1);
-        assertEquals("equals", filter2, filter2);
-
-        assertFalse("equals", filter1.equals(filter2));
-        assertFalse("equals", filter2.equals(filter1));
-    }
-
-    @Test
-    public void testEqualsSymmetry() {
-        TmfBlockFilter filter1 = new TmfBlockFilter( 0, 1000);
-        TmfBlockFilter filter2 = new TmfBlockFilter( 0, 1000);
-        TmfBlockFilter filter3 = new TmfBlockFilter(10, 1000);
-
-        assertEquals("equals", filter1, filter2);
-        assertEquals("equals", filter2, filter1);
-
-        assertFalse("equals", filter1.equals(filter3));
-        assertFalse("equals", filter3.equals(filter1));
-    }
-
-    @Test
-    public void testEqualsTransivity() {
-        TmfBlockFilter filter1 = new TmfBlockFilter(0, 1000);
-        TmfBlockFilter filter2 = new TmfBlockFilter(0, 1000);
-        TmfBlockFilter filter3 = new TmfBlockFilter(0, 1000);
-
-        assertEquals("equals", filter1, filter2);
-        assertEquals("equals", filter2, filter3);
-        assertEquals("equals", filter3, filter1);
-    }
-
-    @Test
-    public void testEqualsNull() {
-        TmfBlockFilter filter1 = new TmfBlockFilter( 0, 1000);
-        TmfBlockFilter filter2 = new TmfBlockFilter(10, 1000);
-
-        assertFalse("equals", filter1.equals(null));
-        assertFalse("equals", filter2.equals(null));
-    }
-
-    // ------------------------------------------------------------------------
-    // hashCode
-    // ------------------------------------------------------------------------
-
-    @Test
-    public void testHashCode() {
-        TmfBlockFilter filter1 = new TmfBlockFilter( 0, 1000);
-        TmfBlockFilter filter2 = new TmfBlockFilter(10, 1000);
-
-        assertFalse("hashCode",  filter1.hashCode() == filter2.hashCode());
-    }
-
-       // ------------------------------------------------------------------------
-       // toString
-       // ------------------------------------------------------------------------
-
-    @Test
-    public void testToString() {
-        TmfBlockFilter filter1 = new TmfBlockFilter( 0, 1000);
-        TmfBlockFilter filter2 = new TmfBlockFilter(10, 2000);
-
-        String expected0 = "TmfBlockFilter [fStartIndex=0, fEndIndex=" + Long.MAX_VALUE + ", fNbRequested=" + Long.MAX_VALUE + "]";
-        String expected1 = "TmfBlockFilter [fStartIndex=0, fEndIndex=1000, fNbRequested=1000]";
-        String expected2 = "TmfBlockFilter [fStartIndex=10, fEndIndex=2010, fNbRequested=2000]";
-
-        assertEquals("toString", expected0, TmfBlockFilter.ALL_EVENTS.toString());
-        assertEquals("toString", expected1, filter1.toString());
-        assertEquals("toString", expected2, filter2.toString());
-    }
-
-    // ------------------------------------------------------------------------
-    // matches
-    // ------------------------------------------------------------------------
-
-    /**
-     * The only test that really matters...
-     */
-    @Test
-    public void testMatches() {
-
-        TmfBlockFilter filter1 = new TmfBlockFilter( 0, 1000);
-        TmfBlockFilter filter2 = new TmfBlockFilter(10, 2000);
-
-        ITmfEvent event = new TmfEvent(null, 0, null, null, null, null, null);
-        assertTrue ("matches", TmfBlockFilter.ALL_EVENTS.matches(event));
-        assertTrue ("matches", filter1.matches(event));
-        assertFalse("matches", filter2.matches(event));
-
-        event = new TmfEvent(null, 5, null, null, null, null, null);
-        assertTrue ("matches", TmfBlockFilter.ALL_EVENTS.matches(event));
-        assertTrue ("matches", filter1.matches(event));
-        assertFalse("matches", filter2.matches(event));
-
-        event = new TmfEvent(null, 9, null, null, null, null, null);
-        assertTrue ("matches", TmfBlockFilter.ALL_EVENTS.matches(event));
-        assertTrue ("matches", filter1.matches(event));
-        assertFalse("matches", filter2.matches(event));
-
-        event = new TmfEvent(null, 10, null, null, null, null, null);
-        assertTrue ("matches", TmfBlockFilter.ALL_EVENTS.matches(event));
-        assertTrue ("matches", filter1.matches(event));
-        assertTrue ("matches", filter2.matches(event));
-
-        event = new TmfEvent(null, 999, null, null, null, null, null);
-        assertTrue ("matches", TmfBlockFilter.ALL_EVENTS.matches(event));
-        assertTrue ("matches", filter1.matches(event));
-        assertTrue ("matches", filter2.matches(event));
-
-        event = new TmfEvent(null, 1000, null, null, null, null, null);
-        assertTrue ("matches", TmfBlockFilter.ALL_EVENTS.matches(event));
-        assertFalse("matches", filter1.matches(event));
-        assertTrue ("matches", filter2.matches(event));
-
-        event = new TmfEvent(null, 1999, null, null, null, null, null);
-        assertTrue ("matches", TmfBlockFilter.ALL_EVENTS.matches(event));
-        assertFalse("matches", filter1.matches(event));
-        assertTrue ("matches", filter2.matches(event));
-
-        event = new TmfEvent(null, 2000, null, null, null, null, null);
-        assertTrue ("matches", TmfBlockFilter.ALL_EVENTS.matches(event));
-        assertFalse("matches", filter1.matches(event));
-        assertTrue ("matches", filter2.matches(event));
-
-        event = new TmfEvent(null, 2009, null, null, null, null, null);
-        assertTrue ("matches", TmfBlockFilter.ALL_EVENTS.matches(event));
-        assertFalse("matches", filter1.matches(event));
-        assertTrue ("matches", filter2.matches(event));
-
-        event = new TmfEvent(null, 2010, null, null, null, null, null);
-        assertTrue ("matches", TmfBlockFilter.ALL_EVENTS.matches(event));
-        assertFalse("matches", filter1.matches(event));
-        assertFalse("matches", filter2.matches(event));
-    }
-
-}
diff --git a/org.eclipse.linuxtools.tmf.core.tests/src/org/eclipse/linuxtools/tmf/core/tests/request/TmfCoalescedDataRequestTest.java b/org.eclipse.linuxtools.tmf.core.tests/src/org/eclipse/linuxtools/tmf/core/tests/request/TmfCoalescedDataRequestTest.java
new file mode 100644 (file)
index 0000000..fcfbdcf
--- /dev/null
@@ -0,0 +1,510 @@
+/*******************************************************************************
+ * Copyright (c) 2009, 2010, 2012 Ericsson
+ *
+ * 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
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *   Francois Chouinard - Initial API and implementation
+ *   Francois Chouinard - Added tests to check offsets
+ *******************************************************************************/
+
+package org.eclipse.linuxtools.tmf.core.tests.request;
+
+import junit.framework.TestCase;
+
+import org.eclipse.linuxtools.internal.tmf.core.request.TmfCoalescedDataRequest;
+import org.eclipse.linuxtools.tmf.core.event.ITmfEvent;
+import org.eclipse.linuxtools.tmf.core.event.TmfEvent;
+import org.eclipse.linuxtools.tmf.core.request.TmfDataRequest;
+import org.eclipse.linuxtools.tmf.tests.stubs.request.TmfDataRequestStub;
+
+/**
+ * Test suite for the TmfCoalescedDataRequest class.
+ */
+@SuppressWarnings({"nls","javadoc"})
+public class TmfCoalescedDataRequestTest extends TestCase {
+
+       // ------------------------------------------------------------------------
+       // Variables
+       // ------------------------------------------------------------------------
+
+       private TmfCoalescedDataRequest fRequest1;
+       private TmfCoalescedDataRequest fRequest2;
+       private TmfCoalescedDataRequest fRequest3;
+       private TmfCoalescedDataRequest fRequest4;
+
+       private TmfCoalescedDataRequest fRequest1b;
+       private TmfCoalescedDataRequest fRequest1c;
+
+       private int fRequestCount;
+
+       // ------------------------------------------------------------------------
+       // Housekeeping
+       // ------------------------------------------------------------------------
+
+       /**
+        * @param name the test name
+        */
+       public TmfCoalescedDataRequestTest(final String name) {
+               super(name);
+       }
+
+    @Override
+       public void setUp() throws Exception {
+               super.setUp();
+               TmfDataRequest.reset();
+               fRequest1  = new TmfCoalescedDataRequest(TmfEvent.class, 10, 100, 200);
+               fRequest2  = new TmfCoalescedDataRequest(TmfEvent.class, 20, 100, 200);
+               fRequest3  = new TmfCoalescedDataRequest(TmfEvent.class, 20, 200, 200);
+               fRequest4  = new TmfCoalescedDataRequest(TmfEvent.class, 20, 200, 300);
+
+               fRequest1b = new TmfCoalescedDataRequest(TmfEvent.class, 10, 100, 200);
+               fRequest1c = new TmfCoalescedDataRequest(TmfEvent.class, 10, 100, 200);
+
+               fRequestCount = fRequest1c.getRequestId() + 1;
+       }
+
+       @Override
+       public void tearDown() throws Exception {
+               super.tearDown();
+       }
+
+       private static TmfCoalescedDataRequest setupTestRequest(final boolean[] flags) {
+
+               TmfCoalescedDataRequest request = new TmfCoalescedDataRequest(TmfEvent.class, 10, 100, 200) {
+                   @Override
+                       public void handleCompleted() {
+                       super.handleCompleted();
+                       flags[0] = true;
+                   }
+                   @Override
+                   public void handleSuccess() {
+                       super.handleSuccess();
+                       flags[1] = true;
+                   }
+                   @Override
+                   public void handleFailure() {
+                       super.handleFailure();
+                       flags[2] = true;
+                   }
+                   @Override
+                   public void handleCancel() {
+                       super.handleCancel();
+                       flags[3] = true;
+                   }
+               };
+               return request;
+       }
+
+       // ------------------------------------------------------------------------
+       // Constructors
+       // ------------------------------------------------------------------------
+
+       public void testTmfCoalescedDataRequest() {
+               TmfCoalescedDataRequest request = new TmfCoalescedDataRequest(TmfEvent.class);
+
+        assertEquals("getRequestId", fRequestCount++, request.getRequestId());
+        assertEquals("getDataType",  ITmfEvent.class, request.getDataType());
+
+        assertEquals("getIndex", 0, request.getIndex());
+        assertEquals("getNbRequestedEvents", TmfDataRequest.ALL_DATA, request.getNbRequested());
+
+        assertFalse("isCompleted", request.isCompleted());
+        assertFalse("isFailed", request.isFailed());
+        assertFalse("isCancelled", request.isCancelled());
+
+        assertEquals("getNbRead", 0, request.getNbRead());
+       }
+
+       public void testTmfCoalescedDataRequestIndex() {
+               TmfCoalescedDataRequest request = new TmfCoalescedDataRequest(TmfEvent.class, 10);
+
+        assertEquals("getRequestId", fRequestCount++, request.getRequestId());
+        assertEquals("getDataType",  ITmfEvent.class, request.getDataType());
+
+        assertEquals("getIndex", 10, request.getIndex());
+        assertEquals("getNbRequestedEvents", TmfDataRequest.ALL_DATA, request.getNbRequested());
+
+        assertFalse("isCompleted", request.isCompleted());
+        assertFalse("isFailed", request.isFailed());
+        assertFalse("isCancelled", request.isCancelled());
+
+        assertEquals("getNbRead", 0, request.getNbRead());
+       }
+
+       public void testTmfCoalescedDataRequestIndexNbRequested() {
+               TmfCoalescedDataRequest request = new TmfCoalescedDataRequest(TmfEvent.class, 10, 100);
+
+        assertEquals("getRequestId", fRequestCount++, request.getRequestId());
+        assertEquals("getDataType",  ITmfEvent.class, request.getDataType());
+
+        assertEquals("getIndex", 10, request.getIndex());
+        assertEquals("getNbRequestedEvents", 100, request.getNbRequested());
+
+        assertFalse("isCompleted", request.isCompleted());
+        assertFalse("isFailed", request.isFailed());
+        assertFalse("isCancelled", request.isCancelled());
+
+        assertEquals("getNbRead", 0, request.getNbRead());
+       }
+
+       public void testTmfCoalescedDataRequestIndexNbEventsBlocksize() {
+               TmfCoalescedDataRequest request = new TmfCoalescedDataRequest(TmfEvent.class, 10, 100, 200);
+
+        assertEquals("getRequestId", fRequestCount++, request.getRequestId());
+        assertEquals("getDataType",  ITmfEvent.class, request.getDataType());
+
+        assertEquals("getIndex", 10, request.getIndex());
+        assertEquals("getNbRequestedEvents", 100, request.getNbRequested());
+
+        assertFalse("isCompleted", request.isCompleted());
+        assertFalse("isFailed", request.isFailed());
+        assertFalse("isCancelled", request.isCancelled());
+
+        assertEquals("getNbRead", 0, request.getNbRead());
+       }
+
+       // ------------------------------------------------------------------------
+       // equals
+       // ------------------------------------------------------------------------
+
+       public void testEqualsReflexivity() {
+        assertTrue("equals", fRequest1.equals(fRequest1));
+        assertTrue("equals", fRequest2.equals(fRequest2));
+
+        assertFalse("equals", fRequest1.equals(fRequest2));
+        assertFalse("equals", fRequest2.equals(fRequest1));
+       }
+
+       public void testEqualsSymmetry() {
+        assertTrue("equals", fRequest1.equals(fRequest1b));
+        assertTrue("equals", fRequest1b.equals(fRequest1));
+
+        assertFalse("equals", fRequest1.equals(fRequest3));
+        assertFalse("equals", fRequest2.equals(fRequest3));
+        assertFalse("equals", fRequest3.equals(fRequest1));
+        assertFalse("equals", fRequest3.equals(fRequest2));
+       }
+
+       public void testEqualsTransivity() {
+        assertTrue("equals", fRequest1.equals(fRequest1b));
+        assertTrue("equals", fRequest1b.equals(fRequest1c));
+        assertTrue("equals", fRequest1.equals(fRequest1c));
+       }
+
+       public void testEqualsNull() {
+        assertFalse("equals", fRequest1.equals(null));
+        assertFalse("equals", fRequest2.equals(null));
+       }
+
+       // ------------------------------------------------------------------------
+       // hashCode
+       // ------------------------------------------------------------------------
+
+       public void testHashCode() {
+        assertTrue("hashCode", fRequest1.hashCode() == fRequest1.hashCode());
+        assertTrue("hashCode", fRequest2.hashCode() == fRequest2.hashCode());
+               assertTrue("hashCode", fRequest1.hashCode() != fRequest2.hashCode());
+       }
+
+       // ------------------------------------------------------------------------
+       // toString
+       // ------------------------------------------------------------------------
+
+       public void testToString() {
+        String expected1 = "[TmfCoalescedDataRequest(0,ITmfEvent,10,100,200)]";
+        String expected2 = "[TmfCoalescedDataRequest(1,ITmfEvent,20,100,200)]";
+        String expected3 = "[TmfCoalescedDataRequest(2,ITmfEvent,20,200,200)]";
+        String expected4 = "[TmfCoalescedDataRequest(3,ITmfEvent,20,200,300)]";
+
+        assertEquals("toString", expected1, fRequest1.toString());
+        assertEquals("toString", expected2, fRequest2.toString());
+        assertEquals("toString", expected3, fRequest3.toString());
+        assertEquals("toString", expected4, fRequest4.toString());
+       }
+
+       // ------------------------------------------------------------------------
+       // isCompatible
+       // ------------------------------------------------------------------------
+
+       public void testIsCompatible() {
+               TmfCoalescedDataRequest coalescedRequest = new TmfCoalescedDataRequest(TmfEvent.class, 10, 100, 200);
+        TmfDataRequest request1 = new TmfDataRequestStub(TmfEvent.class,  10, 100, 200);
+               TmfDataRequest request2 = new TmfDataRequestStub(TmfEvent.class,   5, 100, 200);
+        TmfDataRequest request3 = new TmfDataRequestStub(TmfEvent.class,   5,   4, 200);
+        TmfDataRequest request4 = new TmfDataRequestStub(TmfEvent.class,   5,   5, 200);
+        TmfDataRequest request5 = new TmfDataRequestStub(TmfEvent.class,  15, 100, 200);
+        TmfDataRequest request6 = new TmfDataRequestStub(TmfEvent.class, 100, 100, 200);
+        TmfDataRequest request7 = new TmfDataRequestStub(TmfEvent.class, 110, 100, 200);
+        TmfDataRequest request8 = new TmfDataRequestStub(TmfEvent.class, 111, 100, 200);
+
+        assertTrue("isCompatible", coalescedRequest.isCompatible(request1));
+        assertTrue("isCompatible", coalescedRequest.isCompatible(request2));
+        assertTrue("isCompatible", coalescedRequest.isCompatible(request3));
+        assertTrue("isCompatible", coalescedRequest.isCompatible(request4));
+        assertTrue("isCompatible", coalescedRequest.isCompatible(request5));
+        assertTrue("isCompatible", coalescedRequest.isCompatible(request6));
+        assertTrue("isCompatible", coalescedRequest.isCompatible(request7));
+        assertTrue("isCompatible", coalescedRequest.isCompatible(request8));
+
+        TmfDataRequest request9  = new TmfDataRequestStub(TmfEvent.class,   5,   3, 200);
+        TmfDataRequest request10 = new TmfDataRequestStub(TmfEvent.class, 112, 100, 200);
+
+        assertFalse("isCompatible", coalescedRequest.isCompatible(request9));
+        assertFalse("isCompatible", coalescedRequest.isCompatible(request10));
+       }
+
+    // ------------------------------------------------------------------------
+    // addRequest
+    // ------------------------------------------------------------------------
+
+    public void testAddRequest1() {
+        TmfCoalescedDataRequest coalescedRequest = new TmfCoalescedDataRequest(TmfEvent.class, 10, 100, 200);
+        TmfDataRequest request = new TmfDataRequestStub(TmfEvent.class, 10, 100, 200);
+
+        assertTrue("isCompatible", coalescedRequest.isCompatible(request));
+        coalescedRequest.addRequest(request);
+        assertEquals("addRequest",  10, coalescedRequest.getIndex());
+        assertEquals("addRequest", 100, coalescedRequest.getNbRequested());
+        assertEquals("addRequest", 200, coalescedRequest.getBlockSize());
+    }
+
+    public void testAddRequest2() {
+        TmfCoalescedDataRequest coalescedRequest = new TmfCoalescedDataRequest(TmfEvent.class, 10, 100, 200);
+        TmfDataRequest request = new TmfDataRequestStub(TmfEvent.class, 5, 100, 200);
+
+        assertTrue("isCompatible", coalescedRequest.isCompatible(request));
+        coalescedRequest.addRequest(request);
+        assertEquals("addRequest",   5, coalescedRequest.getIndex());
+        assertEquals("addRequest", 105, coalescedRequest.getNbRequested());
+        assertEquals("addRequest", 200, coalescedRequest.getBlockSize());
+    }
+
+    public void testAddRequest3() {
+        TmfCoalescedDataRequest coalescedRequest = new TmfCoalescedDataRequest(TmfEvent.class, 10, 100, 200);
+        TmfDataRequest request = new TmfDataRequestStub(TmfEvent.class, 5, 4, 200);
+
+        assertTrue("isCompatible", coalescedRequest.isCompatible(request));
+        coalescedRequest.addRequest(request);
+        assertEquals("addRequest",   5, coalescedRequest.getIndex());
+        assertEquals("addRequest", 105, coalescedRequest.getNbRequested());
+        assertEquals("addRequest", 200, coalescedRequest.getBlockSize());
+    }
+
+    public void testAddRequest4() {
+        TmfCoalescedDataRequest coalescedRequest = new TmfCoalescedDataRequest(TmfEvent.class, 10, 100, 200);
+        TmfDataRequest request = new TmfDataRequestStub(TmfEvent.class, 5, 5, 200);
+
+        assertTrue("isCompatible", coalescedRequest.isCompatible(request));
+        coalescedRequest.addRequest(request);
+        assertEquals("addRequest",   5, coalescedRequest.getIndex());
+        assertEquals("addRequest", 105, coalescedRequest.getNbRequested());
+        assertEquals("addRequest", 200, coalescedRequest.getBlockSize());
+    }
+
+    public void testAddRequest5() {
+        TmfCoalescedDataRequest coalescedRequest = new TmfCoalescedDataRequest(TmfEvent.class, 10, 100, 200);
+        TmfDataRequest request = new TmfDataRequestStub(TmfEvent.class,  15, 100, 200);
+
+        assertTrue("isCompatible", coalescedRequest.isCompatible(request));
+        coalescedRequest.addRequest(request);
+        assertEquals("addRequest",  10, coalescedRequest.getIndex());
+        assertEquals("addRequest", 105, coalescedRequest.getNbRequested());
+        assertEquals("addRequest", 200, coalescedRequest.getBlockSize());
+    }
+
+    public void testAddRequest6() {
+        TmfCoalescedDataRequest coalescedRequest = new TmfCoalescedDataRequest(TmfEvent.class, 10, 100, 200);
+        TmfDataRequest request = new TmfDataRequestStub(TmfEvent.class, 100, 100, 200);
+
+        assertTrue("isCompatible", coalescedRequest.isCompatible(request));
+        coalescedRequest.addRequest(request);
+        assertEquals("addRequest",  10, coalescedRequest.getIndex());
+        assertEquals("addRequest", 190, coalescedRequest.getNbRequested());
+        assertEquals("addRequest", 200, coalescedRequest.getBlockSize());
+    }
+
+    public void testAddRequest7() {
+        TmfCoalescedDataRequest coalescedRequest = new TmfCoalescedDataRequest(TmfEvent.class, 10, 100, 200);
+        TmfDataRequest request = new TmfDataRequestStub(TmfEvent.class, 110, 100, 200);
+
+        assertTrue("isCompatible", coalescedRequest.isCompatible(request));
+        coalescedRequest.addRequest(request);
+        assertEquals("addRequest",  10, coalescedRequest.getIndex());
+        assertEquals("addRequest", 200, coalescedRequest.getNbRequested());
+        assertEquals("addRequest", 200, coalescedRequest.getBlockSize());
+    }
+
+    public void testAddRequest8() {
+        TmfCoalescedDataRequest coalescedRequest = new TmfCoalescedDataRequest(TmfEvent.class, 10, 100, 200);
+        TmfDataRequest request = new TmfDataRequestStub(TmfEvent.class, 111, 100, 200);
+
+        assertTrue("isCompatible", coalescedRequest.isCompatible(request));
+        coalescedRequest.addRequest(request);
+        assertEquals("addRequest",  10, coalescedRequest.getIndex());
+        assertEquals("addRequest", 201, coalescedRequest.getNbRequested());
+        assertEquals("addRequest", 200, coalescedRequest.getBlockSize());
+    }
+
+       // ------------------------------------------------------------------------
+       // done
+       // ------------------------------------------------------------------------
+
+       public void testDone() {
+
+               // Test request
+               final boolean[] crFlags = new boolean[4];
+               TmfCoalescedDataRequest request = setupTestRequest(crFlags);
+               TmfDataRequest subRequest1 = new TmfDataRequestStub(TmfEvent.class, 10, 100, 200);
+               TmfDataRequest subRequest2 = new TmfDataRequestStub(TmfEvent.class, 10, 100, 200);
+               request.addRequest(subRequest1);
+               request.addRequest(subRequest2);
+
+               request.done();
+
+               // Validate the coalescing request
+               assertTrue ("isCompleted", request.isCompleted());
+               assertFalse("isFailed",    request.isFailed());
+               assertFalse("isCancelled", request.isCancelled());
+
+               assertTrue ("handleCompleted", crFlags[0]);
+               assertTrue ("handleSuccess",   crFlags[1]);
+               assertFalse("handleFailure",   crFlags[2]);
+               assertFalse("handleCancel",    crFlags[3]);
+
+               // Validate the first coalesced request
+               assertTrue ("isCompleted", subRequest1.isCompleted());
+               assertFalse("isFailed",    subRequest1.isFailed());
+               assertFalse("isCancelled", subRequest1.isCancelled());
+
+               // Validate the second coalesced request
+               assertTrue ("isCompleted", subRequest2.isCompleted());
+               assertFalse("isFailed",    subRequest2.isFailed());
+               assertFalse("isCancelled", subRequest2.isCancelled());
+       }
+
+       // ------------------------------------------------------------------------
+       // fail
+       // ------------------------------------------------------------------------
+
+       public void testFail() {
+
+               final boolean[] crFlags = new boolean[4];
+               TmfCoalescedDataRequest request = setupTestRequest(crFlags);
+               TmfDataRequest subRequest1 = new TmfDataRequestStub(TmfEvent.class, 10, 100, 200);
+               TmfDataRequest subRequest2 = new TmfDataRequestStub(TmfEvent.class, 10, 100, 200);
+               request.addRequest(subRequest1);
+               request.addRequest(subRequest2);
+
+               request.fail();
+
+               // Validate the coalescing request
+               assertTrue ("isCompleted", request.isCompleted());
+               assertTrue ("isFailed",    request.isFailed());
+               assertFalse("isCancelled", request.isCancelled());
+
+               assertTrue ("handleCompleted", crFlags[0]);
+               assertFalse("handleSuccess",   crFlags[1]);
+               assertTrue ("handleFailure",   crFlags[2]);
+               assertFalse("handleCancel",    crFlags[3]);
+
+               // Validate the first coalesced request
+               assertTrue ("isCompleted", subRequest1.isCompleted());
+               assertTrue ("isFailed",    subRequest1.isFailed());
+               assertFalse("isCancelled", subRequest1.isCancelled());
+
+               // Validate the second coalesced request
+               assertTrue ("isCompleted", subRequest2.isCompleted());
+               assertTrue ("isFailed",    subRequest2.isFailed());
+               assertFalse("isCancelled", subRequest2.isCancelled());
+       }
+
+       // ------------------------------------------------------------------------
+       // cancel
+       // ------------------------------------------------------------------------
+
+       public void testCancel() {
+
+               final boolean[] crFlags = new boolean[4];
+               TmfCoalescedDataRequest request = setupTestRequest(crFlags);
+               TmfDataRequest subRequest1 = new TmfDataRequestStub(TmfEvent.class, 10, 100, 200);
+               TmfDataRequest subRequest2 = new TmfDataRequestStub(TmfEvent.class, 10, 100, 200);
+               request.addRequest(subRequest1);
+               request.addRequest(subRequest2);
+
+               request.cancel();
+
+               // Validate the coalescing request
+               assertTrue ("isCompleted", request.isCompleted());
+               assertFalse("isFailed",    request.isFailed());
+               assertTrue ("isCancelled", request.isCancelled());
+
+               assertTrue ("handleCompleted", crFlags[0]);
+               assertFalse("handleSuccess",   crFlags[1]);
+               assertFalse("handleFailure",   crFlags[2]);
+               assertTrue ("handleCancel",    crFlags[3]);
+
+               // Validate the first coalesced request
+               assertTrue ("isCompleted", subRequest1.isCompleted());
+               assertFalse("isFailed",    subRequest1.isFailed());
+               assertTrue ("isCancelled", subRequest1.isCancelled());
+
+               // Validate the second coalesced request
+               assertTrue ("isCompleted", subRequest2.isCompleted());
+               assertFalse("isFailed",    subRequest2.isFailed());
+               assertTrue ("isCancelled", subRequest2.isCancelled());
+       }
+
+
+       // ------------------------------------------------------------------------
+       // cancel sub-requests
+       // ------------------------------------------------------------------------
+
+    public void testCancelSubRequests() {
+
+               final boolean[] crFlags = new boolean[4];
+               TmfCoalescedDataRequest request = setupTestRequest(crFlags);
+               TmfDataRequest subRequest1 = new TmfDataRequestStub(TmfEvent.class, 10, 100, 200);
+               TmfDataRequest subRequest2 = new TmfDataRequestStub(TmfEvent.class, 10, 100, 200);
+               request.addRequest(subRequest1);
+               request.addRequest(subRequest2);
+
+               subRequest1.cancel();
+
+               // Validate the first coalesced request
+               assertTrue ("isCompleted", subRequest1.isCompleted());
+               assertFalse("isFailed",    subRequest1.isFailed());
+               assertTrue ("isCancelled", subRequest1.isCancelled());
+
+               // Validate the coalescing request
+               assertFalse("isCompleted", request.isCompleted());
+               assertFalse("isFailed",     request.isFailed());
+               assertFalse("isCancelled", request.isCancelled());
+
+               // Cancel second sub-request
+               subRequest2.cancel();
+
+               // Validate the second coalesced request
+               assertTrue ("isCompleted", subRequest2.isCompleted());
+               assertFalse("isFailed",    subRequest2.isFailed());
+               assertTrue ("isCancelled", subRequest2.isCancelled());
+
+               // Validate the coalescing request
+               assertTrue ("isCompleted", request.isCompleted());
+               assertFalse("isFailed",    request.isFailed());
+               assertTrue ("isCancelled", request.isCancelled());
+
+               // Finalize coalescing request -
+               // Note: No need to check "request.isCancelled()" since it was verified above
+            request.cancel();
+
+               assertTrue ("handleCompleted", crFlags[0]);
+               assertFalse("handleSuccess",   crFlags[1]);
+               assertFalse("handleFailure",   crFlags[2]);
+               assertTrue ("handleCancel",    crFlags[3]);
+           }
+
+}
diff --git a/org.eclipse.linuxtools.tmf.core.tests/src/org/eclipse/linuxtools/tmf/core/tests/request/TmfCoalescedEventRequestTest.java b/org.eclipse.linuxtools.tmf.core.tests/src/org/eclipse/linuxtools/tmf/core/tests/request/TmfCoalescedEventRequestTest.java
new file mode 100644 (file)
index 0000000..475e69d
--- /dev/null
@@ -0,0 +1,619 @@
+/*******************************************************************************
+ * Copyright (c) 2009, 2010 Ericsson
+ *
+ * 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
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *   Francois Chouinard - Initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.linuxtools.tmf.core.tests.request;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.util.Vector;
+
+import junit.framework.TestCase;
+
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.linuxtools.internal.tmf.core.component.TmfProviderManager;
+import org.eclipse.linuxtools.internal.tmf.core.request.TmfCoalescedDataRequest;
+import org.eclipse.linuxtools.internal.tmf.core.request.TmfCoalescedEventRequest;
+import org.eclipse.linuxtools.tmf.core.component.ITmfDataProvider;
+import org.eclipse.linuxtools.tmf.core.event.ITmfEvent;
+import org.eclipse.linuxtools.tmf.core.event.TmfEvent;
+import org.eclipse.linuxtools.tmf.core.event.TmfTimeRange;
+import org.eclipse.linuxtools.tmf.core.event.TmfTimestamp;
+import org.eclipse.linuxtools.tmf.core.exceptions.TmfTraceException;
+import org.eclipse.linuxtools.tmf.core.request.ITmfDataRequest.ExecutionType;
+import org.eclipse.linuxtools.tmf.core.request.TmfDataRequest;
+import org.eclipse.linuxtools.tmf.core.request.TmfEventRequest;
+import org.eclipse.linuxtools.tmf.core.signal.TmfSignal;
+import org.eclipse.linuxtools.tmf.core.signal.TmfSignalHandler;
+import org.eclipse.linuxtools.tmf.core.signal.TmfSignalManager;
+import org.eclipse.linuxtools.tmf.core.tests.TmfCoreTestPlugin;
+import org.eclipse.linuxtools.tmf.tests.stubs.request.TmfEventRequestStub;
+import org.eclipse.linuxtools.tmf.tests.stubs.trace.TmfTraceStub;
+
+/**
+ * <b><u>TmfCoalescedEventRequestTest</u></b>
+ * <p>
+ * Test suite for the TmfCoalescedEventRequest class.
+ */
+@SuppressWarnings({"nls","javadoc"})
+public class TmfCoalescedEventRequestTest extends TestCase {
+
+       // ------------------------------------------------------------------------
+       // Variables
+       // ------------------------------------------------------------------------
+
+       private final TmfTimeRange range1 = new TmfTimeRange(TmfTimeRange.ETERNITY);
+       private final TmfTimeRange range2 = new TmfTimeRange(new TmfTimestamp(), TmfTimestamp.BIG_CRUNCH);
+
+       private TmfCoalescedEventRequest fRequest1;
+       private TmfCoalescedEventRequest fRequest2;
+       private TmfCoalescedEventRequest fRequest3;
+       private TmfCoalescedEventRequest fRequest4;
+
+       private TmfCoalescedEventRequest fRequest1b;
+       private TmfCoalescedEventRequest fRequest1c;
+
+       private int fRequestCount;
+
+       // ------------------------------------------------------------------------
+       // Housekeeping
+       // ------------------------------------------------------------------------
+
+    /**
+     * @param name the test name
+     */
+       public TmfCoalescedEventRequestTest(String name) {
+               super(name);
+       }
+
+       @Override
+       public void setUp() throws Exception {
+               super.setUp();
+               TmfDataRequest.reset();
+               fRequest1  = new TmfCoalescedEventRequest(TmfEvent.class, range1, 100, 200);
+               fRequest2  = new TmfCoalescedEventRequest(TmfEvent.class, range2, 100, 200);
+               fRequest3  = new TmfCoalescedEventRequest(TmfEvent.class, range2, 200, 200);
+               fRequest4  = new TmfCoalescedEventRequest(TmfEvent.class, range2, 200, 300);
+
+               fRequest1b = new TmfCoalescedEventRequest(TmfEvent.class, range1, 100, 200);
+               fRequest1c = new TmfCoalescedEventRequest(TmfEvent.class, range1, 100, 200);
+
+               fRequestCount = fRequest1c.getRequestId() + 1;
+       }
+
+       @Override
+       public void tearDown() throws Exception {
+               super.tearDown();
+       }
+
+       private TmfCoalescedEventRequest setupTestRequest(final boolean[] flags) {
+
+               TmfCoalescedEventRequest request = new TmfCoalescedEventRequest(TmfEvent.class, range1, 100, 200) {
+                   @Override
+                       public void handleCompleted() {
+                       super.handleCompleted();
+                       flags[0] = true;
+                   }
+                   @Override
+                   public void handleSuccess() {
+                       super.handleSuccess();
+                       flags[1] = true;
+                   }
+                   @Override
+                   public void handleFailure() {
+                       super.handleFailure();
+                       flags[2] = true;
+                   }
+                   @Override
+                   public void handleCancel() {
+                       super.handleCancel();
+                       flags[3] = true;
+                   }
+               };
+               return request;
+       }
+
+       // ------------------------------------------------------------------------
+       // Constructors
+       // ------------------------------------------------------------------------
+
+       public void testTmfCoalescedEventRequest() {
+               TmfCoalescedEventRequest request = new TmfCoalescedEventRequest(TmfEvent.class);
+
+        assertEquals("getRequestId", fRequestCount++, request.getRequestId());
+        assertEquals("getDataType",  ITmfEvent.class, request.getDataType());
+
+        assertEquals("getRange", range1, request.getRange());
+        assertEquals("getNbRequestedEvents", TmfDataRequest.ALL_DATA, request.getNbRequested());
+
+        assertFalse("isCompleted", request.isCompleted());
+        assertFalse("isFailed", request.isFailed());
+        assertFalse("isCancelled", request.isCancelled());
+
+        assertEquals("getNbRead", 0, request.getNbRead());
+       }
+
+       public void testTmfCoalescedEventRequestIndex() {
+               TmfCoalescedEventRequest request = new TmfCoalescedEventRequest(TmfEvent.class, range1);
+
+        assertEquals("getRequestId", fRequestCount++, request.getRequestId());
+        assertEquals("getDataType",  ITmfEvent.class, request.getDataType());
+
+        assertEquals("getRange", range1, request.getRange());
+        assertEquals("getNbRequestedEvents", TmfDataRequest.ALL_DATA, request.getNbRequested());
+
+        assertFalse("isCompleted", request.isCompleted());
+        assertFalse("isFailed", request.isFailed());
+        assertFalse("isCancelled", request.isCancelled());
+
+        assertEquals("getNbRead", 0, request.getNbRead());
+       }
+
+       public void testTmfCoalescedEventRequestIndexNbRequested() {
+               TmfCoalescedEventRequest request = new TmfCoalescedEventRequest(TmfEvent.class, range1, 100);
+
+        assertEquals("getRequestId", fRequestCount++, request.getRequestId());
+        assertEquals("getDataType",  ITmfEvent.class, request.getDataType());
+
+        assertEquals("getRange", range1, request.getRange());
+        assertEquals("getNbRequestedEvents", 100, request.getNbRequested());
+
+        assertFalse("isCompleted", request.isCompleted());
+        assertFalse("isFailed", request.isFailed());
+        assertFalse("isCancelled", request.isCancelled());
+
+        assertEquals("getNbRead", 0, request.getNbRead());
+       }
+
+       public void testTmfCoalescedEventRequestIndexNbEventsBlocksize() {
+               TmfCoalescedEventRequest request = new TmfCoalescedEventRequest(TmfEvent.class, range1, 100, 200);
+
+        assertEquals("getRequestId", fRequestCount++, request.getRequestId());
+        assertEquals("getDataType",  ITmfEvent.class, request.getDataType());
+
+        assertEquals("getRange", range1, request.getRange());
+        assertEquals("getNbRequestedEvents", 100, request.getNbRequested());
+
+        assertFalse("isCompleted", request.isCompleted());
+        assertFalse("isFailed", request.isFailed());
+        assertFalse("isCancelled", request.isCancelled());
+
+        assertEquals("getNbRead", 0, request.getNbRead());
+       }
+
+       // ------------------------------------------------------------------------
+       // equals
+       // ------------------------------------------------------------------------
+
+       public void testEqualsReflexivity() {
+        assertTrue("equals", fRequest1.equals(fRequest1));
+        assertTrue("equals", fRequest2.equals(fRequest2));
+
+        assertFalse("equals", fRequest1.equals(fRequest2));
+        assertFalse("equals", fRequest2.equals(fRequest1));
+       }
+
+       public void testEqualsSymmetry() {
+        assertTrue("equals", fRequest1.equals(fRequest1b));
+        assertTrue("equals", fRequest1b.equals(fRequest1));
+
+        assertFalse("equals", fRequest1.equals(fRequest3));
+        assertFalse("equals", fRequest2.equals(fRequest3));
+        assertFalse("equals", fRequest3.equals(fRequest1));
+        assertFalse("equals", fRequest3.equals(fRequest2));
+       }
+
+       public void testEqualsTransivity() {
+        assertTrue("equals", fRequest1.equals(fRequest1b));
+        assertTrue("equals", fRequest1b.equals(fRequest1c));
+        assertTrue("equals", fRequest1.equals(fRequest1c));
+       }
+
+       public void testEqualsNull() {
+        assertFalse("equals", fRequest1.equals(null));
+        assertFalse("equals", fRequest2.equals(null));
+       }
+
+       public void testEqualsSuper() {
+               TmfCoalescedDataRequest dataRequest1 = new TmfCoalescedDataRequest(
+                               fRequest1.getDataType(), fRequest1.getIndex(), fRequest1.getNbRequested());
+               TmfCoalescedDataRequest dataRequest2 = new TmfCoalescedDataRequest(
+                               fRequest1.getDataType(), fRequest1.getIndex(), fRequest1.getNbRequested());
+               TmfCoalescedDataRequest dataRequest3 = new TmfCoalescedDataRequest(
+                               fRequest3.getDataType(), fRequest3.getIndex(), fRequest3.getNbRequested());
+
+               assertTrue("equals", fRequest1.equals(dataRequest2));
+        assertTrue("equals", fRequest2.equals(dataRequest1));
+        assertFalse("equals", fRequest1.equals(dataRequest3));
+        assertFalse("equals", fRequest3.equals(dataRequest1));
+       }
+
+       // ------------------------------------------------------------------------
+       // hashCode
+       // ------------------------------------------------------------------------
+
+       public void testHashCode() {
+        assertTrue("hashCode", fRequest1.hashCode() == fRequest1.hashCode());
+        assertTrue("hashCode", fRequest2.hashCode() == fRequest2.hashCode());
+               assertTrue("hashCode", fRequest1.hashCode() != fRequest2.hashCode());
+       }
+
+       // ------------------------------------------------------------------------
+       // toString
+       // ------------------------------------------------------------------------
+
+       public void testToString() {
+        String expected1 = "[TmfCoalescedEventRequest(0,ITmfEvent," + range1 + ",0,100,200)]";
+        String expected2 = "[TmfCoalescedEventRequest(1,ITmfEvent," + range2 + ",0,100,200)]";
+        String expected3 = "[TmfCoalescedEventRequest(2,ITmfEvent," + range2 + ",0,200,200)]";
+        String expected4 = "[TmfCoalescedEventRequest(3,ITmfEvent," + range2 + ",0,200,300)]";
+
+        assertEquals("toString", expected1, fRequest1.toString());
+        assertEquals("toString", expected2, fRequest2.toString());
+        assertEquals("toString", expected3, fRequest3.toString());
+        assertEquals("toString", expected4, fRequest4.toString());
+       }
+
+       // ------------------------------------------------------------------------
+       // isCompatible
+       // ------------------------------------------------------------------------
+
+       @SuppressWarnings("hiding")
+       public void testIsCompatible() {
+               TmfCoalescedEventRequest coalescedRequest = new TmfCoalescedEventRequest(TmfEvent.class, range1, 100, 200);
+               TmfEventRequest request1 = new TmfEventRequestStub(TmfEvent.class, range1, 100, 200);
+               TmfEventRequest request2 = new TmfEventRequestStub(TmfEvent.class, range2, 100, 200);
+               TmfEventRequest request3 = new TmfEventRequestStub(TmfEvent.class, range1, 101, 200);
+
+        assertTrue("isCompatible", coalescedRequest.isCompatible(request1));
+        assertTrue("isCompatible", coalescedRequest.isCompatible(request2));
+        assertTrue("isCompatible", coalescedRequest.isCompatible(request3));
+       }
+
+    // ------------------------------------------------------------------------
+    // addEvent
+    // ------------------------------------------------------------------------
+
+    @SuppressWarnings("hiding")
+    public void testAddEvent1() {
+        TmfCoalescedEventRequest coalescedRequest = new TmfCoalescedEventRequest(TmfEvent.class, range1, 0, 2147483647, 200, ExecutionType.FOREGROUND);
+        TmfEventRequest request1 = new TmfEventRequestStub(TmfEvent.class, range1, 0, 2147483647, 200);
+        TmfEventRequest request2 = new TmfEventRequestStub(TmfEvent.class, range1, 1, 2147483647, 200);
+
+        assertTrue("isCompatible", coalescedRequest.isCompatible(request1));
+        assertTrue("isCompatible", coalescedRequest.isCompatible(request2));
+
+        coalescedRequest.addRequest(request1);
+        coalescedRequest.addRequest(request2);
+
+        assertEquals("addRequest",          0, coalescedRequest.getIndex());
+        assertEquals("addRequest", 2147483647, coalescedRequest.getNbRequested());
+        assertEquals("addRequest",        200, coalescedRequest.getBlockSize());
+
+    }
+
+    @SuppressWarnings("hiding")
+    public void testAddEvent2() {
+        TmfCoalescedEventRequest coalescedRequest = new TmfCoalescedEventRequest(TmfEvent.class, range1, 1, 2147483647, 200, ExecutionType.FOREGROUND);
+        TmfEventRequest request1 = new TmfEventRequestStub(TmfEvent.class, range1, 1, 2147483647, 200);
+        TmfEventRequest request2 = new TmfEventRequestStub(TmfEvent.class, range1, 0, 2147483647, 200);
+
+        assertTrue("isCompatible", coalescedRequest.isCompatible(request1));
+        assertTrue("isCompatible", coalescedRequest.isCompatible(request2));
+
+        coalescedRequest.addRequest(request1);
+        coalescedRequest.addRequest(request2);
+
+        assertEquals("addRequest",          0, coalescedRequest.getIndex());
+        assertEquals("addRequest", 2147483647, coalescedRequest.getNbRequested());
+        assertEquals("addRequest",        200, coalescedRequest.getBlockSize());
+
+    }
+
+       // ------------------------------------------------------------------------
+       // done
+       // ------------------------------------------------------------------------
+
+       public void testDone() {
+
+               // Test request
+               final boolean[] crFlags = new boolean[4];
+               TmfCoalescedEventRequest request = setupTestRequest(crFlags);
+               TmfEventRequest subRequest1 = new TmfEventRequestStub(TmfEvent.class, range1, 100, 200);
+               TmfEventRequest subRequest2 = new TmfEventRequestStub(TmfEvent.class, range1, 100, 200);
+               request.addRequest(subRequest1);
+               request.addRequest(subRequest2);
+
+               request.done();
+
+               // Validate the coalescing request
+               assertTrue ("isCompleted", request.isCompleted());
+               assertFalse("isFailed",    request.isFailed());
+               assertFalse("isCancelled", request.isCancelled());
+
+               assertTrue ("handleCompleted", crFlags[0]);
+               assertTrue ("handleSuccess",   crFlags[1]);
+               assertFalse("handleFailure",   crFlags[2]);
+               assertFalse("handleCancel",    crFlags[3]);
+
+               // Validate the first coalesced request
+               assertTrue ("isCompleted", subRequest1.isCompleted());
+               assertFalse("isFailed",    subRequest1.isFailed());
+               assertFalse("isCancelled", subRequest1.isCancelled());
+
+               // Validate the second coalesced request
+               assertTrue ("isCompleted", subRequest2.isCompleted());
+               assertFalse("isFailed",    subRequest2.isFailed());
+               assertFalse("isCancelled", subRequest2.isCancelled());
+       }
+
+       // ------------------------------------------------------------------------
+       // fail
+       // ------------------------------------------------------------------------
+
+       public void testFail() {
+
+               final boolean[] crFlags = new boolean[4];
+               TmfCoalescedEventRequest request = setupTestRequest(crFlags);
+               TmfEventRequest subRequest1 = new TmfEventRequestStub(TmfEvent.class, range1, 100, 200);
+               TmfEventRequest subRequest2 = new TmfEventRequestStub(TmfEvent.class, range1, 100, 200);
+               request.addRequest(subRequest1);
+               request.addRequest(subRequest2);
+
+               request.fail();
+
+               // Validate the coalescing request
+               assertTrue ("isCompleted", request.isCompleted());
+               assertTrue ("isFailed",    request.isFailed());
+               assertFalse("isCancelled", request.isCancelled());
+
+               assertTrue ("handleCompleted", crFlags[0]);
+               assertFalse("handleSuccess",   crFlags[1]);
+               assertTrue ("handleFailure",   crFlags[2]);
+               assertFalse("handleCancel",    crFlags[3]);
+
+               // Validate the first coalesced request
+               assertTrue ("isCompleted", subRequest1.isCompleted());
+               assertTrue ("isFailed",    subRequest1.isFailed());
+               assertFalse("isCancelled", subRequest1.isCancelled());
+
+               // Validate the second coalesced request
+               assertTrue ("isCompleted", subRequest2.isCompleted());
+               assertTrue ("isFailed",    subRequest2.isFailed());
+               assertFalse("isCancelled", subRequest2.isCancelled());
+       }
+
+       // ------------------------------------------------------------------------
+       // cancel
+       // ------------------------------------------------------------------------
+
+       public void testCancel() {
+
+               final boolean[] crFlags = new boolean[4];
+               TmfCoalescedEventRequest request = setupTestRequest(crFlags);
+               TmfEventRequest subRequest1 = new TmfEventRequestStub(TmfEvent.class, range1, 100, 200);
+               TmfEventRequest subRequest2 = new TmfEventRequestStub(TmfEvent.class, range1, 100, 200);
+               request.addRequest(subRequest1);
+               request.addRequest(subRequest2);
+
+               request.cancel();
+
+               // Validate the coalescing request
+               assertTrue ("isCompleted", request.isCompleted());
+               assertFalse("isFailed",    request.isFailed());
+               assertTrue ("isCancelled", request.isCancelled());
+
+               assertTrue ("handleCompleted", crFlags[0]);
+               assertFalse("handleSuccess",   crFlags[1]);
+               assertFalse("handleFailure",   crFlags[2]);
+               assertTrue ("handleCancel",    crFlags[3]);
+
+               // Validate the first coalesced request
+               assertTrue ("isCompleted", subRequest1.isCompleted());
+               assertFalse("isFailed",    subRequest1.isFailed());
+               assertTrue ("isCancelled", subRequest1.isCancelled());
+
+               // Validate the second coalesced request
+               assertTrue ("isCompleted", subRequest2.isCompleted());
+               assertFalse("isFailed",    subRequest2.isFailed());
+               assertTrue ("isCancelled", subRequest2.isCancelled());
+       }
+
+       // ------------------------------------------------------------------------
+       // Coalescing
+       // ------------------------------------------------------------------------
+
+    private static final String DIRECTORY   = "testfiles";
+    private static final String TEST_STREAM = "A-Test-10K";
+    private static final int    NB_EVENTS   = 5000;
+    private static final int    BLOCK_SIZE  = 100;
+
+    // Initialize the test trace
+    private TmfTraceStub fTrace = null;
+    private synchronized TmfTraceStub setupTrace(String path) {
+       if (fTrace == null) {
+               try {
+               URL location = FileLocator.find(TmfCoreTestPlugin.getDefault().getBundle(), new Path(path), null);
+               File test = new File(FileLocator.toFileURL(location).toURI());
+               fTrace = new TmfTraceStub(test.getPath(), 500);
+               } catch (TmfTraceException e) {
+                       e.printStackTrace();
+            } catch (URISyntaxException e) {
+                e.printStackTrace();
+               } catch (IOException e) {
+                       e.printStackTrace();
+               }
+       }
+       return fTrace;
+    }
+
+       Vector<ITmfEvent> requestedEvents1;
+    Vector<ITmfEvent> requestedEvents2;
+    Vector<ITmfEvent> requestedEvents3;
+
+    TmfEventRequest request1;
+    TmfEventRequest request2;
+    TmfEventRequest request3;
+
+    ITmfDataProvider[] providers;
+
+    private static class TmfTestTriggerSignal extends TmfSignal {
+       public final boolean forceCancel;
+       public final long fIndex;
+               public TmfTestTriggerSignal(Object source, long index, boolean cancel) {
+                       super(source);
+                       forceCancel = cancel;
+                       fIndex = index;
+               }
+    }
+
+       @TmfSignalHandler
+    public void trigger(final TmfTestTriggerSignal signal) {
+
+        TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BIG_BANG, TmfTimestamp.BIG_CRUNCH);
+        final long REQUEST_OFFSET = 1000;
+
+        requestedEvents1 = new Vector<ITmfEvent>();
+        request1 = new TmfEventRequest(TmfEvent.class, range, signal.fIndex, NB_EVENTS, BLOCK_SIZE) {
+               int nbRead = 0;
+            @Override
+            public void handleData(ITmfEvent event) {
+                       super.handleData(event);
+               if (!isCompleted()) {
+                               requestedEvents1.add(event);
+                       if (++nbRead >= BLOCK_SIZE && signal.forceCancel) {
+                        cancel();
+                    }
+               }
+            }
+        };
+
+        requestedEvents2 = new Vector<ITmfEvent>();
+        request2 = new TmfEventRequest(TmfEvent.class, range, signal.fIndex + REQUEST_OFFSET, NB_EVENTS, BLOCK_SIZE) {
+            @Override
+            public void handleData(ITmfEvent event) {
+                       super.handleData(event);
+               if (!isCompleted()) {
+                       requestedEvents2.add(event);
+               }
+            }
+        };
+
+        requestedEvents3 = new Vector<ITmfEvent>();
+        request3 = new TmfEventRequest(TmfEvent.class, range, signal.fIndex + 2 * REQUEST_OFFSET, NB_EVENTS, BLOCK_SIZE) {
+            @Override
+            public void handleData(ITmfEvent event) {
+                       super.handleData(event);
+               if (!isCompleted()) {
+                       requestedEvents3.add(event);
+               }
+            }
+        };
+
+        providers = TmfProviderManager.getProviders(TmfEvent.class, TmfTraceStub.class);
+        providers[0].sendRequest(request1);
+        providers[0].sendRequest(request2);
+        providers[0].sendRequest(request3);
+    }
+
+    public void runCoalescedRequest(long startIndex) throws InterruptedException {
+
+        fTrace = setupTrace(DIRECTORY + File.separator + TEST_STREAM);
+
+        TmfSignalManager.register(this);
+        TmfTestTriggerSignal signal = new TmfTestTriggerSignal(this, startIndex, false);
+        TmfSignalManager.dispatchSignal(signal);
+
+        request1.waitForCompletion();
+        request2.waitForCompletion();
+        request3.waitForCompletion();
+
+        try {
+            assertEquals("Request1: nbEvents", NB_EVENTS, requestedEvents1.size());
+            assertTrue  ("Request1: isCompleted", request1.isCompleted());
+            assertFalse ("Request1: isCancelled", request1.isCancelled());
+
+            assertEquals("Request2: nbEvents", NB_EVENTS, requestedEvents2.size());
+            assertTrue  ("Request2: isCompleted", request2.isCompleted());
+            assertFalse ("Request2: isCancelled", request2.isCancelled());
+
+            assertEquals("Request3: nbEvents", NB_EVENTS, requestedEvents3.size());
+            assertTrue  ("Request3: isCompleted", request3.isCompleted());
+            assertFalse ("Request3: isCancelled", request3.isCancelled());
+
+            // Ensure that we have distinct events.
+            // Don't go overboard: we are not validating the stub!
+            for (int i = 0; i < NB_EVENTS; i++) {
+                assertEquals("Distinct events", i + 1 + request1.getIndex(), requestedEvents1.get(i).getTimestamp().getValue());
+                assertEquals("Distinct events", i + 1 + request2.getIndex(), requestedEvents2.get(i).getTimestamp().getValue());
+                assertEquals("Distinct events", i + 1 + request3.getIndex(), requestedEvents3.get(i).getTimestamp().getValue());
+            }
+        }
+        finally {
+            TmfSignalManager.deregister(this);
+            fTrace.dispose();
+            fTrace = null;
+        }
+    }
+
+    public void testCoalescedRequest() throws InterruptedException {
+        runCoalescedRequest(0);
+        runCoalescedRequest(1);
+        runCoalescedRequest(5);
+    }
+
+       public void testCancelCoalescedRequest() throws InterruptedException {
+
+               fTrace = setupTrace(DIRECTORY + File.separator + TEST_STREAM);
+
+       TmfSignalManager.register(this);
+               TmfTestTriggerSignal signal = new TmfTestTriggerSignal(this, 0, true);
+       TmfSignalManager.dispatchSignal(signal);
+
+        request1.waitForCompletion();
+        request2.waitForCompletion();
+        request3.waitForCompletion();
+
+        assertEquals("Request1: nbEvents", BLOCK_SIZE, requestedEvents1.size());
+        assertTrue  ("Request1: isCompleted", request1.isCompleted());
+        assertTrue  ("Request1: isCancelled", request1.isCancelled());
+
+        assertEquals("Request2: nbEvents", NB_EVENTS, requestedEvents2.size());
+        assertTrue  ("Request2: isCompleted", request2.isCompleted());
+        assertFalse ("Request2: isCancelled", request2.isCancelled());
+
+        assertEquals("Request3: nbEvents", NB_EVENTS, requestedEvents3.size());
+        assertTrue  ("Request3: isCompleted", request3.isCompleted());
+        assertFalse ("Request3: isCancelled", request3.isCancelled());
+
+        // Ensure that we have distinct events.
+        // Don't go overboard: we are not validating the stub!
+        for (int i = 0; i < BLOCK_SIZE; i++) {
+            assertEquals("Distinct events", i + 1 + request1.getIndex(), requestedEvents1.get(i).getTimestamp().getValue());
+        }
+        for (int i = 0; i < NB_EVENTS; i++) {
+            assertEquals("Distinct events", i + 1 + request2.getIndex(), requestedEvents2.get(i).getTimestamp().getValue());
+            assertEquals("Distinct events", i + 1 + request3.getIndex(), requestedEvents3.get(i).getTimestamp().getValue());
+        }
+
+        TmfSignalManager.deregister(this);
+        fTrace.dispose();
+        fTrace = null;
+    }
+
+    // ------------------------------------------------------------------------
+    //
+    // ------------------------------------------------------------------------
+
+}
diff --git a/org.eclipse.linuxtools.tmf.core.tests/src/org/eclipse/linuxtools/tmf/core/tests/request/TmfCoalescedRequestTest.java b/org.eclipse.linuxtools.tmf.core.tests/src/org/eclipse/linuxtools/tmf/core/tests/request/TmfCoalescedRequestTest.java
deleted file mode 100644 (file)
index 09c7307..0000000
+++ /dev/null
@@ -1,553 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2012 Ericsson
- *
- * 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *   Francois Chouinard - Initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.linuxtools.tmf.core.tests.request;
-
-import junit.framework.TestCase;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.linuxtools.internal.tmf.core.request.TmfCoalescedRequest;
-import org.eclipse.linuxtools.tmf.core.event.TmfTimeRange;
-import org.eclipse.linuxtools.tmf.core.event.TmfTimestamp;
-import org.eclipse.linuxtools.tmf.core.request.ITmfRequest;
-import org.eclipse.linuxtools.tmf.core.request.ITmfRequest.TmfRequestPriority;
-import org.eclipse.linuxtools.tmf.core.request.ITmfRequest.TmfRequestState;
-import org.eclipse.linuxtools.tmf.tests.stubs.request.TmfRequestStub;
-import org.junit.Test;
-
-/**
- * <b><u>TmfCoalescedRequestTest</u></b>
- * <p>
- * Test suite for the TmfCoalescedRequest class.
- */
-@SuppressWarnings({"nls","javadoc"})
-public class TmfCoalescedRequestTest extends TestCase {
-
-    // ------------------------------------------------------------------------
-    // Constants
-    // ------------------------------------------------------------------------
-
-    private static final TmfRequestPriority NORMAL = TmfRequestPriority.NORMAL;
-    private static final TmfRequestPriority HIGH = TmfRequestPriority.HIGH;
-
-    private static final long ALL_EVENTS = ITmfRequest.ALL_EVENTS;
-
-    private static final TmfTimeRange ETERNITY = TmfTimeRange.ETERNITY;
-    private static final TmfTimeRange EPOCH = new TmfTimeRange(TmfTimestamp.ZERO, TmfTimestamp.BIG_CRUNCH);
-
-    private static final TmfRequestState PENDING = TmfRequestState.PENDING;
-    private static final TmfRequestState RUNNING = TmfRequestState.RUNNING;
-    private static final TmfRequestState COMPLETED = TmfRequestState.COMPLETED;
-
-    // ------------------------------------------------------------------------
-    // Sample requests
-    // ------------------------------------------------------------------------
-
-    private static ITmfRequest fRequest1  = new TmfRequestStub(EPOCH,  10, 100, NORMAL);
-    private static ITmfRequest fRequest2  = new TmfRequestStub(EPOCH,  20, 200, NORMAL);
-    private static final ITmfRequest fRequest3  = new TmfRequestStub(EPOCH, 200, 100, NORMAL);
-
-    private static final ITmfRequest fRequest4  = new TmfRequestStub(ETERNITY,  10, 100, NORMAL);
-    private static final ITmfRequest fRequest5  = new TmfRequestStub(ETERNITY,  20, 200, NORMAL);
-    private static final ITmfRequest fRequest6  = new TmfRequestStub(ETERNITY, 200, 100, NORMAL);
-
-    private static final ITmfRequest fRequest7  = new TmfRequestStub(EPOCH,  10, 100, HIGH);
-    private static final ITmfRequest fRequest8  = new TmfRequestStub(EPOCH,  20, 200, HIGH);
-    private static final ITmfRequest fRequest9  = new TmfRequestStub(EPOCH, 200, 100, HIGH);
-
-    // ------------------------------------------------------------------------
-    // Variables
-    // ------------------------------------------------------------------------
-
-    private TmfCoalescedRequest fCoalescedRequest1;
-    private TmfCoalescedRequest fCoalescedRequest2;
-    private int fLastRequestId;
-
-    // ------------------------------------------------------------------------
-       // Housekeeping
-       // ------------------------------------------------------------------------
-
-    /**
-     * @param name the test name
-     */
-       public TmfCoalescedRequestTest(String name) {
-               super(name);
-       }
-
-       @Override
-       protected void setUp() throws Exception {
-               super.setUp();
-        fRequest1  = new TmfRequestStub(EPOCH,  10, 100, NORMAL);
-        fRequest2  = new TmfRequestStub(EPOCH,  20, 200, NORMAL);
-           fCoalescedRequest1 = new TmfCoalescedRequest(fRequest1);
-           fCoalescedRequest2 = new TmfCoalescedRequest(fRequest2);
-           fLastRequestId = fCoalescedRequest2.getRequestId();
-       }
-
-       @Override
-       protected void tearDown() throws Exception {
-               super.tearDown();
-       }
-
-    private ITmfRequest setupDummyRequest(final boolean[] flags) {
-
-        TmfCoalescedRequest request = new TmfCoalescedRequest(fRequest1) {
-            @Override
-            public synchronized void handleCompleted() {
-                super.handleCompleted();
-                flags[0] = true;
-            }
-
-            @Override
-            public void handleSuccess() {
-                super.handleSuccess();
-                flags[1] = true;
-            }
-
-            @Override
-            public void handleFailure() {
-                super.handleFailure();
-                flags[2] = true;
-            }
-
-            @Override
-            public void handleCancel() {
-                super.handleCancel();
-                flags[3] = true;
-            }
-        };
-        request.addRequest(fRequest2);
-        fLastRequestId = request.getRequestId();
-        return request;
-    }
-
-    // ------------------------------------------------------------------------
-       // Constructors
-       // ------------------------------------------------------------------------
-
-       @Test
-       public void testTmfRequestByPriority() {
-           TmfCoalescedRequest request = new TmfCoalescedRequest(NORMAL);
-        fLastRequestId++;
-
-        assertEquals("getRequestId", fLastRequestId, request.getRequestId());
-        assertEquals("getRequestPriority", NORMAL, request.getRequestPriority());
-        assertEquals("getTimeRange", ETERNITY, request.getTimeRange());
-        assertEquals("getNbRequested", ALL_EVENTS, request.getNbRequested());
-        assertEquals("getStartIndex", 0, request.getStartIndex());
-
-        assertEquals("getNbEventsRead", 0, request.getNbEventsRead());
-        assertEquals("getState", PENDING, request.getState());
-        assertFalse("isRunning", request.isRunning());
-        assertFalse("isCompleted", request.isCompleted());
-
-        assertNull("getStatus", request.getStatus());
-        assertFalse("isOK", request.isOK());
-        assertFalse("isFailed", request.isFailed());
-        assertFalse("isCancelled", request.isCancelled());
-
-        request = new TmfCoalescedRequest(HIGH);
-        fLastRequestId++;
-
-        assertEquals("getRequestId", fLastRequestId, request.getRequestId());
-        assertEquals("getRequestPriority", HIGH, request.getRequestPriority());
-        assertEquals("getTimeRange", ETERNITY, request.getTimeRange());
-        assertEquals("getNbRequested", ALL_EVENTS, request.getNbRequested());
-        assertEquals("getStartIndex", 0, request.getStartIndex());
-
-        assertEquals("getNbEventsRead", 0, request.getNbEventsRead());
-        assertEquals("getState", PENDING, request.getState());
-        assertFalse("isRunning", request.isRunning());
-        assertFalse("isCompleted", request.isCompleted());
-
-        assertNull("getStatus", request.getStatus());
-        assertFalse("isOK", request.isOK());
-        assertFalse("isFailed", request.isFailed());
-        assertFalse("isCancelled", request.isCancelled());
-       }
-
-    @Test
-    public void testTmfRequestByRequest() {
-        TmfCoalescedRequest request = new TmfCoalescedRequest(fRequest1);
-        fLastRequestId++;
-
-        assertEquals("getRequestId", fLastRequestId, request.getRequestId());
-        assertEquals("getRequestPriority", fRequest1.getRequestPriority(), request.getRequestPriority());
-        assertEquals("getTimeRange", fRequest1.getTimeRange(), request.getTimeRange());
-        assertEquals("getNbRequested", fRequest1.getNbRequested(), request.getNbRequested());
-        assertEquals("getStartIndex", fRequest1.getStartIndex(), request.getStartIndex());
-
-        assertEquals("getParent", request, fRequest1.getParent());
-
-        assertEquals("getNbEventsRead", 0, request.getNbEventsRead());
-        assertEquals("getState", PENDING, request.getState());
-        assertFalse("isRunning", request.isRunning());
-        assertFalse("isCompleted", request.isCompleted());
-
-        assertNull("getStatus", request.getStatus());
-        assertFalse("isOK", request.isOK());
-        assertFalse("isFailed", request.isFailed());
-        assertFalse("isCancelled", request.isCancelled());
-
-        request = new TmfCoalescedRequest(fRequest5);
-        fLastRequestId++;
-
-        assertEquals("getRequestId", fLastRequestId, request.getRequestId());
-        assertEquals("getRequestPriority", fRequest5.getRequestPriority(), request.getRequestPriority());
-        assertEquals("getTimeRange", fRequest5.getTimeRange(), request.getTimeRange());
-        assertEquals("getNbRequested", fRequest5.getNbRequested(), request.getNbRequested());
-        assertEquals("getStartIndex", fRequest5.getStartIndex(), request.getStartIndex());
-
-        assertEquals("getParent", request, fRequest5.getParent());
-
-        assertEquals("getNbEventsRead", 0, request.getNbEventsRead());
-        assertEquals("getState", PENDING, request.getState());
-        assertFalse("isRunning", request.isRunning());
-        assertFalse("isCompleted", request.isCompleted());
-
-        assertNull("getStatus", request.getStatus());
-        assertFalse("isOK", request.isOK());
-        assertFalse("isFailed", request.isFailed());
-        assertFalse("isCancelled", request.isCancelled());
-
-        request = new TmfCoalescedRequest(fRequest9);
-        fLastRequestId++;
-
-        assertEquals("getRequestId", fLastRequestId, request.getRequestId());
-        assertEquals("getRequestPriority", fRequest9.getRequestPriority(), request.getRequestPriority());
-        assertEquals("getTimeRange", fRequest9.getTimeRange(), request.getTimeRange());
-        assertEquals("getNbRequested", fRequest9.getNbRequested(), request.getNbRequested());
-        assertEquals("getStartIndex", fRequest9.getStartIndex(), request.getStartIndex());
-
-        assertEquals("getParent", request, fRequest9.getParent());
-
-        assertEquals("getNbEventsRead", 0, request.getNbEventsRead());
-        assertEquals("getState", PENDING, request.getState());
-        assertFalse("isRunning", request.isRunning());
-        assertFalse("isCompleted", request.isCompleted());
-
-        assertNull("getStatus", request.getStatus());
-        assertFalse("isOK", request.isOK());
-        assertFalse("isFailed", request.isFailed());
-        assertFalse("isCancelled", request.isCancelled());
-    }
-
-    // ------------------------------------------------------------------------
-    // equals
-    // ------------------------------------------------------------------------
-
-    @Test
-    public void testEqualsReflexivity() {
-        assertEquals("equals", fCoalescedRequest1, fCoalescedRequest1);
-        assertEquals("equals", fCoalescedRequest2, fCoalescedRequest2);
-
-        assertFalse("equals", fCoalescedRequest1.equals(fCoalescedRequest2));
-        assertFalse("equals", fCoalescedRequest2.equals(fCoalescedRequest1));
-    }
-
-    @Test
-    public void testEqualsSymmetry() {
-        TmfCoalescedRequest request1b = new TmfCoalescedRequest(fRequest1);
-        fLastRequestId++;
-
-        assertEquals("equals", fCoalescedRequest1, request1b);
-        assertEquals("equals", request1b, fCoalescedRequest1);
-    }
-
-    @Test
-    public void testEqualsTransivity() {
-        TmfCoalescedRequest request1b = new TmfCoalescedRequest(fRequest1);
-        fLastRequestId++;
-        TmfCoalescedRequest request1c = new TmfCoalescedRequest(fRequest1);
-        fLastRequestId++;
-
-        assertEquals("equals", fCoalescedRequest1, request1b);
-        assertEquals("equals", request1b, request1c);
-        assertEquals("equals", request1c, fCoalescedRequest1);
-    }
-
-    @Test
-    public void testEqualsNull() {
-        assertFalse("equals", fCoalescedRequest1.equals(null));
-        assertFalse("equals", fCoalescedRequest2.equals(null));
-    }
-
-    // ------------------------------------------------------------------------
-    // hashCode
-    // ------------------------------------------------------------------------
-
-    @Test
-    public void testHashCode() {
-        assertTrue("hashCode", fCoalescedRequest1.hashCode() == fCoalescedRequest1.hashCode());
-        assertTrue("hashCode", fCoalescedRequest2.hashCode() == fCoalescedRequest2.hashCode());
-        assertTrue("hashCode", fCoalescedRequest1.hashCode() != fCoalescedRequest2.hashCode());
-    }
-
-    // ------------------------------------------------------------------------
-    // toString
-    // ------------------------------------------------------------------------
-
-    @Test
-    public void testToString() {
-        String expected1 = "TmfCoalescedRequest [fSubRequests=[" + fRequest1 + "]]";
-        String expected2 = "TmfCoalescedRequest [fSubRequests=[" + fRequest2 + "]]";
-
-        assertEquals("toString", expected1, fCoalescedRequest1.toString());
-        assertEquals("toString", expected2, fCoalescedRequest2.toString());
-    }
-
-
-    // ------------------------------------------------------------------------
-    // isCompatible
-    // ------------------------------------------------------------------------
-
-    @Test
-    public void testIsCompatible() {
-        assertTrue ("isCompatible", fCoalescedRequest1.isCompatible(fRequest1));
-        assertTrue ("isCompatible", fCoalescedRequest1.isCompatible(fRequest2));
-        assertFalse("isCompatible", fCoalescedRequest1.isCompatible(fRequest3));
-        assertTrue ("isCompatible", fCoalescedRequest1.isCompatible(fRequest4));
-        assertTrue ("isCompatible", fCoalescedRequest1.isCompatible(fRequest5));
-        assertFalse("isCompatible", fCoalescedRequest1.isCompatible(fRequest6));
-
-        assertFalse("isCompatible", fCoalescedRequest1.isCompatible(fRequest7));
-        assertFalse("isCompatible", fCoalescedRequest1.isCompatible(fRequest8));
-        assertFalse("isCompatible", fCoalescedRequest1.isCompatible(fRequest9));
-    }
-
-    // ------------------------------------------------------------------------
-    // addRequest
-    // ------------------------------------------------------------------------
-
-    @Test
-    public void testAddRequest() {
-        fCoalescedRequest1.addRequest(fRequest2);
-        assertEquals("getRequestPriority", NORMAL, fCoalescedRequest1.getRequestPriority());
-        assertEquals("getTimeRange", EPOCH, fCoalescedRequest1.getTimeRange());
-        assertEquals("getNbRequested", 210, fCoalescedRequest1.getNbRequested());
-        assertEquals("getStartIndex",   10, fCoalescedRequest1.getStartIndex());
-
-        fCoalescedRequest1.addRequest(fRequest3);
-        assertEquals("getRequestPriority", NORMAL, fCoalescedRequest1.getRequestPriority());
-        assertEquals("getTimeRange", EPOCH, fCoalescedRequest1.getTimeRange());
-        assertEquals("getNbRequested", 290, fCoalescedRequest1.getNbRequested());
-        assertEquals("getStartIndex",   10, fCoalescedRequest1.getStartIndex());
-
-        fCoalescedRequest1.addRequest(fRequest4);
-        assertEquals("getRequestPriority", NORMAL, fCoalescedRequest1.getRequestPriority());
-        assertEquals("getTimeRange", ETERNITY, fCoalescedRequest1.getTimeRange());
-        assertEquals("getNbRequested", 290, fCoalescedRequest1.getNbRequested());
-        assertEquals("getStartIndex",   10, fCoalescedRequest1.getStartIndex());
-    }
-
-    // ------------------------------------------------------------------------
-    // getSubRequestIds
-    // ------------------------------------------------------------------------
-
-    @Test
-    public void testGetSubRequestIds() {
-        String expected1 = "[" + fRequest1.getRequestId() + "]";
-        String expected2 = "[" + fRequest1.getRequestId() + "," + fRequest2.getRequestId() + "]";
-        String expected3 = "[" + fRequest1.getRequestId() + "," + fRequest2.getRequestId() + "," + fRequest3.getRequestId() + "]";
-
-        assertEquals("getRequestIds", expected1, fCoalescedRequest1.getSubRequestIds());
-
-        fCoalescedRequest1.addRequest(fRequest2);
-        assertEquals("getRequestIds", expected2, fCoalescedRequest1.getSubRequestIds());
-
-        fCoalescedRequest1.addRequest(fRequest3);
-        assertEquals("getRequestIds", expected3, fCoalescedRequest1.getSubRequestIds());
-    }
-
-    // ------------------------------------------------------------------------
-    // notifyParent
-    // ------------------------------------------------------------------------
-
-    @Test
-    public void testNotifyParent() {
-        final Boolean[] notifications = new Boolean[2];
-        notifications[0] = notifications[1] = false;
-
-        final TmfRequestStub request1 = new TmfRequestStub();
-        final TmfRequestStub request2 = new TmfRequestStub();
-        TmfCoalescedRequest request = new TmfCoalescedRequest(request1) {
-            @Override
-            public void notifyParent(ITmfRequest child) {
-                notifications[child == request1 ? 0 : 1] = true;
-                super.notifyParent(this);
-            }
-        };
-        request.addRequest(request2);
-        assertFalse("notifyParent", notifications[0]);
-        assertFalse("notifyParent", notifications[1]);
-
-        request1.notifyParent(null);
-        assertTrue("notifyParent", notifications[0]);
-        assertFalse("notifyParent", notifications[1]);
-
-        request2.notifyParent(null);
-        assertTrue("notifyParent", notifications[0]);
-        assertTrue("notifyParent", notifications[1]);
-    }
-
-    // ------------------------------------------------------------------------
-    // start
-    // ------------------------------------------------------------------------
-
-    @Test
-    public void testStart() {
-        final boolean[] flags = new boolean[4];
-        ITmfRequest request = setupDummyRequest(flags);
-        request.start();
-
-        assertTrue("isRunning",    request.isRunning());
-        assertFalse("isCompleted", request.isCompleted());
-        assertEquals("getState",   RUNNING, request.getState());
-        assertNull("getStatus",    request.getStatus());
-
-        assertTrue("isRunning",    fRequest1.isRunning());
-        assertFalse("isCompleted", fRequest1.isCompleted());
-        assertEquals("getState",   RUNNING, fRequest1.getState());
-        assertNull("getStatus",    fRequest1.getStatus());
-
-        assertTrue("isRunning",    fRequest2.isRunning());
-        assertFalse("isCompleted", fRequest2.isCompleted());
-        assertEquals("getState",   RUNNING, fRequest2.getState());
-        assertNull("getStatus",    fRequest2.getStatus());
-
-        assertFalse("handleCompleted", flags[0]);
-        assertFalse("handleSuccess",   flags[1]);
-        assertFalse("handleFailure",   flags[2]);
-        assertFalse("handleCancel",    flags[3]);
-    }
-
-    // ------------------------------------------------------------------------
-    // done
-    // ------------------------------------------------------------------------
-
-    @Test
-    public void testDone() {
-        final boolean[] flags = new boolean[4];
-        ITmfRequest request = setupDummyRequest(flags);
-        request.done();
-
-        assertFalse("isRunning",   request.isRunning());
-        assertTrue("isCompleted",  request.isCompleted());
-        assertEquals("getState",   COMPLETED, request.getState());
-        assertEquals("getStatus",  IStatus.OK, request.getStatus().getSeverity());
-        assertTrue("isOK",         request.isOK());
-        assertFalse("isFailed",    request.isFailed());
-        assertFalse("isCancelled", request.isCancelled());
-
-        assertFalse("isRunning",   fRequest1.isRunning());
-        assertTrue("isCompleted",  fRequest1.isCompleted());
-        assertEquals("getState",   COMPLETED, fRequest1.getState());
-        assertEquals("getStatus",  IStatus.OK, fRequest1.getStatus().getSeverity());
-        assertTrue("isOK",         fRequest1.isOK());
-        assertFalse("isFailed",    fRequest1.isFailed());
-        assertFalse("isCancelled", fRequest1.isCancelled());
-
-        assertFalse("isRunning",   fRequest2.isRunning());
-        assertTrue("isCompleted",  fRequest2.isCompleted());
-        assertEquals("getState",   COMPLETED, fRequest2.getState());
-        assertEquals("getStatus",  IStatus.OK, fRequest2.getStatus().getSeverity());
-        assertTrue("isOK",         fRequest2.isOK());
-        assertFalse("isFailed",    fRequest2.isFailed());
-        assertFalse("isCancelled", fRequest2.isCancelled());
-
-        assertTrue("handleCompleted", flags[0]);
-        assertTrue("handleSuccess",   flags[1]);
-        assertFalse("handleFailure",  flags[2]);
-        assertFalse("handleCancel",   flags[3]);
-    }
-
-    // ------------------------------------------------------------------------
-    // fail
-    // ------------------------------------------------------------------------
-
-    @Test
-    public void testFail() {
-        final boolean[] flags = new boolean[4];
-        ITmfRequest request = setupDummyRequest(flags);
-        request.fail();
-
-        assertFalse("isRunning",   request.isRunning());
-        assertTrue("isCompleted",  request.isCompleted());
-        assertEquals("getState",   COMPLETED, request.getState());
-        assertEquals("getStatus",  IStatus.ERROR, request.getStatus().getSeverity());
-        assertFalse("isOK",        request.isOK());
-        assertTrue("isFailed",     request.isFailed());
-        assertFalse("isCancelled", request.isCancelled());
-
-        assertFalse("isRunning",   fRequest1.isRunning());
-        assertTrue("isCompleted",  fRequest1.isCompleted());
-        assertEquals("getState",   COMPLETED, fRequest1.getState());
-        assertEquals("getStatus",  IStatus.ERROR, fRequest1.getStatus().getSeverity());
-        assertFalse("isOK",        fRequest1.isOK());
-        assertTrue("isFailed",     fRequest1.isFailed());
-        assertFalse("isCancelled", fRequest1.isCancelled());
-
-        assertFalse("isRunning",   fRequest2.isRunning());
-        assertTrue("isCompleted",  fRequest2.isCompleted());
-        assertEquals("getState",   COMPLETED, fRequest2.getState());
-        assertEquals("getStatus",  IStatus.ERROR, fRequest2.getStatus().getSeverity());
-        assertFalse("isOK",        fRequest2.isOK());
-        assertTrue("isFailed",     fRequest2.isFailed());
-        assertFalse("isCancelled", fRequest2.isCancelled());
-
-        assertTrue("handleCompleted", flags[0]);
-        assertFalse("handleSuccess",  flags[1]);
-        assertTrue("handleFailure",   flags[2]);
-        assertFalse("handleCancel",   flags[3]);
-    }
-
-       // ------------------------------------------------------------------------
-       // cancel
-       // ------------------------------------------------------------------------
-
-    @Test
-    public void testCancel() {
-        final boolean[] flags = new boolean[4];
-        ITmfRequest request = setupDummyRequest(flags);
-        request.cancel();
-
-        assertFalse("isRunning",  request.isRunning());
-        assertTrue("isCompleted", request.isCompleted());
-        assertEquals("getState",  COMPLETED, request.getState());
-        assertEquals("getStatus", IStatus.CANCEL, request.getStatus().getSeverity());
-        assertFalse("isOK",       request.isOK());
-        assertFalse("isFailed",   request.isFailed());
-        assertTrue("isCancelled", request.isCancelled());
-
-        assertFalse("isRunning",  fRequest1.isRunning());
-        assertTrue("isCompleted", fRequest1.isCompleted());
-        assertEquals("getState",  COMPLETED, fRequest1.getState());
-        assertEquals("getStatus", IStatus.CANCEL, fRequest1.getStatus().getSeverity());
-        assertFalse("isOK",       fRequest1.isOK());
-        assertFalse("isFailed",   fRequest1.isFailed());
-        assertTrue("isCancelled", fRequest1.isCancelled());
-
-        assertFalse("isRunning",  fRequest2.isRunning());
-        assertTrue("isCompleted", fRequest2.isCompleted());
-        assertEquals("getState",  COMPLETED, fRequest2.getState());
-        assertEquals("getStatus", IStatus.CANCEL, fRequest2.getStatus().getSeverity());
-        assertFalse("isOK",       fRequest2.isOK());
-        assertFalse("isFailed",   fRequest2.isFailed());
-        assertTrue("isCancelled", fRequest2.isCancelled());
-
-        assertTrue("handleCompleted", flags[0]);
-        assertFalse("handleSuccess",  flags[1]);
-        assertFalse("handleFailure",  flags[2]);
-        assertTrue("handleCancel",    flags[3]);
-    }
-
-}
index 1e601044f5865bd121fe43e5c2a424a1c3566c33..6a29795692a70fc4c4bb83438126f339c160ecc6 100644 (file)
@@ -23,7 +23,7 @@ import org.eclipse.linuxtools.tmf.tests.stubs.request.TmfDataRequestStub;
  * <p>
  * Test suite for the TmfDataRequest class.
  */
-@SuppressWarnings({"nls","javadoc", "deprecation"})
+@SuppressWarnings({"nls","javadoc"})
 public class TmfDataRequestTest extends TestCase {
 
        // ------------------------------------------------------------------------
@@ -53,6 +53,7 @@ public class TmfDataRequestTest extends TestCase {
        @Override
        protected void setUp() throws Exception {
                super.setUp();
+               TmfDataRequest.reset();
                fRequest1  = new TmfDataRequestStub(TmfEvent.class, 10, 100, 200);
                fRequest2  = new TmfDataRequestStub(TmfEvent.class, 20, 100, 200);
                fRequest3  = new TmfDataRequestStub(TmfEvent.class, 20, 200, 200);
@@ -71,7 +72,7 @@ public class TmfDataRequestTest extends TestCase {
 
                TmfDataRequest request = new TmfDataRequestStub(TmfEvent.class, 10, 100, 200) {
                    @Override
-                       public synchronized void handleCompleted() {
+                       public void handleCompleted() {
                        super.handleCompleted();
                        flags[0] = true;
                    }
@@ -210,10 +211,10 @@ public class TmfDataRequestTest extends TestCase {
        // ------------------------------------------------------------------------
 
        public void testToString() {
-        String expected1 = "[TmfDataRequest(" + fRequest1.getRequestId() + ",TmfEvent,10,100,200)]";
-        String expected2 = "[TmfDataRequest(" + fRequest2.getRequestId() + ",TmfEvent,20,100,200)]";
-        String expected3 = "[TmfDataRequest(" + fRequest3.getRequestId() + ",TmfEvent,20,200,200)]";
-        String expected4 = "[TmfDataRequest(" + fRequest4.getRequestId() + ",TmfEvent,20,200,300)]";
+        String expected1 = "[TmfDataRequest(0,TmfEvent,10,100,200)]";
+        String expected2 = "[TmfDataRequest(1,TmfEvent,20,100,200)]";
+        String expected3 = "[TmfDataRequest(2,TmfEvent,20,200,200)]";
+        String expected4 = "[TmfDataRequest(3,TmfEvent,20,200,300)]";
 
         assertEquals("toString", expected1, fRequest1.toString());
         assertEquals("toString", expected2, fRequest2.toString());
index 05b07607534be5c8d5d870782783375f92349601..f5bbc4bff268f1aea539753d4ffed8a667e12faf 100644 (file)
@@ -26,7 +26,7 @@ import org.eclipse.linuxtools.tmf.tests.stubs.request.TmfEventRequestStub;
  * <p>
  * Test suite for the TmfEventRequest class.
  */
-@SuppressWarnings({"nls","javadoc", "deprecation"})
+@SuppressWarnings({"nls","javadoc"})
 public class TmfEventRequestTest extends TestCase {
 
        // ------------------------------------------------------------------------
@@ -59,6 +59,7 @@ public class TmfEventRequestTest extends TestCase {
        @Override
        protected void setUp() throws Exception {
                super.setUp();
+               TmfDataRequest.reset();
                fRequest1  = new TmfEventRequestStub(TmfEvent.class, range1, 100, 200);
                fRequest2  = new TmfEventRequestStub(TmfEvent.class, range2, 100, 200);
                fRequest3  = new TmfEventRequestStub(TmfEvent.class, range2, 200, 200);
@@ -76,8 +77,8 @@ public class TmfEventRequestTest extends TestCase {
        private static TmfEventRequest setupTestRequest(final boolean[] flags) {
 
                TmfEventRequest request = new TmfEventRequestStub(TmfEvent.class, new TmfTimeRange(TmfTimeRange.ETERNITY), 100, 200) {
-            @Override
-                       public synchronized void handleCompleted() {
+                   @Override
+                       public void handleCompleted() {
                        super.handleCompleted();
                        flags[0] = true;
                    }
@@ -231,10 +232,10 @@ public class TmfEventRequestTest extends TestCase {
        // ------------------------------------------------------------------------
 
        public void testToString() {
-        String expected1 = "[TmfEventRequest(" + fRequest1.getRequestId() + ",TmfEvent," + range1 + ",0,100,200)]";
-        String expected2 = "[TmfEventRequest(" + fRequest2.getRequestId() + ",TmfEvent," + range2 + ",0,100,200)]";
-        String expected3 = "[TmfEventRequest(" + fRequest3.getRequestId() + ",TmfEvent," + range2 + ",0,200,200)]";
-        String expected4 = "[TmfEventRequest(" + fRequest4.getRequestId() + ",TmfEvent," + range2 + ",0,200,300)]";
+        String expected1 = "[TmfEventRequest(0,TmfEvent," + range1 + ",0,100,200)]";
+        String expected2 = "[TmfEventRequest(1,TmfEvent," + range2 + ",0,100,200)]";
+        String expected3 = "[TmfEventRequest(2,TmfEvent," + range2 + ",0,200,200)]";
+        String expected4 = "[TmfEventRequest(3,TmfEvent," + range2 + ",0,200,300)]";
 
         assertEquals("toString", expected1, fRequest1.toString());
         assertEquals("toString", expected2, fRequest2.toString());
diff --git a/org.eclipse.linuxtools.tmf.core.tests/src/org/eclipse/linuxtools/tmf/core/tests/request/TmfEventTypeFilterTest.java b/org.eclipse.linuxtools.tmf.core.tests/src/org/eclipse/linuxtools/tmf/core/tests/request/TmfEventTypeFilterTest.java
deleted file mode 100644 (file)
index a3afb38..0000000
+++ /dev/null
@@ -1,205 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2012 Ericsson
- *
- * 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *   Francois Chouinard - Initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.linuxtools.tmf.core.tests.request;
-
-import junit.framework.TestCase;
-
-import org.eclipse.linuxtools.tmf.core.event.ITmfEvent;
-import org.eclipse.linuxtools.tmf.core.event.TmfEvent;
-import org.eclipse.linuxtools.tmf.core.request.TmfEventTypeFilter;
-import org.junit.Test;
-
-/**
- * <b><u>TmfEventTypeFilterTest</u></b>
- * <p>
- * Test suite for the TmfEventTypeFilter class.
- */
-@SuppressWarnings({"nls","javadoc"})
-public class TmfEventTypeFilterTest extends TestCase {
-
-    // ------------------------------------------------------------------------
-    // Constants
-    // ------------------------------------------------------------------------
-
-    private static final TmfEventTypeFilter ALL_EVENTS = TmfEventTypeFilter.ALL_EVENTS;
-
-    // ------------------------------------------------------------------------
-       // Housekeeping
-       // ------------------------------------------------------------------------
-
-    /**
-     * @param name the test name
-     */
-       public TmfEventTypeFilterTest(String name) {
-               super(name);
-       }
-
-       @Override
-       protected void setUp() throws Exception {
-               super.setUp();
-       }
-
-       @Override
-       protected void tearDown() throws Exception {
-               super.tearDown();
-       }
-
-    // ------------------------------------------------------------------------
-       // Constructors
-       // ------------------------------------------------------------------------
-
-       @Test
-       public void testTmfBlockFilter() {
-           TmfEventTypeFilter filter = ALL_EVENTS;
-        assertEquals("getEventType", ITmfEvent.class, filter.getEventType());
-
-        filter = new TmfEventTypeFilter(ITmfEvent.class);
-        assertEquals("getEventType", ITmfEvent.class, filter.getEventType());
-
-        filter = new TmfEventTypeFilter(TmfEvent.class);
-        assertEquals("getEventType", TmfEvent.class, filter.getEventType());
-
-       }
-
-    @Test
-    public void testTmfBlockFilterCopy() {
-        TmfEventTypeFilter filter1 = new TmfEventTypeFilter(TmfEvent.class);
-        TmfEventTypeFilter filter2 = new TmfEventTypeFilter(filter1);
-
-        assertEquals("getEventType", filter1.getEventType(), filter2.getEventType());
-        assertEquals("getEventType", TmfEvent.class, filter2.getEventType());
-    }
-
-    // ------------------------------------------------------------------------
-       // equals
-       // ------------------------------------------------------------------------
-
-    @Test
-    public void testEqualsReflexivity() {
-        TmfEventTypeFilter filter1 = new TmfEventTypeFilter(ITmfEvent.class);
-        TmfEventTypeFilter filter2 = new TmfEventTypeFilter(TmfEvent.class);
-
-        assertEquals("equals", filter1, filter1);
-        assertEquals("equals", filter2, filter2);
-
-        assertFalse("equals", filter1.equals(filter2));
-        assertFalse("equals", filter2.equals(filter1));
-    }
-
-    @Test
-    public void testEqualsSymmetry() {
-        TmfEventTypeFilter filter1 = new TmfEventTypeFilter(ITmfEvent.class);
-        TmfEventTypeFilter filter2 = new TmfEventTypeFilter(ITmfEvent.class);
-        TmfEventTypeFilter filter3 = new TmfEventTypeFilter(TmfEvent.class);
-
-        assertEquals("equals", filter1, filter2);
-        assertEquals("equals", filter2, filter1);
-
-        assertFalse("equals", filter1.equals(filter3));
-        assertFalse("equals", filter3.equals(filter1));
-    }
-
-    @Test
-    public void testEqualsTransivity() {
-        TmfEventTypeFilter filter1 = new TmfEventTypeFilter(TmfEvent.class);
-        TmfEventTypeFilter filter2 = new TmfEventTypeFilter(TmfEvent.class);
-        TmfEventTypeFilter filter3 = new TmfEventTypeFilter(TmfEvent.class);
-
-        assertEquals("equals", filter1, filter2);
-        assertEquals("equals", filter2, filter3);
-        assertEquals("equals", filter3, filter1);
-    }
-
-    @Test
-    public void testEqualsNull() {
-        TmfEventTypeFilter filter1 = new TmfEventTypeFilter(ITmfEvent.class);
-        TmfEventTypeFilter filter2 = new TmfEventTypeFilter(TmfEvent.class);
-
-        assertFalse("equals", filter1.equals(null));
-        assertFalse("equals", filter2.equals(null));
-    }
-
-    // ------------------------------------------------------------------------
-    // hashCode
-    // ------------------------------------------------------------------------
-
-    @Test
-    public void testHashCode() {
-        TmfEventTypeFilter filter1 = new TmfEventTypeFilter(ITmfEvent.class);
-        TmfEventTypeFilter filter2 = new TmfEventTypeFilter(TmfEvent.class);
-
-        assertFalse("hashCode",  filter1.hashCode() == filter2.hashCode());
-    }
-
-       // ------------------------------------------------------------------------
-       // toString
-       // ------------------------------------------------------------------------
-
-    @Test
-    public void testToString() {
-        TmfEventTypeFilter filter1 = new TmfEventTypeFilter(ITmfEvent.class);
-        TmfEventTypeFilter filter2 = new TmfEventTypeFilter(TmfEvent.class);
-
-        String expected0 = "TmfEventTypeFilter [fEventType=ITmfEvent]";
-        String expected1 = "TmfEventTypeFilter [fEventType=ITmfEvent]";
-        String expected2 = "TmfEventTypeFilter [fEventType=TmfEvent]";
-
-        assertEquals("toString", expected0, ALL_EVENTS.toString());
-        assertEquals("toString", expected1, filter1.toString());
-        assertEquals("toString", expected2, filter2.toString());
-    }
-
-    // ------------------------------------------------------------------------
-    // matches
-    // ------------------------------------------------------------------------
-
-    private class TmfEvent1 extends TmfEvent {
-        public TmfEvent1(final ITmfEvent event) {
-            super(event);
-        }
-    }
-
-    private class TmfEvent2 extends TmfEvent {
-        public TmfEvent2(final ITmfEvent event) {
-            super(event);
-        }
-    }
-
-    /**
-     * The only test that really matters...
-     */
-    @Test
-    public void testMatches() {
-
-        TmfEventTypeFilter filter1 = new TmfEventTypeFilter(TmfEvent1.class);
-        TmfEventTypeFilter filter2 = new TmfEventTypeFilter(TmfEvent2.class);
-
-        TmfEvent  event0 = new TmfEvent(null, 0, null, null, null, null, null);
-        TmfEvent1 event1 = new TmfEvent1(event0);
-        TmfEvent2 event2 = new TmfEvent2(event0);
-
-        assertFalse("matches", filter1.matches(event0));
-        assertFalse("matches", filter2.matches(event0));
-
-        assertTrue ("matches", filter1.matches(event1));
-        assertFalse("matches", filter2.matches(event1));
-
-        assertFalse("matches", filter2.matches(event1));
-        assertTrue ("matches", filter2.matches(event2));
-
-        assertTrue("matches", ALL_EVENTS.matches(event1));
-        assertTrue("matches", ALL_EVENTS.matches(event2));
-        assertTrue("matches", ALL_EVENTS.matches(event0));
-    }
-
-}
diff --git a/org.eclipse.linuxtools.tmf.core.tests/src/org/eclipse/linuxtools/tmf/core/tests/request/TmfRangeFilterTest.java b/org.eclipse.linuxtools.tmf.core.tests/src/org/eclipse/linuxtools/tmf/core/tests/request/TmfRangeFilterTest.java
deleted file mode 100644 (file)
index 48191a6..0000000
+++ /dev/null
@@ -1,247 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2012 Ericsson
- *
- * 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *   Francois Chouinard - Initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.linuxtools.tmf.core.tests.request;
-
-import junit.framework.TestCase;
-
-import org.eclipse.linuxtools.tmf.core.event.ITmfEvent;
-import org.eclipse.linuxtools.tmf.core.event.TmfEvent;
-import org.eclipse.linuxtools.tmf.core.event.TmfTimeRange;
-import org.eclipse.linuxtools.tmf.core.event.TmfTimestamp;
-import org.eclipse.linuxtools.tmf.core.request.TmfRangeFilter;
-import org.junit.Test;
-
-/**
- * <b><u>TmfRangeFilterTest</u></b>
- * <p>
- * Test suite for the TmfRangeFilter class.
- */
-@SuppressWarnings({"nls","javadoc"})
-public class TmfRangeFilterTest extends TestCase {
-
-    // ------------------------------------------------------------------------
-    // Constants
-    // ------------------------------------------------------------------------
-
-    private static final TmfRangeFilter ALL_EVENTS = TmfRangeFilter.ALL_EVENTS;
-
-    // ------------------------------------------------------------------------
-       // Housekeeping
-       // ------------------------------------------------------------------------
-
-    /**
-     * @param name the test name
-     */
-       public TmfRangeFilterTest(String name) {
-               super(name);
-       }
-
-       @Override
-       protected void setUp() throws Exception {
-               super.setUp();
-       }
-
-       @Override
-       protected void tearDown() throws Exception {
-               super.tearDown();
-       }
-
-    // ------------------------------------------------------------------------
-       // Constructors
-       // ------------------------------------------------------------------------
-
-       @Test
-       public void testTmfRangeFilter() {
-           TmfRangeFilter filter = ALL_EVENTS;
-        assertEquals("getTimeRange", TmfTimeRange.ETERNITY, filter.getTimeRange());
-
-        TmfTimeRange range = TmfTimeRange.NULL_RANGE;
-        filter = new TmfRangeFilter(range);
-        assertEquals("getTimeRange", range, filter.getTimeRange());
-
-        range = new TmfTimeRange(TmfTimestamp.ZERO, TmfTimestamp.BIG_CRUNCH);
-        filter = new TmfRangeFilter(range);
-        assertEquals("getTimeRange", range, filter.getTimeRange());
-
-        range = new TmfTimeRange(new TmfTimestamp(10), TmfTimestamp.BIG_CRUNCH);
-        filter = new TmfRangeFilter(range);
-        assertEquals("getTimeRange", range, filter.getTimeRange());
-       }
-
-    @Test
-    public void testTmfRangeFilterCopy() {
-        TmfTimeRange range = new TmfTimeRange(TmfTimestamp.ZERO, TmfTimestamp.BIG_CRUNCH);
-        TmfRangeFilter filter1 = new TmfRangeFilter(range);
-        TmfRangeFilter filter2 = new TmfRangeFilter(filter1);
-
-        assertEquals("getTimeRange",   filter1.getTimeRange(),   filter2.getTimeRange());
-    }
-
-    // ------------------------------------------------------------------------
-       // equals
-       // ------------------------------------------------------------------------
-
-    @Test
-    public void testEqualsReflexivity() {
-        TmfTimeRange range1 = TmfTimeRange.ETERNITY;
-        TmfTimeRange range2 = new TmfTimeRange(TmfTimestamp.ZERO, TmfTimestamp.BIG_CRUNCH);
-        TmfRangeFilter filter1 = new TmfRangeFilter(range1);
-        TmfRangeFilter filter2 = new TmfRangeFilter(range2);
-
-        assertEquals("equals", filter1, filter1);
-        assertEquals("equals", filter2, filter2);
-
-        assertFalse("equals", filter1.equals(filter2));
-        assertFalse("equals", filter2.equals(filter1));
-    }
-
-    @Test
-    public void testEqualsSymmetry() {
-        TmfTimeRange range1 = TmfTimeRange.ETERNITY;
-        TmfTimeRange range2 = new TmfTimeRange(TmfTimestamp.ZERO, TmfTimestamp.BIG_CRUNCH);
-        TmfRangeFilter filter1 = new TmfRangeFilter(range1);
-        TmfRangeFilter filter2 = new TmfRangeFilter(range1);
-        TmfRangeFilter filter3 = new TmfRangeFilter(range2);
-
-        assertEquals("equals", filter1, filter2);
-        assertEquals("equals", filter2, filter1);
-
-        assertFalse("equals", filter1.equals(filter3));
-        assertFalse("equals", filter3.equals(filter1));
-    }
-
-    @Test
-    public void testEqualsTransivity() {
-        TmfTimeRange range = new TmfTimeRange(TmfTimestamp.ZERO, TmfTimestamp.BIG_CRUNCH);
-        TmfRangeFilter filter1 = new TmfRangeFilter(range);
-        TmfRangeFilter filter2 = new TmfRangeFilter(range);
-        TmfRangeFilter filter3 = new TmfRangeFilter(range);
-
-        assertEquals("equals", filter1, filter2);
-        assertEquals("equals", filter2, filter3);
-        assertEquals("equals", filter3, filter1);
-    }
-
-    @Test
-    public void testEqualsNull() {
-        TmfTimeRange range1 = new TmfTimeRange(TmfTimestamp.ZERO, TmfTimestamp.BIG_CRUNCH);
-        TmfTimeRange range2 = new TmfTimeRange(new TmfTimestamp(10), TmfTimestamp.BIG_CRUNCH);
-        TmfRangeFilter filter1 = new TmfRangeFilter(range1);
-        TmfRangeFilter filter2 = new TmfRangeFilter(range2);
-
-        assertFalse("equals", filter1.equals(null));
-        assertFalse("equals", filter2.equals(null));
-    }
-
-    // ------------------------------------------------------------------------
-    // hashCode
-    // ------------------------------------------------------------------------
-
-    @Test
-    public void testHashCode() {
-        TmfTimeRange range1 = new TmfTimeRange(TmfTimestamp.ZERO, TmfTimestamp.BIG_CRUNCH);
-        TmfTimeRange range2 = new TmfTimeRange(new TmfTimestamp(10), TmfTimestamp.BIG_CRUNCH);
-        TmfRangeFilter filter1 = new TmfRangeFilter(range1);
-        TmfRangeFilter filter2 = new TmfRangeFilter(range2);
-
-        assertFalse("hashCode",  filter1.hashCode() == filter2.hashCode());
-    }
-
-       // ------------------------------------------------------------------------
-       // toString
-       // ------------------------------------------------------------------------
-
-    @Test
-    public void testToString() {
-        TmfTimeRange range1 = new TmfTimeRange(TmfTimestamp.ZERO, TmfTimestamp.BIG_CRUNCH);
-        TmfTimeRange range2 = new TmfTimeRange(new TmfTimestamp(10), new TmfTimestamp(1000));
-        TmfRangeFilter filter1 = new TmfRangeFilter(range1);
-        TmfRangeFilter filter2 = new TmfRangeFilter(range2);
-
-        String expected0 = "TmfRangeFilter [fTimeRange=TmfTimeRange [fStartTime=" + TmfTimestamp.BIG_BANG + ", fEndTime=" + TmfTimestamp.BIG_CRUNCH + "]]";
-        String expected1 = "TmfRangeFilter [fTimeRange=TmfTimeRange [fStartTime=" + TmfTimestamp.ZERO     + ", fEndTime=" + TmfTimestamp.BIG_CRUNCH + "]]";
-        String expected2 = "TmfRangeFilter [fTimeRange=TmfTimeRange [fStartTime=" + new TmfTimestamp(10) + ", fEndTime=" +  new TmfTimestamp(1000) + "]]";
-
-        assertEquals("toString", expected0, TmfRangeFilter.ALL_EVENTS.toString());
-        assertEquals("toString", expected1, filter1.toString());
-        assertEquals("toString", expected2, filter2.toString());
-    }
-
-    // ------------------------------------------------------------------------
-    // matches
-    // ------------------------------------------------------------------------
-
-    /**
-     * The only test that really matters...
-     */
-    @Test
-    public void testMatches() {
-
-        TmfTimeRange range1 = new TmfTimeRange(new TmfTimestamp(0), new TmfTimestamp(1000));
-        TmfTimeRange range2 = new TmfTimeRange(new TmfTimestamp(10), new TmfTimestamp(2000));
-
-        TmfRangeFilter filter1 = new TmfRangeFilter(range1);
-        TmfRangeFilter filter2 = new TmfRangeFilter(range2);
-
-        ITmfEvent event = new TmfEvent(null, 0, new TmfTimestamp(0), null, null, null, null);
-        assertTrue ("matches", TmfRangeFilter.ALL_EVENTS.matches(event));
-        assertTrue ("matches", filter1.matches(event));
-        assertTrue ("matches", filter2.matches(event));
-
-        event = new TmfEvent(null, 0, new TmfTimestamp(5), null, null, null, null);
-        assertTrue ("matches", TmfRangeFilter.ALL_EVENTS.matches(event));
-        assertTrue ("matches", filter1.matches(event));
-        assertFalse("matches", filter2.matches(event));
-
-        event = new TmfEvent(null, 0, new TmfTimestamp(9), null, null, null, null);
-        assertTrue ("matches", TmfRangeFilter.ALL_EVENTS.matches(event));
-        assertTrue ("matches", filter1.matches(event));
-        assertFalse("matches", filter2.matches(event));
-
-        event = new TmfEvent(null, 0, new TmfTimestamp(10), null, null, null, null);
-        assertTrue ("matches", TmfRangeFilter.ALL_EVENTS.matches(event));
-        assertTrue ("matches", filter1.matches(event));
-        assertTrue ("matches", filter2.matches(event));
-
-        event = new TmfEvent(null, 0, new TmfTimestamp(999), null, null, null, null);
-        assertTrue ("matches", TmfRangeFilter.ALL_EVENTS.matches(event));
-        assertTrue ("matches", filter1.matches(event));
-        assertTrue ("matches", filter2.matches(event));
-
-        event = new TmfEvent(null, 0, new TmfTimestamp(1000), null, null, null, null);
-        assertTrue ("matches", TmfRangeFilter.ALL_EVENTS.matches(event));
-        assertTrue ("matches", filter1.matches(event));
-        assertTrue ("matches", filter2.matches(event));
-
-        event = new TmfEvent(null, 0, new TmfTimestamp(1001), null, null, null, null);
-        assertTrue ("matches", TmfRangeFilter.ALL_EVENTS.matches(event));
-        assertFalse("matches", filter1.matches(event));
-        assertTrue ("matches", filter2.matches(event));
-
-        event = new TmfEvent(null, 0, new TmfTimestamp(1999), null, null, null, null);
-        assertTrue ("matches", TmfRangeFilter.ALL_EVENTS.matches(event));
-        assertFalse("matches", filter1.matches(event));
-        assertTrue ("matches", filter2.matches(event));
-
-        event = new TmfEvent(null, 0, new TmfTimestamp(2000), null, null, null, null);
-        assertTrue ("matches", TmfRangeFilter.ALL_EVENTS.matches(event));
-        assertFalse("matches", filter1.matches(event));
-        assertTrue ("matches", filter2.matches(event));
-
-        event = new TmfEvent(null, 0, new TmfTimestamp(2001), null, null, null, null);
-        assertTrue ("matches", TmfRangeFilter.ALL_EVENTS.matches(event));
-        assertFalse("matches", filter1.matches(event));
-        assertFalse("matches", filter2.matches(event));
-    }
-
-}
index 688c47c3b7d75a3811e599c362063ea8c23b77be..bd6ef51b3c6de083c5a0d37249a542139a404d8f 100644 (file)
@@ -19,9 +19,9 @@ import org.eclipse.linuxtools.internal.tmf.core.request.TmfRequestExecutor;
 import org.eclipse.linuxtools.tmf.core.component.TmfDataProvider;
 import org.eclipse.linuxtools.tmf.core.event.ITmfEvent;
 import org.eclipse.linuxtools.tmf.core.event.TmfEvent;
-import org.eclipse.linuxtools.tmf.core.event.TmfTimeRange;
-import org.eclipse.linuxtools.tmf.core.request.ITmfRequest;
-import org.eclipse.linuxtools.tmf.core.request.TmfRequest;
+import org.eclipse.linuxtools.tmf.core.request.ITmfDataRequest;
+import org.eclipse.linuxtools.tmf.core.request.ITmfDataRequest.ExecutionType;
+import org.eclipse.linuxtools.tmf.core.request.TmfDataRequest;
 import org.eclipse.linuxtools.tmf.core.signal.TmfSignal;
 import org.eclipse.linuxtools.tmf.core.trace.ITmfContext;
 import org.eclipse.linuxtools.tmf.core.trace.ITmfLocation;
@@ -29,7 +29,7 @@ import org.eclipse.linuxtools.tmf.core.trace.ITmfLocation;
 /**
  * Test suite for the TmfRequestExecutor class.
  */
-@SuppressWarnings("nls")
+@SuppressWarnings({ "nls" })
 public class TmfRequestExecutorTest extends TestCase {
 
     // ------------------------------------------------------------------------
@@ -86,11 +86,11 @@ public class TmfRequestExecutorTest extends TestCase {
        }
 
        // ------------------------------------------------------------------------
-       // execute with pre-emption
+       // execute
        // ------------------------------------------------------------------------
 
        // Dummy context
-       private static class MyContext implements ITmfContext, Cloneable {
+       private static class MyContext implements ITmfContext {
            private long fNbRequested;
         private long fRank;
 
@@ -145,7 +145,7 @@ public class TmfRequestExecutorTest extends TestCase {
         public void broadcast(TmfSignal signal) {
         }
         @Override
-        public void sendRequest(ITmfRequest request) {
+        public void sendRequest(ITmfDataRequest request) {
         }
         @Override
         public void fireRequest() {
@@ -159,28 +159,18 @@ public class TmfRequestExecutorTest extends TestCase {
             return context.getRank() >= 0 ? fEvent : null;
         }
         @Override
-        public ITmfContext armRequest(ITmfRequest request) {
+        public ITmfContext armRequest(ITmfDataRequest request) {
             return new MyContext(request.getNbRequested());
         }
        }
 
        // Dummy request
-    private static class MyRequest extends TmfRequest {
-        private final Object monitor;
-        public MyRequest(TmfRequestPriority priority, int requested, Object mon) {
-            super(TmfTimeRange.ETERNITY, 0, requested, priority);
-            monitor = mon;
+    private static class MyRequest extends TmfDataRequest {
+        public MyRequest(ExecutionType priority, int requested) {
+            super(ITmfEvent.class, 0, requested, priority);
         }
         @Override
-        public synchronized void done() {
-            super.done();
-            synchronized (monitor) {
-                monitor.notifyAll();
-            }
-        }
-        @Override
-        public synchronized void handleStarted() {
-            super.handleStarted();
+        public void done() {
             synchronized (monitor) {
                 monitor.notifyAll();
             }
@@ -189,109 +179,81 @@ public class TmfRequestExecutorTest extends TestCase {
 
     // Dummy thread
     private static class MyThread extends TmfEventThread {
-        private final Object monitor;
-        public MyThread(TmfDataProvider provider, ITmfRequest request, Object mon) {
+        public MyThread(TmfDataProvider provider, ITmfDataRequest request) {
             super(provider, request);
-            monitor = mon;
-        }
-        @Override
-        public synchronized void resume() {
-            super.resume();
-            synchronized (monitor) {
-                monitor.notifyAll();
-            }
         }
     }
 
-    private final static Object reqmon1 = new Object();
-    private final static Object reqmon2 = new Object();
-    private final static Object reqmon3 = new Object();
-
-    private final static Object thrmon1 = new Object();
-    private final static Object thrmon2 = new Object();
-    private final static Object thrmon3 = new Object();
+    private final static Object monitor = new Object();
 
     /**
         * Test method for {@link org.eclipse.linuxtools.internal.tmf.core.request.TmfRequestExecutor#execute(java.lang.Runnable)}.
         */
        public void testExecute() {
-           final long TIMEOUT = 100;
-           final long ONE_MINUTE = 60 * 1000;
-
         MyProvider provider = new MyProvider();
-        MyRequest  request1 = new MyRequest(ITmfRequest.TmfRequestPriority.NORMAL, Integer.MAX_VALUE /  10, reqmon1);
-        MyThread   thread1  = new MyThread(provider, request1, thrmon1);
-        MyRequest  request2 = new MyRequest(ITmfRequest.TmfRequestPriority.HIGH,   Integer.MAX_VALUE / 100, reqmon2);
-        MyThread   thread2  = new MyThread(provider, request2, thrmon2);
-        MyRequest  request3 = new MyRequest(ITmfRequest.TmfRequestPriority.HIGH,   Integer.MAX_VALUE / 100, reqmon3);
-        MyThread   thread3  = new MyThread(provider, request3, thrmon3);
+        MyRequest  request1 = new MyRequest(ExecutionType.BACKGROUND, Integer.MAX_VALUE /  5);
+        MyThread   thread1  = new MyThread(provider, request1);
+        MyRequest  request2 = new MyRequest(ExecutionType.FOREGROUND, Integer.MAX_VALUE / 10);
+        MyThread   thread2  = new MyThread(provider, request2);
+        MyRequest  request3 = new MyRequest(ExecutionType.FOREGROUND, Integer.MAX_VALUE / 10);
+        MyThread   thread3  = new MyThread(provider, request3);
 
         // Start thread1
-        synchronized (reqmon1) {
-            try {
-                fExecutor.execute(thread1);
-                reqmon1.wait(ONE_MINUTE);
-                assertTrue("isRunning", thread1.isRunning());
-            } catch (InterruptedException e) {
-            }
+        fExecutor.execute(thread1);
+        try {
+            Thread.sleep(1000);
+        } catch (InterruptedException e) {
         }
+       assertTrue("isRunning", thread1.isRunning());
 
         // Start higher priority thread2
-        synchronized (reqmon2) {
-            try {
-                fExecutor.execute(thread2);
-                reqmon2.wait(ONE_MINUTE);
-                assertFalse("isRunning", thread1.isRunning());
-                assertTrue("isRunning", thread2.isRunning());
-            } catch (InterruptedException e) {
-            }
+        fExecutor.execute(thread2);
+        try {
+            Thread.sleep(1000);
+        } catch (InterruptedException e) {
         }
+        assertFalse("isRunning", thread1.isRunning());
+        assertTrue("isRunning", thread2.isRunning());
 
         // Wait for end of thread2
         try {
-            synchronized (reqmon2) {
-                reqmon2.wait(ONE_MINUTE);
-                assertTrue("isCompleted", thread2.isCompleted());
-            }
-            synchronized (thrmon1) {
-                thrmon1.wait(TIMEOUT); // Use a timeout in case we already missed the signal
-                assertTrue("isRunning", thread1.isRunning());
+            synchronized (monitor) {
+                monitor.wait();
+                Thread.sleep(1000);
             }
         } catch (InterruptedException e) {
         }
+        assertTrue("isCompleted", thread2.isCompleted());
+        assertTrue("isRunning", thread1.isRunning());
 
         // Start higher priority thread3
-        synchronized (reqmon3) {
-            try {
-                fExecutor.execute(thread3);
-                reqmon3.wait(ONE_MINUTE);
-                assertFalse("isRunning", thread1.isRunning());
-                assertTrue("isRunning", thread3.isRunning());
-            } catch (InterruptedException e) {
-            }
+        fExecutor.execute(thread3);
+        try {
+            Thread.sleep(500);
+        } catch (InterruptedException e) {
         }
+        assertFalse("isRunning", thread1.isRunning());
+        assertTrue("isRunning", thread3.isRunning());
 
         // Wait for end of thread3
         try {
-            synchronized (reqmon3) {
-                reqmon3.wait(ONE_MINUTE);
-                assertTrue("isCompleted", thread3.isCompleted());
-            }
-            synchronized (thrmon1) {
-                thrmon1.wait(TIMEOUT); // Use a timeout in case we already missed the signal
-                assertTrue("isRunning", thread1.isRunning());
+            synchronized (monitor) {
+                monitor.wait();
+                Thread.sleep(500);
             }
         } catch (InterruptedException e) {
         }
+        assertTrue("isCompleted", thread3.isCompleted());
+        assertTrue("isRunning", thread1.isRunning());
 
         // Wait for thread1 completion
         try {
-            synchronized (reqmon1) {
-                reqmon1.wait(ONE_MINUTE);
-                assertTrue("isCompleted", thread1.isCompleted());
+            synchronized (monitor) {
+                monitor.wait();
             }
         } catch (InterruptedException e) {
         }
+        assertTrue("isCompleted", thread1.isCompleted());
     }
 
        // ------------------------------------------------------------------------
diff --git a/org.eclipse.linuxtools.tmf.core.tests/src/org/eclipse/linuxtools/tmf/core/tests/request/TmfRequestTest.java b/org.eclipse.linuxtools.tmf.core.tests/src/org/eclipse/linuxtools/tmf/core/tests/request/TmfRequestTest.java
deleted file mode 100644 (file)
index c2a265a..0000000
+++ /dev/null
@@ -1,870 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2012 Ericsson
- *
- * 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *   Francois Chouinard - Initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.linuxtools.tmf.core.tests.request;
-
-import java.util.ArrayList;
-import java.util.Collection;
-
-import junit.framework.TestCase;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.linuxtools.tmf.core.event.TmfTimeRange;
-import org.eclipse.linuxtools.tmf.core.event.TmfTimestamp;
-import org.eclipse.linuxtools.tmf.core.filter.ITmfFilter;
-import org.eclipse.linuxtools.tmf.core.request.ITmfRequest;
-import org.eclipse.linuxtools.tmf.core.request.ITmfRequest.TmfRequestPriority;
-import org.eclipse.linuxtools.tmf.core.request.ITmfRequest.TmfRequestState;
-import org.eclipse.linuxtools.tmf.core.request.TmfBlockFilter;
-import org.eclipse.linuxtools.tmf.core.request.TmfRangeFilter;
-import org.eclipse.linuxtools.tmf.tests.stubs.request.TmfRequestStub;
-import org.junit.Test;
-
-/**
- * <b><u>TmfRequestTest</u></b>
- * <p>
- * Test suite for the TmfRequest class.
- */
-@SuppressWarnings({"nls","javadoc"})
-public class TmfRequestTest extends TestCase {
-
-    // ------------------------------------------------------------------------
-    // Constants
-    // ------------------------------------------------------------------------
-
-    private static final TmfRequestPriority NORMAL = TmfRequestPriority.NORMAL;
-    private static final TmfRequestPriority HIGH = TmfRequestPriority.HIGH;
-
-    private static final long ALL_EVENTS = ITmfRequest.ALL_EVENTS;
-
-    private static final TmfTimeRange ETERNITY = TmfTimeRange.ETERNITY;
-    private static final TmfTimeRange EPOCH = new TmfTimeRange(TmfTimestamp.ZERO, TmfTimestamp.BIG_BANG);
-
-    private static final TmfRequestState PENDING = TmfRequestState.PENDING;
-    private static final TmfRequestState RUNNING = TmfRequestState.RUNNING;
-    private static final TmfRequestState COMPLETED = TmfRequestState.COMPLETED;
-
-    // ------------------------------------------------------------------------
-       // Variables
-       // ------------------------------------------------------------------------
-
-       private ITmfRequest fRequest1;
-    private ITmfRequest fRequest1b;
-    private ITmfRequest fRequest1c;
-
-    private ITmfRequest fRequest2;
-
-       private static int fLastRequestId;
-
-    // ------------------------------------------------------------------------
-       // Housekeeping
-       // ------------------------------------------------------------------------
-
-    /**
-     * @param name the test name
-     */
-       public TmfRequestTest(String name) {
-               super(name);
-       }
-
-       @Override
-       protected void setUp() throws Exception {
-               super.setUp();
-           fRequest1  = new TmfRequestStub();
-           fRequest1b = new TmfRequestStub();
-           fRequest1c = new TmfRequestStub();
-           fRequest2 = new TmfRequestStub(HIGH);
-           fLastRequestId = fRequest2.getRequestId();
-       }
-
-       @Override
-       protected void tearDown() throws Exception {
-               super.tearDown();
-       }
-
-    private static ITmfRequest setupDummyRequest(final boolean[] flags) {
-
-        ITmfRequest request = new TmfRequestStub(10, 100) {
-            @Override
-            public synchronized void handleCompleted() {
-                super.handleCompleted();
-                flags[0] = true;
-            }
-
-            @Override
-            public void handleSuccess() {
-                super.handleSuccess();
-                flags[1] = true;
-            }
-
-            @Override
-            public void handleFailure() {
-                super.handleFailure();
-                flags[2] = true;
-            }
-
-            @Override
-            public void handleCancel() {
-                super.handleCancel();
-                flags[3] = true;
-            }
-        };
-        fLastRequestId = request.getRequestId();
-        return request;
-    }
-
-    // ------------------------------------------------------------------------
-       // Constructors
-       // ------------------------------------------------------------------------
-
-       @Test
-       public void testTmfRequest() {
-        ITmfRequest request = new TmfRequestStub();
-        fLastRequestId++;
-
-        assertEquals("getRequestId", fLastRequestId, request.getRequestId());
-        assertEquals("getRequestPriority", NORMAL, request.getRequestPriority());
-        assertEquals("getTimeRange", ETERNITY, request.getTimeRange());
-        assertEquals("getNbRequested", ALL_EVENTS, request.getNbRequested());
-        assertEquals("getStartIndex", 0, request.getStartIndex());
-        assertEquals("getEventFilters", TmfBlockFilter.ALL_EVENTS, request.getEventFilter(TmfBlockFilter.class));
-        assertEquals("getEventFilters", TmfRangeFilter.ALL_EVENTS, request.getEventFilter(TmfRangeFilter.class));
-        assertNull("getParent", request.getParent());
-
-        assertEquals("getNbEventsRead", 0, request.getNbEventsRead());
-        assertEquals("getState", PENDING, request.getState());
-        assertFalse("isRunning", request.isRunning());
-        assertFalse("isCompleted", request.isCompleted());
-
-        assertNull("getStatus", request.getStatus());
-        assertFalse("isOK", request.isOK());
-        assertFalse("isFailed", request.isFailed());
-        assertFalse("isCancelled", request.isCancelled());
-       }
-
-    @Test
-    public void testTmfRequestPriority() {
-
-        // 1. Normal priority
-        ITmfRequest request = new TmfRequestStub(TmfRequestPriority.NORMAL);
-        fLastRequestId++;
-
-        assertEquals("getRequestId", fLastRequestId, request.getRequestId());
-        assertEquals("getRequestPriority", NORMAL, request.getRequestPriority());
-        assertEquals("getTimeRange", ETERNITY, request.getTimeRange());
-        assertEquals("getNbRequested", ALL_EVENTS, request.getNbRequested());
-        assertEquals("getStartIndex", 0, request.getStartIndex());
-
-        assertEquals("getNbEventsRead", 0, request.getNbEventsRead());
-        assertEquals("getState", PENDING, request.getState());
-        assertFalse("isRunning", request.isRunning());
-        assertFalse("isCompleted", request.isCompleted());
-
-        assertNull("getStatus", request.getStatus());
-        assertFalse("isOK", request.isOK());
-        assertFalse("isFailed", request.isFailed());
-        assertFalse("isCancelled", request.isCancelled());
-
-        // 2. High priority
-        request = new TmfRequestStub(TmfRequestPriority.HIGH);
-        fLastRequestId++;
-
-        assertEquals("getRequestId", fLastRequestId, request.getRequestId());
-        assertEquals("getRequestPriority", HIGH, request.getRequestPriority());
-        assertEquals("getTimeRange", ETERNITY, request.getTimeRange());
-        assertEquals("getNbRequested", ALL_EVENTS, request.getNbRequested());
-        assertEquals("getStartIndex", 0, request.getStartIndex());
-
-        assertEquals("getNbEventsRead", 0, request.getNbEventsRead());
-        assertEquals("getState", PENDING, request.getState());
-        assertFalse("isRunning", request.isRunning());
-        assertFalse("isCompleted", request.isCompleted());
-
-        assertNull("getStatus", request.getStatus());
-        assertFalse("isOK", request.isOK());
-        assertFalse("isFailed", request.isFailed());
-        assertFalse("isCancelled", request.isCancelled());
-    }
-
-    @Test
-    public void testTmfRequestTimeRange() {
-
-        // 1. Eternity
-        ITmfRequest request = new TmfRequestStub(ETERNITY);
-        fLastRequestId++;
-
-        assertEquals("getRequestId", fLastRequestId, request.getRequestId());
-        assertEquals("getRequestPriority", NORMAL, request.getRequestPriority());
-        assertEquals("getTimeRange", ETERNITY, request.getTimeRange());
-        assertEquals("getNbRequested", ALL_EVENTS, request.getNbRequested());
-        assertEquals("getStartIndex", 0, request.getStartIndex());
-
-        assertEquals("getNbEventsRead", 0, request.getNbEventsRead());
-        assertEquals("getState", PENDING, request.getState());
-        assertFalse("isRunning", request.isRunning());
-        assertFalse("isCompleted", request.isCompleted());
-
-        assertNull("getStatus", request.getStatus());
-        assertFalse("isOK", request.isOK());
-        assertFalse("isFailed", request.isFailed());
-        assertFalse("isCancelled", request.isCancelled());
-
-        // 2. Since the epoch
-        request = new TmfRequestStub(EPOCH);
-        fLastRequestId++;
-
-        assertEquals("getRequestId", fLastRequestId, request.getRequestId());
-        assertEquals("getRequestPriority", NORMAL, request.getRequestPriority());
-        assertEquals("getTimeRange", EPOCH, request.getTimeRange());
-        assertEquals("getNbRequested", ALL_EVENTS, request.getNbRequested());
-        assertEquals("getStartIndex", 0, request.getStartIndex());
-
-        assertEquals("getNbEventsRead", 0, request.getNbEventsRead());
-        assertEquals("getState", PENDING, request.getState());
-        assertFalse("isRunning", request.isRunning());
-        assertFalse("isCompleted", request.isCompleted());
-
-        assertNull("getStatus", request.getStatus());
-        assertFalse("isOK", request.isOK());
-        assertFalse("isFailed", request.isFailed());
-        assertFalse("isCancelled", request.isCancelled());
-    }
-
-    @Test
-    public void testTmfRequestBlock() {
-
-        // 1. All events
-        ITmfRequest request = new TmfRequestStub(0, ALL_EVENTS);
-        fLastRequestId++;
-
-        assertEquals("getRequestId", fLastRequestId, request.getRequestId());
-        assertEquals("getRequestPriority", NORMAL, request.getRequestPriority());
-        assertEquals("getTimeRange", ETERNITY, request.getTimeRange());
-        assertEquals("getNbRequested", ALL_EVENTS, request.getNbRequested());
-        assertEquals("getStartIndex", 0, request.getStartIndex());
-
-        assertEquals("getNbEventsRead", 0, request.getNbEventsRead());
-        assertEquals("getState", PENDING, request.getState());
-        assertFalse("isRunning", request.isRunning());
-        assertFalse("isCompleted", request.isCompleted());
-
-        assertNull("getStatus", request.getStatus());
-        assertFalse("isOK", request.isOK());
-        assertFalse("isFailed", request.isFailed());
-        assertFalse("isCancelled", request.isCancelled());
-
-        // 2. For an event count
-        long nbRequested = 10000;
-        request = new TmfRequestStub(0, nbRequested);
-        fLastRequestId++;
-
-        assertEquals("getRequestId", fLastRequestId, request.getRequestId());
-        assertEquals("getRequestPriority", NORMAL, request.getRequestPriority());
-        assertEquals("getTimeRange", ETERNITY, request.getTimeRange());
-        assertEquals("getNbRequested", nbRequested, request.getNbRequested());
-        assertEquals("getStartIndex", 0, request.getStartIndex());
-
-        assertEquals("getNbEventsRead", 0, request.getNbEventsRead());
-        assertEquals("getState", PENDING, request.getState());
-        assertFalse("isRunning", request.isRunning());
-        assertFalse("isCompleted", request.isCompleted());
-
-        assertNull("getStatus", request.getStatus());
-        assertFalse("isOK", request.isOK());
-        assertFalse("isFailed", request.isFailed());
-        assertFalse("isCancelled", request.isCancelled());
-
-        // 3. From a given index
-        long index = 100;
-        request = new TmfRequestStub(index, ALL_EVENTS);
-        fLastRequestId++;
-
-        assertEquals("getRequestId", fLastRequestId, request.getRequestId());
-        assertEquals("getRequestPriority", NORMAL, request.getRequestPriority());
-        assertEquals("getTimeRange", ETERNITY, request.getTimeRange());
-        assertEquals("getNbRequested", ALL_EVENTS, request.getNbRequested());
-        assertEquals("getStartIndex", index, request.getStartIndex());
-
-        assertEquals("getNbEventsRead", 0, request.getNbEventsRead());
-        assertEquals("getState", PENDING, request.getState());
-        assertFalse("isRunning", request.isRunning());
-        assertFalse("isCompleted", request.isCompleted());
-
-        assertNull("getStatus", request.getStatus());
-        assertFalse("isOK", request.isOK());
-        assertFalse("isFailed", request.isFailed());
-        assertFalse("isCancelled", request.isCancelled());
-
-        // 4. From a given index, for an event count
-        request = new TmfRequestStub(index, nbRequested);
-        fLastRequestId++;
-
-        assertEquals("getRequestId", fLastRequestId, request.getRequestId());
-        assertEquals("getRequestPriority", NORMAL, request.getRequestPriority());
-        assertEquals("getTimeRange", ETERNITY, request.getTimeRange());
-        assertEquals("getNbRequested", nbRequested, request.getNbRequested());
-        assertEquals("getStartIndex", index, request.getStartIndex());
-
-        assertEquals("getNbEventsRead", 0, request.getNbEventsRead());
-        assertEquals("getState", PENDING, request.getState());
-        assertFalse("isRunning", request.isRunning());
-        assertFalse("isCompleted", request.isCompleted());
-
-        assertNull("getStatus", request.getStatus());
-        assertFalse("isOK", request.isOK());
-        assertFalse("isFailed", request.isFailed());
-        assertFalse("isCancelled", request.isCancelled());
-    }
-
-    @Test
-    public void testTmfRequestRangeAndBlock() {
-
-        // 1. All events since beginning of time
-        ITmfRequest request = new TmfRequestStub(ETERNITY, 0, ALL_EVENTS);
-        fLastRequestId++;
-
-        assertEquals("getRequestId", fLastRequestId, request.getRequestId());
-        assertEquals("getRequestPriority", NORMAL, request.getRequestPriority());
-        assertEquals("getTimeRange", ETERNITY, request.getTimeRange());
-        assertEquals("getNbRequested", ALL_EVENTS, request.getNbRequested());
-        assertEquals("getStartIndex", 0, request.getStartIndex());
-
-        assertEquals("getNbEventsRead", 0, request.getNbEventsRead());
-        assertEquals("getState", PENDING, request.getState());
-        assertFalse("isRunning", request.isRunning());
-        assertFalse("isCompleted", request.isCompleted());
-
-        assertNull("getStatus", request.getStatus());
-        assertFalse("isOK", request.isOK());
-        assertFalse("isFailed", request.isFailed());
-        assertFalse("isCancelled", request.isCancelled());
-
-        // 2. All events since the epoch
-        request = new TmfRequestStub(EPOCH, 0, ALL_EVENTS);
-        fLastRequestId++;
-
-        assertEquals("getRequestId", fLastRequestId, request.getRequestId());
-        assertEquals("getRequestPriority", NORMAL, request.getRequestPriority());
-        assertEquals("getTimeRange", EPOCH, request.getTimeRange());
-        assertEquals("getNbRequested", ALL_EVENTS, request.getNbRequested());
-        assertEquals("getStartIndex", 0, request.getStartIndex());
-
-        assertEquals("getNbEventsRead", 0, request.getNbEventsRead());
-        assertEquals("getState", PENDING, request.getState());
-        assertFalse("isRunning", request.isRunning());
-        assertFalse("isCompleted", request.isCompleted());
-
-        assertNull("getStatus", request.getStatus());
-        assertFalse("isOK", request.isOK());
-        assertFalse("isFailed", request.isFailed());
-        assertFalse("isCancelled", request.isCancelled());
-
-        // 3. A block of events since the beginning of time
-        long nbRequested = 10000;
-        request = new TmfRequestStub(ETERNITY, 0, nbRequested);
-        fLastRequestId++;
-
-        assertEquals("getRequestId", fLastRequestId, request.getRequestId());
-        assertEquals("getRequestPriority", NORMAL, request.getRequestPriority());
-        assertEquals("getTimeRange", ETERNITY, request.getTimeRange());
-        assertEquals("getNbRequested", nbRequested, request.getNbRequested());
-        assertEquals("getStartIndex", 0, request.getStartIndex());
-
-        assertEquals("getNbEventsRead", 0, request.getNbEventsRead());
-        assertEquals("getState", PENDING, request.getState());
-        assertFalse("isRunning", request.isRunning());
-        assertFalse("isCompleted", request.isCompleted());
-
-        assertNull("getStatus", request.getStatus());
-        assertFalse("isOK", request.isOK());
-        assertFalse("isFailed", request.isFailed());
-        assertFalse("isCancelled", request.isCancelled());
-
-        // 4. All events from a given index since the beginning of time
-        long index = 100;
-        request = new TmfRequestStub(ETERNITY, index, ALL_EVENTS);
-        fLastRequestId++;
-
-        assertEquals("getRequestId", fLastRequestId, request.getRequestId());
-        assertEquals("getRequestPriority", NORMAL, request.getRequestPriority());
-        assertEquals("getTimeRange", ETERNITY, request.getTimeRange());
-        assertEquals("getNbRequested", ALL_EVENTS, request.getNbRequested());
-        assertEquals("getStartIndex", index, request.getStartIndex());
-
-        assertEquals("getNbEventsRead", 0, request.getNbEventsRead());
-        assertEquals("getState", PENDING, request.getState());
-        assertFalse("isRunning", request.isRunning());
-        assertFalse("isCompleted", request.isCompleted());
-
-        assertNull("getStatus", request.getStatus());
-        assertFalse("isOK", request.isOK());
-        assertFalse("isFailed", request.isFailed());
-        assertFalse("isCancelled", request.isCancelled());
-
-        // 4. Some events from a given index since the epoch
-        request = new TmfRequestStub(EPOCH, index, nbRequested);
-        fLastRequestId++;
-
-        assertEquals("getRequestId", fLastRequestId, request.getRequestId());
-        assertEquals("getRequestPriority", NORMAL, request.getRequestPriority());
-        assertEquals("getTimeRange", EPOCH, request.getTimeRange());
-        assertEquals("getNbRequested", nbRequested, request.getNbRequested());
-        assertEquals("getStartIndex", index, request.getStartIndex());
-
-        assertEquals("getNbEventsRead", 0, request.getNbEventsRead());
-        assertEquals("getState", PENDING, request.getState());
-        assertFalse("isRunning", request.isRunning());
-        assertFalse("isCompleted", request.isCompleted());
-
-        assertNull("getStatus", request.getStatus());
-        assertFalse("isOK", request.isOK());
-        assertFalse("isFailed", request.isFailed());
-        assertFalse("isCancelled", request.isCancelled());
-    }
-
-    @Test
-    public void testTmfRequestRangeAndBlockWithPriority() {
-
-        // 1. All events since beginning of time
-        ITmfRequest request = new TmfRequestStub(ETERNITY, 0, ALL_EVENTS, NORMAL);
-        fLastRequestId++;
-
-        assertEquals("getRequestId", fLastRequestId, request.getRequestId());
-        assertEquals("getRequestPriority", NORMAL, request.getRequestPriority());
-        assertEquals("getTimeRange", ETERNITY, request.getTimeRange());
-        assertEquals("getNbRequested", ALL_EVENTS, request.getNbRequested());
-        assertEquals("getStartIndex", 0, request.getStartIndex());
-
-        assertEquals("getNbEventsRead", 0, request.getNbEventsRead());
-        assertEquals("getState", PENDING, request.getState());
-        assertFalse("isRunning", request.isRunning());
-        assertFalse("isCompleted", request.isCompleted());
-
-        assertNull("getStatus", request.getStatus());
-        assertFalse("isOK", request.isOK());
-        assertFalse("isFailed", request.isFailed());
-        assertFalse("isCancelled", request.isCancelled());
-
-        // 2. All events since beginning of time, high priority
-        request = new TmfRequestStub(ETERNITY, 0, ALL_EVENTS, HIGH);
-        fLastRequestId++;
-
-        assertEquals("getRequestId", fLastRequestId, request.getRequestId());
-        assertEquals("getRequestPriority", HIGH, request.getRequestPriority());
-        assertEquals("getTimeRange", ETERNITY, request.getTimeRange());
-        assertEquals("getNbRequested", ALL_EVENTS, request.getNbRequested());
-        assertEquals("getStartIndex", 0, request.getStartIndex());
-
-        assertEquals("getNbEventsRead", 0, request.getNbEventsRead());
-        assertEquals("getState", PENDING, request.getState());
-        assertFalse("isRunning", request.isRunning());
-        assertFalse("isCompleted", request.isCompleted());
-
-        assertNull("getStatus", request.getStatus());
-        assertFalse("isOK", request.isOK());
-        assertFalse("isFailed", request.isFailed());
-        assertFalse("isCancelled", request.isCancelled());
-
-        // 3. A block of events since the beginning of time
-        long nbRequested = 10000;
-        long index = 100;
-        request = new TmfRequestStub(EPOCH, index, nbRequested, NORMAL);
-        fLastRequestId++;
-
-        assertEquals("getRequestId", fLastRequestId, request.getRequestId());
-        assertEquals("getRequestPriority", NORMAL, request.getRequestPriority());
-        assertEquals("getTimeRange", EPOCH, request.getTimeRange());
-        assertEquals("getNbRequested", nbRequested, request.getNbRequested());
-        assertEquals("getStartIndex", index, request.getStartIndex());
-
-        assertEquals("getNbEventsRead", 0, request.getNbEventsRead());
-        assertEquals("getState", PENDING, request.getState());
-        assertFalse("isRunning", request.isRunning());
-        assertFalse("isCompleted", request.isCompleted());
-
-        assertNull("getStatus", request.getStatus());
-        assertFalse("isOK", request.isOK());
-        assertFalse("isFailed", request.isFailed());
-        assertFalse("isCancelled", request.isCancelled());
-
-        // 4. A block of events since the beginning of time, high priority
-        request = new TmfRequestStub(EPOCH, index, nbRequested, HIGH);
-        fLastRequestId++;
-
-        assertEquals("getRequestId", fLastRequestId, request.getRequestId());
-        assertEquals("getRequestPriority", HIGH, request.getRequestPriority());
-        assertEquals("getTimeRange", EPOCH, request.getTimeRange());
-        assertEquals("getNbRequested", nbRequested, request.getNbRequested());
-        assertEquals("getStartIndex", index, request.getStartIndex());
-
-        assertEquals("getNbEventsRead", 0, request.getNbEventsRead());
-        assertEquals("getState", PENDING, request.getState());
-        assertFalse("isRunning", request.isRunning());
-        assertFalse("isCompleted", request.isCompleted());
-
-        assertNull("getStatus", request.getStatus());
-        assertFalse("isOK", request.isOK());
-        assertFalse("isFailed", request.isFailed());
-        assertFalse("isCancelled", request.isCancelled());
-    }
-
-    @Test
-    public void testTmfRequestCopy() {
-        TmfRequestStub other = new TmfRequestStub();
-        ITmfRequest request = new TmfRequestStub(other);
-        fLastRequestId += 2;
-
-        assertEquals("getRequestId", fLastRequestId, request.getRequestId());
-        assertEquals("getRequestPriority", NORMAL, request.getRequestPriority());
-        assertEquals("getTimeRange", ETERNITY, request.getTimeRange());
-        assertEquals("getNbRequested", ALL_EVENTS, request.getNbRequested());
-        assertEquals("getStartIndex", 0, request.getStartIndex());
-
-        assertEquals("getNbEventsRead", 0, request.getNbEventsRead());
-        assertEquals("getState", PENDING, request.getState());
-        assertFalse("isRunning", request.isRunning());
-        assertFalse("isCompleted", request.isCompleted());
-
-        assertNull("getStatus", request.getStatus());
-        assertFalse("isOK", request.isOK());
-        assertFalse("isFailed", request.isFailed());
-        assertFalse("isCancelled", request.isCancelled());
-    }
-
-    // ------------------------------------------------------------------------
-       // equals
-       // ------------------------------------------------------------------------
-
-    @Test
-    public void testEqualsReflexivity() {
-        assertEquals("equals", fRequest1, fRequest1);
-        assertEquals("equals", fRequest2, fRequest2);
-
-        assertFalse("equals", fRequest1.equals(fRequest2));
-        assertFalse("equals", fRequest2.equals(fRequest1));
-    }
-
-    @Test
-    public void testEqualsSymmetry() {
-        assertEquals("equals", fRequest1, fRequest1b);
-        assertEquals("equals", fRequest1b, fRequest1);
-
-        assertFalse("equals", fRequest1.equals(fRequest2));
-        assertFalse("equals", fRequest2.equals(fRequest1));
-    }
-
-    @Test
-    public void testEqualsTransivity() {
-        assertEquals("equals", fRequest1, fRequest1b);
-        assertEquals("equals", fRequest1b, fRequest1c);
-        assertEquals("equals", fRequest1c, fRequest1);
-    }
-
-    @Test
-    public void testEqualsNull() {
-        assertFalse("equals", fRequest1.equals(null));
-        assertFalse("equals", fRequest2.equals(null));
-    }
-
-    // ------------------------------------------------------------------------
-    // hashCode
-    // ------------------------------------------------------------------------
-
-    @Test
-    public void testHashCode() {
-        assertTrue("hashCode", fRequest1.hashCode() == fRequest1.hashCode());
-        assertTrue("hashCode", fRequest2.hashCode() == fRequest2.hashCode());
-        assertTrue("hashCode", fRequest1.hashCode() != fRequest2.hashCode());
-    }
-
-       // ------------------------------------------------------------------------
-       // toString
-       // ------------------------------------------------------------------------
-
-    @Test
-    public void testToString() {
-        String expected1 = "TmfRequest [fRequestId=" + fRequest1.getRequestId() + "]";
-        String expected2 = "TmfRequest [fRequestId=" + fRequest2.getRequestId() + "]";
-
-        assertEquals("toString", expected1, fRequest1.toString());
-        assertEquals("toString", expected2, fRequest2.toString());
-    }
-
-    // ------------------------------------------------------------------------
-    // Setters
-    // ------------------------------------------------------------------------
-
-    @Test
-    public void testSetTimeRange() {
-
-        TmfRequestStub request = new TmfRequestStub(ETERNITY);
-        request.setTimeRange(EPOCH);
-        fLastRequestId++;
-
-        assertEquals("getRequestId", fLastRequestId, request.getRequestId());
-        assertEquals("getRequestPriority", NORMAL, request.getRequestPriority());
-        assertEquals("getTimeRange", EPOCH, request.getTimeRange());
-        assertEquals("getNbRequested", ALL_EVENTS, request.getNbRequested());
-        assertEquals("getStartIndex", 0, request.getStartIndex());
-
-        assertEquals("getNbEventsRead", 0, request.getNbEventsRead());
-        assertEquals("getState", PENDING, request.getState());
-        assertFalse("isRunning", request.isRunning());
-        assertFalse("isCompleted", request.isCompleted());
-
-        assertNull("getStatus", request.getStatus());
-        assertFalse("isOK", request.isOK());
-        assertFalse("isFailed", request.isFailed());
-        assertFalse("isCancelled", request.isCancelled());
-    }
-
-    @Test
-    public void testSetNbRequested() {
-        long nbRequested = 10000;
-
-        TmfRequestStub request = new TmfRequestStub(ETERNITY, 0, ALL_EVENTS);
-        request.setNbRequested(nbRequested);
-        fLastRequestId++;
-
-        assertEquals("getRequestId", fLastRequestId, request.getRequestId());
-        assertEquals("getRequestPriority", NORMAL, request.getRequestPriority());
-        assertEquals("getTimeRange", ETERNITY, request.getTimeRange());
-        assertEquals("getNbRequested", nbRequested, request.getNbRequested());
-        assertEquals("getStartIndex", 0, request.getStartIndex());
-
-        assertEquals("getNbEventsRead", 0, request.getNbEventsRead());
-        assertEquals("getState", PENDING, request.getState());
-        assertFalse("isRunning", request.isRunning());
-        assertFalse("isCompleted", request.isCompleted());
-
-        assertNull("getStatus", request.getStatus());
-        assertFalse("isOK", request.isOK());
-        assertFalse("isFailed", request.isFailed());
-        assertFalse("isCancelled", request.isCancelled());
-    }
-
-    @Test
-    public void testSetStartIndex() {
-        long index = 100;
-
-        TmfRequestStub request = new TmfRequestStub(ETERNITY, 0, ALL_EVENTS);
-        request.setStartIndex(index);
-        fLastRequestId++;
-
-        assertEquals("getRequestId", fLastRequestId, request.getRequestId());
-        assertEquals("getRequestPriority", NORMAL, request.getRequestPriority());
-        assertEquals("getTimeRange", ETERNITY, request.getTimeRange());
-        assertEquals("getNbRequested", ALL_EVENTS, request.getNbRequested());
-        assertEquals("getStartIndex", index, request.getStartIndex());
-
-        assertEquals("getNbEventsRead", 0, request.getNbEventsRead());
-        assertEquals("getState", PENDING, request.getState());
-        assertFalse("isRunning", request.isRunning());
-        assertFalse("isCompleted", request.isCompleted());
-
-        assertNull("getStatus", request.getStatus());
-        assertFalse("isOK", request.isOK());
-        assertFalse("isFailed", request.isFailed());
-        assertFalse("isCancelled", request.isCancelled());
-    }
-
-    // ------------------------------------------------------------------------
-    // setEventFilters, addEventFilter
-    // ------------------------------------------------------------------------
-
-    @Test
-    public void testSetEventFilters() {
-        TmfRequestStub request = new TmfRequestStub();
-        Collection<ITmfFilter> filters = new ArrayList<ITmfFilter>();
-        request.setEventFilters(filters);
-        assertEquals("setEventFilters", TmfBlockFilter.ALL_EVENTS, request.getEventFilter(TmfBlockFilter.class));
-        assertEquals("setEventFilters", TmfRangeFilter.ALL_EVENTS, request.getEventFilter(TmfRangeFilter.class));
-
-        TmfBlockFilter blockFilter = new TmfBlockFilter(10, 1000);
-        filters.add(blockFilter);
-        request.setEventFilters(filters);
-        assertEquals("setEventFilters", blockFilter, request.getEventFilter(TmfBlockFilter.class));
-        assertEquals("setEventFilters", TmfRangeFilter.ALL_EVENTS, request.getEventFilter(TmfRangeFilter.class));
-
-        TmfRangeFilter rangeFilter = new TmfRangeFilter(EPOCH);
-        filters.add(rangeFilter);
-        request.setEventFilters(filters);
-        assertEquals("setEventFilters", blockFilter, request.getEventFilter(TmfBlockFilter.class));
-        assertEquals("setEventFilters", rangeFilter, request.getEventFilter(TmfRangeFilter.class));
-    }
-
-    @Test
-    public void testAddEventFilters() {
-        TmfRequestStub request = new TmfRequestStub();
-        Collection<ITmfFilter> filters = new ArrayList<ITmfFilter>();
-        request.setEventFilters(filters);
-        assertEquals("setEventFilters", TmfBlockFilter.ALL_EVENTS, request.getEventFilter(TmfBlockFilter.class));
-        assertEquals("setEventFilters", TmfRangeFilter.ALL_EVENTS, request.getEventFilter(TmfRangeFilter.class));
-
-        TmfBlockFilter blockFilter = new TmfBlockFilter(10, 1000);
-        request.addEventFilter(blockFilter);
-        assertEquals("setEventFilters", blockFilter, request.getEventFilter(TmfBlockFilter.class));
-        assertEquals("setEventFilters", TmfRangeFilter.ALL_EVENTS, request.getEventFilter(TmfRangeFilter.class));
-
-        TmfRangeFilter rangeFilter = new TmfRangeFilter(EPOCH);
-        request.addEventFilter(rangeFilter);
-        assertEquals("setEventFilters", blockFilter, request.getEventFilter(TmfBlockFilter.class));
-        assertEquals("setEventFilters", rangeFilter, request.getEventFilter(TmfRangeFilter.class));
-    }
-
-    // ------------------------------------------------------------------------
-    // setParent, notifyParent
-    // ------------------------------------------------------------------------
-
-    @Test
-    public void testSetParent() {
-        TmfRequestStub request1 = new TmfRequestStub();
-        TmfRequestStub request2 = new TmfRequestStub();
-
-        assertNull("getParent", request2.getParent());
-        request2.setParent(request1);
-        assertEquals("getParent", request1, request2.getParent());
-        request2.setParent(null);
-        assertNull("getParent", request2.getParent());
-    }
-
-    @Test
-    public void testNotifyParent() {
-        final Boolean[] notifications = new Boolean[2];
-        notifications[0] = notifications[1] = false;
-
-        TmfRequestStub request1 = new TmfRequestStub() {
-            @Override
-            public void notifyParent(ITmfRequest child) {
-                notifications[0] = true;
-                super.notifyParent(this);
-            }
-        };
-        TmfRequestStub request2 = new TmfRequestStub() {
-            @Override
-            public void notifyParent(ITmfRequest child) {
-                notifications[1] = true;
-                super.notifyParent(this);
-            }
-        };
-
-        request2.setParent(request1);
-        assertFalse("notifyParent", notifications[0]);
-        assertFalse("notifyParent", notifications[1]);
-
-        request2.notifyParent(null);
-        assertTrue("notifyParent", notifications[0]);
-        assertTrue("notifyParent", notifications[1]);
-    }
-
-    // ------------------------------------------------------------------------
-    // start
-    // ------------------------------------------------------------------------
-
-    @Test
-    public void testStart() {
-
-        final boolean[] flags = new boolean[4];
-        ITmfRequest request = setupDummyRequest(flags);
-        request.start();
-
-        assertTrue("isRunning", request.isRunning());
-        assertFalse("isCompleted", request.isCompleted());
-        assertEquals("getState", RUNNING, request.getState());
-
-        assertNull("getStatus", request.getStatus());
-
-        assertFalse("handleCompleted", flags[0]);
-        assertFalse("handleSuccess",   flags[1]);
-        assertFalse("handleFailure",   flags[2]);
-        assertFalse("handleCancel",    flags[3]);
-    }
-
-       // ------------------------------------------------------------------------
-       // done
-       // ------------------------------------------------------------------------
-
-    @Test
-    public void testDone() {
-
-        final boolean[] flags = new boolean[4];
-        ITmfRequest request = setupDummyRequest(flags);
-        request.done();
-
-        assertFalse("isRunning", request.isRunning());
-        assertTrue("isCompleted", request.isCompleted());
-        assertEquals("getState", COMPLETED, request.getState());
-
-        assertEquals("getStatus", IStatus.OK, request.getStatus().getSeverity());
-        assertTrue("isOK", request.isOK());
-        assertFalse("isFailed", request.isFailed());
-        assertFalse("isCancelled", request.isCancelled());
-
-        assertTrue("handleCompleted", flags[0]);
-        assertTrue("handleSuccess",   flags[1]);
-        assertFalse("handleFailure",  flags[2]);
-        assertFalse("handleCancel",   flags[3]);
-    }
-
-       // ------------------------------------------------------------------------
-       // fail
-       // ------------------------------------------------------------------------
-
-    @Test
-    public void testFail() {
-
-        final boolean[] flags = new boolean[4];
-        ITmfRequest request = setupDummyRequest(flags);
-        request.fail();
-
-        assertFalse("isRunning", request.isRunning());
-        assertTrue("isCompleted", request.isCompleted());
-        assertEquals("getState", COMPLETED, request.getState());
-
-        assertEquals("getStatus", IStatus.ERROR, request.getStatus().getSeverity());
-        assertFalse("isOK", request.isOK());
-        assertTrue("isFailed", request.isFailed());
-        assertFalse("isCancelled", request.isCancelled());
-
-        assertTrue("handleCompleted", flags[0]);
-        assertFalse("handleSuccess",  flags[1]);
-        assertTrue("handleFailure",   flags[2]);
-        assertFalse("handleCancel",   flags[3]);
-    }
-
-       // ------------------------------------------------------------------------
-       // cancel
-       // ------------------------------------------------------------------------
-
-    @Test
-    public void testCancel() {
-
-        final boolean[] flags = new boolean[4];
-        ITmfRequest request = setupDummyRequest(flags);
-        request.cancel();
-
-        assertFalse("isRunning", request.isRunning());
-        assertTrue("isCompleted", request.isCompleted());
-        assertEquals("getState", COMPLETED, request.getState());
-
-        assertEquals("getStatus", IStatus.CANCEL, request.getStatus().getSeverity());
-        assertFalse("isOK", request.isOK());
-        assertFalse("isFailed", request.isFailed());
-        assertTrue("isCancelled", request.isCancelled());
-
-        assertTrue("handleCompleted", flags[0]);
-        assertFalse("handleSuccess",  flags[1]);
-        assertFalse("handleFailure",  flags[2]);
-        assertTrue("handleCancel",    flags[3]);
-    }
-
-}
diff --git a/org.eclipse.linuxtools.tmf.core.tests/src/org/eclipse/linuxtools/tmf/core/tests/request/TmfTraceFilterTest.java b/org.eclipse.linuxtools.tmf.core.tests/src/org/eclipse/linuxtools/tmf/core/tests/request/TmfTraceFilterTest.java
deleted file mode 100644 (file)
index ec4d0fa..0000000
+++ /dev/null
@@ -1,237 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2012 Ericsson
- *
- * 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *   Francois Chouinard - Initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.linuxtools.tmf.core.tests.request;
-
-import junit.framework.TestCase;
-
-import org.eclipse.linuxtools.tmf.core.event.ITmfEvent;
-import org.eclipse.linuxtools.tmf.core.event.TmfEvent;
-import org.eclipse.linuxtools.tmf.core.event.TmfTimestamp;
-import org.eclipse.linuxtools.tmf.core.request.TmfTraceFilter;
-import org.eclipse.linuxtools.tmf.core.trace.ITmfTrace;
-import org.eclipse.linuxtools.tmf.tests.stubs.trace.TmfTraceStub;
-import org.junit.Test;
-
-/**
- * <b><u>TmfTraceFilterTest</u></b>
- * <p>
- * Test suite for the TmfTraceFilter class.
- */
-@SuppressWarnings({"nls","javadoc"})
-public class TmfTraceFilterTest extends TestCase {
-
-    // ------------------------------------------------------------------------
-    // Constants
-    // ------------------------------------------------------------------------
-
-    private static final TmfTraceFilter ALL_TRACES = TmfTraceFilter.ALL_TRACES;
-
-    // ------------------------------------------------------------------------
-       // Housekeeping
-       // ------------------------------------------------------------------------
-
-    /**
-     * @param name the test name
-     */
-       public TmfTraceFilterTest(String name) {
-               super(name);
-       }
-
-       @Override
-       protected void setUp() throws Exception {
-               super.setUp();
-       }
-
-       @Override
-       protected void tearDown() throws Exception {
-               super.tearDown();
-       }
-
-    // ------------------------------------------------------------------------
-       // Constructors
-       // ------------------------------------------------------------------------
-
-       @Test
-       public void testTmfTraceFilter() {
-        ITmfTrace trace1 = new TmfTraceStub();
-        ITmfTrace trace2 = new TmfTraceStub();
-        ITmfTrace[] traces;
-
-           TmfTraceFilter filter = ALL_TRACES;
-           traces = filter.getTraces();
-        assertEquals("getTraces", 0, traces.length);
-        assertEquals("getTraces", ALL_TRACES.getTraces(), filter.getTraces());
-
-        filter = new TmfTraceFilter();
-        traces = filter.getTraces();
-        assertEquals("getTraces", 0, traces.length);
-        assertEquals("getTraces", ALL_TRACES.getTraces(), filter.getTraces());
-
-        filter = new TmfTraceFilter(new ITmfTrace[] { trace1 });
-        traces = filter.getTraces();
-        assertEquals("getTraces", 1, traces.length);
-        assertEquals("getTraces", trace1, traces[0]);
-
-        filter = new TmfTraceFilter(new ITmfTrace[] { trace2 });
-        traces = filter.getTraces();
-        assertEquals("getTraces", 1, traces.length);
-        assertEquals("getTraces", trace2, traces[0]);
-
-        filter = new TmfTraceFilter(new ITmfTrace[] { trace1, trace2 });
-        traces = filter.getTraces();
-        assertEquals("getTraces", 2, traces.length);
-        assertEquals("getTraces", trace1, traces[0]);
-        assertEquals("getTraces", trace2, traces[1]);
-       }
-
-    @Test
-    public void testTmfTraceFilterCopy() {
-        ITmfTrace trace1 = new TmfTraceStub();
-        ITmfTrace trace2 = new TmfTraceStub();
-
-        TmfTraceFilter filter1 = new TmfTraceFilter(new ITmfTrace[] { trace1, trace2 });
-        TmfTraceFilter filter2 = new TmfTraceFilter(filter1);
-        ITmfTrace[] traces = filter2.getTraces();
-        assertEquals("getTraces", 2, traces.length);
-        assertEquals("getTraces", trace1, traces[0]);
-        assertEquals("getTraces", trace2, traces[1]);
-    }
-
-    // ------------------------------------------------------------------------
-    // equals
-    // ------------------------------------------------------------------------
-
-    @Test
-    public void testEqualsReflexivity() {
-        TmfTraceFilter filter1 = new TmfTraceFilter();
-        TmfTraceFilter filter2 = new TmfTraceFilter(new ITmfTrace[] { new TmfTraceStub() });
-
-        assertEquals("equals", filter1, filter1);
-        assertEquals("equals", filter2, filter2);
-
-        assertFalse("equals", filter1.equals(filter2));
-        assertFalse("equals", filter2.equals(filter1));
-    }
-
-    @Test
-    public void testEqualsSymmetry() {
-        TmfTraceFilter filter1 = new TmfTraceFilter();
-        TmfTraceFilter filter2 = new TmfTraceFilter();
-        TmfTraceFilter filter3 = new TmfTraceFilter(new ITmfTrace[] { new TmfTraceStub() });
-
-        assertEquals("equals", filter1, filter2);
-        assertEquals("equals", filter2, filter1);
-
-        assertFalse("equals", filter1.equals(filter3));
-        assertFalse("equals", filter3.equals(filter1));
-    }
-
-    @Test
-    public void testEqualsTransivity() {
-        TmfTraceFilter filter1 = new TmfTraceFilter();
-        TmfTraceFilter filter2 = new TmfTraceFilter();
-        TmfTraceFilter filter3 = new TmfTraceFilter();
-
-        assertEquals("equals", filter1, filter2);
-        assertEquals("equals", filter2, filter3);
-        assertEquals("equals", filter3, filter1);
-
-        ITmfTrace trace = new TmfTraceStub();
-        filter1 = new TmfTraceFilter(new ITmfTrace[] { trace });
-        filter2 = new TmfTraceFilter(new ITmfTrace[] { trace });
-        filter3 = new TmfTraceFilter(new ITmfTrace[] { trace });
-
-        assertEquals("equals", filter1, filter2);
-        assertEquals("equals", filter2, filter3);
-        assertEquals("equals", filter3, filter1);
-    }
-
-    @Test
-    public void testEqualsNull() {
-        TmfTraceFilter filter1 = new TmfTraceFilter();
-        TmfTraceFilter filter2 = new TmfTraceFilter(new ITmfTrace[] { new TmfTraceStub() });
-
-        assertFalse("equals", filter1.equals(null));
-        assertFalse("equals", filter2.equals(null));
-    }
-
-    // ------------------------------------------------------------------------
-    // hashCode
-    // ------------------------------------------------------------------------
-
-    @Test
-    public void testHashCode() {
-        TmfTraceFilter filter1 = new TmfTraceFilter();
-        TmfTraceFilter filter2 = new TmfTraceFilter(new ITmfTrace[] { new TmfTraceStub() });
-
-        assertFalse("hashCode",  filter1.hashCode() == filter2.hashCode());
-    }
-
-       // ------------------------------------------------------------------------
-       // toString
-       // ------------------------------------------------------------------------
-
-    @Test
-    public void testToString() {
-        ITmfTrace trace = new TmfTraceStub();
-        TmfTraceFilter filter1 = new TmfTraceFilter();
-        TmfTraceFilter filter2 = new TmfTraceFilter(new ITmfTrace[] { trace });
-
-        String expected1 = "TmfTraceFilter [fTraces=[]]";
-        String expected2 = "TmfTraceFilter [fTraces=[" + trace + "]]";
-
-        assertEquals("toString", expected1, filter1.toString());
-        assertEquals("toString", expected2, filter2.toString());
-    }
-
-    // ------------------------------------------------------------------------
-    // matches
-    // ------------------------------------------------------------------------
-
-    /**
-     * The only test that really matters...
-     */
-    @Test
-    public void testMatches() {
-        ITmfTrace trace0 = new TmfTraceStub();
-        ITmfTrace trace1 = new TmfTraceStub();
-        ITmfTrace trace2 = new TmfTraceStub();
-
-        TmfTraceFilter filter0 = new TmfTraceFilter();
-        TmfTraceFilter filter1 = new TmfTraceFilter(new ITmfTrace[] { trace1 });
-        TmfTraceFilter filter2 = new TmfTraceFilter(new ITmfTrace[] { trace2 });
-        TmfTraceFilter filter3 = new TmfTraceFilter(new ITmfTrace[] { trace1, trace2 });
-
-        ITmfEvent event = new TmfEvent(trace0, 0, new TmfTimestamp(0), null, null, null, null);
-        assertTrue ("matches", TmfTraceFilter.ALL_TRACES.matches(event));
-        assertTrue ("matches", filter0.matches(event));
-        assertFalse("matches", filter1.matches(event));
-        assertFalse("matches", filter2.matches(event));
-        assertFalse("matches", filter3.matches(event));
-
-        event = new TmfEvent(trace1, 0, new TmfTimestamp(0), null, null, null, null);
-        assertTrue ("matches", TmfTraceFilter.ALL_TRACES.matches(event));
-        assertTrue ("matches", filter0.matches(event));
-        assertTrue ("matches", filter1.matches(event));
-        assertFalse("matches", filter2.matches(event));
-        assertTrue ("matches", filter3.matches(event));
-
-        event = new TmfEvent(trace2, 0, new TmfTimestamp(0), null, null, null, null);
-        assertTrue ("matches", TmfTraceFilter.ALL_TRACES.matches(event));
-        assertTrue ("matches", filter0.matches(event));
-        assertFalse("matches", filter1.matches(event));
-        assertTrue ("matches", filter2.matches(event));
-        assertTrue ("matches", filter3.matches(event));
-    }
-
-}
index 26a005788f02f7be24aceba217160ea0d496e934..34e51611c7b58fa2d9c8d74ac0b5ad2832daec1b 100644 (file)
@@ -48,7 +48,7 @@ import org.eclipse.linuxtools.tmf.tests.stubs.trace.TmfTraceStub;
 /**
  * Test suite for the TmfExperiment class (single trace).
  */
-@SuppressWarnings({"nls","javadoc", "deprecation"})
+@SuppressWarnings({"nls","javadoc"})
 public class TmfExperimentTest extends TestCase {
 
     // ------------------------------------------------------------------------
index 1591ff4db8a842d2eb7a2765e82da53d1ab3e671..cbeb4595d917bb76f852019329aaad7c6cfabeff 100644 (file)
@@ -42,7 +42,7 @@ import org.eclipse.linuxtools.tmf.tests.stubs.trace.TmfTraceStub;
 /**
  * Test suite for the TmfExperiment class (multiple traces).
  */
-@SuppressWarnings({"nls","javadoc", "deprecation"})
+@SuppressWarnings({"nls","javadoc"})
 public class TmfMultiTraceExperimentTest extends TestCase {
 
     // ------------------------------------------------------------------------
index c148c2469f057223dacab3f90e41805e157a710d..1b957a841643692c9cb83f5daa5dccc206df80ad 100644 (file)
@@ -18,7 +18,6 @@ import java.io.IOException;
 import java.net.URISyntaxException;
 import java.net.URL;
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.Vector;
 
 import junit.framework.TestCase;
@@ -26,7 +25,7 @@ import junit.framework.TestCase;
 import org.eclipse.core.runtime.FileLocator;
 import org.eclipse.core.runtime.Path;
 import org.eclipse.linuxtools.internal.tmf.core.component.TmfProviderManager;
-import org.eclipse.linuxtools.tmf.core.component.ITmfEventProvider;
+import org.eclipse.linuxtools.tmf.core.component.ITmfDataProvider;
 import org.eclipse.linuxtools.tmf.core.event.ITmfEvent;
 import org.eclipse.linuxtools.tmf.core.event.ITmfTimestamp;
 import org.eclipse.linuxtools.tmf.core.event.TmfEvent;
@@ -48,7 +47,7 @@ import org.eclipse.linuxtools.tmf.tests.stubs.trace.TmfTraceStub;
 /**
  * Test suite for the TmfTrace class.
  */
-@SuppressWarnings({"nls","javadoc", "deprecation"})
+@SuppressWarnings({"nls","javadoc"})
 public class TmfTraceTest extends TestCase {
 
     // ------------------------------------------------------------------------
@@ -1217,124 +1216,6 @@ public class TmfTraceTest extends TestCase {
         assertNull("Event", event);
     }
 
-    // ------------------------------------------------------------------------
-    // Iterate over trace
-    // ------------------------------------------------------------------------
-
-    public void testIterateOverAllEvents() {
-        final Vector<ITmfEvent> requestedEvents = new Vector<ITmfEvent>();
-
-        final ITmfEventProvider[] providers = TmfProviderManager.getProviders(TmfEvent.class, TmfTraceStub.class);
-        final ITmfTrace trace = (ITmfTrace) providers[0];
-        final Iterator<ITmfEvent> it = trace.iterator();
-        while (it.hasNext()) {
-            requestedEvents.add(it.next());
-        }
-
-        // Validate results
-        assertEquals("nbEvents", NB_EVENTS, requestedEvents.size());
-        for (int i = 0; i < NB_EVENTS; i++) {
-            assertEquals("Distinct events", i + 1, requestedEvents.get(i).getTimestamp().getValue());
-        }
-    }
-
-    public void testIterateOverNbEvents() {
-        final Vector<ITmfEvent> requestedEvents = new Vector<ITmfEvent>();
-        final int nbRequestedEvents = 100;
-
-        final ITmfEventProvider[] providers = TmfProviderManager.getProviders(TmfEvent.class, TmfTraceStub.class);
-        final ITmfTrace trace = (ITmfTrace) providers[0];
-        final Iterator<ITmfEvent> it = trace.iterator();
-        int nbEventsToRead = nbRequestedEvents;
-        while (it.hasNext() && nbEventsToRead-- > 0) {
-            requestedEvents.add(it.next());
-        }
-
-        // Validate results
-        assertEquals("nbEvents", nbRequestedEvents, requestedEvents.size());
-        for (int i = 0; i < nbRequestedEvents; i++) {
-            assertEquals("Distinct events", i + 1, requestedEvents.get(i).getTimestamp().getValue());
-        }
-    }
-
-    public void testIterateOverNbEventsByRank() {
-        final Vector<ITmfEvent> requestedEvents = new Vector<ITmfEvent>();
-        final int startEventRank = 100;
-        final int nbRequestedEvents = 100;
-
-        final ITmfEventProvider[] providers = TmfProviderManager.getProviders(TmfEvent.class, TmfTraceStub.class);
-        final ITmfTrace trace = (ITmfTrace) providers[0];
-        final Iterator<ITmfEvent> it = trace.iterator(startEventRank);
-        int nbEventsToRead = nbRequestedEvents;
-        while (it.hasNext() && nbEventsToRead-- > 0) {
-            requestedEvents.add(it.next());
-        }
-
-        // Validate results
-        assertEquals("nbEvents", nbRequestedEvents, requestedEvents.size());
-        for (int i = 0; i < nbRequestedEvents; i++) {
-            assertEquals("Distinct events", startEventRank + i + 1, requestedEvents.get(i).getTimestamp().getValue());
-        }
-    }
-
-    public void testIterateOverNbEventsByTimestamp() {
-        final Vector<ITmfEvent> requestedEvents = new Vector<ITmfEvent>();
-        final ITmfTimestamp startEventTimestamp = new TmfTimestamp(100, SCALE);
-        final int nbRequestedEvents = 100;
-
-        final ITmfEventProvider[] providers = TmfProviderManager.getProviders(TmfEvent.class, TmfTraceStub.class);
-        final ITmfTrace trace = (ITmfTrace) providers[0];
-        final Iterator<ITmfEvent> it = trace.iterator(startEventTimestamp);
-        int nbEventsToRead = nbRequestedEvents;
-        while (it.hasNext() && nbEventsToRead-- > 0) {
-            requestedEvents.add(it.next());
-        }
-
-        // Validate results
-        assertEquals("nbEvents", nbRequestedEvents, requestedEvents.size());
-        for (int i = 0; i < nbRequestedEvents; i++) {
-            assertEquals("Distinct events", startEventTimestamp.getValue() + i, requestedEvents.get(i).getTimestamp().getValue());
-        }
-    }
-
-    public void testIterateOverEventsMixed() {
-        final Vector<ITmfEvent> requestedEvents1 = new Vector<ITmfEvent>();
-        final Vector<ITmfEvent> requestedEvents2 = new Vector<ITmfEvent>();
-        final int nbRequestedEvents = 100;
-
-        final ITmfEventProvider[] providers = TmfProviderManager.getProviders(TmfEvent.class, TmfTraceStub.class);
-        final ITmfTrace trace = (ITmfTrace) providers[0];
-
-        final Iterator<ITmfEvent> it1 = trace.iterator();
-        final Iterator<ITmfEvent> it2 = trace.iterator();
-
-        int nbEventsToRead = nbRequestedEvents;
-        while (it1.hasNext() && nbEventsToRead-- > 0) {
-            requestedEvents1.add(it1.next());
-            if (nbEventsToRead % 2 == 0) {
-                requestedEvents2.add(it2.next());
-            }
-        }
-
-        // Intermediate validation
-        assertEquals("nbEvents", nbRequestedEvents, requestedEvents1.size());
-        assertEquals("nbEvents", nbRequestedEvents / 2, requestedEvents2.size());
-
-        // Finish the job
-        nbEventsToRead = nbRequestedEvents / 2;
-        while (it2.hasNext() && nbEventsToRead-- > 0) {
-            requestedEvents2.add(it2.next());
-        }
-
-        // Final validation
-        assertEquals("nbEvents", nbRequestedEvents, requestedEvents1.size());
-        assertEquals("nbEvents", nbRequestedEvents, requestedEvents2.size());
-        for (int i = 0; i < nbRequestedEvents; i++) {
-            assertEquals("Distinct events", i + 1, requestedEvents1.get(i).getTimestamp().getValue());
-            assertEquals("Distinct events", i + 1, requestedEvents2.get(i).getTimestamp().getValue());
-        }
-    }
-
     // ------------------------------------------------------------------------
     // processRequest
     // ------------------------------------------------------------------------
@@ -1352,7 +1233,7 @@ public class TmfTraceTest extends TestCase {
                 requestedEvents.add(event);
             }
         };
-        final ITmfEventProvider[] providers = TmfProviderManager.getProviders(TmfEvent.class, TmfTraceStub.class);
+        final ITmfDataProvider[] providers = TmfProviderManager.getProviders(TmfEvent.class, TmfTraceStub.class);
         providers[0].sendRequest(request);
         request.waitForCompletion();
 
@@ -1381,7 +1262,7 @@ public class TmfTraceTest extends TestCase {
                 requestedEvents.add(event);
             }
         };
-        final ITmfEventProvider[] providers = TmfProviderManager.getProviders(TmfEvent.class, TmfTraceStub.class);
+        final ITmfDataProvider[] providers = TmfProviderManager.getProviders(TmfEvent.class, TmfTraceStub.class);
         providers[0].sendRequest(request);
         request.waitForCompletion();
 
@@ -1411,7 +1292,7 @@ public class TmfTraceTest extends TestCase {
                 requestedEvents.add(event);
             }
         };
-        final ITmfEventProvider[] providers = TmfProviderManager.getProviders(TmfEvent.class, TmfTraceStub.class);
+        final ITmfDataProvider[] providers = TmfProviderManager.getProviders(TmfEvent.class, TmfTraceStub.class);
         providers[0].sendRequest(request);
         request.waitForCompletion();
 
@@ -1442,7 +1323,7 @@ public class TmfTraceTest extends TestCase {
                 requestedEvents.add(event);
             }
         };
-        final ITmfEventProvider[] providers = TmfProviderManager.getProviders(TmfEvent.class, TmfTraceStub.class);
+        final ITmfDataProvider[] providers = TmfProviderManager.getProviders(TmfEvent.class, TmfTraceStub.class);
         providers[0].sendRequest(request);
         request.waitForCompletion();
 
@@ -1470,7 +1351,7 @@ public class TmfTraceTest extends TestCase {
                 requestedEvents.add(event);
             }
         };
-        final ITmfEventProvider[] providers = TmfProviderManager.getProviders(TmfEvent.class, TmfTraceStub.class);
+        final ITmfDataProvider[] providers = TmfProviderManager.getProviders(TmfEvent.class, TmfTraceStub.class);
         providers[0].sendRequest(request);
         request.waitForCompletion();
 
@@ -1504,7 +1385,7 @@ public class TmfTraceTest extends TestCase {
                 }
             }
         };
-        final ITmfEventProvider[] providers = TmfProviderManager.getProviders(TmfEvent.class, TmfTraceStub.class);
+        final ITmfDataProvider[] providers = TmfProviderManager.getProviders(TmfEvent.class, TmfTraceStub.class);
         providers[0].sendRequest(request);
         request.waitForCompletion();
 
index 34f407cedd4cc1cbaf36fcf875b337270524c8f6..dfb0c05e5cd89f03bcfc3b107fde408dcab69a0c 100644 (file)
@@ -23,8 +23,8 @@ import org.eclipse.linuxtools.tmf.core.component.TmfDataProvider;
 import org.eclipse.linuxtools.tmf.core.event.ITmfEvent;
 import org.eclipse.linuxtools.tmf.core.event.TmfEvent;
 import org.eclipse.linuxtools.tmf.core.exceptions.TmfTraceException;
+import org.eclipse.linuxtools.tmf.core.request.ITmfDataRequest;
 import org.eclipse.linuxtools.tmf.core.request.ITmfEventRequest;
-import org.eclipse.linuxtools.tmf.core.request.ITmfRequest;
 import org.eclipse.linuxtools.tmf.core.tests.TmfCoreTestPlugin;
 import org.eclipse.linuxtools.tmf.core.trace.ITmfContext;
 import org.eclipse.linuxtools.tmf.tests.stubs.trace.TmfTraceStub;
@@ -34,7 +34,7 @@ import org.eclipse.linuxtools.tmf.tests.stubs.trace.TmfTraceStub;
  * <p>
  * TODO: Implement me. Please.
  */
-@SuppressWarnings({"nls","javadoc", "deprecation"})
+@SuppressWarnings({"nls","javadoc"})
 public class TmfDataProviderStub extends TmfDataProvider {
 
     private static final String DIRECTORY   = "testfiles";
@@ -64,7 +64,7 @@ public class TmfDataProviderStub extends TmfDataProvider {
     // ------------------------------------------------------------------------
 
     @Override
-    public ITmfContext armRequest(final ITmfRequest request) {
+    public ITmfContext armRequest(final ITmfDataRequest request) {
         if (request instanceof ITmfEventRequest) {
             final ITmfContext context = fTrace.seekEvent(((ITmfEventRequest) request).getRange().getStartTime());
             return context;
@@ -78,7 +78,7 @@ public class TmfDataProviderStub extends TmfDataProvider {
     }
 
     @Override
-    public boolean isCompleted(final ITmfRequest request, final ITmfEvent data, final int nbRead) {
+    public boolean isCompleted(final ITmfDataRequest request, final ITmfEvent data, final int nbRead) {
         return false;
     }
 
index e5c44e6d3bac810ebc53b75490cec5424f136483..66c2cb37cfd5ada8f7f5a69d875ce60b422675e2 100644 (file)
@@ -23,7 +23,8 @@ import org.eclipse.linuxtools.tmf.core.component.TmfEventProvider;
 import org.eclipse.linuxtools.tmf.core.event.ITmfEvent;
 import org.eclipse.linuxtools.tmf.core.event.TmfEvent;
 import org.eclipse.linuxtools.tmf.core.exceptions.TmfTraceException;
-import org.eclipse.linuxtools.tmf.core.request.ITmfRequest;
+import org.eclipse.linuxtools.tmf.core.request.ITmfDataRequest;
+import org.eclipse.linuxtools.tmf.core.request.ITmfEventRequest;
 import org.eclipse.linuxtools.tmf.core.tests.TmfCoreTestPlugin;
 import org.eclipse.linuxtools.tmf.core.trace.ITmfContext;
 import org.eclipse.linuxtools.tmf.tests.stubs.trace.TmfTraceStub;
@@ -69,9 +70,12 @@ public class TmfEventProviderStub extends TmfEventProvider {
     // ------------------------------------------------------------------------
 
     @Override
-    public ITmfContext armRequest(final ITmfRequest request) {
-        final ITmfContext context = fTrace.seekEvent(request.getTimeRange().getStartTime());
-        return context;
+    public ITmfContext armRequest(final ITmfDataRequest request) {
+        if (request instanceof ITmfEventRequest) {
+            final ITmfContext context = fTrace.seekEvent(((ITmfEventRequest) request).getRange().getStartTime());
+            return context;
+        }
+        return null;
     }
 
     @Override
index 824e89f79e96bc66164909b0e64dfc0b49baf4fd..29b889d11553c5f820e2840abd4b6b79235a81f5 100644 (file)
@@ -15,12 +15,13 @@ package org.eclipse.linuxtools.tmf.tests.stubs.component;
 import java.util.concurrent.TimeUnit;
 
 import org.eclipse.linuxtools.internal.tmf.core.component.TmfProviderManager;
-import org.eclipse.linuxtools.tmf.core.component.ITmfEventProvider;
+import org.eclipse.linuxtools.tmf.core.component.ITmfDataProvider;
 import org.eclipse.linuxtools.tmf.core.component.TmfEventProvider;
 import org.eclipse.linuxtools.tmf.core.event.ITmfEvent;
 import org.eclipse.linuxtools.tmf.core.event.TmfEvent;
 import org.eclipse.linuxtools.tmf.core.event.TmfTimeRange;
-import org.eclipse.linuxtools.tmf.core.request.ITmfRequest;
+import org.eclipse.linuxtools.tmf.core.request.ITmfDataRequest;
+import org.eclipse.linuxtools.tmf.core.request.ITmfEventRequest;
 import org.eclipse.linuxtools.tmf.core.request.TmfEventRequest;
 import org.eclipse.linuxtools.tmf.core.trace.ITmfContext;
 import org.eclipse.linuxtools.tmf.core.trace.TmfContext;
@@ -31,7 +32,7 @@ import org.eclipse.linuxtools.tmf.tests.stubs.event.TmfSyntheticEventStub;
  * <p>
  * TODO: Implement me. Please.
  */
-@SuppressWarnings({"nls","javadoc", "deprecation"})
+@SuppressWarnings({"nls","javadoc"})
 public class TmfSyntheticEventProviderStub extends TmfEventProvider {
 
     public static final int BLOCK_SIZE = 100;
@@ -42,11 +43,17 @@ public class TmfSyntheticEventProviderStub extends TmfEventProvider {
     }
 
     @Override
-    public ITmfContext armRequest(final ITmfRequest request) {
+    public ITmfContext armRequest(final ITmfDataRequest request) {
 
         // Get the TmfSyntheticEventStub provider
-        final ITmfEventProvider[] eventProviders = TmfProviderManager.getProviders(TmfEvent.class, TmfEventProviderStub.class);
-        final ITmfEventProvider provider = eventProviders[0];
+        final ITmfDataProvider[] eventProviders = TmfProviderManager.getProviders(TmfEvent.class, TmfEventProviderStub.class);
+        final ITmfDataProvider provider = eventProviders[0];
+
+        // make sure we have the right type of request
+        if (!(request instanceof ITmfEventRequest)) {
+            request.cancel();
+            return null;
+        }
 
         final TmfEventRequest eventRequest = (TmfEventRequest) request;
         final TmfTimeRange range = eventRequest.getRange();
index 48c38d731dbd499c00deab2179c6486b03d6e1f6..545b803fa4575d95f19e8f5ef70f966b616c80da 100644 (file)
@@ -18,7 +18,6 @@ import org.eclipse.linuxtools.tmf.core.request.TmfDataRequest;
 /**
  *
  */
-@SuppressWarnings("deprecation")
 public class TmfDataRequestStub extends TmfDataRequest {
 
     /**
index 79192c0eaab6a66d709b2511fe8fa64868359217..3e2ba6a74b9c1582eb8e1d5e533868796d970e5a 100644 (file)
@@ -70,7 +70,7 @@ public class TmfEventRequestStub extends TmfEventRequest {
      * @see org.eclipse.linuxtools.tmf.core.request.TmfDataRequest#handleData(org.eclipse.linuxtools.tmf.core.event.ITmfEvent)
      */
     @Override
-    public synchronized void handleEvent(final ITmfEvent data) {
-        super.handleEvent(data);
+    public void handleData(final ITmfEvent data) {
+        super.handleData(data);
     }
 }
diff --git a/org.eclipse.linuxtools.tmf.core.tests/stubs/org/eclipse/linuxtools/tmf/tests/stubs/request/TmfRequestStub.java b/org.eclipse.linuxtools.tmf.core.tests/stubs/org/eclipse/linuxtools/tmf/tests/stubs/request/TmfRequestStub.java
deleted file mode 100644 (file)
index 68ca3b5..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2012 Ericsson
- *
- * 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *   Francois Chouinard - Initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.linuxtools.tmf.tests.stubs.request;
-
-import org.eclipse.linuxtools.tmf.core.event.ITmfEvent;
-import org.eclipse.linuxtools.tmf.core.event.TmfTimeRange;
-import org.eclipse.linuxtools.tmf.core.request.TmfRequest;
-
-/**
- * <b><u>TmfRequestStub</u></b>
- */
-public class TmfRequestStub extends TmfRequest {
-
-    /**
-     * Constructor for all the events at normal priority
-     */
-    public TmfRequestStub() {
-        super();
-    }
-
-    /**
-     * Constructor for all the events at the specified  priority
-     *
-     * @param priority the request priority
-     */
-    public TmfRequestStub(TmfRequestPriority priority) {
-        super(priority);
-    }
-
-    /**
-     * Constructor for all the events in a time range
-     *
-     * @param timeRange The time range
-     */
-    public TmfRequestStub(TmfTimeRange timeRange) {
-        super(timeRange);
-    }
-
-    /**
-     * Constructor for all the events in a block
-     *
-     * @param startIndex  The start index
-     * @param nbRequested The number of events requested
-     */
-    public TmfRequestStub(long startIndex, long nbRequested) {
-        super(startIndex, nbRequested);
-    }
-
-    /**
-     * Standard constructor
-     *
-     * @param timeRange   The time range
-     * @param startIndex  The start index
-     * @param nbRequested The number of events requested
-     */
-    public TmfRequestStub(TmfTimeRange timeRange, long startIndex, long nbRequested) {
-        super(timeRange, startIndex, nbRequested);
-    }
-
-    /**
-     * Full constructor
-     *
-     * @param timeRange   Time range of interest
-     * @param nbRequested Number of events requested
-     * @param startIndex  Index of the first event requested
-     * @param priority    Request priority
-     */
-    public TmfRequestStub(TmfTimeRange timeRange, long startIndex, long nbRequested, TmfRequestPriority priority) {
-        super(timeRange, startIndex, nbRequested, priority);
-    }
-
-    /**
-     * Copy constructor
-     *
-     * @param other the other request
-     */
-    public TmfRequestStub(TmfRequestStub other) {
-        super(other);
-    }
-
-    /**
-     * @param timeRange the time range
-     */
-    @Override
-    public void setTimeRange(TmfTimeRange timeRange) {
-        super.setTimeRange(timeRange);
-    }
-
-    /**
-     * @param nbRequested the number of events requested
-     */
-    @Override
-    public void setNbRequested(long nbRequested) {
-        super.setNbRequested(nbRequested);
-    }
-
-    /**
-     * @param index the index of the first event requested
-     */
-    @Override
-    public void setStartIndex(long index) {
-        super.setStartIndex(index);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.linuxtools.tmf.core.request.TmfRequest#handleEvent(org.eclipse.linuxtools.tmf.core.event.ITmfEvent)
-     */
-    @Override
-    public synchronized void handleEvent(final ITmfEvent data) {
-        super.handleEvent(data);
-    }
-}
index 040ce9f8f7bfae2873aae99f2bbb0b484490fd4a..0dfd93ef6ed9ee243824487623ccb842b4db19ce 100644 (file)
@@ -106,7 +106,7 @@ public class TmfEventParserStub implements ITmfEventParser {
                 content.append("]");
 
                 final TmfEventField root = new TmfEventField(ITmfEventField.ROOT_FIELD_ID, content.toString());
-                final TmfEvent event = new TmfEvent(fEventStream, context.getRank(),
+                final TmfEvent event = new TmfEvent(fEventStream,
                         new TmfTimestamp(ts, -3, 0),     // millisecs
                         source, fTypes[typeIndex], root, reference.toString());
                 return event;
index 67b774831ae9d22fb36499cd5d14b58adeffffcc..54b6ac1870eab2cb708ab005d91156684180208a 100644 (file)
@@ -18,9 +18,9 @@ import java.io.IOException;
 
 import org.eclipse.core.runtime.Platform;
 import org.eclipse.linuxtools.tmf.core.component.ITmfComponent;
-import org.eclipse.linuxtools.tmf.core.component.ITmfEventProvider;
+import org.eclipse.linuxtools.tmf.core.component.ITmfDataProvider;
 import org.eclipse.linuxtools.tmf.core.event.ITmfEvent;
-import org.eclipse.linuxtools.tmf.core.request.ITmfRequest;
+import org.eclipse.linuxtools.tmf.core.request.ITmfDataRequest;
 import org.eclipse.linuxtools.tmf.core.signal.TmfSignal;
 
 /**
@@ -38,8 +38,8 @@ import org.eclipse.linuxtools.tmf.core.signal.TmfSignal;
  * <li><strong>Event</strong>: TMF trace events
  * </ul>
  *
- * @author Francois Chouinard
  * @version 1.0
+ * @author Francois Chouinard
  */
 @SuppressWarnings("nls")
 public class TmfCoreTracer {
@@ -69,7 +69,7 @@ public class TmfCoreTracer {
     static Boolean EVENT_CLASS_ENABLED     = Boolean.FALSE;
 
     // Trace log file
-    private static volatile BufferedWriter fTraceFile;
+    private static BufferedWriter fTraceFile;
 
     // ------------------------------------------------------------------------
     // Start/stop tracing - controlled by the plug-in
@@ -209,7 +209,7 @@ public class TmfCoreTracer {
     }
 
     @SuppressWarnings("javadoc")
-    public static void traceRequest(ITmfRequest request, String msg) {
+    public static void traceRequest(ITmfDataRequest request, String msg) {
         if (REQUEST_CLASS_ENABLED) {
             String message = ("[REQ] Req=" + request.getRequestId() + " " + msg);
             trace(message);
@@ -226,7 +226,7 @@ public class TmfCoreTracer {
     }
 
     @SuppressWarnings("javadoc")
-    public static void traceEvent(ITmfEventProvider provider, ITmfRequest request, ITmfEvent event) {
+    public static void traceEvent(ITmfDataProvider provider, ITmfDataRequest request, ITmfEvent event) {
         if (EVENT_CLASS_ENABLED) {
             String message = ("[EVT] Provider=" + provider.toString()
                     + ", Req=" + request.getRequestId() + ", Event=" + event.getTimestamp());
index 8052acee7c49b6e6752d924a2f1da26a8f11f737..97c95cbdc641e2539422df51974eeba540afbd66 100644 (file)
 package org.eclipse.linuxtools.internal.tmf.core.component;
 
 import org.eclipse.linuxtools.internal.tmf.core.TmfCoreTracer;
-import org.eclipse.linuxtools.tmf.core.component.ITmfEventProvider;
+import org.eclipse.linuxtools.tmf.core.component.ITmfDataProvider;
 import org.eclipse.linuxtools.tmf.core.component.TmfDataProvider;
 import org.eclipse.linuxtools.tmf.core.event.ITmfEvent;
-import org.eclipse.linuxtools.tmf.core.request.ITmfRequest;
-import org.eclipse.linuxtools.tmf.core.request.ITmfRequest.TmfRequestPriority;
+import org.eclipse.linuxtools.tmf.core.request.ITmfDataRequest;
+import org.eclipse.linuxtools.tmf.core.request.ITmfDataRequest.ExecutionType;
 import org.eclipse.linuxtools.tmf.core.trace.ITmfContext;
 
 /**
@@ -41,12 +41,12 @@ public class TmfEventThread implements Runnable {
     /**
      * The wrapped event request
      */
-    private final ITmfRequest fRequest;
+    private final ITmfDataRequest fRequest;
 
     /**
      * The request execution priority
      */
-    private final TmfRequestPriority fExecType;
+    private final ExecutionType   fExecType;
 
     /**
      * The wrapped thread (if applicable)
@@ -74,12 +74,12 @@ public class TmfEventThread implements Runnable {
      * @param provider the event provider
      * @param request the request to process
      */
-    public TmfEventThread(TmfDataProvider provider, ITmfRequest request) {
+    public TmfEventThread(TmfDataProvider provider, ITmfDataRequest request) {
         assert provider != null;
         assert request  != null;
         fProvider = provider;
         fRequest  = request;
-        fExecType = request.getRequestPriority();
+        fExecType = request.getExecType();
         fThread   = null;
     }
 
@@ -109,21 +109,21 @@ public class TmfEventThread implements Runnable {
     /**
      * @return The event provider
      */
-    public ITmfEventProvider getProvider() {
+    public ITmfDataProvider getProvider() {
         return fProvider;
     }
 
     /**
      * @return The event request
      */
-    public ITmfRequest getRequest() {
+    public ITmfDataRequest getRequest() {
         return fRequest;
     }
 
     /**
      * @return The request execution priority
      */
-    public TmfRequestPriority getExecType() {
+    public ExecutionType getExecType() {
         return fExecType;
     }
 
@@ -155,7 +155,7 @@ public class TmfEventThread implements Runnable {
 
         // Extract the generic information
         fRequest.start();
-        long nbRequested = fRequest.getNbRequested();
+        int nbRequested = fRequest.getNbRequested();
         int nbRead = 0;
         isCompleted = false;
 
@@ -172,10 +172,10 @@ public class TmfEventThread implements Runnable {
             TmfCoreTracer.traceRequest(fRequest, "read first event"); //$NON-NLS-1$
 
             while (event != null && !fProvider.isCompleted(fRequest, event, nbRead)) {
-                while (isPaused) {
+                if (isPaused) {
                     try {
-                        synchronized (object) {
-                            if (isPaused) {
+                        while (isPaused) {
+                            synchronized (object) {
                                 object.wait();
                             }
                         }
@@ -184,7 +184,9 @@ public class TmfEventThread implements Runnable {
                 }
 
                 TmfCoreTracer.traceEvent(fProvider, fRequest, event);
-                fRequest.handleEvent(event);
+                if (fRequest.getDataType().isInstance(event)) {
+                    fRequest.handleData(event);
+                }
 
                 // To avoid an unnecessary read passed the last event requested
                 if (++nbRead < nbRequested) {
diff --git a/org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/internal/tmf/core/request/TmfCoalescedDataRequest.java b/org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/internal/tmf/core/request/TmfCoalescedDataRequest.java
new file mode 100644 (file)
index 0000000..d8a2e3b
--- /dev/null
@@ -0,0 +1,350 @@
+/*******************************************************************************
+ * Copyright (c) 2009, 2010 Ericsson
+ *
+ * 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
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *   Francois Chouinard - Initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.linuxtools.internal.tmf.core.request;
+
+import java.util.Vector;
+
+import org.eclipse.linuxtools.tmf.core.event.ITmfEvent;
+import org.eclipse.linuxtools.tmf.core.request.ITmfDataRequest;
+import org.eclipse.linuxtools.tmf.core.request.TmfDataRequest;
+
+/**
+ * The TMF coalesced data request
+ *
+ * @version 1.0
+ * @author Francois Chouinard
+ */
+public class TmfCoalescedDataRequest extends TmfDataRequest {
+
+    // ------------------------------------------------------------------------
+    // Attributes
+    // ------------------------------------------------------------------------
+
+       /**
+        * The list of coalesced requests
+        */
+       protected Vector<ITmfDataRequest> fRequests = new Vector<ITmfDataRequest>();
+
+    // ------------------------------------------------------------------------
+    // Constructor
+    // ------------------------------------------------------------------------
+
+    /**
+     * Request all the events of a given type (high priority)
+     * Events are returned in blocks of the default size (DEFAULT_BLOCK_SIZE).
+     *
+     * @param dataType the requested data type
+     */
+    public TmfCoalescedDataRequest(Class<? extends ITmfEvent> dataType) {
+        this(dataType, 0, ALL_DATA, DEFAULT_BLOCK_SIZE, ExecutionType.FOREGROUND);
+    }
+
+    /**
+     * Request all the events of a given type (given priority)
+     * Events are returned in blocks of the default size (DEFAULT_BLOCK_SIZE).
+     *
+     * @param dataType the requested data type
+     * @param priority the requested execution priority
+     */
+    public TmfCoalescedDataRequest(Class<? extends ITmfEvent> dataType, ExecutionType priority) {
+        this(dataType, 0, ALL_DATA, DEFAULT_BLOCK_SIZE, priority);
+    }
+
+    /**
+     * Request all the events of a given type from the given index (high priority)
+     * Events are returned in blocks of the default size (DEFAULT_BLOCK_SIZE).
+     *
+     * @param dataType the requested data type
+     * @param index the index of the first event to retrieve
+     */
+    public TmfCoalescedDataRequest(Class<? extends ITmfEvent> dataType, long index) {
+        this(dataType, index, ALL_DATA, DEFAULT_BLOCK_SIZE, ExecutionType.FOREGROUND);
+    }
+
+    /**
+     * Request all the events of a given type from the given index (given priority)
+     * Events are returned in blocks of the default size (DEFAULT_BLOCK_SIZE).
+     *
+     * @param dataType the requested data type
+     * @param index the index of the first event to retrieve
+     * @param priority the requested execution priority
+     */
+    public TmfCoalescedDataRequest(Class<? extends ITmfEvent> dataType, long index, ExecutionType priority) {
+        this(dataType, index, ALL_DATA, DEFAULT_BLOCK_SIZE, priority);
+    }
+
+    /**
+     * Request 'n' events of a given type from the given index (high priority)
+     * Events are returned in blocks of the default size (DEFAULT_BLOCK_SIZE).
+     *
+     * @param dataType the requested data type
+     * @param index the index of the first event to retrieve
+     * @param nbRequested the number of events requested
+     */
+    public TmfCoalescedDataRequest(Class<? extends ITmfEvent> dataType, long index, int nbRequested) {
+        this(dataType, index, nbRequested, DEFAULT_BLOCK_SIZE, ExecutionType.FOREGROUND);
+    }
+
+    /**
+     * Request 'n' events of a given type from the given index (given priority)
+     * Events are returned in blocks of the default size (DEFAULT_BLOCK_SIZE).
+     *
+     * @param dataType the requested data type
+     * @param index the index of the first event to retrieve
+     * @param nbRequested the number of events requested
+     * @param priority the requested execution priority
+     */
+    public TmfCoalescedDataRequest(Class<? extends ITmfEvent> dataType, long index, int nbRequested, ExecutionType priority) {
+        this(dataType, index, nbRequested, DEFAULT_BLOCK_SIZE, priority);
+    }
+
+    /**
+     * Request 'n' events of a given type from the given index (high priority).
+     * Events are returned in blocks of the given size.
+     *
+     * @param dataType the requested data type
+     * @param index the index of the first event to retrieve
+     * @param nbRequested the number of events requested
+     * @param blockSize the number of events per block
+     */
+    public TmfCoalescedDataRequest(Class<? extends ITmfEvent> dataType, long index, int nbRequested, int blockSize) {
+        super(ITmfEvent.class, index, nbRequested, blockSize, ExecutionType.FOREGROUND);
+    }
+
+    /**
+     * Request 'n' events of a given type from the given index (given priority).
+     * Events are returned in blocks of the given size.
+     *
+     * @param dataType the requested data type
+     * @param index the index of the first event to retrieve
+     * @param nbRequested the number of events requested
+     * @param blockSize the number of events per block
+     * @param priority the requested execution priority
+     */
+    public TmfCoalescedDataRequest(Class<? extends ITmfEvent> dataType, long index, int nbRequested, int blockSize, ExecutionType priority) {
+        super(ITmfEvent.class, index, nbRequested, blockSize, priority);
+    }
+
+    // ------------------------------------------------------------------------
+    // Management
+    // ------------------------------------------------------------------------
+
+    /**
+     * Add a request to this one.
+     *
+     * @param request The request to add
+     */
+    public void addRequest(ITmfDataRequest request) {
+        fRequests.add(request);
+        merge(request);
+    }
+
+    /**
+     * Check if a request is compatible with the current coalesced one
+     *
+     * @param request
+     *            The request to verify
+     * @return If the request is compatible, true or false
+     */
+    public boolean isCompatible(ITmfDataRequest request) {
+        if (request.getExecType() == getExecType()) {
+            return overlaps(request);
+        }
+        return false;
+    }
+
+    private boolean overlaps(ITmfDataRequest request) {
+        long start = request.getIndex();
+        long end = start + request.getNbRequested();
+
+        // Return true if either the start or end index falls within
+        // the coalesced request boundaries
+        return (start <= (fIndex + fNbRequested + 1) && (end >= fIndex - 1));
+    }
+
+    private void merge(ITmfDataRequest request) {
+        long start = request.getIndex();
+        long end = Math.min(start + request.getNbRequested(), TmfDataRequest.ALL_DATA);
+
+        if (start < fIndex) {
+            if (fNbRequested != TmfDataRequest.ALL_DATA) {
+                fNbRequested += (fIndex - start);
+            }
+            fIndex = start;
+        }
+        if ((request.getNbRequested() == TmfDataRequest.ALL_DATA) ||
+             (fNbRequested == TmfDataRequest.ALL_DATA))
+        {
+            fNbRequested = TmfDataRequest.ALL_DATA;
+        } else {
+            fNbRequested = (int) Math.max(end - fIndex, fNbRequested);
+        }
+    }
+
+       /**
+        * @return The list of IDs of the sub-requests
+        */
+       @SuppressWarnings("nls")
+    public String getSubRequestIds() {
+           StringBuffer result = new StringBuffer("[");
+           for (int i = 0; i < fRequests.size(); i++) {
+               if (i != 0) {
+                result.append(", ");
+            }
+               result.append(fRequests.get(i).getRequestId());
+           }
+           result.append("]");
+           return result.toString();
+       }
+
+    // ------------------------------------------------------------------------
+    // ITmfDataRequest
+    // ------------------------------------------------------------------------
+
+    @Override
+       public void handleData(ITmfEvent data) {
+               super.handleData(data);
+       // Don't call sub-requests handleData() unless this is a
+               // TmfCoalescedDataRequest; extended classes should call
+               // the sub-requests handleData().
+               if (getClass() == TmfCoalescedDataRequest.class) {
+                   long index = getIndex() + getNbRead() - 1;
+               for (ITmfDataRequest request : fRequests) {
+                   if (!request.isCompleted()) {
+                    if (request.getDataType().isInstance(data)) {
+                        long start = request.getIndex();
+                        long end = start + request.getNbRequested();
+                        if (index >= start && index < end) {
+                            request.handleData(data);
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    @Override
+    public void start() {
+        for (ITmfDataRequest request : fRequests) {
+            if (!request.isCompleted()) {
+                request.start();
+            }
+        }
+        super.start();
+    }
+
+       @Override
+    public void done() {
+       for (ITmfDataRequest request : fRequests) {
+           if (!request.isCompleted()) {
+               request.done();
+           }
+       }
+       super.done();
+    }
+
+    @Override
+    public void fail() {
+       for (ITmfDataRequest request : fRequests) {
+               request.fail();
+       }
+       super.fail();
+    }
+
+    @Override
+    public void cancel() {
+       for (ITmfDataRequest request : fRequests) {
+           if (!request.isCompleted()) {
+               request.cancel();
+           }
+       }
+       super.cancel();
+    }
+
+    @Override
+    public synchronized boolean isCompleted() {
+        // Firstly, check if coalescing request is completed
+        if (super.isCompleted()) {
+            return true;
+        }
+
+        // Secondly, check if all sub-requests are finished
+        if (fRequests.size() > 0) {
+            // If all sub requests are completed the coalesced request is
+            // treated as completed, too.
+            for (ITmfDataRequest request : fRequests) {
+                if (!request.isCompleted()) {
+                    return false;
+                }
+            }
+            return true;
+        }
+
+        // Coalescing request is not finished if there are no sub-requests
+        return false;
+    }
+
+    @Override
+    public synchronized boolean isCancelled() {
+        // Firstly, check if coalescing request is canceled
+        if (super.isCancelled()) {
+            return true;
+        }
+
+        // Secondly, check if all sub-requests are canceled
+        if (fRequests.size() > 0) {
+            // If all sub requests are canceled the coalesced request is
+            // treated as completed, too.
+            for (ITmfDataRequest request : fRequests) {
+                if (!request.isCancelled()) {
+                    return false;
+                }
+            }
+            return true;
+        }
+
+        // Coalescing request is not canceled if there are no sub-requests
+        return false;
+
+    }
+
+
+    // ------------------------------------------------------------------------
+    // Object
+    // ------------------------------------------------------------------------
+
+    @Override
+    // All requests have a unique id
+    public int hashCode() {
+       return super.hashCode();
+    }
+
+    @Override
+    public boolean equals(Object other) {
+       if (other instanceof TmfCoalescedDataRequest) {
+               TmfCoalescedDataRequest request = (TmfCoalescedDataRequest) other;
+                       return  (request.getDataType()    == getDataType())   &&
+                                       (request.getIndex()       == getIndex())      &&
+                                       (request.getNbRequested() == getNbRequested() &&
+                               (request.getExecType()    == getExecType()));
+               }
+               return false;
+    }
+
+    @Override
+    @SuppressWarnings("nls")
+    public String toString() {
+               return "[TmfCoalescedDataRequest(" + getRequestId() + "," + getDataType().getSimpleName()
+                       + "," + getIndex() + "," + getNbRequested() + "," + getBlockSize() + ")]";
+    }
+}
diff --git a/org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/internal/tmf/core/request/TmfCoalescedEventRequest.java b/org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/internal/tmf/core/request/TmfCoalescedEventRequest.java
new file mode 100644 (file)
index 0000000..80f1ae8
--- /dev/null
@@ -0,0 +1,287 @@
+/*******************************************************************************
+ * Copyright (c) 2009, 2010 Ericsson
+ *
+ * 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
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *   Francois Chouinard - Initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.linuxtools.internal.tmf.core.request;
+
+import org.eclipse.linuxtools.internal.tmf.core.TmfCoreTracer;
+import org.eclipse.linuxtools.tmf.core.event.ITmfEvent;
+import org.eclipse.linuxtools.tmf.core.event.ITmfTimestamp;
+import org.eclipse.linuxtools.tmf.core.event.TmfTimeRange;
+import org.eclipse.linuxtools.tmf.core.request.ITmfDataRequest;
+import org.eclipse.linuxtools.tmf.core.request.ITmfEventRequest;
+import org.eclipse.linuxtools.tmf.core.request.TmfDataRequest;
+
+/**
+ * The TMF coalesced event request
+ *
+ * @version 1.0
+ * @author Francois Chouinard
+ */
+public class TmfCoalescedEventRequest extends TmfCoalescedDataRequest implements ITmfEventRequest {
+
+    // ------------------------------------------------------------------------
+    // Attributes
+    // ------------------------------------------------------------------------
+
+       private TmfTimeRange fRange;    // The requested events time range
+
+    // ------------------------------------------------------------------------
+    // Constructor
+    // ------------------------------------------------------------------------
+
+    /**
+     * Request all the events of a given type (high priority)
+     * Events are returned in blocks of the default size (DEFAULT_BLOCK_SIZE).
+     *
+     * @param dataType the requested data type
+     */
+    public TmfCoalescedEventRequest(Class<? extends ITmfEvent> dataType) {
+        this(dataType, TmfTimeRange.ETERNITY, ALL_DATA, DEFAULT_BLOCK_SIZE, ExecutionType.FOREGROUND);
+    }
+
+    /**
+     * Request all the events of a given type (given priority)
+     * Events are returned in blocks of the default size (DEFAULT_BLOCK_SIZE).
+     *
+     * @param dataType the requested data type
+     * @param priority the requested execution priority
+     */
+    public TmfCoalescedEventRequest(Class<? extends ITmfEvent> dataType, ExecutionType priority) {
+        this(dataType, TmfTimeRange.ETERNITY, ALL_DATA, DEFAULT_BLOCK_SIZE, priority);
+    }
+
+    /**
+     * Request all the events of a given type for the given time range (high priority)
+     * Events are returned in blocks of the default size (DEFAULT_BLOCK_SIZE).
+     *
+     * @param dataType the requested data type
+     * @param range the time range of the requested events
+     */
+    public TmfCoalescedEventRequest(Class<? extends ITmfEvent> dataType, TmfTimeRange range) {
+        this(dataType, range, ALL_DATA, DEFAULT_BLOCK_SIZE, ExecutionType.FOREGROUND);
+    }
+
+    /**
+     * Request all the events of a given type for the given time range (given priority)
+     * Events are returned in blocks of the default size (DEFAULT_BLOCK_SIZE).
+     *
+     * @param dataType the requested data type
+     * @param range the time range of the requested events
+     * @param priority the requested execution priority
+     */
+    public TmfCoalescedEventRequest(Class<? extends ITmfEvent> dataType, TmfTimeRange range, ExecutionType priority) {
+        this(dataType, range, ALL_DATA, DEFAULT_BLOCK_SIZE, priority);
+    }
+
+    /**
+     * Request 'n' events of a given type from the given time range (high priority)
+     * Events are returned in blocks of the default size (DEFAULT_BLOCK_SIZE).
+     *
+     * @param dataType the requested data type
+     * @param range the time range of the requested events
+     * @param nbRequested the number of events requested
+     */
+    public TmfCoalescedEventRequest(Class<? extends ITmfEvent> dataType, TmfTimeRange range, int nbRequested) {
+        this(dataType, range, nbRequested, DEFAULT_BLOCK_SIZE, ExecutionType.FOREGROUND);
+    }
+
+    /**
+     * Request 'n' events of a given type for the given time range (given priority)
+     * Events are returned in blocks of the default size (DEFAULT_BLOCK_SIZE).
+     *
+     * @param dataType the requested data type
+     * @param range the time range of the requested events
+     * @param nbRequested the number of events requested
+     * @param priority the requested execution priority
+     */
+    public TmfCoalescedEventRequest(Class<? extends ITmfEvent> dataType, TmfTimeRange range, int nbRequested, ExecutionType priority) {
+        this(dataType, range, nbRequested, DEFAULT_BLOCK_SIZE, priority);
+    }
+
+    /**
+     * Request 'n' events of a given type for the given time range (high priority).
+     * Events are returned in blocks of the given size.
+     *
+     * @param dataType the requested data type
+     * @param range the time range of the requested events
+     * @param nbRequested the number of events requested
+     * @param blockSize the number of events per block
+     */
+    public TmfCoalescedEventRequest(Class<? extends ITmfEvent> dataType, TmfTimeRange range, int nbRequested, int blockSize) {
+        this(dataType, range, 0, nbRequested, blockSize, ExecutionType.FOREGROUND);
+    }
+
+    /**
+     * Request 'n' events of a given type for the given time range (given priority).
+     * Events are returned in blocks of the given size.
+     *
+     * @param dataType the requested data type
+     * @param range the time range of the requested events
+     * @param nbRequested the number of events requested
+     * @param blockSize the number of events per block
+     * @param priority the requested execution priority
+     */
+    public TmfCoalescedEventRequest(Class<? extends ITmfEvent> dataType, TmfTimeRange range, int nbRequested, int blockSize, ExecutionType priority) {
+        this(dataType, range, 0, nbRequested, blockSize, priority);
+    }
+
+    /**
+     * Request 'n' events of a given type for the given time range (given priority).
+     * Events are returned in blocks of the given size.
+     *
+     * @param dataType the requested data type
+     * @param range the time range of the requested events
+     * @param index the index of the first event to retrieve
+     * @param nbRequested the number of events requested
+     * @param blockSize the number of events per block
+     * @param priority the requested execution priority
+     */
+    public TmfCoalescedEventRequest(Class<? extends ITmfEvent> dataType, TmfTimeRange range, long index, int nbRequested, int blockSize, ExecutionType priority) {
+        super(ITmfEvent.class, index, nbRequested, blockSize, priority);
+        fRange = range;
+
+        if (TmfCoreTracer.isRequestTraced()) {
+            String type = getClass().getName();
+            type = type.substring(type.lastIndexOf('.') + 1);
+            @SuppressWarnings("nls")
+            String message = "CREATED "
+                    + (getExecType() == ITmfDataRequest.ExecutionType.BACKGROUND ? "(BG)" : "(FG)")
+                    + " Type=" + type + " Index=" + getIndex() + " NbReq=" + getNbRequested()
+                    + " Range=" + getRange()
+                    + " DataType=" + getDataType().getSimpleName();
+            TmfCoreTracer.traceRequest(this, message);
+        }
+    }
+
+    // ------------------------------------------------------------------------
+    // Management
+    // ------------------------------------------------------------------------
+
+    @Override
+    public void addRequest(ITmfDataRequest request) {
+        super.addRequest(request);
+        if (request instanceof ITmfEventRequest) {
+            merge((ITmfEventRequest) request);
+        }
+    }
+
+       @Override
+       public boolean isCompatible(ITmfDataRequest request) {
+           if (request instanceof ITmfEventRequest) {
+               if (super.isCompatible(request)) {
+                   return overlaps((ITmfEventRequest) request);
+               }
+           }
+           return false;
+       }
+
+    private boolean overlaps(ITmfEventRequest request) {
+        ITmfTimestamp startTime = request.getRange().getStartTime();
+        ITmfTimestamp endTime   = request.getRange().getEndTime();
+        return (startTime.compareTo(endTime) <= 0) && (fRange.getStartTime().compareTo(fRange.getEndTime()) <= 0);
+    }
+
+    private void merge(ITmfEventRequest request) {
+        ITmfTimestamp startTime = request.getRange().getStartTime();
+        ITmfTimestamp endTime   = request.getRange().getEndTime();
+        if (!fRange.contains(startTime) && fRange.getStartTime().compareTo(startTime) > 0) {
+            fRange = new TmfTimeRange(startTime, fRange.getEndTime());
+        }
+        if (!fRange.contains(endTime) && fRange.getEndTime().compareTo(endTime) < 0) {
+            fRange = new TmfTimeRange(fRange.getStartTime(), endTime);
+        }
+    }
+
+    // ------------------------------------------------------------------------
+    // ITmfDataRequest
+    // ------------------------------------------------------------------------
+
+    @Override
+    public void handleData(ITmfEvent data) {
+        super.handleData(data);
+        long index = getIndex() + getNbRead() - 1;
+        for (ITmfDataRequest request : fRequests) {
+            if (data == null) {
+                request.handleData(null);
+            } else {
+                long start = request.getIndex();
+                long end = start + request.getNbRequested();
+                if (request instanceof ITmfEventRequest) {
+                    ITmfEventRequest req = (ITmfEventRequest) request;
+                    if (!req.isCompleted() && index >= start && index < end) {
+                        ITmfTimestamp ts = data.getTimestamp();
+                        if (req.getRange().contains(ts)) {
+                            if (req.getDataType().isInstance(data)) {
+                                req.handleData(data);
+                            }
+                        }
+                    }
+                }
+                else {
+                    TmfDataRequest req = (TmfDataRequest) request;
+                    if (!req.isCompleted() && index >= start && index < end) {
+                        if (req.getDataType().isInstance(data)) {
+                            req.handleData(data);
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    // ------------------------------------------------------------------------
+    // ITmfEventRequest
+    // ------------------------------------------------------------------------
+
+       @Override
+       public TmfTimeRange getRange() {
+               return fRange;
+       }
+
+       @Override
+       public void setStartIndex(int index) {
+               setIndex(index);
+       }
+
+    // ------------------------------------------------------------------------
+    // Object
+    // ------------------------------------------------------------------------
+
+    @Override
+    // All requests have a unique id
+    public int hashCode() {
+       return super.hashCode();
+    }
+
+    @Override
+    public boolean equals(Object other) {
+       if (other instanceof TmfCoalescedEventRequest) {
+               TmfCoalescedEventRequest request = (TmfCoalescedEventRequest) other;
+                       return  (request.getDataType()    == getDataType()) &&
+                                       (request.getIndex()       == getIndex())    &&
+                                       (request.getNbRequested() == getNbRequested()) &&
+                               (request.getRange().equals(getRange()));
+               }
+       if (other instanceof TmfCoalescedDataRequest) {
+                       return super.equals(other);
+       }
+               return false;
+    }
+
+    @Override
+    @SuppressWarnings("nls")
+    public String toString() {
+               return "[TmfCoalescedEventRequest(" + getRequestId() + "," + getDataType().getSimpleName()
+                       + "," + getRange() + "," + getIndex() + "," + getNbRequested() + "," + getBlockSize() + ")]";
+    }
+
+}
diff --git a/org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/internal/tmf/core/request/TmfCoalescedRequest.java b/org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/internal/tmf/core/request/TmfCoalescedRequest.java
deleted file mode 100644 (file)
index 3b3fdc6..0000000
+++ /dev/null
@@ -1,412 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2012 Ericsson
- *
- * 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *   Francois Chouinard - Initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.linuxtools.internal.tmf.core.request;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.MultiStatus;
-import org.eclipse.linuxtools.internal.tmf.core.Activator;
-import org.eclipse.linuxtools.tmf.core.event.ITmfEvent;
-import org.eclipse.linuxtools.tmf.core.event.TmfTimeRange;
-import org.eclipse.linuxtools.tmf.core.request.ITmfRequest;
-import org.eclipse.linuxtools.tmf.core.request.TmfBlockFilter;
-import org.eclipse.linuxtools.tmf.core.request.TmfRangeFilter;
-import org.eclipse.linuxtools.tmf.core.request.TmfRequest;
-
-/**
- * The TMF coalesced request
- * <p>
- * Since different TMF components can issue simultaneous requests to their event
- * provider (e.g. as the result of a user action), it is desirable to coalesce
- * these requests when possible in order to reduce costly I/O with the back-end.
- * <p>
- * The TmfCoalescedRequest acts as a request aggregator. It bundles compatible
- * requests and is the one dispatched to the event provider. As each event is
- * read in sequence, it re-distributes them to its sub-requests as appropriate.
- * <p>
- * The sub-request compatibility is evaluated based on the following criteria:
- * <ul>
- * <li>Request type (pre-emptible or not)
- * <li>Block ranges (start index + nb requested) overlap or are contiguous
- * <li>Time ranges overlap or are contiguous
- * </ul>
- *
- * @author Francois Chouinard
- * @version 1.0
- */
-public class TmfCoalescedRequest extends TmfRequest {
-
-    // ------------------------------------------------------------------------
-    // Attributes
-    // ------------------------------------------------------------------------
-
-   /** The list of coalesced requests */
-   private final List<ITmfRequest> fSubRequests = new ArrayList<ITmfRequest>();
-
-    /** The list of coalesced requests */
-    private int fNbSubRequests;
-
-   // ------------------------------------------------------------------------
-    // Constructor
-    // ------------------------------------------------------------------------
-
-    /**
-     * Default constructor
-     */
-    public TmfCoalescedRequest() {
-        this(TmfRequestPriority.NORMAL);
-    }
-
-    /**
-     * Basic constructor
-     * @param priority the request priority
-     */
-    public TmfCoalescedRequest(TmfRequestPriority priority) {
-       super(priority);
-    }
-
-    /**
-     * Create a coalesced request based on the provided request
-     *
-     * @param request the base request
-     */
-    public TmfCoalescedRequest(ITmfRequest request) {
-        super(request != null ? request.getRequestPriority() : null);
-
-        // Initialize sub-requests list with the request
-        if (request != null) {
-            fSubRequests.add(request);
-            fNbSubRequests++;
-            request.setParent(this);
-
-            // Collect the filter values of interestIndex
-            TmfBlockFilter blockFilter = (TmfBlockFilter) request.getEventFilter(TmfBlockFilter.class);
-            long startIndex = blockFilter.getStartIndex();
-            long nbRequested = blockFilter.getNbRequested();
-            addEventFilter(new TmfBlockFilter(startIndex, nbRequested));
-
-            TmfRangeFilter rangeFilter = (TmfRangeFilter) request.getEventFilter(TmfRangeFilter.class);
-            TmfTimeRange timeRange = rangeFilter.getTimeRange();
-            addEventFilter(new TmfRangeFilter(timeRange));
-        }
-    }
-
-    // ------------------------------------------------------------------------
-    // Request execution state
-    // ------------------------------------------------------------------------
-
-    /* (non-Javadoc)
-     * @see org.eclipse.linuxtools.tmf.core.request.TmfRequest#isCompleted()
-     */
-    @Override
-    public synchronized boolean isCompleted() {
-        for (ITmfRequest request : fSubRequests) {
-            if (!request.isCompleted()) {
-                return false;
-            }
-        }
-        return super.isCompleted();
-    }
-
-    // ------------------------------------------------------------------------
-    // Request completion status
-    // ------------------------------------------------------------------------
-
-    /* (non-Javadoc)
-     * @see org.eclipse.linuxtools.tmf.core.request.TmfRequest#isCancelled()
-     */
-    @Override
-    public synchronized boolean isCancelled() {
-        for (ITmfRequest request : fSubRequests) {
-            if (!request.isCancelled()) {
-                return false;
-            }
-        }
-        return super.isCancelled();
-    }
-
-    // ------------------------------------------------------------------------
-    // Request operations
-    // ------------------------------------------------------------------------
-
-    /* (non-Javadoc)
-     * @see org.eclipse.linuxtools.tmf.core.request.TmfRequest#start()
-     */
-    @Override
-    public void start() {
-        for (ITmfRequest request : fSubRequests) {
-            if (!request.isCompleted()) {
-                request.start();
-            }
-        }
-        super.start();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.linuxtools.tmf.core.request.TmfRequest#done()
-     */
-    @Override
-    public void done() {
-        if (fRequestStatus == null) {
-            fRequestStatus = new MultiStatus(Activator.PLUGIN_ID, IStatus.OK, "OK", null); //$NON-NLS-1$
-            for (ITmfRequest request : fSubRequests) {
-                if (!request.isCompleted()) {
-                    request.done();
-                }
-                ((MultiStatus) fRequestStatus).add(request.getStatus());
-            }
-        }
-        super.done();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.linuxtools.tmf.core.request.TmfRequest#fail()
-     */
-    @Override
-    public void fail() {
-        fRequestStatus = new MultiStatus(Activator.PLUGIN_ID, IStatus.ERROR, "FAIL", null); //$NON-NLS-1$
-        for (ITmfRequest request : fSubRequests) {
-            if (!request.isCompleted()) {
-                request.fail();
-                ((MultiStatus) fRequestStatus).add(request.getStatus());
-            }
-        }
-        super.fail();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.linuxtools.tmf.core.request.TmfRequest#cancel()
-     */
-    @Override
-    public void cancel() {
-        fRequestStatus = new MultiStatus(Activator.PLUGIN_ID, IStatus.CANCEL, "CANCEL", null); //$NON-NLS-1$
-        for (ITmfRequest request : fSubRequests) {
-            if (!request.isCompleted()) {
-                request.cancel();
-            }
-            ((MultiStatus) fRequestStatus).add(request.getStatus());
-        }
-        super.cancel();
-    }
-
-    // ------------------------------------------------------------------------
-    // Request processing hooks
-    // ------------------------------------------------------------------------
-
-    /* (non-Javadoc)
-     * @see org.eclipse.linuxtools.tmf.core.request.TmfRequest#handleEvent(org.eclipse.linuxtools.tmf.core.event.ITmfEvent)
-     */
-    @Override
-    public synchronized void handleEvent(ITmfEvent event) {
-        super.handleEvent(event);
-        for (ITmfRequest request : fSubRequests) {
-            if (!request.isCompleted() && request.matches(event)) {
-                request.handleEvent(event);
-            }
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.linuxtools.tmf.core.request.ITmfRequest#notifyParent(org.eclipse.linuxtools.tmf.core.request.ITmfRequest)
-     */
-    @Override
-    public synchronized void notifyParent(ITmfRequest child) {
-        if (--fNbSubRequests <= 0) {
-            done();
-            super.notifyParent(this);
-        }
-    }
-
-    // ------------------------------------------------------------------------
-    // Management
-    // ------------------------------------------------------------------------
-
-    /**
-     * Add a request to this one.
-     *
-     * @param request The request to add
-     * @return true if the request was successfully coalesced, false otherwise
-     */
-    public synchronized boolean addRequest(ITmfRequest request) {
-        if (isCompatible(request)) {
-            fSubRequests.add(request);
-            fNbSubRequests++;
-            request.setParent(this);
-            adjustFilters(request);
-            return true;
-        }
-        return false;
-    }
-
-    /**
-     * @return The list of IDs of the sub-requests
-     */
-    @SuppressWarnings("nls")
-    public String getSubRequestIds() {
-        StringBuffer result = new StringBuffer("[");
-        for (int i = 0; i < fSubRequests.size(); i++) {
-            if (i != 0) {
-                result.append(",");
-            }
-            result.append(fSubRequests.get(i).getRequestId());
-        }
-        result.append("]");
-        return result.toString();
-    }
-
-    // ------------------------------------------------------------------------
-    // Compatibility checks
-    // ------------------------------------------------------------------------
-
-    /**
-     * Check if a request is compatible i.e. can be coalesced with the
-     * other sub-requests.
-     * Compatibility is evaluated on the following criteria:
-     * - Request type (pre-emptible or not)
-     * - Block parameters (start index + requested)
-     * - Time range
-     *
-     * @param request The request to evaluate
-     * @return true if the request is compatible, false otherwise
-     */
-    public boolean isCompatible(ITmfRequest request) {
-        if (request.getRequestPriority() != getRequestPriority()) {
-            return false;
-        }
-        // Check the block range
-        TmfBlockFilter blockFilter = (TmfBlockFilter) request.getEventFilter(TmfBlockFilter.class);
-        if (!isCompatible(blockFilter)) {
-            return false;
-        }
-        // Check the time range
-        TmfRangeFilter rangeFilter = (TmfRangeFilter) request.getEventFilter(TmfRangeFilter.class);
-        if (!isCompatible(rangeFilter)) {
-            return false;
-        }
-        return true;
-    }
-
-    /**
-     * Check if the filter time range overlaps the coalesced request time range.
-     * The test boils down to a verification of the intersection of the ranges.
-     *
-     * @param filter the time range filter to test
-     * @return true if the time range is compatible; false otherwise
-     */
-    private boolean isCompatible(TmfRangeFilter filter) {
-        TmfRangeFilter rangeFilter = (TmfRangeFilter) getEventFilter(TmfRangeFilter.class);
-        return rangeFilter.getTimeRange().getIntersection(filter.getTimeRange()) != null;
-    }
-
-    /**
-     * Check if the filter block overlaps the coalesced request block.
-     * The test boils down to a verification that at least one of the block
-     * boundaries falls within the other block boundaries.
-     *
-     * @param filter the block filter to test
-     * @return true if the time range is compatible; false otherwise
-     */
-    private boolean isCompatible(TmfBlockFilter filter) {
-        TmfBlockFilter blockFilter = (TmfBlockFilter) getEventFilter(TmfBlockFilter.class);
-        return filter.getStartIndex() - 1 <= (blockFilter.getEndIndex()) &&
-               filter.getEndIndex() - 1   >= (blockFilter.getStartIndex());
-    }
-
-    // ------------------------------------------------------------------------
-    // Filter adjustments
-    // ------------------------------------------------------------------------
-
-    /**
-     * Adjust the coalesced request filters based on a given request
-     *
-     * @param request the request to consider
-     */
-    private void adjustFilters(ITmfRequest request) {
-        TmfBlockFilter blockFilter = (TmfBlockFilter) request.getEventFilter(TmfBlockFilter.class);
-        adjustFilter(blockFilter);
-        TmfRangeFilter rangeFilter = (TmfRangeFilter) request.getEventFilter(TmfRangeFilter.class);
-        adjustFilter(rangeFilter);
-    }
-
-    /**
-     * @param filter the block filter to adjust
-     */
-    private void adjustFilter(TmfBlockFilter filter) {
-        TmfBlockFilter blockFilter = (TmfBlockFilter) getEventFilter(TmfBlockFilter.class);
-        long startIndex = Math.min(blockFilter.getStartIndex(), filter.getStartIndex());
-        long endIndex   = Math.max(blockFilter.getEndIndex(), filter.getEndIndex());
-        long nbRequested = endIndex - startIndex;
-        addEventFilter(new TmfBlockFilter(startIndex, nbRequested));
-    }
-
-    /**
-     * @param filter the time range filter to adjust
-     */
-    private void adjustFilter(TmfRangeFilter filter) {
-        TmfRangeFilter rangeFilter = (TmfRangeFilter) getEventFilter(TmfRangeFilter.class);
-        TmfTimeRange timeRange = rangeFilter.getTimeRange().getUnion(filter.getTimeRange());
-        addEventFilter(new TmfRangeFilter(timeRange));
-    }
-
-    // ------------------------------------------------------------------------
-    // Object
-    // ------------------------------------------------------------------------
-
-    /* (non-Javadoc)
-     * @see org.eclipse.linuxtools.tmf.core.request.TmfRequest#hashCode()
-     */
-    @Override
-    public int hashCode() {
-        final int prime = 31;
-        int result = super.hashCode();
-        result = prime * result + ((fSubRequests == null) ? 0 : fSubRequests.hashCode());
-        return result;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.linuxtools.tmf.core.request.TmfRequest#equals(java.lang.Object)
-     */
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (!super.equals(obj)) {
-            return false;
-        }
-        if (!(obj instanceof TmfCoalescedRequest)) {
-            return false;
-        }
-        TmfCoalescedRequest other = (TmfCoalescedRequest) obj;
-        if (fSubRequests == null) {
-            if (other.fSubRequests != null) {
-                return false;
-            }
-        } else if (!fSubRequests.equals(other.fSubRequests)) {
-            return false;
-        }
-        return true;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.linuxtools.tmf.core.request.TmfRequest#toString()
-     */
-    @Override
-    @SuppressWarnings("nls")
-    public String toString() {
-        return "TmfCoalescedRequest [fSubRequests=" + fSubRequests + "]";
-    }
-
-}
index 96e029c9da0e2e3a38409440705faf61e0e0cb32..2be614393454e30adddc921bb08a4dd220a34672 100644 (file)
@@ -21,7 +21,7 @@ import java.util.concurrent.Executors;
 
 import org.eclipse.linuxtools.internal.tmf.core.TmfCoreTracer;
 import org.eclipse.linuxtools.internal.tmf.core.component.TmfEventThread;
-import org.eclipse.linuxtools.tmf.core.request.ITmfRequest.TmfRequestPriority;
+import org.eclipse.linuxtools.tmf.core.request.ITmfDataRequest.ExecutionType;
 
 /**
  * A simple, straightforward request executor.
@@ -41,7 +41,7 @@ public class TmfRequestExecutor implements Executor {
 
        // The request queues
        private final Queue<TmfEventThread> fHighPriorityTasks = new ArrayBlockingQueue<TmfEventThread>(100);
-    private final Queue<TmfEventThread> fNormPriorityTasks = new ArrayBlockingQueue<TmfEventThread>(100);
+    private final Queue<TmfEventThread> fLowPriorityTasks  = new ArrayBlockingQueue<TmfEventThread>(100);
 
        // The tasks
        private TmfEventThread fActiveTask;
@@ -81,7 +81,7 @@ public class TmfRequestExecutor implements Executor {
         */
     @Deprecated
        public synchronized int getNbPendingRequests() {
-               return fHighPriorityTasks.size() + fNormPriorityTasks.size();
+               return fHighPriorityTasks.size() + fLowPriorityTasks.size();
        }
 
        /**
@@ -128,13 +128,13 @@ public class TmfRequestExecutor implements Executor {
         };
 
         // Add the thread to the appropriate queue
-        TmfRequestPriority priority = thread.getExecType();
-        (priority == TmfRequestPriority.HIGH ? fHighPriorityTasks : fNormPriorityTasks).offer(wrapper);
+        ExecutionType priority = thread.getExecType();
+        (priority == ExecutionType.FOREGROUND ? fHighPriorityTasks : fLowPriorityTasks).offer(wrapper);
 
         // Schedule or preempt as appropriate
         if (fActiveTask == null) {
             scheduleNext();
-        } else if (priority == TmfRequestPriority.HIGH && priority != fActiveTask.getExecType()) {
+        } else if (priority == ExecutionType.FOREGROUND && priority != fActiveTask.getExecType()) {
             fActiveTask.getThread().suspend();
             fSuspendedTask = fActiveTask;
             scheduleNext();
@@ -152,7 +152,7 @@ public class TmfRequestExecutor implements Executor {
                        fActiveTask = fSuspendedTask;
                        fSuspendedTask = null;
                        fActiveTask.getThread().resume();
-                   } else if ((fActiveTask = fNormPriorityTasks.poll()) != null) {
+                   } else if ((fActiveTask = fLowPriorityTasks.poll()) != null) {
                        fExecutor.execute(fActiveTask);
                    }
                }
index 89d707af5ecc5ac3cc45e18d0b9442a2c037dea0..de62ee1da353e6720f97b780da1d386de4ef2783 100644 (file)
@@ -41,7 +41,6 @@ import org.eclipse.linuxtools.tmf.core.trace.TmfExperiment;
  * @author alexmont
  *
  */
-@SuppressWarnings("deprecation")
 public class HistoryBuilder extends TmfComponent {
 
     private final IStateChangeInput sci;
@@ -234,7 +233,6 @@ class StateSystemBuildRequest extends TmfEventRequest {
     private final IStateChangeInput sci;
     private final ITmfTrace trace;
 
-    @SuppressWarnings("deprecation")
     StateSystemBuildRequest(HistoryBuilder builder) {
         super(builder.getInputPlugin().getExpectedEventType(),
                 TmfTimeRange.ETERNITY,
@@ -247,7 +245,6 @@ class StateSystemBuildRequest extends TmfEventRequest {
     }
 
     @Override
-    @SuppressWarnings("deprecation")
     public void handleData(final ITmfEvent event) {
         super.handleData(event);
         if (event != null) {
@@ -274,4 +271,4 @@ class StateSystemBuildRequest extends TmfEventRequest {
         super.handleFailure();
         builder.close(true);
     }
-}
+}
\ No newline at end of file
index 2ba969e1641ae588878fa1dd2073b88a66528acb..bb993c41b6e0d3b409df74a384dff222f3a37b3b 100644 (file)
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009, 2010, 2012 Ericsson
+ * Copyright (c) 2009, 2010 Ericsson
  *
  * All rights reserved. This program and the accompanying materials are
  * made available under the terms of the Eclipse Public License v1.0 which
 package org.eclipse.linuxtools.tmf.core.component;
 
 import org.eclipse.linuxtools.tmf.core.event.ITmfEvent;
-import org.eclipse.linuxtools.tmf.core.request.ITmfRequest;
+import org.eclipse.linuxtools.tmf.core.request.ITmfDataRequest;
 import org.eclipse.linuxtools.tmf.core.trace.ITmfContext;
 
 /**
  * This is the interface of the data providers in TMF. Data providers have the
  * capability of handling data requests.
  *
+ * @version 1.0
  * @author Francois Chouinard
- * @version 2.0
- * @since 2.0
  *
  * @see TmfDataProvider
  * @see TmfEventProvider
@@ -34,7 +33,7 @@ public interface ITmfDataProvider extends ITmfComponent {
      *
      * @param request The request to process
      */
-    public void sendRequest(ITmfRequest request);
+    public void sendRequest(ITmfDataRequest request);
 
     /**
      * Queue the coalesced requests.
@@ -60,5 +59,4 @@ public interface ITmfDataProvider extends ITmfComponent {
      * @return the event referred to by context
      */
     public ITmfEvent getNext(ITmfContext context);
-
 }
diff --git a/org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/component/ITmfEventProvider.java b/org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/component/ITmfEventProvider.java
deleted file mode 100644 (file)
index d7024ee..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2010, 2012 Ericsson
- *
- * 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *   Francois Chouinard - Initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.linuxtools.tmf.core.component;
-
-import org.eclipse.linuxtools.tmf.core.event.ITmfEvent;
-import org.eclipse.linuxtools.tmf.core.request.ITmfRequest;
-import org.eclipse.linuxtools.tmf.core.trace.ITmfContext;
-
-/**
- * This is the interface of the event providers in TMF. Event providers have the
- * capability of handling event requests.
- *
- * @author Francois Chouinard
- * @version 2.0
- * @since 2.0
- *
- * @see TmfDataProvider
- * @see TmfEventProvider
- */
-public interface ITmfEventProvider extends ITmfComponent {
-
-    /**
-     * Queue the request for processing.
-     *
-     * @param request The request to process
-     */
-    public void sendRequest(ITmfRequest request);
-
-    /**
-     * Queue the coalesced requests.
-     */
-    public void fireRequest();
-
-    /**
-     * Increments/decrements the pending requests counters and fires the request
-     * if necessary (counter == 0). Used for coalescing requests across multiple
-     * TmfDataProvider's.
-     *
-     * @param isIncrement
-     *            Should we increment (true) or decrement (false) the pending
-     *            counter
-     */
-    public void notifyPendingRequest(boolean isIncrement);
-
-    /**
-     * Return the next event based on the context supplied. The context
-     * will be updated for the subsequent read.
-     *
-     * @param context the trace read context (updated)
-     * @return the event referred to by context
-     */
-    public ITmfEvent getNext(ITmfContext context);
-
-}
index 48dedf07bb4f86fa6b7911b6e963546f197bd0cf..6d7ec2ba9caf12f8adfb4a10bea4a774d091039d 100644 (file)
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009, 2010, 2012 Ericsson
+ * Copyright (c) 2009, 2010 Ericsson
  *
  * All rights reserved. This program and the accompanying materials are
  * made available under the terms of the Eclipse Public License v1.0 which
@@ -8,8 +8,7 @@
  *
  * Contributors:
  *   Francois Chouinard - Initial API and implementation
- *   Francois Chouinard - Replace background requests by pre-emptible requests
- *   Francois Chouinard - Rebased on TmfCoalescedRequest:s
+ *   Francois Chouinard - Replace background requests by pre-emptable requests
  *******************************************************************************/
 
 package org.eclipse.linuxtools.tmf.core.component;
@@ -22,18 +21,19 @@ import java.util.concurrent.SynchronousQueue;
 import org.eclipse.linuxtools.internal.tmf.core.TmfCoreTracer;
 import org.eclipse.linuxtools.internal.tmf.core.component.TmfEventThread;
 import org.eclipse.linuxtools.internal.tmf.core.component.TmfProviderManager;
-import org.eclipse.linuxtools.internal.tmf.core.request.TmfCoalescedRequest;
+import org.eclipse.linuxtools.internal.tmf.core.request.TmfCoalescedDataRequest;
 import org.eclipse.linuxtools.internal.tmf.core.request.TmfRequestExecutor;
 import org.eclipse.linuxtools.tmf.core.event.ITmfEvent;
-import org.eclipse.linuxtools.tmf.core.request.ITmfRequest;
-import org.eclipse.linuxtools.tmf.core.request.ITmfRequest.TmfRequestPriority;
+import org.eclipse.linuxtools.tmf.core.request.ITmfDataRequest;
+import org.eclipse.linuxtools.tmf.core.request.ITmfDataRequest.ExecutionType;
+import org.eclipse.linuxtools.tmf.core.request.TmfDataRequest;
 import org.eclipse.linuxtools.tmf.core.signal.TmfEndSynchSignal;
 import org.eclipse.linuxtools.tmf.core.signal.TmfSignalHandler;
 import org.eclipse.linuxtools.tmf.core.signal.TmfStartSynchSignal;
 import org.eclipse.linuxtools.tmf.core.trace.ITmfContext;
 
 /**
- * An abstract base class that implements ITmfEventProvider.
+ * An abstract base class that implements ITmfDataProvider.
  * <p>
  * This abstract class implements the housekeeping methods to register/
  * de-register the event provider and to handle generically the event requests.
@@ -45,7 +45,7 @@ import org.eclipse.linuxtools.tmf.core.trace.ITmfContext;
  * @author Francois Chouinard
  * @version 1.1
  */
-public abstract class TmfDataProvider extends TmfComponent implements ITmfEventProvider {
+public abstract class TmfDataProvider extends TmfComponent implements ITmfDataProvider {
 
     // ------------------------------------------------------------------------
     // Constants
@@ -83,9 +83,6 @@ public abstract class TmfDataProvider extends TmfComponent implements ITmfEventP
 
     private int fRequestPendingCounter = 0;
 
-    /** List of coalesced requests */
-    protected Vector<TmfCoalescedRequest> fPendingCoalescedRequests = new Vector<TmfCoalescedRequest>();
-
     // ------------------------------------------------------------------------
     // Constructors
     // ------------------------------------------------------------------------
@@ -117,6 +114,7 @@ public abstract class TmfDataProvider extends TmfComponent implements ITmfEventP
         fSignalDepth = 0;
 
         fLogData = TmfCoreTracer.isEventTraced();
+//        fLogError = TmfCoreTracer.isErrorTraced();
 
         TmfProviderManager.register(fType, this);
     }
@@ -165,6 +163,7 @@ public abstract class TmfDataProvider extends TmfComponent implements ITmfEventP
         TmfProviderManager.deregister(fType, this);
         fExecutor.stop();
         super.dispose();
+        // if (Tracer.isComponentTraced()) Tracer.traceComponent(this, "stopped");
     }
 
     // ------------------------------------------------------------------------
@@ -193,14 +192,8 @@ public abstract class TmfDataProvider extends TmfComponent implements ITmfEventP
     // ITmfRequestHandler
     // ------------------------------------------------------------------------
 
-    /* (non-Javadoc)
-     * @see org.eclipse.linuxtools.tmf.core.component.ITmfEventProvider#sendRequest(org.eclipse.linuxtools.tmf.core.request.ITmfRequest)
-     */
-    /**
-     * @since 2.0
-     */
     @Override
-    public void sendRequest(final ITmfRequest request) {
+    public void sendRequest(final ITmfDataRequest request) {
         synchronized (fLock) {
             if (fSignalDepth > 0) {
                 coalesceDataRequest(request);
@@ -210,12 +203,6 @@ public abstract class TmfDataProvider extends TmfComponent implements ITmfEventP
         }
     }
 
-    /* (non-Javadoc)
-     * @see org.eclipse.linuxtools.tmf.core.component.ITmfEventProvider#fireRequest()
-     */
-    /**
-     * @since 2.0
-     */
     @Override
     public void fireRequest() {
         synchronized (fLock) {
@@ -223,7 +210,7 @@ public abstract class TmfDataProvider extends TmfComponent implements ITmfEventP
                 return;
             }
             if (fPendingCoalescedRequests.size() > 0) {
-                for (ITmfRequest request : fPendingCoalescedRequests) {
+                for (TmfDataRequest request : fPendingCoalescedRequests) {
                     dispatchRequest(request);
                 }
                 fPendingCoalescedRequests.clear();
@@ -264,16 +251,21 @@ public abstract class TmfDataProvider extends TmfComponent implements ITmfEventP
     // Coalescing (primitive test...)
     // ------------------------------------------------------------------------
 
+    /** List of coalesced requests */
+    protected Vector<TmfCoalescedDataRequest> fPendingCoalescedRequests = new Vector<TmfCoalescedDataRequest>();
+
     /**
      * Create a new request from an existing one, and add it to the coalesced
      * requests
      *
-     * @param request The request to copy
-     * @since 2.0
+     * @param request
+     *            The request to copy
      */
-    protected void newCoalescedDataRequest(ITmfRequest request) {
+    protected void newCoalescedDataRequest(ITmfDataRequest request) {
         synchronized (fLock) {
-            TmfCoalescedRequest coalescedRequest = new TmfCoalescedRequest(request);
+            TmfCoalescedDataRequest coalescedRequest = new TmfCoalescedDataRequest(request.getDataType(), request.getIndex(),
+                    request.getNbRequested(), request.getBlockSize(), request.getExecType());
+            coalescedRequest.addRequest(request);
             if (TmfCoreTracer.isRequestTraced()) {
                 TmfCoreTracer.traceRequest(request, "COALESCED with " + coalescedRequest.getRequestId()); //$NON-NLS-1$
                 TmfCoreTracer.traceRequest(coalescedRequest, "now contains " + coalescedRequest.getSubRequestIds()); //$NON-NLS-1$
@@ -285,12 +277,12 @@ public abstract class TmfDataProvider extends TmfComponent implements ITmfEventP
     /**
      * Add an existing requests to the list of coalesced ones
      *
-     * @param request The request to add to the list
-     * @since 2.0
+     * @param request
+     *            The request to add to the list
      */
-    protected void coalesceDataRequest(ITmfRequest request) {
+    protected void coalesceDataRequest(ITmfDataRequest request) {
         synchronized (fLock) {
-            for (TmfCoalescedRequest coalescedRequest : fPendingCoalescedRequests) {
+            for (TmfCoalescedDataRequest coalescedRequest : fPendingCoalescedRequests) {
                 if (coalescedRequest.isCompatible(request)) {
                     coalescedRequest.addRequest(request);
                     if (TmfCoreTracer.isRequestTraced()) {
@@ -308,21 +300,21 @@ public abstract class TmfDataProvider extends TmfComponent implements ITmfEventP
     // Request processing
     // ------------------------------------------------------------------------
 
-    private void dispatchRequest(final ITmfRequest request) {
-        if (request.getRequestPriority() == TmfRequestPriority.HIGH) {
+    private void dispatchRequest(final ITmfDataRequest request) {
+        if (request.getExecType() == ExecutionType.FOREGROUND) {
             queueRequest(request);
         } else {
-            queueBackgroundRequest(request, true);
+            queueBackgroundRequest(request, request.getBlockSize(), true);
         }
     }
 
     /**
      * Queue a request.
      *
-     * @param request The data request
-     * @since 2.0
+     * @param request
+     *            The data request
      */
-    protected void queueRequest(final ITmfRequest request) {
+    protected void queueRequest(final ITmfDataRequest request) {
 
         if (fExecutor.isShutdown()) {
             request.cancel();
@@ -341,15 +333,14 @@ public abstract class TmfDataProvider extends TmfComponent implements ITmfEventP
     /**
      * Queue a background request
      *
-     * @param request The request
-     * @param indexing Should we index the chunks
-<<<<<<< Upstream, based on master
-     *
-=======
->>>>>>> f5b88da Refactor TmfRequest
-     * @since 2.0
+     * @param request
+     *            The request
+     * @param blockSize
+     *            The request should be split in chunks of this size
+     * @param indexing
+     *            Should we index the chunks
      */
-    protected void queueBackgroundRequest(final ITmfRequest request, final boolean indexing) {
+    protected void queueBackgroundRequest(final ITmfDataRequest request, final int blockSize, final boolean indexing) {
         queueRequest(request);
     }
 
@@ -363,7 +354,7 @@ public abstract class TmfDataProvider extends TmfComponent implements ITmfEventP
      *         serviced
      * @since 2.0
      */
-    public abstract ITmfContext armRequest(ITmfRequest request);
+    public abstract ITmfContext armRequest(ITmfDataRequest request);
 
 //    /**
 //     * Return the next event based on the context supplied. The context
@@ -378,19 +369,12 @@ public abstract class TmfDataProvider extends TmfComponent implements ITmfEventP
      * Checks if the data meets the request completion criteria.
      *
      * @param request the request
-     * @param event the event to check
+     * @param data the data to verify
      * @param nbRead the number of events read so far
      * @return true if completion criteria is met
-<<<<<<< Upstream, based on master
-     *
-=======
->>>>>>> f5b88da Refactor TmfRequest
-     * @since 2.0
      */
-    public boolean isCompleted(ITmfRequest request, ITmfEvent event, int nbRead) {
-        return request.isCompleted() ||
-               nbRead >= request.getNbRequested() ||
-               request.getTimeRange().getEndTime().compareTo(event.getTimestamp()) < 0;
+    public boolean isCompleted(ITmfDataRequest request, ITmfEvent data, int nbRead) {
+        return request.isCompleted() || nbRead >= request.getNbRequested();
     }
 
     // ------------------------------------------------------------------------
index ad8d8227d0c6f521c836d6f2301f009ed62d49e3..cb54d2e2f47c6cf229e009c3df6d1615b867a6f0 100644 (file)
 
 package org.eclipse.linuxtools.tmf.core.component;
 
+import org.eclipse.linuxtools.internal.tmf.core.TmfCoreTracer;
+import org.eclipse.linuxtools.internal.tmf.core.request.TmfCoalescedEventRequest;
 import org.eclipse.linuxtools.tmf.core.event.ITmfEvent;
+import org.eclipse.linuxtools.tmf.core.event.ITmfTimestamp;
+import org.eclipse.linuxtools.tmf.core.request.ITmfDataRequest;
+import org.eclipse.linuxtools.tmf.core.request.ITmfEventRequest;
 
 /**
  * An extension of TmfDataProvider timestamped events providers.
@@ -79,31 +84,31 @@ public abstract class TmfEventProvider extends TmfDataProvider {
     // TmfDataProvider
     // ------------------------------------------------------------------------
 
-//    @Override
-//    public boolean isCompleted(ITmfDataRequest request, ITmfEvent data, int nbRead) {
-//        boolean requestCompleted = super.isCompleted(request, data, nbRead);
-//        if (!requestCompleted && request instanceof ITmfEventRequest) {
-//            ITmfTimestamp endTime = ((ITmfEventRequest) request).getRange().getEndTime();
-//            return data.getTimestamp().compareTo(endTime, false) > 0;
-//        }
-//        return requestCompleted;
-//    }
-//
-//    @Override
-//    protected synchronized void newCoalescedDataRequest(ITmfDataRequest request) {
-//        if (request instanceof ITmfEventRequest) {
-//            ITmfEventRequest eventRequest = (ITmfEventRequest) request;
-//            TmfCoalescedEventRequest coalescedRequest = new TmfCoalescedEventRequest(eventRequest.getDataType(), eventRequest.getRange(),
-//                    eventRequest.getIndex(), (int) eventRequest.getNbRequested(), eventRequest.getBlockSize(), eventRequest.getExecType());
-//            coalescedRequest.addRequest(eventRequest);
-//            if (TmfCoreTracer.isRequestTraced()) {
-//                TmfCoreTracer.traceRequest(request, "COALESCED with " + coalescedRequest.getRequestId()); //$NON-NLS-1$
-//                TmfCoreTracer.traceRequest(coalescedRequest, "now contains " + coalescedRequest.getSubRequestIds()); //$NON-NLS-1$
-//            }
-//            fPendingCoalescedRequests.add(coalescedRequest);
-//        } else {
-//            super.newCoalescedDataRequest(request);
-//        }
-//    }
+    @Override
+    public boolean isCompleted(ITmfDataRequest request, ITmfEvent data, int nbRead) {
+        boolean requestCompleted = super.isCompleted(request, data, nbRead);
+        if (!requestCompleted && request instanceof ITmfEventRequest) {
+            ITmfTimestamp endTime = ((ITmfEventRequest) request).getRange().getEndTime();
+            return data.getTimestamp().compareTo(endTime, false) > 0;
+        }
+        return requestCompleted;
+    }
+
+    @Override
+    protected synchronized void newCoalescedDataRequest(ITmfDataRequest request) {
+        if (request instanceof ITmfEventRequest) {
+            ITmfEventRequest eventRequest = (ITmfEventRequest) request;
+            TmfCoalescedEventRequest coalescedRequest = new TmfCoalescedEventRequest(eventRequest.getDataType(), eventRequest.getRange(),
+                    eventRequest.getIndex(), eventRequest.getNbRequested(), eventRequest.getBlockSize(), eventRequest.getExecType());
+            coalescedRequest.addRequest(eventRequest);
+            if (TmfCoreTracer.isRequestTraced()) {
+                TmfCoreTracer.traceRequest(request, "COALESCED with " + coalescedRequest.getRequestId()); //$NON-NLS-1$
+                TmfCoreTracer.traceRequest(coalescedRequest, "now contains " + coalescedRequest.getSubRequestIds()); //$NON-NLS-1$
+            }
+            fPendingCoalescedRequests.add(coalescedRequest);
+        } else {
+            super.newCoalescedDataRequest(request);
+        }
+    }
 
 }
index 561f9c7386346e616409539cfc8a5c1e9a823eaa..556122c48270f2f409ffbe29f9fbb902bef07e81 100644 (file)
@@ -154,20 +154,6 @@ public final class TmfTimeRange {
                         : fEndTime);
     }
 
-    /**
-     * Get the union of two time ranges
-     *
-     * @param range the other time range
-     * @return the intersection time range, or null if no intersection exists
-     *
-     * @since 2.0
-     */
-    public TmfTimeRange getUnion(final TmfTimeRange range) {
-        ITmfTimestamp start = (fStartTime.compareTo(range.fStartTime, true) < 0) ? fStartTime : range.fStartTime;
-        ITmfTimestamp end   = (fEndTime.compareTo(range.fEndTime, true) < 0)     ? fEndTime   : range.fEndTime;
-        return new TmfTimeRange(start, end);
-    }
-
     // ------------------------------------------------------------------------
     // Object
     // ------------------------------------------------------------------------
index 0c8dfdcca16978558721f3546e088604480185e3..299caa5f689e2d93ac00df37ea2b5d3942e33318 100644 (file)
@@ -353,14 +353,6 @@ public class TmfTimestamp implements ITmfTimestamp {
      */
     @Override
     public String toString(final TmfTimestampFormat format) {
-        // Check the border cases
-        if (equals(BIG_BANG)) {
-            return "BIG_BANG"; //$NON-NLS-1$
-        }
-        if (equals(BIG_CRUNCH)) {
-            return "BIG_CRUNCH"; //$NON-NLS-1$
-        }
-        // Format the timestamp
         try {
             ITmfTimestamp ts = normalize(0, ITmfTimestamp.NANOSECOND_SCALE);
             return format.format(ts.getValue());
index 8c92f04254c000b807c9d81636dde9ea1dbd0970..9e7c32f6058dfc73d13c2bf2f3a52fd18d8ea387 100644 (file)
@@ -281,7 +281,7 @@ public class TmfTimestampFormat extends SimpleDateFormat {
     /**
      * @param pattern the new default time pattern
      */
-    public static synchronized void setDefaultTimeFormat(final String pattern) {
+    public static void setDefaultTimeFormat(final String pattern) {
         fDefaultTimePattern = pattern;
         fDefaultTimeFormat = new TmfTimestampFormat(fDefaultTimePattern);
         TmfSignalManager.dispatchSignal(new TmfTimestampFormatUpdateSignal(null));
@@ -290,7 +290,7 @@ public class TmfTimestampFormat extends SimpleDateFormat {
     /**
      * @return the default time format pattern
      */
-    public static synchronized TmfTimestampFormat getDefaulTimeFormat() {
+    public static TmfTimestampFormat getDefaulTimeFormat() {
         if (fDefaultTimeFormat == null) {
             fDefaultTimeFormat = new TmfTimestampFormat(DEFAULT_TIME_PATTERN);
         }
@@ -300,7 +300,7 @@ public class TmfTimestampFormat extends SimpleDateFormat {
     /**
      * @param pattern the new default interval pattern
      */
-    public static synchronized void setDefaultIntervalFormat(final String pattern) {
+    public static void setDefaultIntervalFormat(final String pattern) {
         fDefaultIntervalPattern = pattern;
         fDefaultIntervalFormat = new TmfTimestampFormat(fDefaultIntervalPattern);
         TmfSignalManager.dispatchSignal(new TmfTimestampFormatUpdateSignal(null));
@@ -309,7 +309,7 @@ public class TmfTimestampFormat extends SimpleDateFormat {
     /**
      * @return the default interval format pattern
      */
-    public static synchronized TmfTimestampFormat getDefaulIntervalFormat() {
+    public static TmfTimestampFormat getDefaulIntervalFormat() {
         if (fDefaultIntervalFormat == null) {
             fDefaultIntervalFormat = new TmfTimestampFormat(DEFAULT_INTERVAL_PATTERN);
         }
@@ -612,85 +612,4 @@ public class TmfTimestampFormat extends SimpleDateFormat {
         }
     }
 
-    // ------------------------------------------------------------------------
-    // Object
-    // ------------------------------------------------------------------------
-
-    /* (non-Javadoc)
-     * @see java.text.SimpleDateFormat#hashCode()
-     */
-    @Override
-    public int hashCode() {
-        final int prime = 31;
-        int result = super.hashCode();
-        result = prime * result + ((fCloseBracket == null) ? 0 : fCloseBracket.hashCode());
-        result = prime * result + ((fOpenBracket == null) ? 0 : fOpenBracket.hashCode());
-        result = prime * result + ((fPattern == null) ? 0 : fPattern.hashCode());
-        result = prime * result + ((fSupplPatternLetters == null) ? 0 : fSupplPatternLetters.hashCode());
-        result = prime * result + ((fSupplPatterns == null) ? 0 : fSupplPatterns.hashCode());
-        return result;
-    }
-
-    /* (non-Javadoc)
-     * @see java.text.SimpleDateFormat#equals(java.lang.Object)
-     */
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (!super.equals(obj)) {
-            return false;
-        }
-        if (!(obj instanceof TmfTimestampFormat)) {
-            return false;
-        }
-        TmfTimestampFormat other = (TmfTimestampFormat) obj;
-        if (fCloseBracket == null) {
-            if (other.fCloseBracket != null) {
-                return false;
-            }
-        } else if (!fCloseBracket.equals(other.fCloseBracket)) {
-            return false;
-        }
-        if (fOpenBracket == null) {
-            if (other.fOpenBracket != null) {
-                return false;
-            }
-        } else if (!fOpenBracket.equals(other.fOpenBracket)) {
-            return false;
-        }
-        if (fPattern == null) {
-            if (other.fPattern != null) {
-                return false;
-            }
-        } else if (!fPattern.equals(other.fPattern)) {
-            return false;
-        }
-        if (fSupplPatternLetters == null) {
-            if (other.fSupplPatternLetters != null) {
-                return false;
-            }
-        } else if (!fSupplPatternLetters.equals(other.fSupplPatternLetters)) {
-            return false;
-        }
-        if (fSupplPatterns == null) {
-            if (other.fSupplPatterns != null) {
-                return false;
-            }
-        } else if (!fSupplPatterns.equals(other.fSupplPatterns)) {
-            return false;
-        }
-        return true;
-    }
-
-    /* (non-Javadoc)
-     * @see java.lang.Object#toString()
-     */
-    @Override
-    @SuppressWarnings("nls")
-    public String toString() {
-        return "TmfTimestampFormat [fPattern=" + fPattern + ", fSupplPatterns=" + fSupplPatterns + ", fSupplPatternLetters=" + fSupplPatternLetters + ", fOpenBracket=" + fOpenBracket + ", fCloseBracket=" + fCloseBracket + "]";
-    }
-
 }
index 1f7e515d3fef2e8990304c32f3f4c9bb76c44398..f22d0ea2fba41440b9e2a0b1aa67fd4ca92e234f 100644 (file)
@@ -8,7 +8,6 @@
  *
  * Contributors:
  *   Francois Chouinard - Initial API and implementation
- *   Francois Chouinard - Rebased on ITmfRequest, removed duplicates, deprecated
  *******************************************************************************/
 
 package org.eclipse.linuxtools.tmf.core.request;
@@ -21,8 +20,7 @@ import org.eclipse.linuxtools.tmf.core.event.ITmfEvent;
  * @version 1.0
  * @author Francois Chouinard
  */
-@Deprecated
-public interface ITmfDataRequest extends ITmfRequest {
+public interface ITmfDataRequest {
 
        // ------------------------------------------------------------------------
        // Constants
@@ -51,6 +49,11 @@ public interface ITmfDataRequest extends ITmfRequest {
      */
     public Class<? extends ITmfEvent> getDataType();
 
+    /**
+     * @return request ID
+     */
+    public int getRequestId();
+
     /**
      * @return request ID
      */
@@ -61,6 +64,11 @@ public interface ITmfDataRequest extends ITmfRequest {
      */
     public long getIndex();
 
+    /**
+     * @return the number of requested events
+     */
+    public int getNbRequested();
+
     /**
      * @return the block size (for BG requests)
      */
@@ -71,6 +79,30 @@ public interface ITmfDataRequest extends ITmfRequest {
      */
     public int getNbRead();
 
+       // ------------------------------------------------------------------------
+       // Request state predicates
+       // ------------------------------------------------------------------------
+
+    /**
+     * @return true if the request is still active
+     */
+    public boolean isRunning();
+
+    /**
+     * @return true if the request is completed
+     */
+    public boolean isCompleted();
+
+    /**
+     * @return true if the request has failed
+     */
+    public boolean isFailed();
+
+    /**
+     * @return true if the request was cancelled
+     */
+    public boolean isCancelled();
+
        // ------------------------------------------------------------------------
        // Data handling
        // ------------------------------------------------------------------------
@@ -82,4 +114,64 @@ public interface ITmfDataRequest extends ITmfRequest {
      */
     public void handleData(ITmfEvent data);
 
+       // ------------------------------------------------------------------------
+       // Request notifications
+       // ------------------------------------------------------------------------
+
+    /**
+     * Request processing start notification
+     */
+    public void handleStarted();
+
+    /**
+     * Request processing completion notification
+     */
+    public void handleCompleted();
+
+    /**
+     * Request successful completion notification
+     */
+    public void handleSuccess();
+
+    /**
+     * Request failure notification
+     */
+    public void handleFailure();
+
+    /**
+     * Request cancellation notification
+     */
+    public void handleCancel();
+
+    /**
+     * To suspend the client thread until the request completes
+     * (or is canceled).
+     *
+     * @throws InterruptedException thrown if the request was cancelled
+     */
+    public void waitForCompletion() throws InterruptedException;
+
+       // ------------------------------------------------------------------------
+       // Request state modifiers
+       // ------------------------------------------------------------------------
+
+    /**
+     * Put the request in the running state
+     */
+    public void start();
+
+    /**
+     * Put the request in the completed state
+     */
+    public void done();
+
+    /**
+     * Put the request in the failed completed state
+     */
+    public void fail();
+
+    /**
+     * Put the request in the cancelled completed state
+     */
+    public void cancel();
 }
index e835abd622f219416e641240fafb33150bd44996..54c9819107cb4e9c629cf560b01f9d2a5dbba5d8 100644 (file)
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009, 2010, 2012 Ericsson
+ * Copyright (c) 2009, 2010 Ericsson
  *
  * All rights reserved. This program and the accompanying materials are
  * made available under the terms of the Eclipse Public License v1.0 which
@@ -8,7 +8,6 @@
  *
  * Contributors:
  *   Francois Chouinard - Initial API and implementation
- *   Francois Chouinard - Deprecated the API
  *******************************************************************************/
 
 package org.eclipse.linuxtools.tmf.core.request;
@@ -21,8 +20,6 @@ import org.eclipse.linuxtools.tmf.core.event.TmfTimeRange;
  * @version 1.0
  * @author Francois Chouinard
  */
-@Deprecated
-@SuppressWarnings("deprecation")
 public interface ITmfEventRequest extends ITmfDataRequest {
 
     /**
diff --git a/org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/request/ITmfRequest.java b/org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/request/ITmfRequest.java
deleted file mode 100644 (file)
index b2cb455..0000000
+++ /dev/null
@@ -1,309 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2012 Ericsson
- *
- * 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *   Francois Chouinard - Initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.linuxtools.tmf.core.request;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.linuxtools.tmf.core.event.ITmfEvent;
-import org.eclipse.linuxtools.tmf.core.event.TmfTimeRange;
-import org.eclipse.linuxtools.tmf.core.filter.ITmfFilter;
-
-/**
- * The TMF request API.
- * <p>
- * ITmfRequest:s are used to obtain blocks of events from an event provider. Open
- * ranges can be used, typically for continuous streaming.
- * <p>
- * The request is processed asynchronously by a TmfRequestHandler which invokes
- * the request's handleEvent() synchronously for each event that matches the
- * request filter(s).
- * <p>
- * The TmfProvider indicates that the request is completed by calling done().
- * The request can be canceled at any time with cancel(). In case of unexpected
- * exception or error, fail() will be called.
- * <p>
- * Typical usage:
- * <pre>
- * <code>
- * ITmfRequest request = new TmfRequest(someParams) {
- *     &#64;Override
- *     public synchronized void handleEvent(ITmfEvent event) {
- *          super.handleEvent(event);
- *          // do something
- *     }
- *     &#64;Override
- *     public void handleCompleted() {
- *          // do something
- *     }
- *     &#64;Override
- *     public void handleCancel() {
- *          // do something
- *     }
- *     &#64;Override
- *     public void handleFailure() {
- *          // do something
- *     }
- * };
- * request.addEventFilter(myFilter);
- * fProcessor.process(request);
- * </code>
- * </pre>
- *
- * @author Francois Chouinard
- * @version 1.0
- * @since 2.0
- */
-public interface ITmfRequest {
-
-    // ------------------------------------------------------------------------
-    // Constants
-    // ------------------------------------------------------------------------
-
-    /** The request count for all the events */
-    public static final long ALL_EVENTS = Long.MAX_VALUE;
-
-    // ------------------------------------------------------------------------
-    // Enumerated Types
-    // ------------------------------------------------------------------------
-
-    /**
-     * The request execution type/priority
-     * @author francois
-     */
-    public enum TmfRequestPriority {
-        /**
-         * Normal priority request (preemptible)
-         */
-        NORMAL,
-        /**
-         * High priority request (non-preemptible)
-         */
-        HIGH
-    }
-
-    /**
-     * The request execution state
-     * @author francois
-     */
-    public enum TmfRequestState {
-        /**
-         * The request is created but has not started being processed yet
-         */
-        PENDING,
-        /**
-         * The request is being handled but has not completed yet
-         */
-        RUNNING,
-        /**
-         * The request has completed
-         */
-        COMPLETED
-    }
-
-       // ------------------------------------------------------------------------
-       // Getters
-       // ------------------------------------------------------------------------
-
-    /**
-     * @return the request ID
-     */
-    public int getRequestId();
-
-    /**
-     * @return the request type
-     */
-    public TmfRequestPriority getRequestPriority();
-
-    /**
-     * @return the time range of interest
-     */
-    public TmfTimeRange getTimeRange();
-
-    /**
-     * @return the number of events requested
-     */
-    public long getNbRequested();
-
-    /**
-     * @return the index of the first event requested
-     */
-    public long getStartIndex();
-
-    /**
-     * @return the number of events read so far
-     */
-    public long getNbEventsRead();
-
-    /**
-     * @param filterType the filter type to retrieve
-     *
-     * @return the corresponding filter (if any)
-     */
-    public ITmfFilter getEventFilter(Class<?> filterType);
-
-    /**
-     * Add/replace a filter
-     *
-     * @param filter the new filter
-     */
-    public void addEventFilter(ITmfFilter filter);
-
-    /**
-     * Check if the event matches the request
-     *
-     * @param event the event to test
-     *
-     * @return true if the event matches the request, false otherwise
-     */
-    public boolean matches(ITmfEvent event);
-
-    /**
-     * Sets the request's parent in the hierarchy
-     *
-     * @param parent the parent request
-     */
-    public void setParent(ITmfRequest parent);
-
-    /**
-     * Gets the request's parent in the hierarchy
-     *
-     * @return the parent request
-     */
-    public ITmfRequest getParent();
-
-    /**
-     * Completion notification for teh parent request
-     *
-     * @param child the child request
-     */
-    public void notifyParent(ITmfRequest child);
-
-       // ------------------------------------------------------------------------
-       // Request execution state
-       // ------------------------------------------------------------------------
-
-    /**
-     * @return the request execution state
-     */
-    public TmfRequestState getState();
-
-    /**
-     * @return true if the request is still active
-     */
-    public boolean isRunning();
-
-    /**
-     * @return true if the request is completed
-     */
-    public boolean isCompleted();
-
-    // ------------------------------------------------------------------------
-    // Request completion status
-    // ------------------------------------------------------------------------
-
-    /**
-     * @return the request completion status
-     */
-    public IStatus getStatus();
-
-    /**
-     * @return true if the request completed successfully
-     */
-    public boolean isOK();
-
-    /**
-
-     * @return true if the request has failed */
-    public boolean isFailed();
-
-    /**
-     * @return true if the request was cancelled
-     */
-    public boolean isCancelled();
-
-    // ------------------------------------------------------------------------
-    // Request operations
-    // ------------------------------------------------------------------------
-
-    /**
-     * Put the request in the running state
-     */
-    public void start();
-
-    /**
-     * Put the request in the terminated state
-     */
-    public void done();
-
-    /**
-     * Put the request in the failed state
-     */
-    public void fail();
-
-    /**
-     * Put the request in the cancelled state
-     */
-    public void cancel();
-
-    /**
-     * To suspend the client thread until the request starts
-     * (or is canceled).
-     *
-     * @throws InterruptedException thrown if the request was cancelled
-     */
-    public void waitForStart() throws InterruptedException;
-
-    /**
-     * To suspend the client thread until the request completes
-     * (or is canceled).
-     *
-     * @throws InterruptedException thrown if the request was cancelled
-     */
-    public void waitForCompletion() throws InterruptedException;
-
-       // ------------------------------------------------------------------------
-       // Request processing hooks
-       // ------------------------------------------------------------------------
-
-    /**
-     * Request processing start notification
-     */
-    public void handleStarted();
-
-    /**
-     * Process the piece of data
-     *
-     * @param event the data to process
-     */
-    public void handleEvent(ITmfEvent event);
-
-    /**
-     * Request processing completion notification
-     */
-    public void handleCompleted();
-
-    /**
-     * Request successful completion notification
-     */
-    public void handleSuccess();
-
-    /**
-     * Request failure notification
-     */
-    public void handleFailure();
-
-    /**
-     * Request cancellation notification
-     */
-    public void handleCancel();
-
-}
diff --git a/org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/request/TmfBlockFilter.java b/org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/request/TmfBlockFilter.java
deleted file mode 100644 (file)
index 09a9844..0000000
+++ /dev/null
@@ -1,175 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2012 Ericsson
- *
- * 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *   Francois Chouinard - Initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.linuxtools.tmf.core.request;
-
-import org.eclipse.linuxtools.tmf.core.event.ITmfEvent;
-import org.eclipse.linuxtools.tmf.core.filter.ITmfFilter;
-import org.eclipse.linuxtools.tmf.core.trace.ITmfContext;
-
-/**
- * An event filter based on the requested event block (start event index +
- * number of requested events).
- *
- * @author Francois Chouinard
- * @version 1.0
- * @since 2.0
- */
-public final class TmfBlockFilter implements ITmfFilter {
-
-    // ------------------------------------------------------------------------
-    // Constants
-    // ------------------------------------------------------------------------
-
-    /**
-     * Filter for all events by index
-     */
-    public static final TmfBlockFilter ALL_EVENTS = new TmfBlockFilter(0, Long.MAX_VALUE);
-
-    // ------------------------------------------------------------------------
-    // Attributes
-    // ------------------------------------------------------------------------
-
-    /**
-     * Request start index
-     */
-    private final long fStartIndex;
-
-    /**
-     * Request end index (non-inclusive)
-     */
-    private final long fEndIndex;
-
-    /**
-     * Number of events requested
-     */
-    private final long fNbRequested;
-
-    // ------------------------------------------------------------------------
-    // Constructors
-    // ------------------------------------------------------------------------
-
-    /**
-     * Standard constructor
-     *
-     * @param startIndex start index
-     * @param nbRequested nb requested events
-     */
-    public TmfBlockFilter(long startIndex, long nbRequested) {
-        fStartIndex  = startIndex  >= 0 ? startIndex  : 0;
-        fNbRequested = nbRequested >= 0 ? nbRequested : Long.MAX_VALUE;
-        fEndIndex = (Long.MAX_VALUE - fNbRequested) > fStartIndex ? fStartIndex + nbRequested : Long.MAX_VALUE;
-    }
-
-    /**
-     * Copy constructor
-     *
-     * @param other the other filter
-     */
-    public TmfBlockFilter(TmfBlockFilter other) {
-        fStartIndex  = other.fStartIndex;
-        fEndIndex    = other.fEndIndex;
-        fNbRequested = other.fNbRequested;
-    }
-
-    // ------------------------------------------------------------------------
-    // Getters
-    // ------------------------------------------------------------------------
-
-    /**
-     * @return the filter start index
-     */
-    public long getStartIndex() {
-        return fStartIndex;
-    }
-
-    /**
-     * @return the filter end index (non-inclusive)
-     */
-    public long getEndIndex() {
-        return fEndIndex;
-    }
-
-    /**
-     * @return the filter number of events requested
-     */
-    public long getNbRequested() {
-        return fNbRequested;
-    }
-
-    // ------------------------------------------------------------------------
-    // ITmfFilter
-    // ------------------------------------------------------------------------
-
-    /* (non-Javadoc)
-     * @see org.eclipse.linuxtools.tmf.core.filter.ITmfFilter#matches(org.eclipse.linuxtools.tmf.core.event.ITmfEvent)
-     */
-    @Override
-    public boolean matches(ITmfEvent event) {
-        long rank = event.getRank();
-        return ((rank == ITmfContext.UNKNOWN_RANK) || (rank >= fStartIndex && rank < (fStartIndex + fNbRequested)));
-    }
-
-    // ------------------------------------------------------------------------
-    // Object
-    // ------------------------------------------------------------------------
-
-    /* (non-Javadoc)
-     * @see java.lang.Object#hashCode()
-     */
-    @Override
-    public int hashCode() {
-        final int prime = 31;
-        int result = 1;
-        result = prime * result + (int) (fEndIndex ^ (fEndIndex >>> 32));
-        result = prime * result + (int) (fNbRequested ^ (fNbRequested >>> 32));
-        result = prime * result + (int) (fStartIndex ^ (fStartIndex >>> 32));
-        return result;
-    }
-
-    /* (non-Javadoc)
-     * @see java.lang.Object#equals(java.lang.Object)
-     */
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj == null) {
-            return false;
-        }
-        if (!(obj instanceof TmfBlockFilter)) {
-            return false;
-        }
-        TmfBlockFilter other = (TmfBlockFilter) obj;
-        if (fEndIndex != other.fEndIndex) {
-            return false;
-        }
-        if (fNbRequested != other.fNbRequested) {
-            return false;
-        }
-        if (fStartIndex != other.fStartIndex) {
-            return false;
-        }
-        return true;
-    }
-
-    /* (non-Javadoc)
-     * @see java.lang.Object#toString()
-     */
-    @Override
-    @SuppressWarnings("nls")
-    public String toString() {
-        return "TmfBlockFilter [fStartIndex=" + fStartIndex + ", fEndIndex=" + fEndIndex + ", fNbRequested=" + fNbRequested + "]";
-    }
-
-}
index 7161871e229eb442008122880c493738affe83d8..025657ab0d1d66d8bd55ddf282df10d893f976f8 100644 (file)
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2009, 2010, 2012 Ericsson
+ * Copyright (c) 2009, 2010 Ericsson
  *
  * All rights reserved. This program and the accompanying materials are
  * made available under the terms of the Eclipse Public License v1.0 which
@@ -8,30 +8,29 @@
  *
  * Contributors:
  *   Francois Chouinard - Initial API and implementation
- *   Francois Chouinard - Rebased on TmfRequest and deprecated
  *******************************************************************************/
 
 package org.eclipse.linuxtools.tmf.core.request;
 
+import java.util.concurrent.CountDownLatch;
+
 import org.eclipse.linuxtools.internal.tmf.core.TmfCoreTracer;
 import org.eclipse.linuxtools.tmf.core.event.ITmfEvent;
-import org.eclipse.linuxtools.tmf.core.event.TmfTimeRange;
 
 /**
- * TmfDataRequests are used to obtain blocks of contiguous data from a data
- * provider. Open ranges can be used, especially for continuous streaming.
+ * TmfDataRequests are used to obtain blocks of contiguous data from a data provider. Open ranges can be used,
+ * especially for continuous streaming.
  * <p>
- * The request is processed asynchronously by a TmfProvider and, as blocks of
- * data become available, handleData() is invoked synchronously for each block.
- * Upon return, the data instances go out of scope and become eligible for gc.
- * It is is thus the responsibility of the requester to either clone or keep a
- * reference to the data it wishes to track specifically.
+ * The request is processed asynchronously by a TmfProvider and, as blocks of data become available, handleData() is
+ * invoked synchronously for each block. Upon return, the data instances go out of scope and become eligible for gc. It
+ * is is thus the responsibility of the requester to either clone or keep a reference to the data it wishes to track
+ * specifically.
  * <p>
- * This data block approach is used to avoid busting the heap for very large
- * trace files. The block size is configurable.
+ * This data block approach is used to avoid busting the heap for very large trace files. The block size is
+ * configurable.
  * <p>
- * The TmfProvider indicates that the request is completed by calling done().
- * The request can be canceled at any time with cancel().
+ * The TmfProvider indicates that the request is completed by calling done(). The request can be canceled at any time
+ * with cancel().
  * <p>
  * Typical usage:
  *
@@ -61,21 +60,17 @@ import org.eclipse.linuxtools.tmf.core.event.TmfTimeRange;
  * </i></code>
  * </pre>
  *
- * TODO: Consider decoupling from "time range", "rank", etc and for the more
- * generic notion of "criteria". This would allow to extend for "time range",
- * etc instead of providing specialized constructors. This also means removing
- * the criteria info from the data structure (with the possible exception of
- * fNbRequested). The nice thing about it is that it would prepare us well for
- * the coming generation of analysis tools.
+ * TODO: Consider decoupling from "time range", "rank", etc and for the more generic notion of "criteria". This would
+ * allow to extend for "time range", etc instead of providing specialized constructors. This also means removing the
+ * criteria info from the data structure (with the possible exception of fNbRequested). The nice thing about it is that
+ * it would prepare us well for the coming generation of analysis tools.
  *
  * TODO: Implement request failures (codes, etc...)
  *
+ * @version 1.0
  * @author Francois Chouinard
- * @version 1.1
  */
-@Deprecated
-@SuppressWarnings("deprecation")
-public abstract class TmfDataRequest extends TmfRequest implements ITmfDataRequest {
+public abstract class TmfDataRequest implements ITmfDataRequest {
 
     // ------------------------------------------------------------------------
     // Constants
@@ -87,19 +82,48 @@ public abstract class TmfDataRequest extends TmfRequest implements ITmfDataReque
     /** The request count for all the events */
     public static final int ALL_DATA = Integer.MAX_VALUE;
 
+    private static int fRequestNumber = 0;
+
     // ------------------------------------------------------------------------
     // Attributes
     // ------------------------------------------------------------------------
 
-    private final TmfEventTypeFilter fEventTypeFilter;
+    private final Class<? extends ITmfEvent> fDataType;
+    private final ExecutionType fExecType;
+
+    /** A unique request ID */
+    private final int fRequestId;
+
+    /** The index (rank) of the requested event */
+    protected long fIndex;
+
+    /** The number of requested events (ALL_DATA for all) */
+    protected int fNbRequested;
 
     /** The block size (for BG requests) */
     private final int fBlockSize;
 
+    /** The number of reads so far */
+    private int fNbRead;
+
+    private final CountDownLatch startedLatch = new CountDownLatch(1);
+    private final CountDownLatch completedLatch = new CountDownLatch(1);
+    private boolean fRequestRunning;
+    private boolean fRequestCompleted;
+    private boolean fRequestFailed;
+    private boolean fRequestCanceled;
+
     // ------------------------------------------------------------------------
     // Constructors
     // ------------------------------------------------------------------------
 
+    /**
+     * Resets the request counter (used for testing)
+     */
+    public static void reset() {
+        fRequestNumber = 0;
+    }
+
     /**
      * Request all the events of a given type (high priority)
      * Events are returned in blocks of the default size (DEFAULT_BLOCK_SIZE).
@@ -193,12 +217,18 @@ public abstract class TmfDataRequest extends TmfRequest implements ITmfDataReque
      * @param priority the requested execution priority
      */
     public TmfDataRequest(Class<? extends ITmfEvent> dataType, long index, int nbRequested, int blockSize, ExecutionType priority) {
-        super(TmfTimeRange.ETERNITY, index, nbRequested,
-              priority == ITmfDataRequest.ExecutionType.FOREGROUND ? ITmfRequest.TmfRequestPriority.HIGH : ITmfRequest.TmfRequestPriority.NORMAL);
-        fEventTypeFilter = new TmfEventTypeFilter(dataType);
-        addEventFilter(fEventTypeFilter);
-
+        fRequestId = fRequestNumber++;
+        fDataType = dataType;
+        fIndex = index;
+        fNbRequested = nbRequested;
         fBlockSize = blockSize;
+        fExecType = priority;
+        fNbRead = 0;
+
+        fRequestRunning = false;
+        fRequestCompleted = false;
+        fRequestFailed = false;
+        fRequestCanceled = false;
 
         if (!(this instanceof ITmfEventRequest) && TmfCoreTracer.isRequestTraced()) {
             String type = getClass().getName();
@@ -224,12 +254,20 @@ public abstract class TmfDataRequest extends TmfRequest implements ITmfDataReque
     // Accessors
     // ------------------------------------------------------------------------
 
+    /**
+     * @return the request ID
+     */
+    @Override
+    public int getRequestId() {
+        return fRequestId;
+    }
+
     /**
      * @return the index of the first event requested
      */
     @Override
     public long getIndex() {
-        return getStartIndex();
+        return fIndex;
     }
 
     /**
@@ -237,17 +275,15 @@ public abstract class TmfDataRequest extends TmfRequest implements ITmfDataReque
      */
     @Override
     public ExecutionType getExecType() {
-        return getRequestPriority() == ITmfRequest.TmfRequestPriority.HIGH ?
-                ITmfDataRequest.ExecutionType.FOREGROUND : ITmfDataRequest.ExecutionType.BACKGROUND;
+        return fExecType;
     }
 
-    /* (non-Javadoc)
-     * @see org.eclipse.linuxtools.tmf.core.request.ITmfRequest#getNbRequested()
+    /**
+     * @return the number of requested events (ALL_DATA = all)
      */
     @Override
-    public synchronized long getNbRequested() {
-        long nbRequested = super.getNbRequested();
-        return (nbRequested > 0 && nbRequested < Integer.MAX_VALUE) ? nbRequested : Integer.MAX_VALUE;
+    public int getNbRequested() {
+        return fNbRequested;
     }
 
     /**
@@ -263,7 +299,39 @@ public abstract class TmfDataRequest extends TmfRequest implements ITmfDataReque
      */
     @Override
     public synchronized int getNbRead() {
-        return (int) getNbEventsRead();
+        return fNbRead;
+    }
+
+    /**
+     * @return indicates if the request is currently running
+     */
+    @Override
+    public synchronized boolean isRunning() {
+        return fRequestRunning;
+    }
+
+    /**
+     * @return indicates if the request is completed
+     */
+    @Override
+    public synchronized boolean isCompleted() {
+        return fRequestCompleted;
+    }
+
+    /**
+     * @return indicates if the request has failed
+     */
+    @Override
+    public synchronized boolean isFailed() {
+        return fRequestFailed;
+    }
+
+    /**
+     * @return indicates if the request is canceled
+     */
+    @Override
+    public synchronized boolean isCancelled() {
+        return fRequestCanceled;
     }
 
     /**
@@ -271,7 +339,7 @@ public abstract class TmfDataRequest extends TmfRequest implements ITmfDataReque
      */
     @Override
     public Class<? extends ITmfEvent> getDataType() {
-        return fEventTypeFilter.getEventType();
+        return fDataType;
     }
 
     // ------------------------------------------------------------------------
@@ -285,11 +353,11 @@ public abstract class TmfDataRequest extends TmfRequest implements ITmfDataReque
      *            the start time index
      */
     protected void setIndex(int index) {
-        setStartIndex(index);
+        fIndex = index;
     }
 
     // ------------------------------------------------------------------------
-    // Operations
+    // Operators
     // ------------------------------------------------------------------------
 
     /**
@@ -309,18 +377,148 @@ public abstract class TmfDataRequest extends TmfRequest implements ITmfDataReque
      */
     @Override
     public void handleData(ITmfEvent data) {
-        super.handleEvent(data);
+        if (data != null) {
+            fNbRead++;
+        }
+    }
+
+    @Override
+    public void handleStarted() {
+        if (TmfCoreTracer.isRequestTraced()) {
+            TmfCoreTracer.traceRequest(this, "STARTED"); //$NON-NLS-1$
+        }
+    }
+
+    /**
+     * Handle the completion of the request. It is called when there is no
+     * more data available either because:
+     * - the request completed normally
+     * - the request failed
+     * - the request was canceled
+     *
+     * As a convenience, handleXXXX methods are provided. They are meant to be
+     * overridden by the application if it needs to handle these conditions.
+     */
+    @Override
+    public void handleCompleted() {
+        boolean requestFailed = false;
+        boolean requestCanceled = false;
+        synchronized (this) {
+            requestFailed = fRequestFailed;
+            requestCanceled = fRequestCanceled;
+        }
+
+        if (requestFailed) {
+            handleFailure();
+        } else if (requestCanceled) {
+            handleCancel();
+        } else {
+            handleSuccess();
+        }
+        if (TmfCoreTracer.isRequestTraced()) {
+            TmfCoreTracer.traceRequest(this, "COMPLETED (" + fNbRead + " events read)"); //$NON-NLS-1$ //$NON-NLS-2$
+        }
     }
 
-    /* (non-Javadoc)
-     * @see org.eclipse.linuxtools.tmf.core.request.TmfRequest#handleEvent(org.eclipse.linuxtools.tmf.core.event.ITmfEvent)
+    @Override
+    public void handleSuccess() {
+        if (TmfCoreTracer.isRequestTraced()) {
+            TmfCoreTracer.traceRequest(this, "SUCCEEDED"); //$NON-NLS-1$
+        }
+    }
+
+    @Override
+    public void handleFailure() {
+        if (TmfCoreTracer.isRequestTraced()) {
+            TmfCoreTracer.traceRequest(this, "FAILED"); //$NON-NLS-1$
+        }
+    }
+
+    @Override
+    public void handleCancel() {
+        if (TmfCoreTracer.isRequestTraced()) {
+            TmfCoreTracer.traceRequest(this, "CANCELLED"); //$NON-NLS-1$
+        }
+    }
+
+    /**
+     * To suspend the client thread until the request starts (or is canceled).
+     *
+     * @throws InterruptedException
+     *             If the thread was interrupted while waiting
+     */
+    public void waitForStart() throws InterruptedException {
+        while (!fRequestRunning) {
+            startedLatch.await();
+        }
+    }
+
+    /**
+     * To suspend the client thread until the request completes (or is
+     * canceled).
      *
-     * The TmfEventThread now calls handleEvent(). To ensure that handleData()
-     * overrides are correctly handled, the method is overridden here.
+     * @throws InterruptedException
+     *             If the thread was interrupted while waiting
+     */
+    @Override
+    public void waitForCompletion() throws InterruptedException {
+        while (!fRequestCompleted) {
+            completedLatch.await();
+        }
+    }
+
+    /**
+     * Called by the request processor upon starting to service the request.
      */
     @Override
-    public synchronized void handleEvent(ITmfEvent data) {
-        handleData(data);
+    public void start() {
+        synchronized (this) {
+            fRequestRunning = true;
+        }
+        handleStarted();
+        startedLatch.countDown();
+    }
+
+    /**
+     * Called by the request processor upon completion.
+     */
+    @Override
+    public void done() {
+        synchronized (this) {
+            if (!fRequestCompleted) {
+                fRequestRunning = false;
+                fRequestCompleted = true;
+            } else {
+                return;
+            }
+        }
+        try {
+            handleCompleted();
+        } finally {
+            completedLatch.countDown();
+        }
+    }
+
+    /**
+     * Called by the request processor upon failure.
+     */
+    @Override
+    public void fail() {
+        synchronized (this) {
+            fRequestFailed = true;
+        }
+        done();
+    }
+
+    /**
+     * Called by the request processor upon cancellation.
+     */
+    @Override
+    public void cancel() {
+        synchronized (this) {
+            fRequestCanceled = true;
+        }
+        done();
     }
 
     // ------------------------------------------------------------------------
@@ -335,13 +533,10 @@ public abstract class TmfDataRequest extends TmfRequest implements ITmfDataReque
 
     @Override
     public boolean equals(Object other) {
-        if (other == this) {
-            return true;
-        }
         if (other instanceof TmfDataRequest) {
             TmfDataRequest request = (TmfDataRequest) other;
-            return (request.fEventTypeFilter.getEventType() == fEventTypeFilter.getEventType()) && (request.getStartIndex() == getStartIndex())
-                    && (request.getNbRequested() == getNbRequested());
+            return (request.fDataType == fDataType) && (request.fIndex == fIndex)
+                    && (request.fNbRequested == fNbRequested);
         }
         return false;
     }
@@ -349,7 +544,7 @@ public abstract class TmfDataRequest extends TmfRequest implements ITmfDataReque
     @Override
     @SuppressWarnings("nls")
     public String toString() {
-        return "[TmfDataRequest(" + getRequestId() + "," + fEventTypeFilter.getEventType().getSimpleName() + "," + getStartIndex() + "," + getNbRequested()
+        return "[TmfDataRequest(" + fRequestId + "," + fDataType.getSimpleName() + "," + fIndex + "," + fNbRequested
                 + "," + getBlockSize() + ")]";
     }
 }
index ba79e3bcf40c2b6e642abb11944b56f60d85c9ec..653eaf6a7920402e798caccc6dc4672250bd3efe 100644 (file)
@@ -22,14 +22,13 @@ import org.eclipse.linuxtools.tmf.core.event.TmfTimeRange;
  * @version 1.0
  * @author Francois Chouinard
  */
-@SuppressWarnings("deprecation")
 public abstract class TmfEventRequest extends TmfDataRequest implements ITmfEventRequest {
 
     // ------------------------------------------------------------------------
     // Attributes
     // ------------------------------------------------------------------------
 
-    private final TmfRangeFilter fRangeFilter;  // The requested events time range
+    private final TmfTimeRange fRange; // The requested events time range
 
     // ------------------------------------------------------------------------
     // Constructors
@@ -158,8 +157,7 @@ public abstract class TmfEventRequest extends TmfDataRequest implements ITmfEven
      */
     public TmfEventRequest(Class<? extends ITmfEvent> dataType, TmfTimeRange range, long index, int nbRequested, int blockSize, ExecutionType priority) {
        super(dataType, index, nbRequested, blockSize, priority);
-       fRangeFilter = new TmfRangeFilter(range);
-       addEventFilter(fRangeFilter);
+       fRange = range;
 
         if (TmfCoreTracer.isRequestTraced()) {
             String type = getClass().getName();
@@ -183,7 +181,7 @@ public abstract class TmfEventRequest extends TmfDataRequest implements ITmfEven
      */
     @Override
        public TmfTimeRange getRange() {
-        return fRangeFilter.getTimeRange();
+        return fRange;
     }
 
     // ------------------------------------------------------------------------
@@ -215,7 +213,7 @@ public abstract class TmfEventRequest extends TmfDataRequest implements ITmfEven
     public boolean equals(Object other) {
        if (other instanceof TmfEventRequest) {
                TmfEventRequest request = (TmfEventRequest) other;
-               return super.equals(other) && request.fRangeFilter.getTimeRange().equals(fRangeFilter.getTimeRange());
+               return super.equals(other) && request.fRange.equals(fRange);
        }
        return false;
     }
diff --git a/org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/request/TmfEventTypeFilter.java b/org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/request/TmfEventTypeFilter.java
deleted file mode 100644 (file)
index 8bb67e8..0000000
+++ /dev/null
@@ -1,139 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2012 Ericsson
- *
- * 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *   Francois Chouinard - Initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.linuxtools.tmf.core.request;
-
-import org.eclipse.linuxtools.tmf.core.event.ITmfEvent;
-import org.eclipse.linuxtools.tmf.core.filter.ITmfFilter;
-
-/**
- * An event filter base on the requested data type.
- *
- * @author Francois Chouinard
- * @version 1.0
- * @since 2.0
- */
-public final class TmfEventTypeFilter implements ITmfFilter {
-
-    // ------------------------------------------------------------------------
-    // Constants
-    // ------------------------------------------------------------------------
-
-    /**
-     * Filter for all types of events
-     */
-    public static final TmfEventTypeFilter ALL_EVENTS = new TmfEventTypeFilter(ITmfEvent.class);
-
-    // ------------------------------------------------------------------------
-    // Attributes
-    // ------------------------------------------------------------------------
-
-    /**
-     * Event type
-     */
-    private final Class<? extends ITmfEvent> fEventType;
-
-    // ------------------------------------------------------------------------
-    // Constructors
-    // ------------------------------------------------------------------------
-
-    /**
-     * Standard constructor
-     *
-     * @param eventType the event type
-     */
-    public TmfEventTypeFilter(Class<? extends ITmfEvent> eventType) {
-        fEventType = eventType != null ? eventType : ITmfEvent.class;
-    }
-
-    /**
-     * Copy constructor
-     *
-     * @param other the other filter
-     */
-    public TmfEventTypeFilter(TmfEventTypeFilter other) {
-        fEventType = other.fEventType;
-    }
-
-    // ------------------------------------------------------------------------
-    // Getters
-    // ------------------------------------------------------------------------
-
-    /**
-     * @return the event type
-     */
-    public Class<? extends ITmfEvent> getEventType() {
-        return fEventType;
-    }
-
-    // ------------------------------------------------------------------------
-    // ITmfFilter
-    // ------------------------------------------------------------------------
-
-    /* (non-Javadoc)
-     * @see org.eclipse.linuxtools.tmf.core.filter.ITmfFilter#matches(org.eclipse.linuxtools.tmf.core.event.ITmfEvent)
-     */
-    @Override
-    public boolean matches(ITmfEvent event) {
-        return fEventType.isInstance(event);
-    }
-
-    // ------------------------------------------------------------------------
-    // Object
-    // ------------------------------------------------------------------------
-
-    /* (non-Javadoc)
-     * @see java.lang.Object#hashCode()
-     */
-    @Override
-    public int hashCode() {
-        final int prime = 31;
-        int result = 1;
-        result = prime * result + ((fEventType == null) ? 0 : fEventType.hashCode());
-        return result;
-    }
-
-    /* (non-Javadoc)
-     * @see java.lang.Object#equals(java.lang.Object)
-     */
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj == null) {
-            return false;
-        }
-        if (!(obj instanceof TmfEventTypeFilter)) {
-            return false;
-        }
-        TmfEventTypeFilter other = (TmfEventTypeFilter) obj;
-        if (fEventType == null) {
-            if (other.fEventType != null) {
-                return false;
-            }
-        } else if (!fEventType.equals(other.fEventType)) {
-            return false;
-        }
-        return true;
-    }
-
-    /* (non-Javadoc)
-     * @see java.lang.Object#toString()
-     */
-    @Override
-    @SuppressWarnings("nls")
-    public String toString() {
-        return "TmfEventTypeFilter [fEventType=" + fEventType.getSimpleName() + "]";
-    }
-
-}
diff --git a/org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/request/TmfRangeFilter.java b/org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/request/TmfRangeFilter.java
deleted file mode 100644 (file)
index b76414c..0000000
+++ /dev/null
@@ -1,129 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2012 Ericsson
- *
- * 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *   Francois Chouinard - Initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.linuxtools.tmf.core.request;
-
-import org.eclipse.linuxtools.tmf.core.event.ITmfEvent;
-import org.eclipse.linuxtools.tmf.core.event.TmfTimeRange;
-import org.eclipse.linuxtools.tmf.core.filter.ITmfFilter;
-
-/**
- * An event filter based on the requested time range.
- *
- * @author Francois Chouinard
- * @version 1.0
- * @since 2.0
- */
-public final class TmfRangeFilter implements ITmfFilter {
-
-    // ------------------------------------------------------------------------
-    // Constants
-    // ------------------------------------------------------------------------
-
-    /**
-     * Filter for all events by time range
-     */
-    public static final TmfRangeFilter ALL_EVENTS = new TmfRangeFilter(TmfTimeRange.ETERNITY);
-
-    // ------------------------------------------------------------------------
-    // Attributes
-    // ------------------------------------------------------------------------
-
-    /** The time range requested */
-    private final TmfTimeRange fTimeRange;
-
-    // ------------------------------------------------------------------------
-    // Constructors
-    // ------------------------------------------------------------------------
-
-    /**
-     * Standard constructor
-     *
-     * @param timeRange the time range of interest
-     */
-    public TmfRangeFilter(TmfTimeRange timeRange) {
-        fTimeRange = timeRange != null ? timeRange : TmfTimeRange.ETERNITY;
-    }
-
-    /**
-     * Copy constructor
-     *
-     * @param other the other filter
-     */
-    public TmfRangeFilter(TmfRangeFilter other) {
-        fTimeRange = other.fTimeRange;
-    }
-
-    // ------------------------------------------------------------------------
-    // Getters
-    // ------------------------------------------------------------------------
-
-    /**
-     * @return the filter time range
-     */
-    public TmfTimeRange getTimeRange() {
-        return fTimeRange;
-    }
-
-    // ------------------------------------------------------------------------
-    // ITmfFilter
-    // ------------------------------------------------------------------------
-
-    /* (non-Javadoc)
-     * @see org.eclipse.linuxtools.tmf.core.filter.ITmfFilter#matches(org.eclipse.linuxtools.tmf.core.event.ITmfEvent)
-     */
-    @Override
-    public boolean matches(ITmfEvent event) {
-        return fTimeRange.contains(event.getTimestamp());
-    }
-
-    // ------------------------------------------------------------------------
-    // Object
-    // ------------------------------------------------------------------------
-
-    @Override
-    public int hashCode() {
-        final int prime = 31;
-        int result = 1;
-        result = prime * result + ((fTimeRange == null) ? 0 : fTimeRange.hashCode());
-        return result;
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj == null) {
-            return false;
-        }
-        if (!(obj instanceof TmfRangeFilter)) {
-            return false;
-        }
-        TmfRangeFilter other = (TmfRangeFilter) obj;
-        if (fTimeRange == null) {
-            if (other.fTimeRange != null) {
-                return false;
-            }
-        } else if (!fTimeRange.equals(other.fTimeRange)) {
-            return false;
-        }
-        return true;
-    }
-
-    @Override
-    @SuppressWarnings("nls")
-    public String toString() {
-        return "TmfRangeFilter [fTimeRange=" + fTimeRange + "]";
-    }
-
-}
diff --git a/org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/request/TmfRequest.java b/org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/request/TmfRequest.java
deleted file mode 100644 (file)
index 0592089..0000000
+++ /dev/null
@@ -1,630 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2012 Ericsson
- *
- * 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *   Francois Chouinard - Initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.linuxtools.tmf.core.request;
-
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.concurrent.CountDownLatch;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.linuxtools.internal.tmf.core.Activator;
-import org.eclipse.linuxtools.internal.tmf.core.TmfCoreTracer;
-import org.eclipse.linuxtools.tmf.core.event.ITmfEvent;
-import org.eclipse.linuxtools.tmf.core.event.TmfTimeRange;
-import org.eclipse.linuxtools.tmf.core.filter.ITmfFilter;
-
-/**
- * A generic request implementation.
- *
- * @author Francois Chouinard
- * @version 1.0
- * @since 2.0
- */
-public abstract class TmfRequest implements ITmfRequest, ITmfFilter {
-
-    // ------------------------------------------------------------------------
-    // Static attributes
-    // ------------------------------------------------------------------------
-
-    /** The plug-in ID */
-    private static final String PLUGIN_ID = Activator.PLUGIN_ID;
-
-    /** The unique request number */
-    private static int fRequestCounter = 0;
-
-    // ------------------------------------------------------------------------
-    // Attributes
-    // ------------------------------------------------------------------------
-
-    /** The request unique ID */
-    private final int fRequestId;
-
-    /** The request type */
-    private final TmfRequestPriority fRequestPriority;
-
-    /** The event filters */
-    private Map<Class<? extends ITmfFilter>, ITmfFilter> fEventFilters = new HashMap<Class<? extends ITmfFilter>, ITmfFilter>();
-
-    /** The event block filter - an optimization */
-    private TmfBlockFilter fBlockFilter;
-
-    /** The event range filter - an optimization */
-    private TmfRangeFilter fRangeFilter;
-
-    /** The number of events reads so far */
-    private long fNbEventsRead;
-
-    /** The request execution state */
-    private TmfRequestState fRequestState;
-
-    /** The request completion status */
-    protected IStatus fRequestStatus;
-
-    /** The parent request */
-    private ITmfRequest fParentRequest;
-
-    /** Latch used for request processing start */
-    private final CountDownLatch startedLatch = new CountDownLatch(1);
-
-    /** Latch used for request completion */
-    private final CountDownLatch completedLatch = new CountDownLatch(1);
-
-    // ------------------------------------------------------------------------
-    // Constructors
-    // ------------------------------------------------------------------------
-
-    /**
-     * Constructor for all the events at normal priority
-     */
-    public TmfRequest() {
-        this(TmfRequestPriority.NORMAL);
-    }
-
-    /**
-     * Constructor for all the events at the specified  priority
-     *
-     * @param priority the request priority
-     */
-    public TmfRequest(TmfRequestPriority priority) {
-        this(TmfTimeRange.ETERNITY, 0, ALL_EVENTS, priority);
-    }
-
-    /**
-     * Constructor for all the events in a time range
-     *
-     * @param timeRange The time range
-     */
-    public TmfRequest(TmfTimeRange timeRange) {
-        this(timeRange, 0, ALL_EVENTS, TmfRequestPriority.NORMAL);
-    }
-
-    /**
-     * Constructor for all the events in a block
-     *
-     * @param startIndex  The start index
-     * @param nbRequested The number of events requested
-     */
-    public TmfRequest(long startIndex, long nbRequested) {
-        this(TmfTimeRange.ETERNITY, startIndex, nbRequested, TmfRequestPriority.NORMAL);
-    }
-
-    /**
-     * Standard constructor
-     *
-     * @param timeRange   The time range
-     * @param startIndex  The start index
-     * @param nbRequested The number of events requested
-     */
-    public TmfRequest(TmfTimeRange timeRange, long startIndex, long nbRequested) {
-        this(timeRange, startIndex, nbRequested, TmfRequestPriority.NORMAL);
-    }
-
-    /**
-     * Full constructor
-     *
-     * @param timeRange   Time range of interest
-     * @param nbRequested Number of events requested
-     * @param startIndex  Index of the first event requested
-     * @param priority    Request priority
-     */
-    public TmfRequest(TmfTimeRange timeRange, long startIndex, long nbRequested, TmfRequestPriority priority) {
-        fRequestId = fRequestCounter++;
-        fRequestPriority = priority;
-        fBlockFilter = new TmfBlockFilter(startIndex, nbRequested);
-        fRangeFilter = new TmfRangeFilter(timeRange);
-        fEventFilters.put(TmfBlockFilter.class, fBlockFilter);
-        fEventFilters.put(TmfRangeFilter.class, fRangeFilter);
-
-        fRequestState = TmfRequestState.PENDING;
-        fRequestStatus = null;
-    }
-
-    /**
-     * Copy constructor
-     *
-     * @param other the other request
-     */
-    public TmfRequest(TmfRequest other) {
-        this(null, 0, 0, other.fRequestPriority);
-        setEventFilters(other.getEventFilters());
-    }
-
-    // ------------------------------------------------------------------------
-    // Getters and Setters
-    // ------------------------------------------------------------------------
-
-    /* (non-Javadoc)
-     * @see org.eclipse.linuxtools.tmf.core.request.ITmfRequest#getRequestId()
-     */
-    @Override
-    public int getRequestId() {
-        return fRequestId;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.linuxtools.tmf.core.request.ITmfRequest#getRequestPriority()
-     */
-    @Override
-    public TmfRequestPriority getRequestPriority() {
-        return fRequestPriority;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.linuxtools.tmf.core.request.ITmfRequest#getTimeRange()
-     */
-    @Override
-    public TmfTimeRange getTimeRange() {
-        return fRangeFilter.getTimeRange();
-    }
-
-    /**
-     * @param timeRange the new time range
-     */
-    protected void setTimeRange(final TmfTimeRange timeRange) {
-        fRangeFilter = new TmfRangeFilter(timeRange);
-        addEventFilter(fRangeFilter);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.linuxtools.tmf.core.request.ITmfRequest#getNbRequested()
-     */
-    @Override
-    public long getNbRequested() {
-        return fBlockFilter.getNbRequested();
-    }
-
-    /**
-     * @param nbRequested the number of events requested
-     */
-    protected void setNbRequested(long nbRequested) {
-        fBlockFilter = new TmfBlockFilter(fBlockFilter.getStartIndex(), nbRequested);
-        fRangeFilter = new TmfRangeFilter(fRangeFilter.getTimeRange());
-        addEventFilter(fBlockFilter);
-        addEventFilter(fRangeFilter);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.linuxtools.tmf.core.request.ITmfRequest#getStartIndex()
-     */
-    @Override
-    public long getStartIndex() {
-        return fBlockFilter.getStartIndex();
-    }
-
-    /**
-     * @param index the new start index
-     */
-    protected void setStartIndex(long index) {
-        fBlockFilter = new TmfBlockFilter(index, fBlockFilter.getNbRequested());
-        addEventFilter(fBlockFilter);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.linuxtools.tmf.core.request.ITmfRequest#getEventFilter(java.lang.Class)
-     */
-    @Override
-    public ITmfFilter getEventFilter(Class<?> filterType) {
-        return fEventFilters.get(filterType);
-    }
-
-    /**
-     * @return the list of event filters
-     */
-    protected Collection<ITmfFilter> getEventFilters() {
-        return fEventFilters.values();
-    }
-
-    /**
-     * @param filters the new list of event filters
-     */
-    public void setEventFilters(Collection<ITmfFilter> filters) {
-        clearFilters();
-        for (ITmfFilter filter : filters) {
-            addEventFilter(filter);
-        }
-    }
-
-    private void clearFilters() {
-        fEventFilters.clear();
-        fBlockFilter = TmfBlockFilter.ALL_EVENTS;
-        fRangeFilter = TmfRangeFilter.ALL_EVENTS;
-        fEventFilters.put(TmfBlockFilter.class, fBlockFilter);
-        fEventFilters.put(TmfRangeFilter.class, fRangeFilter);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.linuxtools.tmf.core.request.ITmfRequest#addEventFilter(org.eclipse.linuxtools.tmf.core.filter.ITmfFilter)
-     */
-    @Override
-    public void addEventFilter(ITmfFilter filter) {
-        if (filter instanceof TmfBlockFilter) {
-            fBlockFilter = (TmfBlockFilter) filter;
-        } else if (filter instanceof TmfRangeFilter) {
-            fRangeFilter = (TmfRangeFilter) filter;
-        }
-        fEventFilters.put(filter.getClass(), filter);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.linuxtools.tmf.core.request.ITmfRequest#getNbEventRead()
-     */
-    @Override
-    public long getNbEventsRead() {
-        return fNbEventsRead;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.linuxtools.tmf.core.request.ITmfRequest#setParent(org.eclipse.linuxtools.tmf.core.request.ITmfRequest)
-     */
-    @Override
-    public void setParent(ITmfRequest parent) {
-        fParentRequest = parent;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.linuxtools.tmf.core.request.ITmfRequest#getParent()
-     */
-    @Override
-    public ITmfRequest getParent() {
-        return fParentRequest;
-    }
-
-    // ------------------------------------------------------------------------
-    // Request execution state
-    // ------------------------------------------------------------------------
-
-    /* (non-Javadoc)
-     * @see org.eclipse.linuxtools.tmf.core.request.ITmfRequest#getState()
-     */
-    @Override
-    public TmfRequestState getState() {
-        return fRequestState;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.linuxtools.tmf.core.request.ITmfRequest#isRunning()
-     */
-    @Override
-    public boolean isRunning() {
-        return fRequestState == TmfRequestState.RUNNING;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.linuxtools.tmf.core.request.ITmfRequest#isCompleted()
-     */
-    @Override
-    public boolean isCompleted() {
-        return fRequestState == TmfRequestState.COMPLETED;
-    }
-
-    // ------------------------------------------------------------------------
-    // Request completion status
-    // ------------------------------------------------------------------------
-
-    /* (non-Javadoc)
-     * @see org.eclipse.linuxtools.tmf.core.request.ITmfRequest#getStatus()
-     */
-    @Override
-    public IStatus getStatus() {
-        return fRequestStatus;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.linuxtools.tmf.core.request.ITmfRequest#isOK()
-     */
-    @Override
-    public boolean isOK() {
-        return fRequestStatus != null && fRequestStatus.getSeverity() == IStatus.OK;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.linuxtools.tmf.core.request.ITmfRequest#isFailed()
-     */
-    @Override
-    public boolean isFailed() {
-        return fRequestStatus != null && fRequestStatus.getSeverity() == IStatus.ERROR;
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.linuxtools.tmf.core.request.ITmfRequest#isCancelled()
-     */
-    @Override
-    public boolean isCancelled() {
-        return fRequestStatus != null && fRequestStatus.getSeverity() == IStatus.CANCEL;
-    }
-
-    // ------------------------------------------------------------------------
-    // Request operations
-    // ------------------------------------------------------------------------
-
-    /* (non-Javadoc)
-     * @see org.eclipse.linuxtools.tmf.core.request.ITmfRequest#start()
-     */
-    @Override
-    public void start() {
-        synchronized (this) {
-            fRequestState  = TmfRequestState.RUNNING;
-        }
-        handleStarted();
-        startedLatch.countDown();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.linuxtools.tmf.core.request.ITmfRequest#done()
-     */
-    @Override
-    public void done() {
-        synchronized (this) {
-            if (fRequestState != TmfRequestState.COMPLETED) {
-                fRequestState = TmfRequestState.COMPLETED;
-                if (fRequestStatus == null) {
-                    fRequestStatus = new Status(IStatus.OK, PLUGIN_ID, "OK"); //$NON-NLS-1$
-                }
-            } else {
-                return;
-            }
-        }
-        try {
-            handleCompleted();
-        } finally {
-            completedLatch.countDown();
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.linuxtools.tmf.core.request.ITmfRequest#fail()
-     */
-    @Override
-    public void fail() {
-        synchronized (this) {
-            if (fRequestStatus == null) {
-                fRequestStatus = new Status(IStatus.ERROR, PLUGIN_ID, "FAILED"); //$NON-NLS-1$
-            }
-        }
-        done();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.linuxtools.tmf.core.request.ITmfRequest#cancel()
-     */
-    @Override
-    public void cancel() {
-        synchronized (this) {
-            if (fRequestStatus == null) {
-                fRequestStatus = new Status(IStatus.CANCEL, PLUGIN_ID, "CANCEL"); //$NON-NLS-1$
-            }
-        }
-        done();
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.linuxtools.tmf.core.request.ITmfRequest#waitForStart()
-     */
-    @Override
-    public void waitForStart() throws InterruptedException {
-        while (!isRunning() && !isCompleted()) {
-            startedLatch.await();
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.linuxtools.tmf.core.request.ITmfRequest#waitForCompletion()
-     */
-    @Override
-    public void waitForCompletion() throws InterruptedException {
-        while (!isCompleted()) {
-            completedLatch.await();
-        }
-    }
-
-    // ------------------------------------------------------------------------
-    // Request processing hooks
-    // ------------------------------------------------------------------------
-
-    /* (non-Javadoc)
-     * @see org.eclipse.linuxtools.tmf.core.request.ITmfRequest#handleStarted()
-     */
-    @Override
-    public void handleStarted() {
-        if (TmfCoreTracer.isRequestTraced()) {
-            TmfCoreTracer.traceRequest(this, "STARTED"); //$NON-NLS-1$
-        }
-    }
-
-    /**
-     * Handle incoming event one at a time i.e. this method is invoked
-     * for every data item obtained by the request.
-     *
-     * @param event a piece of data
-     */
-    @Override
-    public synchronized void handleEvent(ITmfEvent event) {
-        if (event != null) {
-            fNbEventsRead++;
-        }
-    }
-
-    /**
-     * Handle the completion of the request. It is called when there is no
-     * more data available either because:
-     * - the request completed normally
-     * - the request failed
-     * - the request was canceled
-     *
-     * As a convenience, handleXXXX methods are provided. They are meant to be
-     * overridden by the application if it needs to handle these conditions.
-     */
-    @Override
-    public synchronized void handleCompleted() {
-        if (isFailed()) {
-            handleFailure();
-        } else if (isCancelled()) {
-            handleCancel();
-        } else {
-            handleSuccess();
-        }
-        notifyParent(this);
-        if (TmfCoreTracer.isRequestTraced()) {
-            TmfCoreTracer.traceRequest(this, "COMPLETED (" + fNbEventsRead + " events read)"); //$NON-NLS-1$ //$NON-NLS-2$
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.linuxtools.tmf.core.request.ITmfRequest#notifyParent(org.eclipse.linuxtools.tmf.core.request.ITmfRequest)
-     */
-    @Override
-    public void notifyParent(ITmfRequest child) {
-        if (fParentRequest != null) {
-            fParentRequest.notifyParent(this);
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.linuxtools.tmf.core.request.ITmfRequest#handleSuccess()
-     */
-    @Override
-    public void handleSuccess() {
-        if (TmfCoreTracer.isRequestTraced()) {
-            TmfCoreTracer.traceRequest(this, "SUCCEEDED"); //$NON-NLS-1$
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.linuxtools.tmf.core.request.ITmfRequest#handleFailure()
-     */
-    @Override
-    public void handleFailure() {
-        if (TmfCoreTracer.isRequestTraced()) {
-            TmfCoreTracer.traceRequest(this, "FAILED"); //$NON-NLS-1$
-        }
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.linuxtools.tmf.core.request.ITmfRequest#handleCancel()
-     */
-    @Override
-    public void handleCancel() {
-        if (TmfCoreTracer.isRequestTraced()) {
-            TmfCoreTracer.traceRequest(this, "CANCELLED"); //$NON-NLS-1$
-        }
-    }
-
-    // ------------------------------------------------------------------------
-    // ITmfFilter
-    // ------------------------------------------------------------------------
-
-    /* (non-Javadoc)
-     * @see org.eclipse.linuxtools.tmf.core.filter.ITmfFilter#matches(org.eclipse.linuxtools.tmf.core.event.ITmfEvent)
-     */
-    @Override
-    public boolean matches(ITmfEvent event) {
-        for (ITmfFilter filter : fEventFilters.values()) {
-            if (!filter.matches(event)) {
-                return false;
-            }
-        }
-        return true;
-    }
-
-    // ------------------------------------------------------------------------
-    // Object
-    // ------------------------------------------------------------------------
-
-    /* (non-Javadoc)
-     * @see java.lang.Object#hashCode()
-     */
-    @Override
-    public int hashCode() {
-        final int prime = 31;
-        int result = 1;
-        result = prime * result + fRequestId;
-        result = prime * result + ((fRequestPriority == null) ? 0 : fRequestPriority.hashCode());
-        result = prime * result + ((fEventFilters == null) ? 0 : fEventFilters.hashCode());
-        result = prime * result + ((fBlockFilter == null) ? 0 : fBlockFilter.hashCode());
-        result = prime * result + ((fRangeFilter == null) ? 0 : fRangeFilter.hashCode());
-        return result;
-    }
-
-    /* (non-Javadoc)
-     * @see java.lang.Object#equals(java.lang.Object)
-     */
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj == null) {
-            return false;
-        }
-        if (!(obj instanceof TmfRequest)) {
-            return false;
-        }
-        TmfRequest other = (TmfRequest) obj;
-        if (fRequestPriority != other.fRequestPriority) {
-            return false;
-        }
-        // Check that our filters match other's
-        for (ITmfFilter filter : fEventFilters.values()) {
-            ITmfFilter filter2 = other.getEventFilter(filter.getClass());
-            if (filter2 == null) {
-                return false;
-            }
-            if (!filter.equals(filter2)) {
-                return false;
-            }
-        }
-        // Check that others' filters match ours
-        for (ITmfFilter filter : other.fEventFilters.values()) {
-            ITmfFilter filter2 = getEventFilter(filter.getClass());
-            if (filter2 == null) {
-                return false;
-            }
-            if (!filter.equals(filter2)) {
-                return false;
-            }
-        }
-        return true;
-    }
-
-    /* (non-Javadoc)
-     * @see java.lang.Object#toString()
-     */
-    @Override
-    @SuppressWarnings("nls")
-    public String toString() {
-        return "TmfRequest [fRequestId=" + fRequestId + "]";
-    }
-
-}
diff --git a/org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/request/TmfTraceFilter.java b/org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/request/TmfTraceFilter.java
deleted file mode 100644 (file)
index f89d11a..0000000
+++ /dev/null
@@ -1,143 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2012 Ericsson
- *
- * 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *   Francois Chouinard - Initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.linuxtools.tmf.core.request;
-
-import java.util.Arrays;
-
-import org.eclipse.linuxtools.tmf.core.event.ITmfEvent;
-import org.eclipse.linuxtools.tmf.core.filter.ITmfFilter;
-import org.eclipse.linuxtools.tmf.core.trace.ITmfTrace;
-
-/**
- * An event filter based on the event's trace.
- *
- * @author Francois Chouinard
- * @version 1.0
- * @since 2.0
- */
-public final class TmfTraceFilter implements ITmfFilter {
-
-    // ------------------------------------------------------------------------
-    // Constants
-    // ------------------------------------------------------------------------
-
-    /**
-     * Filter for all events by time range
-     */
-    public  static final TmfTraceFilter ALL_TRACES = new TmfTraceFilter(new ITmfTrace[0]);
-
-    // ------------------------------------------------------------------------
-    // Attributes
-    // ------------------------------------------------------------------------
-
-    /** The traces of interest */
-    private final ITmfTrace[] fTraces;
-
-    // ------------------------------------------------------------------------
-    // Constructors
-    // ------------------------------------------------------------------------
-
-    /**
-     * Default constructor
-     */
-    public TmfTraceFilter() {
-        this(ALL_TRACES);
-    }
-
-    /**
-     * Standard constructor
-     *
-     * @param traces the traces of interest
-     */
-    public TmfTraceFilter(ITmfTrace[] traces) {
-        fTraces = traces;
-    }
-
-    /**
-     * Copy constructor
-     *
-     * @param other the other filter
-     */
-    public TmfTraceFilter(TmfTraceFilter other) {
-        fTraces = other.fTraces;
-    }
-
-    // ------------------------------------------------------------------------
-    // Getters
-    // ------------------------------------------------------------------------
-
-    /**
-     * @return the filter traces
-     */
-    public ITmfTrace[] getTraces() {
-        return fTraces;
-    }
-
-    // ------------------------------------------------------------------------
-    // ITmfFilter
-    // ------------------------------------------------------------------------
-
-    /* (non-Javadoc)
-     * @see org.eclipse.linuxtools.tmf.core.filter.ITmfFilter#matches(org.eclipse.linuxtools.tmf.core.event.ITmfEvent)
-     */
-    @Override
-    public boolean matches(ITmfEvent event) {
-        // The empty set is the universal element
-        if (fTraces.length == 0) {
-            return true;
-        }
-        for (ITmfTrace trace : fTraces) {
-            if (event.getTrace() == trace) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    // ------------------------------------------------------------------------
-    // Object
-    // ------------------------------------------------------------------------
-
-    @Override
-    public int hashCode() {
-        final int prime = 31;
-        int result = 1;
-        result = prime * result + Arrays.hashCode(fTraces);
-        return result;
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj == null) {
-            return false;
-        }
-        if (!(obj instanceof TmfTraceFilter)) {
-            return false;
-        }
-        TmfTraceFilter other = (TmfTraceFilter) obj;
-        if (!Arrays.equals(fTraces, other.fTraces)) {
-            return false;
-        }
-        return true;
-    }
-
-    @Override
-    @SuppressWarnings("nls")
-    public String toString() {
-        return "TmfTraceFilter [fTraces=" + Arrays.toString(fTraces) + "]";
-    }
-
-}
index 683f1788154c198e86c761815b7cc42b0b57ddcf..4bd9e4dc3d81a6f1c2f1bd4b2263549e12f87592 100644 (file)
@@ -42,7 +42,6 @@ import org.eclipse.linuxtools.tmf.core.trace.ITmfTrace;
  * @author Alexandre Montplaisir
  * @since 2.0
  */
-@SuppressWarnings("deprecation")
 public class TmfEventsStatistics implements ITmfStatistics {
 
     /* All timestamps should be stored in nanoseconds in the statistics backend */
@@ -264,8 +263,8 @@ public class TmfEventsStatistics implements ITmfStatistics {
         }
 
         @Override
-        public synchronized void handleEvent(final ITmfEvent event) {
-            super.handleEvent(event);
+        public void handleData(final ITmfEvent event) {
+            super.handleData(event);
             if (event != null) {
                 if (event.getTrace() == trace) {
                     processEvent(event);
@@ -325,8 +324,8 @@ public class TmfEventsStatistics implements ITmfStatistics {
         }
 
         @Override
-        public synchronized void handleEvent(ITmfEvent event) {
-            super.handleEvent(event);
+        public void handleData(ITmfEvent event) {
+            super.handleData(event);
             if ((event != null)  && (event.getTrace() == trace)) {
                 long ts = event.getTimestamp().normalize(0, SCALE).getValue();
                 Long key = results.floorKey(ts);
index 0af9a3a0a192784e7d7c75d7b72488f6acee9180..340cfdf9489dec353110ac9db7b8f1ef9705c52b 100644 (file)
@@ -9,15 +9,11 @@
  * Contributors:
  *   Francois Chouinard - Initial API and implementation
  *   Francois Chouinard - Updated as per TMF Trace Model 1.0
- *   Alexandre Montplaisir - Added State Systems support
- *   Patrick Tasse - Added coincidental cohesion APIs
- *   Francois Chouinard - Added Iterator support
  *******************************************************************************/
 
 package org.eclipse.linuxtools.tmf.core.trace;
 
 import java.util.Collection;
-import java.util.Iterator;
 
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IResource;
@@ -60,13 +56,6 @@ import org.eclipse.linuxtools.tmf.core.statistics.ITmfStatistics;
  *     event = trace.getNext(context);
  * }
  * </pre>
- * <b>Example 1b</b>: Process a whole trace using an iterator
- * <pre>
- * Iterator&lt;ITmfEvent&gt; it = trace.iterator();
- * while (it.hasNext()) {
- *     processEvent(it.next());
- * }
- * </pre>
  * <b>Example 2</b>: Process 50 events starting from the 1000th event
  * <pre>
  * int nbEventsRead = 0;
@@ -114,8 +103,8 @@ import org.eclipse.linuxtools.tmf.core.statistics.ITmfStatistics;
  * }
  * </pre>
  *
+ * @version 1.0
  * @author Francois Chouinard
- * @version 2.0
  *
  * @see ITmfContext
  * @see ITmfEvent
@@ -319,56 +308,6 @@ public interface ITmfTrace extends ITmfDataProvider {
      */
     public ITmfContext seekEvent(double ratio);
 
-    // ------------------------------------------------------------------------
-    // Iterator support
-    // ------------------------------------------------------------------------
-
-    /**
-     * Returns an iterator suitable to read a trace from the start
-     *
-     * @return a trace iterator
-     */
-    public Iterator<ITmfEvent> iterator();
-
-    /**
-     * Returns an iterator suitable to read a trace from the requested location
-     *
-     * @param location the first event location in the trace
-     * @return a trace iterator
-     */
-    public Iterator<ITmfEvent> iterator(ITmfLocation location);
-
-    /**
-     * Returns an iterator suitable to read a trace from the requested rank
-     *
-     * @param rank the first event rank
-     * @return a trace iterator
-     */
-    public Iterator<ITmfEvent> iterator(long rank);
-
-    /**
-     * Returns an iterator suitable to read a trace from the requested timestamp
-     *
-     * @param timestamp the first event timestamp
-     * @return a trace iterator
-     */
-    public Iterator<ITmfEvent> iterator(ITmfTimestamp timestamp);
-
-    /**
-     * Returns an iterator suitable to read a trace from the requested 'ratio'
-     *
-     * @param ratio  the first event 'ratio' (see seekEvent(double))
-     * @return a trace iterator
-     */
-    public Iterator<ITmfEvent> iterator(double ratio);
-
-    // ------------------------------------------------------------------------
-    // Coincidental cohesion APIs: current time and range are TMF UI concepts
-    // and have nothing to do with this core API. It can probably be argued
-    // that this is also pathological coupling.
-    // TODO: Stop hacking, start designing.
-    // ------------------------------------------------------------------------
-
     /**
      * Returns the initial range offset
      *
index 5f3f44b8ecd23da5dc9aff915f68a90893445b6d..7acd78af1770ec140fe496f8a14f512e3efcce52 100644 (file)
@@ -25,9 +25,10 @@ import org.eclipse.linuxtools.tmf.core.component.TmfDataProvider;
 import org.eclipse.linuxtools.tmf.core.event.ITmfEvent;
 import org.eclipse.linuxtools.tmf.core.event.ITmfTimestamp;
 import org.eclipse.linuxtools.tmf.core.event.TmfTimeRange;
-import org.eclipse.linuxtools.tmf.core.request.ITmfRequest;
-import org.eclipse.linuxtools.tmf.core.request.ITmfRequest.TmfRequestPriority;
-import org.eclipse.linuxtools.tmf.core.request.TmfRequest;
+import org.eclipse.linuxtools.tmf.core.request.ITmfDataRequest;
+import org.eclipse.linuxtools.tmf.core.request.ITmfEventRequest;
+import org.eclipse.linuxtools.tmf.core.request.TmfDataRequest;
+import org.eclipse.linuxtools.tmf.core.request.TmfEventRequest;
 import org.eclipse.linuxtools.tmf.core.signal.TmfTraceUpdatedSignal;
 
 /**
@@ -73,7 +74,7 @@ public class TmfCheckpointIndexer implements ITmfTraceIndexer {
     /**
      * The indexing request
      */
-    private ITmfRequest fIndexingRequest = null;
+    private ITmfEventRequest fIndexingRequest = null;
 
     // ------------------------------------------------------------------------
     // Construction
@@ -169,14 +170,15 @@ public class TmfCheckpointIndexer implements ITmfTraceIndexer {
 
         // Build a background request for all the trace data. The index is
         // updated as we go by readNextEvent().
-        fIndexingRequest = new TmfRequest(range, offset, ITmfRequest.ALL_EVENTS, TmfRequestPriority.NORMAL)
+        fIndexingRequest = new TmfEventRequest(ITmfEvent.class,
+                range, offset, TmfDataRequest.ALL_DATA, fCheckpointInterval, ITmfDataRequest.ExecutionType.BACKGROUND)
         {
             @Override
-            public synchronized void handleEvent(final ITmfEvent event) {
-                super.handleEvent(event);
+            public void handleData(final ITmfEvent event) {
+                super.handleData(event);
                 if (event != null) {
                     // Update the trace status at regular intervals
-                    if ((getNbEventsRead() % fCheckpointInterval) == 0) {
+                    if ((getNbRead() % fCheckpointInterval) == 0) {
                         updateTraceStatus();
                     }
                 }
@@ -188,7 +190,7 @@ public class TmfCheckpointIndexer implements ITmfTraceIndexer {
             }
 
             @Override
-            public synchronized void handleCompleted() {
+            public void handleCompleted() {
                 job.cancel();
                 super.handleCompleted();
                 fIsIndexing = false;
index 534a51e1c1f4b86b4dfd31cbafdb154700a42781..b6caaa80d17e3cffb714e23b6765db291863fde8 100644 (file)
@@ -24,8 +24,8 @@ import org.eclipse.linuxtools.tmf.core.event.ITmfTimestamp;
 import org.eclipse.linuxtools.tmf.core.event.TmfTimeRange;
 import org.eclipse.linuxtools.tmf.core.event.TmfTimestamp;
 import org.eclipse.linuxtools.tmf.core.exceptions.TmfTraceException;
-import org.eclipse.linuxtools.tmf.core.request.ITmfRequest;
-import org.eclipse.linuxtools.tmf.core.request.TmfBlockFilter;
+import org.eclipse.linuxtools.tmf.core.request.ITmfDataRequest;
+import org.eclipse.linuxtools.tmf.core.request.ITmfEventRequest;
 import org.eclipse.linuxtools.tmf.core.signal.TmfClearExperimentSignal;
 import org.eclipse.linuxtools.tmf.core.signal.TmfSignalHandler;
 import org.eclipse.linuxtools.tmf.core.signal.TmfTraceOpenedSignal;
@@ -202,22 +202,24 @@ public class TmfExperiment extends TmfTrace implements ITmfEventParser {
      * @since 2.0
      */
     @Override
-    public synchronized ITmfContext armRequest(final ITmfRequest request) {
+    public synchronized ITmfContext armRequest(final ITmfDataRequest request) {
 
         // Make sure we have something to read from
         if (fTraces == null) {
             return null;
         }
 
-        ITmfTimestamp startTime = request.getTimeRange().getStartTime();
-        long startindex = request.getStartIndex();
-        if (!TmfTimestamp.BIG_BANG.equals(startTime) && startindex == 0) {
-            final ITmfContext context = seekEvent(request.getTimeRange().getStartTime());
-            request.addEventFilter(new TmfBlockFilter(context.getRank(), request.getNbRequested()));
+        if (request instanceof ITmfEventRequest
+            && !TmfTimestamp.BIG_BANG.equals(((ITmfEventRequest) request).getRange().getStartTime())
+            && request.getIndex() == 0)
+        {
+            final ITmfContext context = seekEvent(((ITmfEventRequest) request).getRange().getStartTime());
+            ((ITmfEventRequest) request).setStartIndex((int) context.getRank());
             return context;
+
         }
 
-        return seekEvent(request.getStartIndex());
+        return seekEvent(request.getIndex());
     }
 
     // ------------------------------------------------------------------------
@@ -409,7 +411,7 @@ public class TmfExperiment extends TmfTrace implements ITmfEventParser {
      */
     @Override
     @SuppressWarnings("nls")
-    public String toString() {
+    public synchronized String toString() {
         return "[TmfExperiment (" + getName() + ")]";
     }
 
index 81991d645c5c54466c2a5b4b916f165cbb618cfa..ecee99cd7ce6001dd8d4cff183144485db80845c 100644 (file)
@@ -16,7 +16,6 @@ package org.eclipse.linuxtools.tmf.core.trace;
 import java.io.File;
 import java.util.Collection;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.eclipse.core.resources.IResource;
@@ -28,8 +27,8 @@ import org.eclipse.linuxtools.tmf.core.event.ITmfTimestamp;
 import org.eclipse.linuxtools.tmf.core.event.TmfTimeRange;
 import org.eclipse.linuxtools.tmf.core.event.TmfTimestamp;
 import org.eclipse.linuxtools.tmf.core.exceptions.TmfTraceException;
-import org.eclipse.linuxtools.tmf.core.request.ITmfRequest;
-import org.eclipse.linuxtools.tmf.core.request.TmfBlockFilter;
+import org.eclipse.linuxtools.tmf.core.request.ITmfDataRequest;
+import org.eclipse.linuxtools.tmf.core.request.ITmfEventRequest;
 import org.eclipse.linuxtools.tmf.core.signal.TmfRangeSynchSignal;
 import org.eclipse.linuxtools.tmf.core.signal.TmfSignalHandler;
 import org.eclipse.linuxtools.tmf.core.signal.TmfTimeSynchSignal;
@@ -425,7 +424,7 @@ public abstract class TmfTrace extends TmfEventProvider implements ITmfTrace {
      * @see org.eclipse.linuxtools.tmf.core.trace.ITmfTrace#getNbEvents()
      */
     @Override
-    public long getNbEvents() {
+    public synchronized long getNbEvents() {
         return fNbEvents;
     }
 
@@ -629,65 +628,6 @@ public abstract class TmfTrace extends TmfEventProvider implements ITmfTrace {
         return context;
     }
 
-    // ------------------------------------------------------------------------
-    // ITmfTrace - Iterator operations
-    // ------------------------------------------------------------------------
-
-    /* (non-Javadoc)
-     * @see org.eclipse.linuxtools.tmf.core.trace.ITmfTrace#iterator()
-     */
-    /**
-     * @since 2.0
-     */
-    @Override
-    public Iterator<ITmfEvent> iterator() {
-        return new TmfTraceIterator(this);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.linuxtools.tmf.core.trace.ITmfTrace#iterator(org.eclipse.linuxtools.tmf.core.trace.ITmfLocation)
-     */
-    /**
-     * @since 2.0
-     */
-    @Override
-    public Iterator<ITmfEvent> iterator(ITmfLocation location) {
-        return new TmfTraceIterator(this, location);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.linuxtools.tmf.core.trace.ITmfTrace#iterator(long)
-     */
-    /**
-     * @since 2.0
-     */
-    @Override
-    public Iterator<ITmfEvent> iterator(long rank) {
-        return new TmfTraceIterator(this, rank);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.linuxtools.tmf.core.trace.ITmfTrace#iterator(org.eclipse.linuxtools.tmf.core.event.ITmfTimestamp)
-     */
-    /**
-     * @since 2.0
-     */
-    @Override
-    public Iterator<ITmfEvent> iterator(ITmfTimestamp timestamp) {
-        return new TmfTraceIterator(this, timestamp);
-    }
-
-    /* (non-Javadoc)
-     * @see org.eclipse.linuxtools.tmf.core.trace.ITmfTrace#iterator(double)
-     */
-    /**
-     * @since 2.0
-     */
-    @Override
-    public Iterator<ITmfEvent> iterator(double ratio) {
-        return new TmfTraceIterator(this, ratio);
-    }
-
     // ------------------------------------------------------------------------
     // ITmfTrace - Read operations (returning an actual event)
     // ------------------------------------------------------------------------
@@ -757,20 +697,20 @@ public abstract class TmfTrace extends TmfEventProvider implements ITmfTrace {
      * @since 2.0
      */
     @Override
-    public synchronized ITmfContext armRequest(final ITmfRequest request) {
+    public synchronized ITmfContext armRequest(final ITmfDataRequest request) {
         if (executorIsShutdown()) {
             return null;
         }
-
-        ITmfTimestamp startTime = request.getTimeRange().getStartTime();
-        long startindex = request.getStartIndex();
-        if (!TmfTimestamp.BIG_BANG.equals(startTime) && startindex == 0) {
-            final ITmfContext context = seekEvent(request.getTimeRange().getStartTime());
-            request.addEventFilter(new TmfBlockFilter(context.getRank(), request.getNbRequested()));
+        if ((request instanceof ITmfEventRequest)
+            && !TmfTimestamp.BIG_BANG.equals(((ITmfEventRequest) request).getRange().getStartTime())
+            && (request.getIndex() == 0))
+        {
+            final ITmfContext context = seekEvent(((ITmfEventRequest) request).getRange().getStartTime());
+            ((ITmfEventRequest) request).setStartIndex((int) context.getRank());
             return context;
-        }
 
-        return seekEvent(request.getStartIndex());
+        }
+        return seekEvent(request.getIndex());
     }
 
     // ------------------------------------------------------------------------
@@ -889,7 +829,7 @@ public abstract class TmfTrace extends TmfEventProvider implements ITmfTrace {
      */
     @Override
     @SuppressWarnings("nls")
-    public String toString() {
+    public synchronized String toString() {
         return "TmfTrace [fPath=" + fPath + ", fCacheSize=" + fCacheSize
                 + ", fNbEvents=" + fNbEvents + ", fStartTime=" + fStartTime
                 + ", fEndTime=" + fEndTime + ", fStreamingInterval=" + fStreamingInterval + "]";
diff --git a/org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/trace/TmfTraceIterator.java b/org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/trace/TmfTraceIterator.java
deleted file mode 100644 (file)
index c0bc99b..0000000
+++ /dev/null
@@ -1,148 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2012 Ericsson
- *
- * 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
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *   Francois Chouinard - Initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.linuxtools.tmf.core.trace;
-
-import java.util.Iterator;
-
-import org.eclipse.linuxtools.tmf.core.event.ITmfEvent;
-import org.eclipse.linuxtools.tmf.core.event.ITmfTimestamp;
-
-/**
- * A simple class to iterate over a TMF trace and return ITmfEvent:s. Its main
- * purpose is to encapsulate the ITmfContext.
- *
- * @author Francois Chouinard
- * @version 1.0
- * @since 2.0
- */
-public class TmfTraceIterator implements Iterator<ITmfEvent> {
-
-    // ------------------------------------------------------------------------
-    // Attributes
-    // ------------------------------------------------------------------------
-
-    private ITmfTrace   fTrace;     // The trace to iterate over
-    private ITmfContext fContext;   // The trace reading context
-    private ITmfEvent   fNextEvent; // The buffered next event
-
-    // ------------------------------------------------------------------------
-    // Constructors
-    // ------------------------------------------------------------------------
-
-    /**
-     * The standard constructor. Returns an iterator pointing to the start of
-     * the trace.
-     *
-     * @param trace the trace to iterate over
-     */
-    public TmfTraceIterator(ITmfTrace trace) {
-        this(trace, 0);
-    }
-
-    /**
-     * The rank constructor. Returns an iterator pointing to the event
-     * at the requested rank.
-     *
-     * @param trace the trace to iterate over
-     * @param rank the starting event rank
-     */
-    public TmfTraceIterator(ITmfTrace trace, long rank) {
-        fTrace = trace;
-        fContext = fTrace.seekEvent(rank);
-    }
-
-    /**
-     * The timestamp constructor. Returns an iterator pointing to the event
-     * at the requested timestamp.
-     *
-     * @param trace the trace to iterate over
-     * @param timestamp the starting event timestamp
-     */
-    public TmfTraceIterator(ITmfTrace trace, ITmfTimestamp timestamp) {
-        fTrace = trace;
-        fContext = fTrace.seekEvent(timestamp);
-    }
-
-    /**
-     * The location constructor. Returns an iterator pointing to the event
-     * at the requested location.
-     *
-     * @param trace the trace to iterate over
-     * @param location the starting event location
-     */
-    public TmfTraceIterator(ITmfTrace trace, ITmfLocation location) {
-        fTrace = trace;
-        fContext = fTrace.seekEvent(location);
-    }
-
-    /**
-     * The ratio constructor. Returns an iterator pointing to the event
-     * at the requested ratio.
-     *
-     * @param trace the trace to iterate over
-     * @param ratio the starting event ratio
-     */
-    public TmfTraceIterator(ITmfTrace trace, double ratio) {
-        fTrace = trace;
-        fContext = fTrace.seekEvent(ratio);
-    }
-
-    /**
-     * Copy constructor
-     *
-     * @param other the other iterator
-     */
-    public TmfTraceIterator(TmfTraceIterator other) {
-        fTrace = other.fTrace;
-        fContext = other.fContext.clone();
-    }
-
-    // ------------------------------------------------------------------------
-    // Iterator
-    // ------------------------------------------------------------------------
-
-    /* (non-Javadoc)
-     * @see java.util.Iterator#hasNext()
-     */
-    @Override
-    public boolean hasNext() {
-        if (fNextEvent == null) {
-            fNextEvent = fTrace.getNext(fContext);
-        }
-        return fNextEvent != null;
-    }
-
-    /* (non-Javadoc)
-     * @see java.util.Iterator#next()
-     */
-    @Override
-    public ITmfEvent next() {
-        ITmfEvent event;
-        if (fNextEvent != null) {
-            event = fNextEvent;
-            fNextEvent = null;
-        } else {
-            event = fTrace.getNext(fContext);
-        }
-        return event;
-    }
-
-    /* (non-Javadoc)
-     * @see java.util.Iterator#remove()
-     */
-    @Override
-    public void remove() {
-        throw new UnsupportedOperationException();
-    }
-
-}
index 1c7b4dcaa228120e5f5404c08380b4d9248a16a2..77fab28140e9cb6d15d6e077c37d04e5ea778197 100644 (file)
@@ -100,7 +100,7 @@ public class TmfUml2SDTestTrace implements ITmfEventParser {
             fields[2] = new TmfEventField("signal", signal);
 
             ITmfEventField tmfContent = new TmfEventField(ITmfEventField.ROOT_FIELD_ID, content, fields);
-            TmfEvent tmfEvent = new TmfEvent(fEventStream, context.getRank(), new TmfTimestamp(ts, -9), source, tmfEventType, tmfContent, reference);
+            TmfEvent tmfEvent = new TmfEvent(fEventStream, new TmfTimestamp(ts, -9), source, tmfEventType, tmfContent, reference);
 
             return tmfEvent;
         } catch (final EOFException e) {
index 9028830e06741248a65bd8e1042f5f24fc44df71..c68bc6e7611d6adb81c9fc2b87c699480dd19a9b 100644 (file)
@@ -2083,7 +2083,7 @@ public class TmfEventsTable extends TmfComponent implements IGotoMarker, IColorS
                 }
 
                 @Override
-                public synchronized void handleCompleted() {
+                public void handleCompleted() {
                     super.handleCompleted();
                     if (fTrace == null) {
                         return;
index 7194de4751425636ad4e4f4e6199705183e7eec2..b9043e99f1a7dfa8eee447f74eab266a63378427 100644 (file)
@@ -34,13 +34,6 @@ import org.eclipse.swt.widgets.Composite;
  */
 public class HistogramCurrentTimeControl extends HistogramTextControl {
 
-    // ------------------------------------------------------------------------
-    // Attributes
-    // ------------------------------------------------------------------------
-
-    @SuppressWarnings("unused")
-    private long fTraceStartTime;
-
     // ------------------------------------------------------------------------
     // Construction
     // ------------------------------------------------------------------------
index 7b55d6d8e4ab8b5b4dedd453d7a81d847ad146cb..7930df748844b7c02220f9a0e8bc306cd9d19dc8 100644 (file)
@@ -29,7 +29,6 @@ import org.eclipse.linuxtools.tmf.core.trace.ITmfTrace;
  * @author Francois Chouinard
  * <p>
  */
-@SuppressWarnings("deprecation")
 public class HistogramRequest extends TmfEventRequest {
 
     // ------------------------------------------------------------------------
@@ -82,7 +81,6 @@ public class HistogramRequest extends TmfEventRequest {
      * @see org.eclipse.linuxtools.tmf.core.request.TmfDataRequest#handleData(org.eclipse.linuxtools.tmf.core.event.ITmfEvent)
      */
     @Override
-    @SuppressWarnings("javadoc")
     public void handleData(ITmfEvent event) {
         super.handleData(event);
         if (event != null) {
@@ -97,8 +95,7 @@ public class HistogramRequest extends TmfEventRequest {
      * @see org.eclipse.linuxtools.tmf.core.request.TmfDataRequest#handleCompleted()
      */
     @Override
-    @SuppressWarnings("javadoc")
-    public synchronized void handleCompleted() {
+    public void handleCompleted() {
         fHistogram.complete();
         super.handleCompleted();
     }
index b8e118bb3a74f1546fb1d014c8d82005b2e0964a..2f7f0cb242909f76bf8d8e53fa16b1193846528f 100644 (file)
@@ -56,7 +56,6 @@ import org.eclipse.ui.IEditorPart;
  * @version 2.0
  * @author Francois Chouinard
  */
-@SuppressWarnings("deprecation")
 public class HistogramView extends TmfView {
 
     // ------------------------------------------------------------------------
index 52122980b3cd919e05ac7192a76440eee61e9e93..e6dd506e52ff2a209b2ca0a441abd7188bcfee1e 100644 (file)
@@ -99,7 +99,6 @@ import org.eclipse.ui.progress.IProgressConstants;
  * @version 1.0
  * @author Bernd Hufmann
  */
-@SuppressWarnings("deprecation")
 public class TmfUml2SDSyncLoader extends TmfComponent implements IUml2SDLoader, ISDFindProvider, ISDFilterProvider, ISDAdvancedPagingProvider, ISelectionListener  {
 
     // ------------------------------------------------------------------------
@@ -303,8 +302,8 @@ public class TmfUml2SDSyncLoader extends TmfComponent implements IUml2SDLoader,
                  * @see org.eclipse.linuxtools.tmf.core.request.TmfDataRequest#handleData(org.eclipse.linuxtools.tmf.core.event.ITmfEvent)
                  */
                 @Override
-                public synchronized void handleEvent(ITmfEvent event) {
-                    super.handleEvent(event);
+                public void handleData(ITmfEvent event) {
+                    super.handleData(event);
 
                     ITmfSyncSequenceDiagramEvent sdEvent = getSequnceDiagramEvent(event);
 
@@ -375,7 +374,7 @@ public class TmfUml2SDSyncLoader extends TmfComponent implements IUml2SDLoader,
                  * @see org.eclipse.linuxtools.tmf.core.request.TmfDataRequest#handleCompleted()
                  */
                 @Override
-                public synchronized void handleCompleted() {
+                public void handleCompleted() {
                     if (fEvents.isEmpty()) {
                         fFrame = new Frame();
                         fView.setFrameSync(fFrame);
@@ -1141,8 +1140,8 @@ public class TmfUml2SDSyncLoader extends TmfComponent implements IUml2SDLoader,
             private final List<ITmfSyncSequenceDiagramEvent> fSdEvent = new ArrayList<ITmfSyncSequenceDiagramEvent>();
 
             @Override
-            public synchronized void handleEvent(ITmfEvent event) {
-                super.handleEvent(event);
+            public void handleData(ITmfEvent event) {
+                super.handleData(event);
 
                 ITmfSyncSequenceDiagramEvent sdEvent = getSequnceDiagramEvent(event);
 
@@ -1433,8 +1432,8 @@ public class TmfUml2SDSyncLoader extends TmfComponent implements IUml2SDLoader,
          * @see org.eclipse.linuxtools.tmf.request.TmfDataRequest#handleData(org.eclipse.linuxtools.tmf.event.TmfData)
          */
         @Override
-        public synchronized void handleEvent(ITmfEvent event) {
-            super.handleEvent(event);
+        public void handleData(ITmfEvent event) {
+            super.handleData(event);
 
             if ((fMonitor!= null) && fMonitor.isCanceled()) {
                 super.cancel();
This page took 0.135468 seconds and 5 git commands to generate.