diff --git a/spring-integration-core/src/main/java/org/springframework/integration/config/xml/GlobalWireTapParser.java b/spring-integration-core/src/main/java/org/springframework/integration/config/xml/GlobalWireTapParser.java
index 8a6d42f6b7..aedccccdad 100644
--- a/spring-integration-core/src/main/java/org/springframework/integration/config/xml/GlobalWireTapParser.java
+++ b/spring-integration-core/src/main/java/org/springframework/integration/config/xml/GlobalWireTapParser.java
@@ -25,8 +25,10 @@ import org.springframework.beans.factory.xml.ParserContext;
/**
* Parser for the top level 'wire-tap' element
+ *
* @author David Turanski
* @author Artem Bilan
+ *
* @since 2.1
*
*/
@@ -41,7 +43,14 @@ public class GlobalWireTapParser extends GlobalChannelInterceptorParser {
@Override
protected String resolveId(Element element, AbstractBeanDefinition definition, ParserContext parserContext)
throws BeanDefinitionStoreException {
- return super.resolveId(element, definition, parserContext) + ".globalChannelInterceptor";
+ RuntimeBeanReference wireTapBean =
+ (RuntimeBeanReference) definition.getConstructorArgumentValues()
+ .getIndexedArgumentValues()
+ .values()
+ .iterator()
+ .next()
+ .getValue();
+ return wireTapBean.getBeanName() + ".globalChannelInterceptor";
}
}
diff --git a/spring-integration-core/src/test/java/org/springframework/integration/channel/interceptor/GlobalWireTapTests-context.xml b/spring-integration-core/src/test/java/org/springframework/integration/channel/interceptor/GlobalWireTapTests-context.xml
index 9af837a4fc..6632501d07 100644
--- a/spring-integration-core/src/test/java/org/springframework/integration/channel/interceptor/GlobalWireTapTests-context.xml
+++ b/spring-integration-core/src/test/java/org/springframework/integration/channel/interceptor/GlobalWireTapTests-context.xml
@@ -27,6 +27,7 @@
+
@@ -42,5 +43,10 @@
+
+
+
+
+
diff --git a/spring-integration-core/src/test/java/org/springframework/integration/channel/interceptor/GlobalWireTapTests.java b/spring-integration-core/src/test/java/org/springframework/integration/channel/interceptor/GlobalWireTapTests.java
index 2fd93c8d6c..6efc5fc3d0 100644
--- a/spring-integration-core/src/test/java/org/springframework/integration/channel/interceptor/GlobalWireTapTests.java
+++ b/spring-integration-core/src/test/java/org/springframework/integration/channel/interceptor/GlobalWireTapTests.java
@@ -25,6 +25,7 @@ import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.integration.channel.DirectChannel;
import org.springframework.messaging.Message;
import org.springframework.messaging.MessageChannel;
import org.springframework.messaging.PollableChannel;
@@ -47,7 +48,7 @@ public class GlobalWireTapTests {
@Autowired
@Qualifier("channel")
- MessageChannel channel;
+ DirectChannel channel;
@Autowired
@Qualifier("random-channel")
@@ -74,8 +75,8 @@ public class GlobalWireTapTests {
Message> wireTapMessage = this.wiretapSingle.receive(100);
assertNotNull(wireTapMessage);
- // There should be three messages on this channel.
- // One for 'channel', one for 'output', and one for 'wiretapSingle'.
+ // There should be 5 messages on this channel:
+ // 'channel', 'output', 'wiretapSingle', and too for 'unnamedGlobalWireTaps'.
wireTapMessage = this.wiretapAll.receive(100);
int msgCount = 0;
while (wireTapMessage != null) {
@@ -84,9 +85,11 @@ public class GlobalWireTapTests {
wireTapMessage = this.wiretapAll.receive(100);
}
- assertEquals(3, msgCount);
+ assertEquals(5, msgCount);
assertNull(this.wiretapAll2.receive(1));
+
+ assertEquals(4, this.channel.getChannelInterceptors().size());
}
@Test
diff --git a/spring-integration-sftp/local-test-dir/rollback/sftpSource2.txt.writing b/spring-integration-sftp/local-test-dir/rollback/sftpSource2.txt.writing
deleted file mode 100644
index e69de29bb2..0000000000