Example usage for org.springframework.integration.support MessageBuilder build

List of usage examples for org.springframework.integration.support MessageBuilder build

Introduction

In this page you can find the example usage for org.springframework.integration.support MessageBuilder build.

Prototype

@Override
    @SuppressWarnings("unchecked")
    public Message<T> build() 

Source Link

Usage

From source file:org.springframework.integration.aggregator.AggregatorTests.java

private static Message<?> createMessage(Object payload, Object correlationId, int sequenceSize,
        int sequenceNumber, MessageChannel replyChannel, String predefinedId) {
    MessageBuilder<Object> builder = MessageBuilder.withPayload(payload).setCorrelationId(correlationId)
            .setSequenceSize(sequenceSize).setSequenceNumber(sequenceNumber).setReplyChannel(replyChannel);
    if (predefinedId != null) {
        builder.setHeader(MessageHeaders.ID, predefinedId);
    }//from  w w w .  ja  v a2  s.c o  m
    return builder.build();
}

From source file:org.springframework.integration.gateway.GatewayMethodInboundMessageMapper.java

private Message<?> mapArgumentsToMessage(Object[] arguments) {
    Object messageOrPayload = null;
    boolean foundPayloadAnnotation = false;
    Map<String, Object> headers = new HashMap<String, Object>();
    EvaluationContext methodInvocationEvaluationContext = createMethodInvocationEvaluationContext(arguments);
    if (this.payloadExpression != null) {
        messageOrPayload = this.payloadExpression.getValue(methodInvocationEvaluationContext);
    }/*from  www .j  av  a 2  s  .c  om*/
    for (int i = 0; i < this.parameterList.size(); i++) {
        Object argumentValue = arguments[i];
        MethodParameter methodParameter = this.parameterList.get(i);
        Annotation annotation = this.findMappingAnnotation(methodParameter.getParameterAnnotations());
        if (annotation != null) {
            if (annotation.annotationType().equals(Payload.class)) {
                if (messageOrPayload != null) {
                    this.throwExceptionForMultipleMessageOrPayloadParameters(methodParameter);
                }
                String expression = ((Payload) annotation).value();
                if (!StringUtils.hasText(expression)) {
                    messageOrPayload = argumentValue;
                } else {
                    messageOrPayload = this.evaluatePayloadExpression(expression, argumentValue);
                }
                foundPayloadAnnotation = true;
            } else if (annotation.annotationType().equals(Header.class)) {
                Header headerAnnotation = (Header) annotation;
                String headerName = this.determineHeaderName(headerAnnotation, methodParameter);
                if (headerAnnotation.required() && argumentValue == null) {
                    throw new IllegalArgumentException(
                            "Received null argument value for required header: '" + headerName + "'");
                }
                headers.put(headerName, argumentValue);
            } else if (annotation.annotationType().equals(Headers.class)) {
                if (argumentValue != null) {
                    if (!(argumentValue instanceof Map)) {
                        throw new IllegalArgumentException(
                                "@Headers annotation is only valid for Map-typed parameters");
                    }
                    for (Object key : ((Map<?, ?>) argumentValue).keySet()) {
                        Assert.isInstanceOf(String.class, key,
                                "Invalid header name [" + key + "], name type must be String.");
                        Object value = ((Map<?, ?>) argumentValue).get(key);
                        headers.put((String) key, value);
                    }
                }
            }
        } else if (messageOrPayload == null) {
            messageOrPayload = argumentValue;
        } else if (Map.class.isAssignableFrom(methodParameter.getParameterType())) {
            if (messageOrPayload instanceof Map && !foundPayloadAnnotation) {
                if (payloadExpression == null) {
                    throw new MessagingException("Ambiguous method parameters; found more than one "
                            + "Map-typed parameter and neither one contains a @Payload annotation");
                }
            }
            this.copyHeaders((Map<?, ?>) argumentValue, headers);
        } else if (this.payloadExpression == null) {
            this.throwExceptionForMultipleMessageOrPayloadParameters(methodParameter);
        }
    }
    Assert.isTrue(messageOrPayload != null,
            "unable to determine a Message or payload parameter on method [" + method + "]");
    MessageBuilder<?> builder = (messageOrPayload instanceof Message)
            ? MessageBuilder.fromMessage((Message<?>) messageOrPayload)
            : MessageBuilder.withPayload(messageOrPayload);
    builder.copyHeadersIfAbsent(headers);
    if (!CollectionUtils.isEmpty(this.headerExpressions)) {
        Map<String, Object> evaluatedHeaders = new HashMap<String, Object>();
        for (Map.Entry<String, Expression> entry : this.headerExpressions.entrySet()) {
            Object value = entry.getValue().getValue(methodInvocationEvaluationContext);
            if (value != null) {
                evaluatedHeaders.put(entry.getKey(), value);
            }
        }
        builder.copyHeaders(evaluatedHeaders);
    }
    return builder.build();
}

From source file:org.springframework.integration.handler.MethodInvokingMessageProcessorAnnotationTests.java

