You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@usergrid.apache.org by sf...@apache.org on 2014/10/15 00:44:16 UTC

[1/5] git commit: adding device deletion

Repository: incubator-usergrid
Updated Branches:
  refs/heads/delete-device-connections [created] 9c1c57c66


adding device deletion


Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/bf9f69fb
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/bf9f69fb
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/bf9f69fb

Branch: refs/heads/delete-device-connections
Commit: bf9f69fb00d4902eed75a38e7fd45abca6ec51bf
Parents: 83de8ae
Author: Shawn Feldman <sf...@apache.org>
Authored: Tue Oct 14 14:50:27 2014 -0600
Committer: Shawn Feldman <sf...@apache.org>
Committed: Tue Oct 14 14:50:27 2014 -0600

----------------------------------------------------------------------
 .../services/devices/DevicesService.java        | 49 ++++++++++++++++++--
 .../services/users/devices/DevicesService.java  | 33 +++++++++++++
 2 files changed, 77 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/bf9f69fb/stack/services/src/main/java/org/apache/usergrid/services/devices/DevicesService.java
----------------------------------------------------------------------
diff --git a/stack/services/src/main/java/org/apache/usergrid/services/devices/DevicesService.java b/stack/services/src/main/java/org/apache/usergrid/services/devices/DevicesService.java
index 3376b15..93e895f 100644
--- a/stack/services/src/main/java/org/apache/usergrid/services/devices/DevicesService.java
+++ b/stack/services/src/main/java/org/apache/usergrid/services/devices/DevicesService.java
@@ -17,13 +17,26 @@
 package org.apache.usergrid.services.devices;
 
 
+import java.util.ArrayList;
+import java.util.List;
 import java.util.UUID;
 
