# Package org.apache.catalina.ssi

This package contains code that is used by the SsiInvoker.

See: Description

Interface Summary
Interface | Description
--- | ---
SSICommand | The interface that all SSI commands ( SSIEcho, SSIInclude, ...) must implement.
SSIExternalResolver | Interface used by SSIMediator to talk to the 'outside world' ( usually a servlet )

Class Summary
Class | Description
--- | ---
ByteArrayServletOutputStream | Class that extends ServletOuputStream, used as a wrapper from within `SsiInclude`
ExpressionParseTree | Represents a parsed expression.
ExpressionTokenizer | Parses an expression string to return the individual tokens.
ResponseIncludeWrapper | A HttpServletResponseWrapper, used from `SSIServletExternalResolver`
SSIConditional | SSI command that handles all conditional directives.
SSIConfig | Implements the Server-side #exec command
SSIEcho | Return the result associated with the supplied Server Variable.
SSIExec | Implements the Server-side #exec command
SSIFilter | Filter to process SSI requests within a webpage.
SSIFlastmod | Implements the Server-side #flastmod command
SSIFsize | Implements the Server-side #fsize command
SSIInclude | Implements the Server-side #include command
SSIMediator | Allows the different SSICommand implementations to share data/talk to each other
SSIPrintenv | Implements the Server-side #printenv command
SSIProcessor | The entry point to SSI processing.
SSIServlet | Servlet to process SSI requests within a webpage.
SSIServletExternalResolver | An implementation of SSIExternalResolver that is used with servlets.
SSIServletExternalResolver.ServletContextAndPath |
SSIServletRequestUtil |
SSISet | Implements the Server-side #set command

Exception Summary
Exception | Description
--- | ---
SSIStopProcessingException | Exception used to tell SSIProcessor that it should stop processing SSI commands.

## Package org.apache.catalina.ssi Description

This package contains code that is used by the SsiInvoker.

This class consists of `SsiMediator.java` which works as a mediator between the different SsiCommands. To add a command you have to implement the `SsiCommand` interface and extend the `SsiMediator`. Commands currently implemented are

- SsiConfig - Implementation of the NCSA command Config i.e. <!--#config errmsg="error?"-->
- SsiEcho - Implementation of the NCSA command Echo i.e. <!--#echo var="SERVER_NAME"-->
- SsiExec - Not implemented
- SsiFlastMod - Implementation of the NCSA command flastmod i.e. <!--#flastmod virtual="file"-->
- SsiFsize - Implementation of the NCSA command fsize i.e. <!--#fsize file="file"-->
- SsiInclude - Implementation of the NCSA command Include i.e. <!--#config virtual="includefile"-->