1
1
/*
2
- * Copyright 2002-2019 the original author or authors.
2
+ * Copyright 2002-2024 the original author or authors.
3
3
*
4
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
5
* you may not use this file except in compliance with the License.
17
17
package org .springframework .amqp .support ;
18
18
19
19
import static org .assertj .core .api .Assertions .assertThat ;
20
+ import static org .assertj .core .api .Assertions .assertThatThrownBy ;
20
21
import static org .assertj .core .api .Assertions .fail ;
21
22
22
23
import java .util .Date ;
37
38
* @author Mark Fisher
38
39
* @author Gary Russell
39
40
* @author Oleg Zhurakousky
41
+ * @author Raylax Grey
40
42
*/
41
43
public class SimpleAmqpHeaderMapperTests {
42
44
43
45
@ Test
44
46
public void fromHeaders () {
45
47
SimpleAmqpHeaderMapper headerMapper = new SimpleAmqpHeaderMapper ();
46
- Map <String , Object > headerMap = new HashMap <String , Object >();
48
+ Map <String , Object > headerMap = new HashMap <>();
47
49
headerMap .put (AmqpHeaders .APP_ID , "test.appId" );
48
50
headerMap .put (AmqpHeaders .CLUSTER_ID , "test.clusterId" );
49
51
headerMap .put (AmqpHeaders .CONTENT_ENCODING , "test.contentEncoding" );
50
52
headerMap .put (AmqpHeaders .CONTENT_LENGTH , 99L );
51
53
headerMap .put (AmqpHeaders .CONTENT_TYPE , "test.contentType" );
52
54
String testCorrelationId = "foo" ;
53
55
headerMap .put (AmqpHeaders .CORRELATION_ID , testCorrelationId );
54
- headerMap .put (AmqpHeaders .DELAY , 1234 );
56
+ headerMap .put (AmqpHeaders .DELAY , 1234L );
55
57
headerMap .put (AmqpHeaders .DELIVERY_MODE , MessageDeliveryMode .NON_PERSISTENT );
56
58
headerMap .put (AmqpHeaders .DELIVERY_TAG , 1234L );
57
59
headerMap .put (AmqpHeaders .EXPIRATION , "test.expiration" );
@@ -92,13 +94,39 @@ public void fromHeaders() {
92
94
assertThat (amqpProperties .getTimestamp ()).isEqualTo (testTimestamp );
93
95
assertThat (amqpProperties .getType ()).isEqualTo ("test.type" );
94
96
assertThat (amqpProperties .getUserId ()).isEqualTo ("test.userId" );
95
- assertThat (amqpProperties .getDelay ()).isEqualTo (Integer .valueOf (1234 ));
97
+ assertThat (amqpProperties .getDelayLong ()).isEqualTo (Long .valueOf (1234 ));
96
98
}
97
99
100
+ @ Test
101
+ public void fromHeadersWithLongDelay () {
102
+ SimpleAmqpHeaderMapper headerMapper = new SimpleAmqpHeaderMapper ();
103
+ Map <String , Object > headerMap = new HashMap <>();
104
+ headerMap .put (AmqpHeaders .DELAY , 1234L );
105
+ MessageHeaders messageHeaders = new MessageHeaders (headerMap );
106
+ MessageProperties amqpProperties = new MessageProperties ();
107
+ headerMapper .fromHeaders (messageHeaders , amqpProperties );
108
+ assertThat (amqpProperties .getDelayLong ()).isEqualTo (Long .valueOf (1234 ));
109
+
110
+ amqpProperties .setDelayLong (5678L );
111
+ assertThat (amqpProperties .getDelayLong ()).isEqualTo (Long .valueOf (5678 ));
112
+
113
+ amqpProperties .setDelayLong (null );
114
+ assertThat (amqpProperties .getHeaders ().containsKey (AmqpHeaders .DELAY )).isFalse ();
115
+
116
+ amqpProperties .setDelayLong (MessageProperties .X_DELAY_MAX );
117
+ assertThat (amqpProperties .getDelayLong ()).isEqualTo (Long .valueOf (MessageProperties .X_DELAY_MAX ));
118
+
119
+ assertThatThrownBy (() -> amqpProperties .setDelayLong (MessageProperties .X_DELAY_MAX + 1 ))
120
+ .isInstanceOf (IllegalArgumentException .class )
121
+ .hasMessageContaining ("Delay cannot exceed" );
122
+
123
+ }
124
+
125
+
98
126
@ Test
99
127
public void fromHeadersWithContentTypeAsMediaType () {
100
128
SimpleAmqpHeaderMapper headerMapper = new SimpleAmqpHeaderMapper ();
101
- Map <String , Object > headerMap = new HashMap <String , Object >();
129
+ Map <String , Object > headerMap = new HashMap <>();
102
130
103
131
headerMap .put (AmqpHeaders .CONTENT_TYPE , MimeTypeUtils .TEXT_HTML );
104
132
@@ -126,7 +154,7 @@ public void toHeaders() {
126
154
amqpProperties .setMessageCount (42 );
127
155
amqpProperties .setMessageId ("test.messageId" );
128
156
amqpProperties .setPriority (22 );
129
- amqpProperties .setReceivedDelay ( 1234 );
157
+ amqpProperties .setReceivedDelayLong ( 1234L );
130
158
amqpProperties .setReceivedExchange ("test.receivedExchange" );
131
159
amqpProperties .setReceivedRoutingKey ("test.receivedRoutingKey" );
132
160
amqpProperties .setRedelivered (true );
@@ -151,7 +179,7 @@ public void toHeaders() {
151
179
assertThat (headerMap .get (AmqpHeaders .EXPIRATION )).isEqualTo ("test.expiration" );
152
180
assertThat (headerMap .get (AmqpHeaders .MESSAGE_COUNT )).isEqualTo (42 );
153
181
assertThat (headerMap .get (AmqpHeaders .MESSAGE_ID )).isEqualTo ("test.messageId" );
154
- assertThat (headerMap .get (AmqpHeaders .RECEIVED_DELAY )).isEqualTo (1234 );
182
+ assertThat (headerMap .get (AmqpHeaders .RECEIVED_DELAY )).isEqualTo (1234L );
155
183
assertThat (headerMap .get (AmqpHeaders .RECEIVED_EXCHANGE )).isEqualTo ("test.receivedExchange" );
156
184
assertThat (headerMap .get (AmqpHeaders .RECEIVED_ROUTING_KEY )).isEqualTo ("test.receivedRoutingKey" );
157
185
assertThat (headerMap .get (AmqpHeaders .REPLY_TO )).isEqualTo ("test.replyTo" );
@@ -170,7 +198,7 @@ public void jsonTypeIdNotOverwritten() {
170
198
Jackson2JsonMessageConverter converter = new Jackson2JsonMessageConverter ();
171
199
MessageProperties amqpProperties = new MessageProperties ();
172
200
converter .toMessage ("123" , amqpProperties );
173
- Map <String , Object > headerMap = new HashMap <String , Object >();
201
+ Map <String , Object > headerMap = new HashMap <>();
174
202
headerMap .put ("__TypeId__" , "java.lang.Integer" );
175
203
MessageHeaders messageHeaders = new MessageHeaders (headerMap );
176
204
headerMapper .fromHeaders (messageHeaders , amqpProperties );
0 commit comments