diff --git a/rse/plugins/org.eclipse.rse.services.ssh/src/org/eclipse/rse/internal/services/ssh/terminal/SshTerminalService.java b/rse/plugins/org.eclipse.rse.services.ssh/src/org/eclipse/rse/internal/services/ssh/terminal/SshTerminalService.java index 5b78226a24e..620896a0453 100644 --- a/rse/plugins/org.eclipse.rse.services.ssh/src/org/eclipse/rse/internal/services/ssh/terminal/SshTerminalService.java +++ b/rse/plugins/org.eclipse.rse.services.ssh/src/org/eclipse/rse/internal/services/ssh/terminal/SshTerminalService.java @@ -19,9 +19,9 @@ import org.eclipse.rse.internal.services.ssh.ISshService; import org.eclipse.rse.internal.services.ssh.ISshSessionProvider; import org.eclipse.rse.internal.services.ssh.SshServiceResources; import org.eclipse.rse.internal.services.ssh.shell.SshShellService; -import org.eclipse.rse.internal.services.terminals.AbstractTerminalService; -import org.eclipse.rse.internal.services.terminals.ITerminalShell; import org.eclipse.rse.services.clientserver.messages.SystemMessageException; +import org.eclipse.rse.services.terminals.AbstractTerminalService; +import org.eclipse.rse.services.terminals.ITerminalShell; /** * A Terminal Service for ssh. diff --git a/rse/plugins/org.eclipse.rse.services.ssh/src/org/eclipse/rse/internal/services/ssh/terminal/SshTerminalShell.java b/rse/plugins/org.eclipse.rse.services.ssh/src/org/eclipse/rse/internal/services/ssh/terminal/SshTerminalShell.java index b741c3dac47..2239456fe0b 100644 --- a/rse/plugins/org.eclipse.rse.services.ssh/src/org/eclipse/rse/internal/services/ssh/terminal/SshTerminalShell.java +++ b/rse/plugins/org.eclipse.rse.services.ssh/src/org/eclipse/rse/internal/services/ssh/terminal/SshTerminalShell.java @@ -27,11 +27,11 @@ import com.jcraft.jsch.ChannelShell; import com.jcraft.jsch.Session; import org.eclipse.rse.internal.services.ssh.ISshSessionProvider; -import org.eclipse.rse.internal.services.terminals.AbstractTerminalShell; -import org.eclipse.rse.internal.services.terminals.ITerminalService; import org.eclipse.rse.services.clientserver.PathUtility; import org.eclipse.rse.services.clientserver.messages.SystemMessageException; import org.eclipse.rse.services.files.RemoteFileException; +import org.eclipse.rse.services.terminals.AbstractTerminalShell; +import org.eclipse.rse.services.terminals.ITerminalService; /** * A remote shell connection supporting Streams for I/O. diff --git a/rse/plugins/org.eclipse.rse.services.telnet/src/org/eclipse/rse/internal/services/telnet/terminal/TelnetTerminalService.java b/rse/plugins/org.eclipse.rse.services.telnet/src/org/eclipse/rse/internal/services/telnet/terminal/TelnetTerminalService.java index cd80329b0d3..e686b480c74 100644 --- a/rse/plugins/org.eclipse.rse.services.telnet/src/org/eclipse/rse/internal/services/telnet/terminal/TelnetTerminalService.java +++ b/rse/plugins/org.eclipse.rse.services.telnet/src/org/eclipse/rse/internal/services/telnet/terminal/TelnetTerminalService.java @@ -20,10 +20,10 @@ import org.eclipse.rse.internal.services.shells.TerminalShellService; import org.eclipse.rse.internal.services.telnet.ITelnetService; import org.eclipse.rse.internal.services.telnet.ITelnetSessionProvider; import org.eclipse.rse.internal.services.telnet.TelnetServiceResources; -import org.eclipse.rse.internal.services.terminals.AbstractTerminalService; -import org.eclipse.rse.internal.services.terminals.ITerminalShell; import org.eclipse.rse.services.clientserver.messages.SystemMessageException; import org.eclipse.rse.services.shells.IShellService; +import org.eclipse.rse.services.terminals.AbstractTerminalService; +import org.eclipse.rse.services.terminals.ITerminalShell; /** * A Terminal Service for telnet. diff --git a/rse/plugins/org.eclipse.rse.services.telnet/src/org/eclipse/rse/internal/services/telnet/terminal/TelnetTerminalShell.java b/rse/plugins/org.eclipse.rse.services.telnet/src/org/eclipse/rse/internal/services/telnet/terminal/TelnetTerminalShell.java index 59d7a54f22c..e74508b9404 100644 --- a/rse/plugins/org.eclipse.rse.services.telnet/src/org/eclipse/rse/internal/services/telnet/terminal/TelnetTerminalShell.java +++ b/rse/plugins/org.eclipse.rse.services.telnet/src/org/eclipse/rse/internal/services/telnet/terminal/TelnetTerminalShell.java @@ -30,11 +30,11 @@ import org.apache.commons.net.telnet.TelnetOption; import org.apache.commons.net.telnet.TerminalTypeOptionHandler; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.rse.internal.services.telnet.ITelnetSessionProvider; -import org.eclipse.rse.internal.services.terminals.AbstractTerminalShell; -import org.eclipse.rse.internal.services.terminals.ITerminalService; import org.eclipse.rse.services.clientserver.PathUtility; import org.eclipse.rse.services.clientserver.messages.SystemMessageException; import org.eclipse.rse.services.files.RemoteFileException; +import org.eclipse.rse.services.terminals.AbstractTerminalShell; +import org.eclipse.rse.services.terminals.ITerminalService; /** * A remote shell connection supporting Streams for I/O. diff --git a/rse/plugins/org.eclipse.rse.services/.settings/.api_filters b/rse/plugins/org.eclipse.rse.services/.settings/.api_filters new file mode 100644 index 00000000000..d5ba5d98bcd --- /dev/null +++ b/rse/plugins/org.eclipse.rse.services/.settings/.api_filters @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/rse/plugins/org.eclipse.rse.services/META-INF/MANIFEST.MF b/rse/plugins/org.eclipse.rse.services/META-INF/MANIFEST.MF index 04d65c961bc..5ed470f15cf 100644 --- a/rse/plugins/org.eclipse.rse.services/META-INF/MANIFEST.MF +++ b/rse/plugins/org.eclipse.rse.services/META-INF/MANIFEST.MF @@ -25,5 +25,6 @@ Export-Package: org.eclipse.rse.internal.services;x-internal:=true, org.eclipse.rse.services.files, org.eclipse.rse.services.processes, org.eclipse.rse.services.search, - org.eclipse.rse.services.shells + org.eclipse.rse.services.shells, + org.eclipse.rse.services.terminals Bundle-RequiredExecutionEnvironment: J2SE-1.4 diff --git a/rse/plugins/org.eclipse.rse.services/plugin.xml b/rse/plugins/org.eclipse.rse.services/plugin.xml index 4d596ae3c38..c805200d640 100644 --- a/rse/plugins/org.eclipse.rse.services/plugin.xml +++ b/rse/plugins/org.eclipse.rse.services/plugin.xml @@ -16,7 +16,7 @@ Anna Dushistova (MontaVista)- initial API and implementation diff --git a/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/internal/services/shells/TerminalServiceHostShell.java b/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/internal/services/shells/TerminalServiceHostShell.java index 0ea2b75ae93..b99845bf8e6 100644 --- a/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/internal/services/shells/TerminalServiceHostShell.java +++ b/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/internal/services/shells/TerminalServiceHostShell.java @@ -32,10 +32,10 @@ import java.io.PrintWriter; import java.nio.charset.Charset; import java.util.regex.Pattern; -import org.eclipse.rse.internal.services.terminals.ITerminalShell; import org.eclipse.rse.services.clientserver.PathUtility; import org.eclipse.rse.services.shells.AbstractHostShell; import org.eclipse.rse.services.shells.IHostShellOutputReader; +import org.eclipse.rse.services.terminals.ITerminalShell; /** * @since 3.1 diff --git a/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/internal/services/shells/TerminalShellAdapterFactory.java b/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/internal/services/shells/TerminalShellAdapterFactory.java index 00b2a906f20..90e75e3c222 100644 --- a/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/internal/services/shells/TerminalShellAdapterFactory.java +++ b/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/internal/services/shells/TerminalShellAdapterFactory.java @@ -12,8 +12,8 @@ package org.eclipse.rse.internal.services.shells; import org.eclipse.core.runtime.IAdapterFactory; -import org.eclipse.rse.internal.services.terminals.ITerminalService; import org.eclipse.rse.services.shells.IShellService; +import org.eclipse.rse.services.terminals.ITerminalService; /** * @since 3.1 diff --git a/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/internal/services/shells/TerminalShellService.java b/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/internal/services/shells/TerminalShellService.java index 69912c67025..beb9743aae7 100644 --- a/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/internal/services/shells/TerminalShellService.java +++ b/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/internal/services/shells/TerminalShellService.java @@ -26,11 +26,11 @@ import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.PlatformObject; -import org.eclipse.rse.internal.services.terminals.ITerminalService; -import org.eclipse.rse.internal.services.terminals.ITerminalShell; import org.eclipse.rse.services.clientserver.messages.SystemMessageException; import org.eclipse.rse.services.shells.AbstractShellService; import org.eclipse.rse.services.shells.IHostShell; +import org.eclipse.rse.services.terminals.ITerminalService; +import org.eclipse.rse.services.terminals.ITerminalShell; /** * @since 3.1 diff --git a/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/internal/services/terminals/ProcessBaseShell.java b/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/internal/services/terminals/ProcessBaseShell.java index 7464167f981..0cadc775468 100644 --- a/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/internal/services/terminals/ProcessBaseShell.java +++ b/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/internal/services/terminals/ProcessBaseShell.java @@ -7,6 +7,7 @@ * * Contributors: * Martin Oberhuber (Wind River) - initial API and implementation + * Anna Dushistova (MontaVista) - [258631][api] ITerminalService should be public API *******************************************************************************/ package org.eclipse.rse.internal.services.terminals; @@ -16,18 +17,12 @@ import java.io.OutputStream; import org.eclipse.core.runtime.PlatformObject; +import org.eclipse.rse.services.terminals.IBaseShell; + /** * A wrapper for Java {@link Process} objects to give more convenient access to * them through the {@link IBaseShell} interface. * - *

- * EXPERIMENTAL. This class or interface has been added as - * part of a work in progress. There is no guarantee that this API will work or - * that it will remain the same. Please do not use this API without consulting - * with the Target Management - * team. - *

- * * @since org.eclipse.rse.services 3.0 */ public class ProcessBaseShell extends PlatformObject implements IBaseShell { diff --git a/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/internal/services/terminals/package.html b/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/internal/services/terminals/package.html index 4c2ff81736c..94e835504e1 100644 --- a/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/internal/services/terminals/package.html +++ b/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/internal/services/terminals/package.html @@ -8,14 +8,7 @@ Package-level Javadoc -PROVISIONAL Application programming interface for the RSE Base Shell and Terminal Services. -

-EXPERIMENTAL. This class or interface has been added as -part of a work in progress. There is no guarantee that this API will work or -that it will remain the same. Please do not use this API without consulting -with the Target Management -team. -

+Application programming interface for the RSE Base Shell and Terminal Services.

Package Specification

@@ -24,40 +17,10 @@ for shell or terminal connections. The classes in this package are especially de to be extendable by means of the Decorator pattern as well as the Adapter pattern:

    -
  • IBaseShell - is the basic interface for communicating with a (potentially remote) process - through a channel supporting Streams. The Interface is modeled after the - java.lang.Process - class, but provides some nice enhancements such as a timeout for the - waitFor() method, as well as an isActive() - method.
  • ProcessBaseShell is a sample class implementing IBaseShell, that wraps an existing java.lang.Process object in the IBaseShell interface for easier consumption.
  • -
  • ITerminalShell - extends IBaseShell, adding methods specific to the presentation of the data - transferred from the (remote) process: it provides for getDefaultEncoding(), - getPtyType(), isLocalEcho() as well as setTerminalSize() methods.
  • -
  • AbstractTerminalShell - is an abstract base class that implementers of ITerminalShell must extend. - It provides default implementations of all methods where possible, and - ensures that future evolving of the ITerminalShell interface - can be done without breaking binary compatibility with extenders implementing it.
  • -
  • BaseShellDecorator and - TerminalShellDecorator abstract base - classes should be used when clients want to add functionality by decorating - an existing IBaseShell or ITerminalShell object they have. Again, extending - these not only saves the extender typing default delegation methods, but also - ensures that they remain binary compatible in case the interfaces evolve.
  • -
  • ITerminalService - is the RSE Service Interface, and currently only - provides one factory method launchTerminal() for creating - a new Terminal Connection. - AbstractTerminalService must be used as base - class by extenders who wish to implement the ITerminalService, in order to ensure - binary compatibility in case the interface evolves - even though - the AbstractTerminalService is currently empty.
The classes and interfaces in this package are designed to have only minimal dependency into Eclipse core APIs, such that Services can eventually be re-used in diff --git a/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/internal/services/terminals/AbstractTerminalService.java b/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/services/terminals/AbstractTerminalService.java similarity index 73% rename from rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/internal/services/terminals/AbstractTerminalService.java rename to rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/services/terminals/AbstractTerminalService.java index 3bf580c66ea..81a5771646b 100644 --- a/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/internal/services/terminals/AbstractTerminalService.java +++ b/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/services/terminals/AbstractTerminalService.java @@ -7,9 +7,10 @@ * * Contributors: * Martin Oberhuber (Wind River) - initial API and implementation + * Anna Dushistova (MontaVista) - [258631][api] ITerminalService should be public API *******************************************************************************/ -package org.eclipse.rse.internal.services.terminals; +package org.eclipse.rse.services.terminals; import org.eclipse.rse.services.AbstractService; @@ -21,16 +22,8 @@ import org.eclipse.rse.services.AbstractService; * instance, be adding state of the terminal service or capabilities for getting * environment variables. * - *

- * EXPERIMENTAL. This class or interface has been added as - * part of a work in progress. There is no guarantee that this API will work or - * that it will remain the same. Please do not use this API without consulting - * with the Target Management - * team. - *

- * * @see ITerminalService - * @since org.eclipse.rse.services 3.0 + * @since org.eclipse.rse.services 3.1 */ public abstract class AbstractTerminalService extends AbstractService implements ITerminalService { diff --git a/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/internal/services/terminals/AbstractTerminalShell.java b/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/services/terminals/AbstractTerminalShell.java similarity index 87% rename from rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/internal/services/terminals/AbstractTerminalShell.java rename to rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/services/terminals/AbstractTerminalShell.java index a6b7d4c7393..8f5b0def562 100644 --- a/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/internal/services/terminals/AbstractTerminalShell.java +++ b/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/services/terminals/AbstractTerminalShell.java @@ -7,14 +7,16 @@ * * Contributors: * Martin Oberhuber (Wind River) - initial API and implementation + * Anna Dushistova (MontaVista) - [258631][api] ITerminalService should be public API *******************************************************************************/ -package org.eclipse.rse.internal.services.terminals; +package org.eclipse.rse.services.terminals; import java.io.InputStream; import org.eclipse.core.runtime.PlatformObject; + /** * Abstract base class for clients to create an ITerminalShell instance. * @@ -23,15 +25,7 @@ import org.eclipse.core.runtime.PlatformObject; * base class rather than implementing ITerminalShell directly, in order to * remain compatible when the ITerminalShell interface is evolved in the future. * - *

- * EXPERIMENTAL. This class or interface has been added as - * part of a work in progress. There is no guarantee that this API will work or - * that it will remain the same. Please do not use this API without consulting - * with the Target Management - * team. - *

- * - * @since org.eclipse.rse.services 3.0 + * @since org.eclipse.rse.services 3.1 */ public abstract class AbstractTerminalShell extends PlatformObject implements ITerminalShell { diff --git a/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/internal/services/terminals/BaseShellDecorator.java b/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/services/terminals/BaseShellDecorator.java similarity index 83% rename from rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/internal/services/terminals/BaseShellDecorator.java rename to rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/services/terminals/BaseShellDecorator.java index 3d898d20212..20b76f0192d 100644 --- a/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/internal/services/terminals/BaseShellDecorator.java +++ b/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/services/terminals/BaseShellDecorator.java @@ -7,15 +7,17 @@ * * Contributors: * Martin Oberhuber (Wind River) - initial API and implementation + * Anna Dushistova (MontaVista) - [258631][api] ITerminalService should be public API *******************************************************************************/ -package org.eclipse.rse.internal.services.terminals; +package org.eclipse.rse.services.terminals; import java.io.InputStream; import java.io.OutputStream; import org.eclipse.core.runtime.PlatformObject; + /** * Abstract base class for clients to decorate an IBaseShell instance they have * with additional functionality. @@ -25,15 +27,7 @@ import org.eclipse.core.runtime.PlatformObject; * and output streams for some well-known data that gives such additional * knowledge. * - *

- * EXPERIMENTAL. This class or interface has been added as - * part of a work in progress. There is no guarantee that this API will work or - * that it will remain the same. Please do not use this API without consulting - * with the Target Management - * team. - *

- * - * @since org.eclipse.rse.services 3.0 + * @since org.eclipse.rse.services 3.1 */ public abstract class BaseShellDecorator extends PlatformObject implements IBaseShell { diff --git a/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/internal/services/terminals/IBaseShell.java b/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/services/terminals/IBaseShell.java similarity index 93% rename from rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/internal/services/terminals/IBaseShell.java rename to rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/services/terminals/IBaseShell.java index de65abb1bee..b6f25c64288 100644 --- a/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/internal/services/terminals/IBaseShell.java +++ b/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/services/terminals/IBaseShell.java @@ -7,9 +7,10 @@ * * Contributors: * Martin Oberhuber (Wind River) - initial API and implementation + * Anna Dushistova (MontaVista) - [258631][api] ITerminalService should be public API *******************************************************************************/ -package org.eclipse.rse.internal.services.terminals; +package org.eclipse.rse.services.terminals; import java.io.InputStream; import java.io.OutputStream; @@ -17,6 +18,8 @@ import java.io.OutputStream; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.PlatformObject; +import org.eclipse.rse.internal.services.terminals.ProcessBaseShell; + /** * A basic shell, representing the connection to some process that may be * running local or remote. Clients may implement this interface. @@ -34,18 +37,10 @@ import org.eclipse.core.runtime.PlatformObject; * functionality easily by instantiating their subclassed variant of * {@link BaseShellDecorator}. * - *

- * EXPERIMENTAL. This class or interface has been added as - * part of a work in progress. There is no guarantee that this API will work or - * that it will remain the same. Please do not use this API without consulting - * with the Target Management - * team. - *

- * * @see java.lang.Process - * @see ProcessBaseShell + * @see org.eclipse.rse.internal.services.terminals.ProcessBaseShell * @see BaseShellDecorator - * @since org.eclipse.rse.services 3.0 + * @since org.eclipse.rse.services 3.1 */ public interface IBaseShell extends IAdaptable { diff --git a/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/internal/services/terminals/ITerminalService.java b/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/services/terminals/ITerminalService.java similarity index 90% rename from rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/internal/services/terminals/ITerminalService.java rename to rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/services/terminals/ITerminalService.java index 345f36d6902..49280b705c1 100644 --- a/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/internal/services/terminals/ITerminalService.java +++ b/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/services/terminals/ITerminalService.java @@ -7,9 +7,10 @@ * * Contributors: * Martin Oberhuber (Wind River) - initial API and implementation + * Anna Dushistova (MontaVista) - [258631][api] ITerminalService should be public API *******************************************************************************/ -package org.eclipse.rse.internal.services.terminals; +package org.eclipse.rse.services.terminals; import org.eclipse.core.runtime.IProgressMonitor; @@ -35,15 +36,7 @@ import org.eclipse.rse.services.clientserver.messages.SystemMessageException; * Clients must subclass the {@link AbstractTerminalService} class * rather than implementing this interface directly. * - *

- * EXPERIMENTAL. This class or interface has been added as - * part of a work in progress. There is no guarantee that this API will work or - * that it will remain the same. Please do not use this API without consulting - * with the Target Management - * team. - *

- * - * @since org.eclipse.rse.services 3.0 + * @since org.eclipse.rse.services 3.1 * */ public interface ITerminalService extends IService { diff --git a/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/internal/services/terminals/ITerminalShell.java b/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/services/terminals/ITerminalShell.java similarity index 89% rename from rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/internal/services/terminals/ITerminalShell.java rename to rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/services/terminals/ITerminalShell.java index 25eb8ae8ecf..feebe7c960c 100644 --- a/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/internal/services/terminals/ITerminalShell.java +++ b/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/services/terminals/ITerminalShell.java @@ -7,9 +7,10 @@ * * Contributors: * Martin Oberhuber (Wind River) - initial API and implementation + * Anna Dushistova (MontaVista) - [258631][api] ITerminalService should be public API *******************************************************************************/ -package org.eclipse.rse.internal.services.terminals; +package org.eclipse.rse.services.terminals; import org.eclipse.rse.services.shells.IHostShell; @@ -35,19 +36,11 @@ import org.eclipse.rse.services.shells.IHostShell; * or {@link TerminalShellDecorator} classes rather than * implementing this interface directly. * - *

- * EXPERIMENTAL. This class or interface has been added as - * part of a work in progress. There is no guarantee that this API will work or - * that it will remain the same. Please do not use this API without consulting - * with the Target Management - * team. - *

- * * @see IBaseShell * @see ITerminalService * @see AbstractTerminalShell * @see TerminalShellDecorator - * @since org.eclipse.rse.services 3.0 + * @since org.eclipse.rse.services 3.1 */ public interface ITerminalShell extends IBaseShell { diff --git a/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/internal/services/terminals/TerminalShellDecorator.java b/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/services/terminals/TerminalShellDecorator.java similarity index 78% rename from rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/internal/services/terminals/TerminalShellDecorator.java rename to rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/services/terminals/TerminalShellDecorator.java index 492ce473fdf..b58e069110c 100644 --- a/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/internal/services/terminals/TerminalShellDecorator.java +++ b/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/services/terminals/TerminalShellDecorator.java @@ -7,9 +7,11 @@ * * Contributors: * Martin Oberhuber (Wind River) - initial API and implementation + * Anna Dushistova (MontaVista) - [258631][api] ITerminalService should be public API *******************************************************************************/ -package org.eclipse.rse.internal.services.terminals; +package org.eclipse.rse.services.terminals; + /** * Abstract base class for clients to decorate an ITerminalShell instance they @@ -20,15 +22,7 @@ package org.eclipse.rse.internal.services.terminals; * and output streams for some well-known data that gives such additional * knowledge. * - *

- * EXPERIMENTAL. This class or interface has been added as - * part of a work in progress. There is no guarantee that this API will work or - * that it will remain the same. Please do not use this API without consulting - * with the Target Management - * team. - *

- * - * @since org.eclipse.rse.services 3.0 + * @since org.eclipse.rse.services 3.1 */ public abstract class TerminalShellDecorator extends BaseShellDecorator implements ITerminalShell { diff --git a/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/services/terminals/package.html b/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/services/terminals/package.html new file mode 100644 index 00000000000..864cf3ca2e8 --- /dev/null +++ b/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/services/terminals/package.html @@ -0,0 +1,61 @@ + + + + + + + + Package-level Javadoc + + +Application programming interface for the RSE Base Shell and Terminal Services. +

+Package Specification

+

+The RSE Terminal Services packages provides interfaces and basic utility classes +for shell or terminal connections. The classes in this package are especially designed +to be extendable by means of the Decorator pattern as well as the Adapter +pattern: +

    +
  • IBaseShell + is the basic interface for communicating with a (potentially remote) process + through a channel supporting Streams. The Interface is modeled after the + java.lang.Process + class, but provides some nice enhancements such as a timeout for the + waitFor() method, as well as an isActive() + method.
  • +
  • ITerminalShell + extends IBaseShell, adding methods specific to the presentation of the data + transferred from the (remote) process: it provides for getDefaultEncoding(), + getPtyType(), isLocalEcho() as well as setTerminalSize() methods.
  • +
  • AbstractTerminalShell + is an abstract base class that implementers of ITerminalShell must extend. + It provides default implementations of all methods where possible, and + ensures that future evolving of the ITerminalShell interface + can be done without breaking binary compatibility with extenders implementing it.
  • +
  • BaseShellDecorator and + TerminalShellDecorator abstract base + classes should be used when clients want to add functionality by decorating + an existing IBaseShell or ITerminalShell object they have. Again, extending + these not only saves the extender typing default delegation methods, but also + ensures that they remain binary compatible in case the interfaces evolve.
  • +
  • ITerminalService + is the RSE Service Interface, and currently only + provides one factory method launchTerminal() for creating + a new Terminal Connection. + AbstractTerminalService must be used as base + class by extenders who wish to implement the ITerminalService, in order to ensure + binary compatibility in case the interface evolves - even though + the AbstractTerminalService is currently empty.
  • +
+The classes and interfaces in this package are designed to have only minimal +dependency into Eclipse core APIs, such that Services can eventually be re-used in +environments outside Eclipse. Especially +IBaseShell, along with +ProcessBaseShell and +BaseShellDecorator are usable in +any environment, provided that mock objects are provided for Eclipse +IAdaptable and PlatformObject. +

+ + diff --git a/rse/plugins/org.eclipse.rse.subsystems.terminals.core/src/org/eclipse/rse/internal/subsystems/terminals/core/DelegatingTerminalService.java b/rse/plugins/org.eclipse.rse.subsystems.terminals.core/src/org/eclipse/rse/internal/subsystems/terminals/core/DelegatingTerminalService.java index 444043f4105..a9e7ddb292a 100644 --- a/rse/plugins/org.eclipse.rse.subsystems.terminals.core/src/org/eclipse/rse/internal/subsystems/terminals/core/DelegatingTerminalService.java +++ b/rse/plugins/org.eclipse.rse.subsystems.terminals.core/src/org/eclipse/rse/internal/subsystems/terminals/core/DelegatingTerminalService.java @@ -16,10 +16,10 @@ package org.eclipse.rse.internal.subsystems.terminals.core; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.rse.core.model.IHost; import org.eclipse.rse.core.subsystems.ISubSystem; -import org.eclipse.rse.internal.services.terminals.ITerminalService; -import org.eclipse.rse.internal.services.terminals.ITerminalShell; import org.eclipse.rse.services.IService; import org.eclipse.rse.services.clientserver.messages.SystemMessageException; +import org.eclipse.rse.services.terminals.ITerminalService; +import org.eclipse.rse.services.terminals.ITerminalShell; public class DelegatingTerminalService implements ITerminalService { diff --git a/rse/plugins/org.eclipse.rse.subsystems.terminals.core/src/org/eclipse/rse/internal/subsystems/terminals/core/TerminalSubSystemConfigurationImpl.java b/rse/plugins/org.eclipse.rse.subsystems.terminals.core/src/org/eclipse/rse/internal/subsystems/terminals/core/TerminalSubSystemConfigurationImpl.java index ae7563eba17..f0c4792ef41 100644 --- a/rse/plugins/org.eclipse.rse.subsystems.terminals.core/src/org/eclipse/rse/internal/subsystems/terminals/core/TerminalSubSystemConfigurationImpl.java +++ b/rse/plugins/org.eclipse.rse.subsystems.terminals.core/src/org/eclipse/rse/internal/subsystems/terminals/core/TerminalSubSystemConfigurationImpl.java @@ -15,7 +15,7 @@ package org.eclipse.rse.internal.subsystems.terminals.core; import org.eclipse.rse.core.model.IHost; import org.eclipse.rse.core.subsystems.IConnectorService; import org.eclipse.rse.core.subsystems.ISubSystem; -import org.eclipse.rse.internal.services.terminals.ITerminalService; +import org.eclipse.rse.services.terminals.ITerminalService; import org.eclipse.rse.subsystems.terminals.core.TerminalServiceSubSystem; import org.eclipse.rse.subsystems.terminals.core.TerminalServiceSubSystemConfiguration; diff --git a/rse/plugins/org.eclipse.rse.subsystems.terminals.core/src/org/eclipse/rse/internal/subsystems/terminals/core/TerminalSubSystemHelper.java b/rse/plugins/org.eclipse.rse.subsystems.terminals.core/src/org/eclipse/rse/internal/subsystems/terminals/core/TerminalSubSystemHelper.java index f6f35d1b35f..a5d3f820caf 100644 --- a/rse/plugins/org.eclipse.rse.subsystems.terminals.core/src/org/eclipse/rse/internal/subsystems/terminals/core/TerminalSubSystemHelper.java +++ b/rse/plugins/org.eclipse.rse.subsystems.terminals.core/src/org/eclipse/rse/internal/subsystems/terminals/core/TerminalSubSystemHelper.java @@ -15,8 +15,8 @@ package org.eclipse.rse.internal.subsystems.terminals.core; import org.eclipse.rse.core.model.IHost; import org.eclipse.rse.core.subsystems.ISubSystem; -import org.eclipse.rse.internal.services.terminals.ITerminalService; import org.eclipse.rse.services.IService; +import org.eclipse.rse.services.terminals.ITerminalService; import org.eclipse.rse.subsystems.terminals.core.ITerminalServiceSubSystem; /** diff --git a/rse/plugins/org.eclipse.rse.subsystems.terminals.core/src/org/eclipse/rse/subsystems/terminals/core/ITerminalServiceSubSystemConfiguration.java b/rse/plugins/org.eclipse.rse.subsystems.terminals.core/src/org/eclipse/rse/subsystems/terminals/core/ITerminalServiceSubSystemConfiguration.java index 60434e45b04..5a1b91cf26a 100644 --- a/rse/plugins/org.eclipse.rse.subsystems.terminals.core/src/org/eclipse/rse/subsystems/terminals/core/ITerminalServiceSubSystemConfiguration.java +++ b/rse/plugins/org.eclipse.rse.subsystems.terminals.core/src/org/eclipse/rse/subsystems/terminals/core/ITerminalServiceSubSystemConfiguration.java @@ -12,7 +12,7 @@ package org.eclipse.rse.subsystems.terminals.core; import org.eclipse.rse.core.model.IHost; import org.eclipse.rse.core.subsystems.ISubSystemConfiguration; -import org.eclipse.rse.internal.services.terminals.ITerminalService; +import org.eclipse.rse.services.terminals.ITerminalService; public interface ITerminalServiceSubSystemConfiguration extends ISubSystemConfiguration { diff --git a/rse/plugins/org.eclipse.rse.subsystems.terminals.core/src/org/eclipse/rse/subsystems/terminals/core/TerminalServiceSubSystem.java b/rse/plugins/org.eclipse.rse.subsystems.terminals.core/src/org/eclipse/rse/subsystems/terminals/core/TerminalServiceSubSystem.java index 631b81c7093..9602a6d9d8a 100644 --- a/rse/plugins/org.eclipse.rse.subsystems.terminals.core/src/org/eclipse/rse/subsystems/terminals/core/TerminalServiceSubSystem.java +++ b/rse/plugins/org.eclipse.rse.subsystems.terminals.core/src/org/eclipse/rse/subsystems/terminals/core/TerminalServiceSubSystem.java @@ -30,7 +30,7 @@ import org.eclipse.rse.core.subsystems.ICommunicationsListener; import org.eclipse.rse.core.subsystems.IConnectorService; import org.eclipse.rse.core.subsystems.ISubSystemConfiguration; import org.eclipse.rse.core.subsystems.SubSystem; -import org.eclipse.rse.internal.services.terminals.ITerminalService; +import org.eclipse.rse.services.terminals.ITerminalService; import org.eclipse.rse.subsystems.terminals.core.elements.TerminalElement; import org.eclipse.swt.widgets.Display; diff --git a/rse/plugins/org.eclipse.rse.subsystems.terminals.core/src/org/eclipse/rse/subsystems/terminals/core/TerminalServiceSubSystemConfiguration.java b/rse/plugins/org.eclipse.rse.subsystems.terminals.core/src/org/eclipse/rse/subsystems/terminals/core/TerminalServiceSubSystemConfiguration.java index 95b920a0837..9b67f47c98a 100644 --- a/rse/plugins/org.eclipse.rse.subsystems.terminals.core/src/org/eclipse/rse/subsystems/terminals/core/TerminalServiceSubSystemConfiguration.java +++ b/rse/plugins/org.eclipse.rse.subsystems.terminals.core/src/org/eclipse/rse/subsystems/terminals/core/TerminalServiceSubSystemConfiguration.java @@ -16,8 +16,8 @@ import java.util.Map; import org.eclipse.rse.core.model.IHost; import org.eclipse.rse.core.subsystems.SubSystemConfiguration; -import org.eclipse.rse.internal.services.terminals.ITerminalService; import org.eclipse.rse.services.IService; +import org.eclipse.rse.services.terminals.ITerminalService; public abstract class TerminalServiceSubSystemConfiguration extends SubSystemConfiguration implements diff --git a/rse/plugins/org.eclipse.rse.subsystems.terminals.core/src/org/eclipse/rse/subsystems/terminals/core/elements/TerminalElement.java b/rse/plugins/org.eclipse.rse.subsystems.terminals.core/src/org/eclipse/rse/subsystems/terminals/core/elements/TerminalElement.java index be3d4184eff..5f976065701 100644 --- a/rse/plugins/org.eclipse.rse.subsystems.terminals.core/src/org/eclipse/rse/subsystems/terminals/core/elements/TerminalElement.java +++ b/rse/plugins/org.eclipse.rse.subsystems.terminals.core/src/org/eclipse/rse/subsystems/terminals/core/elements/TerminalElement.java @@ -14,7 +14,7 @@ package org.eclipse.rse.subsystems.terminals.core.elements; import org.eclipse.rse.core.subsystems.AbstractResource; -import org.eclipse.rse.internal.services.terminals.ITerminalShell; +import org.eclipse.rse.services.terminals.ITerminalShell; import org.eclipse.rse.subsystems.terminals.core.ITerminalServiceSubSystem; /** diff --git a/rse/plugins/org.eclipse.rse.subsystems.terminals.ssh/src/org/eclipse/rse/subsystems/terminals/ssh/SshTerminalSubSystemConfiguration.java b/rse/plugins/org.eclipse.rse.subsystems.terminals.ssh/src/org/eclipse/rse/subsystems/terminals/ssh/SshTerminalSubSystemConfiguration.java index ae06b63067a..c4537b766a2 100644 --- a/rse/plugins/org.eclipse.rse.subsystems.terminals.ssh/src/org/eclipse/rse/subsystems/terminals/ssh/SshTerminalSubSystemConfiguration.java +++ b/rse/plugins/org.eclipse.rse.subsystems.terminals.ssh/src/org/eclipse/rse/subsystems/terminals/ssh/SshTerminalSubSystemConfiguration.java @@ -18,7 +18,7 @@ import org.eclipse.rse.internal.connectorservice.ssh.SshConnectorService; import org.eclipse.rse.internal.connectorservice.ssh.SshConnectorServiceManager; import org.eclipse.rse.internal.services.ssh.ISshService; import org.eclipse.rse.internal.services.ssh.terminal.SshTerminalService; -import org.eclipse.rse.internal.services.terminals.ITerminalService; +import org.eclipse.rse.services.terminals.ITerminalService; import org.eclipse.rse.subsystems.terminals.core.TerminalServiceSubSystem; import org.eclipse.rse.subsystems.terminals.core.TerminalServiceSubSystemConfiguration; diff --git a/rse/plugins/org.eclipse.rse.terminals.ui/src/org/eclipse/rse/internal/terminals/ui/TerminalServiceHelper.java b/rse/plugins/org.eclipse.rse.terminals.ui/src/org/eclipse/rse/internal/terminals/ui/TerminalServiceHelper.java index a1201c2eee4..82c8a2eddad 100644 --- a/rse/plugins/org.eclipse.rse.terminals.ui/src/org/eclipse/rse/internal/terminals/ui/TerminalServiceHelper.java +++ b/rse/plugins/org.eclipse.rse.terminals.ui/src/org/eclipse/rse/internal/terminals/ui/TerminalServiceHelper.java @@ -20,9 +20,9 @@ import org.eclipse.rse.core.RSECorePlugin; import org.eclipse.rse.core.model.IHost; import org.eclipse.rse.core.model.ISystemRegistry; import org.eclipse.rse.core.subsystems.ISubSystem; -import org.eclipse.rse.internal.services.terminals.ITerminalShell; import org.eclipse.rse.internal.terminals.ui.views.RSETerminalConnector; import org.eclipse.rse.internal.terminals.ui.views.TerminalViewTab; +import org.eclipse.rse.services.terminals.ITerminalShell; import org.eclipse.rse.subsystems.terminals.core.ITerminalServiceSubSystem; import org.eclipse.rse.subsystems.terminals.core.elements.TerminalElement; import org.eclipse.swt.custom.CTabItem; diff --git a/rse/plugins/org.eclipse.rse.terminals.ui/src/org/eclipse/rse/internal/terminals/ui/views/RSETerminalConnectionThread.java b/rse/plugins/org.eclipse.rse.terminals.ui/src/org/eclipse/rse/internal/terminals/ui/views/RSETerminalConnectionThread.java index 2ed40243eb2..36950a44a59 100644 --- a/rse/plugins/org.eclipse.rse.terminals.ui/src/org/eclipse/rse/internal/terminals/ui/views/RSETerminalConnectionThread.java +++ b/rse/plugins/org.eclipse.rse.terminals.ui/src/org/eclipse/rse/internal/terminals/ui/views/RSETerminalConnectionThread.java @@ -17,10 +17,10 @@ import java.io.InterruptedIOException; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.rse.core.RSECorePlugin; -import org.eclipse.rse.internal.services.terminals.ITerminalShell; -import org.eclipse.rse.internal.services.terminals.ITerminalService; import org.eclipse.rse.internal.terminals.ui.TerminalServiceHelper; import org.eclipse.rse.services.clientserver.messages.SystemMessageException; +import org.eclipse.rse.services.terminals.ITerminalService; +import org.eclipse.rse.services.terminals.ITerminalShell; import org.eclipse.rse.subsystems.terminals.core.ITerminalServiceSubSystem; import org.eclipse.rse.subsystems.terminals.core.TerminalServiceSubSystem; import org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl; diff --git a/rse/plugins/org.eclipse.rse.terminals.ui/src/org/eclipse/rse/internal/terminals/ui/views/RSETerminalConnectorImpl.java b/rse/plugins/org.eclipse.rse.terminals.ui/src/org/eclipse/rse/internal/terminals/ui/views/RSETerminalConnectorImpl.java index 2f4c32a79c8..389d58b861c 100644 --- a/rse/plugins/org.eclipse.rse.terminals.ui/src/org/eclipse/rse/internal/terminals/ui/views/RSETerminalConnectorImpl.java +++ b/rse/plugins/org.eclipse.rse.terminals.ui/src/org/eclipse/rse/internal/terminals/ui/views/RSETerminalConnectorImpl.java @@ -16,7 +16,7 @@ import java.io.OutputStream; import org.eclipse.rse.core.RSECorePlugin; import org.eclipse.rse.core.model.IHost; -import org.eclipse.rse.internal.services.terminals.ITerminalShell; +import org.eclipse.rse.services.terminals.ITerminalShell; import org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl; import org.eclipse.tm.internal.terminal.provisional.api.provider.TerminalConnectorImpl; diff --git a/rse/plugins/org.eclipse.rse.terminals.ui/src/org/eclipse/rse/internal/terminals/ui/views/TerminalViewElementAdapter.java b/rse/plugins/org.eclipse.rse.terminals.ui/src/org/eclipse/rse/internal/terminals/ui/views/TerminalViewElementAdapter.java index ac832441a0c..cde0765658e 100644 --- a/rse/plugins/org.eclipse.rse.terminals.ui/src/org/eclipse/rse/internal/terminals/ui/views/TerminalViewElementAdapter.java +++ b/rse/plugins/org.eclipse.rse.terminals.ui/src/org/eclipse/rse/internal/terminals/ui/views/TerminalViewElementAdapter.java @@ -38,10 +38,10 @@ import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.rse.internal.services.terminals.ITerminalShell; import org.eclipse.rse.internal.terminals.ui.Activator; import org.eclipse.rse.internal.terminals.ui.actions.RemoveTerminalAction; import org.eclipse.rse.internal.terminals.ui.actions.ShowInTerminalViewAction; +import org.eclipse.rse.services.terminals.ITerminalShell; import org.eclipse.rse.subsystems.terminals.core.ITerminalServiceSubSystemConfiguration; import org.eclipse.rse.subsystems.terminals.core.elements.TerminalElement; import org.eclipse.rse.ui.ISystemContextMenuConstants; diff --git a/rse/tests/org.eclipse.rse.tests/src/org/eclipse/rse/tests/subsystems/shells/TerminalShellServiceTest.java b/rse/tests/org.eclipse.rse.tests/src/org/eclipse/rse/tests/subsystems/shells/TerminalShellServiceTest.java index 5a71ebe5eae..1dc1a645a21 100644 --- a/rse/tests/org.eclipse.rse.tests/src/org/eclipse/rse/tests/subsystems/shells/TerminalShellServiceTest.java +++ b/rse/tests/org.eclipse.rse.tests/src/org/eclipse/rse/tests/subsystems/shells/TerminalShellServiceTest.java @@ -19,9 +19,9 @@ import junit.framework.TestSuite; import org.eclipse.rse.core.RSECorePlugin; import org.eclipse.rse.core.model.IHost; import org.eclipse.rse.core.subsystems.ISubSystem; -import org.eclipse.rse.internal.services.terminals.ITerminalService; import org.eclipse.rse.services.clientserver.messages.SystemMessageException; import org.eclipse.rse.services.shells.IShellService; +import org.eclipse.rse.services.terminals.ITerminalService; import org.eclipse.rse.subsystems.terminals.core.TerminalServiceSubSystem; public class TerminalShellServiceTest extends ShellServiceTest{