Skip to content

Commit 534edbb

Browse files
committed
server: Create bookmarks file for experiments
The bookmarks file can be used to store and retrieve markers associated with an experiment using platform APIs. It can later be obtained for an opened experiment with: TmfTraceManager.getInstance().getTraceEditorFile(experiment) Signed-off-by: Patrick Tasse <patrick.tasse@gmail.com>
1 parent 8a218dd commit 534edbb

File tree

1 file changed

+22
-1
lines changed
  • trace-server/org.eclipse.tracecompass.incubator.trace.server.jersey.rest.core/src/org/eclipse/tracecompass/incubator/internal/trace/server/jersey/rest/core/services

1 file changed

+22
-1
lines changed

trace-server/org.eclipse.tracecompass.incubator.trace.server.jersey.rest.core/src/org/eclipse/tracecompass/incubator/internal/trace/server/jersey/rest/core/services/ExperimentManagerService.java

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import java.io.ByteArrayInputStream;
2020
import java.io.File;
2121
import java.io.IOException;
22+
import java.io.InputStream;
2223
import java.nio.charset.Charset;
2324
import java.util.ArrayList;
2425
import java.util.Arrays;
@@ -103,6 +104,8 @@ public class ExperimentManagerService {
103104
private static final String EXPERIMENTS_FOLDER = "Experiments"; //$NON-NLS-1$
104105
private static final String TRACES_FOLDER = "Traces"; //$NON-NLS-1$
105106
private static final String SUFFIX = "_exp"; //$NON-NLS-1$
107+
private static final String BOOKMARKS_HIDDEN_FILE = ".bookmarks"; //$NON-NLS-1$
108+
private static final String EXPERIMENT_EDITOR_INPUT_TYPE = "editorInputType.experiment"; //$NON-NLS-1$
106109

107110
/**
108111
* Getter for the list of experiments from the trace manager
@@ -374,7 +377,7 @@ public Response postExperiment(@RequestBody(content = {
374377
experiment.getNext(ctx);
375378
ctx.dispose();
376379

377-
TmfSignalManager.dispatchSignal(new TmfTraceOpenedSignal(ExperimentManagerService.class, experiment, null));
380+
TmfSignalManager.dispatchSignal(new TmfTraceOpenedSignal(ExperimentManagerService.class, experiment, createBookmarksFile(resource)));
378381

379382
EXPERIMENTS.put(expUUID, experiment);
380383
TRACE_INSTANCES.put(expUUID, uuidToTraceInstances);
@@ -495,6 +498,24 @@ private static void createSupplementaryFolder(IResource experimentResource) {
495498
}
496499
}
497500

501+
private static IFile createBookmarksFile(IResource resource) {
502+
IFile file = ((IFolder) resource).getFile(resource.getName() + '_');
503+
try {
504+
if (!file.exists()) {
505+
final IFile bookmarksFile = ((IFolder) resource.getParent()).getFile(BOOKMARKS_HIDDEN_FILE);
506+
if (!bookmarksFile.exists()) {
507+
final InputStream source = new ByteArrayInputStream(new byte[0]);
508+
bookmarksFile.create(source, IResource.FORCE | IResource.HIDDEN, new NullProgressMonitor());
509+
}
510+
file.createLink(bookmarksFile.getLocation(), IResource.REPLACE | IResource.HIDDEN, new NullProgressMonitor());
511+
}
512+
file.setPersistentProperty(TmfCommonConstants.TRACETYPE, EXPERIMENT_EDITOR_INPUT_TYPE);
513+
} catch (CoreException e) {
514+
Activator.getInstance().logWarning("Error creating bookmarks file", e); //$NON-NLS-1$
515+
}
516+
return file;
517+
}
518+
498519
private static void createFolder(IFolder folder) throws CoreException {
499520
if (!folder.exists()) {
500521
if (folder.getParent() instanceof IFolder) {

0 commit comments

Comments
 (0)