@Override public boolean validateOptions(Collection<FilePath> collection) { ProjectConfigRegistry registry = ProjectConfigRegistry.getInstance(project); if (registry == null || registry.isDisposed()) { return false; } for (FilePath filePath : collection) { ClientConfigRoot root = registry.getClientFor(filePath); if (root != null) { return true; } } return false; }
@Nullable private ClientConfigRoot getRootFor(FilePath fp) { if (fp == null || project.isDisposed()) { return null; } ProjectConfigRegistry registry = ProjectConfigRegistry.getInstance(project); if (registry == null || registry.isDisposed()) { return null; } return registry.getClientFor(fp); }
@Nullable @Override public Configurable createConfigurable(Collection<FilePath> collection) { // Note the way this is currently implemented: synchronize options will always be reset. options = SyncOptions.createDefaultSyncOptions(); ProjectConfigRegistry registry = ProjectConfigRegistry.getInstance(project); if (registry == null || registry.isDisposed()) { return new SyncOptionConfigurable(project, options, Collections.emptyList()); } Map<P4ServerName, ServerConfig> configMap = new HashMap<>(); collection.forEach((fp) -> { ClientConfigRoot clientRoot = registry.getClientFor(fp); if (clientRoot != null) { configMap.put(clientRoot.getServerConfig().getServerName(), clientRoot.getServerConfig()); } }); return new SyncOptionConfigurable(project, options, configMap.values()); }
final SyncUpdateSession ret = new SyncUpdateSession(); ProjectConfigRegistry registry = ProjectConfigRegistry.getInstance(project); if (registry == null || registry.isDisposed()) { ret.exceptions.add(new VcsException("Plugin disposed")); return ret;
/** * Force a sync from server operation to overwrite local changes. * @param files files to sync * @param exceptions exceptions encountered * @param listener listener on progress */ private void forceSync(List<FilePath> files, List<VcsException> exceptions, RollbackProgressListener listener) { if (files.isEmpty() || project.isDisposed()) { return; } ProjectConfigRegistry registry = ProjectConfigRegistry.getInstance(project); if (registry == null || registry.isDisposed()) { return; } groupFilesByClient(registry, files) .stream() .map(e -> P4ServerComponent .perform(project, e.getKey().getClientConfig(), new FetchFilesAction(e.getValue(), "", true)) .whenCompleted((c) -> listener.accept(e.getValue())) .whenServerError((ex) -> listener.accept(e.getValue())) .whenOffline(() -> listener.accept(e.getValue()))) .collect(ErrorCollectors.collectActionErrors(exceptions)) .whenCompleted((c) -> LOG.info("Completed sync of files")) .whenFailed((c) -> LOG.info("Failed to sync files")); }
if (registry == null || registry.isDisposed()) {
if (registry == null || registry.isDisposed()) { return;
@Override public void rollbackIfUnchanged(VirtualFile file) { if (file == null || project.isDisposed()) { return; } ProjectConfigRegistry registry = ProjectConfigRegistry.getInstance(project); if (registry == null || registry.isDisposed()) { LOG.info("Skipping revert for " + file + ": plugin not in a valid state"); return; } FilePath fp = VcsUtil.getFilePath(file); if (fp == null) { LOG.info("Skipping revert for " + file + ": no FilePath found"); return; } ClientConfigRoot root = registry.getClientFor(file); if (root == null) { LOG.info("SKipping revert for " + file + ": no P4 root found"); return; } P4ServerComponent .perform(project, root.getClientConfig(), new RevertFileAction(fp, true)) .whenCompleted((r) -> ChangeListManager.getInstance(project).scheduleUpdate(true)); }
@Override public void actionPerformed(AnActionEvent e) { final Project project = getEventProject(e); if (project == null || project.isDisposed()) { LOG.info("Skipping because project is disposed"); return; } ProjectConfigRegistry registry = ProjectConfigRegistry.getInstance(project); if (registry == null || registry.isDisposed()) { LOG.info("Skipping because no config registry known"); return; } Pair<ServerConfig, P4ChangelistId> setup = getReferencedChangelistId(project, registry, e); if (setup == null) { LOG.info("Skipping because no changelist associated to context item could be found"); return; } P4ServerComponent .query(project, setup.first, new DescribeChangelistQuery(setup.second)) .whenCompleted((r) -> { if (r.getRemoteChangelist() != null) { ChangelistDetails.showDocked(project, r.getRemoteChangelist()); } }); }