+import org.apache.shiro.SecurityUtils;
+import org.apache.usergrid.persistence.ConnectionRef;
+import org.apache.usergrid.persistence.EntityRef;
+import org.apache.usergrid.persistence.Results;
+import org.apache.usergrid.persistence.SimpleEntityRef;
+import org.apache.usergrid.persistence.entities.Device;
+import org.apache.usergrid.persistence.entities.User;
+import org.apache.usergrid.persistence.index.query.Identifier;
+import org.apache.usergrid.persistence.index.query.Query;
+import org.apache.usergrid.security.shiro.utils.SubjectUtils;
+import org.apache.usergrid.services.*;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.apache.usergrid.services.AbstractCollectionService;
-import org.apache.usergrid.services.ServiceContext;
-import org.apache.usergrid.services.ServiceResults;
+import rx.Scheduler;
+import rx.functions.Func1;
+import rx.schedulers.Schedulers;
 
 
 public class DevicesService extends AbstractCollectionService {
@@ -39,14 +52,40 @@ public class DevicesService extends AbstractCollectionService {
 
     @Override
     public ServiceResults putItemById( ServiceContext context, UUID id ) throws Exception {
-        logger.debug( "Registering device {}", id );
+        logger.debug("Registering device {}", id);
         return super.putItemById( context, id );
     }
 
 
     @Override
     public ServiceResults postItemById( ServiceContext context, UUID id ) throws Exception {
-        logger.info( "Attempting to connect an entity to device {}", id );
+        logger.info("Attempting to connect an entity to device {}", id);
         return super.postItemById( context, id );
     }
+
+    protected void deleteEntityConnection(EntityRef entityRef){
+        if(entityRef == null) {
+            return;
+        }
+        try {
+            List<ConnectionRef> connections = new ArrayList<ConnectionRef>();
+            List<ConnectionRef> refs = em.getConnectedEntities(entityRef, "devices", "users", Query.Level.IDS).getConnections();
+            if(refs!=null) {
+                connections.addAll(refs);
+            }
+            refs = em.getConnectingEntities(entityRef,"users","devices", Query.Level.IDS).getConnections();
+            if(refs!=null) {
+                connections.addAll(refs);
+            }
+            for(ConnectionRef connectionRef : connections) {
+                try {
+                    em.deleteConnection(connectionRef);
+                } catch (Exception e) {
+                    logger.error("Failed to delete connection " + connectionRef.toString(), e);
+                }
+            }
+        }catch (Exception e){
+            logger.error("failed to get connection",e);
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/bf9f69fb/stack/services/src/main/java/org/apache/usergrid/services/users/devices/DevicesService.java
----------------------------------------------------------------------
diff --git a/stack/services/src/main/java/org/apache/usergrid/services/users/devices/DevicesService.java b/stack/services/src/main/java/org/apache/usergrid/services/users/devices/DevicesService.java
index 672de8f..bdcd574 100644
--- a/stack/services/src/main/java/org/apache/usergrid/services/users/devices/DevicesService.java
+++ b/stack/services/src/main/java/org/apache/usergrid/services/users/devices/DevicesService.java
@@ -17,9 +17,15 @@
 package org.apache.usergrid.services.users.devices;
 
 
+import org.apache.usergrid.persistence.EntityRef;
+import org.apache.usergrid.persistence.SimpleEntityRef;
+import org.apache.usergrid.services.ServiceContext;
+import org.apache.usergrid.services.ServiceResults;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.util.UUID;
+
 
 public class DevicesService extends org.apache.usergrid.services.devices.DevicesService {
 
@@ -30,4 +36,31 @@ public class DevicesService extends org.apache.usergrid.services.devices.Devices
         super();
         logger.debug( "/users/*/devices" );
     }
+
+    @Override
+    public ServiceResults putItemById( ServiceContext context, UUID id ) throws Exception {
+        logger.debug("Registering device {}", id);
+        unregisterDeviceToUsers(id);
+        ServiceResults results = super.putItemById( context, id );
+        return results;
+    }
+
+
+    @Override
+    public ServiceResults postItemById( ServiceContext context, UUID id ) throws Exception {
+        logger.info( "Attempting to connect an entity to device {}", id );
+        unregisterDeviceToUsers(id);
+        ServiceResults results = super.postItemById( context, id );
+        return results;
+    }
+
+    protected void unregisterDeviceToUsers(UUID deviceId){
+        try {
+            EntityRef device = new SimpleEntityRef("device",deviceId);
+            deleteEntityConnection(device);
+        } catch (Exception e) {
+            logger.error("Failed to delete connection for " + deviceId.toString(), e);
+        }
+
+    }
 }


[5/5] git commit: register devices

Posted by sf...@apache.org.
register devices


Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/9c1c57c6
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/9c1c57c6
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/9c1c57c6

Branch: refs/heads/delete-device-connections
Commit: 9c1c57c66da5e53d9cb1086daac77437518ee74a
Parents: dc9211b
Author: Shawn Feldman <sf...@apache.org>
Authored: Tue Oct 14 16:43:16 2014 -0600
Committer: Shawn Feldman <sf...@apache.org>
Committed: Tue Oct 14 16:43:16 2014 -0600

----------------------------------------------------------------------
 .../apns/NotificationsServiceIT.java              | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/9c1c57c6/stack/services/src/test/java/org/apache/usergrid/services/notifications/apns/NotificationsServiceIT.java
----------------------------------------------------------------------
diff --git a/stack/services/src/test/java/org/apache/usergrid/services/notifications/apns/NotificationsServiceIT.java b/stack/services/src/test/java/org/apache/usergrid/services/notifications/apns/NotificationsServiceIT.java
index aef4da5..45bd1bb 100644
--- a/stack/services/src/test/java/org/apache/usergrid/services/notifications/apns/NotificationsServiceIT.java
+++ b/stack/services/src/test/java/org/apache/usergrid/services/notifications/apns/NotificationsServiceIT.java
@@ -778,6 +778,22 @@ public class NotificationsServiceIT extends AbstractServiceNotificationIT {
     }
 
     @Test
+    public void deviceTest() throws Exception{
+        app.clear();
+        Entity e = app.testRequest(ServiceAction.POST, 1, "users",user2.getUuid(),"devices",device1.getUuid()).getEntity();
+        app.clear();
+        e = app.testRequest(ServiceAction.POST, 1, "users",user1.getUuid(),"devices",device1.getUuid()).getEntity();
+        app.clear();
+        e = app.testRequest(ServiceAction.POST, 1, "users",user1.getUuid(),"devices",device2.getUuid()).getEntity();
+
+        List device1Users = app.getEm().getCollection(device1,"users",null,100, Query.Level.REFS,false).getEntities();
+        assertEquals(device1Users.size(),1);
+        List user1Devices = app.getEm().getCollection(user1,"devices",null,100, Query.Level.REFS,false).getEntities();
+        assertEquals(user1Devices.size(),2);
+
+    }
+
+    @Test
     public void batchTest() throws Exception {
 
         final int NUM_DEVICES = 50;
@@ -881,6 +897,8 @@ public class NotificationsServiceIT extends AbstractServiceNotificationIT {
         String payload = builder.buildWithDefaultMaximumLength();
         return payload;
     }
+
+
     // todo: can't do the following tests here. do it in the REST tier...
     // private Notification postNotification(String path) throws Exception {
     // HashMap<String, Object> properties = new LinkedHashMap<String, Object>();


[2/5] git commit: Merge branch 'two-dot-o' of https://git-wip-us.apache.org/repos/asf/incubator-usergrid into delete-device-connections

Posted by sf...@apache.org.
Merge branch 'two-dot-o' of https://git-wip-us.apache.org/repos/asf/incubator-usergrid into delete-device-connections


Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/d3cce6e8
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/d3cce6e8
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/d3cce6e8

Branch: refs/heads/delete-device-connections
Commit: d3cce6e8887feaa50e2cfca9dbc4c1e577ad3798
Parents: bf9f69f 27db106
Author: Shawn Feldman <sf...@apache.org>
Authored: Tue Oct 14 14:50:50 2014 -0600
Committer: Shawn Feldman <sf...@apache.org>
Committed: Tue Oct 14 14:50:50 2014 -0600

----------------------------------------------------------------------
 .../corepersistence/CpEntityManagerFactory.java       | 13 ++++++++-----
 .../persistence/queue/impl/SQSQueueManagerImpl.java   | 14 +++++++++++---
 .../notifications/ApplicationQueueManager.java        |  5 +++--
 .../services/notifications/NotificationsService.java  |  2 +-
 .../services/notifications/QueueListener.java         |  2 +-
 .../apache/usergrid/services/TestQueueManager.java    |  4 +---
 .../services/notifications/NotifiersServiceIT.java    |  1 +
 7 files changed, 26 insertions(+), 15 deletions(-)
----------------------------------------------------------------------



[3/5] git commit: fix device removal, remove devices

Posted by sf...@apache.org.
fix device removal, remove devices


Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/72fc2bda
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/72fc2bda
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/72fc2bda

Branch: refs/heads/delete-device-connections
Commit: 72fc2bda35fe689168242c21bbcf6c086c470f3f
Parents: d3cce6e
Author: Shawn Feldman <sf...@apache.org>
Authored: Tue Oct 14 16:17:37 2014 -0600
Committer: Shawn Feldman <sf...@apache.org>
Committed: Tue Oct 14 16:17:37 2014 -0600

----------------------------------------------------------------------
 .../corepersistence/CpRelationManager.java      | 10 +++--
 .../services/devices/DevicesService.java        | 42 ++++++++++----------
 2 files changed, 27 insertions(+), 25 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/72fc2bda/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpRelationManager.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpRelationManager.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpRelationManager.java
index 49477e2..2a790ab 100644
--- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpRelationManager.java
+++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpRelationManager.java
@@ -18,6 +18,7 @@ package org.apache.usergrid.corepersistence;
 
 import static me.prettyprint.hector.api.factory.HFactory.createMutator;
 
+import com.clearspring.analytics.hash.MurmurHash;
 import com.yammer.metrics.annotation.Metered;
 import java.nio.ByteBuffer;
 import java.util.AbstractMap;
@@ -306,7 +307,7 @@ public class CpRelationManager implements RelationManager {
         GraphManager gm = managerCache.getGraphManager(applicationScope);
 
         Iterator<String> edgeTypes = gm.getEdgeTypesToTarget( new SimpleSearchEdgeType( 
-            cpHeadEntity.getId(), edgeType, null) ).toBlockingObservable().getIterator();
+            cpHeadEntity.getId(), edgeType, null) ).toBlocking().getIterator();
 
         logger.debug("getContainers(): "
                 + "Searched for edges of type {}\n   to target {}:{}\n   in scope {}\n   found: {}", 
@@ -809,8 +810,9 @@ public class CpRelationManager implements RelationManager {
         Edge collectionToItemEdge = new SimpleEdge( 
             cpHeadEntity.getId(),
              CpNamingUtils.getEdgeTypeFromCollectionName( collName),
-            memberEntity.getId(), 
-            memberEntity.getId().getUuid().timestamp() );
+            memberEntity.getId(),
+                UUIDUtils.getUUIDLong(memberEntity.getId().getUuid())
+            );
         gm.deleteEdge(collectionToItemEdge).toBlockingObservable().last();
 
         // remove edge from item to collection
@@ -819,7 +821,7 @@ public class CpRelationManager implements RelationManager {
                 CpNamingUtils
                         .getEdgeTypeFromCollectionName( Schema.defaultCollectionName( cpHeadEntity.getId().getType() )),
             cpHeadEntity.getId(),
-            cpHeadEntity.getId().getUuid().timestamp() );
+            UUIDUtils.getUUIDLong(cpHeadEntity.getId().getUuid()));
         gm.deleteEdge(itemToCollectionEdge).toBlockingObservable().last();
 
         // special handling for roles collection of a group

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/72fc2bda/stack/services/src/main/java/org/apache/usergrid/services/devices/DevicesService.java
----------------------------------------------------------------------
diff --git a/stack/services/src/main/java/org/apache/usergrid/services/devices/DevicesService.java b/stack/services/src/main/java/org/apache/usergrid/services/devices/DevicesService.java
index 93e895f..d1bb3db 100644
--- a/stack/services/src/main/java/org/apache/usergrid/services/devices/DevicesService.java
+++ b/stack/services/src/main/java/org/apache/usergrid/services/devices/DevicesService.java
@@ -22,10 +22,7 @@ import java.util.List;
 import java.util.UUID;
 
 import org.apache.shiro.SecurityUtils;
-import org.apache.usergrid.persistence.ConnectionRef;
-import org.apache.usergrid.persistence.EntityRef;
-import org.apache.usergrid.persistence.Results;
-import org.apache.usergrid.persistence.SimpleEntityRef;
+import org.apache.usergrid.persistence.*;
 import org.apache.usergrid.persistence.entities.Device;
 import org.apache.usergrid.persistence.entities.User;
 import org.apache.usergrid.persistence.index.query.Identifier;
@@ -34,6 +31,7 @@ import org.apache.usergrid.security.shiro.utils.SubjectUtils;
 import org.apache.usergrid.services.*;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import rx.Observable;
 import rx.Scheduler;
 import rx.functions.Func1;
 import rx.schedulers.Schedulers;
@@ -63,27 +61,29 @@ public class DevicesService extends AbstractCollectionService {
         return super.postItemById( context, id );
     }
 
-    protected void deleteEntityConnection(EntityRef entityRef){
+    protected void deleteEntityConnection(final EntityRef entityRef){
         if(entityRef == null) {
             return;
         }
         try {
-            List<ConnectionRef> connections = new ArrayList<ConnectionRef>();
-            List<ConnectionRef> refs = em.getConnectedEntities(entityRef, "devices", "users", Query.Level.IDS).getConnections();
-            if(refs!=null) {
-                connections.addAll(refs);
-            }
-            refs = em.getConnectingEntities(entityRef,"users","devices", Query.Level.IDS).getConnections();
-            if(refs!=null) {
-                connections.addAll(refs);
-            }
-            for(ConnectionRef connectionRef : connections) {
-                try {
-                    em.deleteConnection(connectionRef);
-                } catch (Exception e) {
-                    logger.error("Failed to delete connection " + connectionRef.toString(), e);
-                }
-            }
+            Results entities = em.getCollection(entityRef,"users",null,100, Query.Level.REFS,false);
+            Observable.from(entities.getEntities())
+                    .map(new Func1<Entity, Entity>() {
+                        @Override
+                        public Entity call(Entity user) {
+                            try {
+                                Results devicesResults = em.getCollection(user,"devices",null,100,Query.Level.REFS,false);
+                                List<Entity> devices = devicesResults.getEntities();
+                                for(EntityRef device : devices){
+                                    em.removeFromCollection(user, "devices",device);
+                                }
+                                em.removeFromCollection(entityRef, "users",user);
+                            } catch (Exception e) {
+                                logger.error("Failed to delete connection " + user.toString(), e);
+                            }
+                            return user;
+                        }
+                    }).toBlocking().lastOrDefault(null);
         }catch (Exception e){
             logger.error("failed to get connection",e);
         }


[4/5] git commit: adding collections test

Posted by sf...@apache.org.
adding collections test


Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/dc9211bd
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/dc9211bd
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/dc9211bd

Branch: refs/heads/delete-device-connections
Commit: dc9211bd4fdbe375f075f48b2abfc14b640fe549
Parents: 72fc2bd
Author: Shawn Feldman <sf...@apache.org>
Authored: Tue Oct 14 16:39:44 2014 -0600
Committer: Shawn Feldman <sf...@apache.org>
Committed: Tue Oct 14 16:39:44 2014 -0600

----------------------------------------------------------------------
 .../AbstractServiceNotificationIT.java          |  2 ++
 .../apns/NotificationsServiceIT.java            | 20 ++++++++++++++++++--
 2 files changed, 20 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/dc9211bd/stack/services/src/test/java/org/apache/usergrid/services/notifications/AbstractServiceNotificationIT.java
----------------------------------------------------------------------
diff --git a/stack/services/src/test/java/org/apache/usergrid/services/notifications/AbstractServiceNotificationIT.java b/stack/services/src/test/java/org/apache/usergrid/services/notifications/AbstractServiceNotificationIT.java
index f67d731..651c94f 100644
--- a/stack/services/src/test/java/org/apache/usergrid/services/notifications/AbstractServiceNotificationIT.java
+++ b/stack/services/src/test/java/org/apache/usergrid/services/notifications/AbstractServiceNotificationIT.java
@@ -63,6 +63,8 @@ public class AbstractServiceNotificationIT extends AbstractServiceIT {
         return ns;
     }
 
+
+
     protected Notification scheduleNotificationAndWait(Notification notification)
             throws Exception {
         long timeout = System.currentTimeMillis() + 60000;

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/dc9211bd/stack/services/src/test/java/org/apache/usergrid/services/notifications/apns/NotificationsServiceIT.java
----------------------------------------------------------------------
diff --git a/stack/services/src/test/java/org/apache/usergrid/services/notifications/apns/NotificationsServiceIT.java b/stack/services/src/test/java/org/apache/usergrid/services/notifications/apns/NotificationsServiceIT.java
index 935f6b6..aef4da5 100644
--- a/stack/services/src/test/java/org/apache/usergrid/services/notifications/apns/NotificationsServiceIT.java
+++ b/stack/services/src/test/java/org/apache/usergrid/services/notifications/apns/NotificationsServiceIT.java
@@ -64,6 +64,7 @@ public class NotificationsServiceIT extends AbstractServiceNotificationIT {
     private NotificationsService ns;
     QueueListener listener;
     private String  notifierName = "apNs";
+    private User user2;
 
     @BeforeClass
     public static void setup(){
@@ -114,8 +115,23 @@ public class NotificationsServiceIT extends AbstractServiceNotificationIT {
         user1.setUsername("user1");
         user1.setEmail("user1@usergrid.org");
         user1 = app.getEm().create(user1);
-        app.getEm().createConnection(user1, "devices", device1);
-        app.getEm().createConnection(user1, "devices", device2);
+
+        // create User
+         user2 = new User();
+        user2.setUsername("user2");
+        user2.setEmail("user2@usergrid.org");
+        user2 = app.getEm().create(user2);
+
+        app.clear();
+        e = app.testRequest(ServiceAction.POST, 1, "users",user2.getUuid(),"devices",device1.getUuid()).getEntity();
+        app.clear();
+        e = app.testRequest(ServiceAction.POST, 1, "users",user1.getUuid(),"devices",device1.getUuid()).getEntity();
+        List device1Users = app.getEm().getCollection(device1,"users",null,100, Query.Level.REFS,false).getEntities();
+        assertEquals(device1Users.size(),1);
+
+        app.clear();
+        e = app.testRequest(ServiceAction.POST, 1, "users",user1.getUuid(),"devices",device2.getUuid()).getEntity();
+
 
         // create Group
         group1 = new Group();