From afb56681ac887b65fe7f6d0c49e5aa77d3f36f65 Mon Sep 17 00:00:00 2001 From: Rossen Stoyanchev Date: Wed, 23 Jul 2014 22:46:45 -0400 Subject: [PATCH] Fix minor issue in StandardToWebSocketExtensionAdapter This change ensures proper initialization of a WebSocketExtension from a JSR-356 Extension. This is in preparation for SPR-11094 --- .../StandardToWebSocketExtensionAdapter.java | 24 +++++++++++++++---- .../WebSocketToStandardExtensionAdapter.java | 12 ++++++---- 2 files changed, 28 insertions(+), 8 deletions(-) diff --git a/spring-websocket/src/main/java/org/springframework/web/socket/adapter/standard/StandardToWebSocketExtensionAdapter.java b/spring-websocket/src/main/java/org/springframework/web/socket/adapter/standard/StandardToWebSocketExtensionAdapter.java index 5546916358..8cc9f80576 100644 --- a/spring-websocket/src/main/java/org/springframework/web/socket/adapter/standard/StandardToWebSocketExtensionAdapter.java +++ b/spring-websocket/src/main/java/org/springframework/web/socket/adapter/standard/StandardToWebSocketExtensionAdapter.java @@ -18,19 +18,35 @@ package org.springframework.web.socket.adapter.standard; import javax.websocket.Extension; +import org.springframework.util.LinkedCaseInsensitiveMap; import org.springframework.web.socket.WebSocketExtension; +import java.util.List; +import java.util.Locale; +import java.util.Map; + /** + * A sub-class of {@link org.springframework.web.socket.WebSocketExtension} that + * can be constructed from an {@link javax.websocket.Extension}. + * * @author Rossen Stoyanchev * @since 4.0 */ public class StandardToWebSocketExtensionAdapter extends WebSocketExtension { - public StandardToWebSocketExtensionAdapter(Extension ext) { - super(ext.getName()); - for (Extension.Parameter p : ext.getParameters()) { - super.getParameters().put(p.getName(), p.getValue()); + + public StandardToWebSocketExtensionAdapter(Extension extension) { + super(extension.getName(), initParameters(extension)); + } + + + private static Map initParameters(Extension extension) { + List parameters = extension.getParameters(); + Map result = new LinkedCaseInsensitiveMap(parameters.size(), Locale.ENGLISH); + for (Extension.Parameter parameter : parameters) { + result.put(parameter.getName(), parameter.getValue()); } + return result; } } diff --git a/spring-websocket/src/main/java/org/springframework/web/socket/adapter/standard/WebSocketToStandardExtensionAdapter.java b/spring-websocket/src/main/java/org/springframework/web/socket/adapter/standard/WebSocketToStandardExtensionAdapter.java index a0adc17db9..a8ee747ae8 100644 --- a/spring-websocket/src/main/java/org/springframework/web/socket/adapter/standard/WebSocketToStandardExtensionAdapter.java +++ b/spring-websocket/src/main/java/org/springframework/web/socket/adapter/standard/WebSocketToStandardExtensionAdapter.java @@ -23,6 +23,9 @@ import javax.websocket.Extension; import org.springframework.web.socket.WebSocketExtension; /** + * Adapt an instance of {@link org.springframework.web.socket.WebSocketExtension} to + * the {@link javax.websocket.Extension} interface. + * * @author Rossen Stoyanchev * @since 4.0 */ @@ -32,9 +35,10 @@ public class WebSocketToStandardExtensionAdapter implements Extension { private final List parameters = new ArrayList(); - public WebSocketToStandardExtensionAdapter(final WebSocketExtension ext) { - this.name = ext.getName(); - for (final String paramName : ext.getParameters().keySet()) { + + public WebSocketToStandardExtensionAdapter(final WebSocketExtension extension) { + this.name = extension.getName(); + for (final String paramName : extension.getParameters().keySet()) { this.parameters.add(new Parameter() { @Override public String getName() { @@ -42,7 +46,7 @@ public class WebSocketToStandardExtensionAdapter implements Extension { } @Override public String getValue() { - return ext.getParameters().get(paramName); + return extension.getParameters().get(paramName); } }); }