org.springframework.messaging.handler

## Class DestinationPatternsMessageCondition

- java.lang.Object
- - org.springframework.messaging.handler.AbstractMessageCondition<DestinationPatternsMessageCondition>
  - - org.springframework.messaging.handler.DestinationPatternsMessageCondition

All Implemented Interfaces:
  MessageCondition<DestinationPatternsMessageCondition>

    public class DestinationPatternsMessageCondition
    extends AbstractMessageCondition<DestinationPatternsMessageCondition>

`MessageCondition` to match the destination header of a Message against one or more patterns through a `RouteMatcher`.

Since:
  4.0
Author:
  Rossen Stoyanchev

### Field Summary

Fields
`static String` `LOOKUP_DESTINATION_HEADER` The name of the "lookup destination" header.

### Constructor Summary

Constructors
Constructor and Description
`DestinationPatternsMessageCondition(String... patterns)` Constructor with patterns only.
`DestinationPatternsMessageCondition(String[] patterns, org.springframework.util.PathMatcher matcher)` Constructor with patterns and a `PathMatcher` instance.
`DestinationPatternsMessageCondition(String[] patterns, org.springframework.util.RouteMatcher routeMatcher)` Constructor with patterns and a `RouteMatcher` instance.

### Method Summary

All Methods Instance Methods Concrete Methods
`DestinationPatternsMessageCondition` `combine(DestinationPatternsMessageCondition other)` Returns a new instance with URL patterns from the current instance ("this") and the "other" instance as follows: If there are patterns in both instances, combine the patterns in "this" with the patterns in "other" using `PathMatcher.combine(String, String)`.
`int` `compareTo(DestinationPatternsMessageCondition other, Message<?> message)` Compare the two conditions based on the destination patterns they contain.
`protected Collection<String>` `getContent()` Return the collection of objects the message condition is composed of (e.g.
`DestinationPatternsMessageCondition` `getMatchingCondition(Message<?> message)` Check if any of the patterns match the given Message destination and return an instance that is guaranteed to contain matching patterns, sorted via `PathMatcher.getPatternComparator(String)`.
`Set<String>` `getPatterns()`
`protected String` `getToStringInfix()` The notation to use when printing discrete items of content.

### Methods inherited from class org.springframework.messaging.handler.AbstractMessageCondition

`equals, hashCode, toString`

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

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

### Field Detail

#### LOOKUP_DESTINATION_HEADER

    public static final String LOOKUP_DESTINATION_HEADER

The name of the "lookup destination" header.

See Also:
  Constant Field Values

### Constructor Detail

#### DestinationPatternsMessageCondition

    public DestinationPatternsMessageCondition(String... patterns)

Constructor with patterns only. Creates and uses an instance of `AntPathMatcher` with default settings.

Non-empty patterns that don't start with "/" are prepended with "/".

Parameters:
  `patterns` - the URL patterns to match to, or if 0 then always match

#### DestinationPatternsMessageCondition

    public DestinationPatternsMessageCondition(String[] patterns,
                                               @Nullable
                                               org.springframework.util.PathMatcher matcher)

Constructor with patterns and a `PathMatcher` instance.

Parameters:
  `patterns` - the URL patterns to match to, or if 0 then always match
  `matcher` - the `PathMatcher` to use

#### DestinationPatternsMessageCondition

    public DestinationPatternsMessageCondition(String[] patterns,
                                               org.springframework.util.RouteMatcher routeMatcher)

Constructor with patterns and a `RouteMatcher` instance.

Parameters:
  `patterns` - the URL patterns to match to, or if 0 then always match
  `routeMatcher` - the `RouteMatcher` to use
Since:
  5.2

### Method Detail

#### getPatterns

    public Set<String> getPatterns()

#### getContent

    protected Collection<String> getContent()

Description copied from class: `AbstractMessageCondition`
Return the collection of objects the message condition is composed of (e.g. destination patterns), never `null`.

Specified by:
  `getContent` in class `AbstractMessageCondition<DestinationPatternsMessageCondition>`

#### getToStringInfix

    protected String getToStringInfix()

Description copied from class: `AbstractMessageCondition`
The notation to use when printing discrete items of content. For example " || " for URL patterns or " && " for param expressions.

Specified by:
  `getToStringInfix` in class `AbstractMessageCondition<DestinationPatternsMessageCondition>`

#### combine

    public DestinationPatternsMessageCondition combine(DestinationPatternsMessageCondition other)

Returns a new instance with URL patterns from the current instance ("this") and the "other" instance as follows:

- If there are patterns in both instances, combine the patterns in "this" with the patterns in "other" using `PathMatcher.combine(String, String)`.
- If only one instance has patterns, use them.
- If neither instance has patterns, use an empty String (i.e. "").

Parameters:
  `other` - the condition to combine with
Returns:
  the resulting message condition

#### getMatchingCondition

    @Nullable
    public DestinationPatternsMessageCondition getMatchingCondition(Message<?> message)

Check if any of the patterns match the given Message destination and return an instance that is guaranteed to contain matching patterns, sorted via `PathMatcher.getPatternComparator(String)`.

Parameters:
  `message` - the message to match to
Returns:
  the same instance if the condition contains no patterns; or a new condition with sorted matching patterns; or `null` either if a destination can not be extracted or there is no match

#### compareTo

    public int compareTo(DestinationPatternsMessageCondition other,
                         Message<?> message)

Compare the two conditions based on the destination patterns they contain. Patterns are compared one at a time, from top to bottom via `PathMatcher.getPatternComparator(String)`. If all compared patterns match equally, but one instance has more patterns, it is considered a closer match.

It is assumed that both instances have been obtained via `getMatchingCondition(Message)` to ensure they contain only patterns that match the request and are sorted with the best matches on top.