Skip to content

Commit 71a804f

Browse files
committed
tmf: Return one callsite in TmfEventTableDataProvider if not a list
The returned string will be in form "file:line" instead of [file:line]. Trace Server clients will be able to use the string directly in that case. Lists are less common clients need to handle it separately. [Changed] Return one callsite in TmfEventTableDataProvider if not a list Signed-off-by: Bernd Hufmann <[email protected]>
1 parent 1b99a95 commit 71a804f

File tree

1 file changed

+19
-1
lines changed

1 file changed

+19
-1
lines changed

tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/internal/provisional/tmf/core/model/events/TmfEventTableDataProvider.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@
4545
import org.eclipse.tracecompass.tmf.core.event.aspect.ITmfEventAspect;
4646
import org.eclipse.tracecompass.tmf.core.event.aspect.MultiAspect;
4747
import org.eclipse.tracecompass.tmf.core.event.aspect.TmfBaseAspects;
48+
import org.eclipse.tracecompass.tmf.core.event.aspect.TmfCallsiteAspect;
49+
import org.eclipse.tracecompass.tmf.core.event.lookup.ITmfCallsite;
4850
import org.eclipse.tracecompass.tmf.core.filter.FilterManager;
4951
import org.eclipse.tracecompass.tmf.core.filter.ITmfFilter;
5052
import org.eclipse.tracecompass.tmf.core.filter.model.ITmfFilterTreeNode;
@@ -561,7 +563,12 @@ private static EventTableLine buildEventTableLine(Map<Long, ITmfEventAspect<?>>
561563
List<VirtualTableCell> entry = new ArrayList<>(aspects.size());
562564
for (Entry<Long, ITmfEventAspect<?>> aspectEntry : aspects.entrySet()) {
563565
ITmfEventAspect<?> aspect = Objects.requireNonNull(aspectEntry.getValue());
564-
Object aspectResolved = aspect.resolve(event);
566+
Object aspectResolved = null;
567+
if (aspect instanceof TmfCallsiteAspect) {
568+
aspectResolved = toCallsiteString(event, (TmfCallsiteAspect) aspect);
569+
} else {
570+
aspectResolved = aspect.resolve(event);
571+
}
565572
String cellContent = aspectResolved == null ? StringUtils.EMPTY : String.valueOf(aspectResolved);
566573
entry.add(new VirtualTableCell(cellContent));
567574
}
@@ -570,6 +577,17 @@ private static EventTableLine buildEventTableLine(Map<Long, ITmfEventAspect<?>>
570577
return tableLine;
571578
}
572579

580+
private static @Nullable String toCallsiteString(ITmfEvent event, TmfCallsiteAspect callsiteAspect) {
581+
List<ITmfCallsite> result = callsiteAspect.resolve(event);
582+
if (result != null && !result.isEmpty()) {
583+
if (result.size() == 1) {
584+
return result.get(0).toString();
585+
}
586+
return result.toString();
587+
}
588+
return null;
589+
}
590+
573591
/**
574592
* Apply a filter to this provider that will be used for future request. If
575593
* the current filter is null or not equal to the provided filter, the

0 commit comments

Comments
 (0)