/* 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 <C> type of control produced by the control processor
*
* @author Middleware Services
*/
public class ProviderConfig<C> 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<String, Object> properties = new HashMap<>();
/** Control processor. */
private ControlProcessor<C> 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<String, Object> getProperties()
{
return properties;
}
/**
* Sets provider specific properties.
*
* @param props map of additional provider properties
*/
public void setProperties(final Map<String, Object> props)
{
checkImmutable();
logger.trace("setting properties: {}", props);
properties = props;
}
/**
* Returns the control processor.
*
* @return control processor
*/
public ControlProcessor<C> getControlProcessor()
{
return controlProcessor;
}
/**
* Sets the control processor.
*
* @param processor control processor
*/
public void setControlProcessor(final ControlProcessor<C> processor)
{
checkImmutable();
logger.trace("setting controlProcessor: {}", processor);
controlProcessor = processor;
}
@Override
public String toString()
{
return
String.format(
"[%s@%d::operationExceptionResultCodes=%s, properties=%s, controlProcessor=%s]",
getClass().getName(),
hashCode(),
Arrays.toString(operationExceptionResultCodes),
properties,
controlProcessor);
}
}