/** * Extract the SiMP session attributes from the given message, wrap them in * a {@link SimpAttributes} instance and bind it to the current thread. * @param message the message to extract session attributes from */ public static void setAttributesFromMessage(Message<?> message) { setAttributes(SimpAttributes.fromMessage(message)); }
@Override public void registerDestructionCallback(String name, Runnable callback) { SimpAttributesContextHolder.currentAttributes().registerDestructionCallback(name, callback); }
@Override public String getConversationId() { return SimpAttributesContextHolder.currentAttributes().getSessionId(); }
private Message<?> createWith(SimpMessageType type, String user, String sessionId, String destination) { SimpMessageHeaderAccessor headers = SimpMessageHeaderAccessor.create(type); if (destination != null) { headers.setDestination(destination); } if (user != null) { headers.setUser(new TestPrincipal(user)); } if (sessionId != null) { headers.setSessionId(sessionId); } return MessageBuilder.withPayload(new byte[0]).setHeaders(headers).build(); }
@Override @Nullable public SimpMessageTypeMessageCondition getMatchingCondition(Message<?> message) { SimpMessageType actual = SimpMessageHeaderAccessor.getMessageType(message.getHeaders()); return (actual != null && actual.equals(this.messageType) ? this : null); }
public void setMessageTypeIfNotSet(SimpMessageType messageType) { if (getMessageType() == null) { setHeader(MESSAGE_TYPE_HEADER, messageType); } }
@Before public void setUp() { this.scope = new SimpSessionScope(); this.objectFactory = Mockito.mock(ObjectFactory.class); this.simpAttributes = new SimpAttributes("session1", new ConcurrentHashMap<>()); SimpAttributesContextHolder.setAttributes(this.simpAttributes); }
@Override public void convertAndSendToUser(String user, String destination, Object payload) throws MessagingException { convertAndSendToUser(user, destination, payload, (MessagePostProcessor) null); }
@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 MessageHeaderAccessor createAccessor(Message<?> message) { return wrap(message); }
@Test public void getMatchingCondition() { Message<?> message = message(SimpMessageType.MESSAGE); SimpMessageTypeMessageCondition condition = condition(SimpMessageType.MESSAGE); SimpMessageTypeMessageCondition actual = condition.getMatchingCondition(message); assertNotNull(actual); assertEquals(SimpMessageType.MESSAGE, actual.getMessageType()); }
@Test public void combine() { SimpMessageType messageType = SimpMessageType.MESSAGE; SimpMessageType subscribeType = SimpMessageType.SUBSCRIBE; SimpMessageType actual = condition(messageType).combine(condition(subscribeType)).getMessageType(); assertEquals(subscribeType, actual); actual = condition(messageType).combine(condition(messageType)).getMessageType(); assertEquals(messageType, actual); actual = condition(subscribeType).combine(condition(subscribeType)).getMessageType(); assertEquals(subscribeType, actual); }
/** * Create an instance with * {@link org.springframework.messaging.simp.SimpMessageType} {@code MESSAGE}. */ public static SimpMessageHeaderAccessor create() { return new SimpMessageHeaderAccessor(SimpMessageType.MESSAGE, null); }
@Override protected Log getReturnValueHandlerLogger() { return SimpLogging.forLog(HandlerMethodReturnValueHandlerComposite.defaultLogger); }
@Override protected Comparator<SimpMessageMappingInfo> getMappingComparator(final Message<?> message) { return (info1, info2) -> info1.compareTo(info2, message); }
private SimpMessageTypeMessageCondition condition(SimpMessageType messageType) { return new SimpMessageTypeMessageCondition(messageType); }
/** * Create an instance with the given * {@link org.springframework.messaging.simp.SimpMessageType}. */ public static SimpMessageHeaderAccessor create(SimpMessageType messageType) { return new SimpMessageHeaderAccessor(messageType, null); }
@Override protected Log getHandlerMethodLogger() { return SimpLogging.forLog(HandlerMethod.defaultLogger); }
/** * Create an instance from the payload and headers of the given Message. */ public static SimpMessageHeaderAccessor wrap(Message<?> message) { return new SimpMessageHeaderAccessor(message); }