Example usage for org.springframework.messaging MessageHeaders get

List of usage examples for org.springframework.messaging MessageHeaders get

Introduction

In this page you can find the example usage for org.springframework.messaging MessageHeaders get.

Prototype

@Nullable
    public Object get(Object key) 

Source Link

Usage

From source file:org.openwms.common.comm.transformer.tcp.HeaderAppendingTransformer.java

private int headerLength(MessageHeaders h) {
    return String.valueOf(h.get(CommHeader.SYNC_FIELD_NAME)).length()
            + String.valueOf(h.get(CommHeader.MSG_LENGTH_FIELD_NAME)).length()
            + String.valueOf(h.get(CommHeader.SENDER_FIELD_NAME)).length()
            + String.valueOf(h.get(CommHeader.RECEIVER_FIELD_NAME)).length()
            + String.valueOf(h.get(CommHeader.SEQUENCE_FIELD_NAME)).length();
}

From source file:org.springframework.cloud.stream.app.log.sink.LogSinkApplicationTests.java

private void testMessage(Message<byte[]> message, String expectedPayload) {
    assertNotNull(this.sink.input());
    assertEquals(LoggingHandler.Level.WARN, this.logSinkHandler.getLevel());
    Log logger = TestUtils.getPropertyValue(this.logSinkHandler, "messageLogger", Log.class);
    assertEquals("foo", TestUtils.getPropertyValue(logger, "logger.name"));
    logger = spy(logger);//  ww w  .  ja  v  a2s  .  c  om
    new DirectFieldAccessor(this.logSinkHandler).setPropertyValue("messageLogger", logger);
    this.sink.input().send(message);
    ArgumentCaptor<Object> captor = ArgumentCaptor.forClass(Object.class);
    verify(logger).warn(captor.capture());
    assertEquals(expectedPayload.toUpperCase(), captor.getValue());
    this.logSinkHandler.setLogExpressionString("#this");
    this.sink.input().send(message);
    verify(logger, times(2)).warn(captor.capture());

    Message captorMessage = (Message) captor.getAllValues().get(2);
    assertEquals("Unexpected payload value", expectedPayload, captorMessage.getPayload());

    MessageHeaders messageHeaders = captorMessage.getHeaders();
    assertEquals("Unexpected number of headers", 3, messageHeaders.size());

    String[] headers = { "contentType" };

    for (String header : headers) {
        assertTrue("Missing " + header + " header", messageHeaders.containsKey(header));
        assertEquals("Header " + header + " does not match", messageHeaders.get(header),
                message.getHeaders().get(header));
    }
}

From source file:org.springframework.cloud.stream.binder.pubsub.PubSubMessageHandler.java

protected String encodeHeaders(MessageHeaders headers) throws Exception {
    Map<String, Object> rawHeaders = new HashMap<>();
    for (String key : headers.keySet()) {
        rawHeaders.put(key, headers.get(key));
    }// ww  w .ja va2  s . co  m
    return mapper.writeValueAsString(rawHeaders);
}

From source file:org.springframework.integration.dsl.test.IntegrationFlowTests.java

@Test
public void testHeaderEnricher() {
    QueueChannel replyChannel = new QueueChannel();

    Message<String> message = MessageBuilder
            .withPayload("<root><elementOne>1</elementOne><elementTwo>2</elementTwo></root>")
            .setReplyChannel(replyChannel).build();

    try {//from   w ww.  j av  a 2  s .  co  m
        this.xpathHeaderEnricherInput.send(message);
        fail("Expected MessageDispatchingException");
    } catch (Exception e) {
        assertThat(e, instanceOf(MessageDeliveryException.class));
        assertThat(e.getCause(), instanceOf(MessageDispatchingException.class));
        assertThat(e.getMessage(), containsString("Dispatcher has no subscribers"));
    }

    this.controlBus.send("@xpathHeaderEnricher.start()");
    this.xpathHeaderEnricherInput.send(message);

    Message<?> result = replyChannel.receive(2000);
    assertNotNull(result);
    MessageHeaders headers = result.getHeaders();
    assertEquals("1", headers.get("one"));
    assertEquals("2", headers.get("two"));
    assertThat(headers.getReplyChannel(), instanceOf(String.class));
}

