|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.apache.directory.shared.ldap.name.RdnParser
This class parse the name-component part or the following BNF grammar (as of
RFC2253, par. 3, and RFC1779, fig. 1) :
- <name-component> ::=
<attributeType> <spaces> '=' <spaces>
<attributeValue> <attributeTypeAndValues>
-
<attributeTypeAndValues> ::= <spaces> '+' <spaces>
<attributeType> <spaces> '=' <spaces>
<attributeValue> <attributeTypeAndValues> | e
-
<attributeType> ::= [a-zA-Z] <keychars> | <oidPrefix> [0-9]
<digits> <oids> | [0-9] <digits> <oids>
-
<keychars> ::= [a-zA-Z] <keychars> | [0-9] <keychars> | '-'
<keychars> | e
- <oidPrefix> ::= 'OID.' | 'oid.' | e
-
<oids> ::= '.' [0-9] <digits> <oids> | e
-
<attributeValue> ::= <pairs-or-strings> | '#' <hexstring>
|'"' <quotechar-or-pairs> '"'
- <pairs-or-strings> ::= '\'
<pairchar> <pairs-or-strings> | <stringchar>
<pairs-or-strings> | e
- <quotechar-or-pairs> ::=
<quotechar> <quotechar-or-pairs> | '\' <pairchar>
<quotechar-or-pairs> | e
- <pairchar> ::= ',' | '=' | '+' |
'<' | '>' | '#' | ';' | '\' | '"' | [0-9a-fA-F] [0-9a-fA-F]
-
<hexstring> ::= [0-9a-fA-F] [0-9a-fA-F] <hexpairs>
-
<hexpairs> ::= [0-9a-fA-F] [0-9a-fA-F] <hexpairs> | e
-
<digits> ::= [0-9] <digits> | e
- <stringchar> ::=
[0x00-0xFF] - [,=+<>#;\"\n\r]
- <quotechar> ::= [0x00-0xFF] -
[\"]
- <separator> ::= ',' | ';'
- <spaces> ::= ' '
<spaces> | e
A RDN is a part of a DN. It can be composed of many types, as in the RDN
following RDN :
ou=value + cn=other value
In this case, we have to store an 'ou' and a 'cn' in the RDN.
The types are case insensitive.
Spaces before and after types and values are not stored.
Spaces before and after '+' are not stored.
Thus, we can consider that the following RDNs are equals :
'ou=test 1'
' ou=test 1'
'ou =test 1'
'ou= test 1'
'ou=test 1 '
' ou = test 1 '
So are the following :
'ou=test 1+cn=test 2'
'ou = test 1 + cn = test 2'
' ou =test 1+ cn =test 2 '
'cn = test 2 +ou = test 1'
but the following are not equal :
'ou=test 1'
'ou=test 1'
because we have more than one spaces inside the value.
Constructor Summary | |
RdnParser()
|
Method Summary | |
static int |
parse(char[] chars,
int pos,
Rdn rdn)
Parse a NameComponent : |
static void |
parse(java.lang.String string,
Rdn rdn)
Parse a NameComponent : |
static int |
unescapeValue(java.lang.String value)
Parse this rule : |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
public RdnParser()
Method Detail |
public static int unescapeValue(java.lang.String value) throws java.lang.IllegalArgumentException
<attributeValue> ::= <pairs-or-strings> | '#'
<hexstring> |'"' <quotechar-or-pairs> '"'
<pairs-or-strings> ::= '\' <pairchar>
<pairs-or-strings> | <stringchar> <pairs-or-strings> | |
e
<quotechar-or-pairs> ::= <quotechar>
<quotechar-or-pairs> | '\' <pairchar>
<quotechar-or-pairs> | e
java.lang.IllegalArgumentException
public static int parse(char[] chars, int pos, Rdn rdn) throws javax.naming.InvalidNameException
<name-component> ::= <attributeType> <spaces> '=' <spaces> <attributeValue> <nameComponents>
pos
- The current position in the buffer
javax.naming.InvalidNameException
public static void parse(java.lang.String string, Rdn rdn) throws javax.naming.InvalidNameException
<name-component> ::= <attributeType> <spaces> '=' <spaces> <attributeValue> <nameComponents>
string
- The buffer to parserdn
- The RDN to fill. Beware that if the RDN is not empty, the new
AttributeTypeAndValue will be added.
javax.naming.InvalidNameException
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |