Package org.apache.catalina.ssi

## Class SSIProcessor

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

    public class SSIProcessor
    extends java.lang.Object

The entry point to SSI processing. This class does the actual parsing, delegating to the SSIMediator, SSICommand, and SSIExternalResolver as necessary[

Author:
  Dan Sandberg, David Becker

### Field Summary

Fields
`protected boolean` `allowExec`
`protected static java.lang.String` `COMMAND_END` The end pattern
`protected static java.lang.String` `COMMAND_START` The start pattern
`protected java.util.HashMap<java.lang.String,​SSICommand>` `commands`
`protected int` `debug`
`protected SSIExternalResolver` `ssiExternalResolver`

### Constructor Summary

Constructors
`SSIProcessor​(SSIExternalResolver ssiExternalResolver, int debug, boolean allowExec)`

### Method Summary

All Methods Instance Methods Concrete Methods
`protected void` `addBuiltinCommands()`
`void` `addCommand​(java.lang.String name, SSICommand command)`
`protected boolean` `charCmp​(java.lang.String buf, int index, java.lang.String command)`
`protected boolean` `isQuote​(char c)`
`protected boolean` `isSpace​(char c)`
`protected java.lang.String[]` `parseParamNames​(java.lang.StringBuilder cmd, int start)` Parse a StringBuilder and take out the param type token.
`protected java.lang.String[]` `parseParamValues​(java.lang.StringBuilder cmd, int start, int count)` Parse a StringBuilder and take out the param token.
`long` `process​(java.io.Reader reader, long lastModifiedDate, java.io.PrintWriter writer)` Process a file with server-side commands, reading from reader and writing the processed version to writer.

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

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

### Field Detail

#### COMMAND_START

    protected static final java.lang.String COMMAND_START

The start pattern

See Also:
  Constant Field Values

#### COMMAND_END

    protected static final java.lang.String COMMAND_END

The end pattern

See Also:
  Constant Field Values

#### ssiExternalResolver

    protected final SSIExternalResolver ssiExternalResolver

#### commands

    protected final java.util.HashMap<java.lang.String,​SSICommand> commands

#### debug

    protected final int debug

#### allowExec

    protected final boolean allowExec

### Constructor Detail

#### SSIProcessor

    public SSIProcessor​(SSIExternalResolver ssiExternalResolver,
                        int debug,
                        boolean allowExec)

### Method Detail

#### addBuiltinCommands

    protected void addBuiltinCommands()

#### addCommand

    public void addCommand​(java.lang.String name,
                           SSICommand command)

#### process

    public long process​(java.io.Reader reader,
                        long lastModifiedDate,
                        java.io.PrintWriter writer)
                 throws java.io.IOException

Process a file with server-side commands, reading from reader and writing the processed version to writer. NOTE: We really should be doing this in a streaming way rather than converting it to an array first.

Parameters:
  `reader` - the reader to read the file containing SSIs from
  `lastModifiedDate` - resource last modification date
  `writer` - the writer to write the file with the SSIs processed.
Returns:
  the most current modified date resulting from any SSI commands
Throws:
  `java.io.IOException` - when things go horribly awry. Should be unlikely since the SSICommand usually catches 'normal' IOExceptions.

#### parseParamNames

    protected java.lang.String[] parseParamNames​(java.lang.StringBuilder cmd,
                                                 int start)

Parse a StringBuilder and take out the param type token. Called from `requestHandler`

Parameters:
  `cmd` - a value of type 'StringBuilder'
  `start` - index on which parsing will start
Returns:
  an array with the parameter names

#### parseParamValues

    protected java.lang.String[] parseParamValues​(java.lang.StringBuilder cmd,
                                                  int start,
                                                  int count)

Parse a StringBuilder and take out the param token. Called from `requestHandler`

Parameters:
  `cmd` - a value of type 'StringBuilder'
  `start` - index on which parsing will start
  `count` - number of values which should be parsed
Returns:
  an array with the parameter values

#### charCmp

    protected boolean charCmp​(java.lang.String buf,
                              int index,
                              java.lang.String command)

#### isSpace

    protected boolean isSpace​(char c)

#### isQuote

    protected boolean isQuote​(char c)