List of usage examples for org.springframework.integration IntegrationMessageHeaderAccessor IntegrationMessageHeaderAccessor
public IntegrationMessageHeaderAccessor(@Nullable Message<?> message)
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())); } }