我正在使用 Subclipse API,我想实现 ISVNNotifyListener,以便我可以了解运行时发生的 subclipse 事件。我相信我需要将我的通知侦听器实例添加(订阅)到客户端适配器将通知的侦听器集,但我不知道如何访问 Subclipse 在运行时使用的客户端适配器。有没有办法访问它以便我可以将侦听器添加到集合中?
抱歉,不幸的是 Subclipse 尚未以这种方式进行编码以提供对内部的访问。 Subclipse 为需要在 Subversion 中进行的每个 API 调用构造一个新的 ISVNClientAdapter 对象,并根据需要动态地将其 ISVNNotifyListener 添加到该对象。所以你没有办法插入你自己的听众。
也许您可以编写一个实现 IConsoleListener 的类,并让它充当 Subclipse 类的代理。然后,您可以调用 SVNProviderPlugin.getConsoleListener 来获取当前控制台侦听器并将其引用存储在您的类中。然后调用 SVNProviderPlugin.setConsoleListener 将 Subclipse 中保存的类替换为您的类。当事件在您的类中触发时,您可以将它们转发到 Subclipse 类,并对代码中的事件执行任何您想要的操作。像这样的东西:
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
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)