001 /*
002 * CDDL HEADER START
003 *
004 * The contents of this file are subject to the terms of the
005 * Common Development and Distribution License, Version 1.0 only
006 * (the "License"). You may not use this file except in compliance
007 * with the License.
008 *
009 * You can obtain a copy of the license at
010 * trunk/opends/resource/legal-notices/OpenDS.LICENSE
011 * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
012 * See the License for the specific language governing permissions
013 * and limitations under the License.
014 *
015 * When distributing Covered Code, include this CDDL HEADER in each
016 * file and include the License file at
017 * trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable,
018 * add the following below this CDDL HEADER, with the fields enclosed
019 * by brackets "[]" replaced with your own identifying information:
020 * Portions Copyright [yyyy] [name of copyright owner]
021 *
022 * CDDL HEADER END
023 *
024 *
025 * Copyright 2008 Sun Microsystems, Inc.
026 */
027 package org.opends.server.types;
028
029
030
031 /**
032 * This interface defines a set of methods that must be provided by a
033 * schema file element, which is a schema element that is loaded from
034 * a schema configuration file.
035 * <BR><BR>
036 * Note that this interface is not meant to be implemented by
037 * third-party code, and only the following classes should be
038 * considered schema file elements:
039 * <UL>
040 * <LI>{@code org.opends.server.types.AttributeType}</LI>
041 * <LI>{@code org.opends.server.types.ObjectClass}</LI>
042 * <LI>{@code org.opends.server.types.NameForm}</LI>
043 * <LI>{@code org.opends.server.types.DITContentRule}</LI>
044 * <LI>{@code org.opends.server.types.DITStructureRule}</LI>
045 * <LI>{@code org.opends.server.types.MatchingRuleUse}</LI>
046 * </UL>
047 */
048 @org.opends.server.types.PublicAPI(
049 stability=org.opends.server.types.StabilityLevel.VOLATILE,
050 mayInstantiate=false,
051 mayExtend=false,
052 mayInvoke=true)
053 public interface SchemaFileElement
054 {
055 /**
056 * Retrieves the name of the schema file in which this element is
057 * defined.
058 *
059 * @return The name of the schema file in which this element is
060 * defined, or {@code null} if it is not known or this
061 * element is not defined in any schema file.
062 */
063 public String getSchemaFile();
064
065
066
067 /**
068 * Specifies the name of the schema file in which this element is
069 * defined.
070 *
071 * @param schemaFile The name of the schema file in which this
072 * element is defined, or {@code null} if it is
073 * not defined in any schema file.
074 */
075 public void setSchemaFile(String schemaFile);
076
077
078
079 /**
080 * Retrieves the definition string that is used to represent this
081 * element in the schema configuration file.
082 *
083 * @return The definition string that should be used to represent
084 * this element in the schema configuration file.
085 */
086 public String getDefinition();
087
088
089
090 /**
091 * Creates a new instance of this schema element based on the
092 * definition from the schema file. The new instance should also
093 * be created with all appropriate state information that may not
094 * be directly represented in the schema definition (e.g., the name
095 * of the schema file containing the definition).
096 * <BR><BR>
097 * Whenever an existing schema file element is modified with the
098 * server online, this method will be invoked to recreate any
099 * schema elements that might have been dependent upon the
100 * modified element.
101 *
102 * @return A new instance of this schema element based on the
103 * definition.
104 *
105 * @throws DirectoryException If a problem occurs while attempting
106 * to create the new instance of this
107 * schema element.
108 */
109 public SchemaFileElement recreateFromDefinition()
110 throws DirectoryException;
111 }
112