throw new ConfigException(message);
}
Validator.ensureTrue(config instanceof SchemaBackendCfg);
SchemaBackendCfg cfg = (SchemaBackendCfg)config;
ConfigEntry configEntry = DirectoryServer.getConfigEntry(cfg.dn());
configEntryDN = configEntry.getDN();
// Get all of the attribute types that we will use for schema elements.
attributeTypesType =
DirectoryServer.getAttributeType(ATTR_ATTRIBUTE_TYPES_LC, true);
objectClassesType =
DirectoryServer.getAttributeType(ATTR_OBJECTCLASSES_LC, true);
matchingRulesType =
DirectoryServer.getAttributeType(ATTR_MATCHING_RULES_LC, true);
ldapSyntaxesType =
DirectoryServer.getAttributeType(ATTR_LDAP_SYNTAXES_LC, true);
ditContentRulesType =
DirectoryServer.getAttributeType(ATTR_DIT_CONTENT_RULES_LC, true);
ditStructureRulesType =
DirectoryServer.getAttributeType(ATTR_DIT_STRUCTURE_RULES_LC, true);
matchingRuleUsesType =
DirectoryServer.getAttributeType(ATTR_MATCHING_RULE_USE_LC, true);
nameFormsType = DirectoryServer.getAttributeType(ATTR_NAME_FORMS_LC, true);
// Initialize the lastmod attributes.
creatorsNameType =
DirectoryServer.getAttributeType(OP_ATTR_CREATORS_NAME_LC, true);
createTimestampType =
DirectoryServer.getAttributeType(OP_ATTR_CREATE_TIMESTAMP_LC, true);
modifiersNameType =
DirectoryServer.getAttributeType(OP_ATTR_MODIFIERS_NAME_LC, true);
modifyTimestampType =
DirectoryServer.getAttributeType(OP_ATTR_MODIFY_TIMESTAMP_LC, true);
// Construct the set of objectclasses to include in the schema entry.
schemaObjectClasses = new LinkedHashMap<ObjectClass,String>(3);
schemaObjectClasses.put(DirectoryServer.getTopObjectClass(), OC_TOP);
ObjectClass subentryOC = DirectoryServer.getObjectClass(OC_LDAP_SUBENTRY_LC,
true);
schemaObjectClasses.put(subentryOC, OC_LDAP_SUBENTRY);
ObjectClass subschemaOC = DirectoryServer.getObjectClass(OC_SUBSCHEMA,
true);
schemaObjectClasses.put(subschemaOC, OC_SUBSCHEMA);
// Define empty sets for the supported controls and features.
supportedControls = new HashSet<String>(0);
supportedFeatures = new HashSet<String>(0);
configEntryDN = configEntry.getDN();
DN[] baseDNs = new DN[cfg.getBaseDN().size()];
cfg.getBaseDN().toArray(baseDNs);
this.baseDNs = baseDNs;
creatorsName = AttributeValues.create(
creatorsNameType, baseDNs[0].toString());
modifiersName =
AttributeValues.create(
modifiersNameType, baseDNs[0].toString());
long createTime = DirectoryServer.getSchema().getOldestModificationTime();
createTimestamp =
GeneralizedTimeSyntax.createGeneralizedTimeValue(createTime);
long modifyTime = DirectoryServer.getSchema().getYoungestModificationTime();
modifyTimestamp =
GeneralizedTimeSyntax.createGeneralizedTimeValue(modifyTime);
// Get the set of user-defined attributes for the configuration entry. Any
// attributes that we don't recognize will be included directly in the
// schema entry.
userDefinedAttributes = new ArrayList<Attribute>();
for (List<Attribute> attrs :
configEntry.getEntry().getUserAttributes().values())
{
for (Attribute a : attrs)
{
if (! isSchemaConfigAttribute(a))
{
userDefinedAttributes.add(a);
}
}
}
for (List<Attribute> attrs :
configEntry.getEntry().getOperationalAttributes().values())
{
for (Attribute a : attrs)
{
if (! isSchemaConfigAttribute(a))
{