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
`protected static class` `SSIServletExternalResolver.ServletContextAndPath`

### Field Summary

Fields
`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
`SSIServletExternalResolver​(ServletContext context, HttpServletRequest req, HttpServletResponse res, boolean isVirtualWebappRelative, int debug, java.lang.String inputEncoding)`

### Method Summary

All Methods Instance Methods Concrete Methods
`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`