Example usage for org.springframework.integration IntegrationMessageHeaderAccessor IntegrationMessageHeaderAccessor

List of usage examples for org.springframework.integration IntegrationMessageHeaderAccessor IntegrationMessageHeaderAccessor

Introduction

In this page you can find the example usage for org.springframework.integration IntegrationMessageHeaderAccessor IntegrationMessageHeaderAccessor.

Prototype

public IntegrationMessageHeaderAccessor(@Nullable Message<?> message) 

Source Link

Usage

From source file:com.qpark.eip.core.spring.AbstractAggregator.java

/**
 * @param messages/*from   www. j  a  v  a  2s .co  m*/
 * @return
 */
public boolean canRelease(final Collection<Message<?>> messages) {
    boolean canRelease = false;
    this.logger.trace("-canRelease collection {}",
            messages != null ? messages.size() : " collection of messages is null");
    if (messages != null && !messages.isEmpty()) {
        Message<?> m = messages.toArray(new Message<?>[messages.size()])[0];
        Integer sequenceSize = new IntegrationMessageHeaderAccessor(m).getSequenceSize();
        this.logger.trace(" canRelease collection messages.size()={}, sequenceSize={}", messages.size(),
                sequenceSize);
        if (sequenceSize != null && messages.size() == sequenceSize) {
            canRelease = true;
        }
    }
    this.logger.trace("-canRelease collection canRelease={}", canRelease);
    return canRelease;
}

From source file:com.qpark.eip.core.spring.PayloadLogger.java

/**
 * {@link Message} to string.//from  w  ww .  j  a  v  a 2s  . co  m
 *
 * @param message
 *            the {@link Message}.
 * @return the {@link Message} as string.
 */
private String getMessage(final Message<?> message) {
    Object logMessage = this.expression.getValue(this.evaluationContext, message);
    if (JAXBElement.class.isInstance(logMessage)) {
        final JAXBElement<?> elem = (JAXBElement<?>) logMessage;
        try {
            if (Objects.nonNull(this.jaxb2Marshaller)) {
                final StringResult sw = new StringResult();
                this.jaxb2Marshaller.marshal(logMessage, sw);
                logMessage = sw.toString();
            } else {
                final Marshaller marshaller = this.getMarshaller();
                if (Objects.nonNull(marshaller)) {
                    final StringWriter sw = new StringWriter();
                    marshaller.marshal(logMessage, sw);
                    logMessage = sw.toString();
                }
            }
        } catch (final Exception e) {
            logMessage = elem.getValue();
        }
    } else if (logMessage instanceof Throwable) {
        final StringWriter stringWriter = new StringWriter();
        if (logMessage instanceof AggregateMessageDeliveryException) {
            stringWriter.append(((Throwable) logMessage).getMessage());
            for (final Exception exception : (List<? extends Exception>) ((AggregateMessageDeliveryException) logMessage)
                    .getAggregatedExceptions()) {
                exception.printStackTrace(new PrintWriter(stringWriter, true));
            }
        } else {
            ((Throwable) logMessage).printStackTrace(new PrintWriter(stringWriter, true));
        }
        logMessage = stringWriter.toString();
    }
    final StringBuffer sb = new StringBuffer(1024);
    sb.append(MessageHeaders.ID).append("=").append(message.getHeaders().getId());
    final Object correlationId = new IntegrationMessageHeaderAccessor(message).getCorrelationId();
    if (correlationId != null) {
        sb.append(", ");
        sb.append(IntegrationMessageHeaderAccessor.CORRELATION_ID).append("=").append(correlationId);
    }
    sb.append("\n");
    sb.append(String.valueOf(logMessage));
    return sb.toString();
}

From source file:org.springframework.integration.ftp.dsl.FtpTests.java

