Package org.fbsql.servlet
Class DbRequestProcessor
- java.lang.Object
-
- org.fbsql.servlet.DbRequestProcessor
-
- All Implemented Interfaces:
java.lang.Runnable
public class DbRequestProcessor extends java.lang.Object implements java.lang.Runnable
DbRequestProcessor contains the processing logic that the @link(DbServlet) performs as it receives each servlet request from the container.
-
-
Field Summary
Fields Modifier and Type Field Description private javax.servlet.AsyncContextasyncContextprivate ConnectionPoolManagerconnectionPoolManagerprivate booleandebugprivate java.util.Map<java.lang.String,ParseStmtDeclareStatement.StmtDeclareStatement>declaredStatementsMapprivate static java.lang.StringEXEC_TYPE_QUERYExecute type: query WARNING! This constant used also in JavaScript partprivate static java.lang.StringEXEC_TYPE_UPDATEExecute type: update WARNING! This constant used also in JavaScript partprivate static java.lang.StringFBSQL_REMOTE_ROLEprivate static java.lang.StringFBSQL_REMOTE_SESSION_CREATION_TIMEprivate static java.lang.StringFBSQL_REMOTE_SESSION_IDprivate static java.lang.StringFBSQL_REMOTE_SESSION_LAST_ACCESSED_TIMEprivate static java.lang.StringFBSQL_REMOTE_USERprivate static java.lang.StringFBSQL_REMOTE_USER_INFOprivate static java.lang.StringFUN_REMOTE_ROLEprivate static java.lang.StringFUN_REMOTE_SESSION_CREATION_TIMEprivate static java.lang.StringFUN_REMOTE_SESSION_IDprivate static java.lang.StringFUN_REMOTE_SESSION_LAST_ACCESSED_TIMEprivate static java.lang.StringFUN_REMOTE_USERprivate static java.lang.StringFUN_REMOTE_USER_INFOprivate static java.lang.StringFUT_GET_COOKIEprivate static java.lang.StringFUT_GET_HTTP_HEADER_AS_CHARprivate static java.lang.StringFUT_GET_HTTP_HEADER_AS_DATEprivate static java.lang.StringFUT_GET_HTTP_HEADER_AS_INTEGERprivate static java.lang.StringFUT_GET_HTTP_SESSION_ATTRIBUTE_AS_CHARprivate static java.lang.StringFUT_GET_HTTP_SESSION_ATTRIBUTE_AS_INTEGERprivate static java.lang.StringFUT_IN_ROLEprivate java.lang.StringinstanceDirectoryprivate java.lang.StringinstanceNameprivate java.util.Map<java.lang.String,java.util.Map<java.lang.String,org.mozilla.javascript.Function>>mapFunctionsprivate java.util.Map<StaticStatement,ReadyResult>mapJsonprivate java.util.Map<java.lang.String,org.mozilla.javascript.Scriptable>mapScopesprivate java.util.Queue<javax.servlet.AsyncContext>ongoingRequestsprivate ParseNativeStmtparseNativeStmtprivate java.util.Map<java.lang.String,NonNativeProcedure>proceduresMapprivate DbServlet.SharedCodersharedCoderprivate static java.lang.StringSQL_FALSESQL FALSE constantprivate static java.lang.StringSQL_NULLSQL NULL constantprivate static java.lang.StringSQL_QUOTE_CHARSQL quote characterprivate static java.lang.StringSQL_TRUESQL TRUE constantprivate ParseStmtConnectTo.StmtConnectTostmtConnectTo
-
Constructor Summary
Constructors Constructor Description DbRequestProcessor(java.lang.String instanceName, java.lang.String instanceDirectory, ParseStmtConnectTo.StmtConnectTo stmtConnectTo, javax.servlet.AsyncContext asyncCtx, boolean debug, ConnectionPoolManager connectionPoolManager, java.util.Map<java.lang.String,ParseStmtDeclareStatement.StmtDeclareStatement> declaredStatementsMap, java.util.Map<java.lang.String,NonNativeProcedure> proceduresMap, java.util.Map<java.lang.String,org.mozilla.javascript.Scriptable> mapScopes, java.util.Map<java.lang.String,java.util.Map<java.lang.String,org.mozilla.javascript.Function>> mapFunctions, java.util.Map<StaticStatement,ReadyResult> mapJson, java.util.Queue<javax.servlet.AsyncContext> ongoingRequests, ParseNativeStmt parseNativeStmt, DbServlet.SharedCoder sharedCoder)Constructs DbRequestProcessor object
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private static java.lang.StringgenerateExecutionResultJson(long timestamp, java.lang.String updateResultJson)Generate Execution Result JSON-formatted stringprivate static java.lang.StringgenerateStatementInfoJson(java.lang.String instanceName, java.lang.String statementId, java.lang.String unprocessedNamedPreparedStatement, java.lang.String paramArrayJson)Generate Statement Info JSON-formatted stringprivate static java.lang.StringgenerateUserInfoJson(javax.servlet.http.HttpServletRequest request, java.lang.String clientInfoJson, java.lang.CharSequence sessionInfoJson)Generate User Info JSON-formatted stringprivate static java.lang.StringgetClientInfo(javax.servlet.http.HttpServletRequest request, java.util.Base64.Decoder decoder)private static java.io.BufferedReadergetCustomDataReader(javax.servlet.http.HttpServletRequest request, java.util.Base64.Decoder decoder)voidrun()Implementation of Runnable.run() method Overview of request processor logic - Parse request body - Check SQL statement against white list (list of allowed SQL statements) - Execute SQL statement if allowedprivate static java.lang.StringsimpleExecuteUpdateResultJson(int rowCount)Utility method generates ExecuteUpdate result JSON
-
-
-
Field Detail
-
SQL_NULL
private static final java.lang.String SQL_NULL
SQL NULL constant- See Also:
- Constant Field Values
-
SQL_FALSE
private static final java.lang.String SQL_FALSE
SQL FALSE constant- See Also:
- Constant Field Values
-
SQL_TRUE
private static final java.lang.String SQL_TRUE
SQL TRUE constant- See Also:
- Constant Field Values
-
SQL_QUOTE_CHAR
private static final java.lang.String SQL_QUOTE_CHAR
SQL quote character- See Also:
- Constant Field Values
-
EXEC_TYPE_QUERY
private static final java.lang.String EXEC_TYPE_QUERY
Execute type: query WARNING! This constant used also in JavaScript part- See Also:
- Constant Field Values
-
EXEC_TYPE_UPDATE
private static final java.lang.String EXEC_TYPE_UPDATE
Execute type: update WARNING! This constant used also in JavaScript part- See Also:
- Constant Field Values
-
FUT_IN_ROLE
private static final java.lang.String FUT_IN_ROLE
- See Also:
- Constant Field Values
-
FUT_GET_COOKIE
private static final java.lang.String FUT_GET_COOKIE
- See Also:
- Constant Field Values
-
FUT_GET_HTTP_SESSION_ATTRIBUTE_AS_CHAR
private static final java.lang.String FUT_GET_HTTP_SESSION_ATTRIBUTE_AS_CHAR
- See Also:
- Constant Field Values
-
FUT_GET_HTTP_SESSION_ATTRIBUTE_AS_INTEGER
private static final java.lang.String FUT_GET_HTTP_SESSION_ATTRIBUTE_AS_INTEGER
- See Also:
- Constant Field Values
-
FUT_GET_HTTP_HEADER_AS_CHAR
private static final java.lang.String FUT_GET_HTTP_HEADER_AS_CHAR
- See Also:
- Constant Field Values
-
FUT_GET_HTTP_HEADER_AS_DATE
private static final java.lang.String FUT_GET_HTTP_HEADER_AS_DATE
- See Also:
- Constant Field Values
-
FUT_GET_HTTP_HEADER_AS_INTEGER
private static final java.lang.String FUT_GET_HTTP_HEADER_AS_INTEGER
- See Also:
- Constant Field Values
-
FUN_REMOTE_USER
private static final java.lang.String FUN_REMOTE_USER
- See Also:
- Constant Field Values
-
FUN_REMOTE_ROLE
private static final java.lang.String FUN_REMOTE_ROLE
- See Also:
- Constant Field Values
-
FUN_REMOTE_SESSION_ID
private static final java.lang.String FUN_REMOTE_SESSION_ID
- See Also:
- Constant Field Values
-
FUN_REMOTE_SESSION_CREATION_TIME
private static final java.lang.String FUN_REMOTE_SESSION_CREATION_TIME
- See Also:
- Constant Field Values
-
FUN_REMOTE_SESSION_LAST_ACCESSED_TIME
private static final java.lang.String FUN_REMOTE_SESSION_LAST_ACCESSED_TIME
- See Also:
- Constant Field Values
-
FUN_REMOTE_USER_INFO
private static final java.lang.String FUN_REMOTE_USER_INFO
- See Also:
- Constant Field Values
-
FBSQL_REMOTE_USER
private static final java.lang.String FBSQL_REMOTE_USER
- See Also:
- Constant Field Values
-
FBSQL_REMOTE_ROLE
private static final java.lang.String FBSQL_REMOTE_ROLE
- See Also:
- Constant Field Values
-
FBSQL_REMOTE_SESSION_ID
private static final java.lang.String FBSQL_REMOTE_SESSION_ID
- See Also:
- Constant Field Values
-
FBSQL_REMOTE_SESSION_CREATION_TIME
private static final java.lang.String FBSQL_REMOTE_SESSION_CREATION_TIME
- See Also:
- Constant Field Values
-
FBSQL_REMOTE_SESSION_LAST_ACCESSED_TIME
private static final java.lang.String FBSQL_REMOTE_SESSION_LAST_ACCESSED_TIME
- See Also:
- Constant Field Values
-
FBSQL_REMOTE_USER_INFO
private static final java.lang.String FBSQL_REMOTE_USER_INFO
- See Also:
- Constant Field Values
-
instanceName
private java.lang.String instanceName
-
instanceDirectory
private java.lang.String instanceDirectory
-
stmtConnectTo
private ParseStmtConnectTo.StmtConnectTo stmtConnectTo
-
asyncContext
private javax.servlet.AsyncContext asyncContext
-
debug
private boolean debug
-
connectionPoolManager
private ConnectionPoolManager connectionPoolManager
-
declaredStatementsMap
private java.util.Map<java.lang.String,ParseStmtDeclareStatement.StmtDeclareStatement> declaredStatementsMap
-
proceduresMap
private java.util.Map<java.lang.String,NonNativeProcedure> proceduresMap
-
mapScopes
private java.util.Map<java.lang.String,org.mozilla.javascript.Scriptable> mapScopes
-
mapFunctions
private java.util.Map<java.lang.String,java.util.Map<java.lang.String,org.mozilla.javascript.Function>> mapFunctions
-
mapJson
private java.util.Map<StaticStatement,ReadyResult> mapJson
-
ongoingRequests
private java.util.Queue<javax.servlet.AsyncContext> ongoingRequests
-
sharedCoder
private DbServlet.SharedCoder sharedCoder
-
parseNativeStmt
private ParseNativeStmt parseNativeStmt
-
-
Constructor Detail
-
DbRequestProcessor
public DbRequestProcessor(java.lang.String instanceName, java.lang.String instanceDirectory, ParseStmtConnectTo.StmtConnectTo stmtConnectTo, javax.servlet.AsyncContext asyncCtx, boolean debug, ConnectionPoolManager connectionPoolManager, java.util.Map<java.lang.String,ParseStmtDeclareStatement.StmtDeclareStatement> declaredStatementsMap, java.util.Map<java.lang.String,NonNativeProcedure> proceduresMap, java.util.Map<java.lang.String,org.mozilla.javascript.Scriptable> mapScopes, java.util.Map<java.lang.String,java.util.Map<java.lang.String,org.mozilla.javascript.Function>> mapFunctions, java.util.Map<StaticStatement,ReadyResult> mapJson, java.util.Queue<javax.servlet.AsyncContext> ongoingRequests, ParseNativeStmt parseNativeStmt, DbServlet.SharedCoder sharedCoder)
Constructs DbRequestProcessor object- Parameters:
instanceName-stmtConnectTo-asyncCtx-debug-connectionPoolManager-declaredStatementsMap-proceduresMap-mapScopes-mapFunctions-mapJson-ongoingRequests-sharedCoder-
-
-
Method Detail
-
run
public void run()
Implementation of Runnable.run() method Overview of request processor logic - Parse request body - Check SQL statement against white list (list of allowed SQL statements) - Execute SQL statement if allowed- Specified by:
runin interfacejava.lang.Runnable
-
getClientInfo
private static java.lang.String getClientInfo(javax.servlet.http.HttpServletRequest request, java.util.Base64.Decoder decoder) throws java.io.IOException
- Throws:
java.io.IOException
-
getCustomDataReader
private static java.io.BufferedReader getCustomDataReader(javax.servlet.http.HttpServletRequest request, java.util.Base64.Decoder decoder) throws java.io.IOException
- Throws:
java.io.IOException
-
simpleExecuteUpdateResultJson
private static java.lang.String simpleExecuteUpdateResultJson(int rowCount)
Utility method generates ExecuteUpdate result JSON- Parameters:
rowCount-- Returns:
-
generateUserInfoJson
private static java.lang.String generateUserInfoJson(javax.servlet.http.HttpServletRequest request, java.lang.String clientInfoJson, java.lang.CharSequence sessionInfoJson) throws java.io.IOException, java.text.ParseException
Generate User Info JSON-formatted string- Parameters:
request-clientInfoJson-- Returns:
- Throws:
java.io.IOExceptionjava.text.ParseException
-
generateStatementInfoJson
private static java.lang.String generateStatementInfoJson(java.lang.String instanceName, java.lang.String statementId, java.lang.String unprocessedNamedPreparedStatement, java.lang.String paramArrayJson)
Generate Statement Info JSON-formatted string- Parameters:
instanceName-statementId-unprocessedNamedPreparedStatement-paramArrayJson-- Returns:
-
generateExecutionResultJson
private static java.lang.String generateExecutionResultJson(long timestamp, java.lang.String updateResultJson)
Generate Execution Result JSON-formatted string- Parameters:
timestamp-updateResultJson-- Returns:
-
-