Thread: [Joafip-svn] SF.net SVN: joafip:[2923] trunk/joafip/src/main/java/net/sf/joafip/store
Brought to you by:
luc_peuvrier
|
From: <luc...@us...> - 2011-10-16 09:31:37
|
Revision: 2923
http://joafip.svn.sourceforge.net/joafip/?rev=2923&view=rev
Author: luc_peuvrier
Date: 2011-10-16 09:31:31 +0000 (Sun, 16 Oct 2011)
Log Message:
-----------
substitution management refactoring
Modified Paths:
--------------
trunk/joafip/src/main/java/net/sf/joafip/store/entity/objectio/ObjectAndItsClassInfo.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/AbstractObjectIOManagerIOForObject.java
Modified: trunk/joafip/src/main/java/net/sf/joafip/store/entity/objectio/ObjectAndItsClassInfo.java
===================================================================
--- trunk/joafip/src/main/java/net/sf/joafip/store/entity/objectio/ObjectAndItsClassInfo.java 2011-10-16 08:35:26 UTC (rev 2922)
+++ trunk/joafip/src/main/java/net/sf/joafip/store/entity/objectio/ObjectAndItsClassInfo.java 2011-10-16 09:31:31 UTC (rev 2923)
@@ -137,10 +137,6 @@
return objectClassInfo.isSubstitution();
}
- // public boolean hasProxyCallback() {
- // return objectClassInfo.hasProxyCallback();
- // }
-
public boolean classDoesNotExist() {
return objectClassInfo.classDoesNotExist();
}
Modified: trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/AbstractObjectIOManagerIOForObject.java
===================================================================
--- trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/AbstractObjectIOManagerIOForObject.java 2011-10-16 08:35:26 UTC (rev 2922)
+++ trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/AbstractObjectIOManagerIOForObject.java 2011-10-16 09:31:31 UTC (rev 2923)
@@ -1096,28 +1096,31 @@
// }
// final Object object = objectAndPersistInfo.getObject();
// ASSERTX
- assert assertWritable(objectAndPersistInfo);
+ final ClassInfo toWriteClassInfo;
+ final ObjectAndPersistInfo toWriteObjectAndPersistInfo;
+
if (classInfo.isSubstituted()) {
// write substitute object
final ObjectAndPersistInfo substituteObjectAndPersistInfo =
/**/substituteObject(objectAndPersistInfo);
- final Object object = substituteObjectAndPersistInfo.getObject();
- final IObjectOutput objectOutput;
- // ASSERTX
- assert assertHasInstance(substituteObjectAndPersistInfo, object);
- objectOutput = getObjectOutput(substituteObjectAndPersistInfo.objectClassInfo);
- objectOutput.prepareWrite(substituteObjectAndPersistInfo);
objectAndPersistInfo
.setSubstituteObjectAndPersistInfo(substituteObjectAndPersistInfo);
+ toWriteClassInfo = substituteObjectAndPersistInfo.objectClassInfo;
+ toWriteObjectAndPersistInfo = substituteObjectAndPersistInfo;
+
} else {
// write original object
- final Object object = objectAndPersistInfo.getObject();
- final IObjectOutput objectOutput;
- // ASSERTX
- assert assertHasInstance(objectAndPersistInfo, object);
- objectOutput = getObjectOutput(classInfo);
- objectOutput.prepareWrite(objectAndPersistInfo);
+ toWriteClassInfo = classInfo;
+ toWriteObjectAndPersistInfo = objectAndPersistInfo;
}
+
+ assert assertWritable(toWriteObjectAndPersistInfo);
+ final Object object = toWriteObjectAndPersistInfo.getObject();
+ final IObjectOutput objectOutput;
+ // ASSERTX
+ assert assertHasInstance(toWriteObjectAndPersistInfo, object);
+ objectOutput = getObjectOutput(toWriteClassInfo);
+ objectOutput.prepareWrite(toWriteObjectAndPersistInfo);
}
private boolean assertHasInstance(
@@ -1131,6 +1134,7 @@
return true;
}
+ // FIXMELUC ______________________________________substituteObject
protected ObjectAndPersistInfo substituteObject(
final ObjectAndPersistInfo objectAndPersistInfo)
throws ObjectIOException, ObjectIODataCorruptedException {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <luc...@us...> - 2011-10-16 09:31:37
|
Revision: 2923
http://joafip.svn.sourceforge.net/joafip/?rev=2923&view=rev
Author: luc_peuvrier
Date: 2011-10-16 09:31:31 +0000 (Sun, 16 Oct 2011)
Log Message:
-----------
substitution management refactoring
Modified Paths:
--------------
trunk/joafip/src/main/java/net/sf/joafip/store/entity/objectio/ObjectAndItsClassInfo.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/AbstractObjectIOManagerIOForObject.java
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <luc...@us...> - 2011-10-17 08:46:52
|
Revision: 2928
http://joafip.svn.sourceforge.net/joafip/?rev=2928&view=rev
Author: luc_peuvrier
Date: 2011-10-17 08:46:43 +0000 (Mon, 17 Oct 2011)
Log Message:
-----------
kept in memory management refactoring
Modified Paths:
--------------
trunk/joafip/src/main/java/net/sf/joafip/store/entity/classinfo/ClassInfo.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/AbstractDelegatingToStoreManagers.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/kept/KeptInMemoryObjectManager.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/AbstractObjectIOManagerDelegatingToStateMap.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/AbstractObjectIOManagerIOForObject.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/AbstractObjectIOManagerKeptInMemory.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/ObjectIOManager.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/SerializerObjectIOManager.java
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <luc...@us...> - 2011-10-17 08:46:53
|
Revision: 2928
http://joafip.svn.sourceforge.net/joafip/?rev=2928&view=rev
Author: luc_peuvrier
Date: 2011-10-17 08:46:43 +0000 (Mon, 17 Oct 2011)
Log Message:
-----------
kept in memory management refactoring
Modified Paths:
--------------
trunk/joafip/src/main/java/net/sf/joafip/store/entity/classinfo/ClassInfo.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/AbstractDelegatingToStoreManagers.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/kept/KeptInMemoryObjectManager.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/AbstractObjectIOManagerDelegatingToStateMap.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/AbstractObjectIOManagerIOForObject.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/AbstractObjectIOManagerKeptInMemory.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/ObjectIOManager.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/SerializerObjectIOManager.java
Modified: trunk/joafip/src/main/java/net/sf/joafip/store/entity/classinfo/ClassInfo.java
===================================================================
--- trunk/joafip/src/main/java/net/sf/joafip/store/entity/classinfo/ClassInfo.java 2011-10-17 04:43:22 UTC (rev 2927)
+++ trunk/joafip/src/main/java/net/sf/joafip/store/entity/classinfo/ClassInfo.java 2011-10-17 08:46:43 UTC (rev 2928)
@@ -272,6 +272,8 @@
private final Set<String> notCheckedMethodSet = new TreeSet<String>();
+ private boolean keptInMemory;
+
/**
*
* @param objectClass
@@ -951,10 +953,22 @@
return substituted;
}
+ public void setKeptInMemory(final boolean keptInMemory) {
+ this.keptInMemory = keptInMemory;
+ }
+
+ public boolean isKeptInMemory() {
+ return keptInMemory;
+ }
+
public ClassInfo getSubstituteOfClassInfo() {
return substituteOfClassInfo;
}
+ public void setIsSubstitution() {
+ this.substitution = true;
+ }
+
public boolean isSubstitution() {
return substitution;
}
Modified: trunk/joafip/src/main/java/net/sf/joafip/store/service/AbstractDelegatingToStoreManagers.java
===================================================================
--- trunk/joafip/src/main/java/net/sf/joafip/store/service/AbstractDelegatingToStoreManagers.java 2011-10-17 04:43:22 UTC (rev 2927)
+++ trunk/joafip/src/main/java/net/sf/joafip/store/service/AbstractDelegatingToStoreManagers.java 2011-10-17 08:46:43 UTC (rev 2928)
@@ -38,7 +38,6 @@
import net.sf.joafip.store.entity.classinfo.ClassInfo;
import net.sf.joafip.store.entity.classinfo.FieldInfo;
import net.sf.joafip.store.entity.heaprecordable.IHeapRecordable;
-import net.sf.joafip.store.entity.kept.KeptInMemoryObjectKey;
import net.sf.joafip.store.entity.kept.SubstituteOfEnum;
import net.sf.joafip.store.entity.objectio.IObjectStateMapCLeanListener;
import net.sf.joafip.store.entity.objectio.ObjectAndPersistInfo;
@@ -578,8 +577,13 @@
public void keptInMemory(final String key, final Object object)
throws StoreException {
final Class<? extends Object> objectClass = object.getClass();
- setSubstituteObjectManager(objectClass, KeptInMemoryObjectKey.class,
- objectIOManager.getKeptInMemorySubstituteObjectManager());
+ ClassInfo classInfo;
+ try {
+ classInfo = classInfoFactory.getNoProxyClassInfo(objectClass);
+ } catch (ClassInfoException exception) {
+ throw new StoreException(exception);
+ }
+ classInfo.setKeptInMemory(true);
objectIOManager.addObject(key, object);
}
Modified: trunk/joafip/src/main/java/net/sf/joafip/store/service/kept/KeptInMemoryObjectManager.java
===================================================================
--- trunk/joafip/src/main/java/net/sf/joafip/store/service/kept/KeptInMemoryObjectManager.java 2011-10-17 04:43:22 UTC (rev 2927)
+++ trunk/joafip/src/main/java/net/sf/joafip/store/service/kept/KeptInMemoryObjectManager.java 2011-10-17 08:46:43 UTC (rev 2928)
@@ -30,7 +30,6 @@
import net.sf.joafip.store.entity.kept.KeptInMemoryObjectKey;
import net.sf.joafip.store.service.StoreException;
import net.sf.joafip.store.service.objectio.ObjectIOException;
-import net.sf.joafip.store.service.objectio.manager.ISubstituteObjectManager;
/**
* to manage object kept in memory, may be referenced by persisted object
@@ -39,7 +38,7 @@
*
*/
@NotStorableClass
-public class KeptInMemoryObjectManager implements ISubstituteObjectManager {
+public class KeptInMemoryObjectManager {
private final Map<KeptInMemoryObjectKey, Object> objectByKeyMap =
/**/new TreeMap<KeptInMemoryObjectKey, Object>();
@@ -70,7 +69,6 @@
.getKey();
}
- @Override
public Object originalObject(final Object substitute)
throws ObjectIOException {
final Object originalObject = objectByKeyMap.get(substitute);
@@ -81,7 +79,6 @@
return originalObject;
}
- @Override
public Object substituteObject(final Object originalObject)
throws ObjectIOException {
final KeptInMemoryObjectKey substitute = keyByObjectMap
Modified: trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/AbstractObjectIOManagerDelegatingToStateMap.java
===================================================================
--- trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/AbstractObjectIOManagerDelegatingToStateMap.java 2011-10-17 04:43:22 UTC (rev 2927)
+++ trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/AbstractObjectIOManagerDelegatingToStateMap.java 2011-10-17 08:46:43 UTC (rev 2928)
@@ -43,7 +43,7 @@
*/
@NotStorableClass
public abstract class AbstractObjectIOManagerDelegatingToStateMap extends
- AbstractObjectIOManagerKeptInMemory {
+ AbstractObjectIOManagerIOForObject {
private final ObjectStateMgr objectStateMgr = new ObjectStateMgr();
Modified: trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/AbstractObjectIOManagerIOForObject.java
===================================================================
--- trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/AbstractObjectIOManagerIOForObject.java 2011-10-17 04:43:22 UTC (rev 2927)
+++ trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/AbstractObjectIOManagerIOForObject.java 2011-10-17 08:46:43 UTC (rev 2928)
@@ -35,6 +35,7 @@
import net.sf.joafip.store.entity.classinfo.ClassInfo;
import net.sf.joafip.store.entity.classinfo.FieldInfo;
import net.sf.joafip.store.entity.conversion.ClassReplacementDef;
+import net.sf.joafip.store.entity.kept.KeptInMemoryObjectKey;
import net.sf.joafip.store.entity.objectio.EnumObjectInput;
import net.sf.joafip.store.entity.objectio.EnumObjectOutput;
import net.sf.joafip.store.entity.objectio.ObjectAndItsClassInfo;
@@ -47,7 +48,6 @@
import net.sf.joafip.store.service.classinfo.ClassInfoFactory;
import net.sf.joafip.store.service.copier.CopierException;
import net.sf.joafip.store.service.copier.DeepCopier;
-import net.sf.joafip.store.service.copier.IDeepCopyServiceDelegate;
import net.sf.joafip.store.service.objectio.ObjectIOClassNotFoundException;
import net.sf.joafip.store.service.objectio.ObjectIODataCorruptedException;
import net.sf.joafip.store.service.objectio.ObjectIODataRecordNotFoundException;
@@ -95,9 +95,8 @@
*
*/
@NotStorableClass
-public abstract class AbstractObjectIOManagerIOForObject implements
- IObjectIOManagerForObjectIO, IObjectIOManagerForSave,
- IDeepCopyServiceDelegate, IObjectIoManagerForGarbage {
+public abstract class AbstractObjectIOManagerIOForObject extends
+ AbstractObjectIOManagerKeptInMemory {
protected final JoafipLogger logger = JoafipLogger.getLogger(getClass());// NOPMD
@@ -144,8 +143,6 @@
private final IProxyManagerForObjectIO proxyManager2;
- protected final ClassInfoFactory classInfoFactory;
-
protected final ObjectInputForEnum objectInputEnum;
protected final int currentDataModelIdentifier;
@@ -171,11 +168,10 @@
final HelperBinaryConversion helperBinaryConversion,
final IProxyManagerForObjectIO proxyManager2)
throws ObjectIOException {
- super();
+ super(classInfoFactory);
this.currentDataModelIdentifier = currentDataModelIdentifier;
this.classNameManager = classNameManager;
this.proxyMode = proxyMode;
- this.classInfoFactory = classInfoFactory;
this.proxyManager2 = proxyManager2;
try {
objectIOOutputStream = new ObjectIOOutputStream(this,
@@ -518,7 +514,9 @@
throws ObjectIOException, ObjectIODataCorruptedException {
final ObjectAndPersistInfo substituteObjectAndPersistInfo;
final ClassInfo classInfo = objectAndPersistInfo.objectClassInfo;
- if (classInfo.isSubstituted()) {
+ if (classInfo.isKeptInMemory()) {
+ substituteObjectAndPersistInfo = keptInMemorysubstituteObject(objectAndPersistInfo);
+ } else if (classInfo.isSubstituted()) {
substituteObjectAndPersistInfo = substituteObject(objectAndPersistInfo);
} else if (classInfo.isWriteSubstituted()) {
substituteObjectAndPersistInfo = substituteForWrite(objectAndPersistInfo);
@@ -932,23 +930,39 @@
ObjectIOClassNotFoundException, ObjectIONotSerializableException {
final ObjectAndPersistInfo result;
if (objectAndPersistInfo.isSubstitution()) {
+
final ClassInfo classInfo = objectAndPersistInfo.objectClassInfo;
- final ISubstituteObjectManager substituteObjectManager = classInfo
- .getSubstituteObjectManager();
- /*
- * substituted in storage, the original object before to be
- * persisted
- */
final Object object = objectAndPersistInfo.getObject();
- final Object substitutedObject = originalObject(
- substituteObjectManager, object);
+ final Object substitutedObject;
+ final ClassInfo substituteOfClassInfo;
+ if (KeptInMemoryObjectKey.class.equals(classInfo.getObjectClass())) {
+ substitutedObject = keptInMemoryoriginalObject(object);
+ try {
+ substituteOfClassInfo = classInfoFactory
+ .getNoProxyClassInfo(substitutedObject.getClass());
+ } catch (ClassInfoException exception) {
+ throw new ObjectIOException(exception);
+ }
+ } else {
+
+ final ISubstituteObjectManager substituteObjectManager = classInfo
+ .getSubstituteObjectManager();
+ /*
+ * substituted in storage, the original object before to be
+ * persisted
+ */
+
+ substitutedObject = originalObject(substituteObjectManager,
+ object);
+ substituteOfClassInfo = classInfo.getSubstituteOfClassInfo();
+ }
+
/* original/substituted in storage is not persisted, never a proxy */
result = getOrCreateObjectPersistInfoOfObject(substitutedObject,
- Boolean.FALSE, classInfo.getSubstituteOfClassInfo(), false/*
- * not
- * persisted
- */);
+ Boolean.FALSE, substituteOfClassInfo, false/*
+ * not persisted
+ */);
} else {
result = objectAndPersistInfo;
}
@@ -1097,7 +1111,10 @@
final ClassInfo toWriteClassInfo;
final ObjectAndPersistInfo toWriteObjectAndPersistInfo;
- if (classInfo.isSubstituted()) {
+ if (classInfo.isKeptInMemory()) {
+ toWriteObjectAndPersistInfo = keptInMemorysubstituteObject(objectAndPersistInfo);
+ toWriteClassInfo = toWriteObjectAndPersistInfo.objectClassInfo;
+ } else if (classInfo.isSubstituted()) {
// write substitute object
final ObjectAndPersistInfo substituteObjectAndPersistInfo =
/**/substituteObject(objectAndPersistInfo);
Modified: trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/AbstractObjectIOManagerKeptInMemory.java
===================================================================
--- trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/AbstractObjectIOManagerKeptInMemory.java 2011-10-17 04:43:22 UTC (rev 2927)
+++ trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/AbstractObjectIOManagerKeptInMemory.java 2011-10-17 08:46:43 UTC (rev 2928)
@@ -22,36 +22,47 @@
*/
package net.sf.joafip.store.service.objectio.manager;
+import net.sf.joafip.store.entity.classinfo.ClassInfo;
+import net.sf.joafip.store.entity.kept.KeptInMemoryObjectKey;
+import net.sf.joafip.store.entity.objectio.ObjectAndPersistInfo;
import net.sf.joafip.store.service.StoreException;
-import net.sf.joafip.store.service.binary.HelperBinaryConversion;
+import net.sf.joafip.store.service.classinfo.ClassInfoException;
import net.sf.joafip.store.service.classinfo.ClassInfoFactory;
+import net.sf.joafip.store.service.copier.IDeepCopyServiceDelegate;
import net.sf.joafip.store.service.kept.KeptInMemoryObjectManager;
+import net.sf.joafip.store.service.objectio.ObjectIODataCorruptedException;
import net.sf.joafip.store.service.objectio.ObjectIOException;
-import net.sf.joafip.store.service.proxy.IProxyManagerForObjectIO;
/**
*
* @author luc peuvrier
*
*/
-public abstract class AbstractObjectIOManagerKeptInMemory extends
- AbstractObjectIOManagerIOForObject {
+public abstract class AbstractObjectIOManagerKeptInMemory implements
+ IObjectIOManagerForObjectIO, IObjectIOManagerForSave,
+ IDeepCopyServiceDelegate, IObjectIoManagerForGarbage {
private final KeptInMemoryObjectManager keptInMemorySubstituteObjectManager =
/**/new KeptInMemoryObjectManager();
+ protected final ClassInfoFactory classInfoFactory;
+
+ private final ClassInfo substituteClassInfo;
+
public AbstractObjectIOManagerKeptInMemory(
- final int currentDataModelIdentifier,
- final IClassNameManager classNameManager, final boolean proxyMode,
- final ClassInfoFactory classInfoFactory,
- final HelperBinaryConversion helperBinaryConversion,
- final IProxyManagerForObjectIO proxyManager2)
- throws ObjectIOException {
- super(currentDataModelIdentifier, classNameManager, proxyMode,
- classInfoFactory, helperBinaryConversion, proxyManager2);
+ final ClassInfoFactory classInfoFactory) throws ObjectIOException {
+ super();
+ this.classInfoFactory = classInfoFactory;
+ try {
+ substituteClassInfo = classInfoFactory
+ .getNoProxyClassInfo(KeptInMemoryObjectKey.class);
+ } catch (ClassInfoException exception) {
+ throw new ObjectIOException(exception);
+ }
+ substituteClassInfo.setIsSubstitution();
}
- public KeptInMemoryObjectManager getKeptInMemorySubstituteObjectManager() {
+ protected KeptInMemoryObjectManager getKeptInMemorySubstituteObjectManager() {
return keptInMemorySubstituteObjectManager;
}
@@ -64,15 +75,23 @@
return keptInMemorySubstituteObjectManager.keyOfObject(object);
}
- public Object originalObject(final Object substitute)
+ protected Object keptInMemoryoriginalObject(final Object substitute)
throws ObjectIOException {
return keptInMemorySubstituteObjectManager.originalObject(substitute);
}
- public Object substituteObject(final Object originalObject)
- throws ObjectIOException {
- return keptInMemorySubstituteObjectManager
+ protected ObjectAndPersistInfo keptInMemorysubstituteObject(
+ final ObjectAndPersistInfo objectAndPersistInfo)
+ throws ObjectIOException, ObjectIODataCorruptedException {
+
+ final Object originalObject = objectAndPersistInfo.getObject();
+ final Object substituteObject = keptInMemorySubstituteObjectManager
.substituteObject(originalObject);
+ final ObjectAndPersistInfo substituteObjectAndPersistInfo = getOrCreateObjectPersistInfoOfObject(
+ substituteObject, Boolean.FALSE, substituteClassInfo, true/* persisted */);
+ objectAndPersistInfo
+ .setSubstituteObjectAndPersistInfo(substituteObjectAndPersistInfo);
+ return substituteObjectAndPersistInfo;
}
@Override
Modified: trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/ObjectIOManager.java
===================================================================
--- trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/ObjectIOManager.java 2011-10-17 04:43:22 UTC (rev 2927)
+++ trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/ObjectIOManager.java 2011-10-17 08:46:43 UTC (rev 2928)
@@ -394,7 +394,9 @@
final ClassInfo classInfo = objectAndPersistInfo.objectClassInfo;
final ObjectAndPersistInfo toWrite;
- if (classInfo.isSubstituted()) {
+ if (classInfo.isKeptInMemory()) {
+ toWrite = keptInMemorysubstituteObject(objectAndPersistInfo);
+ } else if (classInfo.isSubstituted()) {
toWrite = substituteObject(objectAndPersistInfo);
} else {
toWrite = objectAndPersistInfo;
Modified: trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/SerializerObjectIOManager.java
===================================================================
--- trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/SerializerObjectIOManager.java 2011-10-17 04:43:22 UTC (rev 2927)
+++ trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/SerializerObjectIOManager.java 2011-10-17 08:46:43 UTC (rev 2928)
@@ -54,7 +54,7 @@
*/
@NotStorableClass
public class SerializerObjectIOManager extends
- AbstractObjectIOManagerKeptInMemory {
+ AbstractObjectIOManagerIOForObject {
private static final String MUST_NOT_BE_CALLED = "must not be called";
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <luc...@us...> - 2011-10-21 01:36:37
|
Revision: 2932
http://joafip.svn.sourceforge.net/joafip/?rev=2932&view=rev
Author: luc_peuvrier
Date: 2011-10-21 01:36:31 +0000 (Fri, 21 Oct 2011)
Log Message:
-----------
do not weak reference object if acceded
Modified Paths:
--------------
trunk/joafip/src/main/java/net/sf/joafip/store/entity/objectio/ObjectAndPersistInfo.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/IObjectIOManagerForProxyObjectIO.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/ObjectIOManager.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/SerializerObjectIOManager.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/serialize/input/AbstractObjectInputGeneric.java
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/proxy/ProxyCallBack.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/saver/StoreSaver3.java
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <luc...@us...> - 2011-10-21 01:36:37
|
Revision: 2932
http://joafip.svn.sourceforge.net/joafip/?rev=2932&view=rev
Author: luc_peuvrier
Date: 2011-10-21 01:36:31 +0000 (Fri, 21 Oct 2011)
Log Message:
-----------
do not weak reference object if acceded
Modified Paths:
--------------
trunk/joafip/src/main/java/net/sf/joafip/store/entity/objectio/ObjectAndPersistInfo.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/IObjectIOManagerForProxyObjectIO.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/ObjectIOManager.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/SerializerObjectIOManager.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/serialize/input/AbstractObjectInputGeneric.java
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/proxy/ProxyCallBack.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/saver/StoreSaver3.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-21 01:32:42 UTC (rev 2931)
+++ trunk/joafip/src/main/java/net/sf/joafip/store/entity/objectio/ObjectAndPersistInfo.java 2011-10-21 01:36:31 UTC (rev 2932)
@@ -137,8 +137,11 @@
public ObjectAndPersistInfo nextReferenced;
+ // FIXMELUC __why for checkAssertNotNull
public boolean checkAssertNotNull = true;
+ public boolean acceded;
+
/**
* for {@link #NULL} and {@link ObjectAndPersistInfo#NULL_DEFINED }
*/
@@ -412,7 +415,7 @@
// object!=null may be unreferenced object and statemap not already
// cleared
final boolean weaked;
- if (weakReference == null && object != null) {
+ if (!acceded && weakReference == null && object != null) {
weakReference = new ObjectAndPersistInfoWeakReference(object, this,
queue);
clear();// Unreferenced
@@ -591,7 +594,7 @@
} else {
weak = weakReference.get();
}
- return /**/"weeakReference["
+ return /**/"weakReference["
/**/+ (weakReference == null ?
/**/"none" : // NOPMD
/**/(weak == null ? "null" : (weak.getClass()
Modified: trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/IObjectIOManagerForProxyObjectIO.java
===================================================================
--- trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/IObjectIOManagerForProxyObjectIO.java 2011-10-21 01:32:42 UTC (rev 2931)
+++ trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/IObjectIOManagerForProxyObjectIO.java 2011-10-21 01:36:31 UTC (rev 2932)
@@ -169,6 +169,9 @@
void unsetProxyObjectState(ObjectAndPersistInfo objectAndItsClassInfo)
throws ObjectIOException, ObjectIOInvalidClassException;
+ void saveAndUnsetProxyObjectState(ObjectAndPersistInfo objectAndItsClassInfo)
+ throws ObjectIOException, ObjectIOInvalidClassException;
+
IProxyManagerForObjectIO getProxyManager2();
ClassInfoFactory getClassInfoFactory();
Modified: trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/ObjectIOManager.java
===================================================================
--- trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/ObjectIOManager.java 2011-10-21 01:32:42 UTC (rev 2931)
+++ trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/ObjectIOManager.java 2011-10-21 01:36:31 UTC (rev 2932)
@@ -308,6 +308,14 @@
}
@Override
+ public void saveAndUnsetProxyObjectState(
+ final ObjectAndPersistInfo objectAndItsClassInfo)
+ throws ObjectIOException, ObjectIOInvalidClassException {
+ save();
+ unsetProxyObjectState(objectAndItsClassInfo);
+ }
+
+ @Override
protected DataRecordIdentifier associateNewDataRecordIdentifierToObject(
final ObjectAndPersistInfo objectAndPersistInfo)
throws ObjectIODataCorruptedException, ObjectIOException {
@@ -624,6 +632,7 @@
@Override
public void objectIsAccessed(final ObjectAndPersistInfo objectAndPersistInfo) {
+ objectAndPersistInfo.acceded = true;
objectIsAccessedDelegate(objectAndPersistInfo);
}
@@ -683,34 +692,36 @@
// final int numberOfObjectState = getNumberOfObjectState();
final int numberOfObjectState = getNumberOfReferenced();
if (numberOfObjectState >= maxInMemoryThreshold && doAutoSave()) {
- try {
- final long beginTime = System.currentTimeMillis();
- final boolean saveDone = saver.autoSave();
- if (saveDone) {
- final long duration = System.currentTimeMillis()
- - beginTime;
- final int newNumberOfObjectState = getNumberOfObjectState();
- final int numberOfWeakreference = getNumberOfWeakReference();
- if (autoSaveEventListener != null) {
- autoSaveEventListener.saveDone(
- newNumberOfObjectState,
- numberOfWeakreference, duration);
- }
- }
- } catch (final FilePersistenceException exception) {
- throw new ObjectIOException(exception);
- } catch (final FilePersistenceInvalidClassException exception) {
- throw new ObjectIOException(exception);
- } catch (final FilePersistenceNotSerializableException exception) {
- throw new ObjectIOException(exception);
- } catch (final FilePersistenceClassNotFoundException exception) {
- throw new ObjectIOException(exception);
- } catch (final FilePersistenceDataCorruptedException exception) {
- throw new ObjectIOException(exception);
- } catch (final FilePersistenceTooBigForSerializationException exception) {
- throw new ObjectIOException(exception);
+ save();
+ }
+ }
+ }
+
+ protected void save() throws ObjectIOException {
+ try {
+ final long beginTime = System.currentTimeMillis();
+ final boolean saveDone = saver.autoSave();
+ if (saveDone) {
+ final long duration = System.currentTimeMillis() - beginTime;
+ final int newNumberOfObjectState = getNumberOfObjectState();
+ final int numberOfWeakreference = getNumberOfWeakReference();
+ if (autoSaveEventListener != null) {
+ autoSaveEventListener.saveDone(newNumberOfObjectState,
+ numberOfWeakreference, duration);
}
}
+ } catch (final FilePersistenceException exception) {
+ throw new ObjectIOException(exception);
+ } catch (final FilePersistenceInvalidClassException exception) {
+ throw new ObjectIOException(exception);
+ } catch (final FilePersistenceNotSerializableException exception) {
+ throw new ObjectIOException(exception);
+ } catch (final FilePersistenceClassNotFoundException exception) {
+ throw new ObjectIOException(exception);
+ } catch (final FilePersistenceDataCorruptedException exception) {
+ throw new ObjectIOException(exception);
+ } catch (final FilePersistenceTooBigForSerializationException exception) {
+ throw new ObjectIOException(exception);
}
}
Modified: trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/SerializerObjectIOManager.java
===================================================================
--- trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/SerializerObjectIOManager.java 2011-10-21 01:32:42 UTC (rev 2931)
+++ trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/SerializerObjectIOManager.java 2011-10-21 01:36:31 UTC (rev 2932)
@@ -375,6 +375,13 @@
throw new ObjectIOException(MUST_NOT_BE_CALLED);
}
+ @Override
+ public void saveAndUnsetProxyObjectState(
+ final ObjectAndPersistInfo objectAndItsClassInfo)
+ throws ObjectIOException, ObjectIOInvalidClassException {
+ throw new ObjectIOException(MUST_NOT_BE_CALLED);
+ }
+
/** not maintain in memory for joafip serialization in one data record */
@Override
public boolean isMaintainInMemoryEnabled() {
Modified: trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/serialize/input/AbstractObjectInputGeneric.java
===================================================================
--- trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/serialize/input/AbstractObjectInputGeneric.java 2011-10-21 01:32:42 UTC (rev 2931)
+++ trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/serialize/input/AbstractObjectInputGeneric.java 2011-10-21 01:36:31 UTC (rev 2932)
@@ -200,7 +200,6 @@
ObjectIODataRecordNotFoundException, ObjectIOInvalidClassException,
ObjectIOClassNotFoundException, ObjectIODataCorruptedException,
ObjectIONotSerializableException {
-
final FieldInfo[] fieldToSetInfo = getFieldToSetInfoImpl(objectAndPersistInfo.objectClassInfo);
objectAndPersistInfo.fieldToSetInfo = fieldToSetInfo;
@@ -923,8 +922,8 @@
fieldValueAndPersistInfo);
}
if (logger.debugEnabled) {
- logger.debug("set field " + fieldInfo.getFieldName() + " is null="
- + (fieldValueAndPersistInfo.getObject() == null));
+ logger.debug("set field " + fieldInfo.getFieldName() + " value="
+ + fieldValueAndPersistInfo);
}
}
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-21 01:32:42 UTC (rev 2931)
+++ trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/serialize/output/AbstractObjectOutput.java 2011-10-21 01:36:31 UTC (rev 2932)
@@ -307,10 +307,10 @@
.getDeclaredClassInfo();
final String name = declaredClassInfo.getName();
if (logger.debugEnabled) {
- logger.debug("wrote field " + name + ", is null="
- + (value == null) + ", primitive="
- + declaredClassInfo.isPrimitiveType() + ", at offset "
- + offset);
+ logger.debug("wrote field " + name + ", value="
+ + valueAndType.getObjectAndPersistInfo()
+ + ", primitive=" + declaredClassInfo.isPrimitiveType()
+ + ", at offset " + offset);
}
}
if (valueAndType.declaredIsBasicOrPrimitive()) {
Modified: trunk/joafip/src/main/java/net/sf/joafip/store/service/proxy/ProxyCallBack.java
===================================================================
--- trunk/joafip/src/main/java/net/sf/joafip/store/service/proxy/ProxyCallBack.java 2011-10-21 01:32:42 UTC (rev 2931)
+++ trunk/joafip/src/main/java/net/sf/joafip/store/service/proxy/ProxyCallBack.java 2011-10-21 01:36:31 UTC (rev 2932)
@@ -175,6 +175,17 @@
return result;
}
+ // FIXMELUC _________________________for test
+// private boolean in() {
+// final StackTraceElement[] stackTraceElements = new Exception()
+// .getStackTrace();
+// final StackTraceElement stackTraceElement = stackTraceElements[3];
+// final String className = stackTraceElement.getClassName();
+// final String methodName = stackTraceElement.getMethodName();
+// return className.contains("MultiMap")
+// && methodName.contains("addKeyDefinition");
+// }
+
@Override
@SuppressWarnings("PMD")
public void intercept$JOAFIP$() {
@@ -182,7 +193,12 @@
if (autoSaveEnabled) {
inObjectCount++;
}
-
+ // FIXMELUC _________________________for test
+// if (in()) {
+// System.out.println("intercept " + inObjectCount + " "
+// + proxyObjectAndPersistInfo);
+// }
+ // end for test
if (exclusiveAccessSession) {
try {
objectIOManager.objectIsAccessed(getInstance$JOAFIP$());
@@ -234,11 +250,23 @@
@Override
@SuppressWarnings("PMD")
public void methodEnd$JOAFIP$() {
+ // FIXMELUC _________________________for test
+// if (in()) {
+// System.out.println("methodEnd " + inObjectCount + " "
+// + proxyObjectAndPersistInfo);
+// }
+ // end for test
synchronized (storeMutex) {
if (autoSaveEnabled) {
- inObjectCount--;
+ final ObjectAndPersistInfo instanceAndPersistInfo = getInstance$JOAFIP$();
+ if (--inObjectCount == 0) {
+ instanceAndPersistInfo.acceded = false;
+ }
// ASSERTX
- assert inObjectCount >= 0 : "running in object count can be negative";
+ assert inObjectCount >= 0 : "running in object count can not be negative, is "
+ + inObjectCount
+ + " "
+ + getInstance$JOAFIP$().toString();
if (!wasLoaded && loaded && inObjectCount == 0) {
try {
objectIOManager.newObjectLoaded();
@@ -249,11 +277,10 @@
if (toUnload && inObjectCount == 0) {
toUnload = false;
loaded = false;
- final ObjectAndPersistInfo instanceAndPersistInfo = getInstance$JOAFIP$();
assert instanceAndPersistInfo != null;
try {
objectIOManager
- .unsetProxyObjectState(instanceAndPersistInfo);
+ .saveAndUnsetProxyObjectState(instanceAndPersistInfo);
} catch (Exception exception) {
LOGGER.error("method end interception error", exception);
throw new ProxyInterceptException(
Modified: trunk/joafip/src/main/java/net/sf/joafip/store/service/saver/StoreSaver3.java
===================================================================
--- trunk/joafip/src/main/java/net/sf/joafip/store/service/saver/StoreSaver3.java 2011-10-21 01:32:42 UTC (rev 2931)
+++ trunk/joafip/src/main/java/net/sf/joafip/store/service/saver/StoreSaver3.java 2011-10-21 01:36:31 UTC (rev 2932)
@@ -611,7 +611,6 @@
: object.getClass()));
}
}
-
addToVisitForSave(sons);
}
} catch (final ObjectIOException exception) {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <luc...@us...> - 2011-10-24 02:37:43
|
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
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
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.
|
|
From: <luc...@us...> - 2011-11-21 07:14:29
|
Revision: 2975
http://joafip.svn.sourceforge.net/joafip/?rev=2975&view=rev
Author: luc_peuvrier
Date: 2011-11-21 07:14:22 +0000 (Mon, 21 Nov 2011)
Log Message:
-----------
abject acceded management refactoring
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/ObjectStateMap.java
trunk/joafip/src/main/java/net/sf/joafip/store/entity/objectio/SerializerModel.java
trunk/joafip/src/main/java/net/sf/joafip/store/entity/saver/StoreSaverSession.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/ObjectIOManager.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/proxy/ProxyCallBack.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/proxy/ProxyManager2.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/saver/StoreSaver3.java
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <luc...@us...> - 2011-11-21 07:14:29
|
Revision: 2975
http://joafip.svn.sourceforge.net/joafip/?rev=2975&view=rev
Author: luc_peuvrier
Date: 2011-11-21 07:14:22 +0000 (Mon, 21 Nov 2011)
Log Message:
-----------
abject acceded management refactoring
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/ObjectStateMap.java
trunk/joafip/src/main/java/net/sf/joafip/store/entity/objectio/SerializerModel.java
trunk/joafip/src/main/java/net/sf/joafip/store/entity/saver/StoreSaverSession.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/ObjectIOManager.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/proxy/ProxyCallBack.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/proxy/ProxyManager2.java
trunk/joafip/src/main/java/net/sf/joafip/store/service/saver/StoreSaver3.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-11-21 07:11:53 UTC (rev 2974)
+++ trunk/joafip/src/main/java/net/sf/joafip/store/entity/objectio/ObjectAndPersistInfo.java 2011-11-21 07:14:22 UTC (rev 2975)
@@ -136,7 +136,7 @@
// FIXMELUC __why for checkAssertNotNull
public boolean checkAssertNotNull = true;
- public boolean acceded;
+ // public boolean acceded;
/**
* for {@link #NULL} and {@link ObjectAndPersistInfo#NULL_DEFINED }
@@ -411,7 +411,7 @@
// object!=null may be unreferenced object and statemap not already
// cleared
final boolean weaked;
- if (!acceded && weakReference == null && object != null) {
+ if (isNotAcceded() && weakReference == null && object != null) {
weakReference = new ObjectAndPersistInfoWeakReference(object, this,
queue);
clear();// Unreferenced
@@ -422,6 +422,16 @@
return weaked;
}
+ private boolean isNotAcceded() {
+ final boolean isNotAcceded;
+ if (proxyIntanceOrEnhanced) {
+ isNotAcceded = proxyCallBack.getInObjectCount$JOAFIP$() == 0;
+ } else {
+ isNotAcceded = true;
+ }
+ return isNotAcceded;
+ }
+
@Override
protected Object getObjectForEquals() {
final Object result;
@@ -534,30 +544,31 @@
return loadedOrNotAProxy;
}
- public void setIsLoaded() throws ObjectIOException {
- // out of constructor, no more acceded, to do before set is
- // loaded
- acceded = false;
- if (proxyIntanceOrEnhanced) {
- /*
- * set loaded state can call save and object is referenced only by
- * this created persist info object, so must not be unreferenced
- */
- assert assertProxyCallBack(proxyCallBack);
- proxyCallBack.setIsLoaded$JOAFIP$();
- }
- }
+ // public void setIsLoaded() throws ObjectIOException {
+ // // out of constructor, no more acceded, to do before set is
+ // // loaded
+ // acceded = false;
+ // if (proxyIntanceOrEnhanced) {
+ // /*
+ // * set loaded state can call save and object is referenced only by
+ // * this created persist info object, so must not be unreferenced
+ // */
+ // assert assertProxyCallBack(proxyCallBack);
+ // proxyCallBack.setIsLoaded$JOAFIP$();
+ // }
+ // }
- public void newInstanceAndCreatedBySave(final StorageInfo storageInfo)
- throws ObjectIOException {
- unWeakReferenceOnObject();
- setStorageInfo(storageInfo);
- setIsLoaded();
- }
+ // public void newInstanceAndCreatedBySave(final StorageInfo storageInfo)
+ // throws ObjectIOException {
+ // setStorageInfo(storageInfo);
+ // setIsLoaded();
+ // acceded=true;
+ // objectStateMap.objectIsAccessed(this);
+ // }
public void unloadAfterSave() throws ObjectIOException,
ObjectIOInvalidClassException {
- if (proxyIntanceOrEnhanced && !acceded) {
+ if (proxyIntanceOrEnhanced && isNotAcceded()) {
assert assertProxyCallBack(proxyCallBack);
proxyCallBack.unload$JOAFIP$();
}
Modified: trunk/joafip/src/main/java/net/sf/joafip/store/entity/objectio/ObjectStateMap.java
===================================================================
--- trunk/joafip/src/main/java/net/sf/joafip/store/entity/objectio/ObjectStateMap.java 2011-11-21 07:11:53 UTC (rev 2974)
+++ trunk/joafip/src/main/java/net/sf/joafip/store/entity/objectio/ObjectStateMap.java 2011-11-21 07:14:22 UTC (rev 2975)
@@ -18,8 +18,8 @@
import java.lang.ref.ReferenceQueue;
import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
+import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
@@ -46,7 +46,7 @@
* map between object in memory and persistence information for this object
*/
private final Map<IObjectIdentityKey, ObjectAndPersistInfo> stateMap =
- /**/new HashMap<IObjectIdentityKey, ObjectAndPersistInfo>();
+ /**/new LinkedHashMap<IObjectIdentityKey, ObjectAndPersistInfo>();
/**
* map to obtains object persistence information by data record identifier
@@ -451,7 +451,8 @@
public Collection<ObjectAndPersistInfo> getObjectHavingStateSet() {
synchronized (this) {
- final Collection<ObjectAndPersistInfo> objectHavingStateSet = new HashSet<ObjectAndPersistInfo>();
+ final Collection<ObjectAndPersistInfo> objectHavingStateSet =
+ /**/new LinkedHashSet<ObjectAndPersistInfo>();
// if (exclusiveAccessSession) {
// expunge();
@@ -527,7 +528,7 @@
public Set<ObjectAndPersistInfo> mostAccessedObject(final int quota) {
synchronized (this) {
// expunge();
- final Set<ObjectAndPersistInfo> set = new HashSet<ObjectAndPersistInfo>();
+ final Set<ObjectAndPersistInfo> set = new LinkedHashSet<ObjectAndPersistInfo>();
int count = 0;
ObjectAndPersistInfo current = queueHead;
while (count < quota && current != null) {
Modified: trunk/joafip/src/main/java/net/sf/joafip/store/entity/objectio/SerializerModel.java
===================================================================
--- trunk/joafip/src/main/java/net/sf/joafip/store/entity/objectio/SerializerModel.java 2011-11-21 07:11:53 UTC (rev 2974)
+++ trunk/joafip/src/main/java/net/sf/joafip/store/entity/objectio/SerializerModel.java 2011-11-21 07:14:22 UTC (rev 2975)
@@ -22,7 +22,7 @@
*/
package net.sf.joafip.store.entity.objectio;
-import java.util.HashMap;
+import java.util.LinkedHashMap;
import java.util.Map;
import java.util.TreeMap;
@@ -49,7 +49,7 @@
* map between object in memory and persistence information for this object
*/
private final Map<IObjectIdentityKey, ObjectAndPersistInfo> stateMap =
- /**/new HashMap<IObjectIdentityKey, ObjectAndPersistInfo>();
+ /**/new LinkedHashMap<IObjectIdentityKey, ObjectAndPersistInfo>();
private final ObjectIdentityKey key = new ObjectIdentityKey();
Modified: trunk/joafip/src/main/java/net/sf/joafip/store/entity/saver/StoreSaverSession.java
===================================================================
--- trunk/joafip/src/main/java/net/sf/joafip/store/entity/saver/StoreSaverSession.java 2011-11-21 07:11:53 UTC (rev 2974)
+++ trunk/joafip/src/main/java/net/sf/joafip/store/entity/saver/StoreSaverSession.java 2011-11-21 07:14:22 UTC (rev 2975)
@@ -18,8 +18,8 @@
import java.util.Collection;
import java.util.Deque;
-import java.util.HashSet;
import java.util.Iterator;
+import java.util.LinkedHashSet;
import java.util.LinkedList;
import java.util.Set;
import java.util.TreeSet;
@@ -52,7 +52,7 @@
/** visited for saving object set */
private final Set<ObjectAndPersistInfo> visitedForSave =
- /**/new HashSet<ObjectAndPersistInfo>();
+ /**/new LinkedHashSet<ObjectAndPersistInfo>();
/** set of data record identifier of object attached to root */
private final Set<DataRecordIdentifier> attachedToRoot =
Modified: trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/ObjectIOManager.java
===================================================================
--- trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/ObjectIOManager.java 2011-11-21 07:11:53 UTC (rev 2974)
+++ trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/ObjectIOManager.java 2011-11-21 07:14:22 UTC (rev 2975)
@@ -623,7 +623,6 @@
@Override
public void objectIsAccessed(final ObjectAndPersistInfo objectAndPersistInfo) {
- objectAndPersistInfo.acceded = true;
objectIsAccessedDelegate(objectAndPersistInfo);
}
Modified: trunk/joafip/src/main/java/net/sf/joafip/store/service/proxy/ProxyCallBack.java
===================================================================
--- trunk/joafip/src/main/java/net/sf/joafip/store/service/proxy/ProxyCallBack.java 2011-11-21 07:11:53 UTC (rev 2974)
+++ trunk/joafip/src/main/java/net/sf/joafip/store/service/proxy/ProxyCallBack.java 2011-11-21 07:14:22 UTC (rev 2975)
@@ -93,13 +93,15 @@
}
/**
- *
+ * only call by proxy constructor
*/
public ProxyCallBack() {
super();
inObjectCount = 1;
storeMutex = new JoafipMutex();
exclusiveAccessSession = true;
+ autoSaveEnabled = true;
+ loaded = true;
}
/**
@@ -262,11 +264,12 @@
@Override
public void constructorEnd$JOAFIP$() {
inObjectCount--;
+ // if (autoSaveEnabled) {
+ // unLoadAction(getInstance$JOAFIP$());
+ // }
+ toUnload = false;
assert inObjectCount >= 0 : "running in object count can not be negative, is "
+ inObjectCount;
- // if (objectIOManager != null) {
- // objectIsAccessed();
- // }
}
@Override
@@ -279,7 +282,6 @@
assert inObjectCount >= 0 : "running in object count can not be negative, is "
+ inObjectCount + " " + getInstance$JOAFIP$().toString();
if (inObjectCount == 0) {
- instanceAndPersistInfo.acceded = false;
if (autoSaveEnabled) {
if (!wasLoaded && loaded) {
try {
@@ -288,26 +290,28 @@
throw new ProxyInterceptException(exception);
}
}
- if (toUnload) {
- toUnload = false;
- loaded = false;
- assert instanceAndPersistInfo != null;
- try {
- objectIOManager
- .saveAndUnsetProxyObjectState(instanceAndPersistInfo);
- } catch (Exception exception) {
- LOGGER.error("method end interception error",
- exception);
- throw new ProxyInterceptException(
- instanceAndPersistInfo.toString(),
- exception);
- }
- }
+ unLoadAction(instanceAndPersistInfo);
}
}
}
}
+ private void unLoadAction(final ObjectAndPersistInfo instanceAndPersistInfo) {
+ if (toUnload) {
+ toUnload = false;
+ loaded = false;
+ assert instanceAndPersistInfo != null;
+ try {
+ objectIOManager
+ .saveAndUnsetProxyObjectState(instanceAndPersistInfo);
+ } catch (Exception exception) {
+ LOGGER.error("method end interception error", exception);
+ throw new ProxyInterceptException(
+ instanceAndPersistInfo.toString(), exception);
+ }
+ }
+ }
+
@Override
@SuppressWarnings("PMD")
public boolean isLoaded$JOAFIP$() throws ObjectIOException {
@@ -345,11 +349,14 @@
*/
if (loaded) {
if (!loading && (!exclusiveAccessSession || inObjectCount == 0)) {
+ toUnload = false;
loaded = false;
objectIOManager.unsetProxyObjectState(getInstance$JOAFIP$());
} else {
toUnload = true;
}
+ } else {
+ toUnload = false;
}
// }
}
Modified: trunk/joafip/src/main/java/net/sf/joafip/store/service/proxy/ProxyManager2.java
===================================================================
--- trunk/joafip/src/main/java/net/sf/joafip/store/service/proxy/ProxyManager2.java 2011-11-21 07:11:53 UTC (rev 2974)
+++ trunk/joafip/src/main/java/net/sf/joafip/store/service/proxy/ProxyManager2.java 2011-11-21 07:14:22 UTC (rev 2975)
@@ -231,6 +231,7 @@
objectAndPersistInfo = objectIOManager
.getObjectAndPersistInfoOfObject(instanceCreated);
+
if (objectAndPersistInfo == null) {
// not created by save
// FIXMELUC ___seems dataRecordIdentifier always null, see call
@@ -273,16 +274,28 @@
throw new ProxyException(
"data record identifier must not be defined if object not persisted");
}
- objectAndPersistInfo.setStorageInfo(storageInfo);
+ objectAndPersistInfo.setStorageInfo(storageInfo);
if (constructed) {
- assert objectAndPersistInfo.isNotWeak();
- objectAndPersistInfo.setIsLoaded();
+ assert objectAndPersistInfo.isNotWeak() : objectAndPersistInfo
+ .toString();
+ assert objectAndPersistInfo.isLoaded() : objectAndPersistInfo
+ .toString();
+ // objectIOManager.objectIsAccessed(objectAndPersistInfo);
+ // objectAndPersistInfo.setNewObject(true);
+ objectIOManager.newObjectLoaded();
}
} else {
// created by save
assert constructed;
- objectAndPersistInfo.newInstanceAndCreatedBySave(storageInfo);
+ assert objectAndPersistInfo.isNotWeak() : objectAndPersistInfo
+ .toString();
+ assert objectAndPersistInfo.isLoaded() : objectAndPersistInfo
+ .toString();
+ objectAndPersistInfo.setStorageInfo(storageInfo);
+ // objectIOManager.objectIsAccessed(objectAndPersistInfo);
+ // objectAndPersistInfo.setNewObject(true);
+ objectIOManager.newObjectLoaded();
}
return objectAndPersistInfo;
}
@@ -510,46 +523,32 @@
final IProxyCallBackToImplement proxyCallBack,
final boolean exclusiveAccessSession) throws ProxyException {
final Object object = objectAndPersistInfo.getObject();
- if (exclusiveAccessSession) {
- if (useJavaAgent) {
- final IProxyCallBackToImplement existing = StaticProxyCallBack
- .getProxyCallBack(object);
- if (existing == null) {
- StaticProxyCallBack.setProxyCallBack(object, proxyCallBack);
- proxyCallBack.setInstance$JOAFIP$(objectAndPersistInfo);
- objectAndPersistInfo.setProxyCallBack(proxyCallBack);
- } else {
- existing.initialize$JOAFIP$(proxyCallBack);
- existing.setInstance$JOAFIP$(objectAndPersistInfo);
- objectAndPersistInfo.setProxyCallBack(existing);
- objectAndPersistInfo.acceded = true;
- }
- } else {
- final IProxyCallBack proxy = (IProxyCallBack) object;
- final IProxyCallBackToImplement existing = proxy
- .getProxyCallBack$JOAFIP$();
- if (existing == null) {
- proxy.setProxyCallBack$JOAFIP$(proxyCallBack);
- proxyCallBack.setInstance$JOAFIP$(objectAndPersistInfo);
- objectAndPersistInfo.setProxyCallBack(proxyCallBack);
- } else {
- existing.initialize$JOAFIP$(proxyCallBack);
- existing.setInstance$JOAFIP$(objectAndPersistInfo);
- objectAndPersistInfo.setProxyCallBack(existing);
- objectAndPersistInfo.acceded = true;
- }
- }
- } else {
- if (useJavaAgent) {
+ // does not test exclusiveAccessSession because new instance construct
+ // can be called out of exclusive data access session
+ if (useJavaAgent) {
+ final IProxyCallBackToImplement existing = StaticProxyCallBack
+ .getProxyCallBack(object);
+ if (existing == null) {
StaticProxyCallBack.setProxyCallBack(object, proxyCallBack);
proxyCallBack.setInstance$JOAFIP$(objectAndPersistInfo);
objectAndPersistInfo.setProxyCallBack(proxyCallBack);
-
} else {
- final IProxyCallBack proxy = (IProxyCallBack) object;
+ existing.initialize$JOAFIP$(proxyCallBack);
+ existing.setInstance$JOAFIP$(objectAndPersistInfo);
+ objectAndPersistInfo.setProxyCallBack(existing);
+ }
+ } else {
+ final IProxyCallBack proxy = (IProxyCallBack) object;
+ final IProxyCallBackToImplement existing = proxy
+ .getProxyCallBack$JOAFIP$();
+ if (existing == null) {
proxy.setProxyCallBack$JOAFIP$(proxyCallBack);
proxyCallBack.setInstance$JOAFIP$(objectAndPersistInfo);
objectAndPersistInfo.setProxyCallBack(proxyCallBack);
+ } else {
+ existing.initialize$JOAFIP$(proxyCallBack);
+ existing.setInstance$JOAFIP$(objectAndPersistInfo);
+ objectAndPersistInfo.setProxyCallBack(existing);
}
}
}
Modified: trunk/joafip/src/main/java/net/sf/joafip/store/service/saver/StoreSaver3.java
===================================================================
--- trunk/joafip/src/main/java/net/sf/joafip/store/service/saver/StoreSaver3.java 2011-11-21 07:11:53 UTC (rev 2974)
+++ trunk/joafip/src/main/java/net/sf/joafip/store/service/saver/StoreSaver3.java 2011-11-21 07:14:22 UTC (rev 2975)
@@ -18,9 +18,9 @@
import java.io.File;
import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
@@ -150,7 +150,7 @@
private final List<String> wroteArrays = new LinkedList<String>();
private final Map<ObjectAndPersistInfo, Set<ObjectAndPersistInfo>> fatherMap =
- /**/new HashMap<ObjectAndPersistInfo, Set<ObjectAndPersistInfo>>();
+ /**/new LinkedHashMap<ObjectAndPersistInfo, Set<ObjectAndPersistInfo>>();
/** root of objects to save */
private Object rootOfObjectsToSave;
@@ -753,7 +753,7 @@
.getObjectAndPersistInfo();
Set<ObjectAndPersistInfo> set = fatherMap.get(sonAndPersistInfo);
if (set == null) {
- set = new HashSet<ObjectAndPersistInfo>();
+ set = new LinkedHashSet<ObjectAndPersistInfo>();
fatherMap.put(sonAndPersistInfo, set);
}
set.add(father);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|