eclipse-plugin listener subclipse

eclipse plugin - ¿Cómo acceder al SVNClientAdapter que subclipse está utilizando durante el tiempo de ejecución?



subclipse download zip (1)

Estoy usando la API de Subclipse y me gustaría implementar ISVNNotifyListener para poder conocer los eventos de subclipse tal como suceden durante el tiempo de ejecución. Creo que necesito agregar (suscribir) mi instancia de escucha de notificación al conjunto de oyentes que el Adaptador de Cliente notificará, pero no sé cómo obtener acceso al Adaptador de Cliente que está siendo utilizado por Subclipse en tiempo de ejecución. . ¿Hay alguna forma de acceder para que pueda agregar mi oyente al conjunto?


Lo sentimos, pero lamentablemente Subclipse no se ha codificado de tal manera que proporcione acceso a las partes internas. Subclipse construye un nuevo objeto ISVNClientAdapter para cada llamada API que necesita hacer en Subversion y agrega su ISVNNotifyListener a este objeto sobre la marcha según sea necesario. Entonces no hay forma de que interpongas a tu propio oyente.

Tal vez podrías escribir una clase que implemente IConsoleListener y hacer que actúe como un proxy para la clase Subclipse. A continuación, puede llamar a SVNProviderPlugin.getConsoleListener para obtener el receptor de la consola actual y almacenar una referencia en su clase. Luego, llame a SVNProviderPlugin.setConsoleListener para reemplazar la clase que se encuentra en Subclipse con su clase. A medida que se desencadenen los eventos en su clase, puede simplemente reenviarlos a la clase Subclipse y hacer lo que quiera con los eventos en su código. Algo como esto:

import java.io.File; import org.tigris.subversion.subclipse.core.client.IConsoleListener; import org.tigris.subversion.svnclientadapter.SVNNodeKind; public class ProxyListener implements IConsoleListener { private IConsoleListener subclipseListener; public ProxyListener(IConsoleListener subclipseListener) { super(); this.subclipseListener = subclipseListener; } public void setCommand(int command) { subclipseListener.setCommand(command); // TODO add your code } public void logCommandLine(String commandLine) { subclipseListener.logCommandLine(commandLine); // TODO add your code } public void logMessage(String message) { subclipseListener.logMessage(message); // TODO add your code } public void logError(String message) { subclipseListener.logError(message); // TODO add your code } public void logRevision(long revision, String path) { subclipseListener.logRevision(revision , path); // TODO add your code } public void logCompleted(String message) { subclipseListener.logCompleted(message); // TODO add your code } public void onNotify(File path, SVNNodeKind kind) { subclipseListener.onNotify(path, kind); // TODO add your code } }