/** * This file is licensed under the University of Illinois/NCSA Open Source License. See LICENSE.TXT for details. */ package edu.illinois.codingspectator.saferecorder; import java.util.Collection; import java.util.LinkedList; import org.eclipse.core.runtime.ISafeRunnable; import org.eclipse.core.runtime.SafeRunner; import edu.illinois.codingspectator.monitor.core.submission.SubmitterListener; /** * * @author Stas Negara * @author Mohsen Vakilian * */ public class RecorderSubmitterListener implements SubmitterListener { private static Collection<SafeRecorder> safeRecorderInstances= new LinkedList<SafeRecorder>(); public static synchronized void addSafeRecorderInstance(SafeRecorder safeRecorder) { if (safeRecorderInstances.contains(safeRecorder)) { throw new RuntimeException("Can not add the same instance of SafeRecorder twice"); } safeRecorderInstances.add(safeRecorder); } @Override public void preSubmit() { } @Override public void preCommit() { for (final SafeRecorder safeRecorderInstance : safeRecorderInstances) { SafeRunner.run(new ISafeRunnable() { @Override public void run() throws Exception { safeRecorderInstance.aboutToCommit(); } @Override public void handleException(Throwable exception) { } }); } } @Override public void postSubmit(boolean succeeded) { for (final SafeRecorder safeRecorderInstance : safeRecorderInstances) { SafeRunner.run(new ISafeRunnable() { @Override public void run() throws Exception { safeRecorderInstance.commitCompleted(); } @Override public void handleException(Throwable exception) { } }); } } }