From 8e3211c08a07b9b7a792f8300a34d6d573ab950b Mon Sep 17 00:00:00 2001 From: Martin Kouba Date: Fri, 28 Feb 2025 13:11:25 +0100 Subject: [PATCH] ArC: consider built-in session context during client proxy optimization - the problem occurs when quarkus-websockets-next and quarkus-undertow extensions are used at the same time - fixes #46548 --- .../src/main/java/io/quarkus/arc/processor/BeanProcessor.java | 1 + .../runtime/src/main/java/io/quarkus/arc/impl/Contexts.java | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/independent-projects/arc/processor/src/main/java/io/quarkus/arc/processor/BeanProcessor.java b/independent-projects/arc/processor/src/main/java/io/quarkus/arc/processor/BeanProcessor.java index 2c0f6dd7fc064..001dd37f7a7e7 100644 --- a/independent-projects/arc/processor/src/main/java/io/quarkus/arc/processor/BeanProcessor.java +++ b/independent-projects/arc/processor/src/main/java/io/quarkus/arc/processor/BeanProcessor.java @@ -591,6 +591,7 @@ private Set findSingleContextNormalScopes() { Map contextsForScope = new HashMap<>(); // built-in contexts contextsForScope.put(BuiltinScope.REQUEST.getName(), 1); + contextsForScope.put(BuiltinScope.SESSION.getName(), 1); // custom contexts for (Map.Entry>> entry : beanDeployment .getCustomContexts() diff --git a/independent-projects/arc/runtime/src/main/java/io/quarkus/arc/impl/Contexts.java b/independent-projects/arc/runtime/src/main/java/io/quarkus/arc/impl/Contexts.java index b0ec74902fa0b..7cc8c26168455 100644 --- a/independent-projects/arc/runtime/src/main/java/io/quarkus/arc/impl/Contexts.java +++ b/independent-projects/arc/runtime/src/main/java/io/quarkus/arc/impl/Contexts.java @@ -176,6 +176,10 @@ Contexts build() { // If a custom request context is registered then add the built-in context as well putContext(requestContext); } + if (contexts.containsKey(SessionScoped.class)) { + // If a custom session context is registered then add the built-in context as well + putContext(sessionContext); + } return new Contexts(requestContext, sessionContext, applicationContext, singletonContext, dependentContext, contexts); }