You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@usergrid.apache.org by to...@apache.org on 2014/10/15 21:50:45 UTC
[3/7] git commit: fix device removal, remove devices
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/two-dot-o
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);
}