Repository: incubator-unomi Updated Branches: refs/heads/master 10a106f9e -> 191fbbaab
UNOMI-198 : Added check for recursion Project: http://git-wip-us.apache.org/repos/asf/incubator-unomi/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-unomi/commit/191fbbaa Tree: http://git-wip-us.apache.org/repos/asf/incubator-unomi/tree/191fbbaa Diff: http://git-wip-us.apache.org/repos/asf/incubator-unomi/diff/191fbbaa Branch: refs/heads/master Commit: 191fbbaab82a9fb4348e70f6a468c254e45b1e5c Parents: 10a106f Author: tdraier <[email protected]> Authored: Tue Sep 11 11:22:05 2018 +0200 Committer: tdraier <[email protected]> Committed: Tue Sep 11 11:22:05 2018 +0200 ---------------------------------------------------------------------- .../unomi/services/services/EventServiceImpl.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/191fbbaa/services/src/main/java/org/apache/unomi/services/services/EventServiceImpl.java ---------------------------------------------------------------------- diff --git a/services/src/main/java/org/apache/unomi/services/services/EventServiceImpl.java b/services/src/main/java/org/apache/unomi/services/services/EventServiceImpl.java index 5e1ed66..5217e55 100644 --- a/services/src/main/java/org/apache/unomi/services/services/EventServiceImpl.java +++ b/services/src/main/java/org/apache/unomi/services/services/EventServiceImpl.java @@ -40,6 +40,7 @@ import java.util.*; public class EventServiceImpl implements EventService { private static final Logger logger = LoggerFactory.getLogger(EventServiceImpl.class.getName()); + private static final int MAX_RECURSION_DEPTH = 10; private List<EventListenerService> eventListeners = new ArrayList<EventListenerService>(); @@ -139,6 +140,15 @@ public class EventServiceImpl implements EventService { } public int send(Event event) { + return send(event, 0); + } + + private int send(Event event, int depth) { + if (depth > MAX_RECURSION_DEPTH) { + logger.warn("Max recursion depth reached"); + return NO_CHANGE; + } + if (event.isPersistent()) { persistenceService.save(event); } @@ -165,7 +175,7 @@ public class EventServiceImpl implements EventService { Event profileUpdated = new Event("profileUpdated", session, event.getProfile(), event.getScope(), event.getSource(), event.getProfile(), event.getTimeStamp()); profileUpdated.setPersistent(false); profileUpdated.getAttributes().putAll(event.getAttributes()); - changes |= send(profileUpdated); + changes |= send(profileUpdated, depth + 1); if (session != null && session.getProfileId() != null) { changes |= SESSION_UPDATED; session.setProfile(event.getProfile());
