From cf522463192cebb60569fec618cf49b1a0b45b2e Mon Sep 17 00:00:00 2001 From: Rossen Stoyanchev Date: Wed, 27 Jan 2021 20:39:05 +0000 Subject: [PATCH] WebSocketExtension#equals matches sub-classes too Closes gh-26449 --- .../web/socket/WebSocketExtension.java | 4 ++-- .../web/socket/WebSocketExtensionTests.java | 20 ++++++++++++++++--- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/spring-websocket/src/main/java/org/springframework/web/socket/WebSocketExtension.java b/spring-websocket/src/main/java/org/springframework/web/socket/WebSocketExtension.java index d7bb1b0f04a..8c18d4ff8aa 100644 --- a/spring-websocket/src/main/java/org/springframework/web/socket/WebSocketExtension.java +++ b/spring-websocket/src/main/java/org/springframework/web/socket/WebSocketExtension.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2020 the original author or authors. + * Copyright 2002-2021 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -102,7 +102,7 @@ public class WebSocketExtension { if (this == other) { return true; } - if (other == null || getClass() != other.getClass()) { + if (other == null || !WebSocketExtension.class.isAssignableFrom(other.getClass())) { return false; } WebSocketExtension otherExt = (WebSocketExtension) other; diff --git a/spring-websocket/src/test/java/org/springframework/web/socket/WebSocketExtensionTests.java b/spring-websocket/src/test/java/org/springframework/web/socket/WebSocketExtensionTests.java index 3f0c1f63f25..2cbbbd1052c 100644 --- a/spring-websocket/src/test/java/org/springframework/web/socket/WebSocketExtensionTests.java +++ b/spring-websocket/src/test/java/org/springframework/web/socket/WebSocketExtensionTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 the original author or authors. + * Copyright 2002-2021 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,8 +18,11 @@ package org.springframework.web.socket; import java.util.List; +import org.glassfish.tyrus.core.TyrusExtension; import org.junit.jupiter.api.Test; +import org.springframework.web.socket.adapter.standard.StandardToWebSocketExtensionAdapter; + import static org.assertj.core.api.Assertions.assertThat; /** @@ -30,7 +33,9 @@ public class WebSocketExtensionTests { @Test public void parseHeaderSingle() { - List extensions = WebSocketExtension.parseExtensions("x-test-extension ; foo=bar ; bar=baz"); + List extensions = + WebSocketExtension.parseExtensions("x-test-extension ; foo=bar ; bar=baz"); + assertThat(extensions).hasSize(1); WebSocketExtension extension = extensions.get(0); @@ -42,9 +47,18 @@ public class WebSocketExtensionTests { @Test public void parseHeaderMultiple() { - List extensions = WebSocketExtension.parseExtensions("x-foo-extension, x-bar-extension"); + List extensions = + WebSocketExtension.parseExtensions("x-foo-extension, x-bar-extension"); + assertThat(extensions.stream().map(WebSocketExtension::getName)) .containsExactly("x-foo-extension", "x-bar-extension"); } + @Test // gh-26449 + public void equality() { + WebSocketExtension ext1 = new WebSocketExtension("myExtension"); + WebSocketExtension ext2 = new StandardToWebSocketExtensionAdapter(new TyrusExtension("myExtension")); + + assertThat(ext1).isEqualTo(ext2); + } }