public void updateIndex()

in maven2-server-impl/src/org/jetbrains/idea/maven/server/embedder/Maven2ServerIndexerImpl.java [116:184]


  public void updateIndex(MavenIndexId mavenIndexId, MavenServerSettings settings,
                          MavenServerProgressIndicator indicator, MavenToken token)
          throws MavenServerIndexerException, MavenServerProcessCanceledException, RemoteException {
    MavenServerUtil.checkToken(token);

    try {
      final IndexingContext index = getIndex(mavenIndexId);
      synchronized (index) {
        if (isLocal(index)) {
          File repository = index.getRepository();

          if (repository != null && repository.exists()) {
            indicator.setIndeterminate(true);
            try {
              myIndexer.scan(index, new MyScanningListener(indicator), false);
            }
            finally {
              indicator.setIndeterminate(false);
            }
          }
        }
        else {
          IndexUpdateRequest request = new IndexUpdateRequest(index);
          Maven2ServerEmbedderImpl embedder = Maven2ServerEmbedderImpl.create(settings);
          try {
            request.setResourceFetcher(new Maven2ServerIndexFetcher(index.getRepositoryId(),
                                                                    index.getRepositoryUrl(),
                                                                    embedder.getComponent(WagonManager.class),
                                                                    new TransferListenerAdapter(indicator) {
                                                                      @Override
                                                                      protected void downloadProgress(long downloaded, long total) {
                                                                        super.downloadProgress(downloaded, total);
                                                                        try {
                                                                          myIndicator.setFraction(((double)downloaded) / total);
                                                                        }
                                                                        catch (RemoteException e) {
                                                                          throw new RuntimeRemoteException(e);
                                                                        }
                                                                      }

                                                                      @Override
                                                                      public void transferCompleted(TransferEvent event) {
                                                                        super.transferCompleted(event);
                                                                        try {
                                                                          myIndicator.setText2("Processing indices...");
                                                                        }
                                                                        catch (RemoteException e) {
                                                                          throw new RuntimeRemoteException(e);
                                                                        }
                                                                      }
                                                                    }));
            myUpdater.fetchAndUpdateIndex(request);
          }
          finally {
            embedder.release(token);
          }
        }
      }
    }
    catch (RuntimeRemoteException e) {
      throw e.getCause();
    }
    catch (MavenProcessCanceledRuntimeException e) {
      throw new MavenServerProcessCanceledException();
    }
    catch (Exception e) {
      throw new MavenServerIndexerException(wrapException(e));
    }
  }