mirror of
https://github.com/Kingsrook/qqq.git
synced 2025-07-17 20:50:44 +00:00
Implementation of QContext everywhere, instead of passing QInstance and QSession in all ActionInputs
This commit is contained in:
@ -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);
|
||||
|
@ -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"));
|
||||
|
||||
|
@ -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"));
|
||||
|
@ -26,10 +26,12 @@ import java.time.ZonedDateTime;
|
||||
import java.util.Base64;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import com.kingsrook.qqq.backend.core.context.QContext;
|
||||
import com.kingsrook.qqq.backend.core.exceptions.QInstanceValidationException;
|
||||
import com.kingsrook.qqq.backend.core.model.data.QRecord;
|
||||
import com.kingsrook.qqq.backend.core.model.metadata.QInstance;
|
||||
import com.kingsrook.qqq.backend.core.model.metadata.authentication.TableBasedAuthenticationMetaData;
|
||||
import com.kingsrook.qqq.backend.core.model.session.QSession;
|
||||
import com.kingsrook.qqq.backend.core.modules.authentication.implementations.TableBasedAuthenticationModule;
|
||||
import com.kingsrook.qqq.backend.core.utils.JsonUtils;
|
||||
import com.kingsrook.qqq.backend.core.utils.SleepUtils;
|
||||
@ -192,6 +194,7 @@ public class QJavalinImplementationAuthenticationTest extends QJavalinTestBase
|
||||
TableBasedAuthenticationMetaData tableBasedAuthenticationMetaData = new TableBasedAuthenticationMetaData();
|
||||
qInstance.addTable(tableBasedAuthenticationMetaData.defineStandardUserTable(TestUtils.BACKEND_NAME_MEMORY));
|
||||
qInstance.addTable(tableBasedAuthenticationMetaData.defineStandardSessionTable(TestUtils.BACKEND_NAME_MEMORY));
|
||||
QContext.init(qInstance, new QSession());
|
||||
|
||||
try
|
||||
{
|
||||
@ -202,7 +205,7 @@ public class QJavalinImplementationAuthenticationTest extends QJavalinTestBase
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
fail("Error inserting test user.");
|
||||
fail("Error inserting test user.", e);
|
||||
}
|
||||
|
||||
qInstance.setAuthentication(tableBasedAuthenticationMetaData);
|
||||
|
@ -26,6 +26,7 @@ import java.util.List;
|
||||
import com.kingsrook.qqq.backend.core.actions.tables.InsertAction;
|
||||
import com.kingsrook.qqq.backend.core.actions.tables.QueryAction;
|
||||
import com.kingsrook.qqq.backend.core.actions.tables.UpdateAction;
|
||||
import com.kingsrook.qqq.backend.core.context.QContext;
|
||||
import com.kingsrook.qqq.backend.core.exceptions.QException;
|
||||
import com.kingsrook.qqq.backend.core.model.actions.tables.insert.InsertInput;
|
||||
import com.kingsrook.qqq.backend.core.model.actions.tables.query.QCriteriaOperator;
|
||||
@ -40,6 +41,8 @@ import com.kingsrook.qqq.backend.core.utils.JsonUtils;
|
||||
import kong.unirest.HttpResponse;
|
||||
import kong.unirest.Unirest;
|
||||
import org.json.JSONObject;
|
||||
import org.junit.jupiter.api.AfterEach;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||
@ -50,6 +53,25 @@ import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||
*******************************************************************************/
|
||||
class QJavalinScriptsHandlerTest extends QJavalinTestBase
|
||||
{
|
||||
@BeforeEach
|
||||
public void beforeEach() throws Exception
|
||||
{
|
||||
QContext.init(TestUtils.defineInstance(), new QSession());
|
||||
super.beforeEach();
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
*******************************************************************************/
|
||||
@AfterEach
|
||||
void afterEach()
|
||||
{
|
||||
QContext.clear();
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
@ -57,14 +79,12 @@ class QJavalinScriptsHandlerTest extends QJavalinTestBase
|
||||
@Test
|
||||
void testGetRecordDeveloperMode() throws QException
|
||||
{
|
||||
UpdateInput updateInput = new UpdateInput(TestUtils.defineInstance());
|
||||
updateInput.setSession(new QSession());
|
||||
UpdateInput updateInput = new UpdateInput();
|
||||
updateInput.setTableName("person");
|
||||
updateInput.setRecords(List.of(new QRecord().withValue("id", 1).withValue("testScriptId", 47)));
|
||||
new UpdateAction().execute(updateInput);
|
||||
|
||||
InsertInput insertInput = new InsertInput(TestUtils.defineInstance());
|
||||
insertInput.setSession(new QSession());
|
||||
InsertInput insertInput = new InsertInput();
|
||||
insertInput.setTableName("script");
|
||||
insertInput.setRecords(List.of(new QRecord().withValue("id", 47).withValue("currentScriptRevisionId", 100)));
|
||||
new InsertAction().execute(insertInput);
|
||||
@ -99,8 +119,7 @@ class QJavalinScriptsHandlerTest extends QJavalinTestBase
|
||||
@Test
|
||||
void testStoreRecordAssociatedScript() throws QException
|
||||
{
|
||||
InsertInput insertInput = new InsertInput(TestUtils.defineInstance());
|
||||
insertInput.setSession(new QSession());
|
||||
InsertInput insertInput = new InsertInput();
|
||||
insertInput.setTableName("scriptType");
|
||||
insertInput.setRecords(List.of(new QRecord().withValue("id", 1).withValue("name", "Test")));
|
||||
new InsertAction().execute(insertInput);
|
||||
@ -110,8 +129,7 @@ class QJavalinScriptsHandlerTest extends QJavalinTestBase
|
||||
.field("commitMessage", "Javalin Commit")
|
||||
.asString();
|
||||
|
||||
QueryInput queryInput = new QueryInput(TestUtils.defineInstance());
|
||||
queryInput.setSession(new QSession());
|
||||
QueryInput queryInput = new QueryInput();
|
||||
queryInput.setTableName("scriptRevision");
|
||||
queryInput.setFilter(new QQueryFilter()
|
||||
.withCriteria(new QFilterCriteria("contents", QCriteriaOperator.EQUALS, List.of("var j = 0;")))
|
||||
@ -129,8 +147,7 @@ class QJavalinScriptsHandlerTest extends QJavalinTestBase
|
||||
@Test
|
||||
void testTestAssociatedScript() throws QException
|
||||
{
|
||||
InsertInput insertInput = new InsertInput(TestUtils.defineInstance());
|
||||
insertInput.setSession(new QSession());
|
||||
InsertInput insertInput = new InsertInput();
|
||||
insertInput.setTableName("scriptType");
|
||||
insertInput.setRecords(List.of(new QRecord().withValue("id", 1).withValue("name", "Test")));
|
||||
new InsertAction().execute(insertInput);
|
||||
@ -158,8 +175,7 @@ class QJavalinScriptsHandlerTest extends QJavalinTestBase
|
||||
@Test
|
||||
void testGetAssociatedScriptLogs() throws QException
|
||||
{
|
||||
InsertInput insertInput = new InsertInput(TestUtils.defineInstance());
|
||||
insertInput.setSession(new QSession());
|
||||
InsertInput insertInput = new InsertInput();
|
||||
insertInput.setTableName("scriptLog");
|
||||
insertInput.setRecords(List.of(new QRecord().withValue("id", 1).withValue("output", "testOutput").withValue("scriptRevisionId", 100)));
|
||||
new InsertAction().execute(insertInput);
|
||||
|
@ -517,8 +517,7 @@ public class TestUtils
|
||||
*******************************************************************************/
|
||||
public static void insertRecords(QInstance qInstance, QTableMetaData table, List<QRecord> records) throws QException
|
||||
{
|
||||
InsertInput insertInput = new InsertInput(qInstance);
|
||||
insertInput.setSession(new QSession());
|
||||
InsertInput insertInput = new InsertInput();
|
||||
insertInput.setTableName(table.getName());
|
||||
insertInput.setRecords(records);
|
||||
new InsertAction().execute(insertInput);
|
||||
|
Reference in New Issue
Block a user