java.lang.Object
com.minecolonies.core.colony.requestsystem.management.handlers.ResolverHandler
All Implemented Interfaces:
IResolverHandler

public class ResolverHandler extends Object implements IResolverHandler
Class used to handle the inner workings of the request system with regards to resolvers.
  • Constructor Details

  • Method Details

    • getManager

      public IRequestManager getManager()
      Specified by:
      getManager in interface IResolverHandler
    • registerResolvers

      public Collection<IToken<?>> registerResolvers(IRequestResolver<?>... resolvers)
      Method used to register multiple resolvers simultaneously

      Is only used internally. The method modifies the resolverBiMap that is used to track resolvers.

      Specified by:
      registerResolvers in interface IResolverHandler
      Parameters:
      resolvers - The resolvers to register.
      Returns:
      The tokens of the resolvers that when registered.
      Throws:
      IllegalArgumentException - is thrown when an IllegalArgumentException is thrown by the registerResolver method for any of the given Resolvers.
    • registerResolver

      public IToken<?> registerResolver(IRequestResolver<? extends IRequestable> resolver)
      Method used to register a resolver.

      Is only used internally. The method modifies the resolverBiMap that is used to track which resolver are registered.

      Specified by:
      registerResolver in interface IResolverHandler
      Parameters:
      resolver - The resolver to register
      Returns:
      The token of the newly registered resolver
      Throws:
      IllegalArgumentException - is thrown when either the token attached to the resolver is already registered or the resolver is already registered with a different token
    • registerResolvers

      public Collection<IToken<?>> registerResolvers(Collection<IRequestResolver<?>> resolvers)
      Method used to register multiple resolvers simultaneously

      Is only used internally. The method modifies the resolverBiMap that is used to track resolvers.

      Specified by:
      registerResolvers in interface IResolverHandler
      Parameters:
      resolvers - The resolvers to register.
      Returns:
      The tokens of the resolvers that when registered.
      Throws:
      IllegalArgumentException - is thrown when an IllegalArgumentException is thrown by the registerResolver method for any of the given Resolvers.
    • removeResolver

      public void removeResolver(IToken<?> token)
      Method used to remove a registered resolver.

      Is only used internally. The method modifies the resolverBiMap that is used to track resolvers.

      Specified by:
      removeResolver in interface IResolverHandler
      Parameters:
      token - The token of the resolver to remove.
      Throws:
      IllegalArgumentException - is thrown when the given resolver is not registered or the token of the given resolver is not registered to the same resolver.
    • removeResolver

      public void removeResolver(IRequestResolver<?> resolver)
      Method used to remove a registered resolver.

      Is only used internally. The method modifies the resolverBiMap that is used to track resolvers.

      Specified by:
      removeResolver in interface IResolverHandler
      Parameters:
      resolver - The resolver to remove
      Throws:
      IllegalArgumentException - is thrown when the given resolver is not registered or the token of the given resolver is not registered to the same resolver.
    • processResolverForRemoval

      public void processResolverForRemoval(Collection<IToken<?>> assignedResolvers, IToken<?> resolverToken)
      Internal method that handles the removal of a single resolvers that is attached to a provider that is being removed.
      Specified by:
      processResolverForRemoval in interface IResolverHandler
      Parameters:
      assignedResolvers - The list of resolvers which are being removed.
      resolverToken - The id of the resolver which is being removed, needs to be part of the assignedResolvers list.
    • getRequestsAssignedToResolver

      public Collection<IToken<?>> getRequestsAssignedToResolver(IRequestResolver<?> resolver)
      Method to get all requests currently assigned to a resolver.
      Specified by:
      getRequestsAssignedToResolver in interface IResolverHandler
      Parameters:
      resolver - The resolver to get the requests from.
      Returns:
      A collection with requests tokens.
    • getResolver

      public IRequestResolver<? extends IRequestable> getResolver(IToken<?> token)
      Method to get a resolver from a given token.

      Is only used internally. Querries the resolverBiMap to get the resolver for a given Token.

      Specified by:
      getResolver in interface IResolverHandler
      Parameters:
      token - The token of the resolver to look up.
      Returns:
      The resolver registered with the given token.
      Throws:
      IllegalArgumentException - is thrown when the given token is not registered to any IRequestResolver
    • removeResolverInternal

      public void removeResolverInternal(IRequestResolver<?> resolver)
      Specified by:
      removeResolverInternal in interface IResolverHandler
    • removeResolvers

      public void removeResolvers(IRequestResolver<?>... resolvers)
      Method used to remove a multiple registered resolvers.

      Is only used internally. The method modifies the resolverBiMap that is used to track resolvers.

      Specified by:
      removeResolvers in interface IResolverHandler
      Parameters:
      resolvers - The resolvers to remove.
      Throws:
      IllegalArgumentException - is thrown when removeResolver throws an IllegalArgumentException for any of the given resolvers.
    • removeResolvers

      public void removeResolvers(Iterable<IRequestResolver<?>> resolvers)
      Method used to remove a multiple registered resolvers.

      Is only used internally. The method modifies the resolverBiMap that is used to track resolvers.

      Specified by:
      removeResolvers in interface IResolverHandler
      Parameters:
      resolvers - The resolvers to remove.
      Throws:
      IllegalArgumentException - is thrown when removeResolver throws an IllegalArgumentException for any of the given resolvers.
    • addRequestToResolver

      public void addRequestToResolver(IRequestResolver<?> resolver, IRequest<?> request)
      Method used to add a request to a resolver.

      Is only used internally. The method modifies the resolverRequestMap that is used to track which resolver handles which request.

      Specified by:
      addRequestToResolver in interface IResolverHandler
      Parameters:
      resolver - The resolver to add the request to.
      request - The request to add to the resolver.
    • removeRequestFromResolver

      public void removeRequestFromResolver(IRequestResolver<?> resolver, IRequest<?> request)
      Method used to remove a request from a resolver.

      Is only used internally. The method modifies the resolverRequestMap that is used to track which resolver handles which request.

      Specified by:
      removeRequestFromResolver in interface IResolverHandler
      Parameters:
      resolver - The resolver to remove the given request from.
      request - The request to remove.
      Throws:
      IllegalArgumentException - is thrown when the resolver is unknown, or when the given request is not registered to the given resolver.
    • getResolverForRequest

      public IRequestResolver<? extends IRequestable> getResolverForRequest(IToken<?> requestToken)
      Method used to get a resolver from a given request token.
      Specified by:
      getResolverForRequest in interface IResolverHandler
      Parameters:
      requestToken - The token of a request a the assigned resolver is requested for.
      Returns:
      The resolver for the request with the given token.
      Throws:
      IllegalArgumentException - when the token is unknown or the request is not assigned yet.
    • getResolverForRequest

      public IRequestResolver<? extends IRequestable> getResolverForRequest(IRequest<?> request)
      Method used to get a resolver from a given request token.
      Specified by:
      getResolverForRequest in interface IResolverHandler
      Parameters:
      request - The request a the assigned resolver is requested for.
      Returns:
      The resolver for the request.
      Throws:
      IllegalArgumentException - when the token is unknown or the request is not assigned yet.
    • onColonyUpdate

      public void onColonyUpdate(Predicate<IRequest<?>> shouldTriggerReassign)
      Method used to reassign requests based on a predicate
      Specified by:
      onColonyUpdate in interface IResolverHandler
      Parameters:
      shouldTriggerReassign - the predicate to determine whether a request should be reassigned
    • isBeingRemoved

      public boolean isBeingRemoved(IToken<?> id)
      Description copied from interface: IResolverHandler
      Check if a resolver is in the progress of being removed.
      Specified by:
      isBeingRemoved in interface IResolverHandler
      Parameters:
      id - the id of the resolver to check.
      Returns:
      true if so.