Search in sources :

Example 1 with CvsExecutionEnvironment

use of com.intellij.cvsSupport2.cvsoperations.common.CvsExecutionEnvironment in project intellij-community by JetBrains.

the class CvsRootConfiguration method testConnection.

public void testConnection(Project project) throws AuthenticationException, IOException {
    final IConnection connection = createSettings().createConnection(new ReadWriteStatistics());
    final ErrorMessagesProcessor errorProcessor = new ErrorMessagesProcessor();
    final CvsExecutionEnvironment cvsExecutionEnvironment = new CvsExecutionEnvironment(errorProcessor, CvsExecutionEnvironment.DUMMY_STOPPER, errorProcessor, PostCvsActivity.DEAF, project);
    final CvsResult result = new CvsResultEx();
    try {
        ProgressManager.getInstance().runProcessWithProgressSynchronously(() -> {
            final GetModulesListOperation operation = new GetModulesListOperation(createSettings());
            final CvsRootProvider cvsRootProvider = operation.getCvsRootProvider();
            try {
                if (connection instanceof SelfTestingConnection) {
                    ((SelfTestingConnection) connection).test(CvsListenerWithProgress.createOnProgress());
                }
                operation.execute(cvsRootProvider, cvsExecutionEnvironment, connection, DummyProgressViewer.INSTANCE);
            } catch (ValidRequestsExpectedException ex) {
                result.addError(new CvsException(ex, cvsRootProvider.getCvsRootAsString()));
            } catch (CommandException ex) {
                result.addError(new CvsException(ex.getUnderlyingException(), cvsRootProvider.getCvsRootAsString()));
            } catch (ProcessCanceledException ex) {
                result.setIsCanceled();
            } catch (BugLog.BugException e) {
                LOG.error(e);
            } catch (Exception e) {
                result.addError(new CvsException(e, cvsRootProvider.getCvsRootAsString()));
            }
        }, CvsBundle.message("operation.name.test.connection"), true, null);
        if (result.isCanceled())
            throw new ProcessCanceledException();
        if (result.hasErrors()) {
            final VcsException vcsException = result.composeError();
            throw new AuthenticationException(vcsException.getLocalizedMessage(), vcsException.getCause());
        }
        final List<VcsException> errors = errorProcessor.getErrors();
        if (!errors.isEmpty()) {
            final VcsException firstError = errors.get(0);
            throw new AuthenticationException(firstError.getLocalizedMessage(), firstError);
        }
    } finally {
        connection.close();
    }
}
Also used : AuthenticationException(org.netbeans.lib.cvsclient.connection.AuthenticationException) CvsException(com.intellij.cvsSupport2.errorHandling.CvsException) IConnection(org.netbeans.lib.cvsclient.connection.IConnection) CommandException(org.netbeans.lib.cvsclient.command.CommandException) ValidRequestsExpectedException(org.netbeans.lib.cvsclient.ValidRequestsExpectedException) ErrorMessagesProcessor(com.intellij.cvsSupport2.cvsoperations.cvsErrors.ErrorMessagesProcessor) CvsResult(com.intellij.openapi.cvsIntegration.CvsResult) ValidRequestsExpectedException(org.netbeans.lib.cvsclient.ValidRequestsExpectedException) CvsException(com.intellij.cvsSupport2.errorHandling.CvsException) AuthenticationException(org.netbeans.lib.cvsclient.connection.AuthenticationException) ProcessCanceledException(com.intellij.openapi.progress.ProcessCanceledException) VcsException(com.intellij.openapi.vcs.VcsException) CommandException(org.netbeans.lib.cvsclient.command.CommandException) IOException(java.io.IOException) BugLog(org.netbeans.lib.cvsclient.util.BugLog) CvsExecutionEnvironment(com.intellij.cvsSupport2.cvsoperations.common.CvsExecutionEnvironment) GetModulesListOperation(com.intellij.cvsSupport2.cvsoperations.cvsContent.GetModulesListOperation) VcsException(com.intellij.openapi.vcs.VcsException) CvsResultEx(com.intellij.cvsSupport2.CvsResultEx) ReadWriteStatistics(com.intellij.cvsSupport2.javacvsImpl.io.ReadWriteStatistics) ProcessCanceledException(com.intellij.openapi.progress.ProcessCanceledException)

