El conector puede añadir tipos de configuración de lanzamiento a la plataforma con el punto de extensión org.eclipse.debug.core.launchConfigurationTypes. Este le permite declarar un tipo de configuración mediante un ID exclusivo. En el conector, deberá proporcionar la correspondiente implementación de ILaunchConfigurationDelegate. También podrá especificar qué modalidades (ejecución, depuración) están soportadas por el lanzador, y qué nombre debe utilizarse para mostrar los lanzadores de este tipo al usuario.
Los siguientes códigos XML muestran cómo declaran las herramientas Java una configuración de lanzamiento Java para lanzar programas Java locales:
<extension point = "org.eclipse.debug.core.launchConfigurationTypes"> <launchConfigurationType id="org.eclipse.jdt.launching.localJavaApplication" name="%localJavaApplication" delegate="org.eclipse.jdt.internal.launching.JavaLocalApplicationLaunchConfigurationDelegate" modes= "run, debug"> </launchConfigurationType> </extension>
Para cada tipo de configuración de lanzamiento en la que esté soportada la modalidad de depuración, es importante definir una manera de localizar el código fuente que se corresponde con el punto de ejecución actual del código. Las interfaces ISourceLocator e IPersistableSourceLocator permiten definir una correlación que va desde un programa en ejecución al código fuente.
Los localizadores del fuente suelen estar implementados para que funcionen con la correspondiente configuración de lanzamiento y su delegado. Dado que las configuraciones de lanzamiento pueden ser persistentes, los localizadores del fuente también se pueden almacenar con la configuración de lanzamiento. Para ello, se establece una correlación de un atributo de la configuración de lanzamiento con un ID de un localizador del fuente. Cuando una configuración de lanzamiento se lee desde el disco, el ID del localizador del fuente se tiene que correlacionar de vuelta con la clase de implementación. Esto se logra con el punto de extensión org.eclipse.debug.core.sourceLocators.
El punto de extensión le permite registrar la clase que implementa la interfaz IPersistableSourceLocator y asociarla a un ID que se almacenará junto con la configuración de lanzamiento. Así, el conector de depuración podrá buscar las clases de localizador del fuente por su ID cuando llegue el momento de crear una instancia de una configuración de lanzamiento.
A continuación figuran códigos XML procedentes de las herramientas Java:
<extension point = "org.eclipse.debug.core.sourceLocators"> <sourceLocator id = "org.eclipse.jdt.debug.ui.javaSourceLocator" class="org.eclipse.jdt.debug.ui.JavaUISourceLocator" name="Solicitud de localizador de fuente Java"/> </extension>
Los conectores utilizan atributos y valores con nombre para almacenar los datos importantes con una configuración de lanzamiento. Dado que la plataforma no conoce la interpretación de un atributo, se proporciona un punto de extensión que le permitirá suministrar un comparador para un atributo concreto. El comparador sirve para determinar si son iguales los atributos cuyo nombre es el especificado. En muchos casos, la comparación de series simples proporcionada por el método java.lang.Object.equals(Object) es suficiente para comparar atributos. Se utilizará este método si no se ha proporcionado ningún comparador. Sin embargo, puede ser que se necesite un manejo especial para algunos valores de los atributos, como el de eliminar los valores de espacio en blanco del texto antes de comparar para ver si hay igualdad.
Los comparadores se suministran como contribución del punto de extensión org.eclipse.debug.core.launchConfigurationComparators.
Las herramientas Java suministran comparadores de configuraciones de lanzamiento para comparar las vías de acceso del fuente y de las clases del programa.
<extension point = "org.eclipse.debug.core.launchConfigurationComparators"> <launchConfigurationComparator id = "org.eclipse.jdt.launching.classpathComparator" class = "org.eclipse.jdt.internal.launching.RuntimeClasspathEntryListComparator" attribute = "org.eclipse.jdt.launching.CLASSPATH"/> <launchConfigurationComparator id = "org.eclipse.jdt.launching.sourcepathComparator" class = "org.eclipse.jdt.internal.launching.RuntimeClasspathEntryListComparator" attribute = "org.eclipse.jdt.launching.SOURCE_PATH"/> </extension>