INT-1410 SoucePollingChannelAdapter retrieves the componentType from its underlying MessageSource if that MessageSource is also a NamedComponent.
This commit is contained in:
@@ -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");
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user