You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@unomi.apache.org by dr...@apache.org on 2018/09/11 09:22:14 UTC

incubator-unomi git commit: UNOMI-198 : Added check for recursion

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 <dr...@apache.org>
Authored: Tue Sep 11 11:22:05 2018 +0200
Committer: tdraier <dr...@apache.org>
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());