private SyncRepl parseInternal()

in plugins/openldap.syncrepl/src/main/java/org/apache/directory/studio/openldap/syncrepl/SyncReplParser.java [108:453]


    private SyncRepl parseInternal( char[] chars, Position pos, SyncReplParserException parserException )
    {
        SyncRepl syncRepl = new SyncRepl();
        boolean foundAtLeastOneProperty = false;

        char c = Strings.charAt( chars, pos.start );

        do
        {
            // Whitespace
            if ( Character.isWhitespace( c ) )
            {
                // We ignore all whitespaces
                pos.start++;
            }

            // rid
            else if ( Strings.areEquals( chars, pos.start, KEYWORD_RID, false ) >= 0 )
            {
                foundAtLeastOneProperty = true;
                pos.start += KEYWORD_RID.length();

                parseRid( chars, pos, syncRepl, parserException );
            }

            // provider
            else if ( Strings.areEquals( chars, pos.start, KEYWORD_PROVIDER, false ) >= 0 )
            {
                foundAtLeastOneProperty = true;
                pos.start += KEYWORD_PROVIDER.length();

                parseProvider( chars, pos, syncRepl, parserException );
            }

            // searchbase
            else if ( Strings.areEquals( chars, pos.start, KEYWORD_SEARCHBASE, false ) >= 0 )
            {
                foundAtLeastOneProperty = true;
                pos.start += KEYWORD_SEARCHBASE.length();

                parseSearchBase( chars, pos, syncRepl, parserException );
            }

            // type
            else if ( Strings.areEquals( chars, pos.start, KEYWORD_TYPE, false ) >= 0 )
            {
                foundAtLeastOneProperty = true;
                pos.start += KEYWORD_TYPE.length();

                parseType( chars, pos, syncRepl, parserException );
            }

            // interval
            else if ( Strings.areEquals( chars, pos.start, KEYWORD_INTERVAL, false ) >= 0 )
            {
                foundAtLeastOneProperty = true;
                pos.start += KEYWORD_INTERVAL.length();

                parseInterval( chars, pos, syncRepl, parserException );
            }

            // retry
            else if ( Strings.areEquals( chars, pos.start, KEYWORD_RETRY, false ) >= 0 )
            {
                foundAtLeastOneProperty = true;
                pos.start += KEYWORD_RETRY.length();

                parseRetry( chars, pos, syncRepl, parserException );
            }

            // filter
            else if ( Strings.areEquals( chars, pos.start, KEYWORD_FILTER, false ) >= 0 )
            {
                foundAtLeastOneProperty = true;
                pos.start += KEYWORD_FILTER.length();

                parseFilter( chars, pos, syncRepl, parserException );
            }

            // scope
            else if ( Strings.areEquals( chars, pos.start, KEYWORD_SCOPE, false ) >= 0 )
            {
                foundAtLeastOneProperty = true;
                pos.start += KEYWORD_SCOPE.length();

                parseScope( chars, pos, syncRepl, parserException );
            }

            // attrsonly
            else if ( Strings.areEquals( chars, pos.start, KEYWORD_ATTRSONLY, false ) >= 0 )
            {
                foundAtLeastOneProperty = true;
                pos.start += KEYWORD_ATTRSONLY.length();

                syncRepl.setAttrsOnly( true );
            }

            // attrs
            else if ( Strings.areEquals( chars, pos.start, KEYWORD_ATTRS, false ) >= 0 )
            {
                foundAtLeastOneProperty = true;
                pos.start += KEYWORD_ATTRS.length();

                parseAttrs( chars, pos, syncRepl, parserException );
            }

            // sizelimit
            else if ( Strings.areEquals( chars, pos.start, KEYWORD_SIZELIMIT, false ) >= 0 )
            {
                foundAtLeastOneProperty = true;
                pos.start += KEYWORD_SIZELIMIT.length();

                parseSizeLimit( chars, pos, syncRepl, parserException );
            }

            // timelimit
            else if ( Strings.areEquals( chars, pos.start, KEYWORD_TIMELIMIT, false ) >= 0 )
            {
                foundAtLeastOneProperty = true;
                pos.start += KEYWORD_TIMELIMIT.length();

                parseTimeLimit( chars, pos, syncRepl, parserException );
            }

            // schemachecking
            else if ( Strings.areEquals( chars, pos.start, KEYWORD_SCHEMACHECKING, false ) >= 0 )
            {
                foundAtLeastOneProperty = true;
                pos.start += KEYWORD_SCHEMACHECKING.length();

                parseSchemaChecking( chars, pos, syncRepl, parserException );
            }

            // network-timeout
            else if ( Strings.areEquals( chars, pos.start, KEYWORD_NETWORK_TIMEOUT, false ) >= 0 )
            {
                foundAtLeastOneProperty = true;
                pos.start += KEYWORD_NETWORK_TIMEOUT.length();

                parseNetworkTimeout( chars, pos, syncRepl, parserException );
            }

            // timeout
            else if ( Strings.areEquals( chars, pos.start, KEYWORD_TIMEOUT, false ) >= 0 )
            {
                foundAtLeastOneProperty = true;
                pos.start += KEYWORD_TIMEOUT.length();

                parseTimeout( chars, pos, syncRepl, parserException );
            }

            // bindmethod
            else if ( Strings.areEquals( chars, pos.start, KEYWORD_BINDMETHOD, false ) >= 0 )
            {
                foundAtLeastOneProperty = true;
                pos.start += KEYWORD_BINDMETHOD.length();

                parseBindMethod( chars, pos, syncRepl, parserException );
            }

            // binddn
            else if ( Strings.areEquals( chars, pos.start, KEYWORD_BINDDN, false ) >= 0 )
            {
                foundAtLeastOneProperty = true;
                pos.start += KEYWORD_BINDDN.length();

                parseBindDn( chars, pos, syncRepl, parserException );
            }

            // saslmech
            else if ( Strings.areEquals( chars, pos.start, KEYWORD_SASLMECH, false ) >= 0 )
            {
                foundAtLeastOneProperty = true;
                pos.start += KEYWORD_SASLMECH.length();

                parseSaslMech( chars, pos, syncRepl, parserException );
            }

            // authcid
            else if ( Strings.areEquals( chars, pos.start, KEYWORD_AUTHCID, false ) >= 0 )
            {
                foundAtLeastOneProperty = true;
                pos.start += KEYWORD_AUTHCID.length();

                parseAuthcId( chars, pos, syncRepl, parserException );
            }

            // authzid
            else if ( Strings.areEquals( chars, pos.start, KEYWORD_AUTHZID, false ) >= 0 )
            {
                foundAtLeastOneProperty = true;
                pos.start += KEYWORD_AUTHZID.length();

                parseAuthzId( chars, pos, syncRepl, parserException );
            }

            // credentials
            else if ( Strings.areEquals( chars, pos.start, KEYWORD_CREDENTIALS, false ) >= 0 )
            {
                foundAtLeastOneProperty = true;
                pos.start += KEYWORD_CREDENTIALS.length();

                parseCredentials( chars, pos, syncRepl, parserException );
            }

            // realm
            else if ( Strings.areEquals( chars, pos.start, KEYWORD_REALM, false ) >= 0 )
            {
                foundAtLeastOneProperty = true;
                pos.start += KEYWORD_REALM.length();

                parseRealm( chars, pos, syncRepl, parserException );
            }

            // secprops
            else if ( Strings.areEquals( chars, pos.start, KEYWORD_SECPROPS, false ) >= 0 )
            {
                foundAtLeastOneProperty = true;
                pos.start += KEYWORD_SECPROPS.length();

                parseSecProps( chars, pos, syncRepl, parserException );
            }

            // keepalive
            else if ( Strings.areEquals( chars, pos.start, KEYWORD_KEEPALIVE, false ) >= 0 )
            {
                foundAtLeastOneProperty = true;
                pos.start += KEYWORD_KEEPALIVE.length();

                parseKeepAlive( chars, pos, syncRepl, parserException );
            }

            // starttls
            else if ( Strings.areEquals( chars, pos.start, KEYWORD_STARTTLS, false ) >= 0 )
            {
                foundAtLeastOneProperty = true;
                pos.start += KEYWORD_STARTTLS.length();

                parseStartTls( chars, pos, syncRepl, parserException );
            }

            // tls_cert
            else if ( Strings.areEquals( chars, pos.start, KEYWORD_TLS_CERT, false ) >= 0 )
            {
                foundAtLeastOneProperty = true;
                pos.start += KEYWORD_TLS_CERT.length();

                parseTlsCert( chars, pos, syncRepl, parserException );
            }

            // tls_key
            else if ( Strings.areEquals( chars, pos.start, KEYWORD_TLS_KEY, false ) >= 0 )
            {
                foundAtLeastOneProperty = true;
                pos.start += KEYWORD_TLS_KEY.length();

                parseTlsKey( chars, pos, syncRepl, parserException );
            }

            // tls_cacert
            else if ( Strings.areEquals( chars, pos.start, KEYWORD_TLS_CACERT, false ) >= 0 )
            {
                foundAtLeastOneProperty = true;
                pos.start += KEYWORD_TLS_CACERT.length();

                parseTlsCacert( chars, pos, syncRepl, parserException );
            }

            // tls_cacertdir
            else if ( Strings.areEquals( chars, pos.start, KEYWORD_TLS_CACERTDIR, false ) >= 0 )
            {
                foundAtLeastOneProperty = true;
                pos.start += KEYWORD_TLS_CACERTDIR.length();

                parseTlsCacertDir( chars, pos, syncRepl, parserException );
            }

            // tls_reqcert
            else if ( Strings.areEquals( chars, pos.start, KEYWORD_TLS_REQCERT, false ) >= 0 )
            {
                foundAtLeastOneProperty = true;
                pos.start += KEYWORD_TLS_REQCERT.length();

                parseTlsReqCert( chars, pos, syncRepl, parserException );
            }

            // tls_ciphersuite
            else if ( Strings.areEquals( chars, pos.start, KEYWORD_TLS_CIPHERSUITE, false ) >= 0 )
            {
                foundAtLeastOneProperty = true;
                pos.start += KEYWORD_TLS_CIPHERSUITE.length();

                parseTlsCipherSuite( chars, pos, syncRepl, parserException );
            }

            // tls_crlcheck
            else if ( Strings.areEquals( chars, pos.start, KEYWORD_TLS_CRLCHECK, false ) >= 0 )
            {
                foundAtLeastOneProperty = true;
                pos.start += KEYWORD_TLS_CRLCHECK.length();

                parseTlsCrlCheck( chars, pos, syncRepl, parserException );
            }

            // logbase
            else if ( Strings.areEquals( chars, pos.start, KEYWORD_LOGBASE, false ) >= 0 )
            {
                foundAtLeastOneProperty = true;
                pos.start += KEYWORD_LOGBASE.length();

                parseLogBase( chars, pos, syncRepl, parserException );
            }

            // logfilter
            else if ( Strings.areEquals( chars, pos.start, KEYWORD_LOGFILTER, false ) >= 0 )
            {
                foundAtLeastOneProperty = true;
                pos.start += KEYWORD_LOGFILTER.length();

                parseLogFilter( chars, pos, syncRepl, parserException );
            }

            // syncdata
            else if ( Strings.areEquals( chars, pos.start, KEYWORD_SYNCDATA, false ) >= 0 )
            {
                foundAtLeastOneProperty = true;
                pos.start += KEYWORD_SYNCDATA.length();

                parseSyncData( chars, pos, syncRepl, parserException );
            }

            // We couldn't find the appropriate option
            else
            {
                pos.start++;
            }
        }
        while ( ( pos.start != pos.length ) && ( ( c = Strings.charAt( chars, pos.start ) ) != '\0' ) );

        if ( foundAtLeastOneProperty )
        {
            return syncRepl;
        }

        return null;
    }