Example 2 with CvsExecutionEnvironment

use of com.intellij.cvsSupport2.cvsoperations.common.CvsExecutionEnvironment in project intellij-community by JetBrains.

the class StickyHeadGetter method getBranchHeadRevision.

@Nullable
protected String getBranchHeadRevision(final VirtualFile parent, final String name, final Convertor<CvsRevisionNumber, Boolean> chooser) {
    final LocalPathIndifferentLogOperation operation = new LocalPathIndifferentLogOperation(new File(parent.getPath(), name));
    final Ref<Boolean> logSuccess = new Ref<>(Boolean.TRUE);
    final CvsExecutionEnvironment cvsExecutionEnvironment = new CvsExecutionEnvironment(new CvsMessagesAdapter(), CvsExecutionEnvironment.DUMMY_STOPPER, new ErrorProcessor() {

        public void addError(VcsException ex) {
            logSuccess.set(Boolean.FALSE);
        }

        public List<VcsException> getErrors() {
            return null;
        }
    }, PostCvsActivity.DEAF, myProject);
    try {
        // should already be logged in
        //operation.login(context);
        operation.execute(cvsExecutionEnvironment, false);
    } catch (VcsException | CommandAbortedException e) {
    //
    }
    if (Boolean.TRUE.equals(logSuccess.get())) {
        return extractRevision(operation, chooser);
    }
    return null;
}
Also used : ErrorProcessor(com.intellij.cvsSupport2.cvsoperations.cvsErrors.ErrorProcessor) Ref(com.intellij.openapi.util.Ref) LocalPathIndifferentLogOperation(com.intellij.cvsSupport2.cvsoperations.cvsLog.LocalPathIndifferentLogOperation) CvsExecutionEnvironment(com.intellij.cvsSupport2.cvsoperations.common.CvsExecutionEnvironment) CommandAbortedException(org.netbeans.lib.cvsclient.command.CommandAbortedException) VcsException(com.intellij.openapi.vcs.VcsException) CvsMessagesAdapter(com.intellij.cvsSupport2.cvsoperations.cvsMessages.CvsMessagesAdapter) List(java.util.List) VirtualFile(com.intellij.openapi.vfs.VirtualFile) File(java.io.File) Nullable(org.jetbrains.annotations.Nullable)

Example 3 with CvsExecutionEnvironment

use of com.intellij.cvsSupport2.cvsoperations.common.CvsExecutionEnvironment in project intellij-community by JetBrains.

the class GetAllBranchesOperation method createCommand.

protected Command createCommand(CvsRootProvider root, CvsExecutionEnvironment cvsExecutionEnvironment) {
    final RlogCommand command = new RlogCommand();
    command.setModuleName(myModuleName);
    // TODO[yole]: it would be best to implement smarter handling similar to LoadHistoryOperation, but it's too cumbersome without a major refactoring
    // see IDEADEV-14276
    command.setSuppressEmptyHeaders(false);
    return command;
}
Also used : RlogCommand(com.intellij.cvsSupport2.cvsoperations.cvsLog.RlogCommand)

Example 4 with CvsExecutionEnvironment

use of com.intellij.cvsSupport2.cvsoperations.common.CvsExecutionEnvironment in project intellij-community by JetBrains.

the class CvsCommandOperation method execute.

public void execute(final CvsRootProvider root, final CvsExecutionEnvironment executionEnvironment, IConnection connection, IProgressViewer progressViewer) throws CommandException {
    final Command command = createCommand(root, executionEnvironment);
    if (command == null)
        return;
    LOG.assertTrue(connection != null, root.getCvsRootAsString());
    final CvsMessagesListener cvsMessagesListener = executionEnvironment.getCvsMessagesListener();
    final long start = System.currentTimeMillis();
    try {
        final IClientEnvironment clientEnvironment = createEnvironment(connection, root, myUpdatedFilesManager, executionEnvironment);
        myUpdatedFilesManager.setCvsFileSystem(clientEnvironment.getCvsFileSystem());
        final EventManager eventManager = new EventManager(CvsApplicationLevelConfiguration.getCharset());
        final IGlobalOptions globalOptions = command.getGlobalOptions();
        final IRequestProcessor requestProcessor = new RequestProcessor(clientEnvironment, globalOptions, eventManager, new StreamLogger(), executionEnvironment.getCvsCommandStopper(), PServerCvsSettings.getTimeoutMillis());
        eventManager.addFileInfoListener(this);
        eventManager.addEntryListener(this);
        eventManager.addMessageListener(this);
        eventManager.addModuleExpansionListener(this);
        final CvsMessagesTranslator cvsMessagesTranslator = new CvsMessagesTranslator(cvsMessagesListener, clientEnvironment.getCvsFileSystem(), myUpdatedFilesManager, root.getCvsRootAsString());
        cvsMessagesTranslator.registerTo(eventManager);
        final CvsEntriesManager cvsEntriesManager = CvsEntriesManager.getInstance();
        if (shouldMakeChangesOnTheLocalFileSystem()) {
            eventManager.addEntryListener(new MergeSupportingEntryListener(clientEnvironment, cvsEntriesManager, myUpdatedFilesManager));
            eventManager.addMessageListener(myUpdatedFilesManager);
        }
        modifyOptions(command.getGlobalOptions());
        final String commandString = composeCommandString(root, command);
        cvsMessagesListener.commandStarted(commandString);
        setProgressText(CvsBundle.message("progress.text.command.running.for.file", getOperationName(), root.getCvsRootAsString()));
        try {
            command.execute(requestProcessor, eventManager, eventManager, clientEnvironment, progressViewer);
        } catch (AuthenticationException e) {
            throw root.processException(new CommandException(e, "Authentication problem"));
        }
        cvsMessagesTranslator.operationCompleted();
    } catch (CommandException t) {
        throw root.processException(t);
    } finally {
        cvsMessagesListener.commandFinished(composeCommandString(root, command), System.currentTimeMillis() - start);
        executeFinishActions();
    }
}
Also used : IRequestProcessor(org.netbeans.lib.cvsclient.IRequestProcessor) AuthenticationException(org.netbeans.lib.cvsclient.connection.AuthenticationException) IgnoreFileFilterBasedOnCvsEntriesManager(com.intellij.cvsSupport2.cvsIgnore.IgnoreFileFilterBasedOnCvsEntriesManager) CvsEntriesManager(com.intellij.cvsSupport2.application.CvsEntriesManager) CvsMessagesTranslator(com.intellij.cvsSupport2.cvsoperations.cvsMessages.CvsMessagesTranslator) IClientEnvironment(org.netbeans.lib.cvsclient.IClientEnvironment) CvsMessagesListener(com.intellij.cvsSupport2.cvsoperations.cvsMessages.CvsMessagesListener) RequestProcessor(org.netbeans.lib.cvsclient.RequestProcessor) IRequestProcessor(org.netbeans.lib.cvsclient.IRequestProcessor)

Example 5 with CvsExecutionEnvironment

use of com.intellij.cvsSupport2.cvsoperations.common.CvsExecutionEnvironment in project intellij-community by JetBrains.

the class CvsCommandOperation method doExecute.