@Test
public void testFtpInboundStreamFlow() throws Exception {
    QueueChannel out = new QueueChannel();
    StandardIntegrationFlow flow = IntegrationFlows.from(
            Ftp.inboundStreamingAdapter(new FtpRemoteFileTemplate(sessionFactory()))
                    .remoteDirectory("ftpSource").regexFilter(".*\\.txt$"),
            e -> e.id("ftpInboundAdapter").poller(Pollers.fixedDelay(100))).channel(out).get();
    IntegrationFlowRegistration registration = this.flowContext.registration(flow).register();
    Message<?> message = out.receive(10_000);
    assertNotNull(message);//from  w w w  .jav  a  2  s  .c o  m
    assertThat(message.getPayload(), instanceOf(InputStream.class));
    assertThat(message.getHeaders().get(FileHeaders.REMOTE_FILE), isOneOf(" ftpSource1.txt", "ftpSource2.txt"));
    new IntegrationMessageHeaderAccessor(message).getCloseableResource().close();

    message = out.receive(10_000);
    assertNotNull(message);
    assertThat(message.getPayload(), instanceOf(InputStream.class));
    assertThat(message.getHeaders().get(FileHeaders.REMOTE_FILE), isOneOf(" ftpSource1.txt", "ftpSource2.txt"));
    new IntegrationMessageHeaderAccessor(message).getCloseableResource().close();

    registration.destroy();
}

From source file:org.springframework.integration.history.MessageHistory.java

@SuppressWarnings("unchecked")
public static <T> Message<T> write(Message<T> message, NamedComponent component,
        MessageBuilderFactory messageBuilderFactory) {
    Assert.notNull(message, "Message must not be null");
    Assert.notNull(component, "Component must not be null");
    Properties metadata = extractMetadata(component);
    if (!metadata.isEmpty()) {
        MessageHistory previousHistory = message.getHeaders().get(HEADER_NAME, MessageHistory.class);
        List<Properties> components = (previousHistory != null) ? new ArrayList<Properties>(previousHistory)
                : new ArrayList<Properties>();
        components.add(metadata);//ww  w  .ja  va2s .  co m
        MessageHistory history = new MessageHistory(components);

        if (message instanceof MutableMessage) {
            message.getHeaders().put(HEADER_NAME, history);
        } else if (message instanceof ErrorMessage) {
            IntegrationMessageHeaderAccessor headerAccessor = new IntegrationMessageHeaderAccessor(message);
            headerAccessor.setHeader(HEADER_NAME, history);
            Throwable payload = ((ErrorMessage) message).getPayload();
            ErrorMessage errorMessage = new ErrorMessage(payload, headerAccessor.toMessageHeaders());
            message = (Message<T>) errorMessage;
        } else if (message instanceof AdviceMessage) {
            IntegrationMessageHeaderAccessor headerAccessor = new IntegrationMessageHeaderAccessor(message);
            headerAccessor.setHeader(HEADER_NAME, history);
            message = new AdviceMessage<T>(message.getPayload(), headerAccessor.toMessageHeaders(),
                    ((AdviceMessage<?>) message).getInputMessage());
        } else {
            if (!(message instanceof GenericMessage)
                    && (messageBuilderFactory instanceof DefaultMessageBuilderFactory
                            || messageBuilderFactory instanceof MutableMessageBuilderFactory)) {
                if (logger.isWarnEnabled()) {
                    logger.warn("MessageHistory rebuilds the message and produces the result of the ["
                            + messageBuilderFactory + "], not an instance of the provided type ["
                            + message.getClass() + "]. Consider to supply a custom MessageBuilderFactory "
                            + "to retain custom messages during MessageHistory tracking.");
                }
            }
            message = messageBuilderFactory.fromMessage(message).setHeader(HEADER_NAME, history).build();
        }
    }
    return message;
}

From source file:org.springframework.integration.jms.JmsOutboundGateway.java

