diff --git a/forge/src/main/java/org/openjdk/skara/forge/github/GitHubHost.java b/forge/src/main/java/org/openjdk/skara/forge/github/GitHubHost.java index d5ba49572..a64f48b6c 100644 --- a/forge/src/main/java/org/openjdk/skara/forge/github/GitHubHost.java +++ b/forge/src/main/java/org/openjdk/skara/forge/github/GitHubHost.java @@ -196,7 +196,8 @@ private static HostUser asHostUser(JSONObject details) { if (name == null) { name = login; } - return new HostUser(id, login, name); + var email = details.get("email").asString(); + return new HostUser(id, login, name, email); } @Override diff --git a/forge/src/main/java/org/openjdk/skara/forge/gitlab/GitLabHost.java b/forge/src/main/java/org/openjdk/skara/forge/gitlab/GitLabHost.java index 6cb5029a3..f46f5c655 100644 --- a/forge/src/main/java/org/openjdk/skara/forge/gitlab/GitLabHost.java +++ b/forge/src/main/java/org/openjdk/skara/forge/gitlab/GitLabHost.java @@ -114,7 +114,8 @@ private HostUser parseUserDetails(JSONObject details) { var id = details.get("id").asInt(); var username = details.get("username").asString(); var name = details.get("name").asString(); - return new HostUser(id, username, name); + var email = details.get("email").asString(); + return new HostUser(id, username, name, email); } @Override diff --git a/host/src/main/java/org/openjdk/skara/host/HostUser.java b/host/src/main/java/org/openjdk/skara/host/HostUser.java index efe4de25f..a4eecab5d 100644 --- a/host/src/main/java/org/openjdk/skara/host/HostUser.java +++ b/host/src/main/java/org/openjdk/skara/host/HostUser.java @@ -23,6 +23,7 @@ package org.openjdk.skara.host; import java.util.Objects; +import java.util.Optional; import java.util.function.Supplier; public class HostUser { @@ -30,25 +31,43 @@ public class HostUser { private final String username; private final Supplier nameSupplier; private String name; + private String email; - public HostUser(String id, String username, Supplier nameSupplier) { + public HostUser(String id, String username, Supplier nameSupplier, String email) { this.id = id; this.username = username; this.nameSupplier = nameSupplier; + this.email = email; + } + + public HostUser(String id, String username, Supplier nameSupplier) { + this(id, username, nameSupplier, null); } public HostUser(String id, String username, String name) { this(id, username, () -> name); } + public HostUser(String id, String username, String name, String email) { + this(id, username, () -> name, email); + } + public HostUser(int id, String username, String name) { this(String.valueOf(id), username, name); } + public HostUser(int id, String username, String name, String email) { + this(String.valueOf(id), username, name, email); + } + public HostUser(int id, String username, Supplier nameSupplier) { this(String.valueOf(id), username, nameSupplier); } + public HostUser(int id, String username, Supplier nameSupplier, String email) { + this(String.valueOf(id), username, nameSupplier, email); + } + @Override public boolean equals(Object o) { if (this == o) { @@ -82,6 +101,10 @@ public String fullName() { return name; } + public Optional email() { + return Optional.ofNullable(email); + } + @Override public String toString() { return "HostUserDetails{" +