/* * 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 * trunk/opends/resource/legal-notices/OpenDS.LICENSE * or https://OpenDS.dev.java.net/OpenDS.LICENSE. * 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 * trunk/opends/resource/legal-notices/OpenDS.LICENSE. 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 2009 Sun Microsystems, Inc. */ package org.opends.sdk.schema; import org.opends.sdk.ByteSequence; import org.opends.sdk.LocalizableMessageBuilder; /** * This class defines the set of methods and structures that must be * implemented to define a new attribute syntax. */ public interface SyntaxImpl { /** * Retrieves the default approximate matching rule that will be used * for attributes with this syntax. * * @return The default approximate matching rule that will be used for * attributes with this syntax, or {@code null} if approximate * matches will not be allowed for this type by default. */ public String getApproximateMatchingRule(); /** * Retrieves the default equality matching rule that will be used for * attributes with this syntax. * * @return The default equality matching rule that will be used for * attributes with this syntax, or {@code null} if equality * matches will not be allowed for this type by default. */ public String getEqualityMatchingRule(); /** * Retrieves the common name for this attribute syntax. * * @return The common name for this attribute syntax. */ public String getName(); /** * Retrieves the default ordering matching rule that will be used for * attributes with this syntax. * * @return The default ordering matching rule that will be used for * attributes with this syntax, or {@code null} if ordering * matches will not be allowed for this type by default. */ public String getOrderingMatchingRule(); /** * Retrieves the default substring matching rule that will be used for * attributes with this syntax. * * @return The default substring matching rule that will be used for * attributes with this syntax, or {@code null} if substring * matches will not be allowed for this type by default. */ public String getSubstringMatchingRule(); /** * Indicates whether this attribute syntax requires that values must * be encoded using the Basic Encoding Rules (BER) used by X.500 * directories and always include the {@code binary} attribute * description option. * * @return {@code true} this attribute syntax requires that values * must be BER encoded and always include the {@code binary} * attribute description option, or {@code false} if not. * @see RFC 4522 - * Lightweight Directory Access Protocol (LDAP): The Binary * Encoding Option */ public boolean isBEREncodingRequired(); /** * Indicates whether this attribute syntax would likely be a human * readable string. * * @return {@code true} if this attribute syntax would likely be a * human readable string or {@code false} if not. */ boolean isHumanReadable(); /** * Indicates whether the provided value is acceptable for use in an * attribute with this syntax. If it is not, then the reason may be * appended to the provided buffer. * * @param schema * The schema in which this syntax is defined. * @param value * The value for which to make the determination. * @param invalidReason * The buffer to which the invalid reason should be appended. * @return {@code true} if the provided value is acceptable for use * with this syntax, or {@code false} if not. */ boolean valueIsAcceptable(Schema schema, ByteSequence value, LocalizableMessageBuilder invalidReason); }