in src/main/java/org/apache/sling/cli/impl/people/MembersFinder.java [61:110]
public synchronized Set<Member> findMembers() {
final Set<Member> membersReplacementSet = new HashSet<>();
if (lastCheck == 0 || System.currentTimeMillis() > lastCheck + STALENESS_IN_HOURS * 3600 * 1000) {
lastCheck = System.currentTimeMillis();
try (CloseableHttpClient client = HttpClients.createDefault()) {
JsonParser parser = new JsonParser();
Set<String> memberIds;
Set<String> pmcMemberIds;
try (CloseableHttpResponse response = client.execute(new HttpGet(PROJECTS_ENDPOINT))) {
try (InputStream content = response.getEntity().getContent();
InputStreamReader reader = new InputStreamReader(content)) {
if (response.getStatusLine().getStatusCode() != 200) {
throw new IOException("Status line : " + response.getStatusLine());
}
JsonElement jsonElement = parser.parse(reader);
JsonObject json = jsonElement.getAsJsonObject();
JsonObject sling = json.get("projects").getAsJsonObject().get("sling").getAsJsonObject();
memberIds = new HashSet<>();
pmcMemberIds = new HashSet<>();
for (JsonElement member : sling.getAsJsonArray("members")) {
memberIds.add(member.getAsString());
}
for (JsonElement pmcMember : sling.getAsJsonArray("owners")) {
pmcMemberIds.add(pmcMember.getAsString());
}
}
}
try (CloseableHttpResponse response = client.execute(new HttpGet(PEOPLE_ENDPOINT))) {
try (InputStream content = response.getEntity().getContent();
InputStreamReader reader = new InputStreamReader(content)) {
if (response.getStatusLine().getStatusCode() != 200) {
throw new IOException("Status line : " + response.getStatusLine());
}
JsonElement jsonElement = parser.parse(reader);
JsonObject json = jsonElement.getAsJsonObject();
JsonObject people = json.get("people").getAsJsonObject();
for (String id : memberIds) {
String name = people.get(id).getAsJsonObject().get("name").getAsString();
membersReplacementSet.add(new Member(id, name, pmcMemberIds.contains(id)));
}
}
}
members = Collections.unmodifiableSet(membersReplacementSet);
} catch (IOException e) {
LOGGER.error("Unable to retrieve Apache Sling project members.", e);
}
}
return members;
}