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
This commit is contained in:
@@ -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<String, String> initParameters(Extension extension) {
|
||||
List<Extension.Parameter> parameters = extension.getParameters();
|
||||
Map<String, String> result = new LinkedCaseInsensitiveMap<String>(parameters.size(), Locale.ENGLISH);
|
||||
for (Extension.Parameter parameter : parameters) {
|
||||
result.put(parameter.getName(), parameter.getValue());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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<Parameter> parameters = new ArrayList<Parameter>();
|
||||
|
||||
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);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user