From source file:org.springframework.integration.dsl.test.xml.XmlTests.java

@Test
public void testHeaderEnricher() {
    QueueChannel replyChannel = new QueueChannel();

    Message<String> message = MessageBuilder
            .withPayload("<root><elementOne>1</elementOne><elementTwo>2</elementTwo></root>")
            .setReplyChannel(replyChannel).build();

    try {/*w  w  w .j  ava2s .co m*/
        this.xpathHeaderEnricherInput.send(message);
        fail("Expected MessageDispatchingException");
    } catch (Exception e) {
        assertThat(e, instanceOf(MessageDeliveryException.class));
        assertThat(e.getCause(), instanceOf(MessageDispatchingException.class));
        assertThat(e.getMessage(), containsString("Dispatcher has no subscribers"));
    }

    this.controlBusFlowInput.send(new GenericMessage<>("@xpathHeaderEnricher.start()"));
    this.xpathHeaderEnricherInput.send(message);

    Message<?> result = replyChannel.receive(2000);
    assertNotNull(result);
    MessageHeaders headers = result.getHeaders();
    assertEquals("1", headers.get("one"));
    assertEquals("2", headers.get("two"));
    assertThat(headers.getReplyChannel(), instanceOf(String.class));
    assertFalse(headers.containsKey("foo"));
}

From source file:org.springframework.integration.samples.rest.service.EmployeeSearchService.java

/**
 * The API <code>getEmployee()</code> looks up the mapped in coming message header's id param
 * and fills the return object with the appropriate employee details. The return
 * object is wrapped in Spring Integration Message with response headers filled in.
 * This example shows the usage of URL path variables and how the service act on
 * those variables.//from w w w  .  jav a2  s. com
 * @param inMessage
 * @return an instance of <code>{@link Message}</code> that wraps <code>{@link EmployeeList}</code>
 */
@Secured("ROLE_REST_HTTP_USER")
public Message<EmployeeList> getEmployee(Message<?> inMessage) {

    EmployeeList employeeList = new EmployeeList();
    Map<String, Object> responseHeaderMap = new HashMap<String, Object>();

    try {
        MessageHeaders headers = inMessage.getHeaders();
        String id = (String) headers.get("employeeId");
        boolean isFound;
        if (id.equals("1")) {
            employeeList.getEmployee().add(new Employee(1, "John", "Doe"));
            isFound = true;
        } else if (id.equals("2")) {
            employeeList.getEmployee().add(new Employee(2, "Jane", "Doe"));
            isFound = true;
        } else if (id.equals("0")) {
            employeeList.getEmployee().add(new Employee(1, "John", "Doe"));
            employeeList.getEmployee().add(new Employee(2, "Jane", "Doe"));
            isFound = true;
        } else {
            isFound = false;
        }
        if (isFound) {
            setReturnStatusAndMessage("0", "Success", employeeList, responseHeaderMap);
        } else {
            setReturnStatusAndMessage("2", "Employee Not Found", employeeList, responseHeaderMap);
        }

    } catch (Exception e) {
        setReturnStatusAndMessage("1", "System Error", employeeList, responseHeaderMap);
        logger.error("System error occured :" + e);
    }
    Message<EmployeeList> message = new GenericMessage<EmployeeList>(employeeList, responseHeaderMap);
    return message;
}

From source file:org.springframework.jms.support.converter.SimpleJmsHeaderMapper.java

