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.ldap.model.constants.SchemaConstants;
24 import org.apache.directory.api.ldap.model.schema.SyntaxChecker;
25 import org.slf4j.Logger;
26 import org.slf4j.LoggerFactory;
27
28
29
30
31
32
33
34 @SuppressWarnings("serial")
35 public class CsnSidSyntaxChecker extends SyntaxChecker
36 {
37
38 private static final Logger LOG = LoggerFactory.getLogger( CsnSidSyntaxChecker.class );
39
40
41
42
43
44 public CsnSidSyntaxChecker()
45 {
46 super( SchemaConstants.CSN_SID_SYNTAX );
47 }
48
49
50
51
52
53 public boolean isValidSyntax( Object value )
54 {
55 if ( value == null )
56 {
57 LOG.debug( "Syntax invalid for 'null'" );
58 return false;
59 }
60
61 if ( !( value instanceof String ) )
62 {
63 LOG.debug( "Syntax invalid for '{}'", value );
64 return false;
65 }
66
67 String sidStr = ( String ) value;
68
69 if ( sidStr.length() > 3 )
70 {
71 LOG.debug( "Syntax invalid for '{}'", value );
72 return false;
73 }
74
75
76
77 try
78 {
79 int sid = Integer.parseInt( sidStr, 16 );
80
81 if ( ( sid < 0 ) || ( sid > 0x0fff ) )
82 {
83 LOG.debug( "Syntax invalid for '{}'", value );
84 return false;
85 }
86 }
87 catch ( NumberFormatException nfe )
88 {
89 LOG.debug( "Syntax invalid for '{}'", value );
90 return false;
91 }
92
93 LOG.debug( "Syntax valid for '{}'", value );
94 return true;
95 }
96 }