From 01e3ae539b57b8c4d0271174462158cfdf77ad12 Mon Sep 17 00:00:00 2001 From: Mark Fisher Date: Thu, 2 Sep 2010 20:40:20 +0000 Subject: [PATCH] INT-1410 SoucePollingChannelAdapter retrieves the componentType from its underlying MessageSource if that MessageSource is also a NamedComponent. --- .../endpoint/SourcePollingChannelAdapter.java | 7 +++++++ .../jms/JmsDestinationPollingSource.java | 4 +--- .../jms/config/JmsMessageHistoryTests.java | 19 +++++++------------ 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/spring-integration-core/src/main/java/org/springframework/integration/endpoint/SourcePollingChannelAdapter.java b/spring-integration-core/src/main/java/org/springframework/integration/endpoint/SourcePollingChannelAdapter.java index a496eb7713..058adbdee0 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/endpoint/SourcePollingChannelAdapter.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/endpoint/SourcePollingChannelAdapter.java @@ -18,6 +18,7 @@ package org.springframework.integration.endpoint; import org.springframework.integration.Message; import org.springframework.integration.MessageChannel; +import org.springframework.integration.context.NamedComponent; import org.springframework.integration.core.MessageSource; import org.springframework.integration.core.MessagingTemplate; import org.springframework.integration.history.MessageHistory; @@ -70,6 +71,12 @@ public class SourcePollingChannelAdapter extends AbstractPollingEndpoint impleme this.shouldTrack = shouldTrack; } + @Override + public String getComponentType() { + return (this.source instanceof NamedComponent) ? + ((NamedComponent) this.source).getComponentType() : "inbound-channel-adapter"; + } + @Override protected void onInit() { Assert.notNull(this.source, "source must not be null"); diff --git a/spring-integration-jms/src/main/java/org/springframework/integration/jms/JmsDestinationPollingSource.java b/spring-integration-jms/src/main/java/org/springframework/integration/jms/JmsDestinationPollingSource.java index bda252e867..f147eaf544 100644 --- a/spring-integration-jms/src/main/java/org/springframework/integration/jms/JmsDestinationPollingSource.java +++ b/spring-integration-jms/src/main/java/org/springframework/integration/jms/JmsDestinationPollingSource.java @@ -24,7 +24,6 @@ import javax.jms.Destination; import org.springframework.integration.Message; import org.springframework.integration.MessagingException; import org.springframework.integration.core.MessageSource; -import org.springframework.integration.history.MessageHistory; import org.springframework.integration.support.MessageBuilder; import org.springframework.jms.core.JmsTemplate; import org.springframework.jms.support.converter.MessageConverter; @@ -80,7 +79,7 @@ public class JmsDestinationPollingSource extends AbstractJmsTemplateBasedAdapter if (jmsMessage == null) { return null; } - try { + try { // Map headers Map mappedHeaders = (Map) this.getHeaderMapper().toHeaders(jmsMessage); MessageConverter converter = this.getJmsTemplate().getMessageConverter(); @@ -88,7 +87,6 @@ public class JmsDestinationPollingSource extends AbstractJmsTemplateBasedAdapter MessageBuilder builder = (convertedObject instanceof Message) ? MessageBuilder.fromMessage((Message) convertedObject) : MessageBuilder.withPayload(convertedObject); convertedMessage = builder.copyHeadersIfAbsent(mappedHeaders).build(); - convertedMessage = MessageHistory.write(convertedMessage, this); } catch (Exception e) { throw new MessagingException(e.getMessage(), e); diff --git a/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/JmsMessageHistoryTests.java b/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/JmsMessageHistoryTests.java index 8cf0ee786f..b1733a89ca 100644 --- a/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/JmsMessageHistoryTests.java +++ b/spring-integration-jms/src/test/java/org/springframework/integration/jms/config/JmsMessageHistoryTests.java @@ -25,21 +25,15 @@ import java.util.Map; import java.util.Properties; import java.util.StringTokenizer; -import org.junit.Ignore; import org.junit.Test; -import org.mockito.Mockito; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.integration.Message; -import org.springframework.integration.MessageChannel; import org.springframework.integration.MessageHeaders; import org.springframework.integration.MessagingException; -import org.springframework.integration.channel.DirectChannel; import org.springframework.integration.context.NamedComponent; -import org.springframework.integration.core.MessageHandler; import org.springframework.integration.core.PollableChannel; -import org.springframework.integration.core.SubscribableChannel; import org.springframework.integration.history.MessageHistory; import org.springframework.integration.jms.DefaultJmsHeaderMapper; import org.springframework.integration.message.GenericMessage; @@ -60,12 +54,13 @@ public class JmsMessageHistoryTests { gateway.send("hello"); Message message = jmsInputChannel.receive(5000); Iterator historyIterator = message.getHeaders().get(MessageHistory.HEADER_NAME, MessageHistory.class).iterator(); - Properties event = historyIterator.next(); - assertEquals("jms:inbound-channel-adapter", event.getProperty(MessageHistory.TYPE_PROPERTY)); - assertEquals("sampleJmsInboundAdapter", event.getProperty(MessageHistory.NAME_PROPERTY)); - event = historyIterator.next(); - assertEquals("channel", event.getProperty(MessageHistory.TYPE_PROPERTY)); - assertEquals("jmsInputChannel", event.getProperty(MessageHistory.NAME_PROPERTY)); + Properties event1 = historyIterator.next(); + assertEquals("jms:inbound-channel-adapter", event1.getProperty(MessageHistory.TYPE_PROPERTY)); + assertEquals("sampleJmsInboundAdapter", event1.getProperty(MessageHistory.NAME_PROPERTY)); + Properties event2 = historyIterator.next(); + System.out.println(event2); + assertEquals("channel", event2.getProperty(MessageHistory.TYPE_PROPERTY)); + assertEquals("jmsInputChannel", event2.getProperty(MessageHistory.NAME_PROPERTY)); }