Class ConvertingEncoderDecoderSupport<T,M>
- Type Parameters:
T
- the type being converted to (for Encoder) or from (for Decoder)M
- the WebSocket message type (String
orByteBuffer
)
- Direct Known Subclasses:
ConvertingEncoderDecoderSupport.BinaryDecoder
,ConvertingEncoderDecoderSupport.BinaryEncoder
,ConvertingEncoderDecoderSupport.TextDecoder
,ConvertingEncoderDecoderSupport.TextEncoder
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.
- Since:
- 4.0
- Author:
- Phillip Webb
- See Also:
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic class
A binaryjakarta.websocket.Encoder
that delegates to Spring's conversion service.static class
A binaryjakarta.websocket.Encoder
that delegates to Spring's conversion service.static class
A Textjakarta.websocket.Encoder
that delegates to Spring's conversion service.static class
A textjakarta.websocket.Encoder
that delegates to Spring's conversion service. -
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionDecode the message into an object.void
destroy()
Called to destroy the encoder/decoder.Encode an object to a message.protected ApplicationContext
Returns the activeApplicationContext
.protected ConversionService
Strategy method used to obtain theConversionService
.protected TypeDescriptor
Returns the websocket message type.protected TypeDescriptor
getType()
Returns the type being converted.void
init
(EndpointConfig config) Called to initialize the encoder/decoder.boolean
willDecode
(M bytes) Determine if a given message can be decoded.
-
Constructor Details
-
ConvertingEncoderDecoderSupport
public ConvertingEncoderDecoderSupport()
-
-
Method Details
-
init
Called to initialize the encoder/decoder. -
destroy
public void destroy()Called to destroy the encoder/decoder.- See Also:
-
getConversionService
Strategy method used to obtain theConversionService
. By default this method expects a bean named'webSocketConversionService'
in theactive ApplicationContext
.- Returns:
- the
ConversionService
(never null)
-
getApplicationContext
Returns the activeApplicationContext
. Be default this method obtains the context viaContextLoader.getCurrentWebApplicationContext()
, which finds the ApplicationContext loaded viaContextLoader
typically in a Servlet container environment. When not running in a Servlet container and not usingContextLoader
, this method should be overridden.- Returns:
- the
ApplicationContext
ornull
-
getType
Returns the type being converted. By default the type is resolved using the generic arguments of the class. -
getMessageType
Returns the websocket message type. By default the type is resolved using the generic arguments of the class. -
encode
Encode an object to a message.- Throws:
EncodeException
- See Also:
-
willDecode
Determine if a given message can be decoded. -
decode
Decode the message into an object.- Throws:
DecodeException
- See Also:
-