@Override
public void fromHeaders(MessageHeaders headers, javax.jms.Message jmsMessage) {
    try {/* w  w  w.j  ava2s. c  om*/
        Object jmsCorrelationId = headers.get(JmsHeaders.CORRELATION_ID);
        if (jmsCorrelationId instanceof Number) {
            jmsCorrelationId = jmsCorrelationId.toString();
        }
        if (jmsCorrelationId instanceof String) {
            try {
                jmsMessage.setJMSCorrelationID((String) jmsCorrelationId);
            } catch (Exception e) {
                logger.info("failed to set JMSCorrelationID, skipping", e);
            }
        }
        Object jmsReplyTo = headers.get(JmsHeaders.REPLY_TO);
        if (jmsReplyTo instanceof Destination) {
            try {
                jmsMessage.setJMSReplyTo((Destination) jmsReplyTo);
            } catch (Exception e) {
                logger.info("failed to set JMSReplyTo, skipping", e);
            }
        }
        Object jmsType = headers.get(JmsHeaders.TYPE);
        if (jmsType instanceof String) {
            try {
                jmsMessage.setJMSType((String) jmsType);
            } catch (Exception e) {
                logger.info("failed to set JMSType, skipping", e);
            }
        }
        Set<String> headerNames = headers.keySet();
        for (String headerName : headerNames) {
            if (StringUtils.hasText(headerName) && !headerName.startsWith(JmsHeaders.PREFIX)) {
                Object value = headers.get(headerName);
                if (value != null && SUPPORTED_PROPERTY_TYPES.contains(value.getClass())) {
                    try {
                        String propertyName = this.fromHeaderName(headerName);
                        jmsMessage.setObjectProperty(propertyName, value);
                    } catch (Exception e) {
                        if (headerName.startsWith("JMSX")) {
                            if (logger.isTraceEnabled()) {
                                logger.trace(
                                        "skipping reserved header, it cannot be set by client: " + headerName);
                            }
                        } else if (logger.isWarnEnabled()) {
                            logger.warn("failed to map Message header '" + headerName + "' to JMS property", e);
                        }
                    }
                }
            }
        }
    } catch (Exception e) {
        if (logger.isWarnEnabled()) {
            logger.warn("error occurred while mapping from MessageHeaders to JMS properties", e);
        }
    }
}

From source file:org.springframework.jms.support.SimpleJmsHeaderMapper.java

@Override
public void fromHeaders(MessageHeaders headers, javax.jms.Message jmsMessage) {
    try {/*w  ww  .j  ava2s.  c om*/
        Object jmsCorrelationId = headers.get(JmsHeaders.CORRELATION_ID);
        if (jmsCorrelationId instanceof Number) {
            jmsCorrelationId = jmsCorrelationId.toString();
        }
        if (jmsCorrelationId instanceof String) {
            try {
                jmsMessage.setJMSCorrelationID((String) jmsCorrelationId);
            } catch (Exception e) {
                logger.info("failed to set JMSCorrelationID, skipping", e);
            }
        }
        Object jmsReplyTo = headers.get(JmsHeaders.REPLY_TO);
        if (jmsReplyTo instanceof Destination) {
            try {
                jmsMessage.setJMSReplyTo((Destination) jmsReplyTo);
            } catch (Exception e) {
                logger.info("failed to set JMSReplyTo, skipping", e);
            }
        }
        Object jmsType = headers.get(JmsHeaders.TYPE);
        if (jmsType instanceof String) {
            try {
                jmsMessage.setJMSType((String) jmsType);
            } catch (Exception e) {
                logger.info("failed to set JMSType, skipping", e);
            }
        }
        Set<String> headerNames = headers.keySet();
        for (String headerName : headerNames) {
            if (StringUtils.hasText(headerName) && !headerName.startsWith(JmsHeaders.PREFIX)) {
                Object value = headers.get(headerName);
                if (value != null && SUPPORTED_PROPERTY_TYPES.contains(value.getClass())) {
                    try {
                        String propertyName = this.fromHeaderName(headerName);
                        jmsMessage.setObjectProperty(propertyName, value);
                    } catch (Exception e) {
                        if (headerName.startsWith("JMSX")) {
                            if (logger.isTraceEnabled()) {
                                logger.trace(
                                        "skipping reserved header, it cannot be set by client: " + headerName);
                            }
                        } else if (logger.isWarnEnabled()) {
                            logger.warn("failed to map Message header '" + headerName + "' to JMS property", e);
                        }
                    }
                }
            }
        }
    } catch (Exception ex) {
        if (logger.isWarnEnabled()) {
            logger.warn("error occurred while mapping from MessageHeaders to JMS properties", ex);
        }
    }
}

