mirror of
https://github.com/spring-projects/spring-boot.git
synced 2024-09-03 04:26:12 +08:00
Add flag to TraceRepository to reverse order of listing
Default to true (so existing apps change their behaviour, but that seems to be the majority vote). Fixes gh-2794
This commit is contained in:
parent
b45bb6d082
commit
8ef21b31ad
@ -16,9 +16,9 @@
|
|||||||
|
|
||||||
package org.springframework.boot.actuate.trace;
|
package org.springframework.boot.actuate.trace;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@ -31,7 +31,18 @@ public class InMemoryTraceRepository implements TraceRepository {
|
|||||||
|
|
||||||
private int capacity = 100;
|
private int capacity = 100;
|
||||||
|
|
||||||
private final List<Trace> traces = new ArrayList<Trace>();
|
private boolean reverse = true;
|
||||||
|
|
||||||
|
private final List<Trace> traces = new LinkedList<Trace>();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Flag to say that the repository lists traces in reverse order.
|
||||||
|
*
|
||||||
|
* @param reverse flag value (default true)
|
||||||
|
*/
|
||||||
|
public void setReverse(boolean reverse) {
|
||||||
|
this.reverse = reverse;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param capacity the capacity to set
|
* @param capacity the capacity to set
|
||||||
@ -52,9 +63,14 @@ public class InMemoryTraceRepository implements TraceRepository {
|
|||||||
Trace trace = new Trace(new Date(), map);
|
Trace trace = new Trace(new Date(), map);
|
||||||
synchronized (this.traces) {
|
synchronized (this.traces) {
|
||||||
while (this.traces.size() >= this.capacity) {
|
while (this.traces.size() >= this.capacity) {
|
||||||
this.traces.remove(0);
|
this.traces.remove(this.capacity - 1);
|
||||||
|
}
|
||||||
|
if (this.reverse) {
|
||||||
|
this.traces.add(0, trace);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this.traces.add(trace);
|
||||||
}
|
}
|
||||||
this.traces.add(trace);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -40,7 +40,7 @@ public class InMemoryTraceRepositoryTests {
|
|||||||
this.repository.add(Collections.<String, Object> singletonMap("bar", "bar"));
|
this.repository.add(Collections.<String, Object> singletonMap("bar", "bar"));
|
||||||
List<Trace> traces = this.repository.findAll();
|
List<Trace> traces = this.repository.findAll();
|
||||||
assertEquals(2, traces.size());
|
assertEquals(2, traces.size());
|
||||||
assertEquals("bar", traces.get(1).getInfo().get("bar"));
|
assertEquals("bar", traces.get(0).getInfo().get("bar"));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user