@Override public SimpMessageMappingInfo combine(SimpMessageMappingInfo other) { SimpMessageTypeMessageCondition typeCond = this.getMessageTypeMessageCondition().combine(other.getMessageTypeMessageCondition()); DestinationPatternsMessageCondition destCond = this.destinationConditions.combine(other.getDestinationConditions()); return new SimpMessageMappingInfo(typeCond, destCond); }
@Override protected Comparator<SimpMessageMappingInfo> getMappingComparator(final Message<?> message) { return (info1, info2) -> info1.compareTo(info2, message); }
@Override @Nullable protected SimpMessageMappingInfo getMatchingMapping(SimpMessageMappingInfo mapping, Message<?> message) { return mapping.getMatchingCondition(message); }
@Override @Nullable public SimpMessageMappingInfo getMatchingCondition(Message<?> message) { SimpMessageTypeMessageCondition typeCond = this.messageTypeMessageCondition.getMatchingCondition(message); if (typeCond == null) { return null; } DestinationPatternsMessageCondition destCond = this.destinationConditions.getMatchingCondition(message); if (destCond == null) { return null; } return new SimpMessageMappingInfo(typeCond, destCond); }
@Override protected Set<String> getDirectLookupDestinations(SimpMessageMappingInfo mapping) { Set<String> result = new LinkedHashSet<>(); for (String pattern : mapping.getDestinationConditions().getPatterns()) { if (!this.pathMatcher.isPattern(pattern)) { result.add(pattern); } } return result; }
SimpMessageMappingInfo result = createMessageMappingCondition(messageAnn.value()); if (typeAnn != null) { result = createMessageMappingCondition(typeAnn.value()).combine(result); SimpMessageMappingInfo result = createSubscribeMappingCondition(subscribeAnn.value()); if (typeAnn != null) { result = createMessageMappingCondition(typeAnn.value()).combine(result);
private SimpMessageMappingInfo createMessageMappingCondition(String[] destinations) { String[] resolvedDestinations = resolveEmbeddedValuesInDestinations(destinations); return new SimpMessageMappingInfo(SimpMessageTypeMessageCondition.MESSAGE, new DestinationPatternsMessageCondition(resolvedDestinations, this.pathMatcher)); }
@Override protected void handleMatch(SimpMessageMappingInfo mapping, HandlerMethod handlerMethod, String lookupDestination, Message<?> message) { Set<String> patterns = mapping.getDestinationConditions().getPatterns(); if (!CollectionUtils.isEmpty(patterns)) { String pattern = patterns.iterator().next(); Map<String, String> vars = getPathMatcher().extractUriTemplateVariables(pattern, lookupDestination); if (!CollectionUtils.isEmpty(vars)) { MessageHeaderAccessor mha = MessageHeaderAccessor.getAccessor(message, MessageHeaderAccessor.class); Assert.state(mha != null && mha.isMutable(), "Mutable MessageHeaderAccessor required"); mha.setHeader(DestinationVariableMethodArgumentResolver.DESTINATION_TEMPLATE_VARIABLES_HEADER, vars); } } try { SimpAttributesContextHolder.setAttributesFromMessage(message); super.handleMatch(mapping, handlerMethod, lookupDestination, message); } finally { SimpAttributesContextHolder.resetAttributes(); } }
SimpMessageMappingInfo result = createMessageMappingCondition(messageAnn.value()); if (typeAnn != null) { result = createMessageMappingCondition(typeAnn.value()).combine(result); SimpMessageMappingInfo result = createSubscribeMappingCondition(subscribeAnn.value()); if (typeAnn != null) { result = createMessageMappingCondition(typeAnn.value()).combine(result);
@Override public SimpMessageMappingInfo combine(SimpMessageMappingInfo other) { SimpMessageTypeMessageCondition typeCond = this.getMessageTypeMessageCondition().combine(other.getMessageTypeMessageCondition()); DestinationPatternsMessageCondition destCond = this.destinationConditions.combine(other.getDestinationConditions()); return new SimpMessageMappingInfo(typeCond, destCond); }
private SimpMessageMappingInfo createSubscribeMappingCondition(String[] destinations) { String[] resolvedDestinations = resolveEmbeddedValuesInDestinations(destinations); return new SimpMessageMappingInfo(SimpMessageTypeMessageCondition.SUBSCRIBE, new DestinationPatternsMessageCondition(resolvedDestinations, this.pathMatcher)); }
@Override protected Set<String> getDirectLookupDestinations(SimpMessageMappingInfo mapping) { Set<String> result = new LinkedHashSet<>(); for (String pattern : mapping.getDestinationConditions().getPatterns()) { if (!this.pathMatcher.isPattern(pattern)) { result.add(pattern); } } return result; }
@Override @Nullable protected SimpMessageMappingInfo getMatchingMapping(SimpMessageMappingInfo mapping, Message<?> message) { return mapping.getMatchingCondition(message); }
@Override protected Comparator<SimpMessageMappingInfo> getMappingComparator(final Message<?> message) { return (info1, info2) -> info1.compareTo(info2, message); }
SimpMessageMappingInfo result = createMessageMappingCondition(messageAnn.value()); if (typeAnn != null) { result = createMessageMappingCondition(typeAnn.value()).combine(result); SimpMessageMappingInfo result = createSubscribeMappingCondition(subscribeAnn.value()); if (typeAnn != null) { result = createMessageMappingCondition(typeAnn.value()).combine(result);
@Override public SimpMessageMappingInfo combine(SimpMessageMappingInfo other) { SimpMessageTypeMessageCondition typeCond = this.getMessageTypeMessageCondition().combine(other.getMessageTypeMessageCondition()); DestinationPatternsMessageCondition destCond = this.destinationConditions.combine(other.getDestinationConditions()); return new SimpMessageMappingInfo(typeCond, destCond); }
@Override @Nullable public SimpMessageMappingInfo getMatchingCondition(Message<?> message) { SimpMessageTypeMessageCondition typeCond = this.messageTypeMessageCondition.getMatchingCondition(message); if (typeCond == null) { return null; } DestinationPatternsMessageCondition destCond = this.destinationConditions.getMatchingCondition(message); if (destCond == null) { return null; } return new SimpMessageMappingInfo(typeCond, destCond); }
@Override protected void handleMatch(SimpMessageMappingInfo mapping, HandlerMethod handlerMethod, String lookupDestination, Message<?> message) { Set<String> patterns = mapping.getDestinationConditions().getPatterns(); if (!CollectionUtils.isEmpty(patterns)) { String pattern = patterns.iterator().next(); Map<String, String> vars = getPathMatcher().extractUriTemplateVariables(pattern, lookupDestination); if (!CollectionUtils.isEmpty(vars)) { MessageHeaderAccessor mha = MessageHeaderAccessor.getAccessor(message, MessageHeaderAccessor.class); Assert.state(mha != null && mha.isMutable(), "Mutable MessageHeaderAccessor required"); mha.setHeader(DestinationVariableMethodArgumentResolver.DESTINATION_TEMPLATE_VARIABLES_HEADER, vars); } } try { SimpAttributesContextHolder.setAttributesFromMessage(message); super.handleMatch(mapping, handlerMethod, lookupDestination, message); } finally { SimpAttributesContextHolder.resetAttributes(); } }
@Override @Nullable protected SimpMessageMappingInfo getMatchingMapping(SimpMessageMappingInfo mapping, Message<?> message) { return mapping.getMatchingCondition(message); }
@Override protected Comparator<SimpMessageMappingInfo> getMappingComparator(final Message<?> message) { return (info1, info2) -> info1.compareTo(info2, message); }