Merge "Fix velocity deprecated configuration keys" into stable-3.9
diff --git a/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/GitHubLogin.java b/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/GitHubLogin.java
index adfe5e3..02889a1 100644
--- a/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/GitHubLogin.java
+++ b/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/GitHubLogin.java
@@ -38,6 +38,7 @@
import org.kohsuke.github.GHMyself;
import org.kohsuke.github.GitHub;
import org.kohsuke.github.GitHubBuilder;
+import org.kohsuke.github.HttpException;
import org.kohsuke.github.connector.GitHubConnector;
import org.kohsuke.github.internal.GitHubConnectorHttpConnectorAdapter;
import org.slf4j.Logger;
@@ -75,9 +76,21 @@
return null;
}
- public Set<String> getMyOrganisationsLogins() throws IOException {
+ public Set<String> getMyOrganisationsLogins(String username) throws IOException {
if (isLoggedIn()) {
- return getHub().getMyOrganizations().keySet();
+ try {
+ return getHub().getMyOrganizations().keySet();
+ } catch (HttpException httpException) {
+ if (!httpException.getMessage().contains("You need at least")) {
+ throw httpException;
+ }
+ log.info(
+ "Cannot access organizations for user '{}': falling back to list of public"
+ + " organisations",
+ username);
+
+ return getHub().getUserPublicOrganizations(username).keySet();
+ }
}
return Collections.emptySet();
}
diff --git a/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/OAuthWebFilter.java b/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/OAuthWebFilter.java
index 0bca570..20b80bd 100644
--- a/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/OAuthWebFilter.java
+++ b/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/OAuthWebFilter.java
@@ -131,7 +131,7 @@
String user = myself.getLogin();
updateSecureConfigWithRetry(
- ghLogin.getHub().getMyOrganizations().keySet(), user, ghLogin.getToken().accessToken);
+ ghLogin.getMyOrganisationsLogins(user), user, ghLogin.getToken().accessToken);
}
}
diff --git a/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/group/GitHubGroupsCache.java b/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/group/GitHubGroupsCache.java
index a5301e9..8f9c776 100644
--- a/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/group/GitHubGroupsCache.java
+++ b/github-plugin/src/main/java/com/googlesource/gerrit/plugins/github/group/GitHubGroupsCache.java
@@ -97,7 +97,7 @@
private void loadOrganisations(
String username, OrganizationStructure orgsTeams, GitHubLogin ghLogin) throws IOException {
logger.debug("Getting list of public organisations for user '{}'", username);
- Set<String> organisations = ghLogin.getMyOrganisationsLogins();
+ Set<String> organisations = ghLogin.getMyOrganisationsLogins(username);
for (String org : organisations) {
orgsTeams.put(org, EVERYONE_TEAM_NAME);
}