org.apache.catalina.ssi

## Class SSIProcessor

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

-     public class SSIProcessor
      extends 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
    Modifier and Type | Field and Description
    --- | ---
    `protected boolean` | `allowExec`
    `protected static String` | `COMMAND_END` The end pattern
    `protected static String` | `COMMAND_START` The start pattern
    `protected HashMap<String,SSICommand>` | `commands`
    `protected int` | `debug`
    `protected SSIExternalResolver` | `ssiExternalResolver`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `SSIProcessor(SSIExternalResolver ssiExternalResolver, int debug, boolean allowExec)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `addBuiltinCommands()`
    `void` | `addCommand(String name, SSICommand command)`
    `protected boolean` | `charCmp(String buf, int index, String command)`
    `protected boolean` | `isQuote(char c)`
    `protected boolean` | `isSpace(char c)`
    `protected String[]` | `parseParamNames(StringBuilder cmd, int start)` Parse a StringBuilder and take out the param type token.
    `protected String[]` | `parseParamValues(StringBuilder cmd, int start, int count)` Parse a StringBuilder and take out the param token.
    `long` | `process(Reader reader, long lastModifiedDate, 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 String COMMAND_START

      The start pattern
      See Also:
        Constant Field Values

    - #### COMMAND_END

          protected static final String COMMAND_END

      The end pattern
      See Also:
        Constant Field Values

    - #### ssiExternalResolver

          protected final SSIExternalResolver ssiExternalResolver

    - #### commands

          protected final HashMap<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(String name,
                        SSICommand command)

    - #### process

          public long process(Reader reader,
                     long lastModifiedDate,
                     PrintWriter writer)
                       throws 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:
        `IOException` - when things go horribly awry. Should be unlikely since the SSICommand usually catches 'normal' IOExceptions.

    - #### parseParamNames

          protected String[] parseParamNames(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 String[] parseParamValues(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(String buf,
                        int index,
                        String command)

    - #### isSpace

          protected boolean isSpace(char c)

    - #### isQuote

          protected boolean isQuote(char c)

Copyright © 2000-2021 Apache Software Foundation. All Rights Reserved.