You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@usergrid.apache.org by sn...@apache.org on 2016/02/18 16:53:28 UTC

[80/89] usergrid git commit: USERGRID-1124

USERGRID-1124


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

Branch: refs/heads/asf-site
Commit: d4c7a3ca861752cb953076dc27b8cb46baf2c8f2
Parents: 91d2a91
Author: Michael Russo <mi...@gmail.com>
Authored: Wed Feb 17 13:04:21 2016 -0800
Committer: Michael Russo <mi...@gmail.com>
Committed: Wed Feb 17 13:04:21 2016 -0800

----------------------------------------------------------------------
 .../corepersistence/CpEntityManager.java        | 27 +++++++++++++++
 .../usergrid/persistence/EntityManager.java     |  2 ++
 .../services/AbstractCollectionService.java     | 36 +++-----------------
 .../usergrid/services/CollectionServiceIT.java  | 16 +++++++++
 4 files changed, 49 insertions(+), 32 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/usergrid/blob/d4c7a3ca/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpEntityManager.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpEntityManager.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpEntityManager.java
index a7cb8f4..6c2ef0b 100644
--- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpEntityManager.java
+++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/CpEntityManager.java
@@ -825,6 +825,33 @@ public class CpEntityManager implements EntityManager {
         return convertMvccEntityToEntity( fieldSet.getEntity( uniqueLookupRepairField ).getEntity().get() );
     }
 
+    @Override
+    public UUID getUniqueIdFromAlias( String collectionType, String aliasType ){
+
+        String collName = Schema.defaultCollectionName( collectionType );
+        String propertyName = Schema.getDefaultSchema().aliasProperty( collName );
+        StringField uniqueLookupRepairField =  new StringField( propertyName, aliasType);
+
+        Observable<FieldSet> fieldSetObservable = ecm.getEntitiesFromFields(
+            Inflector.getInstance().singularize( collectionType ), Collections.singletonList(uniqueLookupRepairField));
+
+        if(fieldSetObservable == null){
+
+            if (logger.isDebugEnabled()) {
+                logger.debug("Couldn't return the observable based on unique entities.");
+            }
+
+            return null;
+        }
+
+        FieldSet fieldSet = fieldSetObservable.toBlocking().last();
+        if(fieldSet.isEmpty()) {
+            return null;
+        }
+
+        return fieldSet.getEntity( uniqueLookupRepairField ).getEntity().get().getId().getUuid();
+    }
+
 
 
 

http://git-wip-us.apache.org/repos/asf/usergrid/blob/d4c7a3ca/stack/core/src/main/java/org/apache/usergrid/persistence/EntityManager.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/persistence/EntityManager.java b/stack/core/src/main/java/org/apache/usergrid/persistence/EntityManager.java
index 7725202..1a844f6 100644
--- a/stack/core/src/main/java/org/apache/usergrid/persistence/EntityManager.java
+++ b/stack/core/src/main/java/org/apache/usergrid/persistence/EntityManager.java
@@ -704,6 +704,8 @@ public interface EntityManager {
 
     public Entity getUniqueEntityFromAlias( String aliasType, String aliasValue );
 
+    public UUID getUniqueIdFromAlias( String aliasType, String aliasValue );
+
 
     /**
      * Get the outgoing edge types where the entity ref is the source in the graph

http://git-wip-us.apache.org/repos/asf/usergrid/blob/d4c7a3ca/stack/services/src/main/java/org/apache/usergrid/services/AbstractCollectionService.java
----------------------------------------------------------------------
diff --git a/stack/services/src/main/java/org/apache/usergrid/services/AbstractCollectionService.java b/stack/services/src/main/java/org/apache/usergrid/services/AbstractCollectionService.java
index fbb4cc6..0ad751a 100644
--- a/stack/services/src/main/java/org/apache/usergrid/services/AbstractCollectionService.java
+++ b/stack/services/src/main/java/org/apache/usergrid/services/AbstractCollectionService.java
@@ -144,14 +144,10 @@ public class AbstractCollectionService extends AbstractService {
     @Override
     public ServiceResults getItemByName( ServiceContext context, String name ) throws Exception {
 
-        String nameProperty = Schema.getDefaultSchema().aliasProperty( getEntityType() );
-        if ( nameProperty == null ) {
-            nameProperty = "name";
-        }
-
-        Entity entity = em.getUniqueEntityFromAlias( getEntityType(), name );
+        // just get the UUID and then getItemById such that same results are being returned in both cases
+        UUID entityId = em.getUniqueIdFromAlias( getEntityType(), name );
 
-        if ( entity == null ) {
+        if ( entityId == null ) {
 
             if (logger.isTraceEnabled()) {
                 logger.trace("miss on entityType: {} with name: {}", getEntityType(), name);
@@ -159,35 +155,11 @@ public class AbstractCollectionService extends AbstractService {
 
             String msg = "Cannot find entity with name: "+name;
             throw new EntityNotFoundException( msg );
-        }
-
-        // the context of the entity they're trying to load isn't owned by the owner
-        // in the path, don't return it
-        if ( !em.isCollectionMember( context.getOwner(), context.getCollectionName(), entity ) ) {
-            logger.info( "Someone tried to GET entity {} they don't own. Entity name {} with owner {}",
-                    getEntityType(), name, context.getOwner()
-            );
-            throw new ServiceResourceNotFoundException( context );
-        }
 
-        if ( !context.moreParameters() ) {
-            entity = importEntity( context, entity );
         }
 
-        checkPermissionsForEntity( context, entity );
-
-    /*
-     * Level level = Level.REFS; if (isEmpty(parameters)) {
-     * level = Level.ALL_PROPERTIES; }
-     *
-     * Results results = em.searchCollectionForProperty(owner,
-     * getCollectionName(), null, nameProperty, name, null, null, 1, level);
-     * EntityRef entity = results.getRef();
-     */
-
-        List<ServiceRequest> nextRequests = context.getNextServiceRequests( entity );
+        return getItemById( context, entityId, false);
 
-        return new ServiceResults( this, context, Type.COLLECTION, Results.fromRef( entity ), null, nextRequests );
     }
 
 

http://git-wip-us.apache.org/repos/asf/usergrid/blob/d4c7a3ca/stack/services/src/test/java/org/apache/usergrid/services/CollectionServiceIT.java
----------------------------------------------------------------------
diff --git a/stack/services/src/test/java/org/apache/usergrid/services/CollectionServiceIT.java b/stack/services/src/test/java/org/apache/usergrid/services/CollectionServiceIT.java
index b9f7105..c071d1f 100644
--- a/stack/services/src/test/java/org/apache/usergrid/services/CollectionServiceIT.java
+++ b/stack/services/src/test/java/org/apache/usergrid/services/CollectionServiceIT.java
@@ -144,6 +144,22 @@ public class CollectionServiceIT extends AbstractServiceIT {
         }
     }
 
+    @Test
+    public void testSizeReturnedInMetadata() throws Exception {
+
+        app.put( "name", "Tom" );
+        Entity cat = app.testRequest( ServiceAction.POST, 1, "cats" ).getEntity();
+        assertNotNull( cat );
+
+        Entity getEntityByName = app.testRequest( ServiceAction.GET, 1, "cats", cat.getName() ).getEntity();
+        Entity getEntityByUUID = app.testRequest( ServiceAction.GET, 1, "cats", cat.getUuid() ).getEntity();
+
+        assertNotNull(getEntityByName.getSize());
+        assertNotNull(getEntityByUUID.getSize());
+
+        app.clear();
+
+    }
 
     @Test
     public void testGenericEntityCollectionWithIdName() throws Exception {