From b7e75c5db472d22a619739a55331f5423a510ee7 Mon Sep 17 00:00:00 2001 From: Brian Clozel Date: Tue, 13 Oct 2015 16:05:57 +0200 Subject: [PATCH] Fix websocket compatibility with Tyrus 1.9 - 1.12 As of Tyrus 1.9, `TyrusEndpointWrapper`'s constructor has a new Boolean argument (which is mandatory). This commit reflectively chooses the right constructor method for Tyrus 1.9+ versions. Issue: SPR-13566 --- .../standard/AbstractTyrusRequestUpgradeStrategy.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/spring-websocket/src/main/java/org/springframework/web/socket/server/standard/AbstractTyrusRequestUpgradeStrategy.java b/spring-websocket/src/main/java/org/springframework/web/socket/server/standard/AbstractTyrusRequestUpgradeStrategy.java index 9ee96f9c13..7cb73dacca 100644 --- a/spring-websocket/src/main/java/org/springframework/web/socket/server/standard/AbstractTyrusRequestUpgradeStrategy.java +++ b/spring-websocket/src/main/java/org/springframework/web/socket/server/standard/AbstractTyrusRequestUpgradeStrategy.java @@ -216,8 +216,14 @@ public abstract class AbstractTyrusRequestUpgradeStrategy extends AbstractStanda Object sessionListener = accessor.getPropertyValue("sessionListener"); Object clusterContext = accessor.getPropertyValue("clusterContext"); try { - return constructor.newInstance(registration.getEndpoint(), registration, provider, container, - "/", registration.getConfigurator(), sessionListener, clusterContext, null); + if (constructor.getParameterCount() == 9) { + return constructor.newInstance(registration.getEndpoint(), registration, provider, container, + "/", registration.getConfigurator(), sessionListener, clusterContext, null); + } + else { + return constructor.newInstance(registration.getEndpoint(), registration, provider, container, + "/", registration.getConfigurator(), sessionListener, clusterContext, null, Boolean.TRUE); + } } catch (Exception ex) { throw new HandshakeFailureException("Failed to register " + registration, ex);