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);