All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.ldaptive.referral.AddReferralHandler Maven / Gradle / Ivy

There is a newer version: 2.4.0
Show newest version
/* See LICENSE for licensing and NOTICE for copyright. */
package org.ldaptive.referral;

import org.ldaptive.AddOperation;
import org.ldaptive.AddRequest;
import org.ldaptive.Connection;
import org.ldaptive.LdapURL;
import org.ldaptive.Operation;

/**
 * Provides handling of an ldap referral for add operations.
 *
 * @author  Middleware Services
 */
public class AddReferralHandler extends AbstractReferralHandler
{


  /** Creates a new add referral handler. */
  public AddReferralHandler()
  {
    this(DEFAULT_REFERRAL_LIMIT, 0, DEFAULT_CONNECTION_FACTORY);
  }


  /**
   * Creates a new add referral handler.
   *
   * @param  factory  referral connection factory
   */
  public AddReferralHandler(final ReferralConnectionFactory factory)
  {
    this(DEFAULT_REFERRAL_LIMIT, 0, factory);
  }


  /**
   * Creates a new add referral handler.
   *
   * @param  limit  number of referrals to follow
   */
  public AddReferralHandler(final int limit)
  {
    this(limit, 0, DEFAULT_CONNECTION_FACTORY);
  }


  /**
   * Creates a new add referral handler.
   *
   * @param  limit  number of referrals to follow
   * @param  factory  referral connection factory
   */
  public AddReferralHandler(final int limit, final ReferralConnectionFactory factory)
  {
    this(limit, 0, factory);
  }


  /**
   * Creates a new add referral handler.
   *
   * @param  limit  number of referrals to follow
   * @param  depth  number of referrals followed
   * @param  factory  referral connection factory
   */
  private AddReferralHandler(final int limit, final int depth, final ReferralConnectionFactory factory)
  {
    super(limit, depth, factory);
  }


  @Override
  protected AddRequest createReferralRequest(final AddRequest request, final LdapURL url)
  {
    final AddRequest referralRequest = new AddRequest();
    referralRequest.setControls(request.getControls());
    referralRequest.setIntermediateResponseHandlers(request.getIntermediateResponseHandlers());
    referralRequest.setReferralHandler(
      new AddReferralHandler(getReferralLimit(), getReferralDepth() + 1, getReferralConnectionFactory()));
    if (!url.getEntry().isDefaultBaseDn()) {
      referralRequest.setDn(url.getEntry().getBaseDn());
    } else {
      referralRequest.setDn(request.getDn());
    }
    referralRequest.setLdapAttributes(request.getLdapAttributes());
    return referralRequest;
  }


  @Override
  protected Operation createReferralOperation(final Connection conn)
  {
    return new AddOperation(conn);
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy