public void updateIndex( int id, MavenServerSettings settings, MavenServerProgressIndicator indicator) throws MavenServerIndexerException, MavenServerProcessCanceledException, RemoteException { IndexingContext index = getIndex(id); try { 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(); } } } catch (RuntimeRemoteException e) { throw e.getCause(); } catch (ProcessCanceledException e) { throw new MavenServerProcessCanceledException(); } catch (Exception e) { throw new MavenServerIndexerException(wrapException(e)); } }
public void releaseIndex(int id) throws MavenServerIndexerException { try { myIndexer.removeIndexingContext(getIndex(id), false); } catch (Exception e) { throw new MavenServerIndexerException(wrapException(e)); } }
public static void addArtifact( NexusIndexer indexer, IndexingContext index, ArtifactContext artifactContext) throws IOException, NoSuchMethodException, IllegalAccessException, InvocationTargetException { indexer.addArtifactToIndex(artifactContext, index); // this hack is necessary to invalidate searcher's and reader's cache (may not be required then // lucene or nexus library change Method m = index.getClass().getDeclaredMethod("closeReaders"); m.setAccessible(true); m.invoke(index); }
public int createIndex( @NotNull String indexId, @NotNull String repositoryId, @Nullable File file, @Nullable String url, @NotNull File indexDir) throws MavenServerIndexerException { try { IndexingContext context = myIndexer.addIndexingContextForced( indexId, repositoryId, file, indexDir, url, null, // repo update url NexusIndexer.FULL_INDEX); int id = System.identityHashCode(context); myIndices.put(id, context); return id; } catch (Exception e) { throw new MavenServerIndexerException(wrapException(e)); } }
public int getIndexCount() { return myIndexer.getIndexingContexts().size(); }