/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at legal-notices/CDDLv1_0.txt * or http://forgerock.org/license/CDDLv1.0.html. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at legal-notices/CDDLv1_0.txt. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: * Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END * * * Copyright 2013 ForgeRock AS. */ package org.forgerock.opendj.config; /** * Provides options for {@code PropertyDefinition property definitions}. *
* These options are used by some {@code PropertyDefinition} methods to define
* strategy used when processing value(s) of a property definition.
*/
public final class PropertyDefinitionsOptions {
/** Immutable options with no validation of java classes or LDAP attributes. */
public static final PropertyDefinitionsOptions NO_VALIDATION_OPTIONS = new PropertyDefinitionsOptions().
setAllowClassValidation(false).
setCheckSchemaForAttributes(false).
freeze();
/** By default, class validation is enabled. */
private boolean allowClassValidation = true;
/** By default, attributes validation against the schema is enabled. */
private boolean checkSchemaForAttributes = true;
/**
* If true, then the instance is frozen so state can't be changed (object is
* immutable).
*/
private boolean isFrozen = false;
/**
* Creates a new set of properties options with default settings. By
* default, class validation and attributes checking are enabled.
*/
public PropertyDefinitionsOptions() {
// empty implementation
}
/**
* Determine whether or not class property definitions should validate class
* name property values. Validation involves checking that the class exists
* and that it implements the required interfaces.
*
* @return Returns true if class property definitions should
* validate class name property values.
*/
public boolean allowClassValidation() {
return allowClassValidation;
}
/**
* Specify whether or not class property definitions should validate class
* name property values. Validation involves checking that the class exists
* and that it implements the required interfaces.
*
* By default validation is switched on.
*
* @param value
* true if class property definitions should
* validate class name property values.
* @return A reference to this definitions options.
*/
public PropertyDefinitionsOptions setAllowClassValidation(boolean value) {
if (isFrozen) {
throw new IllegalStateException("This object is frozen, it can't be changed");
}
allowClassValidation = value;
return this;
}
/**
* Determines whether or not attribute type names should be validated
* against the schema.
*
* @return Returns true if attribute type names should be
* validated against the schema.
*/
public boolean checkSchemaForAttributes() {
return checkSchemaForAttributes;
}
/**
* Specify whether or not attribute type names should be validated against
* the schema.
*
* By default validation is switched on.
*
* @param value
* true if attribute type names should be validated
* against the schema.
* @return A reference to this definitions options.
*/
public PropertyDefinitionsOptions setCheckSchemaForAttributes(boolean value) {
if (isFrozen) {
throw new IllegalStateException("This object is frozen, it can't be changed");
}
checkSchemaForAttributes = value;
return this;
}
/**
* Freeze this object, making it effectively immutable.
*
* Once this method is called, all {@code set} methods will throw * an IllegalStateException if called. * * @return A reference to this definitions options. */ public PropertyDefinitionsOptions freeze() { isFrozen = true; return this; } }