use of org.eclipse.debug.core.IStatusHandler in project statecharts by Yakindu.
the class AbstractSimulationEngine method handleException.
protected void handleException(Throwable t) {
if (t instanceof WrappedException) {
t = ((WrappedException) t).getCause();
}
String statusMessage = t.getMessage() == null ? ERROR_MSG : t.getMessage();
Status errorStatus = new Status(Status.ERROR, SimulationCoreActivator.PLUGIN_ID, ERROR_DURING_SIMULATION, statusMessage, t);
SimulationCoreActivator.getDefault().getLog().log(errorStatus);
IStatusHandler statusHandler = DebugPlugin.getDefault().getStatusHandler(errorStatus);
try {
statusHandler.handleStatus(errorStatus, getDebugTarget());
} catch (CoreException e) {
e.printStackTrace();
} finally {
terminate();
}
}
use of org.eclipse.debug.core.IStatusHandler in project statecharts by Yakindu.
the class AbstractExecutionFlowSimulationEngine method init.
@Override
public void init() {
try {
ListBasedValidationIssueAcceptor acceptor = new ListBasedValidationIssueAcceptor();
ExecutionFlow flow = sequencer.transform(statechart, acceptor);
if (acceptor.getTraces(Severity.ERROR).size() > 0) {
Status errorStatus = new Status(Status.ERROR, SimulationCoreActivator.PLUGIN_ID, ERROR_DURING_SIMULATION, acceptor.getTraces(Severity.ERROR).iterator().next().toString(), null);
IStatusHandler statusHandler = DebugPlugin.getDefault().getStatusHandler(errorStatus);
try {
statusHandler.handleStatus(errorStatus, getDebugTarget());
} catch (CoreException e) {
e.printStackTrace();
}
}
if (!context.isSnapshot()) {
contextInitializer.initialize(context, flow);
}
interpreter.initialize(flow, context, useInternalEventQueue());
} catch (Exception ex) {
handleException(ex);
throw new InitializationException(ex.getMessage());
}
}
use of org.eclipse.debug.core.IStatusHandler in project bndtools by bndtools.
the class AbstractOSGiLaunchDelegate method finalLaunchCheck.
@Override
public boolean finalLaunchCheck(ILaunchConfiguration configuration, String mode, IProgressMonitor monitor) throws CoreException {
// Check for existing launches of same resource
BndPreferences prefs = new BndPreferences();
if (prefs.getWarnExistingLaunches()) {
IResource launchResource = LaunchUtils.getTargetResource(configuration);
if (launchResource == null)
throw new CoreException(new Status(IStatus.ERROR, Plugin.PLUGIN_ID, 0, "Bnd launch target was not specified or does not exist.", null));
int processCount = 0;
for (ILaunch l : DebugPlugin.getDefault().getLaunchManager().getLaunches()) {
// ... is it the same launch resource?
ILaunchConfiguration launchConfig = l.getLaunchConfiguration();
if (launchConfig == null) {
continue;
}
if (launchResource.equals(LaunchUtils.getTargetResource(launchConfig))) {
// Iterate existing processes
for (IProcess process : l.getProcesses()) {
if (!process.isTerminated())
processCount++;
}
}
}
// Warn if existing processes running
if (processCount > 0) {
Status status = new Status(IStatus.WARNING, Plugin.PLUGIN_ID, 0, "One or more OSGi Frameworks have already been launched for this configuration. Additional framework instances may interfere with each other due to the shared storage directory.", null);
IStatusHandler prompter = DebugPlugin.getDefault().getStatusHandler(status);
if (prompter != null) {
boolean okay = (Boolean) prompter.handleStatus(status, launchResource);
if (!okay)
return okay;
}
}
}
IStatus launchStatus = getLauncherStatus();
IStatusHandler prompter = DebugPlugin.getDefault().getStatusHandler(launchStatus);
if (prompter != null)
return (Boolean) prompter.handleStatus(launchStatus, run);
return true;
}
use of org.eclipse.debug.core.IStatusHandler in project bndtools by bndtools.
the class OSGiJUnitLaunchDelegate method finalLaunchCheck.
@Override
public boolean finalLaunchCheck(ILaunchConfiguration configuration, String mode, IProgressMonitor monitor) throws CoreException {
boolean result = super.finalLaunchCheck(configuration, mode, monitor);
// Trigger opening of the JUnit view
Status junitStatus = new Status(IStatus.INFO, Plugin.PLUGIN_ID, LaunchConstants.LAUNCH_STATUS_JUNIT, "", null);
IStatusHandler handler = DebugPlugin.getDefault().getStatusHandler(junitStatus);
if (handler != null)
handler.handleStatus(junitStatus, null);
return result;
}
use of org.eclipse.debug.core.IStatusHandler in project bndtools by bndtools.
the class NativeBndLaunchDelegate method launch.
/*
* The Eclipse launch interface.
*/
@Override
public void launch(ILaunchConfiguration configuration, String mode, final ILaunch launch, IProgressMonitor m) throws CoreException {
final IProgressMonitor monitor = m == null ? new NullProgressMonitor() : m;
Callable<Boolean> isCancelled = new Callable<Boolean>() {
@Override
public Boolean call() throws Exception {
return canceled || monitor.isCanceled();
}
};
Processor p = new Processor();
try {
monitor.setTaskName("Detecting if configuration is already launched");
if (isAlreadyRunning(configuration)) {
return;
}
String target = configuration.getAttribute(LaunchConstants.ATTR_LAUNCH_TARGET, (String) null);
if (target == null || target.length() == 0) {
p.error("No target specified in the launch configuration");
return;
}
IResource targetResource = ResourcesPlugin.getWorkspace().getRoot().findMember(target);
if (targetResource == null) {
p.error("No actual resource found for " + target);
return;
}
IProject parent = targetResource.getProject();
if (parent == null) {
p.error("Not part of a project " + targetResource);
return;
}
Project parentModel = Central.getProject(parent);
if (parentModel == null) {
p.error("Cannot locate Bnd project for " + targetResource);
return;
}
Project model;
if (targetResource.getName().equals(Project.BNDFILE)) {
model = parentModel;
} else {
File file = targetResource.getLocation().toFile();
if (file == null || !file.isFile()) {
p.error("No file associated with the entry " + targetResource);
return;
}
model = new Run(parentModel.getWorkspace(), parentModel.getBase(), file);
}
monitor.setTaskName("Target is " + model);
boolean debug = "debug".equals(mode);
try {
List<LaunchThread> lts = new ArrayList<LaunchThread>();
ProjectLauncher projectLauncher = model.getProjectLauncher();
try {
List<? extends RunSession> sessions = projectLauncher.getRunSessions();
if (sessions == null) {
projectLauncher.error("This launcher for %s cannot handle the new style", target);
return;
}
for (RunSession session : sessions) try {
monitor.setTaskName("validating session " + session.getLabel());
if (!session.validate(isCancelled)) {
continue;
}
LaunchThread lt = new LaunchThread(projectLauncher, session, launch);
if (debug) {
lt.doDebug(monitor);
}
if (monitor.isCanceled())
return;
launch.addProcess(lt);
lts.add(lt);
} catch (Exception e) {
projectLauncher.exception(e, "Starting session %s in project %s", session.getName(), model);
}
} catch (Exception e) {
projectLauncher.exception(e, "starting processes");
} finally {
p.getInfo(projectLauncher);
}
if (!p.isOk()) {
IStatus status = Central.toStatus(projectLauncher, "Errors detected during the launch");
IStatusHandler prompter = DebugPlugin.getDefault().getStatusHandler(status);
Boolean cont = (Boolean) prompter.handleStatus(status, null);
if (cont == null || !cont || monitor.isCanceled()) {
launch.terminate();
return;
}
}
for (LaunchThread lt : lts) {
lt.start();
}
} catch (Exception e) {
launch.terminate();
abort("Internal error", e, IJavaLaunchConfigurationConstants.ERR_INTERNAL_ERROR);
}
} catch (Exception e) {
p.exception(e, "While starting a launch %s", configuration);
} finally {
if (!p.isOk()) {
IStatus status = Central.toStatus(p, "Errors detected during the launch");
IStatusHandler prompter = new LaunchStatusHandler();
prompter.handleStatus(status, null);
launch.terminate();
}
monitor.done();
IO.close(p);
}
}
Aggregations