com.google.gerrit.client.account.ExternalIdInfo.java Source code

Java tutorial

Introduction

Here is the source code for com.google.gerrit.client.account.ExternalIdInfo.java

Source

// 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.client.account;

import com.google.gerrit.client.auth.openid.OpenIdUtil;
import com.google.gerrit.common.auth.openid.OpenIdUrls;
import com.google.gerrit.extensions.client.AuthType;
import com.google.gwt.core.client.JavaScriptObject;

public class ExternalIdInfo extends JavaScriptObject implements Comparable<ExternalIdInfo> {
    /**
     * Scheme used for {@link AuthType#LDAP}, {@link AuthType#CLIENT_SSL_CERT_LDAP}, {@link
     * AuthType#HTTP_LDAP}, and {@link AuthType#LDAP_BIND} usernames.
     *
     * <p>The name {@code gerrit:} was a very poor choice.
     */
    private static final String SCHEME_GERRIT = "gerrit:";

    /** Scheme used to represent only an email address. */
    private static final String SCHEME_MAILTO = "mailto:";

    /** Scheme for the username used to authenticate an account, e.g. over SSH. */
    private static final String SCHEME_USERNAME = "username:";

    public final native String identity() /*-{ return this.identity; }-*/;

    public final native String emailAddress() /*-{ return this.email_address; }-*/;

    public final native boolean isTrusted() /*-{ return this['trusted'] ? true : false; }-*/;

    public final native boolean canDelete() /*-{ return this['can_delete'] ? true : false; }-*/;

    public final boolean isUsername() {
        return isScheme(SCHEME_USERNAME);
    }

    public final String describe() {
        if (isScheme(SCHEME_GERRIT)) {
            // A local user identity should just be itself.
            return getSchemeRest();
        } else if (isScheme(SCHEME_USERNAME)) {
            // A local user identity should just be itself.
            return getSchemeRest();
        } else if (isScheme(SCHEME_MAILTO)) {
            // Describe a mailto address as just its email address,
            // which is already shown in the email address field.
            return "";
        } else if (isScheme(OpenIdUrls.URL_LAUNCHPAD)) {
            return OpenIdUtil.C.nameLaunchpad();
        } else if (isScheme(OpenIdUrls.URL_YAHOO)) {
            return OpenIdUtil.C.nameYahoo();
        }

        return identity();
    }

    @Override
    public final int compareTo(ExternalIdInfo a) {
        return emailOf(this).compareTo(emailOf(a));
    }

    private boolean isScheme(String scheme) {
        return identity() != null && identity().startsWith(scheme);
    }

    private String getSchemeRest() {
        int colonIdx = identity().indexOf(':');
        String scheme = (colonIdx > 0) ? identity().substring(0, colonIdx) : null;
        return scheme != null ? identity().substring(scheme.length() + 1) : null;
    }

    private String emailOf(ExternalIdInfo a) {
        return a.emailAddress() != null ? a.emailAddress() : "";
    }

    protected ExternalIdInfo() {
    }
}