[Joafip-svn] SF.net SVN: joafip:[2939] trunk/joafip/src/main/java/net/sf/joafip/store
Brought to you by:
luc_peuvrier
|
From: <luc...@us...> - 2011-10-24 02:37:42
|
Revision: 2939
http://joafip.svn.sourceforge.net/joafip/?rev=2939&view=rev
Author: luc_peuvrier
Date: 2011-10-24 02:37:36 +0000 (Mon, 24 Oct 2011)
Log Message:
-----------
management of loose of reference on original value
Modified Paths:
--------------
trunk/joafip/src/main/java/net/sf/joafip/store/entity/objectio/ObjectAndPersistInfo.java
trunk/joafip/src/main/java/net/sf/joafip/store/entity/objectio/ObjectClassInfoAndDeclared.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/serialize/output/AbstractObjectOutput.java
Modified: trunk/joafip/src/main/java/net/sf/joafip/store/entity/objectio/ObjectAndPersistInfo.java
===================================================================
--- trunk/joafip/src/main/java/net/sf/joafip/store/entity/objectio/ObjectAndPersistInfo.java 2011-10-24 02:36:09 UTC (rev 2938)
+++ trunk/joafip/src/main/java/net/sf/joafip/store/entity/objectio/ObjectAndPersistInfo.java 2011-10-24 02:37:36 UTC (rev 2939)
@@ -437,6 +437,10 @@
return result;
}
+ public boolean referenceLost() {
+ return weakReference!=null && weakReference.get()==null;
+ }
+
@Override
public Object getObject() {
final Object result;
@@ -444,7 +448,7 @@
result = this.object;
} else {
result = weakReference.get();
- assert result != null : "reference loose " + toString();
+ assert result != null : "reference lost " + toString();
}
return result;
}
Modified: trunk/joafip/src/main/java/net/sf/joafip/store/entity/objectio/ObjectClassInfoAndDeclared.java
===================================================================
--- trunk/joafip/src/main/java/net/sf/joafip/store/entity/objectio/ObjectClassInfoAndDeclared.java 2011-10-24 02:36:09 UTC (rev 2938)
+++ trunk/joafip/src/main/java/net/sf/joafip/store/entity/objectio/ObjectClassInfoAndDeclared.java 2011-10-24 02:37:36 UTC (rev 2939)
@@ -78,6 +78,10 @@
return toWriteObjectClassInfo;
}
+ public boolean referenceLost() {
+ return objectAndPersistInfo.referenceLost();
+ }
+
public Object getObject() {
return objectAndPersistInfo.getObject();
}
Modified: trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/serialize/output/AbstractObjectOutput.java
===================================================================
--- trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/serialize/output/AbstractObjectOutput.java 2011-10-24 02:36:09 UTC (rev 2938)
+++ trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/serialize/output/AbstractObjectOutput.java 2011-10-24 02:37:36 UTC (rev 2939)
@@ -428,11 +428,10 @@
* @param referencingObject
* the referencing object
* @param originalReferenced
- * the original (previously) referenced object by referencing,
- * can be null if no previously referenced
+ * the original (previously) referenced object, can be null if no
+ * previously referenced
* @param referencedObject
- * the referenced object by referencing, can be null if no more
- * referenced
+ * the referenced object, can be null if no more referenced
* @param referenceChangeList
* @return true if referencing object state changed
* @throws ObjectIOException
@@ -444,22 +443,28 @@
final List<ReferenceChange> referenceChangeList)
throws ObjectIOException {
final boolean stateChanged;
- final Object originalObject = originalReferenced.getObject();
- final Object object = referencedObject.getObject();
- final ClassInfo referencedClassInfo = referencedObject
- .getToWriteObjectClassInfo();
- /*
- * the test below needed since primitive and its equivalent object have
- * not same class
- */
- if (referencedClassInfo.isBasicType()) {
- stateChanged = originalObject == null && object != null
- || originalObject != null && !originalObject.equals(object);
- } else if (originalObject != object) {// NOPMD compare
- // instance
+ // FIXMELUC ________________________only for exclusive das
+ if (originalReferenced.referenceLost()) {
stateChanged = true;
} else {
- stateChanged = false;
+ final Object originalObject = originalReferenced.getObject();
+ final Object object = referencedObject.getObject();
+ final ClassInfo referencedClassInfo = referencedObject
+ .getToWriteObjectClassInfo();
+ /*
+ * the test below needed since primitive and its equivalent object
+ * have not same class
+ */
+ if (referencedClassInfo.isBasicType()) {
+ stateChanged = originalObject == null && object != null
+ || originalObject != null
+ && !originalObject.equals(object);
+ } else if (originalObject != object) {// NOPMD compare
+ // instance
+ stateChanged = true;
+ } else {
+ stateChanged = false;
+ }
}
if (stateChanged && garbageManagement) {
referencedChanged(referencingObject, referencedObject,
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|