This is an automated email from the ASF dual-hosted git repository.

markt pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tomcat.git


The following commit(s) were added to refs/heads/master by this push:
     new 7883e3d  Refactor InstanceManager lookup
7883e3d is described below

commit 7883e3dec71c27b2d14eb4a41c1beae9ff726aa5
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Wed May 5 12:08:50 2021 +0100

    Refactor InstanceManager lookup
---
 java/org/apache/tomcat/websocket/WsSession.java    | 29 +++++++---------------
 .../tomcat/websocket/WsWebSocketContainer.java     |  8 ++++--
 2 files changed, 15 insertions(+), 22 deletions(-)

diff --git a/java/org/apache/tomcat/websocket/WsSession.java 
b/java/org/apache/tomcat/websocket/WsSession.java
index 4c71d84..c91a0f2 100644
--- a/java/org/apache/tomcat/websocket/WsSession.java
+++ b/java/org/apache/tomcat/websocket/WsSession.java
@@ -54,7 +54,6 @@ import 
jakarta.websocket.server.ServerEndpointConfig.Configurator;
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
 import org.apache.tomcat.InstanceManager;
-import org.apache.tomcat.InstanceManagerBindings;
 import org.apache.tomcat.util.ExceptionUtils;
 import org.apache.tomcat.util.res.StringManager;
 import org.apache.tomcat.websocket.pojo.PojoEndpointServer;
@@ -173,12 +172,7 @@ public class WsSession implements Session {
         this.userProperties.putAll(endpointConfig.getUserProperties());
         this.id = Long.toHexString(ids.getAndIncrement());
 
-        InstanceManager instanceManager = 
webSocketContainer.getInstanceManager();
-        if (instanceManager == null) {
-            instanceManager = 
InstanceManagerBindings.get(applicationClassLoader);
-        }
-
-        this.localEndpoint = clientEndpointHolder.getInstance(instanceManager);
+        this.localEndpoint = 
clientEndpointHolder.getInstance(getInstanceManager());
 
         if (log.isDebugEnabled()) {
             log.debug(sm.getString("wsSession.created", id));
@@ -261,11 +255,7 @@ public class WsSession implements Session {
         this.userProperties.putAll(endpointConfig.getUserProperties());
         this.id = Long.toHexString(ids.getAndIncrement());
 
-        InstanceManager instanceManager = 
webSocketContainer.getInstanceManager();
-        if (instanceManager == null) {
-            instanceManager = 
InstanceManagerBindings.get(applicationClassLoader);
-        }
-
+        InstanceManager instanceManager = getInstanceManager();
         Configurator configurator = serverEndpointConfig.getConfigurator();
         Class<?> clazz = serverEndpointConfig.getEndpointClass();
 
@@ -390,10 +380,7 @@ public class WsSession implements Session {
         this.userProperties.putAll(endpointConfig.getUserProperties());
         this.id = Long.toHexString(ids.getAndIncrement());
 
-        InstanceManager instanceManager = 
webSocketContainer.getInstanceManager();
-        if (instanceManager == null) {
-            instanceManager = 
InstanceManagerBindings.get(applicationClassLoader);
-        }
+        InstanceManager instanceManager = getInstanceManager();
         if (instanceManager != null) {
             try {
                 instanceManager.newInstance(localEndpoint);
@@ -408,6 +395,11 @@ public class WsSession implements Session {
     }
 
 
+    public InstanceManager getInstanceManager() {
+        return webSocketContainer.getInstanceManager(applicationClassLoader);
+    }
+
+
     @Override
     public WebSocketContainer getContainer() {
         checkState();
@@ -758,10 +750,7 @@ public class WsSession implements Session {
 
         // Fire the onClose event
         Throwable throwable = null;
-        InstanceManager instanceManager = 
webSocketContainer.getInstanceManager();
-        if (instanceManager == null) {
-            instanceManager = 
InstanceManagerBindings.get(applicationClassLoader);
-        }
+        InstanceManager instanceManager = 
webSocketContainer.getInstanceManager(applicationClassLoader);
         Thread t = Thread.currentThread();
         ClassLoader cl = t.getContextClassLoader();
         t.setContextClassLoader(applicationClassLoader);
diff --git a/java/org/apache/tomcat/websocket/WsWebSocketContainer.java 
b/java/org/apache/tomcat/websocket/WsWebSocketContainer.java
index aee1994..52d7837 100644
--- a/java/org/apache/tomcat/websocket/WsWebSocketContainer.java
+++ b/java/org/apache/tomcat/websocket/WsWebSocketContainer.java
@@ -69,6 +69,7 @@ import jakarta.websocket.WebSocketContainer;
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
 import org.apache.tomcat.InstanceManager;
+import org.apache.tomcat.InstanceManagerBindings;
 import org.apache.tomcat.util.buf.StringUtils;
 import org.apache.tomcat.util.codec.binary.Base64;
 import org.apache.tomcat.util.collections.CaseInsensitiveKeyMap;
@@ -105,8 +106,11 @@ public class WsWebSocketContainer implements 
WebSocketContainer, BackgroundProce
 
     private InstanceManager instanceManager;
 
-    InstanceManager getInstanceManager() {
-        return instanceManager;
+    protected InstanceManager getInstanceManager(ClassLoader classLoader) {
+        if (instanceManager  != null) {
+            return instanceManager;
+        }
+        return InstanceManagerBindings.get(classLoader);
     }
 
     protected void setInstanceManager(InstanceManager instanceManager) {

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to