This is an automated email from the ASF dual-hosted git repository.
jsinovassinnaik pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/unomi.git
The following commit(s) were added to refs/heads/master by this push:
new e707c59d3 UNOMI-660 : store correctly the ids of the events leading to
the sess… (#488)
e707c59d3 is described below
commit e707c59d32c8a64bebae67e36f99cd4e7f312ffb
Author: jsinovassin <[email protected]>
AuthorDate: Fri Sep 2 17:57:15 2022 +0200
UNOMI-660 : store correctly the ids of the events leading to the sess…
(#488)
* UNOMI-660 : store correctly the ids of the events leading to the session
creation
---
api/src/main/java/org/apache/unomi/api/Session.java | 5 +++--
.../test/java/org/apache/unomi/itests/ContextServletIT.java | 10 ++++++----
.../org/apache/unomi/rest/endpoints/ContextJsonEndpoint.java | 2 +-
.../apache/unomi/rest/endpoints/EventsCollectorEndpoint.java | 2 +-
.../java/org/apache/unomi/rest/service/RestServiceUtils.java | 3 +--
.../apache/unomi/rest/service/impl/RestServiceUtilsImpl.java | 11 +++++++----
.../java/org/apache/unomi/utils/EventsRequestContext.java | 10 ++++++++++
7 files changed, 29 insertions(+), 14 deletions(-)
diff --git a/api/src/main/java/org/apache/unomi/api/Session.java
b/api/src/main/java/org/apache/unomi/api/Session.java
index fc622ab7c..986323c12 100644
--- a/api/src/main/java/org/apache/unomi/api/Session.java
+++ b/api/src/main/java/org/apache/unomi/api/Session.java
@@ -17,6 +17,7 @@
package org.apache.unomi.api;
+import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
@@ -53,8 +54,8 @@ public class Session extends Item implements TimestampedItem {
private int duration = 0;
- private List<String> originEventTypes;
- private List<String> originEventIds;
+ private List<String> originEventTypes = new ArrayList<>();
+ private List<String> originEventIds = new ArrayList<>();
/**
* Instantiates a new Session.
diff --git a/itests/src/test/java/org/apache/unomi/itests/ContextServletIT.java
b/itests/src/test/java/org/apache/unomi/itests/ContextServletIT.java
index 5717fbc83..6559c4660 100644
--- a/itests/src/test/java/org/apache/unomi/itests/ContextServletIT.java
+++ b/itests/src/test/java/org/apache/unomi/itests/ContextServletIT.java
@@ -66,6 +66,7 @@ import java.util.Objects;
import static org.hamcrest.core.IsCollectionContaining.hasItem;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertThat;
@@ -201,7 +202,7 @@ public class ContextServletIT extends BaseIT {
Objects::nonNull, DEFAULT_TRYING_TIMEOUT,
DEFAULT_TRYING_TRIES);
//Act
- Event event = new Event(eventId, TEST_EVENT_TYPE, null, profile,
TEST_SCOPE, null, null, new Date());
+ Event event = new Event(TEST_EVENT_TYPE, null, profile, TEST_SCOPE,
null, null, new Date());
ContextRequest contextRequest = new ContextRequest();
contextRequest.setSessionId(sessionId);
@@ -211,12 +212,13 @@ public class ContextServletIT extends BaseIT {
request.setEntity(new
StringEntity(objectMapper.writeValueAsString(contextRequest),
ContentType.APPLICATION_JSON));
TestUtils.executeContextJSONRequest(request, sessionId);
- keepTrying("Event " + eventId + " not saved in the required time", ()
-> eventService.getEvent(eventId), Objects::nonNull, DEFAULT_TRYING_TIMEOUT,
+ Session session = keepTrying("Session with the id " + sessionId + "
not saved in the required time",
+ () -> profileService.loadSession(sessionId,
+ null), Objects::nonNull, DEFAULT_TRYING_TIMEOUT,
DEFAULT_TRYING_TRIES);
- Session session = profileService.loadSession(sessionId, null);
assertEquals(TEST_EVENT_TYPE, session.getOriginEventTypes().get(0));
- assertEquals(eventId, session.getOriginEventIds().get(0));
+ assertFalse(session.getOriginEventIds().isEmpty());
}
@Test
diff --git
a/rest/src/main/java/org/apache/unomi/rest/endpoints/ContextJsonEndpoint.java
b/rest/src/main/java/org/apache/unomi/rest/endpoints/ContextJsonEndpoint.java
index 546ce5a35..9d2a3c661 100644
---
a/rest/src/main/java/org/apache/unomi/rest/endpoints/ContextJsonEndpoint.java
+++
b/rest/src/main/java/org/apache/unomi/rest/endpoints/ContextJsonEndpoint.java
@@ -167,7 +167,7 @@ public class ContextJsonEndpoint {
// build public context, profile + session creation/anonymous etc ...
EventsRequestContext eventsRequestContext =
restServiceUtils.initEventsRequest(scope, sessionId, profileId,
- personaId, invalidateProfile, invalidateSession, request,
response, timestamp, events != null ? events: Collections.emptyList());
+ personaId, invalidateProfile, invalidateSession, request,
response, timestamp);
// Build response
ContextResponse contextResponse = new ContextResponse();
diff --git
a/rest/src/main/java/org/apache/unomi/rest/endpoints/EventsCollectorEndpoint.java
b/rest/src/main/java/org/apache/unomi/rest/endpoints/EventsCollectorEndpoint.java
index 81007d812..c9b3109dd 100644
---
a/rest/src/main/java/org/apache/unomi/rest/endpoints/EventsCollectorEndpoint.java
+++
b/rest/src/main/java/org/apache/unomi/rest/endpoints/EventsCollectorEndpoint.java
@@ -114,7 +114,7 @@ public class EventsCollectorEndpoint {
// build public context, profile + session creation/anonymous etc ...
EventsRequestContext eventsRequestContext =
restServiceUtils.initEventsRequest(scope, sessionId, profileId, null, false,
false,
- request, response, timestamp, events);
+ request, response, timestamp);
// process events
eventsRequestContext =
restServiceUtils.performEventsRequest(eventsCollectorRequest.getEvents(),
eventsRequestContext);
diff --git
a/rest/src/main/java/org/apache/unomi/rest/service/RestServiceUtils.java
b/rest/src/main/java/org/apache/unomi/rest/service/RestServiceUtils.java
index 6024a36b8..153b6ad11 100644
--- a/rest/src/main/java/org/apache/unomi/rest/service/RestServiceUtils.java
+++ b/rest/src/main/java/org/apache/unomi/rest/service/RestServiceUtils.java
@@ -47,13 +47,12 @@ public interface RestServiceUtils {
* @param request the current request
* @param response the current request response
* @param timestamp the current date, for timestamp the current visitor
data
- * @param events list of events sent with the request
* @return the built EventsRequestContext
*/
EventsRequestContext initEventsRequest(String scope, String sessionId,
String profileId, String personaId,
boolean invalidateProfile, boolean
invalidateSession,
HttpServletRequest request,
HttpServletResponse response,
- Date timestamp, List<Event> events);
+ Date timestamp);
/**
* Execute the list of events using the dedicated eventsRequestContext
diff --git
a/rest/src/main/java/org/apache/unomi/rest/service/impl/RestServiceUtilsImpl.java
b/rest/src/main/java/org/apache/unomi/rest/service/impl/RestServiceUtilsImpl.java
index c18fad5e3..ace630b3f 100644
---
a/rest/src/main/java/org/apache/unomi/rest/service/impl/RestServiceUtilsImpl.java
+++
b/rest/src/main/java/org/apache/unomi/rest/service/impl/RestServiceUtilsImpl.java
@@ -88,8 +88,7 @@ public class RestServiceUtilsImpl implements RestServiceUtils
{
@Override
public EventsRequestContext initEventsRequest(String scope, String
sessionId, String profileId, String personaId,
boolean invalidateProfile,
boolean invalidateSession,
- HttpServletRequest request,
HttpServletResponse response, Date timestamp,
- List<Event> events) {
+ HttpServletRequest request,
HttpServletResponse response, Date timestamp) {
// Build context
EventsRequestContext eventsRequestContext = new
EventsRequestContext(timestamp, null, null, request, response);
@@ -186,9 +185,8 @@ public class RestServiceUtilsImpl implements
RestServiceUtils {
// Only save session and send event if a session id was
provided, otherwise keep transient session
Session session = new Session(sessionId, sessionProfile,
timestamp, scope);
-
session.setOriginEventTypes(events.stream().map(Event::getEventType).collect(Collectors.toList()));
-
session.setOriginEventIds(events.stream().map(Item::getItemId).collect(Collectors.toList()));
eventsRequestContext.setSession(session);
+ eventsRequestContext.setNewSession(true);
eventsRequestContext.addChanges(EventService.SESSION_UPDATED);
Event event = new Event("sessionCreated",
eventsRequestContext.getSession(), eventsRequestContext.getProfile(),
scope, null, eventsRequestContext.getSession(),
null, timestamp, false);
@@ -276,6 +274,10 @@ public class RestServiceUtilsImpl implements
RestServiceUtils {
if ((eventsRequestContext.getChanges() &
EventService.PROFILE_UPDATED) == EventService.PROFILE_UPDATED) {
eventsRequestContext.setProfile(eventToSend.getProfile());
}
+ if (eventsRequestContext.isNewSession()) {
+
eventsRequestContext.getSession().getOriginEventIds().add(eventToSend.getItemId());
+
eventsRequestContext.getSession().getOriginEventTypes().add(eventToSend.getEventType());
+ }
if ((eventsRequestContext.getChanges() &
EventService.ERROR) == EventService.ERROR) {
//Don't count the event that failed
eventsRequestContext.setProcessedItems(eventsRequestContext.getProcessedItems()
- 1);
@@ -284,6 +286,7 @@ public class RestServiceUtilsImpl implements
RestServiceUtils {
}
}
}
+
}
return eventsRequestContext;
diff --git
a/rest/src/main/java/org/apache/unomi/utils/EventsRequestContext.java
b/rest/src/main/java/org/apache/unomi/utils/EventsRequestContext.java
index 188f42da2..679887568 100644
--- a/rest/src/main/java/org/apache/unomi/utils/EventsRequestContext.java
+++ b/rest/src/main/java/org/apache/unomi/utils/EventsRequestContext.java
@@ -35,6 +35,8 @@ public class EventsRequestContext {
private Date timestamp;
private Profile profile;
private Session session;
+
+ private boolean newSession = false;
private HttpServletRequest request;
private HttpServletResponse response;
private int changes;
@@ -79,6 +81,14 @@ public class EventsRequestContext {
this.session = session;
}
+ public boolean isNewSession() {
+ return newSession;
+ }
+
+ public void setNewSession(boolean newSession) {
+ this.newSession = newSession;
+ }
+
public int getChanges() {
return changes;
}