From source file:org.springframework.kafka.support.converter.MessagingMessageConverter.java

@SuppressWarnings({ "unchecked", "rawtypes" })
@Override/*from  w  w  w .  ja  va  2  s .c  om*/
public ProducerRecord<?, ?> fromMessage(Message<?> message, String defaultTopic) {
    MessageHeaders headers = message.getHeaders();
    Object topicHeader = headers.get(KafkaHeaders.TOPIC);
    String topic = null;
    if (topicHeader instanceof byte[]) {
        topic = new String(((byte[]) topicHeader), StandardCharsets.UTF_8);
    } else if (topicHeader instanceof String) {
        topic = (String) topicHeader;
    } else if (topicHeader == null) {
        Assert.state(defaultTopic != null, "With no topic header, a defaultTopic is required");
    } else {
        throw new IllegalStateException(
                KafkaHeaders.TOPIC + " must be a String or byte[], not " + topicHeader.getClass());
    }
    Integer partition = headers.get(KafkaHeaders.PARTITION_ID, Integer.class);
    Object key = headers.get(KafkaHeaders.MESSAGE_KEY);
    Object payload = convertPayload(message);
    Long timestamp = headers.get(KafkaHeaders.TIMESTAMP, Long.class);
    Headers recordHeaders = initialRecordHeaders(message);
    if (this.headerMapper != null) {
        this.headerMapper.fromHeaders(headers, recordHeaders);
    }
    return new ProducerRecord(topic == null ? defaultTopic : topic, partition, timestamp, key, payload,
            recordHeaders);
}

From source file:org.springframework.messaging.core.AbstractMessageSendingTemplate.java

/**
 * Convert the given Object to serialized form, possibly using a
 * {@link MessageConverter}, wrap it as a message with the given
 * headers and apply the given post processor.
 * @param payload the Object to use as payload
 * @param headers headers for the message to send
 * @param postProcessor the post processor to apply to the message
 * @return the converted message/*from ww  w . j a  v  a  2  s  .  c  o  m*/
 */
protected Message<?> doConvert(Object payload, @Nullable Map<String, Object> headers,
        @Nullable MessagePostProcessor postProcessor) {

    MessageHeaders messageHeaders = null;
    Object conversionHint = (headers != null ? headers.get(CONVERSION_HINT_HEADER) : null);

    Map<String, Object> headersToUse = processHeadersToSend(headers);
    if (headersToUse != null) {
        if (headersToUse instanceof MessageHeaders) {
            messageHeaders = (MessageHeaders) headersToUse;
        } else {
            messageHeaders = new MessageHeaders(headersToUse);
        }
    }

    MessageConverter converter = getMessageConverter();
    Message<?> message = (converter instanceof SmartMessageConverter
            ? ((SmartMessageConverter) converter).toMessage(payload, messageHeaders, conversionHint)
            : converter.toMessage(payload, messageHeaders));
    if (message == null) {
        String payloadType = payload.getClass().getName();
        Object contentType = (messageHeaders != null ? messageHeaders.get(MessageHeaders.CONTENT_TYPE) : null);
        throw new MessageConversionException("Unable to convert payload with type='" + payloadType
                + "', contentType='" + contentType + "', converter=[" + getMessageConverter() + "]");
    }
    if (postProcessor != null) {
        message = postProcessor.postProcessMessage(message);
    }
    return message;
}