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

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

commit 59ef18f34d1bba2d3023d72313f3c2e02f86bd4f
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 cbd599e..39a2684 100644
--- a/java/org/apache/tomcat/websocket/WsSession.java
+++ b/java/org/apache/tomcat/websocket/WsSession.java
@@ -53,7 +53,6 @@ import 
javax.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;
@@ -172,12 +171,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));
@@ -260,11 +254,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();
 
@@ -389,10 +379,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);
@@ -407,6 +394,11 @@ public class WsSession implements Session {
     }
 
 
+    public InstanceManager getInstanceManager() {
+        return webSocketContainer.getInstanceManager(applicationClassLoader);
+    }
+
+
     @Override
     public WebSocketContainer getContainer() {
         checkState();
@@ -757,10 +749,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 13c16a2..a463cef 100644
--- a/java/org/apache/tomcat/websocket/WsWebSocketContainer.java
+++ b/java/org/apache/tomcat/websocket/WsWebSocketContainer.java
@@ -68,6 +68,7 @@ import javax.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;
@@ -104,8 +105,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