import org.eclipse.tracecompass.statesystem.core.exceptions.TimeRangeException;
import org.eclipse.tracecompass.statesystem.core.interval.ITmfStateInterval;
import org.eclipse.tracecompass.tmf.core.analysis.IAnalysisModule;
-import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAnalysisRequirement;
-import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAnalysisRequirement.PriorityLevel;
+import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAbstractAnalysisRequirement;
+import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAbstractAnalysisRequirement.PriorityLevel;
import org.eclipse.tracecompass.tmf.core.statesystem.ITmfStateProvider;
import org.eclipse.tracecompass.tmf.core.statesystem.TmfStateSystemAnalysisModule;
import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
/** The requirements as an immutable set */
private static final KernelEventLayoutRequirement LAYOUT_REQUIREMENT;
- private static final SetMultimap<IKernelAnalysisEventLayout, TmfAnalysisRequirement> LAYOUT_REQ_MAP = NonNullUtils.checkNotNull(HashMultimap.create());
+ private static final SetMultimap<IKernelAnalysisEventLayout, TmfAbstractAnalysisRequirement> LAYOUT_REQ_MAP = NonNullUtils.checkNotNull(HashMultimap.create());
static {
LAYOUT_REQUIREMENT = new KernelEventLayoutRequirement(ImmutableSet.of((l) -> l.eventSchedSwitch()), PriorityLevel.MANDATORY);
}
@Override
- public Iterable<TmfAnalysisRequirement> getAnalysisRequirements() {
+ public Iterable<TmfAbstractAnalysisRequirement> getAnalysisRequirements() {
ITmfTrace trace = getTrace();
IKernelAnalysisEventLayout layout = getLayout(trace);
- Set<TmfAnalysisRequirement> reqs = LAYOUT_REQ_MAP.get(layout);
+ Set<TmfAbstractAnalysisRequirement> reqs = LAYOUT_REQ_MAP.get(layout);
if (reqs.isEmpty()) {
reqs= ImmutableSet.of(LAYOUT_REQUIREMENT.instanciateRequirements(layout));
LAYOUT_REQ_MAP.putAll(layout, reqs);
import org.eclipse.tracecompass.analysis.os.linux.core.trace.IKernelTrace;
import org.eclipse.tracecompass.common.core.NonNullUtils;
import org.eclipse.tracecompass.internal.analysis.os.linux.core.kernel.KernelStateProvider;
-import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAnalysisRequirement;
+import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAbstractAnalysisRequirement;
import org.eclipse.tracecompass.tmf.core.statesystem.ITmfStateProvider;
import org.eclipse.tracecompass.tmf.core.statesystem.TmfStateSystemAnalysisModule;
import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
// );
/** The requirements as an immutable set */
- private static final Set<TmfAnalysisRequirement> REQUIREMENTS;
+ private static final Set<TmfAbstractAnalysisRequirement> REQUIREMENTS;
static {
// /* initialize the requirement: domain and events */
}
@Override
- public Iterable<TmfAnalysisRequirement> getAnalysisRequirements() {
+ public Iterable<TmfAbstractAnalysisRequirement> getAnalysisRequirements() {
return REQUIREMENTS;
}
}
import org.eclipse.tracecompass.statesystem.core.interval.ITmfStateInterval;
import org.eclipse.tracecompass.statesystem.core.statevalue.ITmfStateValue;
import org.eclipse.tracecompass.statesystem.core.statevalue.ITmfStateValue.Type;
-import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAnalysisRequirement;
+import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAbstractAnalysisRequirement;
import org.eclipse.tracecompass.tmf.core.statesystem.ITmfStateProvider;
import org.eclipse.tracecompass.tmf.core.statesystem.TmfStateSystemAnalysisModule;
import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
public static final @NonNull String ID = "org.eclipse.tracecompass.analysis.os.linux.kernel.tid"; //$NON-NLS-1$
/** The requirements as an immutable set */
- private static final @NonNull Set<@NonNull TmfAnalysisRequirement> REQUIREMENTS = Collections.EMPTY_SET;
+ private static final @NonNull Set<@NonNull TmfAbstractAnalysisRequirement> REQUIREMENTS = Collections.EMPTY_SET;
@Override
- public @NonNull Iterable<@NonNull TmfAnalysisRequirement> getAnalysisRequirements() {
+ public @NonNull Iterable<@NonNull TmfAbstractAnalysisRequirement> getAnalysisRequirements() {
return REQUIREMENTS;
}
import org.eclipse.jdt.annotation.Nullable;
import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAnalysisEventRequirement;
-import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAnalysisRequirement;
-import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAnalysisRequirement.PriorityLevel;
+import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAbstractAnalysisRequirement;
+import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAbstractAnalysisRequirement.PriorityLevel;
import com.google.common.collect.ImmutableList.Builder;
* The event layout from which to build the requirements.
* @return The real requirement
*/
- public TmfAnalysisRequirement instanciateRequirements(IKernelAnalysisEventLayout layout) {
+ public TmfAbstractAnalysisRequirement instanciateRequirements(IKernelAnalysisEventLayout layout) {
Builder<String> events = new Builder<>();
for (ILayoutToEventName eventNameLayout : fEventNames) {
String eventName = eventNameLayout.getEventName(layout);
import org.eclipse.tracecompass.lttng2.ust.core.trace.LttngUstTrace;
import org.eclipse.tracecompass.statesystem.core.ITmfStateSystem;
import org.eclipse.tracecompass.testtraces.ctf.CtfTestTrace;
-import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAnalysisRequirement;
+import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAbstractAnalysisRequirement;
import org.eclipse.tracecompass.tmf.core.event.ITmfEvent;
import org.eclipse.tracecompass.tmf.core.exceptions.TmfAnalysisException;
import org.eclipse.tracecompass.tmf.core.exceptions.TmfTraceException;
*/
@Test
public void testGetAnalysisRequirements() {
- Iterable<TmfAnalysisRequirement> requirements = fModule.getAnalysisRequirements();
+ Iterable<TmfAbstractAnalysisRequirement> requirements = fModule.getAnalysisRequirements();
assertNotNull(requirements);
assertTrue(Iterables.isEmpty(requirements));
}
import static org.junit.Assert.assertTrue;
import org.eclipse.tracecompass.lttng2.ust.core.analysis.memory.UstMemoryAnalysisModule;
-import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAnalysisRequirement;
+import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAbstractAnalysisRequirement;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
@Ignore("Need to assign a trace to the module to check the requirements now")
@Test
public void testGetAnalysisRequirements() {
- Iterable<TmfAnalysisRequirement> requirements = fUstAnalysisModule.getAnalysisRequirements();
+ Iterable<TmfAbstractAnalysisRequirement> requirements = fUstAnalysisModule.getAnalysisRequirements();
assertNotNull(requirements);
assertTrue(requirements.iterator().hasNext());
import org.eclipse.tracecompass.statesystem.core.exceptions.StateSystemDisposedException;
import org.eclipse.tracecompass.statesystem.core.interval.ITmfStateInterval;
import org.eclipse.tracecompass.statesystem.core.statevalue.ITmfStateValue;
-import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAnalysisRequirement;
+import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAbstractAnalysisRequirement;
import org.eclipse.tracecompass.tmf.core.exceptions.TmfAnalysisException;
import org.eclipse.tracecompass.tmf.core.statesystem.ITmfStateProvider;
import org.eclipse.tracecompass.tmf.core.statesystem.TmfStateSystemAnalysisModule;
}
@Override
- public Iterable<TmfAnalysisRequirement> getAnalysisRequirements() {
+ public Iterable<TmfAbstractAnalysisRequirement> getAnalysisRequirements() {
// TODO specify actual requirements once the requirement-checking is
// implemented. This analysis needs "ip" and "vpid" contexts.
return Collections.EMPTY_SET;
import org.eclipse.tracecompass.lttng2.ust.core.trace.LttngUstTrace;
import org.eclipse.tracecompass.lttng2.ust.core.trace.layout.ILttngUstEventLayout;
import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAnalysisEventRequirement;
-import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAnalysisRequirement;
-import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAnalysisRequirement.PriorityLevel;
+import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAbstractAnalysisRequirement;
+import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAbstractAnalysisRequirement.PriorityLevel;
import org.eclipse.tracecompass.tmf.core.exceptions.TmfAnalysisException;
import org.eclipse.tracecompass.tmf.core.statesystem.ITmfStateProvider;
import org.eclipse.tracecompass.tmf.core.statesystem.TmfStateSystemAnalysisModule;
public static final @NonNull String ID = "org.eclipse.linuxtools.lttng2.ust.analysis.memory"; //$NON-NLS-1$
/** The analysis's requirements. Only set after the trace is set. */
- private @Nullable Set<TmfAnalysisRequirement> fAnalysisRequirements;
+ private @Nullable Set<TmfAbstractAnalysisRequirement> fAnalysisRequirements;
@Override
protected ITmfStateProvider createStateProvider() {
}
@Override
- public Iterable<TmfAnalysisRequirement> getAnalysisRequirements() {
- Set<TmfAnalysisRequirement> requirements = fAnalysisRequirements;
+ public Iterable<TmfAbstractAnalysisRequirement> getAnalysisRequirements() {
+ Set<TmfAbstractAnalysisRequirement> requirements = fAnalysisRequirements;
if (requirements == null) {
LttngUstTrace trace = getTrace();
ILttngUstEventLayout layout;
);
/* Initialize the requirements for the analysis: domain and events */
- TmfAnalysisRequirement eventsReq = new TmfAnalysisEventRequirement(requiredEvents, PriorityLevel.MANDATORY);
+ TmfAbstractAnalysisRequirement eventsReq = new TmfAnalysisEventRequirement(requiredEvents, PriorityLevel.MANDATORY);
/*
* In order to have these events, the libc wrapper with probes should be
* loaded
import org.eclipse.jdt.annotation.NonNullByDefault;
import org.eclipse.tracecompass.lttng2.ust.core.trace.layout.ILttngUstEventLayout;
import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAnalysisEventFieldRequirement;
-import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAnalysisRequirement;
+import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAbstractAnalysisRequirement;
import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfCompositeAnalysisRequirement;
import com.google.common.collect.ImmutableSet;
addInformation(nullToEmptyString(Messages.LttnUstCallStackAnalysisModule_EventsLoadingInformation));
}
- private static Collection<TmfAnalysisRequirement> getSubRequirements(ILttngUstEventLayout layout) {
+ private static Collection<TmfAbstractAnalysisRequirement> getSubRequirements(ILttngUstEventLayout layout) {
Set<@NonNull String> requiredEventsFields = ImmutableSet.of(
layout.contextProcname(),
layout.contextVtid());
requiredEventsFields,
PriorityLevel.MANDATORY);
- TmfAnalysisRequirement exitReq = new TmfAnalysisEventFieldRequirement(
+ TmfAbstractAnalysisRequirement exitReq = new TmfAnalysisEventFieldRequirement(
layout.eventCygProfileFuncExit(),
requiredEventsFields,
PriorityLevel.MANDATORY);
- TmfAnalysisRequirement cygProfile = new TmfCompositeAnalysisRequirement(ImmutableSet.of(entryReq, exitReq), PriorityLevel.MANDATORY);
+ TmfAbstractAnalysisRequirement cygProfile = new TmfCompositeAnalysisRequirement(ImmutableSet.of(entryReq, exitReq), PriorityLevel.MANDATORY);
// Requirement for the cyg_profile_fast events
entryReq = new TmfAnalysisEventFieldRequirement(
layout.eventCygProfileFastFuncExit(),
requiredEventsFields,
PriorityLevel.MANDATORY);
- TmfAnalysisRequirement cygProfileFast = new TmfCompositeAnalysisRequirement(ImmutableSet.of(entryReq, exitReq), PriorityLevel.MANDATORY);
+ TmfAbstractAnalysisRequirement cygProfileFast = new TmfCompositeAnalysisRequirement(ImmutableSet.of(entryReq, exitReq), PriorityLevel.MANDATORY);
return ImmutableSet.of(cygProfile, cygProfileFast);
}
import org.eclipse.tracecompass.internal.lttng2.ust.ui.analysis.callstack.LttngUstCallStackAnalysisRequirement;
import org.eclipse.tracecompass.lttng2.ust.core.trace.LttngUstTrace;
import org.eclipse.tracecompass.lttng2.ust.core.trace.layout.ILttngUstEventLayout;
-import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAnalysisRequirement;
+import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAbstractAnalysisRequirement;
import org.eclipse.tracecompass.tmf.core.exceptions.TmfAnalysisException;
import org.eclipse.tracecompass.tmf.core.statesystem.ITmfStateProvider;
import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
*/
public class LttngUstCallStackAnalysis extends AbstractCallStackAnalysis {
- private @Nullable Set<@NonNull TmfAnalysisRequirement> fAnalysisRequirements = null;
+ private @Nullable Set<@NonNull TmfAbstractAnalysisRequirement> fAnalysisRequirements = null;
/**
* @since 1.0
}
@Override
- public @NonNull Iterable<@NonNull TmfAnalysisRequirement> getAnalysisRequirements() {
+ public @NonNull Iterable<@NonNull TmfAbstractAnalysisRequirement> getAnalysisRequirements() {
- Set<@NonNull TmfAnalysisRequirement> requirements = fAnalysisRequirements;
+ Set<@NonNull TmfAbstractAnalysisRequirement> requirements = fAnalysisRequirements;
if (requirements == null) {
LttngUstTrace trace = getTrace();
ILttngUstEventLayout layout = ILttngUstEventLayout.DEFAULT_LAYOUT;
import org.eclipse.tracecompass.tmf.core.analysis.IAnalysisModule;
import org.eclipse.tracecompass.tmf.core.analysis.IAnalysisModuleHelper;
import org.eclipse.tracecompass.tmf.core.analysis.TmfAnalysisManager;
-import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAnalysisRequirement;
+import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAbstractAnalysisRequirement;
import org.eclipse.tracecompass.tmf.core.exceptions.TmfAnalysisException;
import org.eclipse.tracecompass.tmf.core.project.model.ITmfPropertiesProvider;
import org.eclipse.tracecompass.tmf.core.project.model.TmfTraceType;
}
@Override
- public Iterable<TmfAnalysisRequirement> getAnalysisRequirements() {
+ public Iterable<TmfAbstractAnalysisRequirement> getAnalysisRequirements() {
return Collections.EMPTY_SET;
}
import org.eclipse.tracecompass.tmf.core.analysis.IAnalysisModuleHelper;
import org.eclipse.tracecompass.tmf.core.analysis.TmfAnalysisManager;
import org.eclipse.tracecompass.tmf.core.analysis.TmfAnalysisModuleHelperConfigElement;
-import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAnalysisRequirement;
+import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAbstractAnalysisRequirement;
import org.eclipse.tracecompass.tmf.core.exceptions.TmfAnalysisException;
import org.eclipse.tracecompass.tmf.core.tests.shared.TmfTestTrace;
import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
*/
@Test
public void testGetRequirements() {
- Iterable<TmfAnalysisRequirement> requirements = fReqModule.getAnalysisRequirements();
- Set<TmfAnalysisRequirement> expected = ImmutableSet.of(
+ Iterable<TmfAbstractAnalysisRequirement> requirements = fReqModule.getAnalysisRequirements();
+ Set<TmfAbstractAnalysisRequirement> expected = ImmutableSet.of(
AnalysisRequirementFactory.REQUIREMENT_1,
AnalysisRequirementFactory.REQUIREMENT_3);
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAnalysisEventFieldRequirement;
-import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAnalysisRequirement;
-import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAnalysisRequirement.PriorityLevel;
+import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAbstractAnalysisRequirement;
+import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAbstractAnalysisRequirement.PriorityLevel;
import org.eclipse.tracecompass.tmf.core.event.ITmfEventField;
import org.eclipse.tracecompass.tmf.core.event.ITmfEventType;
import org.eclipse.tracecompass.tmf.core.trace.ITmfTraceWithPreDefinedEvents;
@Test
public void testOptionalRequirements() {
/* Test optional requirement */
- TmfAnalysisRequirement req = new TmfAnalysisEventFieldRequirement(EVENT1, ImmutableSet.of(EVENT1_FIELD1));
+ TmfAbstractAnalysisRequirement req = new TmfAnalysisEventFieldRequirement(EVENT1, ImmutableSet.of(EVENT1_FIELD1));
assertTrue(req.test(trace));
req = new TmfAnalysisEventFieldRequirement(EVENT1, ImmutableSet.of(EVENT1_FIELD1, EVENT1_FIELD2));
@Test
public void testMandatoryRequirements() {
/* Test mandatory requirement */
- TmfAnalysisRequirement req = new TmfAnalysisEventFieldRequirement(EVENT1, ImmutableSet.of(EVENT1_FIELD1), PriorityLevel.MANDATORY);
+ TmfAbstractAnalysisRequirement req = new TmfAnalysisEventFieldRequirement(EVENT1, ImmutableSet.of(EVENT1_FIELD1), PriorityLevel.MANDATORY);
assertTrue(req.test(trace));
req = new TmfAnalysisEventFieldRequirement(EVENT1, ImmutableSet.of(EVENT1_FIELD1, EVENT1_FIELD2), PriorityLevel.MANDATORY);
/* A simple trace with no pre-defined events */
TmfTrace traceNoEvents = new TmfTraceStub();
- TmfAnalysisRequirement req = new TmfAnalysisEventFieldRequirement(EVENT1, ImmutableSet.of(EVENT1_FIELD1), PriorityLevel.MANDATORY);
+ TmfAbstractAnalysisRequirement req = new TmfAnalysisEventFieldRequirement(EVENT1, ImmutableSet.of(EVENT1_FIELD1), PriorityLevel.MANDATORY);
assertTrue(req.test(traceNoEvents));
req = new TmfAnalysisEventFieldRequirement(EVENT1, ImmutableSet.of(EVENT1_FIELD1), PriorityLevel.OPTIONAL);
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAnalysisEventRequirement;
-import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAnalysisRequirement;
-import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAnalysisRequirement.PriorityLevel;
+import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAbstractAnalysisRequirement;
+import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAbstractAnalysisRequirement.PriorityLevel;
import org.eclipse.tracecompass.tmf.core.event.ITmfEventField;
import org.eclipse.tracecompass.tmf.core.event.ITmfEventType;
import org.eclipse.tracecompass.tmf.core.trace.ITmfTraceWithPreDefinedEvents;
@Test
public void testOptionalRequirements() {
/* Test optional requirement */
- TmfAnalysisRequirement req = new TmfAnalysisEventRequirement(ImmutableSet.of(EVENT1));
+ TmfAbstractAnalysisRequirement req = new TmfAnalysisEventRequirement(ImmutableSet.of(EVENT1));
assertTrue(req.test(fTrace));
req = new TmfAnalysisEventRequirement(ImmutableSet.of(EVENT1, EVENT3));
@Test
public void testMandatoryRequirements() {
/* Test mandatory requirement */
- TmfAnalysisRequirement req = new TmfAnalysisEventRequirement(ImmutableSet.of(EVENT1), PriorityLevel.MANDATORY);
+ TmfAbstractAnalysisRequirement req = new TmfAnalysisEventRequirement(ImmutableSet.of(EVENT1), PriorityLevel.MANDATORY);
assertTrue(req.test(fTrace));
req = new TmfAnalysisEventRequirement(ImmutableSet.of(EVENT1, EVENT2), PriorityLevel.MANDATORY);
/* A simple trace with no pre-defined events */
TmfTrace traceNoEvents = new TmfTraceStub();
- TmfAnalysisRequirement req = new TmfAnalysisEventRequirement(ImmutableSet.of(EVENT1, EVENT3), PriorityLevel.MANDATORY);
+ TmfAbstractAnalysisRequirement req = new TmfAnalysisEventRequirement(ImmutableSet.of(EVENT1, EVENT3), PriorityLevel.MANDATORY);
assertTrue(req.test(traceNoEvents));
req = new TmfAnalysisEventRequirement(ImmutableSet.of(EVENT1, EVENT2), PriorityLevel.OPTIONAL);
import java.util.Set;
import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAnalysisRequirement;
-import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAnalysisRequirement.PriorityLevel;
+import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAbstractAnalysisRequirement;
+import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAbstractAnalysisRequirement.PriorityLevel;
+import org.eclipse.tracecompass.tmf.tests.stubs.analysis.AnalysisRequirementFactory;
import org.junit.Test;
import com.google.common.collect.ImmutableSet;
/**
- * Test suite for the {@link TmfAnalysisRequirement} class.
+ * Test suite for the {@link TmfAbstractAnalysisRequirement} class.
*
* @author Guilliano Molaire
* @author Mathieu Rail
private static final @NonNull String INFO_B = "This is another information.";
/**
- * Test the {@link TmfAnalysisRequirement#addInformation} and the
- * {@link TmfAnalysisRequirement#getInformation} methods.
+ * Test the {@link TmfAbstractAnalysisRequirement#addInformation(String)} and the
+ * {@link TmfAbstractAnalysisRequirement#getInformation()} methods.
*/
@Test
public void testAddAndGetInformation() {
- TmfAnalysisRequirement requirement = new TmfAnalysisRequirement(Collections.EMPTY_SET, PriorityLevel.OPTIONAL);
-
+ TmfAbstractAnalysisRequirement requirement = new AnalysisRequirementFactory.TmfRequirementStub(Collections.EMPTY_SET, PriorityLevel.OPTIONAL);
requirement.addInformation(INFO_A);
requirement.addInformation(INFO_B);
requirement.addInformation(INFO_B);
}
/**
- * Test the {@link TmfAnalysisRequirement#getValueLevel} method.
+ * Test the {@link TmfAbstractAnalysisRequirement#getPriorityLevel()} method.
*/
@Test
public void testGetValueLevel() {
/* Optional requirement */
- TmfAnalysisRequirement requirement = new TmfAnalysisRequirement(Collections.EMPTY_SET, PriorityLevel.OPTIONAL);
+ TmfAbstractAnalysisRequirement requirement = new AnalysisRequirementFactory.TmfRequirementStub(Collections.EMPTY_SET, PriorityLevel.OPTIONAL);
assertEquals(PriorityLevel.OPTIONAL, requirement.getPriorityLevel());
/* All or nothing */
- requirement = new TmfAnalysisRequirement(Collections.EMPTY_SET, PriorityLevel.ALL_OR_NOTHING);
+ requirement = new AnalysisRequirementFactory.TmfRequirementStub(Collections.EMPTY_SET, PriorityLevel.ALL_OR_NOTHING);
assertEquals(PriorityLevel.ALL_OR_NOTHING, requirement.getPriorityLevel());
/* At least one */
- requirement = new TmfAnalysisRequirement(Collections.EMPTY_SET, PriorityLevel.AT_LEAST_ONE);
+ requirement = new AnalysisRequirementFactory.TmfRequirementStub(Collections.EMPTY_SET, PriorityLevel.AT_LEAST_ONE);
assertEquals(PriorityLevel.AT_LEAST_ONE, requirement.getPriorityLevel());
/* Mandatory */
- requirement = new TmfAnalysisRequirement(Collections.EMPTY_SET, PriorityLevel.MANDATORY);
+ requirement = new AnalysisRequirementFactory.TmfRequirementStub(Collections.EMPTY_SET, PriorityLevel.MANDATORY);
assertEquals(PriorityLevel.MANDATORY, requirement.getPriorityLevel());
}
/**
- * Test the {@link TmfAnalysisRequirement#getValues()} method
+ * Test the {@link TmfAbstractAnalysisRequirement#getValues()} method
*/
@Test
public void testGetValues() {
ImmutableSet<@NonNull String> values = ImmutableSet.of(VALUE_A, VALUE_B);
- TmfAnalysisRequirement requirement = new TmfAnalysisRequirement(values, PriorityLevel.OPTIONAL);
+
+ TmfAbstractAnalysisRequirement requirement = new AnalysisRequirementFactory.TmfRequirementStub(values, PriorityLevel.OPTIONAL);
assertEquals(values, requirement.getValues());
}
import java.util.Collections;
import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAnalysisRequirement;
-import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAnalysisRequirement.PriorityLevel;
+import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAbstractAnalysisRequirement;
+import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAbstractAnalysisRequirement.PriorityLevel;
import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
import org.eclipse.tracecompass.tmf.tests.stubs.trace.TmfTraceStub;
import org.junit.Before;
*/
public class CompositeRequirementTest {
- private static final @NonNull TmfAnalysisRequirement FALSE_REQ1 = new TmfAnalysisRequirement(Collections.EMPTY_SET, PriorityLevel.MANDATORY) {
+ private static final @NonNull TmfAbstractAnalysisRequirement FALSE_REQ1 = new TmfAbstractAnalysisRequirement(Collections.EMPTY_SET, PriorityLevel.MANDATORY) {
@Override
public boolean test(ITmfTrace trace) {
return false;
}
};
- private static final @NonNull TmfAnalysisRequirement FALSE_REQ2 = new TmfAnalysisRequirement(Collections.EMPTY_SET, PriorityLevel.MANDATORY) {
+ private static final @NonNull TmfAbstractAnalysisRequirement FALSE_REQ2 = new TmfAbstractAnalysisRequirement(Collections.EMPTY_SET, PriorityLevel.MANDATORY) {
@Override
public boolean test(ITmfTrace trace) {
return false;
}
};
- private static final @NonNull TmfAnalysisRequirement TRUE_REQ1 = new TmfAnalysisRequirement(Collections.EMPTY_SET, PriorityLevel.MANDATORY) {
+ private static final @NonNull TmfAbstractAnalysisRequirement TRUE_REQ1 = new TmfAbstractAnalysisRequirement(Collections.EMPTY_SET, PriorityLevel.MANDATORY) {
@Override
public boolean test(ITmfTrace trace) {
return true;
}
};
- private static final @NonNull TmfAnalysisRequirement TRUE_REQ2 = new TmfAnalysisRequirement(Collections.EMPTY_SET, PriorityLevel.MANDATORY) {
+ private static final @NonNull TmfAbstractAnalysisRequirement TRUE_REQ2 = new TmfAbstractAnalysisRequirement(Collections.EMPTY_SET, PriorityLevel.MANDATORY) {
@Override
public boolean test(ITmfTrace trace) {
return true;
ITmfTrace trace = fTrace;
assertNotNull(trace);
- TmfAnalysisRequirement req = new TmfCompositeAnalysisRequirement(ImmutableSet.of(TRUE_REQ1), PriorityLevel.MANDATORY);
+ TmfAbstractAnalysisRequirement req = new TmfCompositeAnalysisRequirement(ImmutableSet.of(TRUE_REQ1), PriorityLevel.MANDATORY);
assertTrue(req.test(trace));
req = new TmfCompositeAnalysisRequirement(ImmutableSet.of(TRUE_REQ1, TRUE_REQ2), PriorityLevel.MANDATORY);
ITmfTrace trace = fTrace;
assertNotNull(trace);
- TmfAnalysisRequirement req = new TmfCompositeAnalysisRequirement(ImmutableSet.of(TRUE_REQ1), PriorityLevel.AT_LEAST_ONE);
+ TmfAbstractAnalysisRequirement req = new TmfCompositeAnalysisRequirement(ImmutableSet.of(TRUE_REQ1), PriorityLevel.AT_LEAST_ONE);
assertTrue(req.test(trace));
req = new TmfCompositeAnalysisRequirement(ImmutableSet.of(TRUE_REQ1, TRUE_REQ2), PriorityLevel.AT_LEAST_ONE);
ITmfTrace trace = fTrace;
assertNotNull(trace);
- TmfAnalysisRequirement req = new TmfCompositeAnalysisRequirement(ImmutableSet.of(TRUE_REQ1), PriorityLevel.ALL_OR_NOTHING);
+ TmfAbstractAnalysisRequirement req = new TmfCompositeAnalysisRequirement(ImmutableSet.of(TRUE_REQ1), PriorityLevel.ALL_OR_NOTHING);
assertTrue(req.test(trace));
req = new TmfCompositeAnalysisRequirement(ImmutableSet.of(TRUE_REQ1, TRUE_REQ2), PriorityLevel.ALL_OR_NOTHING);
ITmfTrace trace = fTrace;
assertNotNull(trace);
- TmfAnalysisRequirement req = new TmfCompositeAnalysisRequirement(ImmutableSet.of(TRUE_REQ1), PriorityLevel.OPTIONAL);
+ TmfAbstractAnalysisRequirement req = new TmfCompositeAnalysisRequirement(ImmutableSet.of(TRUE_REQ1), PriorityLevel.OPTIONAL);
assertTrue(req.test(trace));
req = new TmfCompositeAnalysisRequirement(ImmutableSet.of(TRUE_REQ1, TRUE_REQ2), PriorityLevel.OPTIONAL);
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.tracecompass.tmf.core.analysis.IAnalysisModule;
import org.eclipse.tracecompass.tmf.core.analysis.IAnalysisModuleHelper;
-import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAnalysisRequirement;
+import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAbstractAnalysisRequirement;
import org.eclipse.tracecompass.tmf.core.exceptions.TmfAnalysisException;
import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
import org.eclipse.tracecompass.tmf.tests.stubs.trace.TmfTraceStub;
}
@Override
- public Iterable<TmfAnalysisRequirement> getAnalysisRequirements() {
+ public Iterable<TmfAbstractAnalysisRequirement> getAnalysisRequirements() {
switch (fModule) {
case TEST:
return ImmutableList.of(
package org.eclipse.tracecompass.tmf.tests.stubs.analysis;
+import java.util.Collection;
import java.util.Set;
+import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.NonNullByDefault;
-import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAnalysisRequirement;
-import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAnalysisRequirement.PriorityLevel;
+import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAbstractAnalysisRequirement;
+import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAbstractAnalysisRequirement.PriorityLevel;
+import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
import com.google.common.collect.ImmutableSet;
@NonNullByDefault
public final class AnalysisRequirementFactory {
- private AnalysisRequirementFactory() {}
+ private AnalysisRequirementFactory() {
+ }
public static final String REQUIREMENT_VALUE_1 = "value1";
public static final String REQUIREMENT_VALUE_2 = "value2";
REQUIREMENT_VALUE_1,
REQUIREMENT_VALUE_2,
REQUIREMENT_VALUE_3,
- REQUIREMENT_VALUE_5
- );
+ REQUIREMENT_VALUE_5);
public static final Set<String> REQUIREMENT_VALUES_2 = ImmutableSet.of(
REQUIREMENT_VALUE_2,
- REQUIREMENT_VALUE_3
- );
+ REQUIREMENT_VALUE_3);
public static final Set<String> REQUIREMENT_VALUES_3 = ImmutableSet.of(
REQUIREMENT_VALUE_3,
REQUIREMENT_VALUE_4,
- REQUIREMENT_VALUE_5
- );
-
- public static final TmfAnalysisRequirement REQUIREMENT_1 =
- new TmfAnalysisRequirement(REQUIREMENT_VALUES_1, PriorityLevel.MANDATORY);
- public static final TmfAnalysisRequirement REQUIREMENT_2 =
- new TmfAnalysisRequirement(REQUIREMENT_VALUES_2, PriorityLevel.MANDATORY);
- public static final TmfAnalysisRequirement REQUIREMENT_3 =
- new TmfAnalysisRequirement(REQUIREMENT_VALUES_3, PriorityLevel.MANDATORY);
+ REQUIREMENT_VALUE_5);
+
+ public static class TmfRequirementStub extends TmfAbstractAnalysisRequirement {
+
+ public TmfRequirementStub(Collection<@NonNull String> values, PriorityLevel level) {
+ super(values, level);
+ }
+
+ @Override
+ @NonNullByDefault({})
+ public boolean test(ITmfTrace arg0) {
+ return true;
+ }
+ }
+
+ public static final TmfAbstractAnalysisRequirement REQUIREMENT_1 = new TmfRequirementStub(REQUIREMENT_VALUES_1, PriorityLevel.MANDATORY);
+ public static final TmfAbstractAnalysisRequirement REQUIREMENT_2 = new TmfRequirementStub(REQUIREMENT_VALUES_2, PriorityLevel.MANDATORY);
+ public static final TmfAbstractAnalysisRequirement REQUIREMENT_3 = new TmfRequirementStub(REQUIREMENT_VALUES_3, PriorityLevel.MANDATORY);
}
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.tracecompass.tmf.core.analysis.TmfAbstractAnalysisModule;
-import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAnalysisRequirement;
+import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAbstractAnalysisRequirement;
import org.eclipse.tracecompass.tmf.core.exceptions.TmfAnalysisException;
import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
import org.eclipse.tracecompass.tmf.tests.stubs.trace.TmfTraceStub;
}
@Override
- public Iterable<TmfAnalysisRequirement> getAnalysisRequirements() {
- Set<TmfAnalysisRequirement> requirements = ImmutableSet.of(
+ public Iterable<TmfAbstractAnalysisRequirement> getAnalysisRequirements() {
+ Set<TmfAbstractAnalysisRequirement> requirements = ImmutableSet.of(
AnalysisRequirementFactory.REQUIREMENT_1,
AnalysisRequirementFactory.REQUIREMENT_3);
import org.eclipse.tracecompass.common.core.NonNullUtils;
import org.eclipse.tracecompass.internal.tmf.core.Activator;
import org.eclipse.tracecompass.internal.tmf.core.TmfCoreTracer;
-import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAnalysisRequirement;
+import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAbstractAnalysisRequirement;
import org.eclipse.tracecompass.tmf.core.component.TmfComponent;
import org.eclipse.tracecompass.tmf.core.exceptions.TmfAnalysisException;
import org.eclipse.tracecompass.tmf.core.project.model.ITmfPropertiesProvider;
@Override
public boolean canExecute(ITmfTrace trace) {
- for (TmfAnalysisRequirement requirement : getAnalysisRequirements()) {
+ for (TmfAbstractAnalysisRequirement requirement : getAnalysisRequirements()) {
if (!requirement.test(trace)) {
return false;
}
protected String getTraceCannotExecuteHelpText(ITmfTrace trace) {
StringBuilder builder = new StringBuilder();
builder.append(NLS.bind(Messages.TmfAbstractAnalysisModule_AnalysisCannotExecute, getName()));
- for (TmfAnalysisRequirement requirement : getAnalysisRequirements()) {
+ for (TmfAbstractAnalysisRequirement requirement : getAnalysisRequirements()) {
if (!requirement.test(trace)) {
builder.append("\n\n"); //$NON-NLS-1$
builder.append(NLS.bind(Messages.TmfAnalysis_RequirementNotFulfilled, requirement.getPriorityLevel()));
}
@Override
- public Iterable<@NonNull TmfAnalysisRequirement> getAnalysisRequirements() {
+ public Iterable<@NonNull TmfAbstractAnalysisRequirement> getAnalysisRequirements() {
return Collections.EMPTY_SET;
}
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.tracecompass.internal.tmf.core.Activator;
import org.eclipse.tracecompass.internal.tmf.core.analysis.TmfAnalysisModuleSourceConfigElement;
-import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAnalysisRequirement;
+import org.eclipse.tracecompass.tmf.core.analysis.requirements.TmfAbstractAnalysisRequirement;
import org.eclipse.tracecompass.tmf.core.exceptions.TmfAnalysisException;
import org.eclipse.tracecompass.tmf.core.project.model.TmfTraceType;
import org.eclipse.tracecompass.tmf.core.project.model.TraceTypeHelper;
}
@Override
- public Iterable<TmfAnalysisRequirement> getAnalysisRequirements() {
+ public Iterable<TmfAbstractAnalysisRequirement> getAnalysisRequirements() {
IAnalysisModule module = createModule();
if (module != null) {
return module.getAnalysisRequirements();
*
* @return List of requirement
*/
- Iterable<TmfAnalysisRequirement> getAnalysisRequirements();
+ Iterable<TmfAbstractAnalysisRequirement> getAnalysisRequirements();
}
--- /dev/null
+/*******************************************************************************
+ * Copyright (c) 2014, 2016 École Polytechnique de Montréal
+ *
+ * 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
+ *******************************************************************************/
+
+package org.eclipse.tracecompass.tmf.core.analysis.requirements;
+
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
+import java.util.function.Predicate;
+
+import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
+
+import com.google.common.collect.ImmutableSet;
+
+/**
+ * This class represents a requirement that a trace must verify for an analysis
+ * to be able to run on it. This class is the base class for more specific
+ * requirement classes that will implement what to do with the values specified.
+ *
+ * A requirement has a priority level which will determine how the values will
+ * be tested on the trace and what the result should be depending on the
+ * presence or absence of those values.
+ *
+ * Moreover, useful information that can not be leveled with a priority but are
+ * important for the proper execution of an analysis can be added.
+ *
+ * @author Guilliano Molaire
+ * @author Mathieu Rail
+ * @author Geneviève Bastien
+ * @since 2.0
+ */
+public abstract class TmfAbstractAnalysisRequirement implements Predicate<ITmfTrace> {
+
+ private final Set<@NonNull String> fValues = new HashSet<>();
+ private final Set<@NonNull String> fInformation = new HashSet<>();
+ private final PriorityLevel fLevel;
+
+ /**
+ * The possible level for a requirement.
+ */
+ public enum PriorityLevel {
+ /** The value could be absent and the analysis would still work */
+ OPTIONAL,
+ /**
+ * The values can be absent, but if one is present, then all should be
+ * present
+ */
+ ALL_OR_NOTHING,
+ /** At least one of the values must be present at runtime */
+ AT_LEAST_ONE,
+ /** The value must be present at runtime (for the analysis) */
+ MANDATORY
+ }
+
+ /**
+ * Constructor. Instantiate a requirement object with a list of values of
+ * the same level
+ *
+ * @param values
+ * All the values associated with that type
+ * @param level
+ * A level associated with all the values
+ */
+ public TmfAbstractAnalysisRequirement(Collection<String> values, PriorityLevel level) {
+ fLevel = level;
+ fValues.addAll(values);
+ }
+
+ /**
+ * Adds an information about the requirement.
+ *
+ * @param information
+ * The information to be added
+ */
+ public void addInformation(String information) {
+ fInformation.add(information);
+ }
+
+ /**
+ * Gets all the values associated with the requirement.
+ *
+ * @return Set containing the values
+ */
+ public Set<String> getValues() {
+ synchronized (fValues) {
+ return ImmutableSet.copyOf(fValues);
+ }
+ }
+
+ /**
+ * Gets information about the requirement.
+ *
+ * @return The set of all the information
+ */
+ public Set<@NonNull String> getInformation() {
+ return fInformation;
+ }
+
+ /**
+ * Gets the level of this requirement
+ *
+ * @return The level of the requirement
+ */
+ public PriorityLevel getPriorityLevel() {
+ return fLevel;
+ }
+
+ @Override
+ public String toString() {
+ return getClass().getName() + ": " + fValues; //$NON-NLS-1$
+ }
+}
* @author Bernd Hufmann
* @since 2.0
*/
-public class TmfAnalysisEventFieldRequirement extends TmfAnalysisRequirement {
+public class TmfAnalysisEventFieldRequirement extends TmfAbstractAnalysisRequirement {
/** The event name of the event containing the mandatory fields */
private String fEventName;
* @author Geneviève Bastien
* @since 2.0
*/
-public class TmfAnalysisEventRequirement extends TmfAnalysisRequirement {
+public class TmfAnalysisEventRequirement extends TmfAbstractAnalysisRequirement {
/**
* Constructor for an optional requirement
+++ /dev/null
-/*******************************************************************************
- * Copyright (c) 2014, 2016 École Polytechnique de Montréal
- *
- * 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
- *******************************************************************************/
-
-package org.eclipse.tracecompass.tmf.core.analysis.requirements;
-
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Set;
-import java.util.function.Predicate;
-
-import org.eclipse.jdt.annotation.NonNull;
-import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace;
-
-import com.google.common.collect.ImmutableSet;
-
-/**
- * This class represents a requirement that a trace must verify for an analysis
- * to be able to run on it. This class is the base class for more specific
- * requirement classes that will implement what to do with the values specified.
- *
- * A requirement has a priority level which will determine how the values will
- * be tested on the trace and what the result should be depending on the
- * presence or absence of those values.
- *
- * Moreover, useful information that can not be leveled with a priority but are
- * important for the proper execution of an analysis can be added.
- *
- * @author Guilliano Molaire
- * @author Mathieu Rail
- * @author Geneviève Bastien
- * @since 2.0
- */
-public class TmfAnalysisRequirement implements Predicate<ITmfTrace> {
-
- private final Set<@NonNull String> fValues = new HashSet<>();
- private final Set<@NonNull String> fInformation = new HashSet<>();
- private final PriorityLevel fLevel;
-
- /**
- * The possible level for a requirement.
- */
- public enum PriorityLevel {
- /** The value could be absent and the analysis would still work */
- OPTIONAL,
- /**
- * The values can be absent, but if one is present, then all should be
- * present
- */
- ALL_OR_NOTHING,
- /** At least one of the values must be present at runtime */
- AT_LEAST_ONE,
- /** The value must be present at runtime (for the analysis) */
- MANDATORY
- }
-
- /**
- * Constructor. Instantiate a requirement object with a list of values of
- * the same level
- *
- * @param values
- * All the values associated with that type
- * @param level
- * A level associated with all the values
- */
- public TmfAnalysisRequirement(Collection<String> values, PriorityLevel level) {
- fLevel = level;
- fValues.addAll(values);
- }
-
- /**
- * Adds an information about the requirement.
- *
- * @param information
- * The information to be added
- */
- public void addInformation(String information) {
- fInformation.add(information);
- }
-
- /**
- * Gets all the values associated with the requirement.
- *
- * @return Set containing the values
- */
- public Set<String> getValues() {
- synchronized (fValues) {
- return ImmutableSet.copyOf(fValues);
- }
- }
-
- /**
- * Gets information about the requirement.
- *
- * @return The set of all the information
- */
- public Set<@NonNull String> getInformation() {
- return fInformation;
- }
-
- /**
- * Gets the level of this requirement
- *
- * @return The level of the requirement
- */
- public PriorityLevel getPriorityLevel() {
- return fLevel;
- }
-
- /**
- * Verifies whether a trace fulfills this requirement
- *
- * @param trace
- * The trace on which to check for this requirement
- * @return True if the trace has all mandatory values of this requirement
- */
- @Override
- public boolean test(ITmfTrace trace) {
- return true;
- }
-
- @Override
- public String toString() {
- return getClass().getName() + ": " + fValues; //$NON-NLS-1$
- }
-}
* @author Geneviève Bastien
* @since 2.0
*/
-public class TmfCompositeAnalysisRequirement extends TmfAnalysisRequirement {
+public class TmfCompositeAnalysisRequirement extends TmfAbstractAnalysisRequirement {
- private final Collection<TmfAnalysisRequirement> fSubReqs;
+ private final Collection<TmfAbstractAnalysisRequirement> fSubReqs;
/**
* Constructor with sub requirements
* @param level
* The level of this requirement
*/
- public TmfCompositeAnalysisRequirement(Collection<TmfAnalysisRequirement> subRequirements, PriorityLevel level) {
+ public TmfCompositeAnalysisRequirement(Collection<TmfAbstractAnalysisRequirement> subRequirements, PriorityLevel level) {
super(Collections.EMPTY_SET, level);
fSubReqs = ImmutableList.copyOf(subRequirements);
}
@Override
public boolean test(ITmfTrace trace) {
- Collection<TmfAnalysisRequirement> subReqs = fSubReqs;
+ Collection<TmfAbstractAnalysisRequirement> subReqs = fSubReqs;
if (subReqs.isEmpty()) {
return true;
}