diff --git a/.github/workflows/maven-central.yml b/.github/workflows/maven-central.yml index d485873051..87ac3c127a 100644 --- a/.github/workflows/maven-central.yml +++ b/.github/workflows/maven-central.yml @@ -196,7 +196,6 @@ jobs: ### 🏆 Sponsors - [@premium-minds](https://github.com/premium-minds) - - [@agentgt](https://github.com/agentgt) - [@tipsy](https://github.com/tipsy) EOF diff --git a/README.md b/README.md index f8ba155c0c..54e410e263 100644 --- a/README.md +++ b/README.md @@ -79,7 +79,6 @@ sponsors | Logo | Sponsor | |----------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------| | Premium Minds | [@premium-minds](https://github.com/premium-minds) | -| Adam Gent | [@agentgt](https://github.com/agentgt) | | David | [@tipsy](https://github.com/tipsy) | Previous version diff --git a/jooby/pom.xml b/jooby/pom.xml index 3bca096298..f65182c6ff 100644 --- a/jooby/pom.xml +++ b/jooby/pom.xml @@ -6,7 +6,7 @@ io.jooby jooby-project - 4.5.1 + 4.5.2 jooby jooby diff --git a/jooby/src/main/java/io/jooby/Jooby.java b/jooby/src/main/java/io/jooby/Jooby.java index cb681d5a97..3040d2ac47 100644 --- a/jooby/src/main/java/io/jooby/Jooby.java +++ b/jooby/src/main/java/io/jooby/Jooby.java @@ -67,7 +67,7 @@ public class Jooby implements Router, Registry { static final String APP_NAME = "___app_name__"; private static final String JOOBY_RUN_HOOK = "___jooby_run_hook__"; - private static final Logger log = LoggerFactory.getLogger(Jooby.class); + private final Logger log = LoggerFactory.getLogger(Jooby.class); private final transient AtomicBoolean started = new AtomicBoolean(true); 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/jooby/src/test/java/io/jooby/Issue3963.java b/jooby/src/test/java/io/jooby/Issue3963.java new file mode 100644 index 0000000000..a2bc5b7381 --- /dev/null +++ b/jooby/src/test/java/io/jooby/Issue3963.java @@ -0,0 +1,21 @@ +/* + * Jooby https://jooby.io + * Apache License Version 2.0 https://jooby.io/LICENSE.txt + * Copyright 2014 Edgar Espina + */ +package io.jooby; + +import static org.junit.jupiter.api.Assertions.assertFalse; + +import java.lang.reflect.Modifier; + +import org.junit.jupiter.api.Test; + +public class Issue3963 { + + @Test + void logVariableCannotBeStatic() throws NoSuchFieldException { + var field = Jooby.class.getDeclaredField("log"); + assertFalse(Modifier.isStatic(field.getModifiers())); + } +} diff --git a/modules/jooby-apt/pom.xml b/modules/jooby-apt/pom.xml index 1be7a7e36a..c01b470134 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 jooby-apt jooby-apt diff --git a/modules/jooby-avaje-inject/pom.xml b/modules/jooby-avaje-inject/pom.xml index 8342cb25b3..1f57f7b98c 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 jooby-avaje-inject jooby-avaje-inject diff --git a/modules/jooby-avaje-jsonb/pom.xml b/modules/jooby-avaje-jsonb/pom.xml index 49249ab4aa..52c35863e6 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 jooby-avaje-jsonb jooby-avaje-jsonb diff --git a/modules/jooby-avaje-validator/pom.xml b/modules/jooby-avaje-validator/pom.xml index b9ca487768..c8aeefbd99 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 jooby-avaje-validator jooby-avaje-validator diff --git a/modules/jooby-awssdk-v1/pom.xml b/modules/jooby-awssdk-v1/pom.xml index 4d3068de58..a8e869e768 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 jooby-awssdk-v1 jooby-awssdk-v1 diff --git a/modules/jooby-awssdk-v2/pom.xml b/modules/jooby-awssdk-v2/pom.xml index 93acc6e5ee..e9d776a3d9 100644 --- a/modules/jooby-awssdk-v2/pom.xml +++ b/modules/jooby-awssdk-v2/pom.xml @@ -6,13 +6,13 @@ io.jooby modules - 4.5.1 + 4.5.2 jooby-awssdk-v2 jooby-awssdk-v2 - 2.44.4 + 2.44.12 diff --git a/modules/jooby-bom/pom.xml b/modules/jooby-bom/pom.xml index 91cc475f72..2152deedf9 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 io.jooby jooby-bom jooby-bom pom - 4.5.1 + 4.5.2 Jooby (Bill of Materials) https://jooby.io diff --git a/modules/jooby-caffeine/pom.xml b/modules/jooby-caffeine/pom.xml index 1d8aac9e0f..fbf36feda1 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 jooby-caffeine jooby-caffeine diff --git a/modules/jooby-camel/pom.xml b/modules/jooby-camel/pom.xml index 481d2bb6b5..5cf3d89de0 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 jooby-camel jooby-camel diff --git a/modules/jooby-cli/pom.xml b/modules/jooby-cli/pom.xml index 596ba8c666..b925ed9bb5 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 jooby-cli jooby-cli diff --git a/modules/jooby-commons-email/pom.xml b/modules/jooby-commons-email/pom.xml index cbb40183a1..2d8747c9a3 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 jooby-commons-email jooby-commons-email diff --git a/modules/jooby-conscrypt/pom.xml b/modules/jooby-conscrypt/pom.xml index 73e0a71399..cf12753948 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 jooby-conscrypt jooby-conscrypt diff --git a/modules/jooby-db-scheduler/pom.xml b/modules/jooby-db-scheduler/pom.xml index 2e52619012..eb1468a19a 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 jooby-db-scheduler jooby-db-scheduler diff --git a/modules/jooby-distribution/pom.xml b/modules/jooby-distribution/pom.xml index b766fb2ab4..de9fec61ad 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 jooby-distribution jooby-distribution diff --git a/modules/jooby-ebean/pom.xml b/modules/jooby-ebean/pom.xml index 57e6bf159c..bc6a582da0 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 jooby-ebean jooby-ebean diff --git a/modules/jooby-flyway/pom.xml b/modules/jooby-flyway/pom.xml index 1ccdd9da45..e844ec4c95 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 jooby-flyway jooby-flyway diff --git a/modules/jooby-freemarker/pom.xml b/modules/jooby-freemarker/pom.xml index cf16723a6a..1124e73891 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 jooby-freemarker jooby-freemarker diff --git a/modules/jooby-gradle-setup/pom.xml b/modules/jooby-gradle-setup/pom.xml index 22ece86e5f..ead895f366 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 jooby-gradle-setup jooby-gradle-setup diff --git a/modules/jooby-graphiql/pom.xml b/modules/jooby-graphiql/pom.xml index 318182b286..cd325e43f0 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 jooby-graphiql jooby-graphiql diff --git a/modules/jooby-graphql/pom.xml b/modules/jooby-graphql/pom.xml index bcaa7c479a..6a07370ee4 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 jooby-graphql jooby-graphql diff --git a/modules/jooby-grpc/pom.xml b/modules/jooby-grpc/pom.xml index 288b7a34fe..b9b293bec9 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 jooby-grpc jooby-grpc diff --git a/modules/jooby-gson/pom.xml b/modules/jooby-gson/pom.xml index 9bf9272f0c..6cec4cddcd 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 jooby-gson jooby-gson diff --git a/modules/jooby-guice/pom.xml b/modules/jooby-guice/pom.xml index eca37cc881..2f24fe07dd 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 jooby-guice jooby-guice diff --git a/modules/jooby-handlebars/pom.xml b/modules/jooby-handlebars/pom.xml index 172dfaa9d3..e1bbac2dc1 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 jooby-handlebars jooby-handlebars diff --git a/modules/jooby-hibernate-validator/pom.xml b/modules/jooby-hibernate-validator/pom.xml index a6f4a9d8c2..af4f940fa4 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 jooby-hibernate-validator jooby-hibernate-validator diff --git a/modules/jooby-hibernate/pom.xml b/modules/jooby-hibernate/pom.xml index 2a6f5a078d..568db5d6be 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 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..b8b84095b0 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 jooby-hikari jooby-hikari diff --git a/modules/jooby-htmx/pom.xml b/modules/jooby-htmx/pom.xml index 972e2c11fb..22bdf91fc1 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 jooby-htmx jooby-htmx diff --git a/modules/jooby-jackson/pom.xml b/modules/jooby-jackson/pom.xml index eb2eb85864..f11880d6d1 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 jooby-jackson jooby-jackson diff --git a/modules/jooby-jackson3/pom.xml b/modules/jooby-jackson3/pom.xml index b12ca4f5e4..95dcaf2c84 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 jooby-jackson3 jooby-jackson3 diff --git a/modules/jooby-jasypt/pom.xml b/modules/jooby-jasypt/pom.xml index bb7d74715b..8f848d77b1 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 jooby-jasypt jooby-jasypt diff --git a/modules/jooby-javadoc/pom.xml b/modules/jooby-javadoc/pom.xml index 2101f5fa66..c147d38200 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 jooby-javadoc jooby-javadoc diff --git a/modules/jooby-jdbi/pom.xml b/modules/jooby-jdbi/pom.xml index 0dc09a6445..bc039a1cf0 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 jooby-jdbi jooby-jdbi diff --git a/modules/jooby-jetty/pom.xml b/modules/jooby-jetty/pom.xml index 7b5075a61e..58bc5f6b15 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 jooby-jetty jooby-jetty diff --git a/modules/jooby-jsonrpc-avaje-jsonb/pom.xml b/modules/jooby-jsonrpc-avaje-jsonb/pom.xml index 8da25c428f..bfb5d6f2f4 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 jooby-jsonrpc-avaje-jsonb diff --git a/modules/jooby-jsonrpc-jackson2/pom.xml b/modules/jooby-jsonrpc-jackson2/pom.xml index 3b22ea5557..129f11a694 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 jooby-jsonrpc-jackson2 diff --git a/modules/jooby-jsonrpc-jackson3/pom.xml b/modules/jooby-jsonrpc-jackson3/pom.xml index 9769781586..deadc5d41d 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 jooby-jsonrpc-jackson3 diff --git a/modules/jooby-jsonrpc/pom.xml b/modules/jooby-jsonrpc/pom.xml index 153c9a98a5..aab56a1672 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 jooby-jsonrpc diff --git a/modules/jooby-jstachio/pom.xml b/modules/jooby-jstachio/pom.xml index 4c010c6d07..70f9fceb89 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 jooby-jstachio jooby-jstachio diff --git a/modules/jooby-jte/pom.xml b/modules/jooby-jte/pom.xml index fba6f35cea..e99b71f276 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 jooby-jte jooby-jte diff --git a/modules/jooby-jwt/pom.xml b/modules/jooby-jwt/pom.xml index 31e60987a2..316cab8419 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 jooby-jwt jooby-jwt diff --git a/modules/jooby-kafka/pom.xml b/modules/jooby-kafka/pom.xml index 32ce471e8d..7cf011955b 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 jooby-kafka jooby-kafka diff --git a/modules/jooby-kotlin/pom.xml b/modules/jooby-kotlin/pom.xml index a82ce8ec6a..069b338083 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 jooby-kotlin jooby-kotlin diff --git a/modules/jooby-langchain4j/pom.xml b/modules/jooby-langchain4j/pom.xml index a1b6d21003..a9513bc801 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 jooby-langchain4j jooby-langchain4j @@ -73,7 +73,7 @@ dev.langchain4j langchain4j-bom - 1.14.1 + 1.15.0 pom import diff --git a/modules/jooby-log4j/pom.xml b/modules/jooby-log4j/pom.xml index 54f1150a99..4fa99cf4d2 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 jooby-log4j jooby-log4j diff --git a/modules/jooby-logback/pom.xml b/modules/jooby-logback/pom.xml index 4a41b13996..5266b3c301 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 jooby-logback jooby-logback diff --git a/modules/jooby-maven-plugin/pom.xml b/modules/jooby-maven-plugin/pom.xml index c5c615f859..d0c3406b0e 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 jooby-maven-plugin jooby-maven-plugin diff --git a/modules/jooby-mcp-jackson2/pom.xml b/modules/jooby-mcp-jackson2/pom.xml index 73cd485ced..a4ee43958d 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 jooby-mcp-jackson2 diff --git a/modules/jooby-mcp-jackson3/pom.xml b/modules/jooby-mcp-jackson3/pom.xml index 60d898b9ac..2405631a09 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 jooby-mcp-jackson3 diff --git a/modules/jooby-mcp/pom.xml b/modules/jooby-mcp/pom.xml index b6cb0b80a4..254a367e6c 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 jooby-mcp diff --git a/modules/jooby-metrics/pom.xml b/modules/jooby-metrics/pom.xml index 2d2697fe76..86f4ad3179 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 jooby-metrics jooby-metrics diff --git a/modules/jooby-mutiny/pom.xml b/modules/jooby-mutiny/pom.xml index 3e1c829e57..7afdfbf8f8 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 jooby-mutiny jooby-mutiny diff --git a/modules/jooby-netty/pom.xml b/modules/jooby-netty/pom.xml index 87452d7f2c..251d3da4ee 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 jooby-netty jooby-netty diff --git a/modules/jooby-openapi/pom.xml b/modules/jooby-openapi/pom.xml index e6e6280e18..d077dbf481 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 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..5e0ccdd273 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 jooby-opentelemetry jooby-opentelemetry @@ -167,7 +167,7 @@ io.opentelemetry.instrumentation opentelemetry-instrumentation-bom-alpha - 2.27.0-alpha + 2.28.1-alpha pom import diff --git a/modules/jooby-pac4j/pom.xml b/modules/jooby-pac4j/pom.xml index d8b41d5aa8..e3be5b7954 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 jooby-pac4j jooby-pac4j diff --git a/modules/jooby-pebble/pom.xml b/modules/jooby-pebble/pom.xml index f664e45964..2a273c4bdf 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 jooby-pebble jooby-pebble diff --git a/modules/jooby-quartz/pom.xml b/modules/jooby-quartz/pom.xml index 8f72adb7f0..dee5c649e8 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 jooby-quartz jooby-quartz diff --git a/modules/jooby-reactor/pom.xml b/modules/jooby-reactor/pom.xml index e7e51602f2..b382f04653 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 jooby-reactor jooby-reactor diff --git a/modules/jooby-redis/pom.xml b/modules/jooby-redis/pom.xml index abed9f95e3..a9454f8039 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 jooby-redis jooby-redis diff --git a/modules/jooby-redoc/pom.xml b/modules/jooby-redoc/pom.xml index cb052ec1c1..3f04bf484b 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 jooby-redoc jooby-redoc diff --git a/modules/jooby-rocker/pom.xml b/modules/jooby-rocker/pom.xml index 5674df7bb3..b68f97ed4b 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 jooby-rocker jooby-rocker diff --git a/modules/jooby-run/pom.xml b/modules/jooby-run/pom.xml index eade8afd53..0108d4cca8 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 jooby-run jooby-run diff --git a/modules/jooby-rxjava3/pom.xml b/modules/jooby-rxjava3/pom.xml index 3fcb2ca16c..2157dc022a 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 jooby-rxjava3 jooby-rxjava3 diff --git a/modules/jooby-stork/pom.xml b/modules/jooby-stork/pom.xml index b1bb56427e..1402b4be33 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 jooby-stork diff --git a/modules/jooby-swagger-ui/package-lock.json b/modules/jooby-swagger-ui/package-lock.json index ec62c5b0e2..bdf3f17122 100644 --- a/modules/jooby-swagger-ui/package-lock.json +++ b/modules/jooby-swagger-ui/package-lock.json @@ -9,7 +9,7 @@ "version": "4.0.0", "license": "ASF", "dependencies": { - "swagger-ui-dist": "^5.32.5" + "swagger-ui-dist": "^5.32.6" } }, "node_modules/@scarf/scarf": { @@ -20,9 +20,9 @@ "license": "Apache-2.0" }, "node_modules/swagger-ui-dist": { - "version": "5.32.5", - "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-5.32.5.tgz", - "integrity": "sha512-7/FQfWe9A4qoyYFdAwy0chD0uDYidDp/ZT9VQ9LZlgD4AnnHJk8/+ytAA1HkJYOPySmK6helPDdJQMlcumt7HA==", + "version": "5.32.6", + "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-5.32.6.tgz", + "integrity": "sha512-75ttZNaYCLoFPnozPZcTUU6mS3wKT8l7WLjU5zJSHFeJa23i5vtnze6IiCl4jDMPeQTXVXIgovq4M11NNfQvSA==", "license": "Apache-2.0", "dependencies": { "@scarf/scarf": "=1.4.0" diff --git a/modules/jooby-swagger-ui/package.json b/modules/jooby-swagger-ui/package.json index c708080440..ce96acfe74 100644 --- a/modules/jooby-swagger-ui/package.json +++ b/modules/jooby-swagger-ui/package.json @@ -4,7 +4,7 @@ "private": true, "license": "ASF", "dependencies": { - "swagger-ui-dist": "^5.32.5" + "swagger-ui-dist": "^5.32.6" }, "scarfSettings": { "enabled": false diff --git a/modules/jooby-swagger-ui/pom.xml b/modules/jooby-swagger-ui/pom.xml index 88260a7461..2334ecefcc 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 jooby-swagger-ui jooby-swagger-ui diff --git a/modules/jooby-test/pom.xml b/modules/jooby-test/pom.xml index 12996f5caa..655980d678 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 jooby-test jooby-test diff --git a/modules/jooby-thymeleaf/pom.xml b/modules/jooby-thymeleaf/pom.xml index c5a0612a3d..4c5c7de874 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 jooby-thymeleaf jooby-thymeleaf diff --git a/modules/jooby-trpc-avaje-jsonb/pom.xml b/modules/jooby-trpc-avaje-jsonb/pom.xml index 292b21dd97..ce679038b8 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 jooby-trpc-avaje-jsonb diff --git a/modules/jooby-trpc-generator/pom.xml b/modules/jooby-trpc-generator/pom.xml index a93d1e1c61..b4e5aa90e1 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 jooby-trpc-generator jooby-trpc-generator @@ -26,7 +26,7 @@ cz.habarta.typescript-generator typescript-generator-core - 4.0.0 + 4.1.1 diff --git a/modules/jooby-trpc-jackson2/pom.xml b/modules/jooby-trpc-jackson2/pom.xml index bff9f1a3e2..9716e6eb7e 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 jooby-trpc-jackson2 diff --git a/modules/jooby-trpc-jackson3/pom.xml b/modules/jooby-trpc-jackson3/pom.xml index 514490bcfa..38f501c919 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 jooby-trpc-jackson3 diff --git a/modules/jooby-trpc/pom.xml b/modules/jooby-trpc/pom.xml index aa9a2cbfb7..10bf91b0d8 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 jooby-trpc jooby-trpc diff --git a/modules/jooby-undertow/pom.xml b/modules/jooby-undertow/pom.xml index 86a341f5ea..dbb5d6c6ef 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 jooby-undertow jooby-undertow diff --git a/modules/jooby-vertx-mysql-client/pom.xml b/modules/jooby-vertx-mysql-client/pom.xml index b59454e8e4..da05e0cc0a 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 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..bfb42a81c1 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 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..c07259f862 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 jooby-vertx-sql-client jooby-vertx-sql-client diff --git a/modules/jooby-vertx/pom.xml b/modules/jooby-vertx/pom.xml index 21eb0acb37..0c6b104fa2 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 jooby-vertx jooby-vertx diff --git a/modules/jooby-whoops/pom.xml b/modules/jooby-whoops/pom.xml index fb9b6fc921..51fb935041 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 jooby-whoops jooby-whoops diff --git a/modules/jooby-yasson/pom.xml b/modules/jooby-yasson/pom.xml index 077f299a00..53ec52573a 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 jooby-yasson jooby-yasson diff --git a/modules/pom.xml b/modules/pom.xml index c796c9c661..f7c7b5076d 100644 --- a/modules/pom.xml +++ b/modules/pom.xml @@ -4,7 +4,7 @@ io.jooby jooby-project - 4.5.1 + 4.5.2 modules diff --git a/pom.xml b/pom.xml index 60b6e83bda..9ca6986016 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 io.jooby jooby-project - 4.5.1 + 4.5.2 pom jooby-project @@ -73,14 +73,14 @@ 7.0.2 1.2 - 7.0.4.Final + 7.3.6.Final 17.6.0 3.53.0 11.20.1 26.0 - 7.5.1.RELEASE + 7.5.2.RELEASE 2.13.1 - 4.2.0 + 4.3.0 3.2.4 1.4.8 @@ -92,7 +92,7 @@ 1.5.32 2.26.0 - 2.0.17 + 2.0.18 1.6.0 @@ -104,17 +104,17 @@ 2.3.0 - 9.9.1 + 9.10.1 - 2.4.0.Final + 2.4.1.Final 12.1.9 - 4.2.13.Final + 4.2.14.Final 5.0.12 - 2.2.49 - 2.1.41 + 2.2.50 + 2.1.42 2.0.0-rc.20 @@ -135,9 +135,9 @@ 0.13.0 6.5.0 2.5.2 - 16.8.1 + 16.10.0 9.2.1 - 8.18.0 + 8.19.0 1.12.797 4.20.0 1.9.3 @@ -151,7 +151,7 @@ 0.8.14 - 6.0.3 + 6.1.0 6.0.0 3.27.7 5.23.0 @@ -175,14 +175,14 @@ 3.8.0 2.44 3.15.0 - 3.9.15 - 3.6.2 + 3.9.16 + 3.6.3 3.2.8 3.5.0 3.12.0 3.2.1 3.15.2 - 3.9.15 + 3.9.16 3.15.2 2.2.1 3.5.0 @@ -211,7 +211,7 @@ 21 21 yyyy-MM-dd HH:mm:ssa - 2026-05-12T21:53:47Z + 2026-06-03T21:38:31Z UTF-8 etc${file.separator}source${file.separator}formatter.sh @@ -265,7 +265,7 @@ io.modelcontextprotocol.sdk mcp-bom - 1.1.2 + 1.1.3 pom import @@ -1599,7 +1599,7 @@ com.diffplug.spotless spotless-maven-plugin - 3.4.0 + 3.5.1 true diff --git a/tests/pom.xml b/tests/pom.xml index b2d9df61e3..667675beab 100644 --- a/tests/pom.xml +++ b/tests/pom.xml @@ -6,7 +6,7 @@ io.jooby jooby-project - 4.5.1 + 4.5.2 tests tests @@ -353,7 +353,7 @@ org.asynchttpclient async-http-client - 3.0.9 + 3.0.10