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