gpt4 book ai didi

eclipse-plugin - 如何访问 subclipse 在运行时使用的 SVNClientAdapter?

转载 作者:行者123 更新时间:2023-12-05 01:38:14 25 4
gpt4 key购买 nike

我正在使用 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

}

}

关于eclipse-plugin - 如何访问 subclipse 在运行时使用的 SVNClientAdapter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7518467/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com