001/* 002 * Licensed to the Apache Software Foundation (ASF) under one 003 * or more contributor license agreements. See the NOTICE file 004 * distributed with this work for additional information 005 * regarding copyright ownership. The ASF licenses this file 006 * to you under the Apache License, Version 2.0 (the 007 * "License"); you may not use this file except in compliance 008 * with the License. You may obtain a copy of the License at 009 * 010 * http://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, 013 * software distributed under the License is distributed on an 014 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 015 * KIND, either express or implied. See the License for the 016 * specific language governing permissions and limitations 017 * under the License. 018 * 019 */ 020package org.apache.directory.shared.ldap.model.schema.registries; 021 022 023import java.util.Iterator; 024import java.util.Map; 025 026import org.apache.directory.shared.ldap.model.exception.LdapException; 027import org.apache.directory.shared.ldap.model.schema.AttributeType; 028import org.apache.directory.shared.ldap.model.schema.normalizers.OidNormalizer; 029 030 031/** 032 * An AttributeType registry service interface. 033 * 034 * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a> 035 */ 036public interface AttributeTypeRegistry extends SchemaObjectRegistry<AttributeType>, Iterable<AttributeType> 037{ 038 /** 039 * Gets an oid/name to normalizer mapping used to normalize distinguished 040 * names. 041 * 042 * @return a map of OID Strings to OidNormalizer instances 043 */ 044 Map<String, OidNormalizer> getNormalizerMapping(); 045 046 047 /** 048 * Quick lookup to see if an attribute has descendants. 049 * 050 * @param ancestorId the name alias or OID for an attributeType 051 * @return an Iterator over the AttributeTypes which have the ancestor 052 * within their superior chain to the top 053 * @throws LdapException if the ancestor attributeType cannot be 054 * discerned from the ancestorId supplied 055 */ 056 boolean hasDescendants( String ancestorId ) throws LdapException; 057 058 059 /** 060 * Quick lookup to see if an attribute has descendants. 061 * 062 * @param ancestor the attributeType we are looking for 063 * @return an Iterator over the AttributeTypes which have the ancestor 064 * within their superior chain to the top 065 * @throws LdapException if the ancestor attributeType cannot be 066 * discerned from the ancestorId supplied 067 */ 068 boolean hasDescendants( AttributeType ancestor ) throws LdapException; 069 070 071 /** 072 * Get's an iterator over the set of descendant attributeTypes for 073 * some ancestor's name alias or their OID. 074 * 075 * @param ancestorId the name alias or OID for an attributeType 076 * @return an Iterator over the AttributeTypes which have the ancestor 077 * within their superior chain to the top 078 * @throws LdapException if the ancestor attributeType cannot be 079 * discerned from the ancestorId supplied 080 */ 081 Iterator<AttributeType> descendants( String ancestorId ) throws LdapException; 082 083 084 /** 085 * Get's an iterator over the set of descendant attributeTypes for 086 * some ancestor's name alias or their OID. 087 * 088 * @param ancestor the AttributeType we are looking for 089 * @return an Iterator over the AttributeTypes which have the ancestor 090 * within their superior chain to the top 091 * @throws LdapException if the ancestor attributeType cannot be 092 * discerned from the ancestorId supplied 093 */ 094 Iterator<AttributeType> descendants( AttributeType ancestor ) throws LdapException; 095 096 097 /** 098 * Store the AttributeType into a map associating an AttributeType to its 099 * descendants. 100 * 101 * @param attributeType The attributeType to register 102 * @throws org.apache.directory.shared.ldap.model.exception.LdapException If something went wrong 103 */ 104 void registerDescendants( AttributeType attributeType, AttributeType ancestor ) throws LdapException; 105 106 107 /** 108 * Remove the AttributeType from the map associating an AttributeType to its 109 * descendants. 110 * 111 * @param attributeType The attributeType to unregister 112 * @param ancestor its ancestor 113 * @throws LdapException If something went wrong 114 */ 115 void unregisterDescendants( AttributeType attributeType, AttributeType ancestor ) throws LdapException; 116 117 118 /** 119 * Add a new Oid/Normalizer couple in the OidNormalizer map 120 */ 121 void addMappingFor( AttributeType attributeType ) throws LdapException; 122 123 124 /** 125 * Remove a new Oid/Normalizer couple in the OidNormalizer map 126 */ 127 void removeMappingFor( AttributeType attributeType ) throws LdapException; 128 129 130 /** 131 * Copy the AttributeTypeRegistry 132 */ 133 AttributeTypeRegistry copy(); 134}