diff --git a/spring-integration-core/src/main/java/org/springframework/integration/channel/PriorityChannel.java b/spring-integration-core/src/main/java/org/springframework/integration/channel/PriorityChannel.java
index f664e01440..60dd1f00fb 100644
--- a/spring-integration-core/src/main/java/org/springframework/integration/channel/PriorityChannel.java
+++ b/spring-integration-core/src/main/java/org/springframework/integration/channel/PriorityChannel.java
@@ -84,6 +84,11 @@ public class PriorityChannel extends QueueChannel {
this(0, null);
}
+ @Override
+ public int getRemainingCapacity() {
+ return this.upperBound.availablePermits();
+ }
+
@Override
protected boolean doSend(Message> message, long timeout) {
if (!this.upperBound.tryAcquire(timeout)) {
diff --git a/spring-integration-core/src/test/java/org/springframework/integration/channel/config/ChannelCapacityPlaceholderTests-context.xml b/spring-integration-core/src/test/java/org/springframework/integration/channel/config/ChannelCapacityPlaceholderTests-context.xml
index 182d2d1dd2..d379d9c854 100644
--- a/spring-integration-core/src/test/java/org/springframework/integration/channel/config/ChannelCapacityPlaceholderTests-context.xml
+++ b/spring-integration-core/src/test/java/org/springframework/integration/channel/config/ChannelCapacityPlaceholderTests-context.xml
@@ -13,11 +13,12 @@
-
-
+
+
+
+
diff --git a/spring-integration-core/src/test/java/org/springframework/integration/channel/config/ChannelCapacityPlaceholderTests.java b/spring-integration-core/src/test/java/org/springframework/integration/channel/config/ChannelCapacityPlaceholderTests.java
index 8cbc89e50a..4e0ed1f4cc 100644
--- a/spring-integration-core/src/test/java/org/springframework/integration/channel/config/ChannelCapacityPlaceholderTests.java
+++ b/spring-integration-core/src/test/java/org/springframework/integration/channel/config/ChannelCapacityPlaceholderTests.java
@@ -24,6 +24,7 @@ import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
+import org.springframework.integration.channel.PriorityChannel;
import org.springframework.integration.channel.QueueChannel;
import org.springframework.integration.support.MessageBuilder;
import org.springframework.test.context.ContextConfiguration;
@@ -31,6 +32,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
/**
* @author Mark Fisher
+ * @author Artem Bilan
*/
@ContextConfiguration
@RunWith(SpringJUnit4ClassRunner.class)
@@ -51,12 +53,16 @@ public class ChannelCapacityPlaceholderTests {
assertEquals(98, channel.getRemainingCapacity());
}
-
- public interface TestService {
-
- @org.springframework.integration.annotation.Gateway(requestChannel = "channel")
- void test();
-
+ @Test
+ public void testCapacityOnPriorityChannel() {
+ PriorityChannel channel = context.getBean("priorityChannel", PriorityChannel.class);
+ assertNotNull(channel);
+ assertEquals(99, channel.getRemainingCapacity());
+ channel.send(MessageBuilder.withPayload("test1").build());
+ channel.send(MessageBuilder.withPayload("test2").build());
+ assertEquals(97, channel.getRemainingCapacity());
+ assertNotNull(channel.receive(0));
+ assertEquals(98, channel.getRemainingCapacity());
}
}
diff --git a/spring-integration-redis/src/test/java/org/springframework/integration/redis/config/RedisQueueGatewayIntegrationTests-context.xml b/spring-integration-redis/src/test/java/org/springframework/integration/redis/config/RedisQueueGatewayIntegrationTests-context.xml
index 21ac79d59f..836fd30791 100644
--- a/spring-integration-redis/src/test/java/org/springframework/integration/redis/config/RedisQueueGatewayIntegrationTests-context.xml
+++ b/spring-integration-redis/src/test/java/org/springframework/integration/redis/config/RedisQueueGatewayIntegrationTests-context.xml
@@ -26,7 +26,7 @@