in indexer-core/src/main/java/org/apache/maven/index/DefaultScannerListener.java [213:269]
private void removeDeletedArtifacts(IndexingContext context, ScanningResult result, String contextPath)
throws IOException {
int deleted = 0;
final IndexSearcher indexSearcher = context.acquireIndexSearcher();
try {
for (String uinfo : uinfos) {
TopScoreDocCollector collector = TopScoreDocCollector.create(1, Integer.MAX_VALUE);
indexSearcher.search(new TermQuery(new Term(ArtifactInfo.UINFO, uinfo)), collector);
if (collector.getTotalHits() > 0) {
String[] ra = ArtifactInfo.FS_PATTERN.split(uinfo);
ArtifactInfo ai = new ArtifactInfo();
ai.setRepository(context.getRepositoryId());
ai.setGroupId(ra[0]);
ai.setArtifactId(ra[1]);
ai.setVersion(ra[2]);
if (ra.length > 3) {
ai.setClassifier(ArtifactInfo.renvl(ra[3]));
}
if (ra.length > 4) {
ai.setPackaging(ArtifactInfo.renvl(ra[4]));
}
// minimal ArtifactContext for removal
ArtifactContext ac = new ArtifactContext(null, null, null, ai, ai.calculateGav());
for (int i = 0; i < collector.getTotalHits(); i++) {
if (contextPath == null
|| context.getGavCalculator()
.gavToPath(ac.getGav())
.startsWith(contextPath)) {
indexerEngine.remove(context, ac);
}
deleted++;
}
}
}
} finally {
context.releaseIndexSearcher(indexSearcher);
}
if (deleted > 0) {
context.commit();
}
result.setDeletedFiles(deleted);
}