Implementation of QContext everywhere, instead of passing QInstance and QSession in all ActionInputs

This commit is contained in:
2023-01-15 19:30:57 -06:00
parent 69a6104393
commit d3fa1df56f
219 changed files with 1955 additions and 1581 deletions

View File

@ -53,6 +53,7 @@ import com.kingsrook.qqq.backend.core.actions.tables.QueryAction;
import com.kingsrook.qqq.backend.core.actions.tables.UpdateAction;
import com.kingsrook.qqq.backend.core.actions.values.SearchPossibleValueSourceAction;
import com.kingsrook.qqq.backend.core.adapters.QInstanceAdapter;
import com.kingsrook.qqq.backend.core.context.QContext;
import com.kingsrook.qqq.backend.core.exceptions.QAuthenticationException;
import com.kingsrook.qqq.backend.core.exceptions.QInstanceValidationException;
import com.kingsrook.qqq.backend.core.exceptions.QModuleDispatchException;
@ -190,6 +191,17 @@ public class QJavalinImplementation
service.routes(getRoutes());
service.before(QJavalinImplementation::hotSwapQInstance);
service.before((Context context) -> context.header("Content-Type", "application/json"));
service.after(QJavalinImplementation::clearQContext);
}
/*******************************************************************************
**
*******************************************************************************/
public static void clearQContext(Context context)
{
QContext.clear();
}
@ -336,7 +348,7 @@ public class QJavalinImplementation
public static void setupSession(Context context, AbstractActionInput input) throws QModuleDispatchException, QAuthenticationException
{
QAuthenticationModuleDispatcher qAuthenticationModuleDispatcher = new QAuthenticationModuleDispatcher();
QAuthenticationModuleInterface authenticationModule = qAuthenticationModuleDispatcher.getQModule(input.getAuthenticationMetaData());
QAuthenticationModuleInterface authenticationModule = qAuthenticationModuleDispatcher.getQModule(qInstance.getAuthentication());
try
{
@ -374,8 +386,9 @@ public class QJavalinImplementation
}
}
QContext.init(qInstance, null); // hmm...
QSession session = authenticationModule.createSession(qInstance, authenticationContext);
input.setSession(session);
QContext.init(qInstance, session, null, input);
/////////////////////////////////////////////////////////////////////////////////
// if we got a session id cookie in, then send it back with updated cookie age //
@ -463,7 +476,7 @@ public class QJavalinImplementation
List<Serializable> primaryKeys = new ArrayList<>();
primaryKeys.add(context.pathParam("primaryKey"));
DeleteInput deleteInput = new DeleteInput(qInstance);
DeleteInput deleteInput = new DeleteInput();
setupSession(context, deleteInput);
deleteInput.setTableName(table);
deleteInput.setPrimaryKeys(primaryKeys);
@ -492,7 +505,7 @@ public class QJavalinImplementation
{
String table = context.pathParam("table");
UpdateInput updateInput = new UpdateInput(qInstance);
UpdateInput updateInput = new UpdateInput();
setupSession(context, updateInput);
updateInput.setTableName(table);
@ -550,7 +563,7 @@ public class QJavalinImplementation
try
{
String table = context.pathParam("table");
InsertInput insertInput = new InsertInput(qInstance);
InsertInput insertInput = new InsertInput();
setupSession(context, insertInput);
insertInput.setTableName(table);
@ -599,7 +612,7 @@ public class QJavalinImplementation
String tableName = context.pathParam("table");
QTableMetaData table = qInstance.getTable(tableName);
String primaryKey = context.pathParam("primaryKey");
GetInput getInput = new GetInput(qInstance);
GetInput getInput = new GetInput();
setupSession(context, getInput);
getInput.setTableName(tableName);
@ -651,7 +664,7 @@ public class QJavalinImplementation
{
try
{
CountInput countInput = new CountInput(qInstance);
CountInput countInput = new CountInput();
setupSession(context, countInput);
countInput.setTableName(context.pathParam("table"));
@ -698,7 +711,7 @@ public class QJavalinImplementation
{
try
{
QueryInput queryInput = new QueryInput(qInstance);
QueryInput queryInput = new QueryInput();
setupSession(context, queryInput);
queryInput.setTableName(context.pathParam("table"));
queryInput.setShouldGenerateDisplayValues(true);
@ -738,7 +751,7 @@ public class QJavalinImplementation
{
try
{
MetaDataInput metaDataInput = new MetaDataInput(qInstance);
MetaDataInput metaDataInput = new MetaDataInput();
setupSession(context, metaDataInput);
MetaDataAction metaDataAction = new MetaDataAction();
MetaDataOutput metaDataOutput = metaDataAction.execute(metaDataInput);
@ -760,7 +773,7 @@ public class QJavalinImplementation
{
try
{
TableMetaDataInput tableMetaDataInput = new TableMetaDataInput(qInstance);
TableMetaDataInput tableMetaDataInput = new TableMetaDataInput();
setupSession(context, tableMetaDataInput);
String tableName = context.pathParam("table");
@ -798,7 +811,7 @@ public class QJavalinImplementation
{
try
{
ProcessMetaDataInput processMetaDataInput = new ProcessMetaDataInput(qInstance);
ProcessMetaDataInput processMetaDataInput = new ProcessMetaDataInput();
setupSession(context, processMetaDataInput);
String processName = context.pathParam("processName");
@ -830,11 +843,10 @@ public class QJavalinImplementation
{
try
{
InsertInput insertInput = new InsertInput(qInstance);
InsertInput insertInput = new InsertInput();
setupSession(context, insertInput);
RenderWidgetInput input = new RenderWidgetInput(qInstance)
.withSession(insertInput.getSession())
RenderWidgetInput input = new RenderWidgetInput()
.withWidgetMetaData(qInstance.getWidget(context.pathParam("name")));
// todo permission?
@ -910,7 +922,7 @@ public class QJavalinImplementation
/////////////////////////////////////////////
// set up the report action's input object //
/////////////////////////////////////////////
ExportInput exportInput = new ExportInput(qInstance);
ExportInput exportInput = new ExportInput();
setupSession(context, exportInput);
exportInput.setTableName(tableName);
exportInput.setReportFormat(reportFormat);
@ -1137,7 +1149,7 @@ public class QJavalinImplementation
throw (new QNotFoundException("Field " + fieldName + " in table " + tableName + " is not associated with a possible value source."));
}
SearchPossibleValueSourceInput input = new SearchPossibleValueSourceInput(qInstance);
SearchPossibleValueSourceInput input = new SearchPossibleValueSourceInput();
setupSession(context, input);
input.setPossibleValueSourceName(field.getPossibleValueSourceName());
input.setSearchTerm(searchTerm);

View File

@ -186,7 +186,7 @@ public class QJavalinProcessHandler
/////////////////////////////////////////////
// set up the report action's input object //
/////////////////////////////////////////////
ReportInput reportInput = new ReportInput(QJavalinImplementation.qInstance);
ReportInput reportInput = new ReportInput();
QJavalinImplementation.setupSession(context, reportInput);
PermissionsHelper.checkReportPermissionThrowing(reportInput, reportName);
@ -296,7 +296,7 @@ public class QJavalinProcessHandler
LOG.info(startAfterStep == null ? "Initiating process [" + processName + "] [" + processUUID + "]"
: "Resuming process [" + processName + "] [" + processUUID + "] after step [" + startAfterStep + "]");
RunProcessInput runProcessInput = new RunProcessInput(QJavalinImplementation.qInstance);
RunProcessInput runProcessInput = new RunProcessInput();
QJavalinImplementation.setupSession(context, runProcessInput);
runProcessInput.setProcessName(processName);
@ -484,8 +484,7 @@ public class QJavalinProcessHandler
+ File.separator + runProcessInput.getProcessName()
+ File.separator + qUploadedFile.getFilename();
InsertInput insertInput = new InsertInput(QJavalinImplementation.qInstance);
insertInput.setSession(runProcessInput.getSession());
InsertInput insertInput = new InsertInput();
insertInput.setTableName(QJavalinImplementation.javalinMetaData.getUploadedFileArchiveTableName());
insertInput.setRecords(List.of(new QRecord()
.withValue("fileName", fileName)
@ -569,7 +568,7 @@ public class QJavalinProcessHandler
try
{
AbstractActionInput input = new AbstractActionInput(QJavalinImplementation.qInstance);
AbstractActionInput input = new AbstractActionInput();
QJavalinImplementation.setupSession(context, input);
// todo... get process values? PermissionsHelper.checkProcessPermissionThrowing(input, context.pathParam("processName"));
@ -638,7 +637,7 @@ public class QJavalinProcessHandler
{
try
{
AbstractActionInput input = new AbstractActionInput(QJavalinImplementation.qInstance);
AbstractActionInput input = new AbstractActionInput();
QJavalinImplementation.setupSession(context, input);
// todo - need process values? PermissionsHelper.checkProcessPermissionThrowing(input, context.pathParam("processName"));

View File

@ -97,7 +97,7 @@ public class QJavalinScriptsHandler
String tableName = context.pathParam("table");
QTableMetaData table = QJavalinImplementation.qInstance.getTable(tableName);
String primaryKey = context.pathParam("primaryKey");
GetInput getInput = new GetInput(QJavalinImplementation.qInstance);
GetInput getInput = new GetInput();
QJavalinImplementation.setupSession(context, getInput);
getInput.setTableName(tableName);
@ -150,7 +150,7 @@ public class QJavalinScriptsHandler
Serializable scriptId = record.getValue(fieldName);
if(scriptId != null)
{
GetInput getScriptInput = new GetInput(QJavalinImplementation.qInstance);
GetInput getScriptInput = new GetInput();
QJavalinImplementation.setupSession(context, getScriptInput);
getScriptInput.setTableName("script");
getScriptInput.setPrimaryKey(scriptId);
@ -159,7 +159,7 @@ public class QJavalinScriptsHandler
{
thisScriptData.put("script", getScriptOutput.getRecord());
QueryInput queryInput = new QueryInput(QJavalinImplementation.qInstance);
QueryInput queryInput = new QueryInput();
QJavalinImplementation.setupSession(context, queryInput);
queryInput.setTableName("scriptRevision");
queryInput.setFilter(new QQueryFilter()
@ -227,7 +227,7 @@ public class QJavalinScriptsHandler
String scriptRevisionId = context.pathParam("scriptRevisionId");
QueryInput queryInput = new QueryInput(QJavalinImplementation.qInstance);
QueryInput queryInput = new QueryInput();
QJavalinImplementation.setupSession(context, queryInput);
queryInput.setTableName("scriptLog");
queryInput.setFilter(new QQueryFilter()
@ -265,7 +265,7 @@ public class QJavalinScriptsHandler
/////////////////////////////////////////////////////////////////////////////////
String tableName = context.pathParam("table");
QTableMetaData table = QJavalinImplementation.qInstance.getTable(tableName);
GetInput getInput = new GetInput(QJavalinImplementation.qInstance);
GetInput getInput = new GetInput();
getInput.setTableName(tableName);
QJavalinImplementation.setupSession(context, getInput);
PermissionsHelper.checkTablePermissionThrowing(getInput, TablePermissionSubType.READ);
@ -298,7 +298,7 @@ public class QJavalinScriptsHandler
try
{
StoreAssociatedScriptInput input = new StoreAssociatedScriptInput(QJavalinImplementation.qInstance);
StoreAssociatedScriptInput input = new StoreAssociatedScriptInput();
QJavalinImplementation.setupSession(context, input);
input.setCode(context.formParam("contents"));
@ -335,7 +335,7 @@ public class QJavalinScriptsHandler
{
getReferencedRecordToEnsureAccess(context);
TestScriptInput input = new TestScriptInput(QJavalinImplementation.qInstance);
TestScriptInput input = new TestScriptInput();
QJavalinImplementation.setupSession(context, input);
// todo delete? input.setRecordPrimaryKey(context.pathParam("primaryKey"));