INT-1410 SoucePollingChannelAdapter retrieves the componentType from its underlying MessageSource if that MessageSource is also a NamedComponent.

This commit is contained in:
Mark Fisher
2010-09-02 20:40:20 +00:00
parent 4948058482
commit 01e3ae539b
3 changed files with 15 additions and 15 deletions

View File

@@ -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");

View File

@@ -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<String, Object> mappedHeaders = (Map<String, Object>) this.getHeaderMapper().toHeaders(jmsMessage);
MessageConverter converter = this.getJmsTemplate().getMessageConverter();
@@ -88,7 +87,6 @@ public class JmsDestinationPollingSource extends AbstractJmsTemplateBasedAdapter
MessageBuilder<Object> builder = (convertedObject instanceof Message)
? MessageBuilder.fromMessage((Message<Object>) convertedObject) : MessageBuilder.withPayload(convertedObject);
convertedMessage = builder.copyHeadersIfAbsent(mappedHeaders).build();
convertedMessage = MessageHistory.write(convertedMessage, this);
}
catch (Exception e) {
throw new MessagingException(e.getMessage(), e);

View File

@@ -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<Properties> 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));
}