private Message<?> getMessage() {
    MessageBuilder<Employee> builder = MessageBuilder.withPayload(employee);
    builder.setHeader("day", "monday");
    builder.setHeader("month", "September");
    Message<Employee> message = builder.build();
    return message;
}

From source file:org.springframework.integration.http.DefaultInboundRequestMapper.java

public Message<?> toMessage(HttpServletRequest request) throws Exception {
    try {/*  www  .  j av  a  2 s .  c o  m*/
        request = this.checkMultipart(request);
        Object payload = createPayloadFromRequest(request);
        MessageBuilder<?> builder = MessageBuilder.withPayload(payload);
        this.populateHeaders(request, builder);
        return builder.build();
    } finally {
        this.cleanupMultipart(request);
    }
}

From source file:org.springframework.integration.ip.tcp.connection.TcpMessageMapper.java

public Message<Object> toMessage(TcpConnection connection) throws Exception {
    Message<Object> message = null;
    Object payload = connection.getPayload();
    if (payload != null) {
        MessageBuilder<Object> messageBuilder = MessageBuilder.withPayload(payload);
        this.addStandardHeaders(connection, messageBuilder);
        this.addCustomHeaders(connection, messageBuilder);
        message = messageBuilder.build();
    } else {//from w w  w  . j  a  v  a 2  s . c o  m
        if (logger.isWarnEnabled()) {
            logger.warn("Null payload from connection " + connection.getConnectionId());
        }
    }
    return message;
}

From source file:org.springframework.integration.jdbc.JdbcMessageStoreTests.java

@Test
@Transactional/*from  w w w .  j a  v  a2s. c om*/
public void testSameMessageToMultipleGroups() throws Exception {

    final String group1Id = "group1";
    final String group2Id = "group2";

    final Message<String> message = MessageBuilder.withPayload("foo").build();

    final MessageBuilder<String> builder1 = MessageBuilder.fromMessage(message);
    final MessageBuilder<String> builder2 = MessageBuilder.fromMessage(message);

    builder1.setSequenceNumber(1);
    builder2.setSequenceNumber(2);

    final Message<?> message1 = builder1.build();
    final Message<?> message2 = builder2.build();

    messageStore.addMessageToGroup(group1Id, message1);
    messageStore.addMessageToGroup(group2Id, message2);

    final Message<?> messageFromGroup1 = messageStore.pollMessageFromGroup(group1Id);
    final Message<?> messageFromGroup2 = messageStore.pollMessageFromGroup(group2Id);

    assertNotNull(messageFromGroup1);
    assertNotNull(messageFromGroup2);

    LOG.info("messageFromGroup1: " + messageFromGroup1.getHeaders().getId() + "; Sequence #: "
            + messageFromGroup1.getHeaders().getSequenceNumber());
    LOG.info("messageFromGroup2: " + messageFromGroup2.getHeaders().getId() + "; Sequence #: "
            + messageFromGroup2.getHeaders().getSequenceNumber());

    assertEquals(Integer.valueOf(1), messageFromGroup1.getHeaders().get(MessageHeaders.SEQUENCE_NUMBER));
    assertEquals(Integer.valueOf(2), messageFromGroup2.getHeaders().get(MessageHeaders.SEQUENCE_NUMBER));

}

From source file:org.springframework.integration.jdbc.JdbcMessageStoreTests.java

@Test
@Transactional/* w w w  .j  ava2 s.c  o  m*/
public void testSameMessageAndGroupToMultipleRegions() throws Exception {

    final String groupId = "myGroup";
    final String region1 = "region1";
    final String region2 = "region2";

    final JdbcMessageStore messageStore1 = new JdbcMessageStore(dataSource);
    messageStore1.setRegion(region1);

    final JdbcMessageStore messageStore2 = new JdbcMessageStore(dataSource);
    messageStore1.setRegion(region2);

    final Message<String> message = MessageBuilder.withPayload("foo").build();

    final MessageBuilder<String> builder1 = MessageBuilder.fromMessage(message);
    final MessageBuilder<String> builder2 = MessageBuilder.fromMessage(message);

    builder1.setSequenceNumber(1);
    builder2.setSequenceNumber(2);

    final Message<?> message1 = builder1.build();
    final Message<?> message2 = builder2.build();

    messageStore1.addMessageToGroup(groupId, message1);
    messageStore2.addMessageToGroup(groupId, message2);

    final Message<?> messageFromRegion1 = messageStore1.pollMessageFromGroup(groupId);
    final Message<?> messageFromRegion2 = messageStore2.pollMessageFromGroup(groupId);

    assertNotNull(messageFromRegion1);
    assertNotNull(messageFromRegion2);

    LOG.info("messageFromRegion1: " + messageFromRegion1.getHeaders().getId() + "; Sequence #: "
            + messageFromRegion1.getHeaders().getSequenceNumber());
    LOG.info("messageFromRegion2: " + messageFromRegion2.getHeaders().getId() + "; Sequence #: "
            + messageFromRegion2.getHeaders().getSequenceNumber());

    assertEquals(Integer.valueOf(1), messageFromRegion1.getHeaders().get(MessageHeaders.SEQUENCE_NUMBER));
    assertEquals(Integer.valueOf(2), messageFromRegion2.getHeaders().get(MessageHeaders.SEQUENCE_NUMBER));

}

