@Nonnull
    public String resolveExpression(@Nonnull String expression) {
        StringBuilder result = new StringBuilder(expression.length());

        int position = 0;
        while (position < expression.length()) {
            char c = expression.charAt(position);
            if (c == '#') {
                int beginningSeparatorPosition = position;
                int endingSeparatorPosition = expression.indexOf('#', beginningSeparatorPosition + 1);
                if (endingSeparatorPosition == -1) {
                    throw new IllegalStateException("Invalid expression '" + expression + "', no ending '#' after beginning '#' at position " + beginningSeparatorPosition);
                }
                String key = expression.substring(beginningSeparatorPosition + 1, endingSeparatorPosition);
                Function expressionProcessor = functionsByName.get(key);
                String value;
                if (expressionProcessor == null) {
                    value = "#unsupported_expression#";
                    logger.info("Unsupported expression '" + key + "'");
                } else {
                    try {
                        value = expressionProcessor.evaluate();
                    } catch (Exception e) {
                        value = "#expression_error#";
                        logger.log(Level.WARNING, "Error evaluating expression '" + key + "'", e);
                    }
                }
                StringUtils2.appendEscapedNonAlphaNumericChars(value, false, result);
                position = endingSeparatorPosition + 1;

            } else {
                result.append(c);
                position++;
            }
        }
        if (logger.isLoggable(Level.FINEST))
            logger.log(Level.FINEST, "resolveExpression(" + expression + "): " + result);
        return result.toString();

    }
@Nonnull
    public String resolveExpression(@Nonnull String expression) {
        StringBuilder result = new StringBuilder(expression.length());

        int position = 0;
        while (position < expression.length()) {
            char c = expression.charAt(position);
            if (c == '#') {
                int beginningSeparatorPosition = position;
                int endingSeparatorPosition = expression.indexOf('#', beginningSeparatorPosition + 1);
                if (endingSeparatorPosition == -1) {
                    throw new IllegalStateException("Invalid expression '" + expression + "', no ending '#' after beginning '#' at position " + beginningSeparatorPosition);
                }
                String key = expression.substring(beginningSeparatorPosition + 1, endingSeparatorPosition);
                Function expressionProcessor = functionsByName.get(key);
                String value;
                if (expressionProcessor == null) {
                    value = "#unsupported_expression#";
                    logger.info("Unsupported expression '" + key + "'");
                } else {
                    try {
                        value = expressionProcessor.evaluate();
                    } catch (Exception e) {
                        value = "#expression_error#";
                        logger.log(Level.WARNING, "Error evaluating expression '" + key + "'", e);
                    }
                }
                StringUtils2.appendEscapedNonAlphaNumericChars(value, false, result);
                position = endingSeparatorPosition + 1;

            } else {
                result.append(c);
                position++;
            }
        }
        if (logger.isLoggable(Level.FINEST))
            logger.log(Level.FINEST, "resolveExpression(" + expression + "): " + result);
        return result.toString();

    }
@ Nonnull public String resolveExpression ( @ Nonnull String expression ) { StringBuilder result = new StringBuilder ( expression . length ( ) ) ; int position = 0 ; while ( position < expression . length ( ) ) { char c = expression . charAt ( position ) ; if ( c == ' ' ) { int beginningSeparatorPosition = position ; int endingSeparatorPosition = expression . indexOf ( ' ' , beginningSeparatorPosition + 1 ) ; if ( endingSeparatorPosition == - 1 ) { throw new IllegalStateException ( "Invalid expression '" + expression + "', no ending '#' after beginning '#' at position " + beginningSeparatorPosition ) ; } String key = expression . substring ( beginningSeparatorPosition + 1 , endingSeparatorPosition ) ; Function expressionProcessor = functionsByName . get ( key ) ; String value ; if ( expressionProcessor == null ) { value = "#unsupported_expression#" ; logger . info ( "Unsupported expression '" + key + "'" ) ; } else { try { value = expressionProcessor . evaluate ( ) ; } catch ( Exception e ) { value = "#expression_error#" ; logger . log ( Level . WARNING , "Error evaluating expression '" + key + "'" , e ) ; } } StringUtils2 . appendEscapedNonAlphaNumericChars ( value , false , result ) ; position = endingSeparatorPosition + 1 ; } else { result . append ( c ) ; position ++ ; } } if ( logger . isLoggable ( Level . FINEST ) ) logger . log ( Level . FINEST , "resolveExpression(" + expression + "): " + result ) ; return result . toString ( ) ; }
Replace all the '#' based keywords (e.g. <code>#hostname#</code>) by their value.

@param expression the expression to resolve (e.g. <code>"servers.#hostname#."</code>)
@return the resolved expression (e.g. <code>"servers.tomcat5"</code>)
Replace all the # based keywords ( e . g . <code > #hostname#< / code > ) by their value .