You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@unomi.apache.org by sh...@apache.org on 2020/07/27 08:04:37 UTC
[unomi] 05/11: Add profileId to the ContextRequest,
and create profile with this id if provided
This is an automated email from the ASF dual-hosted git repository.
shuber pushed a commit to branch unomi-1.5.x
in repository https://gitbox.apache.org/repos/asf/unomi.git
commit 1bad997aae5c7e39b3f04e48feb16c263f701b81
Author: Shir <sb...@yotpo.com>
AuthorDate: Tue Jul 7 16:59:37 2020 +0300
Add profileId to the ContextRequest, and create profile with this id if provided
(cherry picked from commit 749a52ff9345bb21ece54a1cc6efb44984387c77)
---
.../java/org/apache/unomi/api/ContextRequest.java | 18 ++++++++++++++++++
.../java/org/apache/unomi/web/ContextServlet.java | 20 ++++++++++++--------
2 files changed, 30 insertions(+), 8 deletions(-)
diff --git a/api/src/main/java/org/apache/unomi/api/ContextRequest.java b/api/src/main/java/org/apache/unomi/api/ContextRequest.java
index 6a6c79a..1a59dde 100644
--- a/api/src/main/java/org/apache/unomi/api/ContextRequest.java
+++ b/api/src/main/java/org/apache/unomi/api/ContextRequest.java
@@ -64,6 +64,7 @@ public class ContextRequest {
private Profile profileOverrides;
private Map<String, Object> sessionPropertiesOverrides;
private String sessionId;
+ private String profileId;
/**
* Retrieves the source of the context request.
@@ -242,4 +243,21 @@ public class ContextRequest {
public void setSessionId(String sessionId) {
this.sessionId = sessionId;
}
+
+ /**
+ * Retrieve the profileId passed along with the request. All events will be processed with this profileId as a
+ * default
+ * @return the identifier for the profile
+ */
+ public String getProfileId() {
+ return profileId;
+ }
+
+ /**
+ * Sets the profileId in the request.
+ * @param profileId an unique identifier for the profile
+ */
+ public void setProfileId(String profileId) {
+ this.profileId = profileId;
+ }
}
diff --git a/wab/src/main/java/org/apache/unomi/web/ContextServlet.java b/wab/src/main/java/org/apache/unomi/web/ContextServlet.java
index 3604162..1557f5a 100644
--- a/wab/src/main/java/org/apache/unomi/web/ContextServlet.java
+++ b/wab/src/main/java/org/apache/unomi/web/ContextServlet.java
@@ -107,6 +107,7 @@ public class ContextServlet extends HttpServlet {
ContextRequest contextRequest = null;
String scope = null;
String sessionId = null;
+ String profileId = null;
String stringPayload = HttpUtils.getPayload(request);
if (stringPayload != null) {
ObjectMapper mapper = CustomObjectMapper.getObjectMapper();
@@ -122,18 +123,21 @@ public class ContextServlet extends HttpServlet {
scope = contextRequest.getSource().getScope();
}
sessionId = contextRequest.getSessionId();
+ profileId = contextRequest.getProfileId();
}
if (sessionId == null) {
sessionId = request.getParameter("sessionId");
}
- // Get profile id from the cookie
- String cookieProfileId = ServletCommon.getProfileIdCookieValue(request, profileIdCookieName);
+ if (profileId == null) {
+ // Get profile id from the cookie
+ profileId = ServletCommon.getProfileIdCookieValue(request, profileIdCookieName);
+ }
- if (cookieProfileId == null && sessionId == null && personaId == null) {
+ if (profileId == null && sessionId == null && personaId == null) {
((HttpServletResponse)response).sendError(HttpServletResponse.SC_BAD_REQUEST, "Check logs for more details");
- logger.error("Couldn't find cookieProfileId, sessionId or personaId in incoming request! Stopped processing request. See debug level for more information");
+ logger.error("Couldn't find profileId, sessionId or personaId in incoming request! Stopped processing request. See debug level for more information");
if (logger.isDebugEnabled()) {
logger.debug("Request dump: {}", HttpUtils.dumpRequestInfo(request));
}
@@ -147,16 +151,16 @@ public class ContextServlet extends HttpServlet {
boolean invalidateProfile = request.getParameter("invalidateProfile") != null ?
new Boolean(request.getParameter("invalidateProfile")) : false;
- if (cookieProfileId == null || invalidateProfile) {
+ if (profileId == null || invalidateProfile) {
// no profileId cookie was found or the profile has to be invalidated, we generate a new one and create the profile in the profile service
profile = createNewProfile(null, response, timestamp);
profileCreated = true;
} else {
- profile = profileService.load(cookieProfileId);
+ profile = profileService.load(profileId);
if (profile == null) {
// this can happen if we have an old cookie but have reset the server,
// or if we merged the profiles and somehow this cookie didn't get updated.
- profile = createNewProfile(null, response, timestamp);
+ profile = createNewProfile(profileId, response, timestamp);
profileCreated = true;
} else {
Changes changesObject = checkMergedProfile(response, profile, session);
@@ -324,7 +328,7 @@ public class ContextServlet extends HttpServlet {
}
private Changes handleRequest(ContextRequest contextRequest, Session session, Profile profile, ContextResponse data,
- ServletRequest request, ServletResponse response, Date timestamp) {
+ ServletRequest request, ServletResponse response, Date timestamp) {
Changes changes = ServletCommon.handleEvents(contextRequest.getEvents(), session, profile, request, response, timestamp,
privacyService, eventService);
data.setProcessedEvents(changes.getProcessedItems());