All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.gooddata.project.Invitation Maven / Gradle / Ivy

/*
 * Copyright (C) 2004-2017, GoodData(R) Corporation. All rights reserved.
 * This source code is licensed under the BSD-style license found in the
 * LICENSE.txt file in the root directory of this source tree.
 */
package com.gooddata.project;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.JsonTypeName;
import com.gooddata.md.Meta;
import com.gooddata.util.GoodDataToStringBuilder;

import static com.gooddata.util.Validate.notEmpty;

/**
 * Project invitation
 */
@JsonTypeName("invitation")
@JsonTypeInfo(include = JsonTypeInfo.As.WRAPPER_OBJECT, use = JsonTypeInfo.Id.NAME)
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Invitation {

    private final InvitationContent content;

    private final Meta meta;

    private Invitation(final InvitationContent content, final Meta meta) {
        this.meta = meta;
        this.content = content;
    }

    public Invitation(final String email) {
        this(new InvitationContent(email), null);
    }

    @JsonProperty // because getter is private
    private InvitationContent getContent() {
        return content;
    }

    public Meta getMeta() {
        return meta;
    }

    @JsonIgnore
    public String getEmail() {
        return content != null ? content.getEmail() : null;
    }

    @Override
    public String toString() {
        return GoodDataToStringBuilder.defaultToString(this);
    }

    @JsonIgnoreProperties(ignoreUnknown = true)
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private static class InvitationContent {

        private final String email;

        private InvitationContent(final String email) {
            this.email = notEmpty(email, "email");
        }

        public String getEmail() {
            return email;
        }

        @Override
        public String toString() {
            return GoodDataToStringBuilder.defaultToString(this);
        }

    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy