package org.carlspring.strongbox.storage.indexing; import java.io.IOException; import org.apache.maven.index.ArtifactContext; import org.apache.maven.index.ArtifactScanningListener; import org.apache.maven.index.Indexer; import org.apache.maven.index.ScanningResult; import org.apache.maven.index.context.IndexingContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import static java.util.Arrays.asList; /** * @author carlspring */ public class ReindexArtifactScanningListener implements ArtifactScanningListener { private static final Logger logger = LoggerFactory.getLogger(ReindexArtifactScanningListener.class); private int totalFiles; private IndexingContext context; private Indexer indexer; public ReindexArtifactScanningListener(Indexer indexer) { this.indexer = indexer; } @Override public void scanningStarted(final IndexingContext context) { this.context = context; } @Override public void scanningFinished(final IndexingContext context, final ScanningResult result) { result.setTotalFiles(totalFiles); logger.debug("Scanning finished; total files: {}; has exception: {}", result.getTotalFiles(), result.hasExceptions()); } @Override public void artifactError(final ArtifactContext ac, final Exception ex) { logger.error(ex.getMessage(), ex); } @Override public void artifactDiscovered(final ArtifactContext ac) { try { logger.debug("Adding artifact: {}; ctx id: {}; idx dir: {}", new String[]{ ac.getGav() .getGroupId() + ":" + ac.getGav() .getArtifactId() + ":" + ac.getGav() .getVersion() + ":" + ac.getGav() .getVersion() + ":" + ac.getGav() .getClassifier() + ":" + ac.getGav() .getExtension(), context.getId(), context.getIndexDirectory().toString() }); getIndexer().addArtifactsToIndex(asList(ac), context); totalFiles++; } catch (IOException ex) { logger.error("Artifact index error", ex); } } public Indexer getIndexer() { return indexer; } public void setIndexer(Indexer indexer) { this.indexer = indexer; } }