diff --git a/bundles/org.eclipse.launchbar.core/META-INF/MANIFEST.MF b/bundles/org.eclipse.launchbar.core/META-INF/MANIFEST.MF index bcf31ac3f87..f7a9bb41e62 100644 --- a/bundles/org.eclipse.launchbar.core/META-INF/MANIFEST.MF +++ b/bundles/org.eclipse.launchbar.core/META-INF/MANIFEST.MF @@ -6,7 +6,9 @@ Bundle-Version: 1.0.0.qualifier Bundle-Activator: org.eclipse.launchbar.core.internal.Activator Bundle-Vendor: Eclipse CDT Require-Bundle: org.eclipse.core.runtime, - org.eclipse.debug.core + org.eclipse.debug.core, + org.eclipse.remote.core;bundle-version="[1.1.0,2.0.0)";visibility:=reexport, + org.eclipse.core.filesystem Bundle-RequiredExecutionEnvironment: JavaSE-1.7 Bundle-ActivationPolicy: lazy Export-Package: org.eclipse.launchbar.core, diff --git a/bundles/org.eclipse.launchbar.core/src/org/eclipse/remote/core/api2/IRemoteConnection.java b/bundles/org.eclipse.launchbar.core/src/org/eclipse/remote/core/api2/IRemoteConnection.java new file mode 100644 index 00000000000..6b5983863c0 --- /dev/null +++ b/bundles/org.eclipse.launchbar.core/src/org/eclipse/remote/core/api2/IRemoteConnection.java @@ -0,0 +1,337 @@ +/******************************************************************************* + * Copyright (c) 2007 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM Corporation - Initial API and implementation + *******************************************************************************/ +package org.eclipse.remote.core.api2; + +import java.io.IOException; +import java.util.List; +import java.util.Map; + +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.remote.core.IRemoteProcess; +import org.eclipse.remote.core.IRemoteProcessBuilder; +import org.eclipse.remote.core.exception.RemoteConnectionException; + +/** + * Abstraction of a connection to a remote system. Clients should use the set methods to provide information on the remote system, + * then call the {{@link #open(IProgressMonitor)} method. Once the connection is completed, call the {@link #close()} method to + * terminate the connection. + */ +public interface IRemoteConnection extends Comparable { + public final static String OS_NAME_PROPERTY = "os.name"; //$NON-NLS-1$ + public final static String OS_VERSION_PROPERTY = "os.version"; //$NON-NLS-1$ + public final static String OS_ARCH_PROPERTY = "os.arch"; //$NON-NLS-1$ + /** + * @since 6.0 + */ + public final static String FILE_SEPARATOR_PROPERTY = "file.separator"; //$NON-NLS-1$ + /** + * @since 6.0 + */ + public final static String PATH_SEPARATOR_PROPERTY = "path.separator"; //$NON-NLS-1$ + /** + * @since 6.0 + */ + public final static String LINE_SEPARATOR_PROPERTY = "line.separator"; //$NON-NLS-1$ + /** + * @since 4.0 + */ + public final static String USER_HOME_PROPERTY = "user.home"; //$NON-NLS-1$ + + /** + * Return the specified service. + * + * @param service interface + * @return service + */ + public T getService(Class service); + + /** + * Register a listener that will be notified when this connection's status changes. + * + * @param listener + */ + public void addConnectionChangeListener(IRemoteConnectionChangeListener listener); + + /** + * Close the connection. Must be called to terminate the connection. + */ + public void close(); + + /** + * Notify all listeners when this connection's status changes. See {{@link IRemoteConnectionChangeEvent} for a list of event + * types. + * + * @param event + * event type indicating the nature of the event + */ + public void fireConnectionChangeEvent(int type); + + /** + * Forward local port localPort to remote port fwdPort on remote machine fwdAddress. If this IRemoteConnection is not to + * fwdAddress, the port will be routed via the connection machine to fwdAddress. + * + * @param localPort + * local port to forward + * @param fwdAddress + * address of remote machine + * @param fwdPort + * remote port on remote machine + * @throws RemoteConnectionException + */ + public void forwardLocalPort(int localPort, String fwdAddress, int fwdPort) throws RemoteConnectionException; + + /** + * Forward a local port to remote port fwdPort on remote machine fwdAddress. The local port is chosen dynamically and returned + * by the method. If this IRemoteConnection is not to fwdAddress, the port will be routed via the connection machine to + * fwdAddress. + * + * @param fwdAddress + * @param fwdPort + * @param monitor + * @return local port number + * @throws RemoteConnectionException + */ + public int forwardLocalPort(String fwdAddress, int fwdPort, IProgressMonitor monitor) throws RemoteConnectionException; + + /** + * Forward remote port remotePort to port fwdPort on machine fwdAddress. When a connection is made to remotePort on the remote + * machine, it is forwarded via this IRemoteConnection to fwdPort on machine fwdAddress. + * + * @param remotePort + * remote port to forward + * @param fwdAddress + * address of recipient machine + * @param fwdPort + * port on recipient machine + * @throws RemoteConnectionException + */ + public void forwardRemotePort(int remotePort, String fwdAddress, int fwdPort) throws RemoteConnectionException; + + /** + * Forward a remote port to port fwdPort on remote machine fwdAddress. The remote port is chosen dynamically and returned by the + * method. When a connection is made to this port on the remote machine, it is forwarded via this IRemoteConnection to fwdPort + * on machine fwdAddress. + * + * If fwdAddress is the empty string ("") then the fwdPort will be bound to any address on all interfaces. Note that this + * requires enabling the GatewayPort sshd option on some systems. + * + * @param fwdAddress + * @param fwdPort + * @param monitor + * @return remote port number + * @throws RemoteConnectionException + */ + public int forwardRemotePort(String fwdAddress, int fwdPort, IProgressMonitor monitor) throws RemoteConnectionException; + + /** + * Gets the implementation dependent address for this connection + * + * return address + */ + public String getAddress(); + + /** + * Get the implementation specific attributes for the connection. + * + * NOTE: the attributes do not include any security related information (e.g. passwords, keys, etc.) + * + * @return a map containing the connection attribute keys and values + */ + public Map getAttributes(); + + /** + * Get a remote process that runs a command shell on the remote system. The shell will be the user's default shell on the remote + * system. The flags may be used to modify behavior of the remote process. These flags may only be supported by specific types + * of remote service providers. Clients can use {@link IRemoteProcessBuilder#getSupportedFlags()} to find out the flags + * supported by the service provider. + * + *
+	 * Current flags are:
+	 *   {@link IRemoteProcessBuilder#NONE}			- disable any flags
+	 *   {@link IRemoteProcessBuilder#ALLOCATE_PTY}	- allocate a pseudo-terminal for the process (RFC-4254 Sec. 6.2)
+	 *   {@link IRemoteProcessBuilder#FORWARD_X11}	- enable X11 forwarding (RFC-4254 Sec. 6.3)
+	 * 
+ * + * @param flags + * bitwise-or of flags + * @return remote process object + * @throws IOException + * @since 7.0 + */ + public IRemoteProcess getCommandShell(int flags) throws IOException; + + /** + * Returns an unmodifiable string map view of the remote environment. The connection must be open prior to calling this method. + * + * @return the remote environment + * @since 5.0 + */ + public Map getEnv(); + + /** + * Returns the value of an environment variable. The connection must be open prior to calling this method. + * + * @param name + * name of the environment variable + * @return value of the environment variable or null if the variable is not defined + */ + public String getEnv(String name); + + /** + * Get a file manager for managing remote files + * + * @return file manager or null if connection is not open + */ + public IRemoteFileManager getFileManager(); + + /** + * Get unique name for this connection. + * + * @return connection name + */ + public String getName(); + + /** + * Gets the port for this connection. Only valid if supported by the service provider. + * + * return port number + * + * @since 5.0 + */ + public int getPort(); + + /** + * Get a process builder for creating remote processes + * + * @return process builder or null if connection is not open + */ + public IRemoteProcessBuilder getProcessBuilder(List command); + + /** + * Get a process builder for creating remote processes + * + * @return process builder or null if connection is not open + */ + public IRemoteProcessBuilder getProcessBuilder(String... command); + + /** + * Gets the remote system property indicated by the specified key. The connection must be open prior to calling this method. + * + * The following keys are supported: + * + *
+	 * os.name			Operating system name 
+	 * os.arch			Operating system architecture
+	 * os.version		Operating system version
+	 * file.separator	File separator ("/" on UNIX)
+	 * path.separator	Path separator (":" on UNIX)
+	 * line.separator	Line separator ("\n" on UNIX)
+	 * user.home		Home directory
+	 * 
+ * + * @param key + * the name of the property + * @return the string value of the property, or null if no property has that key + */ + public String getProperty(String key); + + /** + * Get the remote services provider for this connection. + * + * @return remote services provider + * @since 4.0 + */ + public IRemoteServices getRemoteServices(); + + /** + * Gets the username for this connection + * + * return username + */ + public String getUsername(); + + public IRemoteConnectionWorkingCopy getWorkingCopy(); + + /** + * Get the working directory. Relative paths will be resolved using this path. + * + * The remote connection does not need to be open to use this method, however a default directory path, rather than the actual + * working directory, may be returned in this case. + * + * @return String representing the current working directory + * @since 4.0 + */ + public String getWorkingDirectory(); + + /** + * Test if the connection is open. + * + * @return true if connection is open. + */ + public boolean isOpen(); + + /** + * Open the connection. Must be called before the connection can be used. + * + * @param monitor + * the progress monitor to use for reporting progress to the user. It is the caller's responsibility to call done() + * on the given monitor. Accepts null, indicating that no progress should be reported and that the operation cannot + * be cancelled. + * @throws RemoteConnectionException + */ + public void open(IProgressMonitor monitor) throws RemoteConnectionException; + + /** + * Remove a listener that will be notified when this connection's status changes. + * + * @param listener + */ + public void removeConnectionChangeListener(IRemoteConnectionChangeListener listener); + + /** + * Remove the local port forwarding associated with the given port. + * + * @param port + * forwarded port + * @throws RemoteConnectionException + * @since 7.0 + */ + public void removeLocalPortForwarding(int port) throws RemoteConnectionException; + + /** + * Remove the remote port forwarding associated with the given port. + * + * @param port + * forwarded port + * @throws RemoteConnectionException + * @since 7.0 + */ + public void removeRemotePortForwarding(int port) throws RemoteConnectionException; + + /** + * Set the working directory while the connection is open. The working directory will revert to the default when the connection + * is closed then subsequently reopened. + * + * Relative paths will be resolved using this path. The path must be valid and absolute for any changes to be made. + * + * @param path + * String representing the current working directory + * @since 4.0 + */ + public void setWorkingDirectory(String path); + + /** + * Test if this connection supports forwarding of TCP connections + * + * @return true if TCP port forwarding is supported + */ + public boolean supportsTCPPortForwarding(); +} diff --git a/bundles/org.eclipse.launchbar.core/src/org/eclipse/remote/core/api2/IRemoteConnectionChangeEvent.java b/bundles/org.eclipse.launchbar.core/src/org/eclipse/remote/core/api2/IRemoteConnectionChangeEvent.java new file mode 100644 index 00000000000..a21eb5bd521 --- /dev/null +++ b/bundles/org.eclipse.launchbar.core/src/org/eclipse/remote/core/api2/IRemoteConnectionChangeEvent.java @@ -0,0 +1,54 @@ +/******************************************************************************* + * Copyright (c) 2008 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM Corporation - Initial API and implementation + *******************************************************************************/ +package org.eclipse.remote.core.api2; + +/** + * Event representing a change in connection status. The {@link #getType()} method can be used to obtain information about the type + * of event that occurred. + */ +public interface IRemoteConnectionChangeEvent { + /** + * Event indicating that the connection was closed. + */ + public static final int CONNECTION_CLOSED = 1 << 0; + + /** + * Event indicating that the connection was opened. + */ + public static final int CONNECTION_OPENED = 1 << 1; + + /** + * Event indicating that the connection was closed abnormally. + */ + public static final int CONNECTION_ABORTED = 1 << 2; + + /** + * Event indicating that the connection name was changed. + */ + public static final int CONNECTION_RENAMED = 1 << 3; + + /** + * Get the connection that has changed. + * + * @return IRemoteConnection + */ + public IRemoteConnection getConnection(); + + /** + * Returns the type of event being reported. This type + * is obtained by bitwise OR'ing the event types together. + * + * {@link #CONNECTION_CLOSED} {@link #CONNECTION_OPENED} {@link #CONNECTION_ABORTED} {@link #CONNECTION_RENAMED} + * + * @return a bitwise OR of event type constants + */ + public int getType(); +} diff --git a/bundles/org.eclipse.launchbar.core/src/org/eclipse/remote/core/api2/IRemoteConnectionChangeListener.java b/bundles/org.eclipse.launchbar.core/src/org/eclipse/remote/core/api2/IRemoteConnectionChangeListener.java new file mode 100644 index 00000000000..6820ce7434d --- /dev/null +++ b/bundles/org.eclipse.launchbar.core/src/org/eclipse/remote/core/api2/IRemoteConnectionChangeListener.java @@ -0,0 +1,29 @@ +/******************************************************************************* + * Copyright (c) 2008 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM Corporation - Initial API and implementation + *******************************************************************************/ +package org.eclipse.remote.core.api2; + +import java.util.EventListener; + +/** + * Listener used to register for notification of connection status changes. Clients should register a listener using the + * {@link IRemoteConnection#addConnectionChangeListener(IRemoteConnectionChangeListener)} method. + */ +public interface IRemoteConnectionChangeListener extends EventListener { + + /** + * Notifies this listener that the status of a connection has changed. + * + * @param event + * the connection change event + */ + + public void connectionChanged(IRemoteConnectionChangeEvent event); +} diff --git a/bundles/org.eclipse.launchbar.core/src/org/eclipse/remote/core/api2/IRemoteConnectionManager.java b/bundles/org.eclipse.launchbar.core/src/org/eclipse/remote/core/api2/IRemoteConnectionManager.java new file mode 100644 index 00000000000..046fbb13fd4 --- /dev/null +++ b/bundles/org.eclipse.launchbar.core/src/org/eclipse/remote/core/api2/IRemoteConnectionManager.java @@ -0,0 +1,92 @@ +/******************************************************************************* + * Copyright (c) 2007 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM Corporation - Initial API and implementation + *******************************************************************************/ +package org.eclipse.remote.core.api2; + +import java.net.URI; +import java.util.List; + +import org.eclipse.remote.core.IUserAuthenticator; +import org.eclipse.remote.core.exception.RemoteConnectionException; + +/** + * Interface for managing connections to remote systems. + */ +public interface IRemoteConnectionManager { + /** + * The name of the connection for local services. There is only one connection for local services. + * + * @since 7.0 + */ + public static String LOCAL_CONNECTION_NAME = "Local"; //$NON-NLS-1$ + + /** + * Gets the remote connection corresponding to the supplied name. + * + * @param name + * name of the connection (as returned by {@link IRemoteConnection#getName()}) + * @return remote connection or null if no connection exists + */ + public IRemoteConnection getConnection(String name); + + /** + * Gets the remote connection corresponding to the supplied URI. + * + * @param uri + * URI containing a schema for this remote connection + * @return remote connection or null if no connection exists or the schema + * is incorrect + * @since 4.0 + */ + public IRemoteConnection getConnection(URI uri); + + /** + * Get all the connections for this service provider. + * + * @return connections that we know about + */ + public List getConnections(); + + /** + * Get the user authenticator that will be used when opening connections. The user authenticator is specified using the + * org.eclipse.remote.core.authenticator extension point. + * + * @param connection + * connection that will use this authenticator + * @return user authenticator + */ + public IUserAuthenticator getUserAuthenticator(IRemoteConnection connection); + + /** + * Creates a new remote connection named with supplied name. The connection attributes will be the default for the + * implementation. + * + * Returns a working copy of the remote connection. Callers must call {@link IRemoteConnectionWorkingCopy#save()} before the + * connection can be used. + * + * @param name + * name of the connection + * @return a new connection working copy with the supplied name + * @throws RemoteConnectionException + * if connection creation failed + * @since 5.0 + */ + public IRemoteConnectionWorkingCopy newConnection(String name) throws RemoteConnectionException; + + /** + * Remove a connection and all resources associated with it. + * + * @param connection + * connection to remove + * @throws RemoteConnectionException + * if the connection could not be removed + */ + public void removeConnection(IRemoteConnection connection) throws RemoteConnectionException; +} diff --git a/bundles/org.eclipse.launchbar.core/src/org/eclipse/remote/core/api2/IRemoteConnectionService.java b/bundles/org.eclipse.launchbar.core/src/org/eclipse/remote/core/api2/IRemoteConnectionService.java new file mode 100644 index 00000000000..83237a43fdf --- /dev/null +++ b/bundles/org.eclipse.launchbar.core/src/org/eclipse/remote/core/api2/IRemoteConnectionService.java @@ -0,0 +1,25 @@ +/******************************************************************************* + * Copyright (c) 2014 QNX Software Systems and others + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Doug Schaefer (QNX) - initial + *******************************************************************************/ +package org.eclipse.remote.core.api2; + +/** + * Root interface for all services available from a connection. + */ +public interface IRemoteConnectionService { + + /** + * Return the connection this service applies to. + * + * @return connection + */ + IRemoteConnection getConnection(); + +} diff --git a/bundles/org.eclipse.launchbar.core/src/org/eclipse/remote/core/api2/IRemoteConnectionWorkingCopy.java b/bundles/org.eclipse.launchbar.core/src/org/eclipse/remote/core/api2/IRemoteConnectionWorkingCopy.java new file mode 100644 index 00000000000..f522fb8536a --- /dev/null +++ b/bundles/org.eclipse.launchbar.core/src/org/eclipse/remote/core/api2/IRemoteConnectionWorkingCopy.java @@ -0,0 +1,85 @@ +/******************************************************************************* + * Copyright (c) 2007 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM Corporation - Initial API and implementation + *******************************************************************************/ +package org.eclipse.remote.core.api2; + +public interface IRemoteConnectionWorkingCopy extends IRemoteConnection { + /** + * Returns the original connection this working copy was created from. + * + * @return original connection + */ + public IRemoteConnection getOriginal(); + + /** + * Returns whether this connection has been modified since it was last saved or created. + * + * @return true if the connection has been modified + */ + public boolean isDirty(); + + /** + * Saves this working copy to its original connection and returns a handle to the resulting connection. Has no effect if this + * connection does not need saving. + * + * @return saved connection + */ + public IRemoteConnection save(); + + /** + * Set the address for this connection + * + * @param address + */ + public void setAddress(String address); + + /** + * Set an implementation dependent attribute for the connection. Attributes keys supported by the connection can be obtained + * using {@link #getAttributes()}. Attributes are persisted along with connection information. + * + * @param key + * attribute key + * @param value + * attribute value + * @since 5.0 + */ + public void setAttribute(String key, String value); + + /** + * Set the name for this connection + * + * @param name + */ + public void setName(String name); + + /** + * Set the password for this connection + * + * @param password + * @since 5.0 + */ + public void setPassword(String password); + + /** + * Set the port used for this connection. Only valid if supported by the underlying service provider. + * + * @param port + * port number for the connection + * @since 5.0 + */ + public void setPort(int port); + + /** + * Set the username for this connection + * + * @param username + */ + public void setUsername(String username); +} diff --git a/bundles/org.eclipse.launchbar.core/src/org/eclipse/remote/core/api2/IRemoteFileManager.java b/bundles/org.eclipse.launchbar.core/src/org/eclipse/remote/core/api2/IRemoteFileManager.java new file mode 100644 index 00000000000..328537a38c9 --- /dev/null +++ b/bundles/org.eclipse.launchbar.core/src/org/eclipse/remote/core/api2/IRemoteFileManager.java @@ -0,0 +1,79 @@ +/******************************************************************************* + * Copyright (c) 2007 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM Corporation - Initial API and implementation + *******************************************************************************/ +package org.eclipse.remote.core.api2; + +import java.net.URI; + +import org.eclipse.core.filesystem.IFileStore; +import org.eclipse.core.runtime.IPath; + +/** + * Interface for managing resources on a remote system. + */ +public interface IRemoteFileManager { + /** + * Get the resource associated with path. IFileStore can then be used to + * perform operations on the file. + * + * The remote connection does not need to be open to use this method, but + * subsequent operations on the IFileStore that access the underlying remote + * filesystem may require the connection to be open. + * + * @param path + * path to resource + * @return the file store representing the remote path + */ + public IFileStore getResource(String path); + + /** + * Gets the directory separator on the target system. + * + * @return String + * @since 4.0 + */ + public String getDirectorySeparator(); + + /** + * Convert URI to a remote path. This path is suitable for direct file + * operations on the remote system. + * + * The remote connection does not need to be open to use this method. + * + * @return IPath representing the remote path + */ + public String toPath(URI uri); + + /** + * Convert remote path to equivalent URI. This URI is suitable for EFS + * operations on the local system. + * + * The remote connection does not need to be open to use this method. + * + * @param path + * path on remote system + * @return URI representing path on remote system, or null if the path is + * invalid + */ + public URI toURI(IPath path); + + /** + * Convert string representation of a remote path to equivalent URI. This + * URI is suitable for EFS operations on the local system. + * + * The remote connection does not need to be open to use this method. + * + * @param path + * path on remote system + * @return URI representing path on remote system, or null if the path is + * invalid + */ + public URI toURI(String path); +} diff --git a/bundles/org.eclipse.launchbar.core/src/org/eclipse/remote/core/api2/IRemoteLaunchConfigService.java b/bundles/org.eclipse.launchbar.core/src/org/eclipse/remote/core/api2/IRemoteLaunchConfigService.java new file mode 100644 index 00000000000..34810f223e6 --- /dev/null +++ b/bundles/org.eclipse.launchbar.core/src/org/eclipse/remote/core/api2/IRemoteLaunchConfigService.java @@ -0,0 +1,29 @@ +/******************************************************************************* + * Copyright (c) 2014 QNX Software Systems and others + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Doug Schaefer (QNX) - initial + *******************************************************************************/ +package org.eclipse.remote.core.api2; + +import org.eclipse.debug.core.ILaunchConfigurationType; + +/** + * Service that supports setting up launch configurations for + * launching over the remote connection. + */ +public interface IRemoteLaunchConfigService extends IRemoteService { + + /** + * Does this remote service support launching on this launch config type. + * + * @param launchConfigType + * @return boolean supports launching on this connection + */ + boolean supportsType(ILaunchConfigurationType launchConfigType); + +} diff --git a/bundles/org.eclipse.launchbar.core/src/org/eclipse/remote/core/api2/IRemoteService.java b/bundles/org.eclipse.launchbar.core/src/org/eclipse/remote/core/api2/IRemoteService.java new file mode 100644 index 00000000000..36c85fde2e7 --- /dev/null +++ b/bundles/org.eclipse.launchbar.core/src/org/eclipse/remote/core/api2/IRemoteService.java @@ -0,0 +1,15 @@ +package org.eclipse.remote.core.api2; + +/** + * The root interface for a service provided by a remote services provider. + */ +public interface IRemoteService { + + /** + * Return the remote services provider object. + * + * @return remote services provider. + */ + IRemoteServices getRemoteServices(); + +} diff --git a/bundles/org.eclipse.launchbar.core/src/org/eclipse/remote/core/api2/IRemoteServices.java b/bundles/org.eclipse.launchbar.core/src/org/eclipse/remote/core/api2/IRemoteServices.java new file mode 100644 index 00000000000..34143197392 --- /dev/null +++ b/bundles/org.eclipse.launchbar.core/src/org/eclipse/remote/core/api2/IRemoteServices.java @@ -0,0 +1,56 @@ +/******************************************************************************* + * Copyright (c) 2013 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM Corporation - Initial API and implementation + *******************************************************************************/ +package org.eclipse.remote.core.api2; + +import org.eclipse.core.runtime.IProgressMonitor; + +/** + * Abstraction of a remote services provider. Clients obtain this interface using one of the static methods in + * {@link RemoteServices}. The methods on this interface can then be used to access the full range of remote services provided. + */ +public interface IRemoteServices extends IRemoteServicesDescriptor { + public static final int CAPABILITY_ADD_CONNECTIONS = 0x01; + public static final int CAPABILITY_EDIT_CONNECTIONS = 0x02; + public static final int CAPABILITY_REMOVE_CONNECTIONS = 0x04; + public static final int CAPABILITY_SUPPORTS_TCP_PORT_FORWARDING = 0x08; + public static final int CAPABILITY_SUPPORTS_X11_FORWARDING = 0x10; + public static final int CAPABILITY_SUPPORTS_COMMAND_SHELL = 0x20; + + /** + * Return one of the remote services that this provider provides. + * + * @param service interface + * @return the service + */ + public T getService(Class service); + + /** + * Get a connection manager for managing remote connections. + * + * @return connection manager or null if services are not initialized + */ + public IRemoteConnectionManager getConnectionManager(); + + /** + * Initialize the remote service. Clients should not call this method (it is called internally.) + * + * @return true if the initialization was successful, false otherwise + * @since 7.0 + */ + public boolean initialize(IProgressMonitor monitor); + + /** + * Gets the capabilities of the remote service. + * + * @return bit-wise or of capability flag constants + */ + public int getCapabilities(); +} diff --git a/bundles/org.eclipse.launchbar.core/src/org/eclipse/remote/core/api2/IRemoteServicesDescriptor.java b/bundles/org.eclipse.launchbar.core/src/org/eclipse/remote/core/api2/IRemoteServicesDescriptor.java new file mode 100644 index 00000000000..a3198910c46 --- /dev/null +++ b/bundles/org.eclipse.launchbar.core/src/org/eclipse/remote/core/api2/IRemoteServicesDescriptor.java @@ -0,0 +1,38 @@ +/******************************************************************************* + * Copyright (c) 2007 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM Corporation - Initial API and implementation + *******************************************************************************/ +package org.eclipse.remote.core.api2; + +/** + * Interface representing a remote services provider extension. Clients can use this to find out information about the extension + * without loading it. + */ +public interface IRemoteServicesDescriptor extends Comparable { + /** + * Get unique ID of this service. Can be used as a lookup key. + * + * @return unique ID + */ + public String getId(); + + /** + * Get display name of this service. + * + * @return display name + */ + public String getName(); + + /** + * Get the EFS scheme provided by this service. + * + * @return display name + */ + public String getScheme(); +} diff --git a/pom.xml b/pom.xml index 9e90803f60f..26674dfc6f3 100644 --- a/pom.xml +++ b/pom.xml @@ -37,6 +37,14 @@ + + + eclipse + http://download.eclipse.org/releases/luna + p2 + + + bundles/org.eclipse.launchbar.core bundles/org.eclipse.launchbar.ui