46
46
import java .io .UncheckedIOException ;
47
47
import java .net .UnknownHostException ;
48
48
import java .util .ArrayList ;
49
+ import java .util .Collection ;
49
50
import java .util .Collections ;
50
51
import java .util .HashMap ;
51
52
import java .util .List ;
@@ -94,26 +95,25 @@ public CapturedRequest[] capturedRequests() {
94
95
* @return the captured requests
95
96
*/
96
97
public CapturedRequest [] getCapturedRequestsAndClear () {
97
- CapturedRequest [] capturedRequests = capturedRequests ();
98
- clear ();
99
- return capturedRequests ;
98
+ List <CapturedRequest > requests = new ArrayList <>(capturedRequests .size ());
99
+ capturedRequests .drainTo (requests );
100
+ return requests .toArray (new CapturedRequest [0 ]);
101
+ }
102
+
103
+ private Map <String , List <CapturedRequest >> groupRequestsByTargetNode (Collection <CapturedRequest > requests ) {
104
+ Map <String , List <CapturedRequest >> result = new HashMap <>();
105
+ for (CapturedRequest request : requests ) {
106
+ result .computeIfAbsent (request .node .getId (), node -> new ArrayList <>()).add (request );
107
+ }
108
+ return result ;
100
109
}
101
110
102
111
/**
103
112
* returns all requests captured so far, grouped by target node.
104
113
* Doesn't clear the captured request list. See {@link #clear()}
105
114
*/
106
115
public Map <String , List <CapturedRequest >> capturedRequestsByTargetNode () {
107
- Map <String , List <CapturedRequest >> map = new HashMap <>();
108
- for (CapturedRequest request : capturedRequests ) {
109
- List <CapturedRequest > nodeList = map .get (request .node .getId ());
110
- if (nodeList == null ) {
111
- nodeList = new ArrayList <>();
112
- map .put (request .node .getId (), nodeList );
113
- }
114
- nodeList .add (request );
115
- }
116
- return map ;
116
+ return groupRequestsByTargetNode (capturedRequests );
117
117
}
118
118
119
119
/**
@@ -125,9 +125,9 @@ public Map<String, List<CapturedRequest>> capturedRequestsByTargetNode() {
125
125
* @return the captured requests grouped by target node
126
126
*/
127
127
public Map <String , List <CapturedRequest >> getCapturedRequestsByTargetNodeAndClear () {
128
- Map < String , List <CapturedRequest >> map = capturedRequestsByTargetNode ( );
129
- clear ( );
130
- return map ;
128
+ List <CapturedRequest > requests = new ArrayList <>( capturedRequests . size () );
129
+ capturedRequests . drainTo ( requests );
130
+ return groupRequestsByTargetNode ( requests ) ;
131
131
}
132
132
133
133
/** clears captured requests */
0 commit comments