in plugins/org.apache.karaf.eik.ui/src/main/java/org/apache/karaf/eik/ui/console/KarafRemoteConsole.java [65:147]
public KarafRemoteConsole(
final IProcess process,
final KarafSshConnectionUrl connectionUrl,
final KarafSshShellConnection.Credentials credentials,
final IConsoleColorProvider colorProvider,
final String name,
final String encoding) {
super(
name,
KARAF_REMOTE_CONSOLE_TYPE,
KarafUIPluginActivator.getDefault().getImageRegistry().getDescriptor(KarafUIPluginActivator.LOGO_16X16_IMG),
encoding,
true);
this.process = process;
this.inputStream = getInputStream();
this.colorProvider = colorProvider;
final Color color = this.colorProvider.getColor(IDebugUIConstants.ID_STANDARD_INPUT_STREAM);
this.inputStream.setColor(color);
final InputStream noAvailableInputStream = new FilterInputStream(inputStream) {
@Override
public int available() throws IOException {
return 0;
}
};
setName(computeName());
final IOConsoleOutputStream outputStream = newOutputStream();
boolean remoteShellEnabled = false;
try {
final ILaunchConfiguration configuration = process.getLaunch().getLaunchConfiguration();
remoteShellEnabled =
configuration.getAttribute(
KarafLaunchConfigurationConstants.KARAF_LAUNCH_START_REMOTE_CONSOLE,
false);
} catch (final CoreException e) {
return;
}
if (remoteShellEnabled) {
shellConnection =
new KarafSshShellConnection(
connectionUrl,
credentials,
noAvailableInputStream,
outputStream,
outputStream);
final KarafRemoteShellConnectJob job = new KarafRemoteShellConnectJob(name, shellConnection);
job.addJobChangeListener(new JobChangeAdapter() {
@Override
public void done(final IJobChangeEvent event) {
if (!event.getResult().isOK()) {
final Throwable t = event.getResult().getException();
writeTo(outputStream, "Unable to connect to SSH server: " + (t != null ? t.getLocalizedMessage() : "Unknown error"));
}
}
});
DebugPlugin.getDefault().addDebugEventListener(new IDebugEventSetListener() {
@Override
public void handleDebugEvents(final DebugEvent[] events) {
for (final DebugEvent event : events) {
if ( process != null
&& process.equals(event.getSource())
&& event.getKind() == DebugEvent.TERMINATE)
{
job.cancel();
}
}
}
});
job.schedule(15 * 1000);
} else {
writeTo(outputStream, "The Karaf remote shell is disabled. Enable it in the launch configuration dialog.");
}
}