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));
}
}