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>
AMessageConditionfor matching the destination of a Message against one or more destination patterns using aPathMatcher.- Since:
- 4.0
- Author:
- Rossen Stoyanchev
Field Summary
Fields Modifier and Type Field Description static StringLOOKUP_DESTINATION_HEADER
Constructor Summary
Constructors Constructor Description DestinationPatternsMessageCondition(String... patterns)Creates a new instance with the given destination patterns.DestinationPatternsMessageCondition(String[] patterns, PathMatcher pathMatcher)Alternative constructor accepting a custom PathMatcher.
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description DestinationPatternsMessageConditioncombine(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" usingPathMatcher.combine(String, String).intcompareTo(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.DestinationPatternsMessageConditiongetMatchingCondition(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 viaPathMatcher.getPatternComparator(String).Set<String>getPatterns()protected StringgetToStringInfix()The notation to use when printing discrete items of content.Methods inherited from class org.springframework.messaging.handler.AbstractMessageCondition
equals, hashCode, toString
Field Detail
LOOKUP_DESTINATION_HEADER
public static final String LOOKUP_DESTINATION_HEADER
- See Also:
- Constant Field Values
Constructor Detail
DestinationPatternsMessageCondition
public DestinationPatternsMessageCondition(String... patterns)
Creates a new instance with the given destination patterns. Each pattern that is not empty and does not start with "/" is prepended with "/".- Parameters:
patterns- 0 or more URL patterns; if 0 the condition will match to every request.
DestinationPatternsMessageCondition
public DestinationPatternsMessageCondition(String[] patterns, PathMatcher pathMatcher)
Alternative constructor accepting a custom PathMatcher.- Parameters:
patterns- the URL patterns to use; if 0, the condition will match to every request.pathMatcher- the PathMatcher to use
Method Detail
getPatterns
public Set<String> getPatterns()
getContent
protected Collection<String> getContent()
Description copied from class:AbstractMessageConditionReturn the collection of objects the message condition is composed of (e.g. destination patterns), nevernull.- Specified by:
getContentin classAbstractMessageCondition<DestinationPatternsMessageCondition>
getToStringInfix
protected String getToStringInfix()
Description copied from class:AbstractMessageConditionThe notation to use when printing discrete items of content. For example " || " for URL patterns or " && " for param expressions.- Specified by:
getToStringInfixin classAbstractMessageCondition<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
- If there are patterns in both instances, combine the patterns in "this" with the patterns in "other" using
getMatchingCondition
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 viaPathMatcher.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
nulleither 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 viaPathMatcher.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.