public static void addListener(@NotNull MessageBusClient.ProjectClient client, @NotNull Object listenerOwner, @NotNull Listener listener) { addListener(client, TOPIC, listener, Listener.class, listenerOwner); } }
public static void reportClientConfigRemoved(@NotNull Project project, @NotNull Object src, @NotNull ClientConfig config, @Nullable VirtualFile vcsRootDir) { getListener(project, TOPIC, DEFAULT_LISTENER).clientConfigurationRemoved(new Event(src, config, vcsRootDir)); }
protected final void sendClientRemoved(@Nullable ClientConfigRoot state) { if (state != null) { if (LOG.isDebugEnabled()) { LOG.debug("Sending notification that root was removed: " + state.getClientRootDir()); } ClientConfigRemovedMessage.reportClientConfigRemoved(getProject(), this, state.getClientConfig(), state.getProjectVcsRootDir()); } }
@Override public void projectOpened(Project project) { MessageBusClient.ProjectClient projectMbClient = MessageBusClient.forProject(project, InvalidPasswordMonitorComponent.this); ClientConfigAddedMessage.addListener(projectMbClient, this, e -> forgetLoginProblem(e.getClientConfig().getServerConfig())); ClientConfigRemovedMessage.addListener(projectMbClient, this, event -> forgetLoginProblem(event.getClientConfig().getServerConfig())); }
public CacheStoreUpdateListener(@NotNull Project project, @NotNull ProjectCacheStore cache, @NotNull Disposable disposableParent) { this.project = project; this.cache = cache; // TODO should be an argument, rather than the cache directly? this.pendingCache = new CachePendingActionHandlerImpl(cache); MessageBusClient.ApplicationClient appClient = MessageBusClient.forApplication(disposableParent); MessageBusClient.ProjectClient projectClient = MessageBusClient.forProject(project, disposableParent); CacheListener listener = new CacheListener(); String cacheId = AbstractCacheMessage.createCacheId(project, CacheStoreUpdateListener.class); ClientActionMessage.addListener(appClient, cacheId, listener); // TODO this causes the event listener to be fired twice. // Somewhere, this ClientOpenCacheMessage call invokes the exact same listener // method twice. Either the listener is registered twice, or the event object // is being passed to send() twice. ClientOpenCacheMessage.addListener(appClient, cacheId, listener); DescribeChangelistCacheMessage.addListener(appClient, cacheId, listener); FileActionMessage.addListener(appClient, cacheId, listener); JobCacheMessage.addListener(appClient, cacheId, listener); JobSpecCacheMessage.addListener(appClient, cacheId, listener); ListClientsForUserCacheMessage.addListener(appClient, cacheId, listener); ServerActionCacheMessage.addListener(appClient, cacheId, listener); ClientConfigRemovedMessage.addListener(projectClient, cacheId, listener); }
MessageBusClient.ProjectClient projClient = MessageBusClient.forProject(project, this); ClientConfigAddedMessage.addListener(projClient, this, (e) -> clientConfigs.put(e.getRoot(), e.getClientConfig())); ClientConfigRemovedMessage.addListener(projClient, this, (event) -> clientConfigs.remove(event.getVcsRootDir())); ClientConfigAddedMessage.addServerListener(appClient, this,
@Test void removeClientConfig_registered() { ProjectConfigRegistry registry = new ProjectConfigRegistryImpl(idea.getMockProject()); final List<ClientConfig> added = new ArrayList<>(); final List<ClientConfig> removed = new ArrayList<>(); MessageBusClient.ProjectClient client = MessageBusClient.forProject(idea.getMockProject(), idea.getMockProject()); ClientConfigAddedMessage.addListener(client, this, e -> added.add(e.getClientConfig())); ClientConfigRemovedMessage.addListener(client, this, (e) -> removed.add(e.getClientConfig())); ClientConfig config = createClientConfig(); VirtualFile root = MockVirtualFileSystem.createRoot(); registry.addClientConfig(config, root); assertEquals(1, added.size()); added.clear(); registry.removeClientConfigAt(root); assertEquals(0, added.size()); assertEquals(1, removed.size()); assertSame(config, removed.get(0)); ClientConfig fetchedState = registry.getRegisteredClientConfigState(config.getClientServerRef()); assertNull(fetchedState); }
ClientConfigRemovedMessage.addListener(projectBusClient, this, event -> { if (! ProjectConfigRegistry.this.equals(event.getEventSource())) { onClientRemoved(event.getClientConfig(), event.getVcsRootDir());
@Test void projectClosed() { ProjectConfigRegistry registry = new ProjectConfigRegistryImpl(idea.getMockProject()); final List<ClientConfig> added = new ArrayList<>(); final List<ClientConfig> removed = new ArrayList<>(); MessageBusClient.ProjectClient client = MessageBusClient.forProject(idea.getMockProject(), idea.getMockProject()); ClientConfigAddedMessage.addListener(client, this, e -> added.add(e.getClientConfig())); ClientConfigRemovedMessage.addListener(client, this, (e) -> removed.add(e.getClientConfig())); ClientConfig config = createClientConfig(); VirtualFile root = MockVirtualFileSystem.createRoot(); registry.addClientConfig(config, root); assertEquals(1, added.size()); added.clear(); registry.projectClosed(); assertEquals(0, added.size()); assertEquals(1, removed.size()); assertSame(config, removed.get(0)); ClientConfig fetchedState = registry.getRegisteredClientConfigState(config.getClientServerRef()); assertNull(fetchedState); // closing the project should turn off further registration removed.clear(); assertThrows(Throwable.class, () -> registry.addClientConfig(config, root)); assertEquals(0, added.size()); assertThrows(Throwable.class, () -> registry.removeClientConfigAt(root)); assertEquals(0, removed.size()); }
@Test void disposeComponent() { ProjectConfigRegistry registry = new ProjectConfigRegistryImpl(idea.getMockProject()); final List<ClientConfig> added = new ArrayList<>(); final List<ClientConfig> removed = new ArrayList<>(); MessageBusClient.ProjectClient client = MessageBusClient.forProject(idea.getMockProject(), idea.getMockProject()); ClientConfigAddedMessage.addListener(client, this, e -> added.add(e.getClientConfig())); ClientConfigRemovedMessage.addListener(client, this, (e) -> removed.add(e.getClientConfig())); ClientConfig config = createClientConfig(); VirtualFile root = MockVirtualFileSystem.createRoot(); registry.addClientConfig(config, root); assertEquals(1, added.size()); added.clear(); registry.disposeComponent(); assertEquals(0, added.size()); assertEquals(1, removed.size()); assertSame(config, removed.get(0)); ClientConfig fetchedState = registry.getRegisteredClientConfigState(config.getClientServerRef()); assertNull(fetchedState); // closing the project should turn off further registration removed.clear(); assertThrows(Throwable.class, () -> registry.addClientConfig(config, root)); assertEquals(0, added.size()); assertThrows(Throwable.class, () -> registry.removeClientConfigAt(root)); assertEquals(0, removed.size()); }
@Test void removeClientConfig_notRegistered() { ProjectConfigRegistry registry = new ProjectConfigRegistryImpl(idea.getMockProject()); final List<ClientConfig> removed = new ArrayList<>(); MessageBusClient.ProjectClient client = MessageBusClient.forProject(idea.getMockProject(), idea.getMockProject()); ClientConfigAddedMessage.addListener(client, this, e -> fail("should not have added anything")); ClientConfigRemovedMessage.addListener(client, this, (e) -> removed.add(e.getClientConfig())); ClientConfig config = createClientConfig(); registry.removeClientConfigAt(MockVirtualFileSystem.createRoot()); assertEquals(0, removed.size()); ClientConfig fetchedState = registry.getRegisteredClientConfigState(config.getClientServerRef()); assertNull(fetchedState); }
@Test void addClientConfig_new() { ProjectConfigRegistry registry = new ProjectConfigRegistryImpl(idea.getMockProject()); final List<ClientConfig> added = new ArrayList<>(); MessageBusClient.ProjectClient client = MessageBusClient.forProject(idea.getMockProject(), idea.getMockProject()); ClientConfigAddedMessage.addListener(client, this, e -> added.add(e.getClientConfig())); ClientConfigRemovedMessage.addListener(client, this, (event) -> fail("incorrectly called remove")); ClientConfig config = createClientConfig(); VirtualFile root = MockVirtualFileSystem.createRoot(); registry.addClientConfig(config, root); assertEquals(1, added.size()); assertSame(config, added.get(0)); ClientConfig fetchedState = registry.getRegisteredClientConfigState(config.getClientServerRef()); assertNotNull(fetchedState); assertSame(config, fetchedState); }
MessageBusClient.ProjectClient client = MessageBusClient.forProject(idea.getMockProject(), idea.getMockProject()); ClientConfigAddedMessage.addListener(client, this, e -> added.add(e.getClientConfig())); ClientConfigRemovedMessage.addListener(client, this, (e) -> removed.add(e.getClientConfig())); ClientConfig config = createClientConfig(); MockVirtualFile root = MockVirtualFileSystem.createRoot();
ClientConfigRemovedMessage.addListener(clientBus, cacheId, event -> refresh()); ServerConnectedMessage.addListener(appBus, cacheId, (e) -> refresh()); UserSelectedOfflineMessage.addListener(clientBus, cacheId, name -> refresh());