diff --git a/qqq-sample-project/src/main/java/com/kingsrook/sampleapp/SampleJavalinServer.java b/qqq-sample-project/src/main/java/com/kingsrook/sampleapp/SampleJavalinServer.java index e78227fd..ead70bfc 100644 --- a/qqq-sample-project/src/main/java/com/kingsrook/sampleapp/SampleJavalinServer.java +++ b/qqq-sample-project/src/main/java/com/kingsrook/sampleapp/SampleJavalinServer.java @@ -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(); } } } diff --git a/qqq-sample-project/src/main/java/com/kingsrook/sampleapp/metadata/SampleMetaDataProvider.java b/qqq-sample-project/src/main/java/com/kingsrook/sampleapp/metadata/SampleMetaDataProvider.java index 77b05601..062d8721 100644 --- a/qqq-sample-project/src/main/java/com/kingsrook/sampleapp/metadata/SampleMetaDataProvider.java +++ b/qqq-sample-project/src/main/java/com/kingsrook/sampleapp/metadata/SampleMetaDataProvider.java @@ -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(); + } + + + /******************************************************************************* ** *******************************************************************************/