org.keycloak.userprofile

## Interface UserProfile

- All Known Implementing Classes:
    DefaultUserProfile

      public interface UserProfile

  An interface providing as an entry point for managing users.

  A `UserProfile` provides a manageable view for user information that also takes into account the context where it is being used. The context represents the different places in Keycloak where users are created, updated, or validated. Examples of contexts are: managing users through the Admin API, or through the Account API.

  By taking the context into account, the state and behavior of `UserProfile` instances depend on the context they are associated with, where validating, updating, creating, or obtaining representations of users is based on the configuration and constraints associated with a context.

  A `UserProfile` instance can be obtained through the `UserProfileProvider`.

  Author:
    Markus Till
  See Also:
    `UserProfileContext`, `UserProfileProvider`

- - ### Method Summary

    All Methods Instance Methods Abstract Methods Default Methods
    Modifier and Type | Method and Description
    --- | ---
    `UserModel` | `create()` Creates a new `UserModel` based on the attributes associated with this instance.
    `Attributes` | `getAttributes()` Returns the attributes associated with this instance.
    `default void` | `update(BiConsumer<String,UserModel>... changeListener)` The same as `update(boolean, BiConsumer[])` but forcing the removal of attributes.
    `void` | `update(boolean removeAttributes, BiConsumer<String,UserModel>... changeListener)` Updates the `UserModel` associated with this instance.
    `void` | `validate()` Validates the attributes associated with this instance.

- - ### Method Detail

    - #### validate

          void validate()
                 throws ValidationException

      Validates the attributes associated with this instance.
      Throws:
        `ValidationException` - in case

    - #### create

          UserModel create()
                    throws ValidationException

      Creates a new `UserModel` based on the attributes associated with this instance.
      Returns:
        the `UserModel` instance created from this profile
      Throws:
        `ValidationException` - in case validation fails

    - #### update

          void update(boolean removeAttributes,
                      BiConsumer<String,UserModel>... changeListener)
               throws ValidationException

      Updates the `UserModel` associated with this instance. If no `UserModel` is associated with this instance, this operation has no effect.

      Before updating the `UserModel`, this method first checks whether the `validate()` method was previously invoked. If not, the validation step is performed prior to updating the model.

      Parameters:
        `removeAttributes` - if attributes should be removed from the `UserModel` if they are not among the attributes associated with this instance.
        `changeListener` - a set of one or more listeners to listen for attribute changes
      Throws:
        `ValidationException` - in case of any validation error

    - #### update

          default void update(BiConsumer<String,UserModel>... changeListener)
                       throws ValidationException,
                              RuntimeException

      The same as `update(boolean, BiConsumer[])` but forcing the removal of attributes.

      Parameters:
        `changeListener` - a set of one or more listeners to listen for attribute changes
      Throws:
        `ValidationException` - in case of any validation error
        `RuntimeException`

    - #### getAttributes

          Attributes getAttributes()

      Returns the attributes associated with this instance. Note that the attributes returned by this method are not necessarily the same from the `UserModel`, but those that should be validated and possibly updated to the `UserModel`.
      Returns:
        the attributes associated with this instance.

Copyright © 2021 JBoss by Red Hat. All rights reserved.