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/06/14 17:14:50 UTC

[11/44] usergrid git commit: Test for doubly nested field, plus some formatting changes.

Test for doubly nested field, plus some formatting changes.


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

Branch: refs/heads/usergrid-1268-akka-211
Commit: 0b4162035ee7d54199bd2250c2b3ac31354516b1
Parents: 3eec8e5
Author: Dave Johnson <sn...@apache.org>
Authored: Thu May 19 08:57:42 2016 -0400
Committer: Dave Johnson <sn...@apache.org>
Committed: Thu May 19 08:57:42 2016 -0400

----------------------------------------------------------------------
 .../read/search/CandidateEntityFilter.java      | 16 +++++++-----
 .../apache/usergrid/persistence/IndexIT.java    | 27 +++++++++++++++-----
 2 files changed, 30 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/usergrid/blob/0b416203/stack/core/src/main/java/org/apache/usergrid/corepersistence/pipeline/read/search/CandidateEntityFilter.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/pipeline/read/search/CandidateEntityFilter.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/pipeline/read/search/CandidateEntityFilter.java
index 261259b..e02e6c7 100644
--- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/pipeline/read/search/CandidateEntityFilter.java
+++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/pipeline/read/search/CandidateEntityFilter.java
@@ -52,9 +52,9 @@ import rx.Observable;
 
 
 /**
- * Loads entities from an incoming CandidateResult emissions into entities, then streams them on
- * performs internal buffering for efficiency.  Note that all entities may not be emitted if our load crosses page boundaries.  It is up to the
- * collector to determine when to stop streaming entities.
+ * Loads entities from an incoming CandidateResult emissions into entities, then streams them on performs internal
+ * buffering for efficiency.  Note that all entities may not be emitted if our load crosses page boundaries.
+ * It is up to the collector to determine when to stop streaming entities.
  */
 public class CandidateEntityFilter extends AbstractFilter<FilterResult<Candidate>, FilterResult<Entity>> {
 
@@ -93,11 +93,12 @@ public class CandidateEntityFilter extends AbstractFilter<FilterResult<Candidate
             entityCollectionManagerFactory.createCollectionManager( applicationScope );
 
 
-        final EntityIndex applicationIndex =
-            entityIndexFactory.createEntityIndex(indexLocationStrategyFactory.getIndexLocationStrategy(applicationScope) );
+        final EntityIndex applicationIndex = entityIndexFactory
+            .createEntityIndex(indexLocationStrategyFactory.getIndexLocationStrategy(applicationScope) );
 
         //buffer them to get a page size we can make 1 network hop
-        final Observable<FilterResult<Entity>> searchIdSetObservable = candidateResultsObservable.buffer( pipelineContext.getLimit() )
+        final Observable<FilterResult<Entity>> searchIdSetObservable =
+            candidateResultsObservable.buffer( pipelineContext.getLimit() )
 
             //load them
             .flatMap( candidateResults -> {
@@ -198,7 +199,8 @@ public class CandidateEntityFilter extends AbstractFilter<FilterResult<Candidate
 
 
     /**
-     * Our collector to collect entities.  Not quite a true collector, but works within our operational flow as this state is mutable and difficult to represent functionally
+     * Our collector to collect entities.  Not quite a true collector, but works within our operational
+     * flow as this state is mutable and difficult to represent functionally
      */
     private static final class EntityVerifier {
 

http://git-wip-us.apache.org/repos/asf/usergrid/blob/0b416203/stack/core/src/test/java/org/apache/usergrid/persistence/IndexIT.java
----------------------------------------------------------------------
diff --git a/stack/core/src/test/java/org/apache/usergrid/persistence/IndexIT.java b/stack/core/src/test/java/org/apache/usergrid/persistence/IndexIT.java
index 3b9f95a..aaf4c33 100644
--- a/stack/core/src/test/java/org/apache/usergrid/persistence/IndexIT.java
+++ b/stack/core/src/test/java/org/apache/usergrid/persistence/IndexIT.java
@@ -477,6 +477,10 @@ public class IndexIT extends AbstractCoreIT {
                 put("xfactor", 5.1);
                 put("rando", "bar");
                 put("mondo", "2000");
+                put("frosting", "chocolate");
+                put("misc", new HashMap() {{
+                    put("range", "open");
+                }});
             }});
         }};
         em.create("names", entity1);
@@ -488,12 +492,17 @@ public class IndexIT extends AbstractCoreIT {
                 put("xfactor", 5.1);
                 put("rando", "bar");
                 put("mondo", "2001");
+                put("frosting", "orange");
+                put("misc", new HashMap() {{
+                    put("range", "open");
+                }});
             }});
         }};
         em.create("names", entity2);
 
         app.refreshIndex();
 
+        // simple single-field select mapping
         {
             Query query = Query.fromQL("select status where status = 'pickled'");
             Results r = em.searchCollection( em.getApplicationRef(), "names", query );
@@ -502,6 +511,7 @@ public class IndexIT extends AbstractCoreIT {
             assertTrue(first.getDynamicProperties().size() == 2);
         }
 
+        // simple single-field plus nested field select mapping
         {
             Query query = Query.fromQL( "select status, data.rando where data.rando = 'bar'" );
             Results r = em.searchCollection( em.getApplicationRef(), "names", query );
@@ -518,23 +528,28 @@ public class IndexIT extends AbstractCoreIT {
             assertTrue( first.getDynamicProperties().size() == 3 );
         }
 
+        // multiple nested fields with one doubly-nesed field
         {
-            //  query for only one bogus field name should return empty entities
-            Query query = Query.fromQL( "select data.rando,data.mondo where status = 'pickled'" );
+            Query query = Query.fromQL( "select data.rando, data.mondo, data.misc.range where status = 'pickled'" );
             Results r = em.searchCollection( em.getApplicationRef(), "names", query );
             assertTrue( r.getEntities() != null && r.getEntities().size() == 2 );
 
             Entity first = r.getEntities().get( 0 );
 
-            assertNotNull( first.getProperty("data") );
-            assertEquals( ((Map<String, Object>)first.getProperty("data")).get("rando"), "bar" );
-            assertEquals( ((Map<String, Object>)first.getProperty("data")).get("mondo"), "2001" );
+            Map<String, Object> data = ((Map<String, Object>)first.getProperty("data"));
+            assertNotNull( data );
+            assertEquals( data.get("rando"), "bar" );
+            assertEquals( data.get("mondo"), "2001" );
+            assertNull( data.get("frosting") );
+
+            Map<String, Object> misc = (Map<String, Object>)data.get("misc");
+            assertEquals( misc.get("range"), "open" );
 
             assertTrue( first.getDynamicProperties().size() == 2 );
         }
 
+        //  query for one bogus field name should return empty entities
         {
-            //  query for only one bogus field name should return empty entities
             Query query = Query.fromQL( "select data.bogusfieldname where status = 'pickled'" );
             Results r = em.searchCollection( em.getApplicationRef(), "names", query );
             assertTrue( r.getEntities() != null && r.getEntities().size() == 2 );