in jdtls.ext/com.microsoft.java.maven.plugin/src/main/java/com/microsoft/java/maven/ArtifactSearcher.java [211:258]
public List<ArtifactResult> searchByClassName(String className) {
Map<String, ArtifactResult> r1 = mavenSearcher != null ?
mavenSearcher.searchByClassName(className) : new HashMap<>();
if (r1.size() < 5 && netSearcher != null) {
final Map<String, ArtifactResult> r2 = netSearcher.searchByClassName(className);
r2.putAll(r1); // r1 will override r2 if necessary
r1 = r2;
}
final List<ArtifactResult> result = new ArrayList<>(r1.values());
final List<ArtifactResult> azureResult = new ArrayList<>();
for (final ArtifactResult r : result) {
final String id = r.getGroupId() + ":" + r.getArtifactId();
if (artifactUsageDict.containsKey(id)) {
r.setUsage(artifactUsageDict.get(r.getGroupId() + ":" + r.getArtifactId()));
} else {
r.setUsage(0);
}
if (azureSet.contains(r.getArtifactId())) {
azureResult.add(r);
}
}
// filter
final Iterator<ArtifactResult> it = result.iterator();
while (it.hasNext()) {
final ArtifactResult r = it.next();
if (r.getKind() == ArtifactResult.FUZZY && r.getUsage() < fuzzyResultThreshold) {
it.remove();
}
}
Collections.sort(result, orderByRule); // Top-k instead?
final int starNums = (int) Math.min(Math.round(result.size() / 5.0), 5);
if (!azureResult.isEmpty()) {
final ArtifactResult ar = Collections.min(azureResult, orderByRule);
if (starNums > 1 && !result.subList(0, starNums).contains(ar)) {
result.remove(ar);
result.add(starNums - 1, ar);
}
}
Collections.sort(result.subList(starNums, result.size()), new Comparator<ArtifactResult>() {
@Override
public int compare(ArtifactResult r1, ArtifactResult r2) {
return r1.getClassName().toLowerCase().compareTo(r2.getClassName().toLowerCase());
}
});
return result;
}