Merge changes I41fc3d14,I2e0a598c
* changes:
ExternalUser: Allow specifying a PropertyMap
Expose email addresses for ExternalUsers
diff --git a/java/com/google/gerrit/server/CurrentUser.java b/java/com/google/gerrit/server/CurrentUser.java
index c85c389..afbc74e 100644
--- a/java/com/google/gerrit/server/CurrentUser.java
+++ b/java/com/google/gerrit/server/CurrentUser.java
@@ -130,6 +130,14 @@
}
/**
+ * Returns all email addresses associated with this user. For {@link AnonymousUser} and other
+ * users that don't represent a person user or service account, this set will be empty.
+ */
+ public ImmutableSet<String> getEmailAddresses() {
+ return ImmutableSet.of();
+ }
+
+ /**
* Returns all {@link ExternalId.Key}s associated with this user. For {@link AnonymousUser} and
* other users that don't represent a person user or service account, this set will be empty.
*/
diff --git a/java/com/google/gerrit/server/ExternalUser.java b/java/com/google/gerrit/server/ExternalUser.java
index d1611d8..9680f3e 100644
--- a/java/com/google/gerrit/server/ExternalUser.java
+++ b/java/com/google/gerrit/server/ExternalUser.java
@@ -37,22 +37,36 @@
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
public interface Factory {
- ExternalUser create(Collection<ExternalId.Key> externalIdKeys);
+ ExternalUser create(
+ Collection<String> emailAddresses,
+ Collection<ExternalId.Key> externalIdKeys,
+ PropertyMap propertyMap);
}
private final GroupBackend groupBackend;
+ private final ImmutableSet<String> emailAddresses;
private final ImmutableSet<ExternalId.Key> externalIdKeys;
private GroupMembership effectiveGroups;
@Inject
public ExternalUser(
- GroupBackend groupBackend, @Assisted Collection<ExternalId.Key> externalIdKeys) {
+ GroupBackend groupBackend,
+ @Assisted Collection<String> emailAddresses,
+ @Assisted Collection<ExternalId.Key> externalIdKeys,
+ @Assisted PropertyMap propertyMap) {
+ super(propertyMap);
this.groupBackend = groupBackend;
+ this.emailAddresses = ImmutableSet.copyOf(emailAddresses);
this.externalIdKeys = ImmutableSet.copyOf(externalIdKeys);
}
@Override
+ public ImmutableSet<String> getEmailAddresses() {
+ return emailAddresses;
+ }
+
+ @Override
public ImmutableSet<ExternalId.Key> getExternalIdKeys() {
return externalIdKeys;
}
diff --git a/java/com/google/gerrit/server/IdentifiedUser.java b/java/com/google/gerrit/server/IdentifiedUser.java
index ca86434..34f0eb5 100644
--- a/java/com/google/gerrit/server/IdentifiedUser.java
+++ b/java/com/google/gerrit/server/IdentifiedUser.java
@@ -382,6 +382,7 @@
return false;
}
+ @Override
public ImmutableSet<String> getEmailAddresses() {
if (!loadedAllEmails) {
validEmails.addAll(realm.getEmailAddresses(this));
diff --git a/javatests/com/google/gerrit/acceptance/server/permissions/ExternalUserPermissionIT.java b/javatests/com/google/gerrit/acceptance/server/permissions/ExternalUserPermissionIT.java
index ac79970..9e4907c 100644
--- a/javatests/com/google/gerrit/acceptance/server/permissions/ExternalUserPermissionIT.java
+++ b/javatests/com/google/gerrit/acceptance/server/permissions/ExternalUserPermissionIT.java
@@ -41,6 +41,7 @@
import com.google.gerrit.extensions.restapi.AuthException;
import com.google.gerrit.server.CurrentUser;
import com.google.gerrit.server.ExternalUser;
+import com.google.gerrit.server.PropertyMap;
import com.google.gerrit.server.account.GroupBackend;
import com.google.gerrit.server.account.GroupMembership;
import com.google.gerrit.server.account.externalids.ExternalId;
@@ -293,6 +294,8 @@
ExternalUser createUserInGroup(String userId, String groupId) {
return externalUserFactory.create(
- ImmutableSet.of(ExternalId.Key.parse("company-auth:" + groupId + "-" + userId)));
+ ImmutableSet.of(),
+ ImmutableSet.of(ExternalId.Key.parse("company-auth:" + groupId + "-" + userId)),
+ PropertyMap.EMPTY);
}
}