T - the type being converted to (for Encoder) or from (for Decoder)M - the WebSocket message type (String or ByteBuffer)public abstract class ConvertingEncoderDecoderSupport<T,M> extends Object
Encoder
and/or Decoder. It provides encode and decode method
implementations that delegate to a Spring ConversionService.
By default, this class looks up a ConversionService registered in the
active ApplicationContext under
the name 'webSocketConversionService'. This works fine for both client
and server endpoints, in a Servlet container environment. If not running in a
Servlet container, subclasses will need to override the
getConversionService() method to provide an alternative lookup strategy.
Subclasses can extend this class and should also implement one or
both of Encoder and Decoder.
For convenience ConvertingEncoderDecoderSupport.BinaryEncoder,
ConvertingEncoderDecoderSupport.BinaryDecoder,
ConvertingEncoderDecoderSupport.TextEncoder and
ConvertingEncoderDecoderSupport.TextDecoder subclasses are provided.
Since JSR-356 only allows Encoder/Decoder to be registered by type, instances
of this class are therefore managed by the WebSocket runtime, and do not need to
be registered as Spring Beans. They can, however, by injected with Spring-managed
dependencies via @Autowire.
Converters to convert between the type and String or
ByteBuffer should be registered.
ConvertingEncoderDecoderSupport.BinaryEncoder,
ConvertingEncoderDecoderSupport.BinaryDecoder,
ConvertingEncoderDecoderSupport.TextEncoder,
ConvertingEncoderDecoderSupport.TextDecoder| Modifier and Type | Class and Description |
|---|---|
static class |
ConvertingEncoderDecoderSupport.BinaryDecoder<T>
A binary
javax.websocket.Encoder that delegates
to Spring's conversion service. |
static class |
ConvertingEncoderDecoderSupport.BinaryEncoder<T>
A binary
javax.websocket.Encoder that delegates
to Spring's conversion service. |
static class |
ConvertingEncoderDecoderSupport.TextDecoder<T>
A Text
javax.websocket.Encoder that delegates
to Spring's conversion service. |
static class |
ConvertingEncoderDecoderSupport.TextEncoder<T>
A text
javax.websocket.Encoder that delegates
to Spring's conversion service. |
| Constructor and Description |
|---|
ConvertingEncoderDecoderSupport() |
| Modifier and Type | Method and Description |
|---|---|
T |
decode(M message) |
void |
destroy() |
M |
encode(T object) |
protected org.springframework.context.ApplicationContext |
getApplicationContext()
Returns the active
ApplicationContext. |
protected org.springframework.core.convert.ConversionService |
getConversionService()
Strategy method used to obtain the
ConversionService. |
protected org.springframework.core.convert.TypeDescriptor |
getMessageType()
Returns the websocket message type.
|
protected org.springframework.core.convert.TypeDescriptor |
getType()
Returns the type being converted.
|
void |
init(javax.websocket.EndpointConfig config) |
boolean |
willDecode(M bytes) |
public void init(javax.websocket.EndpointConfig config)
Encoder.init(EndpointConfig),
Decoder.init(EndpointConfig)public void destroy()
Encoder.destroy(),
Decoder.destroy()protected org.springframework.core.convert.ConversionService getConversionService()
ConversionService. By default this
method expects a bean named 'webSocketConversionService' in the
active ApplicationContext.ConversionService (never null)protected org.springframework.context.ApplicationContext getApplicationContext()
ApplicationContext. Be default this method obtains
the context via ContextLoader.getCurrentWebApplicationContext(), which
finds the ApplicationContext loaded via ContextLoader typically in a
Servlet container environment. When not running in a Servlet container and
not using ContextLoader, this method should be overridden.ApplicationContext or nullprotected org.springframework.core.convert.TypeDescriptor getType()
protected org.springframework.core.convert.TypeDescriptor getMessageType()
public M encode(T object) throws javax.websocket.EncodeException
javax.websocket.EncodeExceptionEncoder.Text.encode(Object),
Encoder.Binary.encode(Object)public boolean willDecode(M bytes)
Decoder.Text.willDecode(String),
Decoder.Binary.willDecode(ByteBuffer)