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.model.metadata.QInstance;
import com.kingsrook.qqq.backend.javalin.QJavalinImplementation;
import com.kingsrook.qqq.backend.javalin.QJavalinMetaData;
import com.kingsrook.qqq.middleware.javalin.QApplicationJavalinServer;
import com.kingsrook.sampleapp.metadata.SampleMetaDataProvider;
import io.javalin.Javalin;
/*******************************************************************************
@ -39,9 +37,7 @@ public class SampleJavalinServer
private static final int PORT = 8000;
private QInstance qInstance;
private Javalin javalinService;
private QApplicationJavalinServer qApplicationJavalinServer;
@ -59,42 +55,28 @@ public class SampleJavalinServer
**
*******************************************************************************/
public void startJavalinServer()
{
startJavalinServer(PORT);
}
/*******************************************************************************
**
*******************************************************************************/
public void startJavalinServer(int port)
{
try
{
qInstance = SampleMetaDataProvider.defineInstance();
SampleMetaDataProvider.primeTestDatabase("prime-test-database.sql");
QJavalinImplementation qJavalinImplementation = new QJavalinImplementation(qInstance);
qJavalinImplementation.setJavalinMetaData(new QJavalinMetaData()
qApplicationJavalinServer = new QApplicationJavalinServer(new SampleMetaDataProvider());
qApplicationJavalinServer.setServeFrontendMaterialDashboard(true);
qApplicationJavalinServer.setServeLegacyUnversionedMiddlewareAPI(true);
qApplicationJavalinServer.setPort(port);
qApplicationJavalinServer.setJavalinMetaData(new QJavalinMetaData()
.withUploadedFileArchiveTableName(SampleMetaDataProvider.UPLOAD_FILE_ARCHIVE_TABLE_NAME));
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"));
qApplicationJavalinServer.start();
}
catch(Exception e)
{
@ -109,9 +91,9 @@ public class SampleJavalinServer
*******************************************************************************/
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.exceptions.QException;
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.QMetaDataVariableInterpreter;
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;
@ -128,6 +129,17 @@ public class SampleMetaDataProvider
/***************************************************************************
**
***************************************************************************/
@Override
public QInstance defineQInstance() throws QException
{
return defineInstance();
}
/*******************************************************************************
**
*******************************************************************************/