From 6d87074bbb9bc81efd38bafbc64beb4fc0001613 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Sat, 18 Jun 2016 21:00:11 +0200 Subject: [PATCH] fixing bug 3721 by restricting the number of wind fixes delivered through the /wind REST API to 10,000 Change-Id: I6d0f912667bd31f33d8e01e60d340cc3a03ead29 --- .../api/DefaultWindTrackJsonSerializer.java | 17 ++++++++++++++++- .../gateway/jaxrs/api/RegattasResource.java | 2 +- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/DefaultWindTrackJsonSerializer.java b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/DefaultWindTrackJsonSerializer.java index e018260dde5..2a8440b3aee 100644 --- a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/DefaultWindTrackJsonSerializer.java +++ b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/DefaultWindTrackJsonSerializer.java @@ -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 windIter = windTrack.getFixesIterator(fromTime, /* inclusive */true, toTime, /* inclusive */ false); - while (windIter.hasNext()) { + int count = 0; + while ((maxNumberOfFixes == -1 || count