diff --git a/publish-service/src/main/java/com/ericsson/eiffel/remrem/publish/controller/ProducerController.java b/publish-service/src/main/java/com/ericsson/eiffel/remrem/publish/controller/ProducerController.java index d61289e2..7c70e70e 100644 --- a/publish-service/src/main/java/com/ericsson/eiffel/remrem/publish/controller/ProducerController.java +++ b/publish-service/src/main/java/com/ericsson/eiffel/remrem/publish/controller/ProducerController.java @@ -78,6 +78,9 @@ public class ProducerController { @Value("${activedirectory.publish.enabled}") private boolean isAuthenticationEnabled; + @Value("${maxSizeOfInputArray:250}") + private int maxSizeOfInputArray; + private RestTemplate restTemplate = new RestTemplate(); private JsonParser parser = new JsonParser(); @@ -153,6 +156,14 @@ public ResponseEntity send(final String msgProtocol, final String userDomain, fi return new ResponseEntity(e.getMessage(), HttpStatus.NOT_FOUND); } } + + //here add check for limitation for events in array is fetched from REMReM property and checked during publishing. + if (body.isJsonArray() && (body.getAsJsonArray().size() > maxSizeOfInputArray)) { + return createResponseEntity(HttpStatus.BAD_REQUEST, JSON_ERROR_STATUS, + "The number of events in the input array is too high: " + body.getAsJsonArray().size() + " > " + + maxSizeOfInputArray + "; you can modify the property 'maxSizeOfInputArray' to increase it."); + + } synchronized (this) { SendResult result = messageService.send(body, msgService, userDomain, tag, routingKey); log.info("HTTP Status: {}", messageService.getHttpStatus().value()); @@ -303,7 +314,14 @@ public ResponseEntity generateAndPublish(final String msgProtocol, final String if (bodyJson.isJsonObject()) { events.add(getAsJsonObject(bodyJson)); } else if (bodyJson.isJsonArray()) { - for (JsonElement element : bodyJson.getAsJsonArray()) { + JsonArray bodyJsonArray = bodyJson.getAsJsonArray(); + //here add check for limitation for events in array is fetched from REMReM property and checked during publishing. + if (bodyJsonArray.size() > maxSizeOfInputArray) { + return createResponseEntity(HttpStatus.BAD_REQUEST, JSON_ERROR_STATUS, + "The number of events in the input array is too high: " + bodyJsonArray.size() + " > " + + maxSizeOfInputArray + "; you can modify the property 'maxSizeOfInputArray' to increase it."); + } + for (JsonElement element : bodyJsonArray) { if (element.isJsonObject()) { events.add(getAsJsonObject(element)); } else { diff --git a/publish-service/src/main/resources/application.properties b/publish-service/src/main/resources/application.properties index e23c39f0..5d8a790b 100644 --- a/publish-service/src/main/resources/application.properties +++ b/publish-service/src/main/resources/application.properties @@ -44,5 +44,7 @@ activedirectory.connectionTimeOut: spring.mvc.pathmatch.matching-strategy: ANT_PATH_MATCHER +#Maximum number of templates in array passed to generateAndPublish endpoint +maxSizeOfInputArray: 250