diff --git a/jooby/pom.xml b/jooby/pom.xml
index 3bca096298..f19c659f74 100644
--- a/jooby/pom.xml
+++ b/jooby/pom.xml
@@ -6,7 +6,7 @@
io.jooby
jooby-project
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby
jooby
diff --git a/jooby/src/main/java/io/jooby/Server.java b/jooby/src/main/java/io/jooby/Server.java
index 5cbd6674f4..706ba148f2 100644
--- a/jooby/src/main/java/io/jooby/Server.java
+++ b/jooby/src/main/java/io/jooby/Server.java
@@ -93,6 +93,17 @@ abstract class Base implements Server {
private final AtomicBoolean stopping = new AtomicBoolean();
+ /**
+ * Clears custom connection lost listeners. Intended for internal testing use to prevent static
+ * state leakage between tests. Internal usage only.
+ */
+ static void clearState() {
+ connectionLostListeners.clear();
+ connectionLostListeners.add(Base.CONNECTION_LOST);
+ addressInUseListeners.clear();
+ addressInUseListeners.add(Base.ADDRESS_IN_USE);
+ }
+
protected void fireStart(List applications, Executor defaultWorker) {
for (Jooby app : applications) {
app.setDefaultWorker(defaultWorker).start(this);
diff --git a/jooby/src/test/java/io/jooby/DefaultContextTest.java b/jooby/src/test/java/io/jooby/DefaultContextTest.java
index eb7eeb283d..c1eae28b62 100644
--- a/jooby/src/test/java/io/jooby/DefaultContextTest.java
+++ b/jooby/src/test/java/io/jooby/DefaultContextTest.java
@@ -865,7 +865,7 @@ void sendErrorCustomHandlerException() {
doThrow(new RuntimeException("Handler crashed")).when(errorHandler).apply(any(), any(), any());
ctx.sendError(cause);
- verify(log).error(anyString(), anyString(), any(RuntimeException.class));
+ verify(log).error(anyString(), any(RuntimeException.class));
}
@Test
diff --git a/jooby/src/test/java/io/jooby/Issue2369.java b/jooby/src/test/java/io/jooby/Issue2369.java
index bd7d5475aa..86e91bfd96 100644
--- a/jooby/src/test/java/io/jooby/Issue2369.java
+++ b/jooby/src/test/java/io/jooby/Issue2369.java
@@ -8,10 +8,18 @@
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
public class Issue2369 {
+ @BeforeEach
+ @AfterEach
+ public void cleanState() {
+ Server.Base.clearState();
+ }
+
@Test
public void shouldCustomizeServerLostException() {
Throwable cause = new IllegalArgumentException();
diff --git a/modules/jooby-apt/pom.xml b/modules/jooby-apt/pom.xml
index 1be7a7e36a..462b0728a9 100644
--- a/modules/jooby-apt/pom.xml
+++ b/modules/jooby-apt/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-apt
jooby-apt
diff --git a/modules/jooby-avaje-inject/pom.xml b/modules/jooby-avaje-inject/pom.xml
index 8342cb25b3..b694740d39 100644
--- a/modules/jooby-avaje-inject/pom.xml
+++ b/modules/jooby-avaje-inject/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-avaje-inject
jooby-avaje-inject
diff --git a/modules/jooby-avaje-jsonb/pom.xml b/modules/jooby-avaje-jsonb/pom.xml
index 49249ab4aa..2d639176e2 100644
--- a/modules/jooby-avaje-jsonb/pom.xml
+++ b/modules/jooby-avaje-jsonb/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-avaje-jsonb
jooby-avaje-jsonb
diff --git a/modules/jooby-avaje-validator/pom.xml b/modules/jooby-avaje-validator/pom.xml
index b9ca487768..4ba823c54b 100644
--- a/modules/jooby-avaje-validator/pom.xml
+++ b/modules/jooby-avaje-validator/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-avaje-validator
jooby-avaje-validator
diff --git a/modules/jooby-awssdk-v1/pom.xml b/modules/jooby-awssdk-v1/pom.xml
index 4d3068de58..d965c58a5a 100644
--- a/modules/jooby-awssdk-v1/pom.xml
+++ b/modules/jooby-awssdk-v1/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-awssdk-v1
jooby-awssdk-v1
diff --git a/modules/jooby-awssdk-v2/pom.xml b/modules/jooby-awssdk-v2/pom.xml
index 93acc6e5ee..989cfc1266 100644
--- a/modules/jooby-awssdk-v2/pom.xml
+++ b/modules/jooby-awssdk-v2/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-awssdk-v2
jooby-awssdk-v2
diff --git a/modules/jooby-bom/pom.xml b/modules/jooby-bom/pom.xml
index 91cc475f72..5bbb009aed 100644
--- a/modules/jooby-bom/pom.xml
+++ b/modules/jooby-bom/pom.xml
@@ -7,14 +7,14 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
io.jooby
jooby-bom
jooby-bom
pom
- 4.5.1
+ 4.5.2-SNAPSHOT
Jooby (Bill of Materials)
https://jooby.io
diff --git a/modules/jooby-caffeine/pom.xml b/modules/jooby-caffeine/pom.xml
index 1d8aac9e0f..f80720c6fb 100644
--- a/modules/jooby-caffeine/pom.xml
+++ b/modules/jooby-caffeine/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-caffeine
jooby-caffeine
diff --git a/modules/jooby-camel/pom.xml b/modules/jooby-camel/pom.xml
index 481d2bb6b5..d032874235 100644
--- a/modules/jooby-camel/pom.xml
+++ b/modules/jooby-camel/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-camel
jooby-camel
diff --git a/modules/jooby-cli/pom.xml b/modules/jooby-cli/pom.xml
index 596ba8c666..443cc937ae 100644
--- a/modules/jooby-cli/pom.xml
+++ b/modules/jooby-cli/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-cli
jooby-cli
diff --git a/modules/jooby-commons-email/pom.xml b/modules/jooby-commons-email/pom.xml
index cbb40183a1..878c30d85c 100644
--- a/modules/jooby-commons-email/pom.xml
+++ b/modules/jooby-commons-email/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-commons-email
jooby-commons-email
diff --git a/modules/jooby-conscrypt/pom.xml b/modules/jooby-conscrypt/pom.xml
index 73e0a71399..4168e2ad52 100644
--- a/modules/jooby-conscrypt/pom.xml
+++ b/modules/jooby-conscrypt/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-conscrypt
jooby-conscrypt
diff --git a/modules/jooby-db-scheduler/pom.xml b/modules/jooby-db-scheduler/pom.xml
index 2e52619012..cf435c6f38 100644
--- a/modules/jooby-db-scheduler/pom.xml
+++ b/modules/jooby-db-scheduler/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-db-scheduler
jooby-db-scheduler
diff --git a/modules/jooby-distribution/pom.xml b/modules/jooby-distribution/pom.xml
index b766fb2ab4..07178b6125 100644
--- a/modules/jooby-distribution/pom.xml
+++ b/modules/jooby-distribution/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-distribution
jooby-distribution
diff --git a/modules/jooby-ebean/pom.xml b/modules/jooby-ebean/pom.xml
index 57e6bf159c..e622dffb65 100644
--- a/modules/jooby-ebean/pom.xml
+++ b/modules/jooby-ebean/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-ebean
jooby-ebean
diff --git a/modules/jooby-flyway/pom.xml b/modules/jooby-flyway/pom.xml
index 1ccdd9da45..b21452dfa7 100644
--- a/modules/jooby-flyway/pom.xml
+++ b/modules/jooby-flyway/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-flyway
jooby-flyway
diff --git a/modules/jooby-freemarker/pom.xml b/modules/jooby-freemarker/pom.xml
index cf16723a6a..6ac688b4a3 100644
--- a/modules/jooby-freemarker/pom.xml
+++ b/modules/jooby-freemarker/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-freemarker
jooby-freemarker
diff --git a/modules/jooby-gradle-setup/pom.xml b/modules/jooby-gradle-setup/pom.xml
index 22ece86e5f..711bb798ae 100644
--- a/modules/jooby-gradle-setup/pom.xml
+++ b/modules/jooby-gradle-setup/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-gradle-setup
jooby-gradle-setup
diff --git a/modules/jooby-graphiql/pom.xml b/modules/jooby-graphiql/pom.xml
index 318182b286..ee44de0f46 100644
--- a/modules/jooby-graphiql/pom.xml
+++ b/modules/jooby-graphiql/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-graphiql
jooby-graphiql
diff --git a/modules/jooby-graphql/pom.xml b/modules/jooby-graphql/pom.xml
index bcaa7c479a..b2e236168f 100644
--- a/modules/jooby-graphql/pom.xml
+++ b/modules/jooby-graphql/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-graphql
jooby-graphql
diff --git a/modules/jooby-grpc/pom.xml b/modules/jooby-grpc/pom.xml
index 288b7a34fe..461b2a6724 100644
--- a/modules/jooby-grpc/pom.xml
+++ b/modules/jooby-grpc/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-grpc
jooby-grpc
diff --git a/modules/jooby-gson/pom.xml b/modules/jooby-gson/pom.xml
index 9bf9272f0c..b96edfc2e7 100644
--- a/modules/jooby-gson/pom.xml
+++ b/modules/jooby-gson/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-gson
jooby-gson
diff --git a/modules/jooby-guice/pom.xml b/modules/jooby-guice/pom.xml
index eca37cc881..48e720a63b 100644
--- a/modules/jooby-guice/pom.xml
+++ b/modules/jooby-guice/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-guice
jooby-guice
diff --git a/modules/jooby-handlebars/pom.xml b/modules/jooby-handlebars/pom.xml
index 172dfaa9d3..8fea44cd6a 100644
--- a/modules/jooby-handlebars/pom.xml
+++ b/modules/jooby-handlebars/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-handlebars
jooby-handlebars
diff --git a/modules/jooby-hibernate-validator/pom.xml b/modules/jooby-hibernate-validator/pom.xml
index a6f4a9d8c2..3e11199478 100644
--- a/modules/jooby-hibernate-validator/pom.xml
+++ b/modules/jooby-hibernate-validator/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-hibernate-validator
jooby-hibernate-validator
diff --git a/modules/jooby-hibernate/pom.xml b/modules/jooby-hibernate/pom.xml
index 2a6f5a078d..de70a99a84 100644
--- a/modules/jooby-hibernate/pom.xml
+++ b/modules/jooby-hibernate/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-hibernate
jooby-hibernate
@@ -24,6 +24,12 @@
hibernate-core
+
+ org.hibernate.orm
+ hibernate-scan-jandex
+ ${hibernate.version}
+
+
org.junit.jupiter
diff --git a/modules/jooby-hibernate/src/main/java/module-info.java b/modules/jooby-hibernate/src/main/java/module-info.java
index aa7eed4cb3..8b6e620b9d 100644
--- a/modules/jooby-hibernate/src/main/java/module-info.java
+++ b/modules/jooby-hibernate/src/main/java/module-info.java
@@ -16,4 +16,5 @@
requires jakarta.inject;
requires jakarta.persistence;
requires java.naming;
+ requires org.hibernate.orm.scan.jandex;
}
diff --git a/modules/jooby-hikari/pom.xml b/modules/jooby-hikari/pom.xml
index c1bc4803b6..048ac3dbc5 100644
--- a/modules/jooby-hikari/pom.xml
+++ b/modules/jooby-hikari/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-hikari
jooby-hikari
diff --git a/modules/jooby-htmx/pom.xml b/modules/jooby-htmx/pom.xml
index 972e2c11fb..54b1317b8f 100644
--- a/modules/jooby-htmx/pom.xml
+++ b/modules/jooby-htmx/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-htmx
jooby-htmx
diff --git a/modules/jooby-jackson/pom.xml b/modules/jooby-jackson/pom.xml
index eb2eb85864..0480c5dddf 100644
--- a/modules/jooby-jackson/pom.xml
+++ b/modules/jooby-jackson/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-jackson
jooby-jackson
diff --git a/modules/jooby-jackson3/pom.xml b/modules/jooby-jackson3/pom.xml
index b12ca4f5e4..70dd363d91 100644
--- a/modules/jooby-jackson3/pom.xml
+++ b/modules/jooby-jackson3/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-jackson3
jooby-jackson3
diff --git a/modules/jooby-jasypt/pom.xml b/modules/jooby-jasypt/pom.xml
index bb7d74715b..c2e9045cc4 100644
--- a/modules/jooby-jasypt/pom.xml
+++ b/modules/jooby-jasypt/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-jasypt
jooby-jasypt
diff --git a/modules/jooby-javadoc/pom.xml b/modules/jooby-javadoc/pom.xml
index 2101f5fa66..a9f34d5728 100644
--- a/modules/jooby-javadoc/pom.xml
+++ b/modules/jooby-javadoc/pom.xml
@@ -8,7 +8,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-javadoc
jooby-javadoc
diff --git a/modules/jooby-jdbi/pom.xml b/modules/jooby-jdbi/pom.xml
index 0dc09a6445..136fc02ffc 100644
--- a/modules/jooby-jdbi/pom.xml
+++ b/modules/jooby-jdbi/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-jdbi
jooby-jdbi
diff --git a/modules/jooby-jetty/pom.xml b/modules/jooby-jetty/pom.xml
index 7b5075a61e..95e562fc9e 100644
--- a/modules/jooby-jetty/pom.xml
+++ b/modules/jooby-jetty/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-jetty
jooby-jetty
diff --git a/modules/jooby-jsonrpc-avaje-jsonb/pom.xml b/modules/jooby-jsonrpc-avaje-jsonb/pom.xml
index 8da25c428f..9c9a36d5c5 100644
--- a/modules/jooby-jsonrpc-avaje-jsonb/pom.xml
+++ b/modules/jooby-jsonrpc-avaje-jsonb/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-jsonrpc-avaje-jsonb
diff --git a/modules/jooby-jsonrpc-jackson2/pom.xml b/modules/jooby-jsonrpc-jackson2/pom.xml
index 3b22ea5557..61ec1d287b 100644
--- a/modules/jooby-jsonrpc-jackson2/pom.xml
+++ b/modules/jooby-jsonrpc-jackson2/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-jsonrpc-jackson2
diff --git a/modules/jooby-jsonrpc-jackson3/pom.xml b/modules/jooby-jsonrpc-jackson3/pom.xml
index 9769781586..49786dfd0b 100644
--- a/modules/jooby-jsonrpc-jackson3/pom.xml
+++ b/modules/jooby-jsonrpc-jackson3/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-jsonrpc-jackson3
diff --git a/modules/jooby-jsonrpc/pom.xml b/modules/jooby-jsonrpc/pom.xml
index 153c9a98a5..8eb40d9841 100644
--- a/modules/jooby-jsonrpc/pom.xml
+++ b/modules/jooby-jsonrpc/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-jsonrpc
diff --git a/modules/jooby-jstachio/pom.xml b/modules/jooby-jstachio/pom.xml
index 4c010c6d07..c84b7a29dc 100644
--- a/modules/jooby-jstachio/pom.xml
+++ b/modules/jooby-jstachio/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-jstachio
jooby-jstachio
diff --git a/modules/jooby-jte/pom.xml b/modules/jooby-jte/pom.xml
index fba6f35cea..8eef3d75b4 100644
--- a/modules/jooby-jte/pom.xml
+++ b/modules/jooby-jte/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-jte
jooby-jte
diff --git a/modules/jooby-jwt/pom.xml b/modules/jooby-jwt/pom.xml
index 31e60987a2..be68c0cd93 100644
--- a/modules/jooby-jwt/pom.xml
+++ b/modules/jooby-jwt/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-jwt
jooby-jwt
diff --git a/modules/jooby-kafka/pom.xml b/modules/jooby-kafka/pom.xml
index 32ce471e8d..d70e1c400c 100644
--- a/modules/jooby-kafka/pom.xml
+++ b/modules/jooby-kafka/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-kafka
jooby-kafka
diff --git a/modules/jooby-kotlin/pom.xml b/modules/jooby-kotlin/pom.xml
index a82ce8ec6a..1ab532fdf1 100644
--- a/modules/jooby-kotlin/pom.xml
+++ b/modules/jooby-kotlin/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-kotlin
jooby-kotlin
diff --git a/modules/jooby-langchain4j/pom.xml b/modules/jooby-langchain4j/pom.xml
index a1b6d21003..880e0b2325 100644
--- a/modules/jooby-langchain4j/pom.xml
+++ b/modules/jooby-langchain4j/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-langchain4j
jooby-langchain4j
diff --git a/modules/jooby-log4j/pom.xml b/modules/jooby-log4j/pom.xml
index 54f1150a99..910244c9d7 100644
--- a/modules/jooby-log4j/pom.xml
+++ b/modules/jooby-log4j/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-log4j
jooby-log4j
diff --git a/modules/jooby-logback/pom.xml b/modules/jooby-logback/pom.xml
index 4a41b13996..3c76003f87 100644
--- a/modules/jooby-logback/pom.xml
+++ b/modules/jooby-logback/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-logback
jooby-logback
diff --git a/modules/jooby-maven-plugin/pom.xml b/modules/jooby-maven-plugin/pom.xml
index c5c615f859..051bee408d 100644
--- a/modules/jooby-maven-plugin/pom.xml
+++ b/modules/jooby-maven-plugin/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-maven-plugin
jooby-maven-plugin
diff --git a/modules/jooby-mcp-jackson2/pom.xml b/modules/jooby-mcp-jackson2/pom.xml
index 73cd485ced..5cf83371d0 100644
--- a/modules/jooby-mcp-jackson2/pom.xml
+++ b/modules/jooby-mcp-jackson2/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-mcp-jackson2
diff --git a/modules/jooby-mcp-jackson3/pom.xml b/modules/jooby-mcp-jackson3/pom.xml
index 60d898b9ac..9348dc980a 100644
--- a/modules/jooby-mcp-jackson3/pom.xml
+++ b/modules/jooby-mcp-jackson3/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-mcp-jackson3
diff --git a/modules/jooby-mcp/pom.xml b/modules/jooby-mcp/pom.xml
index b6cb0b80a4..42442315b6 100644
--- a/modules/jooby-mcp/pom.xml
+++ b/modules/jooby-mcp/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-mcp
diff --git a/modules/jooby-metrics/pom.xml b/modules/jooby-metrics/pom.xml
index 2d2697fe76..f72184a012 100644
--- a/modules/jooby-metrics/pom.xml
+++ b/modules/jooby-metrics/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-metrics
jooby-metrics
diff --git a/modules/jooby-mutiny/pom.xml b/modules/jooby-mutiny/pom.xml
index 3e1c829e57..916e42e137 100644
--- a/modules/jooby-mutiny/pom.xml
+++ b/modules/jooby-mutiny/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-mutiny
jooby-mutiny
diff --git a/modules/jooby-netty/pom.xml b/modules/jooby-netty/pom.xml
index 87452d7f2c..6de7236d44 100644
--- a/modules/jooby-netty/pom.xml
+++ b/modules/jooby-netty/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-netty
jooby-netty
diff --git a/modules/jooby-openapi/pom.xml b/modules/jooby-openapi/pom.xml
index e6e6280e18..9ebf364c08 100644
--- a/modules/jooby-openapi/pom.xml
+++ b/modules/jooby-openapi/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-openapi
jooby-openapi
diff --git a/modules/jooby-openapi/src/main/java/io/jooby/internal/openapi/OpenAPIParser.java b/modules/jooby-openapi/src/main/java/io/jooby/internal/openapi/OpenAPIParser.java
index 58dc070599..c7b8e4f23d 100644
--- a/modules/jooby-openapi/src/main/java/io/jooby/internal/openapi/OpenAPIParser.java
+++ b/modules/jooby-openapi/src/main/java/io/jooby/internal/openapi/OpenAPIParser.java
@@ -19,13 +19,7 @@
import static io.jooby.internal.openapi.AsmUtils.toMap;
import static java.util.Collections.singletonList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Optional;
+import java.util.*;
import java.util.function.BiConsumer;
import java.util.function.Consumer;
import java.util.stream.Collectors;
@@ -517,24 +511,28 @@ private static void parameters(
private static void parameter(
ParserContext ctx, OperationExt operation, int index, Map parameterMap) {
String name = (String) parameterMap.get("name");
- io.swagger.v3.oas.models.parameters.Parameter parameter;
+ io.swagger.v3.oas.models.parameters.Parameter existingParameter;
if (name != null) {
- parameter =
+ existingParameter =
operation.getParameters().stream()
.filter(it -> it.getName().equals(name))
.findFirst()
.orElseGet(() -> operation.getParameter(index));
} else {
- parameter = operation.getParameter(index);
+ existingParameter = operation.getParameter(index);
}
- if (parameter == null) {
- throw new IllegalArgumentException(
- "Parameter not found: "
- + name
- + " at position: "
- + index
- + " for annotation: "
- + parameterMap);
+ io.swagger.v3.oas.models.parameters.Parameter parameter;
+ if (existingParameter == null) {
+ // Trust user, create a new parameter;
+ var parameterExt = new ParameterExt();
+ arrayOrSchema(ctx, parameterMap).ifPresent(parameterExt::setSchema);
+ parameter = parameterExt;
+ var parameters =
+ new ArrayList<>(Optional.ofNullable(operation.getParameters()).orElse(List.of()));
+ parameters.add(index, parameter);
+ operation.setParameters(parameters);
+ } else {
+ parameter = existingParameter;
}
Optional.ofNullable(name).ifPresent(parameter::setName);
stringValue(parameterMap, "description", parameter::setDescription);
@@ -708,8 +706,11 @@ private static Optional toSchema(
schemaType(ctx, annotation, "anyOf", schemaMap::put);
schemaType(ctx, annotation, "oneOf", schemaMap::put);
schemaType(ctx, annotation, "allOf", schemaMap::put);
-
if (schemaMap.isEmpty()) {
+ var type = (String) annotation.get("type");
+ if (type != null) {
+ return Optional.ofNullable(ctx.schema(type));
+ }
return Optional.empty();
}
diff --git a/modules/jooby-openapi/src/main/java/io/jooby/internal/openapi/ParserContext.java b/modules/jooby-openapi/src/main/java/io/jooby/internal/openapi/ParserContext.java
index 423e373607..811b9d5394 100644
--- a/modules/jooby-openapi/src/main/java/io/jooby/internal/openapi/ParserContext.java
+++ b/modules/jooby-openapi/src/main/java/io/jooby/internal/openapi/ParserContext.java
@@ -426,7 +426,14 @@ public Schema schema(String type) {
if (schema != null) {
return schema.toSchema();
}
- return schema(javaType(type));
+ return switch (type) {
+ // open-api types:
+ case "string" -> new StringSchema();
+ case "boolean" -> new BooleanSchema();
+ case "number" -> new NumberSchema();
+ case "integer" -> new IntegerSchema();
+ default -> schema(javaType(type));
+ };
}
public JavaType javaType(String type) {
diff --git a/modules/jooby-openapi/src/test/java/issues/i3952/App3952.java b/modules/jooby-openapi/src/test/java/issues/i3952/App3952.java
new file mode 100644
index 0000000000..b7807a6308
--- /dev/null
+++ b/modules/jooby-openapi/src/test/java/issues/i3952/App3952.java
@@ -0,0 +1,53 @@
+/*
+ * Jooby https://jooby.io
+ * Apache License Version 2.0 https://jooby.io/LICENSE.txt
+ * Copyright 2014 Edgar Espina
+ */
+package issues.i3952;
+
+import io.jooby.Context;
+import io.jooby.Jooby;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.enums.ParameterIn;
+import io.swagger.v3.oas.annotations.media.Schema;
+
+public class App3952 extends Jooby {
+ {
+ path("/api", this::internalApiRoutes);
+ }
+
+ private void internalApiRoutes() {
+ post("/getThing", App3952::getThing);
+ }
+
+ @Operation(
+ summary = "Get a thing",
+ parameters = {
+ @Parameter(
+ name = "x-api-key",
+ description = "API Key",
+ in = ParameterIn.HEADER,
+ schema = @Schema(type = "string"),
+ required = true),
+ @Parameter(
+ name = "x-bool",
+ description = "Boolean key",
+ in = ParameterIn.HEADER,
+ schema = @Schema(type = "boolean")),
+ @Parameter(
+ name = "x-number",
+ description = "Number key",
+ in = ParameterIn.HEADER,
+ schema = @Schema(type = "number")),
+ @Parameter(
+ name = "x-integer",
+ description = "Int key",
+ in = ParameterIn.HEADER,
+ schema = @Schema(type = "integer"),
+ required = true)
+ })
+ private static String getThing(Context context) {
+ return "works!";
+ }
+}
diff --git a/modules/jooby-openapi/src/test/java/issues/i3952/Issue3952.java b/modules/jooby-openapi/src/test/java/issues/i3952/Issue3952.java
new file mode 100644
index 0000000000..5a006ec9c8
--- /dev/null
+++ b/modules/jooby-openapi/src/test/java/issues/i3952/Issue3952.java
@@ -0,0 +1,63 @@
+/*
+ * Jooby https://jooby.io
+ * Apache License Version 2.0 https://jooby.io/LICENSE.txt
+ * Copyright 2014 Edgar Espina
+ */
+package issues.i3952;
+
+import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
+
+import io.jooby.openapi.OpenAPIResult;
+import io.jooby.openapi.OpenAPITest;
+import io.swagger.v3.oas.models.SpecVersion;
+
+public class Issue3952 {
+ @OpenAPITest(value = App3952.class, version = SpecVersion.V31)
+ public void shouldParseNestedPath(OpenAPIResult result) {
+ assertThat(result.toYaml())
+ .isEqualToIgnoringNewLines(
+ """
+ openapi: 3.1.0
+ info:
+ title: 3952 API
+ description: 3952 API description
+ version: "1.0"
+ paths:
+ /api/getThing:
+ post:
+ summary: Get a thing
+ operationId: getThing
+ parameters:
+ - name: x-api-key
+ in: header
+ description: API Key
+ required: true
+ schema:
+ type: string
+ - name: x-bool
+ in: header
+ description: Boolean key
+ schema:
+ type: boolean
+ - name: x-number
+ in: header
+ description: Number key
+ schema:
+ type: number
+ - name: x-integer
+ in: header
+ description: Int key
+ required: true
+ schema:
+ type: integer
+ format: int32
+ responses:
+ "200":
+ description: Success
+ content:
+ application/json:
+ schema:
+ type: string
+ """);
+ }
+}
diff --git a/modules/jooby-opentelemetry/pom.xml b/modules/jooby-opentelemetry/pom.xml
index 5a50533edc..931a0fb225 100644
--- a/modules/jooby-opentelemetry/pom.xml
+++ b/modules/jooby-opentelemetry/pom.xml
@@ -8,7 +8,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-opentelemetry
jooby-opentelemetry
diff --git a/modules/jooby-pac4j/pom.xml b/modules/jooby-pac4j/pom.xml
index d8b41d5aa8..ca75ec0cdf 100644
--- a/modules/jooby-pac4j/pom.xml
+++ b/modules/jooby-pac4j/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-pac4j
jooby-pac4j
diff --git a/modules/jooby-pebble/pom.xml b/modules/jooby-pebble/pom.xml
index f664e45964..0ca0efbad0 100644
--- a/modules/jooby-pebble/pom.xml
+++ b/modules/jooby-pebble/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-pebble
jooby-pebble
diff --git a/modules/jooby-quartz/pom.xml b/modules/jooby-quartz/pom.xml
index 8f72adb7f0..d9d9de535e 100644
--- a/modules/jooby-quartz/pom.xml
+++ b/modules/jooby-quartz/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-quartz
jooby-quartz
diff --git a/modules/jooby-reactor/pom.xml b/modules/jooby-reactor/pom.xml
index e7e51602f2..8b97b25480 100644
--- a/modules/jooby-reactor/pom.xml
+++ b/modules/jooby-reactor/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-reactor
jooby-reactor
diff --git a/modules/jooby-redis/pom.xml b/modules/jooby-redis/pom.xml
index abed9f95e3..e953d8de20 100644
--- a/modules/jooby-redis/pom.xml
+++ b/modules/jooby-redis/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-redis
jooby-redis
diff --git a/modules/jooby-redoc/pom.xml b/modules/jooby-redoc/pom.xml
index cb052ec1c1..4ef719dae8 100644
--- a/modules/jooby-redoc/pom.xml
+++ b/modules/jooby-redoc/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-redoc
jooby-redoc
diff --git a/modules/jooby-rocker/pom.xml b/modules/jooby-rocker/pom.xml
index 5674df7bb3..3feecb6b53 100644
--- a/modules/jooby-rocker/pom.xml
+++ b/modules/jooby-rocker/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-rocker
jooby-rocker
diff --git a/modules/jooby-run/pom.xml b/modules/jooby-run/pom.xml
index eade8afd53..423a93afe8 100644
--- a/modules/jooby-run/pom.xml
+++ b/modules/jooby-run/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-run
jooby-run
diff --git a/modules/jooby-rxjava3/pom.xml b/modules/jooby-rxjava3/pom.xml
index 3fcb2ca16c..7a6c760e5e 100644
--- a/modules/jooby-rxjava3/pom.xml
+++ b/modules/jooby-rxjava3/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-rxjava3
jooby-rxjava3
diff --git a/modules/jooby-stork/pom.xml b/modules/jooby-stork/pom.xml
index b1bb56427e..1b562d20b4 100644
--- a/modules/jooby-stork/pom.xml
+++ b/modules/jooby-stork/pom.xml
@@ -4,7 +4,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-stork
diff --git a/modules/jooby-swagger-ui/pom.xml b/modules/jooby-swagger-ui/pom.xml
index 88260a7461..7b4b063f01 100644
--- a/modules/jooby-swagger-ui/pom.xml
+++ b/modules/jooby-swagger-ui/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-swagger-ui
jooby-swagger-ui
diff --git a/modules/jooby-test/pom.xml b/modules/jooby-test/pom.xml
index 12996f5caa..e44c2e37a1 100644
--- a/modules/jooby-test/pom.xml
+++ b/modules/jooby-test/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-test
jooby-test
diff --git a/modules/jooby-thymeleaf/pom.xml b/modules/jooby-thymeleaf/pom.xml
index c5a0612a3d..d6906fda3e 100644
--- a/modules/jooby-thymeleaf/pom.xml
+++ b/modules/jooby-thymeleaf/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-thymeleaf
jooby-thymeleaf
diff --git a/modules/jooby-trpc-avaje-jsonb/pom.xml b/modules/jooby-trpc-avaje-jsonb/pom.xml
index 292b21dd97..3e5d933f00 100644
--- a/modules/jooby-trpc-avaje-jsonb/pom.xml
+++ b/modules/jooby-trpc-avaje-jsonb/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-trpc-avaje-jsonb
diff --git a/modules/jooby-trpc-generator/pom.xml b/modules/jooby-trpc-generator/pom.xml
index a93d1e1c61..4b33169bfa 100644
--- a/modules/jooby-trpc-generator/pom.xml
+++ b/modules/jooby-trpc-generator/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-trpc-generator
jooby-trpc-generator
diff --git a/modules/jooby-trpc-jackson2/pom.xml b/modules/jooby-trpc-jackson2/pom.xml
index bff9f1a3e2..61a3e6e7da 100644
--- a/modules/jooby-trpc-jackson2/pom.xml
+++ b/modules/jooby-trpc-jackson2/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-trpc-jackson2
diff --git a/modules/jooby-trpc-jackson3/pom.xml b/modules/jooby-trpc-jackson3/pom.xml
index 514490bcfa..d875822ef6 100644
--- a/modules/jooby-trpc-jackson3/pom.xml
+++ b/modules/jooby-trpc-jackson3/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-trpc-jackson3
diff --git a/modules/jooby-trpc/pom.xml b/modules/jooby-trpc/pom.xml
index aa9a2cbfb7..1ce6f6c838 100644
--- a/modules/jooby-trpc/pom.xml
+++ b/modules/jooby-trpc/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-trpc
jooby-trpc
diff --git a/modules/jooby-undertow/pom.xml b/modules/jooby-undertow/pom.xml
index 86a341f5ea..1ef307e71d 100644
--- a/modules/jooby-undertow/pom.xml
+++ b/modules/jooby-undertow/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-undertow
jooby-undertow
diff --git a/modules/jooby-vertx-mysql-client/pom.xml b/modules/jooby-vertx-mysql-client/pom.xml
index b59454e8e4..1a7e35f786 100644
--- a/modules/jooby-vertx-mysql-client/pom.xml
+++ b/modules/jooby-vertx-mysql-client/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-vertx-mysql-client
jooby-vertx-mysql-client
diff --git a/modules/jooby-vertx-pg-client/pom.xml b/modules/jooby-vertx-pg-client/pom.xml
index 66559ffbab..b81caac88b 100644
--- a/modules/jooby-vertx-pg-client/pom.xml
+++ b/modules/jooby-vertx-pg-client/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-vertx-pg-client
jooby-vertx-pg-client
diff --git a/modules/jooby-vertx-sql-client/pom.xml b/modules/jooby-vertx-sql-client/pom.xml
index 612f126f1a..078fb4c09a 100644
--- a/modules/jooby-vertx-sql-client/pom.xml
+++ b/modules/jooby-vertx-sql-client/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-vertx-sql-client
jooby-vertx-sql-client
diff --git a/modules/jooby-vertx/pom.xml b/modules/jooby-vertx/pom.xml
index 21eb0acb37..6a546a874a 100644
--- a/modules/jooby-vertx/pom.xml
+++ b/modules/jooby-vertx/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-vertx
jooby-vertx
diff --git a/modules/jooby-whoops/pom.xml b/modules/jooby-whoops/pom.xml
index fb9b6fc921..7352a2a51a 100644
--- a/modules/jooby-whoops/pom.xml
+++ b/modules/jooby-whoops/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-whoops
jooby-whoops
diff --git a/modules/jooby-yasson/pom.xml b/modules/jooby-yasson/pom.xml
index 077f299a00..fc3b4b9d3c 100644
--- a/modules/jooby-yasson/pom.xml
+++ b/modules/jooby-yasson/pom.xml
@@ -6,7 +6,7 @@
io.jooby
modules
- 4.5.1
+ 4.5.2-SNAPSHOT
jooby-yasson
jooby-yasson
diff --git a/modules/pom.xml b/modules/pom.xml
index c796c9c661..4c9f7792b4 100644
--- a/modules/pom.xml
+++ b/modules/pom.xml
@@ -4,7 +4,7 @@
io.jooby
jooby-project
- 4.5.1
+ 4.5.2-SNAPSHOT
modules
diff --git a/pom.xml b/pom.xml
index 60b6e83bda..3ef5113e23 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
4.0.0
io.jooby
jooby-project
- 4.5.1
+ 4.5.2-SNAPSHOT
pom
jooby-project
@@ -73,7 +73,7 @@
7.0.2
1.2
- 7.0.4.Final
+ 7.3.4.Final
17.6.0
3.53.0
11.20.1
@@ -211,7 +211,7 @@
21
21
yyyy-MM-dd HH:mm:ssa
- 2026-05-12T21:53:47Z
+ 2026-05-13T14:51:23Z
UTF-8
etc${file.separator}source${file.separator}formatter.sh
diff --git a/tests/pom.xml b/tests/pom.xml
index b2d9df61e3..65b121bf4e 100644
--- a/tests/pom.xml
+++ b/tests/pom.xml
@@ -6,7 +6,7 @@
io.jooby
jooby-project
- 4.5.1
+ 4.5.2-SNAPSHOT
tests
tests