use of org.eclipse.debug.core.model.IStreamsProxy in project erlide_eclipse by erlang.
the class Backend method assignStreamProxyListeners.
public void assignStreamProxyListeners() {
if (data.getLaunch() == null) {
return;
}
final IStreamsProxy proxy = getStreamsProxy();
if (proxy != null) {
final IStreamMonitor errorStreamMonitor = proxy.getErrorStreamMonitor();
errorStreamMonitor.addListener(this);
final IStreamMonitor outputStreamMonitor = proxy.getOutputStreamMonitor();
outputStreamMonitor.addListener(this);
}
}
use of org.eclipse.debug.core.model.IStreamsProxy in project webtools.servertools by eclipse.
the class PreviewLaunchConfigurationDelegate method getJavaExecutable.
/**
* @return the File representing the Java Runtime's executable. A
* heuristic is used to avoid a hard dependency on JDT and its
* "Installed JREs" preferences. page.
*/
protected static File getJavaExecutable() {
// $NON-NLS-1$
String home = System.getProperty("java.home");
if (Platform.getOS().equals(Constants.OS_MACOSX)) {
/*
* See "Important Java Directories on Mac OS X", at
* https://developer.apple.com/library/content/qa/qa1170/_index.
* html
*
* The following is liberally borrowed from
* org.eclipse.jdt.internal.launching.LaunchingPlugin
*/
Process p = null;
try {
// $NON-NLS-1$
p = DebugPlugin.exec(new String[] { "/usr/libexec/java_home" }, null, new String[0]);
// $NON-NLS-1$
IProcess process = DebugPlugin.newProcess(new Launch(null, ILaunchManager.RUN_MODE, null), p, "Looking for the user's enabled and preferred JVMs");
for (int i = 0; i < 600; i++) {
// Wait no more than 30 seconds (600 * 50 milliseconds)
if (process.isTerminated()) {
break;
}
try {
Thread.sleep(50);
} catch (InterruptedException e) {
// just keep sleeping
}
}
IStreamsProxy streamsProxy = process.getStreamsProxy();
String text = null;
if (streamsProxy != null) {
text = streamsProxy.getOutputStreamMonitor().getContents().trim();
}
if (text != null && text.length() > 0) {
home = text;
}
} catch (CoreException ioe) {
// fall through
} finally {
if (p != null) {
p.destroy();
}
}
if (home == null) {
// $NON-NLS-1$
home = "/Library/Java/Home";
}
}
// retrieve the 'java.home' system property. If that directory doesn't exist, return null
File javaHome;
try {
javaHome = new File(home).getCanonicalFile();
} catch (IOException e) {
return null;
}
if (!javaHome.exists())
return null;
// found, return null
return findJavaExecutable(javaHome);
}
use of org.eclipse.debug.core.model.IStreamsProxy in project titan.EclipsePlug-ins by eclipse.
the class CliExecutor method startSession.
/**
* Initializes the Executor by starting the mctr_cli and connecting to it.
*
* @param arg2 the launch configuration to take the setup data from
*/
@Override
public void startSession(final ILaunch arg2) {
ProcessBuilder pb = new ProcessBuilder();
Map<String, String> env = pb.environment();
if (!appendEnvironmentalVariables) {
env.clear();
}
if (null != environmentalVariables) {
try {
EnvironmentHelper.resolveVariables(env, environmentalVariables);
} catch (CoreException e) {
ErrorReporter.logExceptionStackTrace(e);
}
}
EnvironmentHelper.setTitanPath(env);
EnvironmentHelper.set_LICENSE_FILE_PATH(env);
String mctrCliPath = getMctrPath(env);
List<String> command = new ArrayList<String>();
command.add("sh");
command.add("-c");
if (addConfigFilePath(mctrCliPath, command)) {
return;
}
printCommandToTitanConsole(command);
pb.command(command);
pb.redirectErrorStream(true);
if (null != workingdirectoryPath) {
File workingDir = new File(workingdirectoryPath);
if (!workingDir.exists()) {
Display.getDefault().syncExec(new Runnable() {
@Override
public void run() {
MessageDialog.openError(null, "Execution failed", "The working directory `" + workingdirectoryPath + "' does not exist.");
}
});
}
pb.directory(workingDir);
}
Process proc;
try {
proc = pb.start();
final InputStream inputstream = proc.getInputStream();
if (inputstream.markSupported()) {
inputstream.mark(40000);
}
BufferedReader stdout = new BufferedReader(new InputStreamReader(inputstream));
processWelcomeScreen(stdout);
if (inputstream.markSupported()) {
inputstream.reset();
}
} catch (IOException e) {
ErrorReporter.logExceptionStackTrace(e);
proc = null;
}
if (null != proc) {
process = DebugPlugin.newProcess(arg2, proc, MAIN_CONTROLLER);
IStreamsProxy proxy = process.getStreamsProxy();
if (null != proxy) {
IStreamMonitor outputStreamMonitor = proxy.getOutputStreamMonitor();
IStreamListener outputListener = new IStreamListener() {
@Override
public void streamAppended(final String text, final IStreamMonitor monitor) {
processConsoleOutput(text);
}
};
if (null != outputStreamMonitor) {
processConsoleOutput(outputStreamMonitor.getContents());
outputStreamMonitor.addListener(outputListener);
}
}
info();
}
super.startSession(arg2);
if (null == proc || null == process || process.isTerminated()) {
terminate(true);
}
if (null != Activator.getMainView()) {
Activator.getMainView().refreshAll();
}
if (null != thread) {
thread.start();
}
}
use of org.eclipse.debug.core.model.IStreamsProxy in project titan.EclipsePlug-ins by eclipse.
the class CliExecutor method createMainTestComponent.
/**
* Creates the Main Test Component.
*/
private void createMainTestComponent() {
createMTCRequested = true;
switch(suspectedLastState) {
case JniExecutor.MC_INACTIVE:
case JniExecutor.MC_LISTENING:
case JniExecutor.MC_LISTENING_CONFIGURED:
startHostControllers();
return;
default:
break;
}
IStreamsProxy proxy = process.getStreamsProxy();
if (proxy != null) {
try {
proxy.write("cmtc \n");
createMTCRequested = false;
} catch (IOException e) {
ErrorReporter.logError(EXTERNAL_TERMINATION);
terminate(true);
}
}
}
use of org.eclipse.debug.core.model.IStreamsProxy in project titan.EclipsePlug-ins by eclipse.
the class HostJob method run.
@Override
protected IStatus run(final IProgressMonitor monitor) {
IProcess process = DebugPlugin.newProcess(executor.getLaunchStarted(), proc, getName());
final IStreamsProxy proxy = process.getStreamsProxy();
if (null != proxy) {
final IStreamMonitor outputStreamMonitor = proxy.getOutputStreamMonitor();
final IStreamListener listener = new IStreamListener() {
@Override
public void streamAppended(final String text, final IStreamMonitor monitor) {
processConsoleOutput(text);
}
};
if (null != outputStreamMonitor) {
final String temp = outputStreamMonitor.getContents();
processConsoleOutput(temp);
outputStreamMonitor.addListener(listener);
}
}
final MessageConsoleStream stream = TITANConsole.getConsole().newMessageStream();
String line;
final BufferedReader stdout = new BufferedReader(new InputStreamReader(proc.getInputStream()));
final BufferedReader stderr = new BufferedReader(new InputStreamReader(proc.getErrorStream()));
try {
final int exitVal = proc.waitFor();
if (0 == exitVal) {
executor.addNotification(new Notification((new Formatter()).format(BaseExecutor.PADDEDDATETIMEFORMAT, new Date()).toString(), EMPTY, EMPTY, "Host Controller executed successfully"));
} else {
if (stderr.ready()) {
final String tempDate = (new Formatter()).format(BaseExecutor.PADDEDDATETIMEFORMAT, new Date()).toString();
executor.addNotification(new Notification(tempDate, EMPTY, EMPTY, "Host Controller execution failed"));
executor.addNotification(new Notification(tempDate, EMPTY, EMPTY, " returned with value:" + exitVal));
executor.addNotification(new Notification(tempDate, EMPTY, EMPTY, "Sent the following error messages:"));
line = stderr.readLine();
while (null != line) {
executor.addNotification(new Notification(tempDate, EMPTY, EMPTY, line));
line = stderr.readLine();
}
}
}
proc.destroy();
} catch (IOException e) {
stream.println("execution failed beacuse of interrupion");
ErrorReporter.logExceptionStackTrace(e);
return Status.CANCEL_STATUS;
} catch (InterruptedException e) {
stream.println("execution failed beacuse of interrupion");
ErrorReporter.logExceptionStackTrace(e);
return Status.CANCEL_STATUS;
} finally {
try {
stdout.close();
} catch (IOException e) {
ErrorReporter.logExceptionStackTrace(e);
}
try {
stderr.close();
} catch (IOException e) {
ErrorReporter.logExceptionStackTrace(e);
}
}
return Status.OK_STATUS;
}
Aggregations