Example usage for org.springframework.messaging.simp SimpMessageHeaderAccessor getMessageType

List of usage examples for org.springframework.messaging.simp SimpMessageHeaderAccessor getMessageType

Introduction

In this page you can find the example usage for org.springframework.messaging.simp SimpMessageHeaderAccessor getMessageType.

Prototype

@Nullable
    public static SimpMessageType getMessageType(Map<String, Object> headers) 

Source Link

Usage

From source file:org.springframework.messaging.simp.broker.AbstractSubscriptionRegistry.java

@Override
public final void registerSubscription(Message<?> message) {
    MessageHeaders headers = message.getHeaders();

    SimpMessageType messageType = SimpMessageHeaderAccessor.getMessageType(headers);
    if (!SimpMessageType.SUBSCRIBE.equals(messageType)) {
        throw new IllegalArgumentException("Expected SUBSCRIBE: " + message);
    }/*from w  w  w.  j  a va2s . c  o m*/

    String sessionId = SimpMessageHeaderAccessor.getSessionId(headers);
    if (sessionId == null) {
        if (logger.isErrorEnabled()) {
            logger.error("No sessionId in  " + message);
        }
        return;
    }

    String subscriptionId = SimpMessageHeaderAccessor.getSubscriptionId(headers);
    if (subscriptionId == null) {
        if (logger.isErrorEnabled()) {
            logger.error("No subscriptionId in " + message);
        }
        return;
    }

    String destination = SimpMessageHeaderAccessor.getDestination(headers);
    if (destination == null) {
        if (logger.isErrorEnabled()) {
            logger.error("No destination in " + message);
        }
        return;
    }

    addSubscriptionInternal(sessionId, subscriptionId, destination, message);
}

From source file:org.springframework.messaging.simp.broker.AbstractSubscriptionRegistry.java

@Override
public final void unregisterSubscription(Message<?> message) {
    MessageHeaders headers = message.getHeaders();

    SimpMessageType messageType = SimpMessageHeaderAccessor.getMessageType(headers);
    if (!SimpMessageType.UNSUBSCRIBE.equals(messageType)) {
        throw new IllegalArgumentException("Expected UNSUBSCRIBE: " + message);
    }/*  ww w .j a  v a2  s  . c o  m*/

    String sessionId = SimpMessageHeaderAccessor.getSessionId(headers);
    if (sessionId == null) {
        if (logger.isErrorEnabled()) {
            logger.error("No sessionId in " + message);
        }
        return;
    }

    String subscriptionId = SimpMessageHeaderAccessor.getSubscriptionId(headers);
    if (subscriptionId == null) {
        if (logger.isErrorEnabled()) {
            logger.error("No subscriptionId " + message);
        }
        return;
    }

    removeSubscriptionInternal(sessionId, subscriptionId, message);
}

From source file:org.springframework.messaging.simp.broker.AbstractSubscriptionRegistry.java

@Override
public final MultiValueMap<String, String> findSubscriptions(Message<?> message) {
    MessageHeaders headers = message.getHeaders();

    SimpMessageType type = SimpMessageHeaderAccessor.getMessageType(headers);
    if (!SimpMessageType.MESSAGE.equals(type)) {
        throw new IllegalArgumentException("Unexpected message type: " + type);
    }/* w w  w.j  a va 2 s .  c om*/

    String destination = SimpMessageHeaderAccessor.getDestination(headers);
    if (destination == null) {
        if (logger.isErrorEnabled()) {
            logger.error("No destination in " + message);
        }
        return EMPTY_MAP;
    }

    return findSubscriptionsInternal(destination, message);
}

From source file:org.springframework.messaging.simp.stomp.StompEncoder.java

/**
 * Encodes the given payload and headers into a {@code byte[]}.
 * @param headers the headers/*from w ww.  java 2s .co m*/
 * @param payload the payload
 * @return the encoded message
 */
public byte[] encode(Map<String, Object> headers, byte[] payload) {
    Assert.notNull(headers, "'headers' is required");
    Assert.notNull(payload, "'payload' is required");

    try {
        ByteArrayOutputStream baos = new ByteArrayOutputStream(128 + payload.length);
        DataOutputStream output = new DataOutputStream(baos);

        if (SimpMessageType.HEARTBEAT.equals(SimpMessageHeaderAccessor.getMessageType(headers))) {
            logger.trace("Encoding heartbeat");
            output.write(StompDecoder.HEARTBEAT_PAYLOAD);
        }

        else {
            StompCommand command = StompHeaderAccessor.getCommand(headers);
            if (command == null) {
                throw new IllegalStateException("Missing STOMP command: " + headers);
            }

            output.write(command.toString().getBytes(StandardCharsets.UTF_8));
            output.write(LF);
            writeHeaders(command, headers, payload, output);
            output.write(LF);
            writeBody(payload, output);
            output.write((byte) 0);
        }

        return baos.toByteArray();
    } catch (IOException ex) {
        throw new StompConversionException("Failed to encode STOMP frame, headers=" + headers, ex);
    }
}

From source file:org.springframework.messaging.simp.user.DefaultUserDestinationResolver.java

@Nullable
private ParseResult parse(Message<?> message) {
    MessageHeaders headers = message.getHeaders();
    String sourceDestination = SimpMessageHeaderAccessor.getDestination(headers);
    if (sourceDestination == null || !checkDestination(sourceDestination, this.prefix)) {
        return null;
    }//w  w  w  . j  a  v a2 s. c  om
    SimpMessageType messageType = SimpMessageHeaderAccessor.getMessageType(headers);
    if (messageType != null) {
        switch (messageType) {
        case SUBSCRIBE:
        case UNSUBSCRIBE:
            return parseSubscriptionMessage(message, sourceDestination);
        case MESSAGE:
            return parseMessage(headers, sourceDestination);
        }
    }
    return null;
}

From source file:org.springframework.web.socket.messaging.StompSubProtocolHandler.java

private StompHeaderAccessor getStompHeaderAccessor(Message<?> message) {
    MessageHeaderAccessor accessor = MessageHeaderAccessor.getAccessor(message, MessageHeaderAccessor.class);
    if (accessor instanceof StompHeaderAccessor) {
        return (StompHeaderAccessor) accessor;
    } else {//from  w ww . j  a  v a  2  s.  c o m
        StompHeaderAccessor stompAccessor = StompHeaderAccessor.wrap(message);
        SimpMessageType messageType = SimpMessageHeaderAccessor.getMessageType(message.getHeaders());
        if (SimpMessageType.CONNECT_ACK.equals(messageType)) {
            stompAccessor = convertConnectAcktoStompConnected(stompAccessor);
        } else if (SimpMessageType.DISCONNECT_ACK.equals(messageType)) {
            String receipt = getDisconnectReceipt(stompAccessor);
            if (receipt != null) {
                stompAccessor = StompHeaderAccessor.create(StompCommand.RECEIPT);
                stompAccessor.setReceiptId(receipt);
            } else {
                stompAccessor = StompHeaderAccessor.create(StompCommand.ERROR);
                stompAccessor.setMessage("Session closed.");
            }
        } else if (SimpMessageType.HEARTBEAT.equals(messageType)) {
            stompAccessor = StompHeaderAccessor.createForHeartbeat();
        } else if (stompAccessor.getCommand() == null || StompCommand.SEND.equals(stompAccessor.getCommand())) {
            stompAccessor.updateStompCommandAsServerMessage();
        }
        return stompAccessor;
    }
}