diff --git a/bom/application/pom.xml b/bom/application/pom.xml index 8bbb0c96106aa..fd04d4dec1d10 100644 --- a/bom/application/pom.xml +++ b/bom/application/pom.xml @@ -109,7 +109,7 @@ <wildfly-client-config.version>1.0.1.Final</wildfly-client-config.version> <wildfly-elytron.version>1.20.1.Final</wildfly-elytron.version> <jboss-threads.version>3.4.3.Final</jboss-threads.version> - <vertx.version>4.3.3</vertx.version> + <vertx.version>4.3.4</vertx.version> <httpclient.version>4.5.13</httpclient.version> <httpcore.version>4.4.15</httpcore.version> diff --git a/extensions/vertx/runtime/src/main/java/io/quarkus/vertx/core/runtime/graal/VertxSubstitutions.java b/extensions/vertx/runtime/src/main/java/io/quarkus/vertx/core/runtime/graal/VertxSubstitutions.java index b5174a1f87ff3..0a7313ca0473b 100644 --- a/extensions/vertx/runtime/src/main/java/io/quarkus/vertx/core/runtime/graal/VertxSubstitutions.java +++ b/extensions/vertx/runtime/src/main/java/io/quarkus/vertx/core/runtime/graal/VertxSubstitutions.java @@ -6,22 +6,21 @@ import java.util.concurrent.ConcurrentMap; import javax.net.ssl.KeyManagerFactory; +import javax.net.ssl.SSLException; import javax.net.ssl.TrustManagerFactory; -import javax.net.ssl.X509KeyManager; import com.oracle.svm.core.annotate.Alias; import com.oracle.svm.core.annotate.Substitute; import com.oracle.svm.core.annotate.TargetClass; import io.netty.handler.ssl.ApplicationProtocolConfig; -import io.netty.handler.ssl.OpenSslServerContext; +import io.netty.handler.ssl.ClientAuth; import io.netty.handler.ssl.SslContext; import io.netty.handler.ssl.SslContextBuilder; import io.netty.handler.ssl.SslProvider; import io.vertx.core.MultiMap; import io.vertx.core.Promise; import io.vertx.core.Vertx; -import io.vertx.core.VertxException; import io.vertx.core.dns.AddressResolverOptions; import io.vertx.core.eventbus.EventBusOptions; import io.vertx.core.eventbus.impl.HandlerHolder; @@ -140,83 +139,57 @@ EventBusOptions options() { } } -@TargetClass(className = "io.vertx.core.net.impl.SSLHelper") -final class Target_io_vertx_core_net_impl_SSLHelper { - - @Alias - private boolean client; +@TargetClass(className = "io.vertx.core.spi.tls.DefaultSslContextFactory") +final class Target_DefaultSslContextFactory { @Alias private Set<String> enabledCipherSuites; - @Alias - private boolean openSsl; - @Alias private List<String> applicationProtocols; @Alias - private KeyManagerFactory getKeyMgrFactory(VertxInternal vertx) throws Exception { - return null; - } + private ClientAuth clientAuth; @Substitute - private SslContext createContext(VertxInternal vertx, boolean useAlpn, X509KeyManager mgr, - TrustManagerFactory trustMgrFactory) { - try { - SslContextBuilder builder; - if (client) { - builder = SslContextBuilder.forClient(); - KeyManagerFactory keyMgrFactory = getKeyMgrFactory(vertx); - if (keyMgrFactory != null) { - builder.keyManager(keyMgrFactory); - } - } else { - if (mgr != null) { - builder = SslContextBuilder.forServer(mgr.getPrivateKey(null), null, mgr.getCertificateChain(null)); - } else { - KeyManagerFactory keyMgrFactory = getKeyMgrFactory(vertx); - if (keyMgrFactory == null) { - throw new VertxException("Key/certificate is mandatory for SSL"); - } - builder = SslContextBuilder.forServer(keyMgrFactory); - } - } - Collection<String> cipherSuites = enabledCipherSuites; - if (openSsl) { - throw new UnsupportedOperationException("OpenSSL not supported in native images"); - } else { - builder.sslProvider(SslProvider.JDK); - if (cipherSuites == null || cipherSuites.isEmpty()) { - cipherSuites = Target_io_vertx_core_net_impl_DefaultJDKCipherSuite.get(); - } - } - if (trustMgrFactory != null) { - builder.trustManager(trustMgrFactory); + private SslContext createContext(boolean useAlpn, boolean client, KeyManagerFactory kmf, TrustManagerFactory tmf) + throws SSLException { + SslContextBuilder builder; + if (client) { + builder = SslContextBuilder.forClient(); + if (kmf != null) { + builder.keyManager(kmf); } - if (cipherSuites != null && cipherSuites.size() > 0) { - builder.ciphers(cipherSuites); - } - if (useAlpn && applicationProtocols != null && applicationProtocols.size() > 0) { - builder.applicationProtocolConfig(new ApplicationProtocolConfig( - ApplicationProtocolConfig.Protocol.ALPN, - ApplicationProtocolConfig.SelectorFailureBehavior.NO_ADVERTISE, - ApplicationProtocolConfig.SelectedListenerFailureBehavior.ACCEPT, - applicationProtocols)); - } - SslContext ctx = builder.build(); - if (ctx instanceof OpenSslServerContext) { - throw new UnsupportedOperationException("OpenSSL not supported in native images"); - } - return ctx; - } catch (Exception e) { - throw new VertxException(e); + } else { + builder = SslContextBuilder.forServer(kmf); + } + Collection<String> cipherSuites = enabledCipherSuites; + builder.sslProvider(SslProvider.JDK); + if (cipherSuites == null || cipherSuites.isEmpty()) { + cipherSuites = Target_io_vertx_core_spi_tls_DefaultJDKCipherSuite.get(); + } + if (tmf != null) { + builder.trustManager(tmf); + } + if (cipherSuites != null && cipherSuites.size() > 0) { + builder.ciphers(cipherSuites); + } + if (useAlpn && applicationProtocols != null && applicationProtocols.size() > 0) { + builder.applicationProtocolConfig(new ApplicationProtocolConfig( + ApplicationProtocolConfig.Protocol.ALPN, + ApplicationProtocolConfig.SelectorFailureBehavior.NO_ADVERTISE, + ApplicationProtocolConfig.SelectedListenerFailureBehavior.ACCEPT, + applicationProtocols)); + } + if (clientAuth != null) { + builder.clientAuth(clientAuth); } + return builder.build(); } } -@TargetClass(className = "io.vertx.core.net.impl.DefaultJDKCipherSuite") -final class Target_io_vertx_core_net_impl_DefaultJDKCipherSuite { +@TargetClass(className = "io.vertx.core.spi.tls.DefaultJDKCipherSuite") +final class Target_io_vertx_core_spi_tls_DefaultJDKCipherSuite { @Alias static List<String> get() { return null; diff --git a/independent-projects/resteasy-reactive/client/runtime/src/main/java/org/jboss/resteasy/reactive/client/impl/ClientImpl.java b/independent-projects/resteasy-reactive/client/runtime/src/main/java/org/jboss/resteasy/reactive/client/impl/ClientImpl.java index d0cf2b2261fbd..a7ea3759d8a86 100644 --- a/independent-projects/resteasy-reactive/client/runtime/src/main/java/org/jboss/resteasy/reactive/client/impl/ClientImpl.java +++ b/independent-projects/resteasy-reactive/client/runtime/src/main/java/org/jboss/resteasy/reactive/client/impl/ClientImpl.java @@ -463,11 +463,21 @@ public long setPeriodic(long l, Handler<Long> handler) { return getDelegate().setPeriodic(l, handler); } + @Override + public long setPeriodic(long initialDelay, long delay, Handler<Long> handler) { + return getDelegate().setPeriodic(initialDelay, delay, handler); + } + @Override public TimeoutStream periodicStream(long l) { return getDelegate().periodicStream(l); } + @Override + public TimeoutStream periodicStream(long initialDelay, long delay) { + return getDelegate().periodicStream(initialDelay, delay); + } + @Override public boolean cancelTimer(long l) { return getDelegate().cancelTimer(l); diff --git a/independent-projects/resteasy-reactive/pom.xml b/independent-projects/resteasy-reactive/pom.xml index 0f7cbcc96c044..de34a64cf09ad 100644 --- a/independent-projects/resteasy-reactive/pom.xml +++ b/independent-projects/resteasy-reactive/pom.xml @@ -57,7 +57,7 @@ <jakarta.json.version>1.1.6</jakarta.json.version> <mutiny.version>1.7.0</mutiny.version> <smallrye-common.version>1.13.1</smallrye-common.version> - <vertx.version>4.3.2</vertx.version> + <vertx.version>4.3.4</vertx.version> <rest-assured.version>4.5.1</rest-assured.version> <commons-logging-jboss-logging.version>1.0.0.Final</commons-logging-jboss-logging.version> <jboss-jaxb-api_2.3_spec.version>2.0.0.Final</jboss-jaxb-api_2.3_spec.version>