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 */
020 package org.apache.directory.shared.ldap.schema.registries;
021
022
023 import java.util.Iterator;
024 import java.util.Map;
025
026 import org.apache.directory.shared.i18n.I18n;
027 import org.apache.directory.shared.ldap.exception.LdapException;
028 import org.apache.directory.shared.ldap.exception.LdapUnwillingToPerformException;
029 import org.apache.directory.shared.ldap.message.ResultCodeEnum;
030 import org.apache.directory.shared.ldap.schema.AttributeType;
031 import org.apache.directory.shared.ldap.schema.SchemaObject;
032 import org.apache.directory.shared.ldap.schema.SchemaObjectType;
033 import org.apache.directory.shared.ldap.schema.normalizers.OidNormalizer;
034
035
036 /**
037 * An immutable wrapper of the AttributeType registry.
038 *
039 * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
040 * @version $Rev: 828111 $
041 */
042 public class ImmutableAttributeTypeRegistry implements AttributeTypeRegistry
043 {
044 /** The wrapped AttributeType registry */
045 AttributeTypeRegistry immutableAttributeTypeRegistry;
046
047
048 /**
049 * Creates a new instance of ImmutableAttributeTypeRegistry.
050 *
051 * @param attributeTypeRegistry The wrapped AttributeType registry
052 */
053 public ImmutableAttributeTypeRegistry( AttributeTypeRegistry attributeTypeRegistry )
054 {
055 immutableAttributeTypeRegistry = attributeTypeRegistry;
056 }
057
058
059 /**
060 * {@inheritDoc}
061 */
062 public Map<String, OidNormalizer> getNormalizerMapping()
063 {
064 return immutableAttributeTypeRegistry.getNormalizerMapping();
065 }
066
067
068 /**
069 * {@inheritDoc}
070 */
071 public boolean hasDescendants( String ancestorId ) throws LdapException
072 {
073 return immutableAttributeTypeRegistry.hasDescendants( ancestorId );
074 }
075
076
077 /**
078 * {@inheritDoc}
079 */
080 public Iterator<AttributeType> descendants( String ancestorId ) throws LdapException
081 {
082 return immutableAttributeTypeRegistry.descendants( ancestorId );
083 }
084
085
086 /**
087 * {@inheritDoc}
088 */
089 public void register( AttributeType attributeType ) throws LdapException
090 {
091 throw new LdapUnwillingToPerformException( ResultCodeEnum.NO_SUCH_OPERATION, I18n.err( I18n.ERR_04275 ) );
092 }
093
094
095 /**
096 * {@inheritDoc}
097 */
098 public void registerDescendants( AttributeType attributeType, AttributeType ancestor ) throws LdapException
099 {
100 throw new LdapUnwillingToPerformException( ResultCodeEnum.NO_SUCH_OPERATION, I18n.err( I18n.ERR_04275 ) );
101 }
102
103
104 /**
105 * {@inheritDoc}
106 */
107 public void unregisterDescendants( AttributeType attributeType, AttributeType ancestor ) throws LdapException
108 {
109 throw new LdapUnwillingToPerformException( ResultCodeEnum.NO_SUCH_OPERATION, I18n.err( I18n.ERR_04275 ) );
110 }
111
112
113 /**
114 * {@inheritDoc}
115 */
116 public AttributeType unregister( String numericOid ) throws LdapException
117 {
118 throw new LdapUnwillingToPerformException( ResultCodeEnum.NO_SUCH_OPERATION,
119 "Cannot modify the AttributeTypeRegistry copy" );
120 }
121
122
123 /**
124 * {@inheritDoc}
125 */
126 public void addMappingFor( AttributeType attributeType ) throws LdapException
127 {
128 throw new LdapUnwillingToPerformException( ResultCodeEnum.NO_SUCH_OPERATION, I18n.err( I18n.ERR_04275 ) );
129 }
130
131
132 /**
133 * {@inheritDoc}
134 */
135 public void removeMappingFor( AttributeType attributeType ) throws LdapException
136 {
137 throw new LdapUnwillingToPerformException( ResultCodeEnum.NO_SUCH_OPERATION, I18n.err( I18n.ERR_04275 ) );
138 }
139
140
141 /**
142 * {@inheritDoc}
143 */
144 public AttributeType lookup( String oid ) throws LdapException
145 {
146 return immutableAttributeTypeRegistry.lookup( oid );
147 }
148
149
150 /**
151 * {@inheritDoc}
152 */
153 public String toString()
154 {
155 return immutableAttributeTypeRegistry.toString();
156 }
157
158
159 /**
160 * {@inheritDoc}
161 */
162 public AttributeTypeRegistry copy()
163 {
164 return ( AttributeTypeRegistry ) immutableAttributeTypeRegistry.copy();
165 }
166
167
168 /**
169 * {@inheritDoc}
170 */
171 public int size()
172 {
173 return immutableAttributeTypeRegistry.size();
174 }
175
176
177 /**
178 * {@inheritDoc}
179 */
180 public Iterator<AttributeType> iterator()
181 {
182 return immutableAttributeTypeRegistry.iterator();
183 }
184
185
186 /**
187 * {@inheritDoc}
188 */
189 public Iterator<String> oidsIterator()
190 {
191 return immutableAttributeTypeRegistry.oidsIterator();
192 }
193
194
195 /**
196 * {@inheritDoc}
197 */
198 public boolean contains( String oid )
199 {
200 return immutableAttributeTypeRegistry.contains( oid );
201 }
202
203
204 /**
205 * {@inheritDoc}
206 */
207 public String getOidByName( String name ) throws LdapException
208 {
209 return immutableAttributeTypeRegistry.getOidByName( name );
210 }
211
212
213 /**
214 * {@inheritDoc}
215 */
216 public String getSchemaName( String oid ) throws LdapException
217 {
218 return immutableAttributeTypeRegistry.getSchemaName( oid );
219 }
220
221
222 /**
223 * {@inheritDoc}
224 */
225 public SchemaObjectType getType()
226 {
227 return immutableAttributeTypeRegistry.getType();
228 }
229
230
231 /**
232 * {@inheritDoc}
233 */
234 public void renameSchema( String originalSchemaName, String newSchemaName )
235 {
236 // Do nothing
237 }
238
239
240 /**
241 * {@inheritDoc}
242 */
243 public void unregisterSchemaElements( String schemaName ) throws LdapException
244 {
245 throw new LdapUnwillingToPerformException( ResultCodeEnum.NO_SUCH_OPERATION, I18n.err( I18n.ERR_04275 ) );
246 }
247
248
249 /**
250 * {@inheritDoc}
251 */
252 public SchemaObject get( String oid )
253 {
254 return immutableAttributeTypeRegistry.get( oid );
255 }
256
257
258 /**
259 * {@inheritDoc}
260 */
261 public void clear() throws LdapException
262 {
263 throw new LdapUnwillingToPerformException( ResultCodeEnum.NO_SUCH_OPERATION, I18n.err( I18n.ERR_04275 ) );
264 }
265
266
267 /**
268 * {@inheritDoc}
269 */
270 public AttributeType unregister( AttributeType schemaObject ) throws LdapException
271 {
272 throw new LdapUnwillingToPerformException( ResultCodeEnum.NO_SUCH_OPERATION, I18n.err( I18n.ERR_04275 ) );
273 }
274 }