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
37
38
39
40 @SuppressWarnings("serial")
41 public class OtherMailboxSyntaxChecker extends SyntaxChecker
42 {
43
44 private static final Logger LOG = LoggerFactory.getLogger( OtherMailboxSyntaxChecker.class );
45
46
47
48
49
50 public OtherMailboxSyntaxChecker()
51 {
52 super( SchemaConstants.OTHER_MAILBOX_SYNTAX );
53 }
54
55
56
57
58
59 public boolean isValidSyntax( Object value )
60 {
61 String strValue = null;
62
63 if ( value == null )
64 {
65 LOG.debug( "Syntax invalid for 'null'" );
66 return false;
67 }
68
69 if ( value instanceof String )
70 {
71 strValue = ( String ) value;
72 }
73 else if ( value instanceof byte[] )
74 {
75 strValue = Strings.utf8ToString( ( byte[] ) value );
76 }
77 else
78 {
79 strValue = value.toString();
80 }
81
82 if ( strValue.length() == 0 )
83 {
84 LOG.debug( "Syntax invalid for '{}'", value );
85 return false;
86 }
87
88
89 int dollar = strValue.indexOf( '$' );
90
91 if ( dollar == -1 )
92 {
93
94 LOG.debug( "Syntax invalid for '{}'", value );
95 return false;
96 }
97
98 String mailboxType = strValue.substring( 0, dollar );
99
100 String mailbox = ( ( dollar < strValue.length() - 1 )
101 ? strValue.substring( dollar + 1 ) : "" );
102
103
104 if ( mailbox.indexOf( '$' ) != -1 )
105 {
106 LOG.debug( "Syntax invalid for '{}'", value );
107 return false;
108 }
109
110
111 if ( !Strings.isPrintableString( mailboxType ) )
112 {
113 LOG.debug( "Syntax invalid for '{}'", value );
114 return false;
115 }
116
117
118 boolean result = ( Strings.isIA5String( mailbox ) );
119
120 if ( result )
121 {
122 LOG.debug( "Syntax valid for '{}'", value );
123 }
124 else
125 {
126 LOG.debug( "Syntax invalid for '{}'", value );
127 }
128
129 return result;
130 }
131 }