package com.kryptnostic.directory.v1.model.request; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; import com.google.common.base.Optional; import com.kryptnostic.directory.v1.principal.User; import com.kryptnostic.kodex.v1.constants.Names; import com.kryptnostic.kodex.v1.models.UserAttributes; /** * Request to update {@link User} data. * * @author Matthew Tamayo-Rios <matthew@kryptnostic.com> * */ public final class UpdateUserRequest { private final Optional<String> email; private final Optional<String> name; private final Optional<String> password; private final Optional<UserAttributes> attributes; private final Optional<byte[]> certificate; @JsonCreator public UpdateUserRequest( @JsonProperty( Names.EMAIL_FIELD ) Optional<String> email, @JsonProperty( Names.USERNAME_FIELD ) Optional<String> name, @JsonProperty( Names.ATTRIBUTES_FIELD ) Optional<UserAttributes> attributes, @JsonProperty( Names.PASSWORD_FIELD ) Optional<String> password, @JsonProperty( Names.CERTIFICATE_FIELD ) Optional<byte[]> certificate ) { this.name = name; this.email = email; this.password = password; this.certificate = certificate; this.attributes = attributes; } @JsonProperty( Names.USERNAME_FIELD ) public Optional<String> getName() { return name; } @JsonProperty( Names.EMAIL_FIELD ) public Optional<String> getEmail() { return email; } @JsonProperty( Names.PASSWORD_FIELD ) public Optional<String> getPassword() { return password; } @JsonProperty( Names.CERTIFICATE_FIELD ) public Optional<byte[]> getCertificate() { return certificate; } @JsonProperty( Names.ATTRIBUTES_FIELD ) public Optional<UserAttributes> getAttributes() { return attributes; } }