private void doExecute(final CvsExecutionEnvironment executionEnvironment, boolean underReadAction) throws VcsException {
    final VcsException[] exc = new VcsException[1];
    final Runnable action = () -> {
        try {
            final ReadWriteStatistics statistics = executionEnvironment.getReadWriteStatistics();
            final Collection<CvsRootProvider> allCvsRoots;
            try {
                allCvsRoots = getAllCvsRoots();
            } catch (CannotFindCvsRootException e) {
                throw createVcsExceptionOn(e, null);
            }
            final IProgressViewer progressViewer = new IProgressViewer() {

                @Override
                public void setProgress(double value) {
                    final ProgressIndicator progressIndicator = ProgressManager.getInstance().getProgressIndicator();
                    if (progressIndicator != null)
                        progressIndicator.setFraction(value);
                }
            };
            int count = 0;
            final double step = 1.0 / allCvsRoots.size();
            for (CvsRootProvider cvsRootProvider : allCvsRoots) {
                try {
                    final double lowerBound = step * count;
                    final RangeProgressViewer partialProgress = new RangeProgressViewer(progressViewer, lowerBound, lowerBound + step);
                    myLastProcessedCvsRoot = cvsRootProvider.getCvsRootAsString();
                    execute(cvsRootProvider, executionEnvironment, statistics, partialProgress);
                    count++;
                } catch (IOCommandException e) {
                    LOG.info(e);
                    throw createVcsExceptionOn(e.getIOException(), cvsRootProvider.getCvsRootAsString());
                } catch (CommandException e) {
                    LOG.info(e);
                    final Exception underlyingException = e.getUnderlyingException();
                    if (underlyingException != null) {
                        LOG.info(underlyingException);
                    }
                    throw createVcsExceptionOn(underlyingException == null ? e : underlyingException, cvsRootProvider.getCvsRootAsString());
                }
            }
        } catch (VcsException e) {
            exc[0] = e;
        }
    };
    if (underReadAction) {
        ApplicationManager.getApplication().runReadAction(action);
    } else {
        action.run();
    }
    if (exc[0] != null)
        throw exc[0];
}
Also used : IProgressViewer(org.netbeans.lib.cvsclient.progress.IProgressViewer) CannotFindCvsRootException(com.intellij.cvsSupport2.errorHandling.CannotFindCvsRootException) CvsException(com.intellij.cvsSupport2.errorHandling.CvsException) AuthenticationException(org.netbeans.lib.cvsclient.connection.AuthenticationException) VcsException(com.intellij.openapi.vcs.VcsException) CannotFindCvsRootException(com.intellij.cvsSupport2.errorHandling.CannotFindCvsRootException) ProgressIndicator(com.intellij.openapi.progress.ProgressIndicator) VcsException(com.intellij.openapi.vcs.VcsException) RangeProgressViewer(org.netbeans.lib.cvsclient.progress.RangeProgressViewer) Collection(java.util.Collection) CvsRootProvider(com.intellij.cvsSupport2.connections.CvsRootProvider)

Aggregations

VcsException (com.intellij.openapi.vcs.VcsException)4 CvsRootProvider (com.intellij.cvsSupport2.connections.CvsRootProvider)3 CvsException (com.intellij.cvsSupport2.errorHandling.CvsException)3 VirtualFile (com.intellij.openapi.vfs.VirtualFile)3 File (java.io.File)3 AuthenticationException (org.netbeans.lib.cvsclient.connection.AuthenticationException)3 CvsExecutionEnvironment (com.intellij.cvsSupport2.cvsoperations.common.CvsExecutionEnvironment)2 RlogCommand (com.intellij.cvsSupport2.cvsoperations.cvsLog.RlogCommand)2 IClientEnvironment (org.netbeans.lib.cvsclient.IClientEnvironment)2 CheckoutCommand (org.netbeans.lib.cvsclient.command.checkout.CheckoutCommand)2 CvsResultEx (com.intellij.cvsSupport2.CvsResultEx)1 CvsEntriesManager (com.intellij.cvsSupport2.application.CvsEntriesManager)1 IgnoreFileFilterBasedOnCvsEntriesManager (com.intellij.cvsSupport2.cvsIgnore.IgnoreFileFilterBasedOnCvsEntriesManager)1 GetModulesListOperation (com.intellij.cvsSupport2.cvsoperations.cvsContent.GetModulesListOperation)1 ErrorMessagesProcessor (com.intellij.cvsSupport2.cvsoperations.cvsErrors.ErrorMessagesProcessor)1 ErrorProcessor (com.intellij.cvsSupport2.cvsoperations.cvsErrors.ErrorProcessor)1 LocalPathIndifferentLogOperation (com.intellij.cvsSupport2.cvsoperations.cvsLog.LocalPathIndifferentLogOperation)1 CvsMessagesAdapter (com.intellij.cvsSupport2.cvsoperations.cvsMessages.CvsMessagesAdapter)1 CvsMessagesListener (com.intellij.cvsSupport2.cvsoperations.cvsMessages.CvsMessagesListener)1 CvsMessagesTranslator (com.intellij.cvsSupport2.cvsoperations.cvsMessages.CvsMessagesTranslator)1