From 3101611801e8e041a8d32da443b16e5494f9b32f Mon Sep 17 00:00:00 2001 From: Mark Fisher Date: Wed, 28 Jul 2010 02:05:08 +0000 Subject: [PATCH] INT-1287 priority is just an Integer now, no longer a need for MessageHeaders to depend on a custom enum --- .../integration/channel/PriorityChannel.java | 11 ++--- .../xml/StandardHeaderEnricherParser.java | 3 +- .../integration/core/MessageHeaders.java | 5 +- .../integration/core/MessagePriority.java | 36 -------------- .../integration/message/MessageBuilder.java | 3 +- .../channel/PriorityChannelTests.java | 49 +++++++++---------- .../channel/config/ChannelParserTests.java | 14 ++---- .../HeaderEnricherOverwriteTests-context.xml | 10 ++-- .../xml/HeaderEnricherOverwriteTests.java | 7 ++- .../xml/HeaderEnricherTests-context.xml | 8 +-- .../config/xml/HeaderEnricherTests.java | 5 +- .../gateway/GatewayWithHeaderAnnotations.java | 7 ++- .../message/MessageBuilderTests.java | 13 +++-- 13 files changed, 61 insertions(+), 110 deletions(-) delete mode 100644 spring-integration-core/src/main/java/org/springframework/integration/core/MessagePriority.java 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 f9029cfa12..e93958ed84 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 @@ -21,7 +21,6 @@ import java.util.concurrent.PriorityBlockingQueue; import org.springframework.integration.core.Message; import org.springframework.integration.core.MessageHeaders; -import org.springframework.integration.core.MessagePriority; import org.springframework.integration.util.UpperBound; /** @@ -96,11 +95,11 @@ public class PriorityChannel extends QueueChannel { private static class MessagePriorityComparator implements Comparator> { public int compare(Message message1, Message message2) { - MessagePriority priority1 = message1.getHeaders().getPriority(); - MessagePriority priority2 = message2.getHeaders().getPriority(); - priority1 = priority1 != null ? priority1 : MessagePriority.NORMAL; - priority2 = priority2 != null ? priority2 : MessagePriority.NORMAL; - return priority1.compareTo(priority2); + Integer priority1 = message1.getHeaders().getPriority(); + Integer priority2 = message2.getHeaders().getPriority(); + priority1 = priority1 != null ? priority1 : 0; + priority2 = priority2 != null ? priority2 : 0; + return priority2.compareTo(priority1); } } diff --git a/spring-integration-core/src/main/java/org/springframework/integration/config/xml/StandardHeaderEnricherParser.java b/spring-integration-core/src/main/java/org/springframework/integration/config/xml/StandardHeaderEnricherParser.java index ace9f9155d..b4de7a9131 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/config/xml/StandardHeaderEnricherParser.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/config/xml/StandardHeaderEnricherParser.java @@ -21,7 +21,6 @@ import org.w3c.dom.Element; import org.springframework.beans.factory.support.BeanDefinitionBuilder; import org.springframework.beans.factory.xml.ParserContext; import org.springframework.integration.core.MessageHeaders; -import org.springframework.integration.core.MessagePriority; import org.springframework.util.StringUtils; /** @@ -40,7 +39,7 @@ public class StandardHeaderEnricherParser extends HeaderEnricherParserSupport { this.addElementToHeaderMapping("error-channel", MessageHeaders.ERROR_CHANNEL); this.addElementToHeaderMapping("correlation-id", MessageHeaders.CORRELATION_ID); this.addElementToHeaderMapping("expiration-date", MessageHeaders.EXPIRATION_DATE, Long.class); - this.addElementToHeaderMapping("priority", MessageHeaders.PRIORITY, MessagePriority.class); + this.addElementToHeaderMapping("priority", MessageHeaders.PRIORITY, Integer.class); } @Override diff --git a/spring-integration-core/src/main/java/org/springframework/integration/core/MessageHeaders.java b/spring-integration-core/src/main/java/org/springframework/integration/core/MessageHeaders.java index 30ffa188fb..001c037304 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/core/MessageHeaders.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/core/MessageHeaders.java @@ -77,7 +77,6 @@ public final class MessageHeaders implements Map, Serializable { public MessageHeaders(Map headers) { this.headers = (headers != null) ? new HashMap(headers) : new HashMap(); - //this.headers.put(ID, TimeBasedUUIDGenerator.generateId()); this.headers.put(ID, UUID.randomUUID()); this.headers.put(TIMESTAMP, new Long(System.currentTimeMillis())); if (this.headers.get(HISTORY) == null) { @@ -123,8 +122,8 @@ public final class MessageHeaders implements Map, Serializable { return (sequenceSize != null ? sequenceSize : 0); } - public MessagePriority getPriority() { - return this.get(PRIORITY, MessagePriority.class); + public Integer getPriority() { + return this.get(PRIORITY, Integer.class); } @SuppressWarnings("unchecked") diff --git a/spring-integration-core/src/main/java/org/springframework/integration/core/MessagePriority.java b/spring-integration-core/src/main/java/org/springframework/integration/core/MessagePriority.java deleted file mode 100644 index f096d59c3c..0000000000 --- a/spring-integration-core/src/main/java/org/springframework/integration/core/MessagePriority.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright 2002-2010 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.integration.core; - -import org.springframework.integration.message.MessageBuilder; - -/** - * An enumeration of the possible values for a message's priority. - * - * @author Mark Fisher - * @see MessageHeaders#getPriority() - * @see MessageBuilder#setPriority(MessagePriority) - */ -public enum MessagePriority { - - HIGHEST, - HIGH, - NORMAL, - LOW, - LOWEST - -} diff --git a/spring-integration-core/src/main/java/org/springframework/integration/message/MessageBuilder.java b/spring-integration-core/src/main/java/org/springframework/integration/message/MessageBuilder.java index 92fcf4626e..1a0ebfa2c8 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/message/MessageBuilder.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/message/MessageBuilder.java @@ -25,7 +25,6 @@ import java.util.UUID; import org.springframework.integration.core.Message; import org.springframework.integration.core.MessageChannel; import org.springframework.integration.core.MessageHeaders; -import org.springframework.integration.core.MessagePriority; import org.springframework.util.Assert; import org.springframework.util.StringUtils; @@ -193,7 +192,7 @@ public final class MessageBuilder { return this.setHeader(MessageHeaders.SEQUENCE_SIZE, sequenceSize); } - public MessageBuilder setPriority(MessagePriority priority) { + public MessageBuilder setPriority(Integer priority) { return this.setHeader(MessageHeaders.PRIORITY, priority); } diff --git a/spring-integration-core/src/test/java/org/springframework/integration/channel/PriorityChannelTests.java b/spring-integration-core/src/test/java/org/springframework/integration/channel/PriorityChannelTests.java index 2038959aca..5eb92ed3cd 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/channel/PriorityChannelTests.java +++ b/spring-integration-core/src/test/java/org/springframework/integration/channel/PriorityChannelTests.java @@ -32,7 +32,6 @@ import java.util.concurrent.atomic.AtomicBoolean; import org.junit.Test; import org.springframework.integration.core.Message; -import org.springframework.integration.core.MessagePriority; import org.springframework.integration.message.MessageBuilder; import org.springframework.integration.message.StringMessage; @@ -55,21 +54,21 @@ public class PriorityChannelTests { @Test public void testDefaultComparator() { PriorityChannel channel = new PriorityChannel(5); - Message priority1 = createPriorityMessage(MessagePriority.HIGHEST); - Message priority2 = createPriorityMessage(MessagePriority.HIGH); - Message priority3 = createPriorityMessage(MessagePriority.NORMAL); - Message priority4 = createPriorityMessage(MessagePriority.LOW); - Message priority5 = createPriorityMessage(MessagePriority.LOWEST); + Message priority1 = createPriorityMessage(10); + Message priority2 = createPriorityMessage(7); + Message priority3 = createPriorityMessage(0); + Message priority4 = createPriorityMessage(-3); + Message priority5 = createPriorityMessage(-99); channel.send(priority4); channel.send(priority3); channel.send(priority5); channel.send(priority1); channel.send(priority2); - assertEquals("test-HIGHEST", channel.receive(0).getPayload()); - assertEquals("test-HIGH", channel.receive(0).getPayload()); - assertEquals("test-NORMAL", channel.receive(0).getPayload()); - assertEquals("test-LOW", channel.receive(0).getPayload()); - assertEquals("test-LOWEST", channel.receive(0).getPayload()); + assertEquals("test:10", channel.receive(0).getPayload()); + assertEquals("test:7", channel.receive(0).getPayload()); + assertEquals("test:0", channel.receive(0).getPayload()); + assertEquals("test:-3", channel.receive(0).getPayload()); + assertEquals("test:-99", channel.receive(0).getPayload()); } @Test @@ -95,29 +94,29 @@ public class PriorityChannelTests { @Test public void testNullPriorityIsConsideredNormal() { PriorityChannel channel = new PriorityChannel(5); - Message highPriority = createPriorityMessage(MessagePriority.HIGH); - Message lowPriority = createPriorityMessage(MessagePriority.LOW); - Message nullPriority = new StringMessage("test-NULL"); + Message highPriority = createPriorityMessage(5); + Message lowPriority = createPriorityMessage(-5); + Message nullPriority = new StringMessage("test:NULL"); channel.send(lowPriority); channel.send(highPriority); channel.send(nullPriority); - assertEquals("test-HIGH", channel.receive(0).getPayload()); - assertEquals("test-NULL", channel.receive(0).getPayload()); - assertEquals("test-LOW", channel.receive(0).getPayload()); + assertEquals("test:5", channel.receive(0).getPayload()); + assertEquals("test:NULL", channel.receive(0).getPayload()); + assertEquals("test:-5", channel.receive(0).getPayload()); } @Test public void testUnboundedCapacity() { PriorityChannel channel = new PriorityChannel(); - Message highPriority = createPriorityMessage(MessagePriority.HIGH); - Message lowPriority = createPriorityMessage(MessagePriority.LOW); - Message nullPriority = new StringMessage("test-NULL"); + Message highPriority = createPriorityMessage(5); + Message lowPriority = createPriorityMessage(-5); + Message nullPriority = new StringMessage("test:NULL"); channel.send(lowPriority); channel.send(highPriority); channel.send(nullPriority); - assertEquals("test-HIGH", channel.receive(0).getPayload()); - assertEquals("test-NULL", channel.receive(0).getPayload()); - assertEquals("test-LOW", channel.receive(0).getPayload()); + assertEquals("test:5", channel.receive(0).getPayload()); + assertEquals("test:NULL", channel.receive(0).getPayload()); + assertEquals("test:-5", channel.receive(0).getPayload()); } @Test @@ -194,8 +193,8 @@ public class PriorityChannelTests { } - private static Message createPriorityMessage(MessagePriority priority) { - return MessageBuilder.withPayload("test-" + priority).setPriority(priority).build(); + private static Message createPriorityMessage(int priority) { + return MessageBuilder.withPayload("test:" + priority).setPriority(priority).build(); } diff --git a/spring-integration-core/src/test/java/org/springframework/integration/channel/config/ChannelParserTests.java b/spring-integration-core/src/test/java/org/springframework/integration/channel/config/ChannelParserTests.java index 192929de9e..913f3bac89 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/channel/config/ChannelParserTests.java +++ b/spring-integration-core/src/test/java/org/springframework/integration/channel/config/ChannelParserTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2009 the original author or authors. + * Copyright 2002-2010 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -40,7 +40,6 @@ import org.springframework.integration.channel.QueueChannel; import org.springframework.integration.config.TestChannelInterceptor; import org.springframework.integration.core.Message; import org.springframework.integration.core.MessageChannel; -import org.springframework.integration.core.MessagePriority; import org.springframework.integration.dispatcher.RoundRobinLoadBalancingStrategy; import org.springframework.integration.dispatcher.UnicastingDispatcher; import org.springframework.integration.message.GenericMessage; @@ -203,14 +202,11 @@ public class ChannelParserTests { @Test public void testPriorityChannelWithDefaultComparator() { - ApplicationContext context = new ClassPathXmlApplicationContext("priorityChannelParserTests.xml", this - .getClass()); + ApplicationContext context = new ClassPathXmlApplicationContext("priorityChannelParserTests.xml", this.getClass()); PollableChannel channel = (PollableChannel) context.getBean("priorityChannelWithDefaultComparator"); - Message lowPriorityMessage = MessageBuilder.withPayload("low").setPriority(MessagePriority.LOW).build(); - Message midPriorityMessage = MessageBuilder.withPayload("mid").setPriority(MessagePriority.NORMAL) - .build(); - Message highPriorityMessage = MessageBuilder.withPayload("high").setPriority(MessagePriority.HIGH) - .build(); + Message lowPriorityMessage = MessageBuilder.withPayload("low").setPriority(-14).build(); + Message midPriorityMessage = MessageBuilder.withPayload("mid").setPriority(0).build(); + Message highPriorityMessage = MessageBuilder.withPayload("high").setPriority(99).build(); channel.send(lowPriorityMessage); channel.send(highPriorityMessage); channel.send(midPriorityMessage); diff --git a/spring-integration-core/src/test/java/org/springframework/integration/config/xml/HeaderEnricherOverwriteTests-context.xml b/spring-integration-core/src/test/java/org/springframework/integration/config/xml/HeaderEnricherOverwriteTests-context.xml index 2cb93859bb..a57ecdfef2 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/config/xml/HeaderEnricherOverwriteTests-context.xml +++ b/spring-integration-core/src/test/java/org/springframework/integration/config/xml/HeaderEnricherOverwriteTests-context.xml @@ -1,11 +1,11 @@ - + http://www.springframework.org/schema/integration/spring-integration.xsd"> @@ -56,11 +56,11 @@ - + - + diff --git a/spring-integration-core/src/test/java/org/springframework/integration/config/xml/HeaderEnricherOverwriteTests.java b/spring-integration-core/src/test/java/org/springframework/integration/config/xml/HeaderEnricherOverwriteTests.java index c56f56f2d5..84af747bb2 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/config/xml/HeaderEnricherOverwriteTests.java +++ b/spring-integration-core/src/test/java/org/springframework/integration/config/xml/HeaderEnricherOverwriteTests.java @@ -29,7 +29,6 @@ import org.springframework.integration.channel.PollableChannel; import org.springframework.integration.channel.QueueChannel; import org.springframework.integration.core.Message; import org.springframework.integration.core.MessageChannel; -import org.springframework.integration.core.MessagePriority; import org.springframework.integration.gateway.SimpleMessagingGateway; import org.springframework.integration.message.MessageBuilder; import org.springframework.test.context.ContextConfiguration; @@ -145,7 +144,7 @@ public class HeaderEnricherOverwriteTests { gateway.setRequestChannel(context.getBean("priorityExplicitOverwriteTrueInput", MessageChannel.class)); Message result = gateway.sendAndReceiveMessage("test"); assertNotNull(result); - assertEquals(MessagePriority.HIGH, result.getHeaders().getPriority()); + assertEquals(new Integer(42), result.getHeaders().getPriority()); } @Test @@ -154,12 +153,12 @@ public class HeaderEnricherOverwriteTests { QueueChannel replyChannel = new QueueChannel(); Message message = MessageBuilder.withPayload("test") .setReplyChannel(replyChannel) - .setPriority(MessagePriority.HIGHEST) + .setPriority(77) .build(); input.send(message); Message result = replyChannel.receive(0); assertNotNull(result); - assertEquals(MessagePriority.HIGHEST, result.getHeaders().getPriority()); + assertEquals(new Integer(77), result.getHeaders().getPriority()); } @Test diff --git a/spring-integration-core/src/test/java/org/springframework/integration/config/xml/HeaderEnricherTests-context.xml b/spring-integration-core/src/test/java/org/springframework/integration/config/xml/HeaderEnricherTests-context.xml index 9b548d6eca..36db19b65d 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/config/xml/HeaderEnricherTests-context.xml +++ b/spring-integration-core/src/test/java/org/springframework/integration/config/xml/HeaderEnricherTests-context.xml @@ -1,11 +1,11 @@ - + http://www.springframework.org/schema/integration/spring-integration.xsd"> @@ -63,7 +63,7 @@ - + diff --git a/spring-integration-core/src/test/java/org/springframework/integration/config/xml/HeaderEnricherTests.java b/spring-integration-core/src/test/java/org/springframework/integration/config/xml/HeaderEnricherTests.java index da469dfbc7..1d50c75f2c 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/config/xml/HeaderEnricherTests.java +++ b/spring-integration-core/src/test/java/org/springframework/integration/config/xml/HeaderEnricherTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2009 the original author or authors. + * Copyright 2002-2010 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -30,7 +30,6 @@ import org.springframework.context.ApplicationContext; import org.springframework.integration.channel.PollableChannel; import org.springframework.integration.core.Message; import org.springframework.integration.core.MessageChannel; -import org.springframework.integration.core.MessagePriority; import org.springframework.integration.gateway.SimpleMessagingGateway; import org.springframework.integration.message.MessageBuilder; import org.springframework.integration.message.StringMessage; @@ -127,7 +126,7 @@ public class HeaderEnricherTests { gateway.setRequestChannel(context.getBean("priorityInput", MessageChannel.class)); Message result = gateway.sendAndReceiveMessage("test"); assertNotNull(result); - assertEquals(MessagePriority.HIGH, result.getHeaders().getPriority()); + assertEquals(new Integer(42), result.getHeaders().getPriority()); } @Test diff --git a/spring-integration-core/src/test/java/org/springframework/integration/gateway/GatewayWithHeaderAnnotations.java b/spring-integration-core/src/test/java/org/springframework/integration/gateway/GatewayWithHeaderAnnotations.java index aa24312f97..92b89f94e5 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/gateway/GatewayWithHeaderAnnotations.java +++ b/spring-integration-core/src/test/java/org/springframework/integration/gateway/GatewayWithHeaderAnnotations.java @@ -25,7 +25,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.integration.annotation.Header; import org.springframework.integration.core.MessageHeaders; -import org.springframework.integration.core.MessagePriority; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @@ -44,13 +43,13 @@ public class GatewayWithHeaderAnnotations { @Test // INT-1205 public void priorityAsArgument() { TestService gateway = (TestService) applicationContext.getBean("gateway"); - String result = gateway.test("foo", MessagePriority.HIGH); - assertEquals("fooHIGH", result); + String result = gateway.test("foo", 99); + assertEquals("foo99", result); } public static interface TestService { - public String test(String str, @Header(MessageHeaders.PRIORITY) MessagePriority priority); + public String test(String str, @Header(MessageHeaders.PRIORITY) int priority); } } diff --git a/spring-integration-core/src/test/java/org/springframework/integration/message/MessageBuilderTests.java b/spring-integration-core/src/test/java/org/springframework/integration/message/MessageBuilderTests.java index 36c7a9d5a5..91ece6b4db 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/message/MessageBuilderTests.java +++ b/spring-integration-core/src/test/java/org/springframework/integration/message/MessageBuilderTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2008 the original author or authors. + * Copyright 2002-2010 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -27,7 +27,6 @@ import org.junit.Test; import org.springframework.integration.core.Message; import org.springframework.integration.core.MessageHeaders; -import org.springframework.integration.core.MessagePriority; /** * @author Mark Fisher @@ -120,18 +119,18 @@ public class MessageBuilderTests { @Test public void testPriority() { Message importantMessage = MessageBuilder.withPayload(1) - .setPriority(MessagePriority.HIGHEST).build(); - assertEquals(MessagePriority.HIGHEST, importantMessage.getHeaders().getPriority()); + .setPriority(123).build(); + assertEquals(new Integer(123), importantMessage.getHeaders().getPriority()); } @Test public void testNonDestructiveSet() { Message message1 = MessageBuilder.withPayload(1) - .setPriority(MessagePriority.HIGHEST).build(); + .setPriority(42).build(); Message message2 = MessageBuilder.fromMessage(message1) - .setHeaderIfAbsent(MessageHeaders.PRIORITY, MessagePriority.LOW) + .setHeaderIfAbsent(MessageHeaders.PRIORITY, 13) .build(); - assertEquals(MessagePriority.HIGHEST, message2.getHeaders().getPriority()); + assertEquals(new Integer(42), message2.getHeaders().getPriority()); } @Test