From 28d966fef1b0421660dfeeb9a70b80fbb2f92088 Mon Sep 17 00:00:00 2001 From: Shawn Feldman Date: Mon, 31 Aug 2015 16:07:58 -0600 Subject: [PATCH 1/2] added size to metadata --- .../apache/usergrid/corepersistence/CpEntityManager.java | 2 +- .../corepersistence/results/EntityQueryExecutor.java | 1 + .../org/apache/usergrid/persistence/AbstractEntity.java | 9 ++++++--- .../java/org/apache/usergrid/persistence/IndexIT.java | 6 +++--- 4 files changed, 11 insertions(+), 7 deletions(-) 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 92464f8623..d19d6e3ce6 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 @@ -2615,7 +2615,7 @@ else if ( ( v instanceof String ) && isBlank( ( String ) v ) ) { } ); } - cpEntity = ecm.write( cpEntity ).toBlocking().last(); + cpEntity = ecm.write( cpEntity ).toBlocking().last(); entity.setSize(cpEntity.getSize()); if(logger.isDebugEnabled()) { diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/results/EntityQueryExecutor.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/results/EntityQueryExecutor.java index 5e80d24407..7a8b27330e 100644 --- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/results/EntityQueryExecutor.java +++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/results/EntityQueryExecutor.java @@ -80,6 +80,7 @@ private org.apache.usergrid.persistence.Entity mapEntity( final Entity cpEntity Map entityMap = CpEntityMapUtils.toMap( cpEntity ); entity.addProperties( entityMap ); + entity.setMetadata("size", cpEntity.getSize()); return entity; } diff --git a/stack/core/src/main/java/org/apache/usergrid/persistence/AbstractEntity.java b/stack/core/src/main/java/org/apache/usergrid/persistence/AbstractEntity.java index 59106ba6c8..49d0cf90b2 100644 --- a/stack/core/src/main/java/org/apache/usergrid/persistence/AbstractEntity.java +++ b/stack/core/src/main/java/org/apache/usergrid/persistence/AbstractEntity.java @@ -98,11 +98,14 @@ public Id asId() { } @Override - public void setSize(final long size){this.size = size;} - + public void setSize(final long size){this.setMetadata("size",size);} + @JsonIgnore @Override - public long getSize(){return size;} + public long getSize() { + Object size = this.getMetadata("size"); + return size != null && size instanceof Long ? (Long) size : 0; + } @Override @EntityProperty(indexed = true, required = true, mutable = false) 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 50b0ba33a1..15c6f612dc 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 @@ -305,21 +305,21 @@ public void testEntityReduction() throws Exception { Results r = em.searchCollection( em.getApplicationRef(), "names", query ); assertTrue(r.getEntities() != null && r.getEntities().size() > 0); Entity first = r.getEntities().get(0); - assertTrue(first.getDynamicProperties().size() == 1); + assertTrue(first.getDynamicProperties().size() == 2); //should return valid values query = Query.fromQL("select uuid where status = 'pickled'"); r = em.searchCollection( em.getApplicationRef(), "names", query ); assertTrue(r.getEntities() != null && r.getEntities().size() > 0); first = r.getEntities().get(0); - assertTrue(first.getDynamicProperties().size() == 0); + assertTrue(first.getDynamicProperties().size() == 1); //should return valid values query = Query.fromQL("select uuid:myid where status = 'pickled'"); r = em.searchCollection( em.getApplicationRef(), "names", query ); assertTrue(r.getEntities() != null && r.getEntities().size() > 0); first = r.getEntities().get(0); - assertTrue(first.getDynamicProperties().size() == 0); + assertTrue(first.getDynamicProperties().size() == 1); } @Test From dad313d32208b348496a8475dfa9ad7ce13302e9 Mon Sep 17 00:00:00 2001 From: Shawn Feldman Date: Mon, 31 Aug 2015 17:30:18 -0600 Subject: [PATCH 2/2] add entity size to base entity --- .../usergrid/corepersistence/CpEntityManager.java | 6 ++---- .../corepersistence/results/EntityQueryExecutor.java | 4 +--- .../apache/usergrid/persistence/AbstractEntity.java | 12 ++++++++++-- .../java/org/apache/usergrid/persistence/Entity.java | 5 ++++- .../apache/usergrid/persistence/EntityManagerIT.java | 8 ++++---- .../cassandra/EntityManagerFactoryImplIT.java | 2 +- .../usergrid/persistence/model/entity/Entity.java | 10 ++-------- .../persistence/model/field/value/EntityObject.java | 10 ++++++++++ 8 files changed, 34 insertions(+), 23 deletions(-) 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 d19d6e3ce6..ac9d08f6e8 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 @@ -469,9 +469,7 @@ public Entity get( EntityRef entityRef ) throws Exception { Class clazz = Schema.getDefaultSchema().getEntityClass( entityRef.getType() ); Entity entity = EntityFactory.newEntity( entityRef.getUuid(), entityRef.getType(), clazz ); - entity.setProperties( CpEntityMapUtils.toMap( cpEntity ) ); - - + entity.setProperties( cpEntity ); return entity; } @@ -526,7 +524,7 @@ public A getEntity( UUID entityId, Class entityClass ) thr } A entity = EntityFactory.newEntity( entityId, type, entityClass ); - entity.setProperties( CpEntityMapUtils.toMap( cpEntity ) ); + entity.setProperties( cpEntity ); return entity; } diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/results/EntityQueryExecutor.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/results/EntityQueryExecutor.java index 7a8b27330e..808fcc6cd7 100644 --- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/results/EntityQueryExecutor.java +++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/results/EntityQueryExecutor.java @@ -78,9 +78,7 @@ private org.apache.usergrid.persistence.Entity mapEntity( final Entity cpEntity org.apache.usergrid.persistence.Entity entity = EntityFactory.newEntity( entityId.getUuid(), entityId.getType() ); - Map entityMap = CpEntityMapUtils.toMap( cpEntity ); - entity.addProperties( entityMap ); - entity.setMetadata("size", cpEntity.getSize()); + entity.setProperties( cpEntity ); return entity; } diff --git a/stack/core/src/main/java/org/apache/usergrid/persistence/AbstractEntity.java b/stack/core/src/main/java/org/apache/usergrid/persistence/AbstractEntity.java index 49d0cf90b2..2c32a6e062 100644 --- a/stack/core/src/main/java/org/apache/usergrid/persistence/AbstractEntity.java +++ b/stack/core/src/main/java/org/apache/usergrid/persistence/AbstractEntity.java @@ -27,7 +27,9 @@ import javax.xml.bind.annotation.XmlRootElement; +import org.apache.usergrid.corepersistence.util.CpEntityMapUtils; import org.apache.usergrid.persistence.annotations.EntityProperty; +import org.apache.usergrid.persistence.model.entity.EntityToMapConverter; import org.apache.usergrid.persistence.model.entity.Id; import org.apache.usergrid.persistence.model.entity.SimpleId; @@ -165,7 +167,7 @@ public Map getProperties() { @Override public final Object getProperty( String propertyName ) { - return Schema.getDefaultSchema().getEntityProperty( this, propertyName ); + return Schema.getDefaultSchema().getEntityProperty(this, propertyName); } @@ -178,7 +180,13 @@ public final void setProperty( String propertyName, Object propertyValue ) { @Override public void setProperties( Map properties ) { dynamic_properties = new TreeMap( String.CASE_INSENSITIVE_ORDER ); - addProperties( properties ); + addProperties(properties); + } + + @Override + public void setProperties(org.apache.usergrid.persistence.model.entity.Entity cpEntity){ + setProperties( CpEntityMapUtils.toMap(cpEntity) ); + this.setSize(cpEntity.getSize()); } diff --git a/stack/core/src/main/java/org/apache/usergrid/persistence/Entity.java b/stack/core/src/main/java/org/apache/usergrid/persistence/Entity.java index 5f353d910f..bbde733190 100644 --- a/stack/core/src/main/java/org/apache/usergrid/persistence/Entity.java +++ b/stack/core/src/main/java/org/apache/usergrid/persistence/Entity.java @@ -68,7 +68,9 @@ public interface Entity extends EntityRef, Comparable { @JsonIgnore public Map getProperties(); - public void setProperties( Map properties ); + void setProperties( Map properties ); + + void setProperties(org.apache.usergrid.persistence.model.entity.Entity cpEntity); public void addProperties( Map properties ); @@ -106,4 +108,5 @@ public interface Entity extends EntityRef, Comparable { @JsonIgnore long getSize(); void setSize(long size); + } diff --git a/stack/core/src/test/java/org/apache/usergrid/persistence/EntityManagerIT.java b/stack/core/src/test/java/org/apache/usergrid/persistence/EntityManagerIT.java index 1fc97e939c..d81cad2c3b 100644 --- a/stack/core/src/test/java/org/apache/usergrid/persistence/EntityManagerIT.java +++ b/stack/core/src/test/java/org/apache/usergrid/persistence/EntityManagerIT.java @@ -159,7 +159,7 @@ public void testCreateAndGet() throws Exception { assertTrue( "thing name should start with \"thing\"", property.toString().startsWith( "thing" ) ); Map properties = en.getProperties(); - assertEquals( "number of properties wrong", 5, properties.size() ); + assertEquals( "number of properties wrong", 6, properties.size() ); } i = 0; @@ -241,7 +241,7 @@ public void testProperties() throws Exception { Map props = em.getProperties( entity ); assertNotNull( "properties should not be null", props ); - assertEquals( "wrong number of properties", 8, props.size() ); + assertEquals( "wrong number of properties", 9, props.size() ); assertEquals( "wrong value for property alpha", ( long ) 1, props.get( "alpha" ) ); assertEquals( "wrong value for property beta", ( long ) 2, props.get( "beta" ) ); @@ -255,7 +255,7 @@ public void testProperties() throws Exception { props = em.getProperties( entity ); assertNotNull( "properties should not be null", props ); - assertEquals( "wrong number of properties", 7, props.size() ); + assertEquals( "wrong number of properties", 8, props.size() ); } @@ -370,7 +370,7 @@ public void testJson() throws Exception { Map props = em.getProperties( entity ); assertNotNull( "properties should not be null", props ); - assertEquals( "wrong number of properties", 6, props.size() ); + assertEquals( "wrong number of properties", 7, props.size() ); json = ( Map ) props.get( "json" ); assertEquals( "wrong size for property alpha", 3, json.size() ); diff --git a/stack/core/src/test/java/org/apache/usergrid/persistence/cassandra/EntityManagerFactoryImplIT.java b/stack/core/src/test/java/org/apache/usergrid/persistence/cassandra/EntityManagerFactoryImplIT.java index ec5688d458..abd55eab47 100644 --- a/stack/core/src/test/java/org/apache/usergrid/persistence/cassandra/EntityManagerFactoryImplIT.java +++ b/stack/core/src/test/java/org/apache/usergrid/persistence/cassandra/EntityManagerFactoryImplIT.java @@ -266,7 +266,7 @@ public void testCreateAndGet() throws Exception { assertTrue( "thing name should start with \"thing\"", property.toString().startsWith( "thing" ) ); Map properties = en.getProperties(); - assertEquals( "number of properties wrong", 5, properties.size() ); + assertEquals( "number of properties wrong", 6, properties.size() ); } i = 0; diff --git a/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/entity/Entity.java b/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/entity/Entity.java index 013b37ad0f..b915e4fd30 100644 --- a/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/entity/Entity.java +++ b/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/entity/Entity.java @@ -59,8 +59,7 @@ public class Entity extends EntityObject { @JsonProperty private UUID version; - @JsonIgnore - private long size; + /** @@ -158,10 +157,5 @@ public boolean hasVersion(){ return getVersion() != null; } - public long getSize() { - return this.size; - } - public void setSize(long size) { - this.size = size; - } + } diff --git a/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/value/EntityObject.java b/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/value/EntityObject.java index 12915e2b96..db44e87adf 100644 --- a/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/value/EntityObject.java +++ b/stack/corepersistence/model/src/main/java/org/apache/usergrid/persistence/model/field/value/EntityObject.java @@ -38,6 +38,9 @@ @JsonIgnoreProperties(ignoreUnknown = true) public class EntityObject implements Serializable { + @JsonIgnore + private long size; + /** * Fields the users can set */ @@ -99,4 +102,11 @@ public void setFieldMap( Map fieldMap ) { fields.clear(); fields.putAll( fieldMap ); } + + public long getSize() { + return this.size; + } + public void setSize(long size) { + this.size = size; + } }