| // Copyright (C) 2017 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.google.gerrit.extensions.common; |
| |
| import static com.google.common.base.MoreObjects.toStringHelper; |
| |
| import com.google.common.collect.ComparisonChain; |
| import java.util.Objects; |
| |
| /** |
| * Representation of an external ID in the REST API. |
| * |
| * <p>This class determines the JSON format of external IDs in the REST API. |
| * |
| * <p>External IDs are user identities that are assigned to an account. Often they are used to link |
| * user identities in external systems. |
| */ |
| public class AccountExternalIdInfo implements Comparable<AccountExternalIdInfo> { |
| /** The external ID key, formatted as {@code <scheme>:<ID>}. */ |
| public String identity; |
| |
| /** The email address of the external ID. */ |
| public String emailAddress; |
| |
| /** |
| * Whether the external ID is trusted. |
| * |
| * <p>Also see {@link |
| * com.google.gerrit.server.config.AuthConfig#isIdentityTrustable(java.util.Collection)}. |
| */ |
| public Boolean trusted; |
| |
| /** Whether the external ID can be deleted by the calling user. */ |
| public Boolean canDelete; |
| |
| @Override |
| public int compareTo(AccountExternalIdInfo a) { |
| return ComparisonChain.start() |
| .compare(a.identity, identity) |
| .compare(a.emailAddress, emailAddress) |
| .result(); |
| } |
| |
| @Override |
| public boolean equals(Object o) { |
| if (o instanceof AccountExternalIdInfo) { |
| AccountExternalIdInfo a = (AccountExternalIdInfo) o; |
| return Objects.equals(a.identity, identity) |
| && Objects.equals(a.emailAddress, emailAddress) |
| && Objects.equals(a.trusted, trusted) |
| && Objects.equals(a.canDelete, canDelete); |
| } |
| return false; |
| } |
| |
| @Override |
| public int hashCode() { |
| return Objects.hash(identity, emailAddress, trusted, canDelete); |
| } |
| |
| @Override |
| public String toString() { |
| return toStringHelper(this) |
| .add("identity", identity) |
| .add("emailAddress", emailAddress) |
| .add("trusted", trusted) |
| .add("canDelete", canDelete) |
| .toString(); |
| } |
| } |