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;