Package org.apache.catalina.ssi

## Class SSIServletExternalResolver

- java.lang.Object
- - org.apache.catalina.ssi.SSIServletExternalResolver

- All Implemented Interfaces:
    `SSIExternalResolver`

      public class SSIServletExternalResolver
      extends java.lang.Object
      implements SSIExternalResolver

  An implementation of SSIExternalResolver that is used with servlets.
  Author:
    Dan Sandberg, David Becker

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class | Description
    --- | --- | ---
    `protected static class` | `SSIServletExternalResolver.ServletContextAndPath` |

  - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `protected ServletContext` | `context` |
    `protected int` | `debug` |
    `protected java.lang.String` | `inputEncoding` |
    `protected boolean` | `isVirtualWebappRelative` |
    `protected HttpServletRequest` | `req` |
    `protected HttpServletResponse` | `res` |
    `protected java.lang.String[]` | `VARIABLE_NAMES` |

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `SSIServletExternalResolver​(ServletContext context, HttpServletRequest req, HttpServletResponse res, boolean isVirtualWebappRelative, int debug, java.lang.String inputEncoding)` |

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `addVariableNames​(java.util.Collection<java.lang.String> variableNames)` | Adds any external variables to the variableNames collection.
    `protected java.lang.String` | `getAbsolutePath​(java.lang.String path)` |
    `protected java.lang.String` | `getCGIVariable​(java.lang.String name)` |
    `java.util.Date` | `getCurrentDate()` | Returns the current date.
    `long` | `getFileLastModified​(java.lang.String path, boolean virtual)` |
    `long` | `getFileSize​(java.lang.String path, boolean virtual)` |
    `java.lang.String` | `getFileText​(java.lang.String originalPath, boolean virtual)` |
    `protected java.lang.String` | `getPathWithoutContext​(java.lang.String contextPath, java.lang.String servletPath)` |
    `protected java.lang.String` | `getPathWithoutFileName​(java.lang.String servletPath)` |
    `protected java.lang.Object` | `getReqAttributeIgnoreCase​(java.lang.String targetName)` |
    `protected SSIServletExternalResolver.ServletContextAndPath` | `getServletContextAndPath​(java.lang.String originalPath, boolean virtual)` |
    `protected SSIServletExternalResolver.ServletContextAndPath` | `getServletContextAndPathFromNonVirtualPath​(java.lang.String nonVirtualPath)` |
    `protected SSIServletExternalResolver.ServletContextAndPath` | `getServletContextAndPathFromVirtualPath​(java.lang.String virtualPath)` |
    `protected java.net.URLConnection` | `getURLConnection​(java.lang.String originalPath, boolean virtual)` |
    `java.lang.String` | `getVariableValue​(java.lang.String name)` |
    `protected boolean` | `isNameReserved​(java.lang.String name)` |
    `protected boolean` | `isRootContext​(ServletContext servletContext)` |
    `void` | `log​(java.lang.String message, java.lang.Throwable throwable)` |
    `protected java.lang.String` | `nullToEmptyString​(java.lang.String string)` |
    `void` | `setVariableValue​(java.lang.String name, java.lang.String value)` | Set the named variable to the specified value.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### VARIABLE_NAMES

          protected final java.lang.String[] VARIABLE_NAMES

    - #### context

          protected final ServletContext context

    - #### req

          protected final HttpServletRequest req

    - #### res

          protected final HttpServletResponse res

    - #### isVirtualWebappRelative

          protected final boolean isVirtualWebappRelative

    - #### debug

          protected final int debug

    - #### inputEncoding

          protected final java.lang.String inputEncoding

  - ### Constructor Detail

    - #### SSIServletExternalResolver

          public SSIServletExternalResolver​(ServletContext context,
                                            HttpServletRequest req,
                                            HttpServletResponse res,
                                            boolean isVirtualWebappRelative,
                                            int debug,
                                            java.lang.String inputEncoding)

  - ### Method Detail

    - #### log

          public void log​(java.lang.String message,
                          java.lang.Throwable throwable)

      Specified by:
        `log` in interface `SSIExternalResolver`

    - #### addVariableNames

          public void addVariableNames​(java.util.Collection<java.lang.String> variableNames)

      Description copied from interface: `SSIExternalResolver`
      Adds any external variables to the variableNames collection.
      Specified by:
        `addVariableNames` in interface `SSIExternalResolver`
      Parameters:
        `variableNames` - the collection to add to

    - #### getReqAttributeIgnoreCase

          protected java.lang.Object getReqAttributeIgnoreCase​(java.lang.String targetName)

    - #### isNameReserved

          protected boolean isNameReserved​(java.lang.String name)

    - #### setVariableValue

          public void setVariableValue​(java.lang.String name,
                                       java.lang.String value)

      Description copied from interface: `SSIExternalResolver`
      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 )
      Specified by:
        `setVariableValue` in interface `SSIExternalResolver`
      Parameters:
        `name` - of the variable
        `value` - of the variable

    - #### getVariableValue

          public java.lang.String getVariableValue​(java.lang.String name)

      Specified by:
        `getVariableValue` in interface `SSIExternalResolver`

    - #### getCGIVariable

          protected java.lang.String getCGIVariable​(java.lang.String name)

    - #### getCurrentDate

          public java.util.Date getCurrentDate()

      Description copied from interface: `SSIExternalResolver`
      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.
      Specified by:
        `getCurrentDate` in interface `SSIExternalResolver`
      Returns:
        the data

    - #### nullToEmptyString

          protected java.lang.String nullToEmptyString​(java.lang.String string)

    - #### getPathWithoutFileName

          protected java.lang.String getPathWithoutFileName​(java.lang.String servletPath)

    - #### getPathWithoutContext

          protected java.lang.String getPathWithoutContext​(java.lang.String contextPath,
                                                           java.lang.String servletPath)

    - #### getAbsolutePath

          protected java.lang.String getAbsolutePath​(java.lang.String path)
                                              throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### getServletContextAndPathFromNonVirtualPath

          protected SSIServletExternalResolver.ServletContextAndPath getServletContextAndPathFromNonVirtualPath​(java.lang.String nonVirtualPath)
                                                                                                         throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### getServletContextAndPathFromVirtualPath

          protected SSIServletExternalResolver.ServletContextAndPath getServletContextAndPathFromVirtualPath​(java.lang.String virtualPath)
                                                                                                      throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### isRootContext

          protected boolean isRootContext​(ServletContext servletContext)

    - #### getServletContextAndPath

          protected SSIServletExternalResolver.ServletContextAndPath getServletContextAndPath​(java.lang.String originalPath,
                                                                                              boolean virtual)
                                                                                       throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### getURLConnection

          protected java.net.URLConnection getURLConnection​(java.lang.String originalPath,
                                                            boolean virtual)
                                                     throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### getFileLastModified

          public long getFileLastModified​(java.lang.String path,
                                          boolean virtual)
                                   throws java.io.IOException

      Specified by:
        `getFileLastModified` in interface `SSIExternalResolver`
      Throws:
        `java.io.IOException`

    - #### getFileSize

          public long getFileSize​(java.lang.String path,
                                  boolean virtual)
                           throws java.io.IOException

      Specified by:
        `getFileSize` in interface `SSIExternalResolver`
      Throws:
        `java.io.IOException`

    - #### getFileText

          public java.lang.String getFileText​(java.lang.String originalPath,
                                              boolean virtual)
                                       throws java.io.IOException

      Specified by:
        `getFileText` in interface `SSIExternalResolver`
      Throws:
        `java.io.IOException`