1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.directory.api.ldap.model.schema.syntaxCheckers;
21
22
23 import org.apache.directory.api.i18n.I18n;
24 import org.apache.directory.api.ldap.model.constants.SchemaConstants;
25 import org.apache.directory.api.ldap.model.schema.SyntaxChecker;
26
27
28
29
30
31
32
33 @SuppressWarnings("serial")
34 public final class CsnSidSyntaxChecker extends SyntaxChecker
35 {
36
37
38
39 public static final CsnSidSyntaxChecker INSTANCE = new CsnSidSyntaxChecker( SchemaConstants.CSN_SID_SYNTAX );
40
41
42
43
44 public static final class Builder extends SCBuilder<CsnSidSyntaxChecker>
45 {
46
47
48
49 private Builder()
50 {
51 super( SchemaConstants.CSN_SID_SYNTAX );
52 }
53
54
55
56
57
58
59 @Override
60 public CsnSidSyntaxChecker build()
61 {
62 return new CsnSidSyntaxChecker( oid );
63 }
64 }
65
66
67
68
69
70
71
72 private CsnSidSyntaxChecker( String oid )
73 {
74 super( oid );
75 }
76
77
78
79
80
81 public static Builder builder()
82 {
83 return new Builder();
84 }
85
86
87
88
89
90 @Override
91 public boolean isValidSyntax( Object value )
92 {
93 if ( value == null )
94 {
95 if ( LOG.isDebugEnabled() )
96 {
97 LOG.debug( I18n.err( I18n.ERR_04488_SYNTAX_INVALID, "null" ) );
98 }
99
100 return false;
101 }
102
103 if ( !( value instanceof String ) )
104 {
105 if ( LOG.isDebugEnabled() )
106 {
107 LOG.debug( I18n.err( I18n.ERR_04488_SYNTAX_INVALID, value ) );
108 }
109
110 return false;
111 }
112
113 String sidStr = ( String ) value;
114
115 if ( sidStr.length() > 3 )
116 {
117 if ( LOG.isDebugEnabled() )
118 {
119 LOG.debug( I18n.err( I18n.ERR_04488_SYNTAX_INVALID, value ) );
120 }
121
122 return false;
123 }
124
125
126
127 try
128 {
129 int sid = Integer.parseInt( sidStr, 16 );
130
131 if ( ( sid < 0 ) || ( sid > 0x0fff ) )
132 {
133 if ( LOG.isDebugEnabled() )
134 {
135 LOG.debug( I18n.err( I18n.ERR_04488_SYNTAX_INVALID, value ) );
136 }
137
138 return false;
139 }
140 }
141 catch ( NumberFormatException nfe )
142 {
143 if ( LOG.isDebugEnabled() )
144 {
145 LOG.debug( I18n.err( I18n.ERR_04488_SYNTAX_INVALID, value ) );
146 }
147
148 return false;
149 }
150
151 if ( LOG.isDebugEnabled() )
152 {
153 LOG.debug( I18n.msg( I18n.MSG_04489_SYNTAX_VALID, value ) );
154 }
155
156 return true;
157 }
158 }