/* See LICENSE for licensing and NOTICE for copyright. */
package org.ldaptive;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Provides common implementations for configuration objects.
*
* @author Middleware Services
*/
public abstract class AbstractConfig
{
/** Logger for this class. */
protected final Logger logger = LoggerFactory.getLogger(getClass());
/** Whether this config has been marked immutable. */
private boolean immutable;
/** Make this config immutable. */
public void makeImmutable()
{
immutable = true;
}
/**
* Verifies if this config is immutable.
*
* @throws IllegalStateException if this config is immutable
*/
public void checkImmutable()
{
if (immutable) {
throw new IllegalStateException("Cannot modify immutable object");
}
}
/**
* Verifies that a string is not null or empty.
*
* @param s to verify
* @param allowNull whether null strings are valid
*
* @throws IllegalArgumentException if the string is null or empty
*/
protected void checkStringInput(final String s, final boolean allowNull)
{
if (allowNull) {
if (s != null && "".equals(s)) {
throw new IllegalArgumentException("Input cannot be empty");
}
} else {
if (s == null || "".equals(s)) {
throw new IllegalArgumentException("Input cannot be null or empty");
}
}
}
}