Class DelegatingUserProvider

java.lang.Object
io.fluxcapacitor.javaclient.tracking.handling.authentication.DelegatingUserProvider
All Implemented Interfaces:
UserProvider

public class DelegatingUserProvider extends Object implements UserProvider
An extendable UserProvider that delegates to another UserProvider.
  • Field Details

  • Constructor Details

    • DelegatingUserProvider

      public DelegatingUserProvider()
  • Method Details

    • getActiveUser

      public User getActiveUser()
      Description copied from interface: UserProvider
      Returns the currently active user, typically injected by the current context.
      Specified by:
      getActiveUser in interface UserProvider
      Returns:
      the active User, or User.getCurrent() if not explicitly provided
    • getUserById

      public User getUserById(Object userId)
      Description copied from interface: UserProvider
      Retrieves a User by their unique identifier.

      This method is primarily used in TestFixture-based access control tests, such as when using whenCommandByUser(...), to simulate requests by a specific user.

      Implementations may return null if the user cannot be found, or alternatively return a new, unprivileged User instance. The latter approach allows tests to verify authorization behavior for unknown or default users without requiring explicit user creation.

      Specified by:
      getUserById in interface UserProvider
      Parameters:
      userId - the unique identifier of the user (typically a String or number)
      Returns:
      the matching User, a default unprivileged User, or null if not found
    • getSystemUser

      public User getSystemUser()
      Description copied from interface: UserProvider
      Returns the User representing the system (non-human) identity. Typically used for scheduled messages, internal services, etc.
      Specified by:
      getSystemUser in interface UserProvider
    • fromMessage

      public User fromMessage(HasMessage message)
      Description copied from interface: UserProvider
      Extracts the User from a given HasMessage instance. Implementations may inspect message metadata or payload to resolve the user identity.
      Specified by:
      fromMessage in interface UserProvider
      Parameters:
      message - the message containing potential user-related metadata
      Returns:
      the resolved User, or null if no user info was found
    • containsUser

      public boolean containsUser(Metadata metadata)
      Description copied from interface: UserProvider
      Checks if the given metadata contains user information that can be resolved by this provider.
      Specified by:
      containsUser in interface UserProvider
      Parameters:
      metadata - the metadata to inspect
      Returns:
      true if the metadata contains recognizable user information
    • removeFromMetadata

      public Metadata removeFromMetadata(Metadata metadata)
      Description copied from interface: UserProvider
      Removes any user-related metadata entries from the given Metadata.
      Specified by:
      removeFromMetadata in interface UserProvider
      Parameters:
      metadata - the metadata to clean
      Returns:
      a new Metadata instance without any user-specific keys
    • addToMetadata

      public Metadata addToMetadata(Metadata metadata, User user, boolean ifAbsent)
      Description copied from interface: UserProvider
      Adds user-related metadata to a message.
      Specified by:
      addToMetadata in interface UserProvider
      Parameters:
      metadata - the original metadata
      user - the user to include
      ifAbsent - if true, metadata is only added if not already present
      Returns:
      updated Metadata with user info conditionally added
    • andThen

      public UserProvider andThen(UserProvider other)
      Description copied from interface: UserProvider
      Combines this provider with another.

      The returned provider will try this provider first, falling back to other if a user cannot be resolved. This is useful for composing multiple resolution strategies.

      Specified by:
      andThen in interface UserProvider
      Parameters:
      other - another user provider to chain after this one
      Returns:
      a new UserProvider that delegates to both providers