private Map<String, Integer> getIndexVersionsFromSolr(SolrClient solrClient, List<String> collections) { Map<String, Integer> ret = new HashMap<>(); SolrRequest request = new SchemaRequest.SchemaName(); try { for (String collection : collections) { NamedList<Object> response = solrClient.request(request, collection); for (Entry<String, Object> entry : response) { String value = entry.getValue().toString(); if ("name".equals(entry.getKey()) && StringUtils.isNotBlank(value)) { String version = value.replaceFirst(".*-", ""); try { ret.put(collection, Integer.parseInt(version)); } catch (NumberFormatException e) { LOGGER.warn("Could not extract version for collection {} from Solr schema name: {}", collection, value, e); } break; } } } } catch (SolrServerException | IOException e) { // do nothing } return ret; }
@Override public String getSchemaName() { return template .execute(solrClient -> new SchemaRequest.SchemaName().process(solrClient, collection).getSchemaName()); }