Class 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
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      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
      • 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)