You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2006/10/14 23:41:33 UTC

svn commit: r464035 - in /incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne: access/ map/ property/

Author: aadamchik
Date: Sat Oct 14 14:41:29 2006
New Revision: 464035

URL: http://svn.apache.org/viewvc?view=rev&rev=464035
Log:
CAY-682: Generic Cayenne POJO enhancer
(adding fault invalidation capabilities to the property descriptors)

Modified:
    incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/access/ObjectStore.java
    incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/map/EnhancedPojoSingleObjectArcProperty.java
    incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/map/EntityDescriptor.java
    incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/property/ArcProperty.java
    incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/property/ListProperty.java
    incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/property/PersistentObjectProperty.java
    incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/property/ValueHolderProperty.java

Modified: incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/access/ObjectStore.java
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/access/ObjectStore.java?view=diff&rev=464035&r1=464034&r2=464035
==============================================================================
--- incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/access/ObjectStore.java (original)
+++ incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/access/ObjectStore.java Sat Oct 14 14:41:29 2006
@@ -816,7 +816,7 @@
                 continue;
             }
 
-            // for now "break" all "independent" object relationships...
+            // for now break all "independent" object relationships...
             // in the future we may want to be more precise and go after modified
             // relationships only, or even process updated lists without invalidating...
 

Modified: incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/map/EnhancedPojoSingleObjectArcProperty.java
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/map/EnhancedPojoSingleObjectArcProperty.java?view=diff&rev=464035&r1=464034&r2=464035
==============================================================================
--- incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/map/EnhancedPojoSingleObjectArcProperty.java (original)
+++ incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/map/EnhancedPojoSingleObjectArcProperty.java Sat Oct 14 14:41:29 2006
@@ -28,23 +28,23 @@
 
 /**
  * A property descriptor for the to-one relationship property of an enhanced pojo. Assumes
- * a class in question has a field called "$cay_fault_propertyName" that stores a boolean
- * flag indicating whether the property in question is not yet resolved.
+ * a class in question has a field called "$cay_faultResolved_propertyName" that stores a
+ * boolean flag indicating whether the property in question is not yet resolved.
  * 
  * @since 3.0
  * @author Andrus Adamchik
  */
 class EnhancedPojoSingleObjectArcProperty extends AbstractSingleObjectArcProperty {
 
-    public static final String FAULT_FIELD_PREFIX = "$cay_fault_";
+    public static final String FAULT_FIELD_PREFIX = "$cay_faultResolved_";
 
-    protected PropertyAccessor faultFlagAccessor;
+    protected PropertyAccessor faultResolvedFlagAccessor;
 
     public EnhancedPojoSingleObjectArcProperty(ClassDescriptor owner,
             ClassDescriptor targetDescriptor, PropertyAccessor accessor,
             String reverseName) {
         super(owner, targetDescriptor, accessor, reverseName);
-        this.faultFlagAccessor = makeFaultFlagAccessor();
+        this.faultResolvedFlagAccessor = makeFaultFlagAccessor();
     }
 
     PropertyAccessor makeFaultFlagAccessor() {
@@ -55,7 +55,15 @@
     }
 
     public boolean isFault(Object source) {
-        return ((Boolean) faultFlagAccessor.readPropertyDirectly(source)).booleanValue();
+        return !((Boolean) faultResolvedFlagAccessor.readPropertyDirectly(source))
+                .booleanValue();
+    }
+
+    public void invalidate(Object object) {
+        faultResolvedFlagAccessor.writePropertyDirectly(
+                object,
+                Boolean.TRUE,
+                Boolean.FALSE);
     }
 
     protected void resolveFault(Object object) {
@@ -64,7 +72,10 @@
                     (Persistent) object,
                     getName());
             writePropertyDirectly(object, null, target);
-            faultFlagAccessor.writePropertyDirectly(object, Boolean.TRUE, Boolean.FALSE);
+            faultResolvedFlagAccessor.writePropertyDirectly(
+                    object,
+                    Boolean.FALSE,
+                    Boolean.TRUE);
         }
     }
 

Modified: incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/map/EntityDescriptor.java
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/map/EntityDescriptor.java?view=diff&rev=464035&r1=464034&r2=464035
==============================================================================
--- incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/map/EntityDescriptor.java (original)
+++ incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/map/EntityDescriptor.java Sat Oct 14 14:41:29 2006
@@ -204,6 +204,9 @@
                     public boolean isFault(Object target) {
                         return false;
                     }
+                    
+                    public void invalidate(Object object) {
+                    }
                 };
             }
 

Modified: incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/property/ArcProperty.java
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/property/ArcProperty.java?view=diff&rev=464035&r1=464034&r2=464035
==============================================================================
--- incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/property/ArcProperty.java (original)
+++ incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/property/ArcProperty.java Sat Oct 14 14:41:29 2006
@@ -57,4 +57,11 @@
      * @param source an object that is a source object of the relationship.
      */
     boolean isFault(Object source);
+
+    /**
+     * Turns a property of an object into a fault.
+     * 
+     * @since 3.0
+     */
+    void invalidate(Object object);
 }

Modified: incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/property/ListProperty.java
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/property/ListProperty.java?view=diff&rev=464035&r1=464034&r2=464035
==============================================================================
--- incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/property/ListProperty.java (original)
+++ incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/property/ListProperty.java Sat Oct 14 14:41:29 2006
@@ -59,4 +59,8 @@
                 || target instanceof Fault
                 || ((ValueHolder) target).isFault();
     }
+
+    public void invalidate(Object object) {
+        writePropertyDirectly(object, null, Fault.getToManyFault());
+    }
 }

Modified: incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/property/PersistentObjectProperty.java
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/property/PersistentObjectProperty.java?view=diff&rev=464035&r1=464034&r2=464035
==============================================================================
--- incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/property/PersistentObjectProperty.java (original)
+++ incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/property/PersistentObjectProperty.java Sat Oct 14 14:41:29 2006
@@ -40,6 +40,14 @@
         Object target = accessor.readPropertyDirectly(object);
         return target instanceof Fault;
     }
+    
+    public void invalidate(Object object) {
+        Object target = accessor.readPropertyDirectly(object);
+        
+        if(!(target instanceof Fault)) {
+            accessor.writePropertyDirectly(object, target, Fault.getToOneFault());
+        }
+    }
 
     public Object readProperty(Object object) throws PropertyAccessException {
         Object value = super.readProperty(object);

Modified: incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/property/ValueHolderProperty.java
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/property/ValueHolderProperty.java?view=diff&rev=464035&r1=464034&r2=464035
==============================================================================
--- incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/property/ValueHolderProperty.java (original)
+++ incubator/cayenne/main/trunk/core/cayenne-jdk1.4/src/main/java/org/apache/cayenne/property/ValueHolderProperty.java Sat Oct 14 14:41:29 2006
@@ -46,6 +46,13 @@
         return holder == null || holder.isFault();
     }
 
+    public void invalidate(Object object) {
+        ValueHolder holder = (ValueHolder) accessor.readPropertyDirectly(object);
+        if (holder != null && !holder.isFault()) {
+            holder.invalidate();
+        }
+    }
+
     public Object readPropertyDirectly(Object object) throws PropertyAccessException {
         ValueHolder holder = (ValueHolder) accessor.readPropertyDirectly(object);