org.apache.directory.shared.ldap.ldif
Class LdifAttributesReader

java.lang.Object
  extended by org.apache.directory.shared.ldap.ldif.LdifReader
      extended by org.apache.directory.shared.ldap.ldif.LdifAttributesReader
All Implemented Interfaces:
java.lang.Iterable<LdifEntry>

public class LdifAttributesReader
extends LdifReader

  <ldif-file> ::= "version:" <fill> <number> <seps> <dn-spec> <sep> 
  <ldif-content-change>
  
  <ldif-content-change> ::= 
    <number> <oid> <options-e> <value-spec> <sep> <attrval-specs-e> 
    <ldif-attrval-record-e> | 
    <alpha> <chars-e> <options-e> <value-spec> <sep> <attrval-specs-e> 
    <ldif-attrval-record-e> | 
    "control:" <fill> <number> <oid> <spaces-e> <criticality> 
    <value-spec-e> <sep> <controls-e> 
        "changetype:" <fill> <changerecord-type> <ldif-change-record-e> |
    "changetype:" <fill> <changerecord-type> <ldif-change-record-e>
                              
  <ldif-attrval-record-e> ::= <seps> <dn-spec> <sep> <attributeType> 
    <options-e> <value-spec> <sep> <attrval-specs-e> 
    <ldif-attrval-record-e> | e
                              
  <ldif-change-record-e> ::= <seps> <dn-spec> <sep> <controls-e> 
    "changetype:" <fill> <changerecord-type> <ldif-change-record-e> | e
                              
  <dn-spec> ::= "dn:" <fill> <safe-string> | "dn::" <fill> <base64-string>
                              
  <controls-e> ::= "control:" <fill> <number> <oid> <spaces-e> <criticality> 
    <value-spec-e> <sep> <controls-e> | e
                              
  <criticality> ::= "true" | "false" | e
                              
  <oid> ::= '.' <number> <oid> | e
                              
  <attrval-specs-e> ::= <number> <oid> <options-e> <value-spec> <sep> 
  <attrval-specs-e> | 
    <alpha> <chars-e> <options-e> <value-spec> <sep> <attrval-specs-e> | e
                              
  <value-spec-e> ::= <value-spec> | e
  
  <value-spec> ::= ':' <fill> <safe-string-e> | 
    "::" <fill> <base64-chars> | 
    ":<" <fill> <url>
  
  <attributeType> ::= <number> <oid> | <alpha> <chars-e>
  
  <options-e> ::= ';' <char> <chars-e> <options-e> |e
                              
  <chars-e> ::= <char> <chars-e> |  e
  
  <changerecord-type> ::= "add" <sep> <attributeType> <options-e> <value-spec> 
  <sep> <attrval-specs-e> | 
    "delete" <sep> | 
    "modify" <sep> <mod-type> <fill> <attributeType> <options-e> <sep> 
    <attrval-specs-e> <sep> '-' <sep> <mod-specs-e> | 
    "moddn" <sep> <newrdn> <sep> "deleteoldrdn:" <fill> <0-1> <sep> 
    <newsuperior-e> <sep> |
    "modrdn" <sep> <newrdn> <sep> "deleteoldrdn:" <fill> <0-1> <sep> 
    <newsuperior-e> <sep>
  
  <newrdn> ::= ':' <fill> <safe-string> | "::" <fill> <base64-chars>
  
  <newsuperior-e> ::= "newsuperior" <newrdn> | e
  
  <mod-specs-e> ::= <mod-type> <fill> <attributeType> <options-e> 
    <sep> <attrval-specs-e> <sep> '-' <sep> <mod-specs-e> | e
  
  <mod-type> ::= "add:" | "delete:" | "replace:"
  
  <url> ::= <a Uniform Resource Locator, as defined in [6]>
  
  
  
  LEXICAL
  -------
  
  <fill>           ::= ' ' <fill> | e
  <char>           ::= <alpha> | <digit> | '-'
  <number>         ::= <digit> <digits>
  <0-1>            ::= '0' | '1'
  <digits>         ::= <digit> <digits> | e
  <digit>          ::= '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9'
  <seps>           ::= <sep> <seps-e> 
  <seps-e>         ::= <sep> <seps-e> | e
  <sep>            ::= 0x0D 0x0A | 0x0A
  <spaces>         ::= ' ' <spaces-e>
  <spaces-e>       ::= ' ' <spaces-e> | e
  <safe-string-e>  ::= <safe-string> | e
  <safe-string>    ::= <safe-init-char> <safe-chars>
  <safe-init-char> ::= [0x01-0x09] | 0x0B | 0x0C | [0x0E-0x1F] | [0x21-0x39] | 0x3B | [0x3D-0x7F]
  <safe-chars>     ::= <safe-char> <safe-chars> | e
  <safe-char>      ::= [0x01-0x09] | 0x0B | 0x0C | [0x0E-0x7F]
  <base64-string>  ::= <base64-char> <base64-chars>
  <base64-chars>   ::= <base64-char> <base64-chars> | e
  <base64-char>    ::= 0x2B | 0x2F | [0x30-0x39] | 0x3D | [0x41-9x5A] | [0x61-0x7A]
  <alpha>          ::= [0x41-0x5A] | [0x61-0x7A]
  
  COMMENTS
  --------
  - The ldap-oid VN is not correct in the RFC-2849. It has been changed from 1*DIGIT 0*1("." 1*DIGIT) to
  DIGIT+ ("." DIGIT+)*
  - The mod-spec lacks a sep between *attrval-spec and "-".
  - The BASE64-UTF8-STRING should be BASE64-CHAR BASE64-STRING
  - The ValueSpec rule must accept multilines values. In this case, we have a LF followed by a 
  single space before the continued value.
 

Version:
$Rev$, $Date$
Author:
Apache Directory Project

Nested Class Summary
 
Nested classes/interfaces inherited from class org.apache.directory.shared.ldap.ldif.LdifReader
LdifReader.Position
 
Field Summary
 
Fields inherited from class org.apache.directory.shared.ldap.ldif.LdifReader
ATTRVAL_SPEC, ATTRVAL_SPEC_OR_SEP, CHANGE, containsChanges, containsEntries, DEFAULT_VERSION, error, in, LDIF_ENTRY, lines, MOD_SPEC, position, prefetched, SIZE_LIMIT_DEFAULT, sizeLimit, UNKNOWN, version
 
Constructor Summary
LdifAttributesReader()
          Constructors
 
Method Summary
 javax.naming.directory.Attributes parseAttributes(java.lang.String ldif)
          A method which parses a ldif string and returns a list of entries.
 
Methods inherited from class org.apache.directory.shared.ldap.ldif.LdifReader
containsEntries, getError, getSizeLimit, getVersion, hasError, hasNext, iterator, next, parseAttributeValue, parseAttributeValue, parseLdif, parseLdif, parseLdifFile, parseLdifFile, parseSimpleValue, parseValue, readLines, remove, setSizeLimit
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

LdifAttributesReader

public LdifAttributesReader()
Constructors

Method Detail

parseAttributes

public javax.naming.directory.Attributes parseAttributes(java.lang.String ldif)
                                                  throws javax.naming.NamingException
A method which parses a ldif string and returns a list of entries.

Parameters:
ldif - The ldif string
Returns:
A list of entries, or an empty List
Throws:
javax.naming.NamingException - If something went wrong


Copyright © 2003-2009 Apache Software Foundation. All Rights Reserved.