Package 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 Description protected booleanallowExecprotected static StringCOMMAND_ENDThe end patternprotected static StringCOMMAND_STARTThe start patternprotected HashMap<String,SSICommand>commandsprotected intdebugprotected SSIExternalResolverssiExternalResolver
-
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 voidaddBuiltinCommands()voidaddCommand(String name, SSICommand command)protected booleancharCmp(String buf, int index, String command)protected booleanisQuote(char c)protected booleanisSpace(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.longprocess(Reader reader, long lastModifiedDate, 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 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 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:
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 fromrequestHandler- 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 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
-
isSpace
protected boolean isSpace(char c)
-
isQuote
protected boolean isQuote(char c)
-
-