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 Modifier and Type Field Description protected boolean
allowExec
protected static java.lang.String
COMMAND_END
The end patternprotected static java.lang.String
COMMAND_START
The start patternprotected java.util.HashMap<java.lang.String,SSICommand>
commands
protected int
debug
protected SSIExternalResolver
ssiExternalResolver
-
Constructor Summary
Constructors Constructor Description SSIProcessor(SSIExternalResolver ssiExternalResolver, int debug, boolean allowExec)
-
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.
-
-
-
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 fromlastModifiedDate
- resource last modification datewriter
- 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 fromrequestHandler
- 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 fromrequestHandler
- Parameters:
cmd
- a value of type 'StringBuilder'start
- index on which parsing will startcount
- 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)
-
-