org.springframework.messaging.simp.annotation.support

## Class SendToMethodReturnValueHandler

- java.lang.Object
- - org.springframework.messaging.simp.annotation.support.SendToMethodReturnValueHandler

All Implemented Interfaces:
  HandlerMethodReturnValueHandler

    public class SendToMethodReturnValueHandler
    extends Object
    implements HandlerMethodReturnValueHandler

A `HandlerMethodReturnValueHandler` for sending to destinations specified in a `SendTo` or `SendToUser` method-level annotations.

The value returned from the method is converted, and turned to a `Message` and sent through the provided `MessageChannel`. 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 and Description
`SendToMethodReturnValueHandler(SimpMessageSendingOperations messagingTemplate, boolean annotationRequired)`

### Method Summary

All Methods Instance Methods Concrete Methods
`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, org.springframework.core.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 a `MessageHeaderInitializer` to apply to the headers of all messages sent to the client outbound channel.
`boolean` `supportsReturnType(org.springframework.core.MethodParameter returnType)` Whether the given method return type is supported by this handler.
`String` `toString()`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

### 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.

See Also:
  `setDefaultUserDestinationPrefix(String)`

#### setHeaderInitializer

    public void setHeaderInitializer(@Nullable
                                     MessageHeaderInitializer headerInitializer)

Configure a `MessageHeaderInitializer` 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(org.springframework.core.MethodParameter returnType)

Description copied from interface: `HandlerMethodReturnValueHandler`
Whether the given method return type is supported by this handler.

Specified by:
  `supportsReturnType` in interface `HandlerMethodReturnValueHandler`
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,
                                  org.springframework.core.MethodParameter returnType,
                                  Message<?> message)
                           throws Exception

Description copied from interface: `HandlerMethodReturnValueHandler`
Handle the given return value.

Specified by:
  `handleReturnValue` in interface `HandlerMethodReturnValueHandler`
Parameters:
  `returnValue` - the value returned from the handler method
  `returnType` - the type of the return value. This type must have previously been passed to `HandlerMethodReturnValueHandler.supportsReturnType(org.springframework.core.MethodParameter)` and it must have returned `true`.
  `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)

#### toString

    public String toString()

Overrides:
  `toString` in class `Object`