public DiscoveryResponse discoverLatestVersion(DiscoveryRequest req)
      throws NoSuchRepositoryException, IOException {
    CLvoKey info = req.getLvoKey();

    IndexingContext localContext =
        indexerManager.getRepositoryLocalIndexContext(info.getRepositoryId());
    IndexingContext remoteContext =
        indexerManager.getRepositoryRemoteIndexContext(info.getRepositoryId());

    BooleanQuery bq = new BooleanQuery();
    bq.add(indexerManager.constructQuery(ArtifactInfo.GROUP_ID, info.getGroupId()), Occur.MUST);
    bq.add(
        indexerManager.constructQuery(ArtifactInfo.ARTIFACT_ID, info.getArtifactId()), Occur.MUST);

    // to have sorted results by version in descending order
    FlatSearchRequest sreq = new FlatSearchRequest(bq, ArtifactInfo.REPOSITORY_VERSION_COMPARATOR);

    sreq.getContexts().add(localContext);

    sreq.getContexts().add(remoteContext);

    FlatSearchResponse hits = indexerManager.getNexusIndexer().searchFlat(sreq);

    DiscoveryResponse response = new DiscoveryResponse(req);

    if (hits.getTotalHits() > 0) {
      // found it, they are sorted in descending order, so the 1st one is the newest
      response.setVersion(hits.getResults().iterator().next().version);

      response.setSuccessful(true);
    }

    return response;
  }