diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/data/QRecordEntity.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/data/QRecordEntity.java
index f681aa58..26dfc195 100644
--- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/data/QRecordEntity.java
+++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/data/QRecordEntity.java
@@ -594,6 +594,7 @@ public abstract class QRecordEntity
{
Field tableNameField = entityClass.getDeclaredField("TABLE_NAME");
String tableNameValue = (String) tableNameField.get(null);
+
return (tableNameValue);
}
catch(Exception e)
diff --git a/qqq-middleware-javalin/pom.xml b/qqq-middleware-javalin/pom.xml
index 43ff6aef..c8c8a231 100644
--- a/qqq-middleware-javalin/pom.xml
+++ b/qqq-middleware-javalin/pom.xml
@@ -36,7 +36,7 @@
1.9.10
- 6.3.0
+ 6.6.0
@@ -117,6 +117,12 @@
assertj-core
test
+
+ com.kingsrook.qqq
+ qqq-middleware-api
+ 0.26.0-integration-20250615-161253
+ compile
+
diff --git a/qqq-middleware-javalin/src/main/java/com/kingsrook/qqq/middleware/javalin/QApplicationJavalinServer.java b/qqq-middleware-javalin/src/main/java/com/kingsrook/qqq/middleware/javalin/QApplicationJavalinServer.java
index ad470daa..e962e174 100644
--- a/qqq-middleware-javalin/src/main/java/com/kingsrook/qqq/middleware/javalin/QApplicationJavalinServer.java
+++ b/qqq-middleware-javalin/src/main/java/com/kingsrook/qqq/middleware/javalin/QApplicationJavalinServer.java
@@ -26,6 +26,7 @@ import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;
+import com.kingsrook.qqq.api.javalin.QJavalinApiHandler;
import com.kingsrook.qqq.backend.core.exceptions.QException;
import com.kingsrook.qqq.backend.core.exceptions.QInstanceValidationException;
import com.kingsrook.qqq.backend.core.instances.AbstractQQQApplication;
@@ -74,11 +75,12 @@ public class QApplicationJavalinServer
private Integer port = 8000;
private boolean serveFrontendMaterialDashboard = true;
- private String frontendMaterialDashboardHostedPath = "/"; // TODO - Things like this should be moved into a central configuration file system, so that it can be changed in userspace without code changes.
+ private String frontendMaterialDashboardHostedPath = "/"; // TODO - Things like this should be moved into a central configuration file system, so that it can be changed in userspace without code changes.
private boolean serveLegacyUnversionedMiddlewareAPI = true;
- private List middlewareVersionList = List.of(new MiddlewareVersionV1());
- private List additionalRouteProviders = null;
- private Consumer javalinConfigurationCustomizer = null;
+ private boolean serveApplicationApi = true;
+ private List middlewareVersionList = List.of(new MiddlewareVersionV1()); // TODO - Seems like this should be null by default, and only set if the application developer wants to serve versioned middleware APIs. @DK
+ private List additionalRouteProviders = null;
+ private Consumer javalinConfigurationCustomizer = null;
private QJavalinMetaData javalinMetaData = null;
private long lastQInstanceHotSwapMillis;
@@ -170,6 +172,20 @@ public class QApplicationJavalinServer
}
}
+ if(serveApplicationApi)
+ {
+ try
+ {
+ QJavalinApiHandler qJavalinApiHandler = new QJavalinApiHandler(qInstance);
+ config.router.apiBuilder(qJavalinApiHandler.getRoutes());
+ }
+ catch(Exception e)
+ {
+ LOG.error("Unable to add application API routes to Javalin service.", e);
+ throw new RuntimeException(e);
+ }
+ }
+
/////////////////////////////////////
// versioned qqq middleware routes //
/////////////////////////////////////
@@ -738,4 +754,35 @@ public class QApplicationJavalinServer
{
this.frontendMaterialDashboardHostedPath = frontendMaterialDashboardHostedPath;
}
+
+ /*******************************************************************************
+ ** Getter for serveApplicationApi
+ *******************************************************************************/
+ public boolean getServeApplicationApi()
+ {
+ return (this.serveApplicationApi);
+ }
+
+
+
+ /*******************************************************************************
+ ** Setter for serveApplicationApi
+ *******************************************************************************/
+ public void setServeApplicationApi(boolean serveApplicationApi)
+ {
+ this.serveApplicationApi = serveApplicationApi;
+ }
+
+
+
+ /*******************************************************************************
+ ** Fluent setter for serveApplicationApi
+ *******************************************************************************/
+ public QApplicationJavalinServer withServeApplicationApi(boolean serveApplicationApi)
+ {
+ this.serveApplicationApi = serveApplicationApi;
+ return (this);
+ }
+
+
}