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.apache.directory.api.util.Strings;
26 import org.slf4j.Logger;
27 import org.slf4j.LoggerFactory;
28
29
30
31
32
33
34
35
36 @SuppressWarnings("serial")
37 public class ObjectClassTypeSyntaxChecker extends SyntaxChecker
38 {
39
40 private static final Logger LOG = LoggerFactory.getLogger( ObjectClassTypeSyntaxChecker.class );
41
42
43
44
45
46 public ObjectClassTypeSyntaxChecker()
47 {
48 super( SchemaConstants.OBJECT_CLASS_TYPE_SYNTAX );
49 }
50
51
52
53
54
55 public boolean isValidSyntax( Object value )
56 {
57 String strValue = null;
58
59 if ( value == null )
60 {
61 LOG.debug( "Syntax invalid for 'null'" );
62 return false;
63 }
64
65 if ( value instanceof String )
66 {
67 strValue = ( String ) value;
68 }
69 else if ( value instanceof byte[] )
70 {
71 strValue = Strings.utf8ToString( ( byte[] ) value );
72 }
73 else
74 {
75 strValue = value.toString();
76 }
77
78 if ( strValue.length() < 8 || strValue.length() > 10 )
79 {
80 LOG.debug( "Syntax invalid for '{}'", value );
81 return false;
82 }
83
84 char ch = strValue.charAt( 0 );
85
86 switch ( ch )
87 {
88 case ( 'A' ):
89 if ( "AUXILIARY".equals( strValue ) || "ABSTRACT".equals( strValue ) )
90 {
91 LOG.debug( "Syntax valid for '{}'", value );
92 return true;
93 }
94
95 LOG.debug( "Syntax invalid for '{}'", value );
96 return false;
97
98 case ( 'S' ):
99 boolean result = "STRUCTURAL".equals( strValue );
100
101 if ( result )
102 {
103 LOG.debug( "Syntax valid for '{}'", value );
104 }
105 else
106 {
107 LOG.debug( "Syntax invalid for '{}'", value );
108 }
109
110 return result;
111
112 default:
113 LOG.debug( "Syntax invalid for '{}'", value );
114 return false;
115 }
116 }
117 }