Author: simoneg
Date: Tue Jun  7 18:16:00 2011
New Revision: 1133121

URL: http://svn.apache.org/viewvc?rev=1133121&view=rev
Log:
Use underlying properties

Modified:
    
labs/magma/trunk/database-mongodb/src/main/java/org/apache/magma/database/mongo/BeanCollectionModifiedListener.java
    
labs/magma/trunk/database-mongodb/src/main/java/org/apache/magma/database/mongo/BeanMapModifiedListener.java
    
labs/magma/trunk/database-mongodb/src/main/java/org/apache/magma/database/mongo/MongoEntityDoc.aj
    
labs/magma/trunk/database-mongodb/src/main/java/org/apache/magma/database/mongo/MongoEntityFindMains.aj
    
labs/magma/trunk/database-mongodb/src/main/java/org/apache/magma/database/mongo/MongoEntityLazyRelations.aj
    
labs/magma/trunk/database-mongodb/src/main/java/org/apache/magma/database/mongo/MongoEntityTransactionMethods.aj
    
labs/magma/trunk/database-mongodb/src/main/java/org/apache/magma/database/mongo/Transaction.java
    
labs/magma/trunk/database-mongodb/src/main/java/org/apache/magma/database/mongo/TransactionPart.java
    
labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/ReadingTest.java
    
labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/test/domain/Person.java

Modified: 
labs/magma/trunk/database-mongodb/src/main/java/org/apache/magma/database/mongo/BeanCollectionModifiedListener.java
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/database-mongodb/src/main/java/org/apache/magma/database/mongo/BeanCollectionModifiedListener.java?rev=1133121&r1=1133120&r2=1133121&view=diff
==============================================================================
--- 
labs/magma/trunk/database-mongodb/src/main/java/org/apache/magma/database/mongo/BeanCollectionModifiedListener.java
 (original)
+++ 
labs/magma/trunk/database-mongodb/src/main/java/org/apache/magma/database/mongo/BeanCollectionModifiedListener.java
 Tue Jun  7 18:16:00 2011
@@ -20,7 +20,7 @@ public class BeanCollectionModifiedListe
                this.delegate = c;
                this.bean = bean;
                this.bsonList = bson;
-               this.prop = prop;
+               this.prop = prop.getUnderlying();
        }
        
        public void inited() {

Modified: 
labs/magma/trunk/database-mongodb/src/main/java/org/apache/magma/database/mongo/BeanMapModifiedListener.java
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/database-mongodb/src/main/java/org/apache/magma/database/mongo/BeanMapModifiedListener.java?rev=1133121&r1=1133120&r2=1133121&view=diff
==============================================================================
--- 
labs/magma/trunk/database-mongodb/src/main/java/org/apache/magma/database/mongo/BeanMapModifiedListener.java
 (original)
+++ 
labs/magma/trunk/database-mongodb/src/main/java/org/apache/magma/database/mongo/BeanMapModifiedListener.java
 Tue Jun  7 18:16:00 2011
@@ -28,7 +28,7 @@ public class BeanMapModifiedListener imp
                this.delegate = map;
                this.bean = bean;
                this.bson = bson;
-               this.pi = pi;
+               this.pi = pi.getUnderlying();
                this.keyConverter = 
Converters.getConverterFor(pi.getMapKeyClass());
                this.valueConverter = 
Converters.getConverterFor(pi.getMapValueClass());
        }

Modified: 
labs/magma/trunk/database-mongodb/src/main/java/org/apache/magma/database/mongo/MongoEntityDoc.aj
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/database-mongodb/src/main/java/org/apache/magma/database/mongo/MongoEntityDoc.aj?rev=1133121&r1=1133120&r2=1133121&view=diff
==============================================================================
--- 
labs/magma/trunk/database-mongodb/src/main/java/org/apache/magma/database/mongo/MongoEntityDoc.aj
 (original)
