fixing bug 3721 by restricting the number of wind fixes delivered through the /wind REST API to 10,000

Change-Id: I6d0f912667bd31f33d8e01e60d340cc3a03ead29
This commit is contained in:
Axel Uhl committed 2016-06-18 21:00:11 +02:00
1 parent fd93d4ab92
commit 6d87074bbb
2 files changed
+17 -2

No files matched your search

@@ -22,6 +22,20 @@ public class DefaultWindTrackJsonSerializer implements WindTrackJsonSerializer {
private TimePoint toTime;
private WindSource windSource;
/**
* -1 means unlimited.
*/
private final int maxNumberOfFixes;
public DefaultWindTrackJsonSerializer(int maxNumberOfFixes) {
super();
this.maxNumberOfFixes = maxNumberOfFixes;
}
public DefaultWindTrackJsonSerializer() {
this(-1);
}
public JSONObject serialize(WindTrack windTrack) {
JSONObject result = new JSONObject();
JSONArray jsonWindFixes = new JSONArray();
@@ -31,7 +45,8 @@ public class DefaultWindTrackJsonSerializer implements WindTrackJsonSerializer {
windTrack.lockForRead();
try {
Iterator<Wind> windIter = windTrack.getFixesIterator(fromTime, /* inclusive */true, toTime, /* inclusive */ false);
while (windIter.hasNext()) {
int count = 0;
while ((maxNumberOfFixes == -1 || count<maxNumberOfFixes) && windIter.hasNext()) {
fixes.add(windIter.next());
}
} finally {
@@ -719,7 +719,7 @@ public class RegattasResource extends AbstractSailingServerResource {
from = Util.getLatestOfTimePoints(from, trackedRace.getStartOfTracking());
to = Util.getEarliestOfTimePoints(to, Util.getEarliestOfTimePoints(trackedRace.getEndOfTracking(), trackedRace.getTimePointOfNewestEvent()));
TrackedRaceJsonSerializer serializer = new TrackedRaceJsonSerializer(
new DefaultWindTrackJsonSerializer());
new DefaultWindTrackJsonSerializer(/* maxNumberOfFixes */ 10000));
serializer.setWindSource(windSource);
serializer.setWindSourceId(windSourceId);
serializer.setFromTime(from);