Class AbstractFollowReferralHandler<Q extends Request,S extends Result>

java.lang.Object
org.ldaptive.transport.MessageFunctional<Q,S>
org.ldaptive.transport.MessageFunctional.Function<Q,S,S,S>
org.ldaptive.referral.AbstractFollowReferralHandler<Q,S>
Type Parameters:
Q - type of request
S - type of result
All Implemented Interfaces:
Function<S,S>
Direct Known Subclasses:
FollowSearchReferralHandler, FollowSearchResultReferenceHandler

public abstract class AbstractFollowReferralHandler<Q extends Request,S extends Result> extends MessageFunctional.Function<Q,S,S,S>
Common implementation of referral handling.
  • Field Details

    • DEFAULT_REFERRAL_LIMIT

      protected static final int DEFAULT_REFERRAL_LIMIT
      Default referral limit. Value is 10.
      See Also:
    • logger

      protected final org.slf4j.Logger logger
      Logger for this class.
    • referralLimit

      protected final int referralLimit
      Referral limit.
    • referralDepth

      protected final int referralDepth
      Referral depth.
    • connectionFactory

      private final ReferralConnectionFactory connectionFactory
      Referral connection factory.
  • Constructor Details

    • AbstractFollowReferralHandler

      public AbstractFollowReferralHandler(int limit, int depth, ReferralConnectionFactory factory)
      Creates a new abstract referral handler.
      Parameters:
      limit - number of referrals to follow
      depth - number of referrals followed
      factory - referral connection factory
  • Method Details

    • getReferralLimit

      public int getReferralLimit()
      Returns the maximum number of referrals to follow.
      Returns:
      referral limit
    • getReferralDepth

      public int getReferralDepth()
      Returns the referral depth of this handler.
      Returns:
      referral depth
    • getReferralConnectionFactory

      public ReferralConnectionFactory getReferralConnectionFactory()
      Returns the referral connection factory.
      Returns:
      referral connection factory
    • createReferralRequest

      protected abstract Q createReferralRequest(LdapURL url)
      Creates a new request for this type of referral.
      Parameters:
      url - of the referral
      Returns:
      new request
    • createReferralOperation

      protected abstract Operation<Q,S> createReferralOperation(ConnectionFactory factory)
      Creates an operation for this type of referral.
      Parameters:
      factory - to get a connection with
      Returns:
      new operation
    • followReferral

      protected S followReferral(String[] referralUrls)
      Follows the supplied referral URLs in order until a SUCCESS or REFERRAL_LIMIT_EXCEEDED occurs. If neither of those conditions occurs this method returns null.
      Parameters:
      referralUrls - produced by the request
      Returns:
      referral response
    • apply

      public S apply(S result)