Merge "Introduce OAuth scope description"
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 07fc694..a26e1fc 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
@@ -67,7 +67,7 @@
public GHMyself getMyself() throws IOException {
if (isLoggedIn()) {
- return getHub().getMyself();
+ return new GitHubMyselfWrapper(getHub().getMyself());
}
return null;
}
diff --git a/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/GitHubMyselfWrapper.java b/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/GitHubMyselfWrapper.java
new file mode 100644
index 0000000..2336521
--- /dev/null
+++ b/github-oauth/src/main/java/com/googlesource/gerrit/plugins/github/oauth/GitHubMyselfWrapper.java
@@ -0,0 +1,286 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.googlesource.gerrit.plugins.github.oauth;
+
+import com.infradna.tool.bridge_method_injector.WithBridgeMethods;
+import java.io.IOException;
+import java.net.URL;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import org.kohsuke.github.GHEmail;
+import org.kohsuke.github.GHEventInfo;
+import org.kohsuke.github.GHGist;
+import org.kohsuke.github.GHKey;
+import org.kohsuke.github.GHMyself;
+import org.kohsuke.github.GHOrganization;
+import org.kohsuke.github.GHPersonSet;
+import org.kohsuke.github.GHRepository;
+import org.kohsuke.github.GHTeam;
+import org.kohsuke.github.GHUser;
+import org.kohsuke.github.GHVerifiedKey;
+import org.kohsuke.github.PagedIterable;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class GitHubMyselfWrapper extends GHMyself {
+ private static final Logger log = LoggerFactory.getLogger(GitHubMyselfWrapper.class);
+
+ private final GHMyself wrapped;
+
+ public GitHubMyselfWrapper(GHMyself wrapped) {
+ this.wrapped = wrapped;
+ }
+
+ @Override
+ public List<String> getEmails() throws IOException {
+ return wrapped.getEmails();
+ }
+
+ @Override
+ public List<GHEmail> getEmails2() throws IOException {
+ return wrapped.getEmails2();
+ }
+
+ @Override
+ public List<GHKey> getPublicKeys() throws IOException {
+ return wrapped.getPublicKeys();
+ }
+
+ @Override
+ public List<GHVerifiedKey> getPublicVerifiedKeys() throws IOException {
+ return wrapped.getPublicVerifiedKeys();
+ }
+
+ @Override
+ public GHPersonSet<GHOrganization> getAllOrganizations() throws IOException {
+ try {
+ return wrapped.getAllOrganizations();
+ } catch (IOException e) {
+ log.warn("Unable to list all organizations for user {}", getLogin(), e);
+ return new GHPersonSet<>();
+ }
+ }
+
+ @Override
+ public Map<String, GHRepository> getAllRepositories() throws IOException {
+ return wrapped.getAllRepositories();
+ }
+
+ @Override
+ public PagedIterable<GHRepository> listRepositories() {
+ return wrapped.listRepositories();
+ }
+
+ @Override
+ public PagedIterable<GHRepository> listRepositories(int pageSize) {
+ return wrapped.listRepositories(pageSize);
+ }
+
+ @Override
+ public PagedIterable<GHRepository> listRepositories(int pageSize, RepositoryListFilter repoType) {
+ return wrapped.listRepositories(pageSize, repoType);
+ }
+
+ @Override
+ public PagedIterable<GHRepository> listAllRepositories() {
+ return wrapped.listAllRepositories();
+ }
+
+ @Override
+ public void follow() throws IOException {
+ wrapped.follow();
+ }
+
+ @Override
+ public void unfollow() throws IOException {
+ wrapped.unfollow();
+ }
+
+ @Override
+ @WithBridgeMethods({Set.class})
+ public GHPersonSet<GHUser> getFollows() throws IOException {
+ return wrapped.getFollows();
+ }
+
+ @Override
+ @WithBridgeMethods({Set.class})
+ public GHPersonSet<GHUser> getFollowers() throws IOException {
+ return wrapped.getFollowers();
+ }
+
+ @Override
+ public PagedIterable<GHRepository> listSubscriptions() {
+ return wrapped.listSubscriptions();
+ }
+
+ @Override
+ public boolean isMemberOf(GHOrganization org) {
+ return wrapped.isMemberOf(org);
+ }
+
+ @Override
+ public boolean isMemberOf(GHTeam team) {
+ return wrapped.isMemberOf(team);
+ }
+
+ @Override
+ public boolean isPublicMemberOf(GHOrganization org) {
+ return wrapped.isPublicMemberOf(org);
+ }
+
+ @Override
+ @WithBridgeMethods({Set.class})
+ public GHPersonSet<GHOrganization> getOrganizations() throws IOException {
+ try {
+ return wrapped.getOrganizations();
+ } catch (IOException e) {
+ log.warn("Unable to list organizations for user {}", getLogin(), e);
+ return new GHPersonSet<>();
+ }
+ }
+
+ @Override
+ public PagedIterable<GHEventInfo> listEvents() throws IOException {
+ return wrapped.listEvents();
+ }
+
+ @Override
+ public PagedIterable<GHGist> listGists() throws IOException {
+ return wrapped.listGists();
+ }
+
+ @Override
+ public String toString() {
+ return wrapped.toString();
+ }
+
+ @Override
+ public int hashCode() {
+ return wrapped.hashCode();
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ return wrapped.equals(obj);
+ }
+
+ @Override
+ public Map<String, GHRepository> getRepositories() throws IOException {
+ return wrapped.getRepositories();
+ }
+
+ @Override
+ public Iterable<List<GHRepository>> iterateRepositories(int pageSize) {
+ return wrapped.iterateRepositories(pageSize);
+ }
+
+ @Override
+ public GHRepository getRepository(String name) throws IOException {
+ return wrapped.getRepository(name);
+ }
+
+ @Override
+ public String getGravatarId() {
+ return wrapped.getGravatarId();
+ }
+
+ @Override
+ public String getAvatarUrl() {
+ return wrapped.getAvatarUrl();
+ }
+
+ @Override
+ public String getLogin() {
+ return wrapped.getLogin();
+ }
+
+ @Override
+ public String getName() throws IOException {
+ return wrapped.getName();
+ }
+
+ @Override
+ public String getCompany() throws IOException {
+ return wrapped.getCompany();
+ }
+
+ @Override
+ public String getLocation() throws IOException {
+ return wrapped.getLocation();
+ }
+
+ @Override
+ public Date getCreatedAt() throws IOException {
+ return wrapped.getCreatedAt();
+ }
+
+ @Override
+ public Date getUpdatedAt() throws IOException {
+ return wrapped.getUpdatedAt();
+ }
+
+ @Override
+ public String getBlog() throws IOException {
+ return wrapped.getBlog();
+ }
+
+ @Override
+ public URL getHtmlUrl() {
+ return wrapped.getHtmlUrl();
+ }
+
+ @Override
+ public String getEmail() throws IOException {
+ return wrapped.getEmail();
+ }
+
+ @Override
+ public int getPublicGistCount() throws IOException {
+ return wrapped.getPublicGistCount();
+ }
+
+ @Override
+ public int getPublicRepoCount() throws IOException {
+ return wrapped.getPublicRepoCount();
+ }
+
+ @Override
+ public int getFollowingCount() throws IOException {
+ return wrapped.getFollowingCount();
+ }
+
+ @Override
+ public int getFollowersCount() throws IOException {
+ return wrapped.getFollowersCount();
+ }
+
+ @Override
+ @WithBridgeMethods(
+ value = {String.class},
+ adapterMethod = "urlToString")
+ public URL getUrl() {
+ return wrapped.getUrl();
+ }
+
+ @Override
+ @WithBridgeMethods(
+ value = {String.class},
+ adapterMethod = "intToString")
+ public int getId() {
+ return wrapped.getId();
+ }
+}