blob: d048f7eeb50fb47b0836782a9375ac29c370f656 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2019 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.jdt.launching;
import java.util.List;
import java.util.Map;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.debug.core.ILaunch;
import com.sun.jdi.connect.Connector;
/**
* A VM connector establishes a JDI connection with a debuggable
* virtual machine. This extension point provides a mechanism for
* abstracting the connection to a remote virtual machine.
* <p>
* A VM connector extension is defined in <code>plugin.xml</code>.
* Following is an example definition of a VM connector extension.
* <pre>
* &lt;extension point="org.eclipse.jdt.launching.vmConnectors"&gt;
* &lt;vmConnector
* id="com.example.VMConnector"
* class="com.example.VMConnectorClass"
* &lt;/vmConnector&gt;
* &lt;/extension&gt;
* </pre>
* The attributes are specified as follows:
* <ul>
* <li><code>id</code> specifies a unique identifier for this VM connector.</li>
* <li><code>class</code> specifies the fully qualified name of the Java class
* that implements <code>IVMConnector</code>.</li>
* </ul>
* @since 2.0
*/
public interface IVMConnector {
/**
* Establishes a JDI connection with a debuggable VM using the arguments
* specified in the given map, contributing results (debug targets and processes),
* to the given launch.
*
* @param arguments Argument map to use in establishing a connection. The keys of
* the map are strings corresponding to the names of arguments returned by this
* connector's <code>getDefaultAgruments()</code> method. The values of the map
* are strings corresponding to the (String) values of the associated
* <code>com.sun.jdi.connect.Connector.Argument</code>s to use.
* @param monitor progress monitor
* @param launch launch to contribute debug target(s) and/or process(es) to
* @exception CoreException if unable to establish a connection with the target VM
*/
public void connect(Map<String, String> arguments, IProgressMonitor monitor, ILaunch launch) throws CoreException;
/**
* Returns the name of this connector.
*
* @return the name of this connector
*/
public String getName();
/**
* Returns a unique identifier for this kind of connector.
*
* @return a unique identifier for this kind of connector
*/
public String getIdentifier();
/**
* Returns a map of default arguments used by this connector.
* The keys of the map are names of arguments used by this
* connector, and the values are of type
* <code>com.sun.jdi.connect.Connector.Argument</code>.
*
* @return argument map with default values
* @exception CoreException if unable to retrieve a default argument map
*/
public Map<String, Connector.Argument> getDefaultArguments() throws CoreException;
/**
* Returns a list of argument names found in this connector's
* default argument map, defining the order in which arguments
* should be presented to the user. Since a map is not ordered,
* this provides control on how arguments will be presented to
* the user.
*
* @return list of argument names
*/
public List<String> getArgumentOrder();
}