Class SendToMethodReturnValueHandler
- java.lang.Object
- org.springframework.messaging.simp.annotation.support.SendToMethodReturnValueHandler
- All Implemented Interfaces:
HandlerMethodReturnValueHandler
public class SendToMethodReturnValueHandler extends Object implements HandlerMethodReturnValueHandler
AHandlerMethodReturnValueHandler
for sending to destinations specified in aSendTo
orSendToUser
method-level annotations.The value returned from the method is converted, and turned to a
Message
and sent through the providedMessageChannel
. The message is then enriched with the session id of the input message as well as the destination from the annotation(s). If multiple destinations are specified, a copy of the message is sent to each destination.- Since:
- 4.0
- Author:
- Rossen Stoyanchev, Sebastien Deleuze
Constructor Summary
Constructors Constructor Description SendToMethodReturnValueHandler(SimpMessageSendingOperations messagingTemplate, boolean annotationRequired)
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description String
getDefaultDestinationPrefix()
Return the configured default destination prefix.String
getDefaultUserDestinationPrefix()
Return the configured default user destination prefix.MessageHeaderInitializer
getHeaderInitializer()
Return the configured header initializer.protected String[]
getTargetDestinations(Annotation annotation, Message<?> message, String defaultPrefix)
protected String
getUserName(Message<?> message, MessageHeaders headers)
void
handleReturnValue(Object returnValue, MethodParameter returnType, Message<?> message)
Handle the given return value.void
setDefaultDestinationPrefix(String defaultDestinationPrefix)
Configure a default prefix to add to message destinations in cases where a method is not annotated with@SendTo
or does not specify any destinations through the annotation's value attribute.void
setDefaultUserDestinationPrefix(String prefix)
Configure a default prefix to add to message destinations in cases where a method is annotated with@SendToUser
but does not specify any destinations through the annotation's value attribute.void
setHeaderInitializer(MessageHeaderInitializer headerInitializer)
Configure aMessageHeaderInitializer
to apply to the headers of all messages sent to the client outbound channel.boolean
supportsReturnType(MethodParameter returnType)
Whether the given method return type is supported by this handler.String
toString()
Constructor Detail
SendToMethodReturnValueHandler
public SendToMethodReturnValueHandler(SimpMessageSendingOperations messagingTemplate, boolean annotationRequired)
Method Detail
setDefaultDestinationPrefix
public void setDefaultDestinationPrefix(String defaultDestinationPrefix)
Configure a default prefix to add to message destinations in cases where a method is not annotated with@SendTo
or does not specify any destinations through the annotation's value attribute.By default, the prefix is set to "/topic".
getDefaultDestinationPrefix
public String getDefaultDestinationPrefix()
Return the configured default destination prefix.- See Also:
setDefaultDestinationPrefix(String)
setDefaultUserDestinationPrefix
public void setDefaultUserDestinationPrefix(String prefix)
Configure a default prefix to add to message destinations in cases where a method is annotated with@SendToUser
but does not specify any destinations through the annotation's value attribute.By default, the prefix is set to "/queue".
getDefaultUserDestinationPrefix
public String getDefaultUserDestinationPrefix()
Return the configured default user destination prefix.
setHeaderInitializer
public void setHeaderInitializer(@Nullable MessageHeaderInitializer headerInitializer)
Configure aMessageHeaderInitializer
to apply to the headers of all messages sent to the client outbound channel.By default this property is not set.
getHeaderInitializer
@Nullable public MessageHeaderInitializer getHeaderInitializer()
Return the configured header initializer.
supportsReturnType
public boolean supportsReturnType(MethodParameter returnType)
Description copied from interface:HandlerMethodReturnValueHandler
Whether the given method return type is supported by this handler.- Specified by:
supportsReturnType
in interfaceHandlerMethodReturnValueHandler
- Parameters:
returnType
- the method return type to check- Returns:
true
if this handler supports the supplied return type;false
otherwise
handleReturnValue
public void handleReturnValue(@Nullable Object returnValue, MethodParameter returnType, Message<?> message) throws Exception
Description copied from interface:HandlerMethodReturnValueHandler
Handle the given return value.- Specified by:
handleReturnValue
in interfaceHandlerMethodReturnValueHandler
- Parameters:
returnValue
- the value returned from the handler methodreturnType
- the type of the return value. This type must have previously been passed toHandlerMethodReturnValueHandler.supportsReturnType(org.springframework.core.MethodParameter)
and it must have returnedtrue
.message
- the message that caused this method to be called- Throws:
Exception
- if the return value handling results in an error
getUserName
@Nullable protected String getUserName(Message<?> message, MessageHeaders headers)
getTargetDestinations
protected String[] getTargetDestinations(@Nullable Annotation annotation, Message<?> message, String defaultPrefix)