Skip to content

Commit

Permalink
WebSockets Next: replace WebSocketSessionContext with built-in context
Browse files Browse the repository at this point in the history
  • Loading branch information
mkouba committed Dec 17, 2024
1 parent 1cd124e commit a3f0d32
Show file tree
Hide file tree
Showing 6 changed files with 18 additions and 101 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,6 @@
import io.quarkus.arc.deployment.BeanArchiveIndexBuildItem;
import io.quarkus.arc.deployment.BeanDefiningAnnotationBuildItem;
import io.quarkus.arc.deployment.BeanDiscoveryFinishedBuildItem;
import io.quarkus.arc.deployment.ContextRegistrationPhaseBuildItem;
import io.quarkus.arc.deployment.ContextRegistrationPhaseBuildItem.ContextConfiguratorBuildItem;
import io.quarkus.arc.deployment.CustomScopeBuildItem;
import io.quarkus.arc.deployment.InvokerFactoryBuildItem;
import io.quarkus.arc.deployment.SyntheticBeanBuildItem;
import io.quarkus.arc.deployment.SyntheticBeansRuntimeInitBuildItem;
Expand Down Expand Up @@ -126,7 +123,6 @@
import io.quarkus.websockets.next.runtime.WebSocketEndpointBase;
import io.quarkus.websockets.next.runtime.WebSocketHttpServerOptionsCustomizer;
import io.quarkus.websockets.next.runtime.WebSocketServerRecorder;
import io.quarkus.websockets.next.runtime.WebSocketSessionContext;
import io.quarkus.websockets.next.runtime.kotlin.ApplicationCoroutineScope;
import io.quarkus.websockets.next.runtime.kotlin.CoroutineInvoker;
import io.quarkus.websockets.next.runtime.telemetry.ErrorInterceptor;
Expand Down Expand Up @@ -229,19 +225,6 @@ void produceCoroutineScope(BuildProducer<AdditionalBeanBuildItem> additionalBean
.build());
}

@BuildStep
ContextConfiguratorBuildItem registerSessionContext(ContextRegistrationPhaseBuildItem phase) {
return new ContextConfiguratorBuildItem(phase.getContext()
.configure(SessionScoped.class)
.normal()
.contextClass(WebSocketSessionContext.class));
}

@BuildStep
CustomScopeBuildItem registerSessionScope() {
return new CustomScopeBuildItem(DotName.createSimple(SessionScoped.class));
}

@BuildStep
void builtinCallbackArguments(BuildProducer<CallbackArgumentBuildItem> providers) {
providers.produce(new CallbackArgumentBuildItem(new MessageCallbackArgument()));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@

import io.quarkus.arc.InjectableContext.ContextState;
import io.quarkus.arc.ManagedContext;
import io.quarkus.arc.impl.CurrentManagedContext.CurrentContextState;
import io.quarkus.vertx.core.runtime.context.VertxContextSafetyToggle;
import io.smallrye.common.vertx.VertxContext;
import io.vertx.core.Context;
Expand All @@ -21,12 +20,12 @@ public class ContextSupport {
static final String WEB_SOCKET_CONN_KEY = WebSocketConnectionBase.class.getName();

private final WebSocketConnectionBase connection;
private final CurrentContextState sessionContextState;
private final WebSocketSessionContext sessionContext;
private final ContextState sessionContextState;
private final ManagedContext sessionContext;
private final ManagedContext requestContext;

ContextSupport(WebSocketConnectionBase connection, CurrentContextState sessionContextState,
WebSocketSessionContext sessionContext,
ContextSupport(WebSocketConnectionBase connection, ContextState sessionContextState,
ManagedContext sessionContext,
ManagedContext requestContext) {
this.connection = connection;
this.sessionContext = sessionContext;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,12 @@
import java.util.Optional;
import java.util.function.Consumer;

import jakarta.enterprise.context.SessionScoped;

import org.jboss.logging.Logger;

import io.netty.handler.codec.http.websocketx.WebSocketCloseStatus;
import io.quarkus.arc.ArcContainer;
import io.quarkus.arc.InjectableContext;
import io.quarkus.arc.impl.CurrentManagedContext.CurrentContextState;
import io.quarkus.arc.ManagedContext;
import io.quarkus.runtime.LaunchMode;
import io.quarkus.security.AuthenticationFailedException;
import io.quarkus.security.ForbiddenException;
Expand Down Expand Up @@ -43,11 +41,11 @@ static void initialize(Vertx vertx, ArcContainer container, Codecs codecs, WebSo

// Initialize and capture the session context state that will be activated
// during message processing
WebSocketSessionContext sessionContext = null;
CurrentContextState sessionContextState = null;
ManagedContext sessionContext = null;
InjectableContext.ContextState sessionContextState = null;
if (activateSessionContext) {
sessionContext = sessionContext(container);
sessionContextState = sessionContext.initializeContextState();
sessionContext = container.sessionContext();
sessionContextState = sessionContext.initializeState();
}
ContextSupport contextSupport = new ContextSupport(connection, sessionContextState,
sessionContext, activateRequestContext ? container.requestContext() : null);
Expand Down Expand Up @@ -406,12 +404,4 @@ private static WebSocketEndpoint createEndpoint(String endpointClassName, Contex
}
}

private static WebSocketSessionContext sessionContext(ArcContainer container) {
for (InjectableContext injectableContext : container.getContexts(SessionScoped.class)) {
if (WebSocketSessionContext.class.equals(injectableContext.getClass())) {
return (WebSocketSessionContext) injectableContext;
}
}
throw new WebSocketException("CDI session context not registered");
}
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -50,4 +50,10 @@ default void terminate() {
destroy();
deactivate();
}

/**
*
* @return a new initialized context state
*/
ContextState initializeState();
}
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ public ContextState activate(ContextState initialState) {
traceActivate(initialState);
}
if (initialState == null) {
CurrentContextState state = initializeContextState();
CurrentContextState state = initializeState();
currentContext.set(state);
return state;
} else {
Expand Down Expand Up @@ -181,7 +181,8 @@ public void destroy(ContextState state) {
}
}

public CurrentContextState initializeContextState() {
@Override
public CurrentContextState initializeState() {
CurrentContextState state = new CurrentContextState(contextInstances.get());
fireIfNotNull(initializedNotifier);
return state;
Expand Down

0 comments on commit a3f0d32

Please sign in to comment.