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());