/** * Internal method that resolves the value of a variable. * * <p>Most users of this class do not need to call this method. This method is called * automatically by the substitution process. * * <p>Writers of subclasses can override this method if they need to alter how each substitution * occurs. The method is passed the variable's name and must return the corresponding value. This * implementation uses the {@link #getVariableResolver()} with the variable's name as the key. * * @param variableName the name of the variable, not null * @param buf the buffer where the substitution is occurring, not null * @param startPos the start position of the variable including the prefix, valid * @param endPos the end position of the variable including the suffix, valid * @return the variable's value or <b>null</b> if the variable is unknown */ protected String resolveVariable( final String variableName, final StrBuilder buf, final int startPos, final int endPos) { final StrLookup<?> resolver = getVariableResolver(); if (resolver == null) { return null; } return resolver.lookup(variableName); }