private Object sendAndReceiveWithContainer(Message<?> requestMessage) throws JMSException {
    Connection connection = this.createConnection(); // NOSONAR - closed in ConnectionFactoryUtils.
    Session session = null;//w  w  w  . j av a  2s.co m
    Destination replyTo = this.replyContainer.getReplyDestination();
    try {
        session = this.createSession(connection);

        // convert to JMS Message
        Object objectToSend = requestMessage;
        if (this.extractRequestPayload) {
            objectToSend = requestMessage.getPayload();
        }
        javax.jms.Message jmsRequest = this.messageConverter.toMessage(objectToSend, session);

        // map headers
        this.headerMapper.fromHeaders(requestMessage.getHeaders(), jmsRequest);

        jmsRequest.setJMSReplyTo(replyTo);
        connection.start();
        if (logger.isDebugEnabled()) {
            logger.debug("ReplyTo: " + replyTo);
        }

        Integer priority = new IntegrationMessageHeaderAccessor(requestMessage).getPriority();
        if (priority == null) {
            priority = this.priority;
        }
        Destination requestDestination = this.determineRequestDestination(requestMessage, session);

        Object reply = null;
        if (this.correlationKey == null) {
            /*
             * Remove any existing correlation id that was mapped from the inbound message
             * (it will be restored in the reply by normal ARPMH header processing).
             */
            jmsRequest.setJMSCorrelationID(null);
            reply = doSendAndReceiveAsyncDefaultCorrelation(requestDestination, jmsRequest, session, priority);
        } else {
            reply = doSendAndReceiveAsync(requestDestination, jmsRequest, session, priority);
        }
        /*
         * Remove the gateway's internal correlation Id to avoid conflicts with an upstream
         * gateway.
         */
        if (reply instanceof javax.jms.Message) {
            ((javax.jms.Message) reply).setJMSCorrelationID(null);
        }
        return reply;
    } finally {
        JmsUtils.closeSession(session);
        ConnectionFactoryUtils.releaseConnection(connection, this.connectionFactory, true);
    }
}

From source file:org.springframework.integration.jms.JmsOutboundGateway.java

private javax.jms.Message sendAndReceiveWithoutContainer(Message<?> requestMessage) throws JMSException {
    Connection connection = this.createConnection(); // NOSONAR - closed in ConnectionFactoryUtils.
    Session session = null;/*from w  w  w. j  a v a  2  s .  c  o  m*/
    Destination replyTo = null;
    try {
        session = this.createSession(connection);

        // convert to JMS Message
        Object objectToSend = requestMessage;
        if (this.extractRequestPayload) {
            objectToSend = requestMessage.getPayload();
        }
        javax.jms.Message jmsRequest = this.messageConverter.toMessage(objectToSend, session);

        // map headers
        this.headerMapper.fromHeaders(requestMessage.getHeaders(), jmsRequest);

        replyTo = this.determineReplyDestination(requestMessage, session);
        jmsRequest.setJMSReplyTo(replyTo);
        connection.start();
        if (logger.isDebugEnabled()) {
            logger.debug("ReplyTo: " + replyTo);
        }

        Integer priority = new IntegrationMessageHeaderAccessor(requestMessage).getPriority();
        if (priority == null) {
            priority = this.priority;
        }
        javax.jms.Message replyMessage = null;
        Destination requestDestination = this.determineRequestDestination(requestMessage, session);
        if (this.correlationKey != null) {
            replyMessage = doSendAndReceiveWithGeneratedCorrelationId(requestDestination, jmsRequest, replyTo,
                    session, priority);
        } else if (replyTo instanceof TemporaryQueue || replyTo instanceof TemporaryTopic) {
            replyMessage = doSendAndReceiveWithTemporaryReplyToDestination(requestDestination, jmsRequest,
                    replyTo, session, priority);
        } else {
            replyMessage = doSendAndReceiveWithMessageIdCorrelation(requestDestination, jmsRequest, replyTo,
                    session, priority);
        }
        return replyMessage;
    } finally {
        JmsUtils.closeSession(session);
        this.deleteDestinationIfTemporary(replyTo);
        ConnectionFactoryUtils.releaseConnection(connection, this.connectionFactory, true);
    }
}

From source file:org.springframework.integration.support.MessageBuilder.java

/**
 * Private constructor to be invoked from the static factory methods only.
 *///from   ww w  .j  a v a  2 s  . c  o  m
private MessageBuilder(T payload, Message<T> originalMessage) {
    Assert.notNull(payload, "payload must not be null");
    this.payload = payload;
    this.originalMessage = originalMessage;
    this.headerAccessor = new IntegrationMessageHeaderAccessor(originalMessage);
    if (originalMessage != null) {
        this.modified = (!this.payload.equals(originalMessage.getPayload()));
    }
}