1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.directory.server.schema;
21
22
23 import javax.naming.Name;
24 import javax.naming.NamingException;
25
26 import org.apache.directory.server.schema.registries.AttributeTypeRegistry;
27 import org.apache.directory.server.schema.registries.Registries;
28 import org.apache.directory.shared.ldap.name.LdapDN;
29 import org.apache.directory.shared.ldap.schema.Normalizer;
30
31
32
33
34
35
36
37
38 public class DnNormalizer implements Normalizer
39 {
40 private static final long serialVersionUID = 1L;
41
42
43 private AttributeTypeRegistry attrRegistry;
44
45
46 public DnNormalizer( AttributeTypeRegistry attrRegistry )
47 {
48 this.attrRegistry = attrRegistry;
49 }
50
51
52 public DnNormalizer()
53 {
54 }
55
56
57 public void setRegistries( Registries registries )
58 {
59 this.attrRegistry = registries.getAttributeTypeRegistry();
60 }
61
62
63 public Object normalize( Object value ) throws NamingException
64 {
65 LdapDN dn = null;
66
67 if ( value instanceof LdapDN )
68 {
69 dn = ( LdapDN ) ( ( LdapDN ) value ).clone();
70 }
71 else if ( value instanceof Name )
72 {
73 dn = new LdapDN( ( Name ) value );
74 }
75 else if ( value instanceof String )
76 {
77 dn = new LdapDN( ( String ) value );
78 }
79 else
80 {
81 throw new IllegalStateException( "I do not know how to handle dn normalization with objects of class: "
82 + (value == null ? null : value.getClass() ) );
83 }
84
85 dn.normalize( attrRegistry.getNormalizerMapping() );
86 return dn.getNormName();
87 }
88 }