From source file:org.springframework.integration.jdbc.mysql.MySqlJdbcMessageStoreTests.java

@Test
@Transactional//from  w w  w. j av a2 s . com
@Rollback(false)
@Repeat(20)
public void testSameMessageToMultipleGroups() throws Exception {

    final String group1Id = "group1";
    final String group2Id = "group2";

    final Message<String> message = MessageBuilder.withPayload("foo").build();

    final MessageBuilder<String> builder1 = MessageBuilder.fromMessage(message);
    final MessageBuilder<String> builder2 = MessageBuilder.fromMessage(message);

    builder1.setSequenceNumber(1);
    builder2.setSequenceNumber(2);

    final Message<?> message1 = builder1.build();
    final Message<?> message2 = builder2.build();

    messageStore.addMessageToGroup(group1Id, message1);
    messageStore.addMessageToGroup(group2Id, message2);

    final Message<?> messageFromGroup1 = messageStore.pollMessageFromGroup(group1Id);
    final Message<?> messageFromGroup2 = messageStore.pollMessageFromGroup(group2Id);

    assertNotNull(messageFromGroup1);
    assertNotNull(messageFromGroup2);

    LOG.info("messageFromGroup1: " + messageFromGroup1.getHeaders().getId() + "; Sequence #: "
            + messageFromGroup1.getHeaders().getSequenceNumber());
    LOG.info("messageFromGroup2: " + messageFromGroup2.getHeaders().getId() + "; Sequence #: "
            + messageFromGroup2.getHeaders().getSequenceNumber());

    assertEquals(Integer.valueOf(1),
            (Integer) messageFromGroup1.getHeaders().get(MessageHeaders.SEQUENCE_NUMBER));
    assertEquals(Integer.valueOf(2),
            (Integer) messageFromGroup2.getHeaders().get(MessageHeaders.SEQUENCE_NUMBER));

}

From source file:org.springframework.integration.jdbc.mysql.MySqlJdbcMessageStoreTests.java

@Test
@Transactional/* ww w . j a  va  2  s .  c o m*/
@Rollback(false)
@Repeat(20)
public void testSameMessageAndGroupToMultipleRegions() throws Exception {

    final String groupId = "myGroup";
    final String region1 = "region1";
    final String region2 = "region2";

    final JdbcMessageStore messageStore1 = new JdbcMessageStore(dataSource);
    messageStore1.setRegion(region1);

    final JdbcMessageStore messageStore2 = new JdbcMessageStore(dataSource);
    messageStore1.setRegion(region2);

    final Message<String> message = MessageBuilder.withPayload("foo").build();

    final MessageBuilder<String> builder1 = MessageBuilder.fromMessage(message);
    final MessageBuilder<String> builder2 = MessageBuilder.fromMessage(message);

    builder1.setSequenceNumber(1);
    builder2.setSequenceNumber(2);

    final Message<?> message1 = builder1.build();
    final Message<?> message2 = builder2.build();

    messageStore1.addMessageToGroup(groupId, message1);
    messageStore2.addMessageToGroup(groupId, message2);

    final Message<?> messageFromRegion1 = messageStore1.pollMessageFromGroup(groupId);
    final Message<?> messageFromRegion2 = messageStore2.pollMessageFromGroup(groupId);

    assertNotNull(messageFromRegion1);
    assertNotNull(messageFromRegion2);

    LOG.info("messageFromRegion1: " + messageFromRegion1.getHeaders().getId() + "; Sequence #: "
            + messageFromRegion1.getHeaders().getSequenceNumber());
    LOG.info("messageFromRegion2: " + messageFromRegion2.getHeaders().getId() + "; Sequence #: "
            + messageFromRegion2.getHeaders().getSequenceNumber());

    assertEquals(Integer.valueOf(1),
            (Integer) messageFromRegion1.getHeaders().get(MessageHeaders.SEQUENCE_NUMBER));
    assertEquals(Integer.valueOf(2),
            (Integer) messageFromRegion2.getHeaders().get(MessageHeaders.SEQUENCE_NUMBER));

}

From source file:org.springframework.integration.jmx.NotificationListeningMessageProducer.java

/**
 * Notification handling method implementation. Creates a Message with the
 * JMX {@link Notification} as its payload, and if the handback object is
 * not null, it sets that as a Message header value. The Message is then
 * sent to this producer's output channel.
 *///from   www  .j  a va 2s . co m
public void handleNotification(Notification notification, Object handback) {
    if (logger.isInfoEnabled()) {
        logger.info("received notification: " + notification + ", and handback: " + handback);
    }
    MessageBuilder<?> builder = MessageBuilder.withPayload(notification);
    if (handback != null) {
        builder.setHeader(JmxHeaders.NOTIFICATION_HANDBACK, handback);
    }
    Message<?> message = builder.build();
    this.sendMessage(message);
}