34
34
* @since 4.2
35
35
*/
36
36
public final class StandardBatchUtils {
37
-
37
+
38
38
private StandardBatchUtils () {
39
-
39
+
40
40
}
41
-
41
+
42
42
/**
43
43
* Iterates over batch message structure returning {@link Iterable} of individual messages.
44
- *
44
+ *
45
45
* @param batchMessage instance of batch {@link Message}
46
46
* @return instance of {@link Iterable} representing individual Messages in a batch {@link Message} as {@link Entry}.
47
47
*/
48
48
public static Iterable <Entry <Object , Map <String , Object >>> iterate (Message <List <Object >> batchMessage ) {
49
- return new Iterable <Map .Entry <Object ,Map <String , Object >>>() {
49
+ return () -> new Iterator <>() {
50
+ int index = 0 ;
51
+
50
52
@ Override
51
- public Iterator <Entry <Object , Map <String , Object >>> iterator () {
52
- return new Iterator <Entry <Object , Map <String , Object >>>() {
53
- int index = 0 ;
54
- @ Override
55
- public Entry <Object , Map <String , Object >> next () {
56
- return getMessageByIndex (batchMessage , index ++);
57
- }
58
-
59
- @ Override
60
- public boolean hasNext () {
61
- return index < batchMessage .getPayload ().size ();
62
- }
63
- };
53
+ public Entry <Object , Map <String , Object >> next () {
54
+ return getMessageByIndex (batchMessage , index ++);
55
+ }
56
+
57
+ @ Override
58
+ public boolean hasNext () {
59
+ return index < batchMessage .getPayload ().size ();
64
60
}
65
61
};
66
62
}
67
-
63
+
68
64
/**
69
- * Extracts individual {@link Message} by index from batch {@link Message}
65
+ * Extracts individual {@link Message} by index from batch {@link Message}.
70
66
* @param batchMessage instance of batch {@link Message}
71
67
* @param index index of individual {@link Message} in a batch
72
68
* @return individual {@link Message} in a batch {@link Message}
73
69
*/
74
70
public static Entry <Object , Map <String , Object >> getMessageByIndex (Message <List <Object >> batchMessage , int index ) {
75
- Assert .isTrue (index < batchMessage .getPayload ().size (), "Index " + index + " is out of bounds as there are only "
71
+ Assert .isTrue (index < batchMessage .getPayload ().size (), "Index " + index + " is out of bounds as there are only "
76
72
+ batchMessage .getPayload ().size () + " messages in a batch." );
77
- return new Entry <Object , Map < String , Object > >() {
78
-
73
+ return new Entry <>() {
74
+
79
75
@ Override
80
76
public Map <String , Object > setValue (Map <String , Object > value ) {
81
77
throw new UnsupportedOperationException ();
82
78
}
83
-
79
+
84
80
@ SuppressWarnings ("unchecked" )
85
81
@ Override
86
82
public Map <String , Object > getValue () {
87
83
return ((List <Map <String , Object >>) batchMessage .getHeaders ().get (BinderHeaders .BATCH_HEADERS )).get (index );
88
84
}
89
-
85
+
90
86
@ Override
91
87
public Object getKey () {
92
88
return batchMessage .getPayload ().get (index );
@@ -95,24 +91,24 @@ public Object getKey() {
95
91
}
96
92
97
93
public static class BatchMessageBuilder {
98
-
94
+
99
95
private final List <Object > payloads = new ArrayList <>();
100
-
96
+
101
97
private final List <Map <String , Object >> batchHeaders = new ArrayList <>();
102
-
98
+
103
99
private final Map <String , Object > headers = new HashMap <>();
104
-
100
+
105
101
public BatchMessageBuilder addMessage (Object payload , Map <String , Object > batchHeaders ) {
106
102
this .payloads .add (payload );
107
103
this .batchHeaders .add (batchHeaders );
108
104
return this ;
109
105
}
110
-
106
+
111
107
public BatchMessageBuilder addRootHeader (String key , Object value ) {
112
108
this .headers .put (key , value );
113
109
return this ;
114
110
}
115
-
111
+
116
112
public Message <List <Object >> build () {
117
113
this .headers .put (BinderHeaders .BATCH_HEADERS , this .batchHeaders );
118
114
return MessageBuilder .createMessage (payloads , new MessageHeaders (headers ));
0 commit comments