CE-1955 Update to use new AbstractQQQApplication and QApplicationJavalinServer

This commit is contained in:
2024-12-03 20:46:37 -06:00
parent f7bd049b81
commit 131da68a38
2 changed files with 33 additions and 39 deletions

View File

@ -23,11 +23,9 @@ package com.kingsrook.sampleapp;
import com.kingsrook.qqq.backend.core.logging.QLogger; import com.kingsrook.qqq.backend.core.logging.QLogger;
import com.kingsrook.qqq.backend.core.model.metadata.QInstance;
import com.kingsrook.qqq.backend.javalin.QJavalinImplementation;
import com.kingsrook.qqq.backend.javalin.QJavalinMetaData; import com.kingsrook.qqq.backend.javalin.QJavalinMetaData;
import com.kingsrook.qqq.middleware.javalin.QApplicationJavalinServer;
import com.kingsrook.sampleapp.metadata.SampleMetaDataProvider; import com.kingsrook.sampleapp.metadata.SampleMetaDataProvider;
import io.javalin.Javalin;
/******************************************************************************* /*******************************************************************************
@ -39,9 +37,7 @@ public class SampleJavalinServer
private static final int PORT = 8000; private static final int PORT = 8000;
private QInstance qInstance; private QApplicationJavalinServer qApplicationJavalinServer;
private Javalin javalinService;
@ -59,42 +55,28 @@ public class SampleJavalinServer
** **
*******************************************************************************/ *******************************************************************************/
public void startJavalinServer() public void startJavalinServer()
{
startJavalinServer(PORT);
}
/*******************************************************************************
**
*******************************************************************************/
public void startJavalinServer(int port)
{ {
try try
{ {
qInstance = SampleMetaDataProvider.defineInstance();
SampleMetaDataProvider.primeTestDatabase("prime-test-database.sql"); SampleMetaDataProvider.primeTestDatabase("prime-test-database.sql");
QJavalinImplementation qJavalinImplementation = new QJavalinImplementation(qInstance); qApplicationJavalinServer = new QApplicationJavalinServer(new SampleMetaDataProvider());
qJavalinImplementation.setJavalinMetaData(new QJavalinMetaData() qApplicationJavalinServer.setServeFrontendMaterialDashboard(true);
qApplicationJavalinServer.setServeLegacyUnversionedMiddlewareAPI(true);
qApplicationJavalinServer.setPort(port);
qApplicationJavalinServer.setJavalinMetaData(new QJavalinMetaData()
.withUploadedFileArchiveTableName(SampleMetaDataProvider.UPLOAD_FILE_ARCHIVE_TABLE_NAME)); .withUploadedFileArchiveTableName(SampleMetaDataProvider.UPLOAD_FILE_ARCHIVE_TABLE_NAME));
qApplicationJavalinServer.start();
javalinService = Javalin.create(config ->
{
config.router.apiBuilder(qJavalinImplementation.getRoutes());
// todo - not all?
config.bundledPlugins.enableCors(cors -> cors.addRule(corsRule -> corsRule.anyHost()));
}).start(PORT);
/////////////////////////////////////////////////////////////////
// set the server to hot-swap the q instance before all routes //
/////////////////////////////////////////////////////////////////
QJavalinImplementation.setQInstanceHotSwapSupplier(() ->
{
try
{
return (SampleMetaDataProvider.defineInstance());
}
catch(Exception e)
{
LOG.warn("Error hot-swapping meta data", e);
return (null);
}
});
javalinService.before(QJavalinImplementation::hotSwapQInstance);
javalinService.after(ctx -> ctx.res().setHeader("Access-Control-Allow-Origin", "http://localhost:3000"));
} }
catch(Exception e) catch(Exception e)
{ {
@ -109,9 +91,9 @@ public class SampleJavalinServer
*******************************************************************************/ *******************************************************************************/
public void stopJavalinServer() public void stopJavalinServer()
{ {
if(javalinService != null) if(qApplicationJavalinServer != null)
{ {
javalinService.stop(); qApplicationJavalinServer.stop();
} }
} }
} }

View File

@ -34,6 +34,7 @@ import com.kingsrook.qqq.backend.core.actions.dashboard.widgets.QuickSightChartR
import com.kingsrook.qqq.backend.core.actions.processes.BackendStep; import com.kingsrook.qqq.backend.core.actions.processes.BackendStep;
import com.kingsrook.qqq.backend.core.exceptions.QException; import com.kingsrook.qqq.backend.core.exceptions.QException;
import com.kingsrook.qqq.backend.core.exceptions.QValueException; import com.kingsrook.qqq.backend.core.exceptions.QValueException;
import com.kingsrook.qqq.backend.core.instances.AbstractQQQApplication;
import com.kingsrook.qqq.backend.core.instances.QInstanceEnricher; import com.kingsrook.qqq.backend.core.instances.QInstanceEnricher;
import com.kingsrook.qqq.backend.core.instances.QMetaDataVariableInterpreter; import com.kingsrook.qqq.backend.core.instances.QMetaDataVariableInterpreter;
import com.kingsrook.qqq.backend.core.model.actions.processes.RunBackendStepInput; import com.kingsrook.qqq.backend.core.model.actions.processes.RunBackendStepInput;
@ -94,7 +95,7 @@ import org.apache.commons.io.IOUtils;
/******************************************************************************* /*******************************************************************************
** **
*******************************************************************************/ *******************************************************************************/
public class SampleMetaDataProvider public class SampleMetaDataProvider extends AbstractQQQApplication
{ {
public static boolean USE_MYSQL = false; public static boolean USE_MYSQL = false;
@ -128,6 +129,17 @@ public class SampleMetaDataProvider
/***************************************************************************
**
***************************************************************************/
@Override
public QInstance defineQInstance() throws QException
{
return defineInstance();
}
/******************************************************************************* /*******************************************************************************
** **
*******************************************************************************/ *******************************************************************************/