# Interface SSIExternalResolver

All Known Implementing Classes:
  `SSIServletExternalResolver`

public interface SSIExternalResolver
Interface used by SSIMediator to talk to the 'outside world' ( usually a servlet ).

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addVariableNames(Collection<String> variableNames)`
  Adds any external variables to the variableNames collection.
  `Date`
  `getCurrentDate()`
  Returns the current date.
  `long`
  `getFileLastModified(String path, boolean virtual)`
  Returns the last modified timestamp of the specified file.
  `long`
  `getFileSize(String path, boolean virtual)`
  Returns the size of the specified file in bytes.
  `String`
  `getFileText(String path, boolean virtual)`
  Returns the text content of the specified file.
  `String`
  `getVariableValue(String name)`
  Returns the value of the named variable, or null if not found.
  `void`
  `log(String message, Throwable throwable)`
  Logs a message, optionally with an associated throwable.
  `void`
  `setVariableValue(String name, String value)`
  Set the named variable to the specified value.

- ## Method Details

  - ### addVariableNames

    void addVariableNames(Collection<String> variableNames)
    Adds any external variables to the variableNames collection.
    Parameters:
      `variableNames` - the collection to add to

  - ### getVariableValue

    String getVariableValue(String name)
    Returns the value of the named variable, or null if not found.
    Parameters:
      `name` - of the variable
    Returns:
      the variable value

  - ### setVariableValue

    void setVariableValue(String name, String value)
    Set the named variable to the specified value. If value is null, then the variable will be removed ( ie. a call to getVariableValue will return null )
    Parameters:
      `name` - of the variable
      `value` - of the variable

  - ### getCurrentDate

    Date getCurrentDate()
    Returns the current date. This is useful for putting the SSI stuff in a regression test. Since you can make the current date a constant, it makes testing easier since the output won't change.
    Returns:
      the data

  - ### getFileSize

    long getFileSize(String path, boolean virtual) throws IOException
    Returns the size of the specified file in bytes.
    Parameters:
      `path` - the file path
      `virtual` - true for virtual (webapp-relative) path, false for physical path
    Returns:
      the file size in bytes
    Throws:
      `IOException` - if the file cannot be accessed

  - ### getFileLastModified

    long getFileLastModified(String path, boolean virtual) throws IOException
    Returns the last modified timestamp of the specified file.
    Parameters:
      `path` - the file path
      `virtual` - true for virtual (webapp-relative) path, false for physical path
    Returns:
      the last modified time in milliseconds
    Throws:
      `IOException` - if the file cannot be accessed

  - ### getFileText

    String getFileText(String path, boolean virtual) throws IOException
    Returns the text content of the specified file.
    Parameters:
      `path` - the file path
      `virtual` - true for virtual (webapp-relative) path, false for physical path
    Returns:
      the file content as a string
    Throws:
      `IOException` - if the file cannot be read

  - ### log

    void log(String message, Throwable throwable)
    Logs a message, optionally with an associated throwable.
    Parameters:
      `message` - the log message
      `throwable` - the associated throwable, or null