+++ 
labs/magma/trunk/database-mongodb/src/main/java/org/apache/magma/database/mongo/MongoEntityDoc.aj
 Tue Jun  7 18:16:00 2011
@@ -9,7 +9,6 @@ import javax.persistence.Transient;
 
 import org.apache.magma.basics.MagmaException;
 import org.apache.magma.beans.BeanData;
-import org.apache.magma.beans.BeanHandler;
 import org.apache.magma.beans.PropertyInfo;
 import org.apache.magma.database.InstallIdByDefault.WithDefaultId;
 import 
org.apache.magma.database.openjpa.InstallVersionByDefault.WithDefaultVersion;
@@ -55,16 +54,16 @@ public aspect MongoEntityDoc {
        
        void MongoEntity.loadBasicProperties() {
                BeanData bd = this.beanData();
-               BeanHandler bh = this.handler();
                Set<String> names = bd.getPropertyNames();
                for (String name : names) {
                        PropertyInfo pi = bd.getProperty(name);
+                       pi = pi.getUnderlying();
                        if (!pi.isBasicType() && pi.getType() != null && 
!Enum.class.isAssignableFrom(pi.getType())) continue;
                        Object val = null;
                        if (pi.isJpaId()) {
                                val = this.entityDoc.get("_id");
                                // Special case for WithDefaultId, where id is 
read only from the bean handler
-                               if (!pi.isWriteable() && this instanceof 
WithDefaultId) {
+                               if (this instanceof WithDefaultId) {
                                        long id = 0;
                                        if (val == null) {
                                                id = LongObjectId.generate();
@@ -74,8 +73,11 @@ public aspect MongoEntityDoc {
                                                throw new 
MagmaException("Cannot convert {0} to a long for default id", val); 
                                        }
                                        ((WithDefaultId)this).setId(id);
-                                       bh.updated(pi);
                                        val = null;
+                               } else if (pi.isWriteable()) {
+                                       pi.set(this, val);
+                               } else {
+                                       throw new MagmaException("Cannot set id 
on {0}", this.getClass());
                                }
                        } else {
                                val = this.entityDoc.get(pi.getJpaColName());
@@ -91,11 +93,9 @@ public aspect MongoEntityDoc {
                        if (val != null) {
                                val = MongoUtils.convertFromMongo(val, 
pi.getType());
                                if (val != null)
-                                       bh.setValue(name, val);
+                                       pi.set(this, val);
                        }
                }
-               
-               bh.commit();
        }
        
        void MongoEntity.prepareForDb(Transaction t) {
@@ -106,28 +106,27 @@ public aspect MongoEntityDoc {
                        this.entityDoc.put("_jcl", 
getMyTransaction().getMeta().convertToName(this.getClass()));
                        
                        PropertyInfo vf = bd.getJpaVersionField();
+                       vf = vf.getUnderlying();
                        if (vf != null) {
                                this.entityDoc.put(vf.getJpaColName(), 1);
                                if (vf.isWriteable()) {
-                                       BeanHandler bh = this.handler();
-                                       bh.setValue(vf.getName(), 1);
-                                       bh.commit();
+                                       vf.set(this, 1);
                                } else if (this instanceof WithDefaultVersion) {
                                        
((WithDefaultVersion)this).setVersion(1);
                                }
                        }
                        
                        // It's the first time we are persisting this entity, 
look for values getters
-                       BeanHandler bh = this.handler();
                        Set<String> pinames = bd.getPropertyNames();
                        for (String piname : pinames) {
                                PropertyInfo prop = bd.getProperty(piname);
+                               prop = prop.getUnderlying();
                                if (!prop.isReadable()) continue;
                                if (prop.isJpaId() || prop.isJpaVersion() || 
prop.isJpaTransient()) continue;
                                boolean read = prop.isBasicType() || 
(prop.isMongoPersisted() && !prop.isMap() && !prop.isCollection());
                                // TODO is this the best way to do this? It 
takes a lot of time, and causes "property":null in the db
                                if (read) {
-                                       bh.getValue(piname);
+                                       prop.get(this);
                                }
                        }
                        this.entityDocNeedsInit = false;

Modified: 
labs/magma/trunk/database-mongodb/src/main/java/org/apache/magma/database/mongo/MongoEntityFindMains.aj
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/database-mongodb/src/main/java/org/apache/magma/database/mongo/MongoEntityFindMains.aj?rev=1133121&r1=1133120&r2=1133121&view=diff
==============================================================================
--- 
labs/magma/trunk/database-mongodb/src/main/java/org/apache/magma/database/mongo/MongoEntityFindMains.aj
 (original)
+++ 
labs/magma/trunk/database-mongodb/src/main/java/org/apache/magma/database/mongo/MongoEntityFindMains.aj
 Tue Jun  7 18:16:00 2011
@@ -12,7 +12,6 @@ import java.util.Map.Entry;
 import javax.persistence.CascadeType;
 
 import org.apache.magma.beans.BeanData;
-import org.apache.magma.beans.BeanHandler;
 import org.apache.magma.beans.PropertyInfo;
 
 import com.mongodb.util.IdentitySet;
@@ -38,9 +37,9 @@ public aspect MongoEntityFindMains {
                boolean loadedOnly = !cascade.equals(CascadeType.REMOVE);
                BeanData bd = this.beanData();
                set.put(this,state);
-               BeanHandler bh = this.handler();
                List<PropertyInfo> rels = bd.getJpaRelationFields();
                for (PropertyInfo pi : rels) {
+                       pi = pi.getUnderlying();
                        CascadeType[] cascades = pi.getJpaCascadeType();
                        if (cascades != null && cascades.length > 0) {
                                if (Arrays.binarySearch(cascades, 
CascadeType.ALL) < 0)
@@ -54,7 +53,7 @@ public aspect MongoEntityFindMains {
                                Set loadeds = new 
HashSet(this.getLoaded(pi.getName()));
                                if (pi.isCollection()) {
                                        Class<? extends MongoEntity> oth = 
pi.getCollectionClass();
-                                       Collection c = (Collection) 
bh.getValue(pi.getName());
+                                       Collection c = (Collection) 
pi.get(this);
                                        for (Object val : c) {
                                                if (val != null) 
((MongoEntity)val).findMainEntities(cascade, set,state,dones);
                                                loadeds.remove(val);
@@ -66,7 +65,7 @@ public aspect MongoEntityFindMains {
                                        Class mv = pi.getMapValueClass();
                                        BeanData vbd = BeanData.getFor(mv);
                                        if (kbd.isJpaClass() || 
vbd.isJpaClass()) {
-                                               Map val = (Map) 
bh.getValue(pi.getName());
+                                               Map val = (Map) pi.get(this);
                                                for (Object entryobj : 
val.entrySet()) {
                                                        Map.Entry entry = 
(Entry) entryobj;
                                                        if (kbd.isJpaClass()) {
@@ -83,7 +82,7 @@ public aspect MongoEntityFindMains {
                                        }
                                } else {
                                        Class<? extends MongoEntity> oth = 
pi.getType();
-                                       MongoEntity val = (MongoEntity) 
bh.getValue(pi.getName());
+                                       MongoEntity val = (MongoEntity) 
pi.get(this);
                                        if (val != null) 
val.findMainEntities(cascade, set, state, dones);
                                        loadeds.remove(val);                    
                
                                }

Modified: 
labs/magma/trunk/database-mongodb/src/main/java/org/apache/magma/database/mongo/MongoEntityLazyRelations.aj
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/database-mongodb/src/main/java/org/apache/magma/database/mongo/MongoEntityLazyRelations.aj?rev=1133121&r1=1133120&r2=1133121&view=diff
==============================================================================
--- 
labs/magma/trunk/database-mongodb/src/main/java/org/apache/magma/database/mongo/MongoEntityLazyRelations.aj
 (original)
+++ 
labs/magma/trunk/database-mongodb/src/main/java/org/apache/magma/database/mongo/MongoEntityLazyRelations.aj
 Tue Jun  7 18:16:00 2011
@@ -16,7 +16,6 @@ import javax.persistence.Transient;
 
 import org.apache.magma.basics.MagmaException;
 import org.apache.magma.beans.BeanData;
-import org.apache.magma.beans.BeanHandler;
 import org.apache.magma.beans.PropertyInfo;
 import org.apache.magma.database.InstallIdByDefault.WithDefaultId;
 import org.apache.magma.database.mongo.collections.ListeningCollectionWrapper;
@@ -39,6 +38,7 @@ public aspect MongoEntityLazyRelations {
                
                Collection collection = proceed(bean);
                PropertyInfo pi = 
bean.beanData().findProperty(((MethodSignature)thisJoinPointStaticPart.getSignature()).getMethod());
+               pi = pi.getUnderlying();
                if (pi.isJpaTransient()) return collection;
 
                
@@ -95,9 +95,7 @@ public aspect MongoEntityLazyRelations {
                }
                listener.inited();
 
-               BeanHandler bh = bean.handler();
-               bh.setValue(pi.getName(), ret);
-               bh.commit();                    
+               pi.set(bean, ret);
                
                if (dynamic) {
                        bean.loaded(pi.getName(), collection);
@@ -114,6 +112,7 @@ public aspect MongoEntityLazyRelations {
                
                Map collection = proceed(bean);
                PropertyInfo pi = 
bean.beanData().findProperty(((MethodSignature)thisJoinPointStaticPart.getSignature()).getMethod());
+               pi = pi.getUnderlying();
                if (pi.isJpaTransient()) return collection;
                
                if (collection instanceof ListeningMapWrapper) return 
collection;
@@ -134,9 +133,7 @@ public aspect MongoEntityLazyRelations {
                listener.preload();
                listener.inited();
                
-               BeanHandler bh = bean.handler();
-               bh.setValue(pi.getName(), ret);
-               bh.commit();                    
+               pi.set(bean, ret);
                
                Class valclazz = pi.getMapValueClass();
                if (MongoEntity.class.isAssignableFrom(valclazz)) {
@@ -160,7 +157,7 @@ public aspect MongoEntityLazyRelations {
                Object oret = proceed(bean);
                
                PropertyInfo pi = 
bean.beanData().findProperty(((MethodSignature)thisJoinPointStaticPart.getSignature()).getMethod());
-
+               pi = pi.getUnderlying();
                if (pi.isJpaTransient() || !pi.isMongoPersisted()) return oret;
 
                if (bean.isLoaded(pi.getName())) return oret;
@@ -178,9 +175,7 @@ public aspect MongoEntityLazyRelations {
                }
                
                if (toset) {
-                       BeanHandler bh = bean.handler();
-                       bh.setValue(pi.getName(), ret);
-                       bh.commit();                    
+                       pi.set(bean, ret);
                        bean.loaded(pi.getName(), ret);                 
                } else if (ret != null) {
                        bean.loaded(pi.getName(), ret);                 

Modified: 
labs/magma/trunk/database-mongodb/src/main/java/org/apache/magma/database/mongo/MongoEntityTransactionMethods.aj
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/database-mongodb/src/main/java/org/apache/magma/database/mongo/MongoEntityTransactionMethods.aj?rev=1133121&r1=1133120&r2=1133121&view=diff
==============================================================================
--- 
labs/magma/trunk/database-mongodb/src/main/java/org/apache/magma/database/mongo/MongoEntityTransactionMethods.aj
 (original)
+++ 
labs/magma/trunk/database-mongodb/src/main/java/org/apache/magma/database/mongo/MongoEntityTransactionMethods.aj
 Tue Jun  7 18:16:00 2011
@@ -6,7 +6,6 @@ import java.util.List;
 import java.util.Collection;
 
 import org.apache.commons.beanutils.PropertyUtils;
-import org.apache.magma.beans.BeanHandler;
 import org.apache.magma.beans.PropertyInfo;
 import org.aspectj.lang.reflect.MethodSignature;
 
@@ -78,6 +77,7 @@ public aspect MongoEntityTransactionMeth
        
        void MongoEntity.dirtyHandleProperty(PropertyInfo pi, Object val) {
                MongoEntity bean = this;
+               pi = pi.getUnderlying();
                if (pi.isJpaTransient() || pi.isJpaVersion()) return;
 
                // null = remove
@@ -118,6 +118,7 @@ public aspect MongoEntityTransactionMeth
        {
                Method method = 
((MethodSignature)thisJoinPointStaticPart.getSignature()).getMethod();
                PropertyInfo pi = bean.beanData().findProperty(method);
+               pi = pi.getUnderlying();
                if (pi.isMongoPersisted() && !pi.isMap() && !pi.isCollection() 
&& !bean.isLoaded(pi.getName()) && pi.isReadable()) {
                        // Force a load to store previous bean if any
                        try {

Modified: 
labs/magma/trunk/database-mongodb/src/main/java/org/apache/magma/database/mongo/Transaction.java
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/database-mongodb/src/main/java/org/apache/magma/database/mongo/Transaction.java?rev=1133121&r1=1133120&r2=1133121&view=diff
==============================================================================
--- 
labs/magma/trunk/database-mongodb/src/main/java/org/apache/magma/database/mongo/Transaction.java
 (original)
+++ 
labs/magma/trunk/database-mongodb/src/main/java/org/apache/magma/database/mongo/Transaction.java
 Tue Jun  7 18:16:00 2011
@@ -23,7 +23,6 @@ import org.apache.commons.collections.ma
 import org.apache.magma.basics.MagmaException;
 import org.apache.magma.basics.startup.Cycle;
 import org.apache.magma.beans.BeanData;
-import org.apache.magma.beans.BeanHandler;
 import org.apache.magma.beans.PropertyInfo;
 import org.apache.magma.database.Database;
 import org.apache.magma.database.InstallIdByDefault.WithDefaultId;
@@ -471,8 +470,8 @@ public class Transaction {
                                        long nversion = -1;
                                        // Check for version field for 
optimistic lock
                                        BeanData bd = ent.beanData();
-                                       BeanHandler bh = ent.handler();
                                        PropertyInfo vf = 
bd.getJpaVersionField();
+                                       vf = vf.getUnderlying();
                                        if (ent instanceof WithDefaultVersion) {
                                                long version = 
((WithDefaultVersion)ent).getVersion();
                                                if (version > 0) 
search.append("version", version);
@@ -485,14 +484,13 @@ public class Transaction {
                                                if (vf != null) {
                                                        version = 1;
                                                        try {
-                                                               version = 
((Number)bh.getValue(vf.getName())).longValue();
+                                                               version = 
((Number)vf.get(ent)).longValue();
                                                        } catch 
(NullPointerException e) {}
                                                        
search.append(vf.getJpaColName(), version);
-                                                       
bh.setValue(vf.getName(), version + 1);
+                                                       vf.set(ent, version + 
1);
                                                        nversion = version + 1;
                                                        // We need this because 
setVersion is not weaved by MongoEntity Impls cause of LTW bugs 
                                                        
ent.checkGetBson().put(vf.getJpaColName(), version + 1);
-                                                       bh.commit();
                                                }
                                        }
                                        update.put("$set", new 
BasicDBObject("version", nversion));

Modified: 
labs/magma/trunk/database-mongodb/src/main/java/org/apache/magma/database/mongo/TransactionPart.java
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/database-mongodb/src/main/java/org/apache/magma/database/mongo/TransactionPart.java?rev=1133121&r1=1133120&r2=1133121&view=diff
==============================================================================
--- 
labs/magma/trunk/database-mongodb/src/main/java/org/apache/magma/database/mongo/TransactionPart.java
 (original)
+++ 
labs/magma/trunk/database-mongodb/src/main/java/org/apache/magma/database/mongo/TransactionPart.java
 Tue Jun  7 18:16:00 2011
@@ -7,7 +7,6 @@ import java.util.Map;
 import java.util.Set;
 
 import org.apache.magma.beans.BeanData;
-import org.apache.magma.beans.BeanHandler;
 import org.apache.magma.beans.PropertyInfo;
 import org.bson.BSONObject;
 import org.junit.runner.manipulation.Sortable;
@@ -66,14 +65,14 @@ public class TransactionPart extends Bas
                BSONObject bson = ent.checkGetBson();
                this.put("_jcl", bson.get("_jcl"));
                BeanData db = ent.beanData();
-               BeanHandler handler = ent.handler();
                Set<String> names = db.getPropertyNames();
                for (String propname : names) {
                        PropertyInfo pi = db.getProperty(propname);
-                       if (!pi.isBasicType()) continue;
+                       pi = pi.getUnderlying();
+                       if (!pi.isBasicType() && !pi.isEnum()) continue;
                        if (!pi.isWriteable() || pi.isJpaTransient()) continue;
                        if (pi.isJpaId() || pi.isJpaVersion()) continue;
-                       Object val = handler.getValue(propname);
+                       Object val = pi.get(ent);
                        ent.dirtyModified(pi, val);
                }       
        }

Modified: 
labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/ReadingTest.java
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/ReadingTest.java?rev=1133121&r1=1133120&r2=1133121&view=diff
==============================================================================
--- 
labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/ReadingTest.java
 (original)
+++ 
labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/ReadingTest.java
 Tue Jun  7 18:16:00 2011
@@ -155,6 +155,22 @@ public class ReadingTest extends MongoDb
                assertThat(p.getBool(), equalTo(true));
                
        }
+
+       @Test
+       public void readMagRo() throws Exception {
+               DBObject cloneDbo = cloneDbo(BSONPieces.simplePerson);
+               cloneDbo.put("magRo", true);
+               mdb.getCollection("test", "person")
+                       .expectFindOne(dbObject("{'_id':'" + 
BSONPieces.simplePersonId + "'}"), cloneDbo);
+               
+               Person p = db.load(Person.class, BSONPieces.simplePersonId);
+               
+               mdb.checkAll();
+               BSONPieces.assertSimplePersonLoaded(p);
+               assertThat(p.getMagRo(), equalTo(true));
+               
+       }
+       
        
        @Test
        public void readEnum() throws Exception {

Modified: 
labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/test/domain/Person.java
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/test/domain/Person.java?rev=1133121&r1=1133120&r2=1133121&view=diff
==============================================================================
--- 
labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/test/domain/Person.java
 (original)
+++ 
labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/test/domain/Person.java
 Tue Jun  7 18:16:00 2011
@@ -13,6 +13,7 @@ import javax.persistence.OneToMany;
 import javax.persistence.OneToOne;
 import javax.persistence.Transient;
 
+import org.apache.magma.beans.MagReadOnly;
 import org.apache.magma.database.LogicallyNamed;
 import org.apache.openjpa.persistence.ElementDependent;
 
@@ -33,6 +34,8 @@ public class Person implements Logically
        private List<Address> addresses = new ArrayList<Address>();
        private List<ToDo> todos = new ArrayList<ToDo>();
        
+       private boolean magRo = false;
+       
        public enum PersonType {
                FRIENDLY,
                HATEFUL
@@ -142,4 +145,12 @@ public class Person implements Logically
                this.type = type;
        }
        
+       @MagReadOnly
+       public boolean getMagRo() {
+               return magRo;
+       }
+       public void setMagRo(boolean magRo) {
+               this.magRo = magRo;
+       }
+       
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to