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

org.ldaptive.provider.ProviderConfig 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.provider;

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import org.ldaptive.AbstractConfig;
import org.ldaptive.ResultCode;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * Contains configuration data common to providers.
 *
 * @param    type of control produced by the control processor
 *
 * @author  Middleware Services
 */
public class ProviderConfig extends AbstractConfig
{

  /** Logger for this class. */
  protected final Logger logger = LoggerFactory.getLogger(getClass());

  /** Result codes indicating that an operation exception should be thrown. */
  private ResultCode[] operationExceptionResultCodes;

  /** Additional provider properties. */
  private Map properties = new HashMap<>();

  /** Connection strategy. */
  private ConnectionStrategy connectionStrategy = ConnectionStrategy.DEFAULT;

  /** Control processor. */
  private ControlProcessor controlProcessor;


  /**
   * Returns the result codes that trigger an operation exception.
   *
   * @return  ldap result codes
   */
  public ResultCode[] getOperationExceptionResultCodes()
  {
    return operationExceptionResultCodes;
  }


  /**
   * Sets the result codes that trigger an operation exception.
   *
   * @param  codes  ldap result codes
   */
  public void setOperationExceptionResultCodes(final ResultCode... codes)
  {
    checkImmutable();
    logger.trace("setting operationExceptionResultCodes: {}", Arrays.toString(codes));
    operationExceptionResultCodes = codes;
  }


  /**
   * Returns provider specific properties.
   *
   * @return  map of additional provider properties
   */
  public Map getProperties()
  {
    return properties;
  }


  /**
   * Sets provider specific properties.
   *
   * @param  props  map of additional provider properties
   */
  public void setProperties(final Map props)
  {
    checkImmutable();
    logger.trace("setting properties: {}", props);
    properties = props;
  }


  /**
   * Returns the connection strategy.
   *
   * @return  strategy for making connections
   */
  public ConnectionStrategy getConnectionStrategy()
  {
    return connectionStrategy;
  }


  /**
   * Sets the connection strategy.
   *
   * @param  strategy  for making connections
   */
  public void setConnectionStrategy(final ConnectionStrategy strategy)
  {
    checkImmutable();
    logger.trace("setting connectionStrategy: {}", strategy);
    connectionStrategy = strategy;
  }


  /**
   * Returns the control processor.
   *
   * @return  control processor
   */
  public ControlProcessor getControlProcessor()
  {
    return controlProcessor;
  }


  /**
   * Sets the control processor.
   *
   * @param  processor  control processor
   */
  public void setControlProcessor(final ControlProcessor processor)
  {
    checkImmutable();
    logger.trace("setting controlProcessor: {}", processor);
    controlProcessor = processor;
  }


  @Override
  public String toString()
  {
    return
      String.format(
        "[%s@%d::operationExceptionResultCodes=%s, properties=%s, " +
        "connectionStrategy=%s, controlProcessor=%s]",
        getClass().getName(),
        hashCode(),
        Arrays.toString(operationExceptionResultCodes),
        properties,
        connectionStrategy,
        controlProcessor);
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy