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 2017/02/28 11:27:24 UTC
incubator-unomi git commit: UNOMI-79 : Implement save persona with
sessions.
Repository: incubator-unomi
Updated Branches:
refs/heads/master 26db159f0 -> 585d427ba
UNOMI-79 : Implement save persona with sessions.
Project: http://git-wip-us.apache.org/repos/asf/incubator-unomi/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-unomi/commit/585d427b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-unomi/tree/585d427b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-unomi/diff/585d427b
Branch: refs/heads/master
Commit: 585d427ba9dfa18d3a9a8e1e1cf25c3de6cef1d7
Parents: 26db159
Author: rizak <ri...@gmail.com>
Authored: Mon Feb 27 16:23:02 2017 +0100
Committer: rizak <ri...@gmail.com>
Committed: Mon Feb 27 16:23:02 2017 +0100
----------------------------------------------------------------------
.../apache/unomi/api/PersonaWithSessions.java | 4 ++--
.../unomi/api/services/ProfileService.java | 8 +++++++
.../unomi/rest/ProfileServiceEndPoint.java | 12 ++++++++++
.../services/services/ProfileServiceImpl.java | 23 ++++++++++++++++++++
4 files changed, 45 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/585d427b/api/src/main/java/org/apache/unomi/api/PersonaWithSessions.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/unomi/api/PersonaWithSessions.java b/api/src/main/java/org/apache/unomi/api/PersonaWithSessions.java
index 64b6a85..18483a7 100644
--- a/api/src/main/java/org/apache/unomi/api/PersonaWithSessions.java
+++ b/api/src/main/java/org/apache/unomi/api/PersonaWithSessions.java
@@ -54,6 +54,6 @@ public class PersonaWithSessions {
@XmlTransient
public PersonaSession getLastSession() {
- return sessions.get(0);
+ return sessions.size()>0?sessions.get(0):null;
}
-}
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/585d427b/api/src/main/java/org/apache/unomi/api/services/ProfileService.java
----------------------------------------------------------------------
diff --git a/api/src/main/java/org/apache/unomi/api/services/ProfileService.java b/api/src/main/java/org/apache/unomi/api/services/ProfileService.java
index 3422054..f400746 100644
--- a/api/src/main/java/org/apache/unomi/api/services/ProfileService.java
+++ b/api/src/main/java/org/apache/unomi/api/services/ProfileService.java
@@ -227,6 +227,14 @@ public interface ProfileService {
PartialList<Session> getPersonaSessions(String personaId, int offset, int size, String sortBy);
/**
+ * Save a persona with its sessions.
+ *
+ * @param personaToSave the persona object containing all the persona information and sessions
+ */
+ PersonaWithSessions savePersonaWithSessions(PersonaWithSessions personaToSave);
+
+
+ /**
* Retrieves all the property types associated with the specified target.
*
* TODO: move to a different class
http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/585d427b/rest/src/main/java/org/apache/unomi/rest/ProfileServiceEndPoint.java
----------------------------------------------------------------------
diff --git a/rest/src/main/java/org/apache/unomi/rest/ProfileServiceEndPoint.java b/rest/src/main/java/org/apache/unomi/rest/ProfileServiceEndPoint.java
index 260e7a1..3b234b2 100644
--- a/rest/src/main/java/org/apache/unomi/rest/ProfileServiceEndPoint.java
+++ b/rest/src/main/java/org/apache/unomi/rest/ProfileServiceEndPoint.java
@@ -306,6 +306,18 @@ public class ProfileServiceEndPoint {
}
/**
+ * Save the posted persona with its sessions
+ *
+ * @param personaWithSessions the persona to save with its sessions.
+ * @return a {@link PersonaWithSessions} instance with the persona identified by the specified identifier and all its associated sessions
+ */
+ @POST
+ @Path("/personasWithSessions")
+ public PersonaWithSessions savePersonaWithSessions(PersonaWithSessions personaWithSessions) {
+ return profileService.savePersonaWithSessions(personaWithSessions);
+ }
+
+ /**
* Persists the specified {@link Persona} in the context server.
*
* @param persona the persona to persist
http://git-wip-us.apache.org/repos/asf/incubator-unomi/blob/585d427b/services/src/main/java/org/apache/unomi/services/services/ProfileServiceImpl.java
----------------------------------------------------------------------
diff --git a/services/src/main/java/org/apache/unomi/services/services/ProfileServiceImpl.java b/services/src/main/java/org/apache/unomi/services/services/ProfileServiceImpl.java
index efe1d86..4aed515 100644
--- a/services/src/main/java/org/apache/unomi/services/services/ProfileServiceImpl.java
+++ b/services/src/main/java/org/apache/unomi/services/services/ProfileServiceImpl.java
@@ -683,6 +683,29 @@ public class ProfileServiceImpl implements ProfileService, SynchronousBundleList
return persistenceService.query("profileId", personaId, sortBy, Session.class, offset, size);
}
+ public PersonaWithSessions savePersonaWithSessions(PersonaWithSessions personaToSave){
+ if(personaToSave !=null){
+ //Generate a UUID if no itemId is set on the persona
+ if(personaToSave.getPersona().getItemId() == null){
+ personaToSave.getPersona().setItemId("persona-"+UUID.randomUUID().toString());
+ }
+ boolean savedPersona = persistenceService.save(personaToSave.getPersona());
+ //Browse persona sessions
+ List<PersonaSession> sessions = personaToSave.getSessions();
+ for (PersonaSession session : sessions) {
+ //Generate a UUID if no itemId is set on the session
+ if(session.getItemId() == null){
+ session.setItemId(UUID.randomUUID().toString());
+ }
+ //link the session to the persona
+ session.setProfile(personaToSave.getPersona());
+ persistenceService.save(session);
+ }
+ return personaToSave;
+ }
+ return null;
+ }
+
private void loadPredefinedPersonas(BundleContext bundleContext) {
if (bundleContext == null) {
return;