joafip-svn Mailing List for java data object persistence in file (Page 21)
Brought to you by:
luc_peuvrier
You can subscribe to this list here.
2011 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(4) |
Oct
(102) |
Nov
(52) |
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2012 |
Jan
(4) |
Feb
|
Mar
(14) |
Apr
(116) |
May
(100) |
Jun
(14) |
Jul
|
Aug
|
Sep
(30) |
Oct
|
Nov
(108) |
Dec
(2) |
From: <luc...@us...> - 2011-10-18 02:55:34
|
Revision: 2929 http://joafip.svn.sourceforge.net/joafip/?rev=2929&view=rev Author: luc_peuvrier Date: 2011-10-18 02:55:27 +0000 (Tue, 18 Oct 2011) Log Message: ----------- some instances of same class can be kept in memory and other not Modified Paths: -------------- 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/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/test/java/net/sf/joafip/service/rel300/TestKeptInMemory.java Added Paths: ----------- trunk/joafip/src/test/java/net/sf/joafip/entity/rel300/ 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 08:46:43 UTC (rev 2928) +++ trunk/joafip/src/main/java/net/sf/joafip/store/service/kept/KeptInMemoryObjectManager.java 2011-10-18 02:55:27 UTC (rev 2929) @@ -79,15 +79,8 @@ return originalObject; } - public Object substituteObject(final Object originalObject) - throws ObjectIOException { - final KeptInMemoryObjectKey substitute = keyByObjectMap - .get(originalObject); - if (substitute == null) { - throw new ObjectIOException("no substitute for original object " - + identityString(originalObject)); - } - return substitute; + public Object substituteObject(final Object originalObject) { + return keyByObjectMap.get(originalObject); } private String identityString(final Object object) { 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 08:46:43 UTC (rev 2928) +++ trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/AbstractObjectIOManagerIOForObject.java 2011-10-18 02:55:27 UTC (rev 2929) @@ -512,19 +512,20 @@ public DataRecordIdentifier getDataRecordIdentifierAssociatedToObject( final ObjectAndPersistInfo objectAndPersistInfo) throws ObjectIOException, ObjectIODataCorruptedException { - final ObjectAndPersistInfo substituteObjectAndPersistInfo; + ObjectAndPersistInfo substituteObjectAndPersistInfo; final ClassInfo classInfo = objectAndPersistInfo.objectClassInfo; - if (classInfo.isKeptInMemory()) { - substituteObjectAndPersistInfo = keptInMemorysubstituteObject(objectAndPersistInfo); - } else if (classInfo.isSubstituted()) { - substituteObjectAndPersistInfo = substituteObject(objectAndPersistInfo); - } else if (classInfo.isWriteSubstituted()) { + if (classInfo.isWriteSubstituted()) { substituteObjectAndPersistInfo = substituteForWrite(objectAndPersistInfo); } else { - substituteObjectAndPersistInfo = objectAndPersistInfo; + substituteObjectAndPersistInfo = keptInMemorysubstituteObject(objectAndPersistInfo); + if (substituteObjectAndPersistInfo == null) { + substituteObjectAndPersistInfo = substituteObject(objectAndPersistInfo); + if (substituteObjectAndPersistInfo == null) { + substituteObjectAndPersistInfo = objectAndPersistInfo; + } + } } - return localGetDataRecordIdentifierAssociatedToObject( - /**/substituteObjectAndPersistInfo); + return localGetDataRecordIdentifierAssociatedToObject(substituteObjectAndPersistInfo); } public ObjectAndPersistInfo substituteForWrite( @@ -1097,7 +1098,6 @@ ObjectIODataRecordNotFoundException, ObjectIOClassNotFoundException, ObjectIODataCorruptedException, ObjectIOTooBigForSerializationException { - final ClassInfo classInfo = objectAndPersistInfo.objectClassInfo; /* * tested by store saver, can prepare write of not storable but will not * be write @@ -1107,26 +1107,17 @@ // + objectAndPersistInfo.toString()); // } // final Object object = objectAndPersistInfo.getObject(); - // ASSERTX - final ClassInfo toWriteClassInfo; - final ObjectAndPersistInfo toWriteObjectAndPersistInfo; - if (classInfo.isKeptInMemory()) { - toWriteObjectAndPersistInfo = keptInMemorysubstituteObject(objectAndPersistInfo); - toWriteClassInfo = toWriteObjectAndPersistInfo.objectClassInfo; - } else if (classInfo.isSubstituted()) { - // write substitute object - final ObjectAndPersistInfo substituteObjectAndPersistInfo = + ObjectAndPersistInfo toWriteObjectAndPersistInfo; + toWriteObjectAndPersistInfo = keptInMemorysubstituteObject(objectAndPersistInfo); + if (toWriteObjectAndPersistInfo == null) { + toWriteObjectAndPersistInfo = /**/substituteObject(objectAndPersistInfo); - toWriteClassInfo = substituteObjectAndPersistInfo.objectClassInfo; - toWriteObjectAndPersistInfo = substituteObjectAndPersistInfo; - - } else { - // write original object - toWriteClassInfo = classInfo; - toWriteObjectAndPersistInfo = objectAndPersistInfo; + if (toWriteObjectAndPersistInfo == null) { + toWriteObjectAndPersistInfo = objectAndPersistInfo; + } } - + final ClassInfo toWriteClassInfo = toWriteObjectAndPersistInfo.objectClassInfo; assert assertWritable(toWriteObjectAndPersistInfo); final Object object = toWriteObjectAndPersistInfo.getObject(); final IObjectOutput objectOutput; @@ -1150,21 +1141,27 @@ protected ObjectAndPersistInfo substituteObject( final ObjectAndPersistInfo objectAndPersistInfo) throws ObjectIOException, ObjectIODataCorruptedException { - ObjectAndPersistInfo substituteObjectAndPersistInfo = objectAndPersistInfo - .getSubstituteObjectAndPersistInfo(); - if (substituteObjectAndPersistInfo == null) { - final Object object = objectAndPersistInfo.getObject(); - final ClassInfo classInfo = objectAndPersistInfo.objectClassInfo; - final ISubstituteObjectManager substituteObjectManager = classInfo - .getSubstituteObjectManager(); - final Object substituteObject = substituteObjectManager - .substituteObject(object); - final ClassInfo substituteClassInfo = classInfo - .getSubstituteClassInfo(); - substituteObjectAndPersistInfo = getOrCreateObjectPersistInfoOfObject( - substituteObject, Boolean.FALSE, substituteClassInfo, true/* persisted */); - objectAndPersistInfo - .setSubstituteObjectAndPersistInfo(substituteObjectAndPersistInfo); + ObjectAndPersistInfo substituteObjectAndPersistInfo; + if (objectAndPersistInfo.objectClassInfo.isSubstituted()) { + substituteObjectAndPersistInfo = objectAndPersistInfo + .getSubstituteObjectAndPersistInfo(); + if (substituteObjectAndPersistInfo == null) { + final Object object = objectAndPersistInfo.getObject(); + final ClassInfo classInfo = objectAndPersistInfo.objectClassInfo; + final ISubstituteObjectManager substituteObjectManager = classInfo + .getSubstituteObjectManager(); + final Object substituteObject = substituteObjectManager + .substituteObject(object); + final ClassInfo substituteClassInfo = classInfo + .getSubstituteClassInfo(); + substituteObjectAndPersistInfo = getOrCreateObjectPersistInfoOfObject( + substituteObject, Boolean.FALSE, substituteClassInfo, + true/* persisted */); + objectAndPersistInfo + .setSubstituteObjectAndPersistInfo(substituteObjectAndPersistInfo); + } + } else { + substituteObjectAndPersistInfo = null;// NOPMD } return substituteObjectAndPersistInfo; } 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 08:46:43 UTC (rev 2928) +++ trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/AbstractObjectIOManagerKeptInMemory.java 2011-10-18 02:55:27 UTC (rev 2929) @@ -83,14 +83,24 @@ protected ObjectAndPersistInfo keptInMemorysubstituteObject( final ObjectAndPersistInfo objectAndPersistInfo) throws ObjectIOException, ObjectIODataCorruptedException { + final ObjectAndPersistInfo substituteObjectAndPersistInfo; + if (objectAndPersistInfo.objectClassInfo.isKeptInMemory()) { - final Object originalObject = objectAndPersistInfo.getObject(); - final Object substituteObject = keptInMemorySubstituteObjectManager - .substituteObject(originalObject); - final ObjectAndPersistInfo substituteObjectAndPersistInfo = getOrCreateObjectPersistInfoOfObject( - substituteObject, Boolean.FALSE, substituteClassInfo, true/* persisted */); - objectAndPersistInfo - .setSubstituteObjectAndPersistInfo(substituteObjectAndPersistInfo); + final Object originalObject = objectAndPersistInfo.getObject(); + final Object substituteObject = keptInMemorySubstituteObjectManager + .substituteObject(originalObject); + if (substituteObject == null) { + substituteObjectAndPersistInfo = null; + } else { + substituteObjectAndPersistInfo = getOrCreateObjectPersistInfoOfObject( + substituteObject, Boolean.FALSE, substituteClassInfo, + true/* persisted */); + objectAndPersistInfo + .setSubstituteObjectAndPersistInfo(substituteObjectAndPersistInfo); + } + } else { + substituteObjectAndPersistInfo = null; + } return substituteObjectAndPersistInfo; } 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 08:46:43 UTC (rev 2928) +++ trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/ObjectIOManager.java 2011-10-18 02:55:27 UTC (rev 2929) @@ -393,13 +393,13 @@ ObjectIOTooBigForSerializationException { final ClassInfo classInfo = objectAndPersistInfo.objectClassInfo; - final ObjectAndPersistInfo toWrite; - if (classInfo.isKeptInMemory()) { - toWrite = keptInMemorysubstituteObject(objectAndPersistInfo); - } else if (classInfo.isSubstituted()) { + ObjectAndPersistInfo toWrite; + toWrite = keptInMemorysubstituteObject(objectAndPersistInfo); + if (toWrite == null) { toWrite = substituteObject(objectAndPersistInfo); - } else { - toWrite = objectAndPersistInfo; + if (toWrite == null) { + toWrite = objectAndPersistInfo; + } } if (!objectAndPersistInfo.isLoadedOrNotAProxy()) { throw new ObjectIOException("can not store not loaded object"); Modified: trunk/joafip/src/test/java/net/sf/joafip/service/rel300/TestKeptInMemory.java =================================================================== --- trunk/joafip/src/test/java/net/sf/joafip/service/rel300/TestKeptInMemory.java 2011-10-17 08:46:43 UTC (rev 2928) +++ trunk/joafip/src/test/java/net/sf/joafip/service/rel300/TestKeptInMemory.java 2011-10-18 02:55:27 UTC (rev 2929) @@ -22,12 +22,15 @@ */ package net.sf.joafip.service.rel300; +import java.util.Map; + import net.sf.joafip.AbstractDeleteFileTestCase; import net.sf.joafip.NotStorableClass; import net.sf.joafip.StorableAccess; import net.sf.joafip.TestConstant; import net.sf.joafip.TestException; import net.sf.joafip.entity.EnumFilePersistenceCloseAction; +import net.sf.joafip.java.util.PTreeMap; import net.sf.joafip.service.FilePersistenceBuilder; import net.sf.joafip.service.FilePersistenceClassNotFoundException; import net.sf.joafip.service.FilePersistenceDataCorruptedException; @@ -50,6 +53,8 @@ @StorableAccess public class TestKeptInMemory extends AbstractDeleteFileTestCase { + private static final String MUST_BE_SAME_INSTANCE = "must be same instance"; + private static final String KEY1 = "key1"; private static final String KEY2 = "key2"; @@ -65,7 +70,7 @@ } @Override - protected void setUp() throws Exception { + protected void setUp() throws Exception { // NOPMD super.setUp(); // filePersistence = new FilePersistence(1, null, path, // /**/true/* remove files */, @@ -80,7 +85,7 @@ } @Override - protected void tearDown() throws Exception { + protected void tearDown() throws Exception { // NOPMD try { filePersistence.close(); } catch (final Throwable throwable) {// NOPMD @@ -116,12 +121,12 @@ dataAccessSession.open(); bobContainer1 = (BobContainer) dataAccessSession.getObject(KEY1); - assertSame("must be same instance", keptInMemoryObject, + assertSame(MUST_BE_SAME_INSTANCE, keptInMemoryObject, bobContainer1.getObject1()); final Bob1 bob1Read = (Bob1) bobContainer1.getObject2(); assertNotSame("must no be same object", bob1, bob1Read); bobContainer2 = (BobContainer) dataAccessSession.getObject(KEY2); - assertSame("must be same instance", keptInMemoryObject, + assertSame(MUST_BE_SAME_INSTANCE, keptInMemoryObject, bobContainer2.getObject1()); } @@ -148,7 +153,40 @@ dataAccessSession.open(); bobSerializable = (BobSerializable) dataAccessSession.getObject(KEY1); - assertSame("must be same instance", keptInMemoryObject, + assertSame(MUST_BE_SAME_INSTANCE, keptInMemoryObject, bobSerializable.getObject()); } + + @SuppressWarnings("unchecked") + public void testClassPersistedAndOneInstanceKeptInMemory() + throws FilePersistenceException, + FilePersistenceClassNotFoundException, + FilePersistenceInvalidClassException, + FilePersistenceDataCorruptedException, + FilePersistenceNotSerializableException, + FilePersistenceTooBigForSerializationException { + final Map<String, String> keptInMemoryMap = new PTreeMap<String, String>(); + keptInMemoryMap.put("key1", "value1"); + filePersistence.keptInMemory("map", keptInMemoryMap); + BobContainer bobContainer = new BobContainer(); + bobContainer.setObject1(keptInMemoryMap); + Map<String, String> storedmap = new PTreeMap<String, String>(); + storedmap.put("key2", "value2"); + bobContainer.setObject2(storedmap); + final IDataAccessSession dataAccessSession = filePersistence + .createDataAccessSession(); + + dataAccessSession.open(); + dataAccessSession.setObject(KEY1, bobContainer); + dataAccessSession.close(EnumFilePersistenceCloseAction.SAVE); + storedmap.clear(); + + dataAccessSession.open(); + bobContainer = (BobContainer) dataAccessSession.getObject(KEY1); + assertSame(MUST_BE_SAME_INSTANCE, keptInMemoryMap, + bobContainer.getObject1()); + storedmap = (Map<String, String>) bobContainer.getObject2(); + assertEquals("bad content", "value2", storedmap.get("key2")); + dataAccessSession.close(EnumFilePersistenceCloseAction.SAVE); + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <luc...@us...> - 2011-10-18 02:55:33
|
Revision: 2929 http://joafip.svn.sourceforge.net/joafip/?rev=2929&view=rev Author: luc_peuvrier Date: 2011-10-18 02:55:27 +0000 (Tue, 18 Oct 2011) Log Message: ----------- some instances of same class can be kept in memory and other not Modified Paths: -------------- 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/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/test/java/net/sf/joafip/service/rel300/TestKeptInMemory.java Added Paths: ----------- trunk/joafip/src/test/java/net/sf/joafip/entity/rel300/ 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-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 04:43:29
|
Revision: 2927 http://joafip.svn.sourceforge.net/joafip/?rev=2927&view=rev Author: luc_peuvrier Date: 2011-10-17 04:43:22 +0000 (Mon, 17 Oct 2011) Log Message: ----------- substitution 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/copier/AbstractDeepCopy.java trunk/joafip/src/main/java/net/sf/joafip/store/service/copier/DeepCopier.java trunk/joafip/src/main/java/net/sf/joafip/store/service/copier/IDeepCopyServiceDelegate.java trunk/joafip/src/main/java/net/sf/joafip/store/service/copier/ToProxyDeepCopier.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/SerializerObjectIOManager.java trunk/joafip/src/test/java/net/sf/joafip/store/service/copier/AbstractTestDeepCopier.java trunk/joafip/src/test/java/net/sf/joafip/store/service/objectio/serialize/AbstractObjectIOTest.java Added Paths: ----------- trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/AbstractObjectIOManagerKeptInMemory.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 03:49:21 UTC (rev 2926) +++ trunk/joafip/src/main/java/net/sf/joafip/store/entity/classinfo/ClassInfo.java 2011-10-17 04:43:22 UTC (rev 2927) @@ -237,9 +237,6 @@ private final Map<Integer, Map<Integer, Deque<ClassReplacementDef>>> conversionMap = /**/new TreeMap<Integer, Map<Integer, Deque<ClassReplacementDef>>>(); - /** true if this is a class of object kept in memory */ - private boolean keptInMemory; - private AbstractConverter binaryConverter; /** binary form size, -1 for unknown size */ @@ -657,7 +654,7 @@ || stringType || storeNotLazy || storeSerializeAndGZippedInOneRecord || storeSerializeAndZippedInOneRecord - || storeSerializeInOneRecord || keptInMemory; + || storeSerializeInOneRecord; } private void initializeFieldInfo() throws ClassInfoException { @@ -1456,8 +1453,6 @@ stringBuilder.append(allDeclaredFieldsForGenericIO); stringBuilder.append("\nconversionMap="); stringBuilder.append(conversionMap); - stringBuilder.append("\nkeptInMemory="); - stringBuilder.append(keptInMemory); return stringBuilder.toString(); } @@ -1587,14 +1582,6 @@ return proxyable; } - public void setKeptInMemory() { - keptInMemory = true; - } - - public boolean isKeptInMemory() { - return keptInMemory; - } - public void setBinaryConverter(final AbstractConverter binaryConverter) { this.binaryConverter = binaryConverter; this.binarySize = binaryConverter.byteSize(); 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 03:49:21 UTC (rev 2926) +++ trunk/joafip/src/main/java/net/sf/joafip/store/service/AbstractDelegatingToStoreManagers.java 2011-10-17 04:43:22 UTC (rev 2927) @@ -74,7 +74,6 @@ import net.sf.joafip.store.service.heaprecordable.HeapRecordableException; import net.sf.joafip.store.service.heaprecordable.HeapRecordableManager; import net.sf.joafip.store.service.kept.EnumSubstituteManager; -import net.sf.joafip.store.service.kept.KeptInMemoryObjectManager; import net.sf.joafip.store.service.objectio.ObjectIOClassNotFoundException; import net.sf.joafip.store.service.objectio.ObjectIODataCorruptedException; import net.sf.joafip.store.service.objectio.ObjectIODataRecordNotFoundException; @@ -156,9 +155,6 @@ private ConversionManager conversionManager; - private final KeptInMemoryObjectManager keptInMemorySubstituteObjectManager = - /**/new KeptInMemoryObjectManager(); - private final EnumSubstituteManager enumSubstituteManager = /**/new EnumSubstituteManager(); @@ -582,20 +578,17 @@ public void keptInMemory(final String key, final Object object) throws StoreException { final Class<? extends Object> objectClass = object.getClass(); - ClassInfo classInfo; - try { - classInfo = classInfoFactory.getNoProxyClassInfo(objectClass); - } catch (final ClassInfoException exception) { - throw new StoreException(exception); - } - // FIXMELUC ___________________not good classInfo.setKeptInMemory() - classInfo.setKeptInMemory(); setSubstituteObjectManager(objectClass, KeptInMemoryObjectKey.class, - keptInMemorySubstituteObjectManager); - keptInMemorySubstituteObjectManager.addObject(key, object); + objectIOManager.getKeptInMemorySubstituteObjectManager()); + objectIOManager.addObject(key, object); } @Override + public boolean isKeptInMemory(final Object object) { + return objectIOManager.isKeptInMemory(object); + } + + @Override public void referencedByPesistedStaticField( final Class<?> classHavingStaticFieldReferenced) throws StoreException { @@ -632,7 +625,7 @@ @Override public String keyOfObjectKeptInMemory(final Object object) { - return keptInMemorySubstituteObjectManager.keyOfObject(object); + return objectIOManager.keyOfObject(object); } @Override Modified: trunk/joafip/src/main/java/net/sf/joafip/store/service/copier/AbstractDeepCopy.java =================================================================== --- trunk/joafip/src/main/java/net/sf/joafip/store/service/copier/AbstractDeepCopy.java 2011-10-17 03:49:21 UTC (rev 2926) +++ trunk/joafip/src/main/java/net/sf/joafip/store/service/copier/AbstractDeepCopy.java 2011-10-17 04:43:22 UTC (rev 2927) @@ -86,6 +86,8 @@ protected transient ClassInfoFactory classInfoFactory; + protected transient IDeepCopyServiceDelegate deepCopyServiceDelagate; + protected AbstractDeepCopy() { super(); } @@ -105,6 +107,7 @@ final boolean forceLoad) throws CopierException { this.rootSourceObject = rootSourceObject; this.classInfoFactory = deepCopyServiceDelagate.getClassInfoFactory(); + this.deepCopyServiceDelagate = deepCopyServiceDelagate; final IProxyManagerForObjectIO proxyManager2 = deepCopyServiceDelagate .getProxyManager2(); final Object sourceCopy; Modified: trunk/joafip/src/main/java/net/sf/joafip/store/service/copier/DeepCopier.java =================================================================== --- trunk/joafip/src/main/java/net/sf/joafip/store/service/copier/DeepCopier.java 2011-10-17 03:49:21 UTC (rev 2926) +++ trunk/joafip/src/main/java/net/sf/joafip/store/service/copier/DeepCopier.java 2011-10-17 04:43:22 UTC (rev 2927) @@ -81,7 +81,8 @@ @Override protected boolean mustBeCopied(final Object objectToCopy, final ClassInfo classInfo) { - return true ^ (classInfo.isKeptInMemory() || classInfo.isEnumType()); + return true ^ (deepCopyServiceDelagate.isKeptInMemory(objectToCopy) || classInfo + .isEnumType()); } @Override Modified: trunk/joafip/src/main/java/net/sf/joafip/store/service/copier/IDeepCopyServiceDelegate.java =================================================================== --- trunk/joafip/src/main/java/net/sf/joafip/store/service/copier/IDeepCopyServiceDelegate.java 2011-10-17 03:49:21 UTC (rev 2926) +++ trunk/joafip/src/main/java/net/sf/joafip/store/service/copier/IDeepCopyServiceDelegate.java 2011-10-17 04:43:22 UTC (rev 2927) @@ -43,4 +43,6 @@ Object newInstance(Class<?> objectClass); Object newInstanceNoConstruction(ClassInfo objectClassInfo); + + boolean isKeptInMemory(Object object); } Modified: trunk/joafip/src/main/java/net/sf/joafip/store/service/copier/ToProxyDeepCopier.java =================================================================== --- trunk/joafip/src/main/java/net/sf/joafip/store/service/copier/ToProxyDeepCopier.java 2011-10-17 03:49:21 UTC (rev 2926) +++ trunk/joafip/src/main/java/net/sf/joafip/store/service/copier/ToProxyDeepCopier.java 2011-10-17 04:43:22 UTC (rev 2927) @@ -167,7 +167,7 @@ protected boolean mustBeCopied(final Object objectToCopy, final ClassInfo objectToCopyClassInfo) throws CopierException { try { - return !(objectToCopyClassInfo.isKeptInMemory() + return !(deepCopyServiceDelagate.isKeptInMemory(objectToCopy) || objectToCopyClassInfo.isWriteSubstituted() || objectToCopyClassInfo.isStoreInOneReccord() || objectToCopyClassInfo.isBasicType() @@ -194,7 +194,7 @@ throw new CopierException("must not copy not loaded proxy"); } newInstance = sourceObject; - } else if (sourceObjectClassInfo.isKeptInMemory() + } else if (deepCopyServiceDelagate.isKeptInMemory(sourceObject) || sourceObjectClassInfo.isSubstituted() || sourceObjectClassInfo.isStoreNotLazy() || sourceObjectClassInfo.isSubstituted() 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 03:49:21 UTC (rev 2926) +++ trunk/joafip/src/main/java/net/sf/joafip/store/service/kept/KeptInMemoryObjectManager.java 2011-10-17 04:43:22 UTC (rev 2927) @@ -59,6 +59,10 @@ } } + public boolean isKeptInMemory(final Object object) { + return keyByObjectMap.containsKey(object); + } + public String keyOfObject(final Object object) { final KeptInMemoryObjectKey keptInMemoryObjectKey = keyByObjectMap .get(object); 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 03:49:21 UTC (rev 2926) +++ trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/AbstractObjectIOManagerDelegatingToStateMap.java 2011-10-17 04:43:22 UTC (rev 2927) @@ -43,7 +43,7 @@ */ @NotStorableClass public abstract class AbstractObjectIOManagerDelegatingToStateMap extends - AbstractObjectIOManagerIOForObject { + AbstractObjectIOManagerKeptInMemory { 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 03:49:21 UTC (rev 2926) +++ trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/AbstractObjectIOManagerIOForObject.java 2011-10-17 04:43:22 UTC (rev 2927) @@ -1130,7 +1130,6 @@ return true; } - // FIXMELUC ______________________________________substituteObject protected ObjectAndPersistInfo substituteObject( final ObjectAndPersistInfo objectAndPersistInfo) throws ObjectIOException, ObjectIODataCorruptedException { Added: 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 (rev 0) +++ trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/AbstractObjectIOManagerKeptInMemory.java 2011-10-17 04:43:22 UTC (rev 2927) @@ -0,0 +1,82 @@ +/* + * Copyright 2011 Luc Peuvrier + * + * This file is a part of JOAFIP. + * + * JOAFIP is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License. + * + * Licensed under the GNU LESSER GENERAL PUBLIC LICENSE + * Licensed under the LGPL License, Version 3, 29 June 2007 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.gnu.org/licenses/lgpl.html + * + * JOAFIP is distributed in the hope that it will be useful, but + * unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package net.sf.joafip.store.service.objectio.manager; + +import net.sf.joafip.store.service.StoreException; +import net.sf.joafip.store.service.binary.HelperBinaryConversion; +import net.sf.joafip.store.service.classinfo.ClassInfoFactory; +import net.sf.joafip.store.service.kept.KeptInMemoryObjectManager; +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 { + + private final KeptInMemoryObjectManager keptInMemorySubstituteObjectManager = + /**/new KeptInMemoryObjectManager(); + + 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); + } + + public KeptInMemoryObjectManager getKeptInMemorySubstituteObjectManager() { + return keptInMemorySubstituteObjectManager; + } + + public void addObject(final String key, final Object object) + throws StoreException { + keptInMemorySubstituteObjectManager.addObject(key, object); + } + + public String keyOfObject(final Object object) { + return keptInMemorySubstituteObjectManager.keyOfObject(object); + } + + public Object originalObject(final Object substitute) + throws ObjectIOException { + return keptInMemorySubstituteObjectManager.originalObject(substitute); + } + + public Object substituteObject(final Object originalObject) + throws ObjectIOException { + return keptInMemorySubstituteObjectManager + .substituteObject(originalObject); + } + + @Override + public boolean isKeptInMemory(final Object object) { + return keptInMemorySubstituteObjectManager.isKeptInMemory(object); + } +} 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 03:49:21 UTC (rev 2926) +++ trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/SerializerObjectIOManager.java 2011-10-17 04:43:22 UTC (rev 2927) @@ -54,7 +54,7 @@ */ @NotStorableClass public class SerializerObjectIOManager extends - AbstractObjectIOManagerIOForObject { + AbstractObjectIOManagerKeptInMemory { private static final String MUST_NOT_BE_CALLED = "must not be called"; Modified: trunk/joafip/src/test/java/net/sf/joafip/store/service/copier/AbstractTestDeepCopier.java =================================================================== --- trunk/joafip/src/test/java/net/sf/joafip/store/service/copier/AbstractTestDeepCopier.java 2011-10-17 03:49:21 UTC (rev 2926) +++ trunk/joafip/src/test/java/net/sf/joafip/store/service/copier/AbstractTestDeepCopier.java 2011-10-17 04:43:22 UTC (rev 2927) @@ -331,4 +331,9 @@ throws ObjectIOException { // no implementation } + + @Override + public boolean isKeptInMemory(final Object object) { + return false; + } } Modified: trunk/joafip/src/test/java/net/sf/joafip/store/service/objectio/serialize/AbstractObjectIOTest.java =================================================================== --- trunk/joafip/src/test/java/net/sf/joafip/store/service/objectio/serialize/AbstractObjectIOTest.java 2011-10-17 03:49:21 UTC (rev 2926) +++ trunk/joafip/src/test/java/net/sf/joafip/store/service/objectio/serialize/AbstractObjectIOTest.java 2011-10-17 04:43:22 UTC (rev 2927) @@ -535,4 +535,9 @@ throws ObjectIOException { // no implementation } + + @Override + public boolean isKeptInMemory(final Object object) { + return false; + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <luc...@us...> - 2011-10-17 04:43:28
|
Revision: 2927 http://joafip.svn.sourceforge.net/joafip/?rev=2927&view=rev Author: luc_peuvrier Date: 2011-10-17 04:43:22 +0000 (Mon, 17 Oct 2011) Log Message: ----------- substitution 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/copier/AbstractDeepCopy.java trunk/joafip/src/main/java/net/sf/joafip/store/service/copier/DeepCopier.java trunk/joafip/src/main/java/net/sf/joafip/store/service/copier/IDeepCopyServiceDelegate.java trunk/joafip/src/main/java/net/sf/joafip/store/service/copier/ToProxyDeepCopier.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/SerializerObjectIOManager.java trunk/joafip/src/test/java/net/sf/joafip/store/service/copier/AbstractTestDeepCopier.java trunk/joafip/src/test/java/net/sf/joafip/store/service/objectio/serialize/AbstractObjectIOTest.java Added Paths: ----------- trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/AbstractObjectIOManagerKeptInMemory.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 03:49:28
|
Revision: 2926 http://joafip.svn.sourceforge.net/joafip/?rev=2926&view=rev Author: luc_peuvrier Date: 2011-10-17 03:49:21 +0000 (Mon, 17 Oct 2011) Log Message: ----------- substitution management refactoring Modified Paths: -------------- trunk/joafip/src/main/java/net/sf/joafip/service/AbstractFilePersistenceDelegatingToStore.java trunk/joafip/src/main/java/net/sf/joafip/service/FilePersistence.java trunk/joafip/src/main/java/net/sf/joafip/service/IFilePersistence.java trunk/joafip/src/main/java/net/sf/joafip/store/entity/classinfo/ClassInfo.java trunk/joafip/src/main/java/net/sf/joafip/store/entity/classinfo/ClassInfoAttributes.java trunk/joafip/src/main/java/net/sf/joafip/store/service/IStore.java trunk/joafip/src/main/java/net/sf/joafip/store/service/Store.java trunk/joafip/src/main/java/net/sf/joafip/store/service/classinfo/ClassInfoFactory.java trunk/joafip/src/main/java/net/sf/joafip/store/service/classinfo/IClassInfoFactory.java trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/AbstractObjectIOManagerIOForObject.java trunk/joafip/src/test/java/net/sf/joafip/service/bug/savenum/TestEnumKeptInMemory.java trunk/joafip/src/test/java/net/sf/joafip/store/entity/classinfo/AbstractClassInfoTest.java trunk/joafip/src/test/java/net/sf/joafip/store/service/StoreForTest.java trunk/joafip-testsuite/src/main/java/net/sf/joafip/InErrorTests.java Modified: trunk/joafip/src/main/java/net/sf/joafip/service/AbstractFilePersistenceDelegatingToStore.java =================================================================== --- trunk/joafip/src/main/java/net/sf/joafip/service/AbstractFilePersistenceDelegatingToStore.java 2011-10-17 02:46:26 UTC (rev 2925) +++ trunk/joafip/src/main/java/net/sf/joafip/service/AbstractFilePersistenceDelegatingToStore.java 2011-10-17 03:49:21 UTC (rev 2926) @@ -233,43 +233,43 @@ } @Override - public void setSubstitution(final Class<?> replaced, + public void setWriteSubstitution(final Class<?> replaced, final Class<?> substitute, final ISubsituteSynchronizer synchronizer) throws FilePersistenceException { try { - store.setSubstitution(replaced, substitute, synchronizer); + store.setWriteSubstitution(replaced, substitute, synchronizer); } catch (final StoreException exception) { throw new FilePersistenceException(exception); } } @Override - public void removeSubstitution(final Class<?> replaced) + public void removeWriteSubstitution(final Class<?> replaced) throws FilePersistenceException { try { - store.removeSubstitution(replaced); + store.removeWriteSubstitution(replaced); } catch (final StoreException exception) { throw new FilePersistenceException(exception); } } @Override - public void setSubstitution(final String replacedName, + public void setWriteSubstitution(final String replacedName, final Class<?> substitute, final ISubsituteSynchronizer synchronizer) throws FilePersistenceException { try { - store.setSubstitution(replacedName, substitute, synchronizer); + store.setWriteSubstitution(replacedName, substitute, synchronizer); } catch (final StoreException exception) { throw new FilePersistenceException(exception); } } @Override - public void removeSubstitution(final String replacedName) + public void removeWriteSubstitution(final String replacedName) throws FilePersistenceException, FilePersistenceClassNotFoundException { try { - store.removeSubstitution(replacedName); + store.removeWriteSubstitution(replacedName); } catch (final StoreException exception) { throw new FilePersistenceException(exception); } catch (final StoreClassNotFoundException exception) { Modified: trunk/joafip/src/main/java/net/sf/joafip/service/FilePersistence.java =================================================================== --- trunk/joafip/src/main/java/net/sf/joafip/service/FilePersistence.java 2011-10-17 02:46:26 UTC (rev 2925) +++ trunk/joafip/src/main/java/net/sf/joafip/service/FilePersistence.java 2011-10-17 03:49:21 UTC (rev 2926) @@ -308,7 +308,7 @@ .forName(synchronizerClassName); final ISubsituteSynchronizer synchronizer = synchronizerClass .newInstance(); - setSubstitution(toSubstituteClass, substituteClass, + setWriteSubstitution(toSubstituteClass, substituteClass, synchronizer); } catch (final ClassNotFoundException exception) { throw new FilePersistenceException(exception); Modified: trunk/joafip/src/main/java/net/sf/joafip/service/IFilePersistence.java =================================================================== --- trunk/joafip/src/main/java/net/sf/joafip/service/IFilePersistence.java 2011-10-17 02:46:26 UTC (rev 2925) +++ trunk/joafip/src/main/java/net/sf/joafip/service/IFilePersistence.java 2011-10-17 03:49:21 UTC (rev 2926) @@ -126,7 +126,7 @@ /** * record a class substitution at write<br> * if class is not accessible see - * {@link #setSubstitution(String, Class, ISubsituteSynchronizer)} <br> + * {@link #setWriteSubstitution(String, Class, ISubsituteSynchronizer)} <br> * (PROPS) can be set using properties file see * {@link net.sf.joafip.service.FilePersistence#FilePersistence(String, boolean)} * <br> @@ -139,11 +139,12 @@ * the state synchronizer for class and its substitute * @throws FilePersistenceException */ - void setSubstitution(Class<?> replaced, Class<?> substitute, + void setWriteSubstitution(Class<?> replaced, Class<?> substitute, ISubsituteSynchronizer synchronizer) throws FilePersistenceException; - void removeSubstitution(Class<?> replaced) throws FilePersistenceException; + void removeWriteSubstitution(Class<?> replaced) + throws FilePersistenceException; /** * record a class substitution at write<br> @@ -159,11 +160,11 @@ * the state synchronizer for class and its substitute * @throws FilePersistenceException */ - void setSubstitution(String replacedName, Class<?> substitute, + void setWriteSubstitution(String replacedName, Class<?> substitute, ISubsituteSynchronizer synchronizer) throws FilePersistenceException; - void removeSubstitution(String replacedName) + void removeWriteSubstitution(String replacedName) throws FilePersistenceException, FilePersistenceClassNotFoundException; 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 02:46:26 UTC (rev 2925) +++ trunk/joafip/src/main/java/net/sf/joafip/store/entity/classinfo/ClassInfo.java 2011-10-17 03:49:21 UTC (rev 2926) @@ -940,24 +940,20 @@ notCheckedMethodSet.add(absoluteMethodName); } - public void setSubstitute(final ClassInfo substituteClassInfo, + public void setSubstituted(final ClassInfo substituteClassInfo, final ISubstituteObjectManager substituteObjectManager) { substituted = true; this.substituteObjectManager = substituteObjectManager; this.substituteClassInfo = substituteClassInfo; + substituteClassInfo.substituteObjectManager = substituteObjectManager; + substituteClassInfo.substitution = true; + substituteClassInfo.substituteOfClassInfo = this; } public boolean isSubstituted() { return substituted; } - public void setSubstituteOf(final ClassInfo substituteOfClassInfo, - final ISubstituteObjectManager substituteObjectManager) { - substitution = true; - this.substituteObjectManager = substituteObjectManager; - this.substituteOfClassInfo = substituteOfClassInfo; - } - public ClassInfo getSubstituteOfClassInfo() { return substituteOfClassInfo; } @@ -1139,7 +1135,7 @@ this.useSpecificObjectIO = useSpecificObjectIO; } - public void setSubstitution(final ClassInfo substituteClassInfo, + public void setWriteSubstituted(final ClassInfo substituteClassInfo, final ISubsituteSynchronizer subsituteSynchronizer) { this.substituteClassInfo = substituteClassInfo; this.subsituteSynchronizer = subsituteSynchronizer; Modified: trunk/joafip/src/main/java/net/sf/joafip/store/entity/classinfo/ClassInfoAttributes.java =================================================================== --- trunk/joafip/src/main/java/net/sf/joafip/store/entity/classinfo/ClassInfoAttributes.java 2011-10-17 02:46:26 UTC (rev 2925) +++ trunk/joafip/src/main/java/net/sf/joafip/store/entity/classinfo/ClassInfoAttributes.java 2011-10-17 03:49:21 UTC (rev 2926) @@ -63,7 +63,7 @@ private ISubstituteObjectManager substituteObjectManager; - private Class<?> substitute; + private Class<?> writeSubstitution; private ISubsituteSynchronizer synchronizer; @@ -172,14 +172,14 @@ return substituteObjectManager; } - public void setSubstitution(final Class<?> substitute, + public void setWriteSubstitution(final Class<?> writeSubstitution, final ISubsituteSynchronizer synchronizer) { - this.substitute = substitute; + this.writeSubstitution = writeSubstitution; this.synchronizer = synchronizer; } - public Class<?> getSubstitute() { - return substitute; + public Class<?> getWriteSubstition() { + return writeSubstitution; } public ISubsituteSynchronizer getSynchronizer() { Modified: trunk/joafip/src/main/java/net/sf/joafip/store/service/IStore.java =================================================================== --- trunk/joafip/src/main/java/net/sf/joafip/store/service/IStore.java 2011-10-17 02:46:26 UTC (rev 2925) +++ trunk/joafip/src/main/java/net/sf/joafip/store/service/IStore.java 2011-10-17 03:49:21 UTC (rev 2926) @@ -135,15 +135,15 @@ * the state synchronizer for class and its substitute * @throws StoreException */ - void setSubstitution(Class<?> replaced, Class<?> substitute, + void setWriteSubstitution(Class<?> replaced, Class<?> substitute, ISubsituteSynchronizer synchronizer) throws StoreException; - void removeSubstitution(Class<?> replaced) throws StoreException; + void removeWriteSubstitution(Class<?> replaced) throws StoreException; - void setSubstitution(String replacedName, Class<?> substitute, + void setWriteSubstitution(String replacedName, Class<?> substitute, ISubsituteSynchronizer synchronizer) throws StoreException; - void removeSubstitution(String replacedName) throws StoreException, + void removeWriteSubstitution(String replacedName) throws StoreException, StoreClassNotFoundException; /** Modified: trunk/joafip/src/main/java/net/sf/joafip/store/service/Store.java =================================================================== --- trunk/joafip/src/main/java/net/sf/joafip/store/service/Store.java 2011-10-17 02:46:26 UTC (rev 2925) +++ trunk/joafip/src/main/java/net/sf/joafip/store/service/Store.java 2011-10-17 03:49:21 UTC (rev 2926) @@ -224,54 +224,56 @@ final MapSynchronizer mapSynchronizer = new MapSynchronizer(); final ListSynchronizer listSynchronizer = new ListSynchronizer(); - setSubstitution(Vector.class, PVector.class, listSynchronizer); + setWriteSubstitution(Vector.class, PVector.class, listSynchronizer); - setSubstitution(LinkedList.class, PLinkedList.class, + setWriteSubstitution(LinkedList.class, PLinkedList.class, listSynchronizer); - setSubstitution(ArrayList.class, PArrayList.class, listSynchronizer); + setWriteSubstitution(ArrayList.class, PArrayList.class, + listSynchronizer); - setSubstitution(HashSet.class, PHashSet.class, setSynchronizer); + setWriteSubstitution(HashSet.class, PHashSet.class, setSynchronizer); - setSubstitution(LinkedHashSet.class, PLinkedHashSet.class, + setWriteSubstitution(LinkedHashSet.class, PLinkedHashSet.class, setSynchronizer); - setSubstitution(TreeSet.class, PTreeSet.class, setSynchronizer); + setWriteSubstitution(TreeSet.class, PTreeSet.class, setSynchronizer); - setSubstitution(Hashtable.class, PHashMap.class, mapSynchronizer); + setWriteSubstitution(Hashtable.class, PHashMap.class, + mapSynchronizer); - setSubstitution(HashMap.class, PHashMap.class, mapSynchronizer); + setWriteSubstitution(HashMap.class, PHashMap.class, mapSynchronizer); - setSubstitution(ConcurrentHashMap.class, PConcurrentHashMap.class, - mapSynchronizer); + setWriteSubstitution(ConcurrentHashMap.class, + PConcurrentHashMap.class, mapSynchronizer); - setSubstitution(LinkedHashMap.class, PLinkedHashMap.class, + setWriteSubstitution(LinkedHashMap.class, PLinkedHashMap.class, mapSynchronizer); - setSubstitution(TreeMap.class, PTreeMap.class, mapSynchronizer); + setWriteSubstitution(TreeMap.class, PTreeMap.class, mapSynchronizer); } else { - removeSubstitution(Vector.class); + removeWriteSubstitution(Vector.class); - removeSubstitution(LinkedList.class); + removeWriteSubstitution(LinkedList.class); - removeSubstitution(ArrayList.class); + removeWriteSubstitution(ArrayList.class); - removeSubstitution(HashSet.class); + removeWriteSubstitution(HashSet.class); - removeSubstitution(LinkedHashSet.class); + removeWriteSubstitution(LinkedHashSet.class); - removeSubstitution(TreeSet.class); + removeWriteSubstitution(TreeSet.class); - removeSubstitution(Hashtable.class); + removeWriteSubstitution(Hashtable.class); - removeSubstitution(HashMap.class); + removeWriteSubstitution(HashMap.class); - removeSubstitution(ConcurrentHashMap.class); + removeWriteSubstitution(ConcurrentHashMap.class); - removeSubstitution(LinkedHashMap.class); + removeWriteSubstitution(LinkedHashMap.class); - removeSubstitution(TreeMap.class); + removeWriteSubstitution(TreeMap.class); } } @@ -349,7 +351,7 @@ } @Override - public final void setSubstitution(final Class<?> replacedClass, + public final void setWriteSubstitution(final Class<?> replacedClass, final Class<?> substituteClass, final ISubsituteSynchronizer subsituteSynchronizer) throws StoreException { @@ -359,7 +361,7 @@ .getNoProxyClassInfo(replacedClass); final ClassInfo substituteClassInfo = classInfoFactory .getNoProxyClassInfo(substituteClass); - replacedClassInfo.setSubstitution(substituteClassInfo, + replacedClassInfo.setWriteSubstituted(substituteClassInfo, subsituteSynchronizer); } catch (final ClassInfoException exception) { throw new StoreException(exception); @@ -368,7 +370,7 @@ } @Override - public void removeSubstitution(final Class<?> replacedClass) + public void removeWriteSubstitution(final Class<?> replacedClass) throws StoreException { synchronized (mutex) { try { @@ -382,12 +384,12 @@ } @Override - public void setSubstitution(final String replacedName, + public void setWriteSubstitution(final String replacedName, final Class<?> substitute, final ISubsituteSynchronizer synchronizer) throws StoreException { synchronized (mutex) { try { - classInfoFactory.setSubstitution(replacedName, substitute, + classInfoFactory.setWriteSubstitution(replacedName, substitute, synchronizer); } catch (final ClassInfoException exception) { throw new StoreException(exception); @@ -396,7 +398,7 @@ } @Override - public void removeSubstitution(final String replacedName) + public void removeWriteSubstitution(final String replacedName) throws StoreException, StoreClassNotFoundException { synchronized (mutex) { try { @@ -773,10 +775,8 @@ .getNoProxyClassInfo(objectClass); final ClassInfo substituteClassInfo = classInfoFactory .getNoProxyClassInfo(substituteObjectClass); - classInfo.setSubstitute(substituteClassInfo, + classInfo.setSubstituted(substituteClassInfo, substituteObjectManager); - substituteClassInfo.setSubstituteOf(classInfo, - substituteObjectManager); } catch (final Exception exception) { throw new StoreException(exception); } Modified: trunk/joafip/src/main/java/net/sf/joafip/store/service/classinfo/ClassInfoFactory.java =================================================================== --- trunk/joafip/src/main/java/net/sf/joafip/store/service/classinfo/ClassInfoFactory.java 2011-10-17 02:46:26 UTC (rev 2925) +++ trunk/joafip/src/main/java/net/sf/joafip/store/service/classinfo/ClassInfoFactory.java 2011-10-17 03:49:21 UTC (rev 2926) @@ -394,15 +394,13 @@ if (classInfoAttributes.haveSubstituteObjectManager()) { final ClassInfo substituteClassInfo = getNoProxyClassInfo(classInfoAttributes .getSubstituteObjectClass()); - classInfo.setSubstitute(substituteClassInfo, + classInfo.setSubstituted(substituteClassInfo, classInfoAttributes.getSubstituteObjectManager()); - substituteClassInfo.setSubstituteOf(classInfo, - classInfoAttributes.getSubstituteObjectManager()); } - if (classInfoAttributes.getSubstitute() != null) { + if (classInfoAttributes.getWriteSubstition() != null) { final ClassInfo substituteClassInfo = getNoProxyClassInfo(classInfoAttributes - .getSubstitute()); - classInfo.setSubstitution(substituteClassInfo, + .getWriteSubstition()); + classInfo.setWriteSubstituted(substituteClassInfo, classInfoAttributes.getSynchronizer()); } if (classInfoAttributes.getObjectInput() != null @@ -556,24 +554,24 @@ substituteObjectClass, substituteObjectManager); } else { final ClassInfo substituteClassInfo = getNoProxyClassInfo(substituteObjectClass); - classInfo.setSubstitute(substituteClassInfo, + classInfo.setSubstituted(substituteClassInfo, substituteObjectManager); - substituteClassInfo.setSubstituteOf(classInfo, + substituteClassInfo.setSubstituted(classInfo, substituteObjectManager); } } @Override - public void setSubstitution(final String replacedName, + public void setWriteSubstitution(final String replacedName, final Class<?> substitute, final ISubsituteSynchronizer synchronizer) throws ClassInfoException { final ClassInfo classInfo = classInfoMap.get(replacedName); if (classInfo == null) { final ClassInfoAttributes classInfoAttributes = getOrCreateClassInfoAttribute(replacedName); - classInfoAttributes.setSubstitution(substitute, synchronizer); + classInfoAttributes.setWriteSubstitution(substitute, synchronizer); } else { final ClassInfo substituteClassInfo = getNoProxyClassInfo(substitute); - classInfo.setSubstitution(substituteClassInfo, synchronizer); + classInfo.setWriteSubstituted(substituteClassInfo, synchronizer); } } Modified: trunk/joafip/src/main/java/net/sf/joafip/store/service/classinfo/IClassInfoFactory.java =================================================================== --- trunk/joafip/src/main/java/net/sf/joafip/store/service/classinfo/IClassInfoFactory.java 2011-10-17 02:46:26 UTC (rev 2925) +++ trunk/joafip/src/main/java/net/sf/joafip/store/service/classinfo/IClassInfoFactory.java 2011-10-17 03:49:21 UTC (rev 2926) @@ -101,7 +101,7 @@ ISubstituteObjectManager substituteObjectManager) throws ClassInfoException; - void setSubstitution(String replacedName, Class<?> substitute, + void setWriteSubstitution(String replacedName, Class<?> substitute, ISubsituteSynchronizer synchronizer) throws ClassInfoException; void setObjectIOForClass(String objectClassName, IObjectInput objectInput, 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 02:46:26 UTC (rev 2925) +++ trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/AbstractObjectIOManagerIOForObject.java 2011-10-17 03:49:21 UTC (rev 2926) @@ -595,10 +595,8 @@ if (objectAndPersistInfo == null) { objectAndPersistInfo = createObjectReadingInStore( dataRecordIdentifier, notLazy); - } else if (objectAndPersistInfo.isSubstitution()) { - objectAndPersistInfo = substitutionOrOriginal(objectAndPersistInfo); } - return objectAndPersistInfo; + return original(objectAndPersistInfo); } /** @@ -710,7 +708,7 @@ } notToGarbage(dataRecordIdentifier, objectAndPersistInfo); - return substitutionOrOriginal(objectAndPersistInfo); + return original(objectAndPersistInfo); } private boolean assertOriginalClassInfo(final ClassInfo classInfo, @@ -927,15 +925,15 @@ return replacementDefList; } - protected ObjectAndPersistInfo substitutionOrOriginal( + protected ObjectAndPersistInfo original( final ObjectAndPersistInfo objectAndPersistInfo) throws ObjectIOException, ObjectIODataCorruptedException, ObjectIODataRecordNotFoundException, ObjectIOInvalidClassException, ObjectIOClassNotFoundException, ObjectIONotSerializableException { final ObjectAndPersistInfo result; if (objectAndPersistInfo.isSubstitution()) { - final ClassInfo classInfo2 = objectAndPersistInfo.objectClassInfo; - final ISubstituteObjectManager substituteObjectManager = classInfo2 + final ClassInfo classInfo = objectAndPersistInfo.objectClassInfo; + final ISubstituteObjectManager substituteObjectManager = classInfo .getSubstituteObjectManager(); /* * substituted in storage, the original object before to be @@ -947,10 +945,10 @@ /* original/substituted in storage is not persisted, never a proxy */ result = getOrCreateObjectPersistInfoOfObject(substitutedObject, - Boolean.FALSE, classInfo2.getSubstituteOfClassInfo(), false/* - * not - * persisted - */); + Boolean.FALSE, classInfo.getSubstituteOfClassInfo(), false/* + * not + * persisted + */); } else { result = objectAndPersistInfo; } Modified: trunk/joafip/src/test/java/net/sf/joafip/service/bug/savenum/TestEnumKeptInMemory.java =================================================================== --- trunk/joafip/src/test/java/net/sf/joafip/service/bug/savenum/TestEnumKeptInMemory.java 2011-10-17 02:46:26 UTC (rev 2925) +++ trunk/joafip/src/test/java/net/sf/joafip/service/bug/savenum/TestEnumKeptInMemory.java 2011-10-17 03:49:21 UTC (rev 2926) @@ -96,7 +96,7 @@ } @Override - protected void tearDown() throws Exception { + protected void tearDown() throws Exception { // NOPMD try { filePersistence.close(); } catch (final Exception exception) {// NOPMD Modified: trunk/joafip/src/test/java/net/sf/joafip/store/entity/classinfo/AbstractClassInfoTest.java =================================================================== --- trunk/joafip/src/test/java/net/sf/joafip/store/entity/classinfo/AbstractClassInfoTest.java 2011-10-17 02:46:26 UTC (rev 2925) +++ trunk/joafip/src/test/java/net/sf/joafip/store/entity/classinfo/AbstractClassInfoTest.java 2011-10-17 03:49:21 UTC (rev 2926) @@ -189,7 +189,7 @@ } @Override - public void setSubstitution(final String replacedName, + public void setWriteSubstitution(final String replacedName, final Class<?> substitute, final ISubsituteSynchronizer synchronizer) throws ClassInfoException { throw new UnsupportedOperationException(); Modified: trunk/joafip/src/test/java/net/sf/joafip/store/service/StoreForTest.java =================================================================== --- trunk/joafip/src/test/java/net/sf/joafip/store/service/StoreForTest.java 2011-10-17 02:46:26 UTC (rev 2925) +++ trunk/joafip/src/test/java/net/sf/joafip/store/service/StoreForTest.java 2011-10-17 03:49:21 UTC (rev 2926) @@ -624,12 +624,12 @@ public void removeSubstitution(final Class<?> replacedClass) throws StoreException { - store.removeSubstitution(replacedClass); + store.removeWriteSubstitution(replacedClass); } public void removeSubstitution(final String replacedName) throws StoreException, StoreClassNotFoundException { - store.removeSubstitution(replacedName); + store.removeWriteSubstitution(replacedName); } public void save(final boolean closing, final boolean autoSave) @@ -899,18 +899,18 @@ substituteObjectClass, substituteObjectManager); } - public final void setSubstitution(final Class<?> replacedClass, + public final void setWriteSubstitution(final Class<?> replacedClass, final Class<?> substituteClass, final ISubsituteSynchronizer subsituteSynchronizer) throws StoreException { - store.setSubstitution(replacedClass, substituteClass, + store.setWriteSubstitution(replacedClass, substituteClass, subsituteSynchronizer); } - public void setSubstitution(final String replacedName, + public void setWriteSubstitution(final String replacedName, final Class<?> substitute, final ISubsituteSynchronizer synchronizer) throws StoreException { - store.setSubstitution(replacedName, substitute, synchronizer); + store.setWriteSubstitution(replacedName, substitute, synchronizer); } public void setSubstitutionOfJavaUtilCollection(final boolean enabled) Modified: trunk/joafip-testsuite/src/main/java/net/sf/joafip/InErrorTests.java =================================================================== --- trunk/joafip-testsuite/src/main/java/net/sf/joafip/InErrorTests.java 2011-10-17 02:46:26 UTC (rev 2925) +++ trunk/joafip-testsuite/src/main/java/net/sf/joafip/InErrorTests.java 2011-10-17 03:49:21 UTC (rev 2926) @@ -24,13 +24,13 @@ import junit.framework.Test; import junit.framework.TestSuite; -import net.sf.joafip.service.TestExportImport; -import net.sf.joafip.service.rel310.TestImport301ConversionA; -import net.sf.joafip.service.rel310.TestImport301ConversionB; -import net.sf.joafip.service.rel310.TestUseRuntime301LazyConversionA; -import net.sf.joafip.service.rel310.TestUseRuntime301LazyConversionB; -import net.sf.joafip.service.rel310.TestUseRuntime301NotLazyConversionA; -import net.sf.joafip.service.rel310.TestUseRuntime301NotLazyConversionB; +import net.sf.joafip.service.bug.savenum.TestEnumKeptInMemory; +import net.sf.joafip.service.rel300.TestClassLoaderPersistence; +import net.sf.joafip.service.rel300.TestKeptInMemory; +import net.sf.joafip.service.rel300.TestSubstitutionSerialize; +import net.sf.joafip.service.rel300.TestSubstitutionSerializeReadWriteMethod; +import net.sf.joafip.service.rel300.TestSubstitutionSubstitutedSerializable; +import net.sf.joafip.service.rel300.TestSubstitutionWithDataAccessSession; /** * @@ -47,13 +47,13 @@ public static Test suite() { final TestSuite suite = new TestSuite("in error Tests"); // $JUnit-BEGIN$ - suite.addTestSuite(TestExportImport.class); - suite.addTestSuite(TestImport301ConversionA.class); - suite.addTestSuite(TestImport301ConversionB.class); - suite.addTestSuite(TestUseRuntime301LazyConversionA.class); - suite.addTestSuite(TestUseRuntime301LazyConversionB.class); - suite.addTestSuite(TestUseRuntime301NotLazyConversionA.class); - suite.addTestSuite(TestUseRuntime301NotLazyConversionB.class); + suite.addTestSuite(TestEnumKeptInMemory.class); + suite.addTestSuite(TestSubstitutionWithDataAccessSession.class); + suite.addTestSuite(TestSubstitutionSubstitutedSerializable.class); + suite.addTestSuite(TestSubstitutionSerialize.class); + suite.addTestSuite(TestSubstitutionSerializeReadWriteMethod.class); + suite.addTestSuite(TestClassLoaderPersistence.class); + suite.addTestSuite(TestKeptInMemory.class); // suite.addTest(xxxx.suite()); // $JUnit-END$ return suite; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <luc...@us...> - 2011-10-17 03:49:27
|
Revision: 2926 http://joafip.svn.sourceforge.net/joafip/?rev=2926&view=rev Author: luc_peuvrier Date: 2011-10-17 03:49:21 +0000 (Mon, 17 Oct 2011) Log Message: ----------- substitution management refactoring Modified Paths: -------------- trunk/joafip/src/main/java/net/sf/joafip/service/AbstractFilePersistenceDelegatingToStore.java trunk/joafip/src/main/java/net/sf/joafip/service/FilePersistence.java trunk/joafip/src/main/java/net/sf/joafip/service/IFilePersistence.java trunk/joafip/src/main/java/net/sf/joafip/store/entity/classinfo/ClassInfo.java trunk/joafip/src/main/java/net/sf/joafip/store/entity/classinfo/ClassInfoAttributes.java trunk/joafip/src/main/java/net/sf/joafip/store/service/IStore.java trunk/joafip/src/main/java/net/sf/joafip/store/service/Store.java trunk/joafip/src/main/java/net/sf/joafip/store/service/classinfo/ClassInfoFactory.java trunk/joafip/src/main/java/net/sf/joafip/store/service/classinfo/IClassInfoFactory.java trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/AbstractObjectIOManagerIOForObject.java trunk/joafip/src/test/java/net/sf/joafip/service/bug/savenum/TestEnumKeptInMemory.java trunk/joafip/src/test/java/net/sf/joafip/store/entity/classinfo/AbstractClassInfoTest.java trunk/joafip/src/test/java/net/sf/joafip/store/service/StoreForTest.java trunk/joafip-testsuite/src/main/java/net/sf/joafip/InErrorTests.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 02:46:32
|
Revision: 2925 http://joafip.svn.sourceforge.net/joafip/?rev=2925&view=rev Author: luc_peuvrier Date: 2011-10-17 02:46:26 +0000 (Mon, 17 Oct 2011) Log Message: ----------- substitution management refactoring Modified Paths: -------------- trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/AbstractObjectIOManagerIOForObject.java 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 10:31:27 UTC (rev 2924) +++ trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/AbstractObjectIOManagerIOForObject.java 2011-10-17 02:46:26 UTC (rev 2925) @@ -1103,8 +1103,6 @@ // write substitute object final ObjectAndPersistInfo substituteObjectAndPersistInfo = /**/substituteObject(objectAndPersistInfo); - objectAndPersistInfo - .setSubstituteObjectAndPersistInfo(substituteObjectAndPersistInfo); toWriteClassInfo = substituteObjectAndPersistInfo.objectClassInfo; toWriteObjectAndPersistInfo = substituteObjectAndPersistInfo; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <luc...@us...> - 2011-10-17 02:46:32
|
Revision: 2925 http://joafip.svn.sourceforge.net/joafip/?rev=2925&view=rev Author: luc_peuvrier Date: 2011-10-17 02:46:26 +0000 (Mon, 17 Oct 2011) Log Message: ----------- substitution management refactoring Modified Paths: -------------- 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-16 10:31:34
|
Revision: 2924 http://joafip.svn.sourceforge.net/joafip/?rev=2924&view=rev Author: luc_peuvrier Date: 2011-10-16 10:31:27 +0000 (Sun, 16 Oct 2011) Log Message: ----------- substitution 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/service/objectio/manager/AbstractObjectIOManagerIOForObject.java trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/ObjectIOManager.java trunk/joafip/src/test/java/net/sf/joafip/service/bug/savenum/TestEnumKeptInMemory.java trunk/joafip/src/test/java/net/sf/joafip/store/service/objectio/manager/AbstractBinaryDump.java This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <luc...@us...> - 2011-10-16 10:31:34
|
Revision: 2924 http://joafip.svn.sourceforge.net/joafip/?rev=2924&view=rev Author: luc_peuvrier Date: 2011-10-16 10:31:27 +0000 (Sun, 16 Oct 2011) Log Message: ----------- substitution 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/service/objectio/manager/AbstractObjectIOManagerIOForObject.java trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/ObjectIOManager.java trunk/joafip/src/test/java/net/sf/joafip/service/bug/savenum/TestEnumKeptInMemory.java trunk/joafip/src/test/java/net/sf/joafip/store/service/objectio/manager/AbstractBinaryDump.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-16 09:31:31 UTC (rev 2923) +++ trunk/joafip/src/main/java/net/sf/joafip/store/entity/objectio/ObjectAndPersistInfo.java 2011-10-16 10:31:27 UTC (rev 2924) @@ -88,7 +88,7 @@ public DataRecordIdentifier dataRecordIdentifier; /** object substitute, null if none */ - public ObjectAndPersistInfo substituteObjectAndPersistInfo; + private ObjectAndPersistInfo substituteObjectAndPersistInfo; /** substitution of, null is not an object substitution */ private ObjectAndPersistInfo substitutionOfObject; @@ -307,19 +307,43 @@ /** * set the substitute object for an object * - * @param substituteObject + * @param substituteObjectAndPersistInfo * the substitute object * @throws ObjectIOException */ public void setSubstituteObjectAndPersistInfo( - final ObjectAndPersistInfo substituteObject) + final ObjectAndPersistInfo substituteObjectAndPersistInfo) throws ObjectIOException { // ASSERTX - assert substituteObject.getObject() != null : "no substitution object defined"; - this.substituteObjectAndPersistInfo = substituteObject; - substituteObject.substitutionOfObject = this; + assert substituteObjectAndPersistInfo.getObject() != null : "no substitution object defined"; + this.substituteObjectAndPersistInfo = substituteObjectAndPersistInfo; + substituteObjectAndPersistInfo.substitutionOfObject = this; } + public ObjectAndPersistInfo getSubstituteObjectAndPersistInfo() { + return substituteObjectAndPersistInfo; + } + + public void clearSubstitution() { + if (substitutionOfObject != null) { + substitutionOfObject.substituteObjectAndPersistInfo = null;// NOPMD + substitutionOfObject = null;// NOPMD + } + } + + public ObjectAndPersistInfo getSubstitutionOfObject() { + return substitutionOfObject; + } + + public void setSubstitutionOfObject( + final ObjectAndPersistInfo substitutionOfObject) { + this.substitutionOfObject = substitutionOfObject; + } + + public boolean isSubstituted() { + return substituteObjectAndPersistInfo != null; + } + public void clearSonReadObject() { sonReadObjectList.clear(); } @@ -435,13 +459,6 @@ return object != null; } - public void clearSubstitution() { - if (substitutionOfObject != null) { - substitutionOfObject.substituteObjectAndPersistInfo = null;// NOPMD - substitutionOfObject = null;// NOPMD - } - } - public boolean isWeak() { return weakReference != null; } 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 09:31:31 UTC (rev 2923) +++ trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/AbstractObjectIOManagerIOForObject.java 2011-10-16 10:31:27 UTC (rev 2924) @@ -537,7 +537,7 @@ final ClassInfo classInfo = objectAndItsClassInfo.objectClassInfo; final ClassInfo substituteClassInfo = classInfo .getSubstituteClassInfo(); - result = objectAndItsClassInfo.substituteObjectAndPersistInfo; + result = objectAndItsClassInfo.getSubstituteObjectAndPersistInfo(); if (result == null) { Class<?> substituteClass; substituteClass = substituteClassInfo.getObjectClass(); @@ -1015,7 +1015,7 @@ ObjectIODataRecordNotFoundException, ObjectIODataCorruptedException { // will write original object else will write the substitute ObjectAndPersistInfo toWriteObjectAndPersistInfo = - /**/objectAndItsPersistInfo.substituteObjectAndPersistInfo; + /**/objectAndItsPersistInfo.getSubstituteObjectAndPersistInfo(); if (toWriteObjectAndPersistInfo == null) { toWriteObjectAndPersistInfo = objectAndItsPersistInfo; } @@ -1138,7 +1138,8 @@ protected ObjectAndPersistInfo substituteObject( final ObjectAndPersistInfo objectAndPersistInfo) throws ObjectIOException, ObjectIODataCorruptedException { - ObjectAndPersistInfo substituteObjectAndPersistInfo = objectAndPersistInfo.substituteObjectAndPersistInfo; + ObjectAndPersistInfo substituteObjectAndPersistInfo = objectAndPersistInfo + .getSubstituteObjectAndPersistInfo(); if (substituteObjectAndPersistInfo == null) { final Object object = objectAndPersistInfo.getObject(); final ClassInfo classInfo = objectAndPersistInfo.objectClassInfo; 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-16 09:31:31 UTC (rev 2923) +++ trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/ObjectIOManager.java 2011-10-16 10:31:27 UTC (rev 2924) @@ -194,7 +194,7 @@ throws ObjectIOException { // will write original object else will write the substitute ObjectAndPersistInfo toWriteObjectAndItsClassInfo = - /**/objectAndPersistInfo.substituteObjectAndPersistInfo; + /**/objectAndPersistInfo.getSubstituteObjectAndPersistInfo(); if (toWriteObjectAndItsClassInfo == null) { toWriteObjectAndItsClassInfo = objectAndPersistInfo; } @@ -237,7 +237,7 @@ ObjectIODataRecordNotFoundException, ObjectIOClassNotFoundException { // will write original object else will write the substitute ObjectAndPersistInfo toWriteObjectAndItsClassInfo = - /**/objectAndPersistInfo.substituteObjectAndPersistInfo; + /**/objectAndPersistInfo.getSubstituteObjectAndPersistInfo(); if (toWriteObjectAndItsClassInfo == null) { toWriteObjectAndItsClassInfo = objectAndPersistInfo; } Modified: trunk/joafip/src/test/java/net/sf/joafip/service/bug/savenum/TestEnumKeptInMemory.java =================================================================== --- trunk/joafip/src/test/java/net/sf/joafip/service/bug/savenum/TestEnumKeptInMemory.java 2011-10-16 09:31:31 UTC (rev 2923) +++ trunk/joafip/src/test/java/net/sf/joafip/service/bug/savenum/TestEnumKeptInMemory.java 2011-10-16 10:31:27 UTC (rev 2924) @@ -61,7 +61,7 @@ } @Override - protected void setUp() throws Exception { + protected void setUp() throws Exception { // NOPMD super.setUp(); createFilePersistence(); } @@ -157,7 +157,8 @@ dataAccessSession.open(); bobContainer = (BobContainer) dataAccessSession.getObject("key"); - assertEquals(BAD_VALUE, EnumOrderType.BOX, bobContainer.getObject1()); + final Object object1 = bobContainer.getObject1(); + assertEquals(BAD_VALUE, EnumOrderType.BOX, object1); assertEquals(BAD_VALUE, EnumStrategy.ALL_TYPES, bobContainer.getObject2()); bobContainer.setObject1(EnumOrderType.DRAWING_ORDER_CONTAINER); Modified: trunk/joafip/src/test/java/net/sf/joafip/store/service/objectio/manager/AbstractBinaryDump.java =================================================================== --- trunk/joafip/src/test/java/net/sf/joafip/store/service/objectio/manager/AbstractBinaryDump.java 2011-10-16 09:31:31 UTC (rev 2923) +++ trunk/joafip/src/test/java/net/sf/joafip/store/service/objectio/manager/AbstractBinaryDump.java 2011-10-16 10:31:27 UTC (rev 2924) @@ -245,7 +245,7 @@ assertNull("reference change list must be undefined", objectAndItsPersistInfo.referenceChangeList); assertNull("subsititute object must not be defined", - objectAndItsPersistInfo.substituteObjectAndPersistInfo); + objectAndItsPersistInfo.getSubstituteObjectAndPersistInfo()); assertEquals("son wrote list must be cleared", 0, objectAndItsPersistInfo.sonWroteObjectArray.length); assertNull("serialized form must be cleared", 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-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 p. at h. <lc...@or...> - 2011-10-16 09:26:40
|
----- Original Message ----- From: luc peuvrier at home To: joa...@li... Sent: Sunday, October 16, 2011 11:19 AM Subject: a test |
From: <luc...@us...> - 2011-10-16 08:35:36
|
Revision: 2922 http://joafip.svn.sourceforge.net/joafip/?rev=2922&view=rev Author: luc_peuvrier Date: 2011-10-16 08:35:26 +0000 (Sun, 16 Oct 2011) Log Message: ----------- no more static field persistence Modified Paths: -------------- trunk/joafip/src/main/java/net/sf/joafip/entity/FilePersistenceProperties.java trunk/joafip/src/main/java/net/sf/joafip/service/AbstractFilePersistenceDelegatingToStore.java trunk/joafip/src/main/java/net/sf/joafip/service/FilePersistence.java trunk/joafip/src/main/java/net/sf/joafip/service/FilePersistencePropertiesReader.java trunk/joafip/src/main/java/net/sf/joafip/service/IFilePersistence.java 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/saver/StoreSaverSession.java trunk/joafip/src/main/java/net/sf/joafip/store/service/IStore.java trunk/joafip/src/main/java/net/sf/joafip/store/service/Store.java trunk/joafip/src/main/java/net/sf/joafip/store/service/conversion/AbstractObjectReplacer.java trunk/joafip/src/main/java/net/sf/joafip/store/service/conversion/ObjectReplacerForImport.java trunk/joafip/src/main/java/net/sf/joafip/store/service/conversion/ObjectReplacerOnTheFly.java trunk/joafip/src/main/java/net/sf/joafip/store/service/export_import/in/AbstractImporter.java trunk/joafip/src/main/java/net/sf/joafip/store/service/export_import/in/InObjectsHandler.java trunk/joafip/src/main/java/net/sf/joafip/store/service/export_import/out/AbstractExporter.java trunk/joafip/src/main/java/net/sf/joafip/store/service/export_import/out/StoreAccessForExport.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/HeaderReader.java trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/HeaderWriter.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/ObjectStateMgr.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/saver/StoreSaver3.java trunk/joafip/src/test/java/net/sf/joafip/entity/AbstractClassForExport.java trunk/joafip/src/test/java/net/sf/joafip/entity/ClassForExport.java trunk/joafip/src/test/java/net/sf/joafip/entity/rel310/ClassTwo301bReplacement.java trunk/joafip/src/test/java/net/sf/joafip/export_import/AbstractClassOne301b.java trunk/joafip/src/test/java/net/sf/joafip/export_import/ClassOne301b.java trunk/joafip/src/test/java/net/sf/joafip/service/TestExportImport.java trunk/joafip/src/test/java/net/sf/joafip/service/rel310/Abstract301Usage.java trunk/joafip/src/test/java/net/sf/joafip/store/service/StoreForTest.java trunk/joafip/src/test/java/net/sf/joafip/store/service/copier/AbstractTestDeepCopier.java trunk/joafip/src/test/java/net/sf/joafip/store/service/objectfortest/Bob1.java trunk/joafip/src/test/java/net/sf/joafip/store/service/objectio/manager/AbstractTestIoManager.java trunk/joafip/src/test/java/net/sf/joafip/store/service/objectio/serialize/AbstractObjectIOTest.java trunk/joafip/src/test/java/net/sf/joafip/store/service/proxy/AbstractObjectIoManagerForProxyTest.java trunk/joafip/src/test/java/net/sf/joafip/store/service/proxy/ProxyCallBackForTest.java trunk/joafip-testsuite/src/main/java/net/sf/joafip/InErrorTests.java trunk/joafip-testsuite/src/main/java/net/sf/joafip/service/rel301/ServiceRel301Tests.java trunk/joafip-testsuite/src/main/java/net/sf/joafip/service/rel400/ServiceRel400Tests.java trunk/joafip-testsuite/src/main/java/net/sf/joafip/store/service/objectio/manager/ObjectIOManagerTests.java trunk/joafip-testsuite/src/main/java/net/sf/joafip/store/service/objectio/serialize/ObjectIOSerializeTests.java Removed Paths: ------------- trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/serialize/input/ObjectInputStatic.java trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/serialize/output/ObjectOutputStatic.java trunk/joafip/src/test/java/net/sf/joafip/service/rel301/TestStaticPersisted.java trunk/joafip/src/test/java/net/sf/joafip/service/rel400/TestAutoSaveWithStatic.java trunk/joafip/src/test/java/net/sf/joafip/store/service/objectio/manager/TestObjectIOManagerStaticFieldCase.java trunk/joafip/src/test/java/net/sf/joafip/store/service/objectio/serialize/ObjectIOStaticTest.java Modified: trunk/joafip/src/main/java/net/sf/joafip/entity/FilePersistenceProperties.java =================================================================== --- trunk/joafip/src/main/java/net/sf/joafip/entity/FilePersistenceProperties.java 2011-10-16 04:45:29 UTC (rev 2921) +++ trunk/joafip/src/main/java/net/sf/joafip/entity/FilePersistenceProperties.java 2011-10-16 08:35:26 UTC (rev 2922) @@ -17,7 +17,6 @@ package net.sf.joafip.entity;// NOPMD import java.io.InputStream; -import java.util.Map; import java.util.NavigableMap; import java.util.Set; import java.util.TreeMap; @@ -76,9 +75,6 @@ private boolean recordSaveActions; - private final Map<String, Boolean> storedStaticMap = - /**/new TreeMap<String, Boolean>(); - private EnumNoMoreDataAction noMoreDataAction = EnumNoMoreDataAction.DELETE_FILE; public FilePersistenceProperties() { @@ -336,10 +332,6 @@ return storeProperties.isUseCacheMode(); } - public Map<String, Boolean> getStoredStaticMap() { - return storedStaticMap; - } - public void setMaintenedInMemory(final boolean maintenedInMemory) { storeProperties.setMaintenedInMemory(maintenedInMemory); } Modified: trunk/joafip/src/main/java/net/sf/joafip/service/AbstractFilePersistenceDelegatingToStore.java =================================================================== --- trunk/joafip/src/main/java/net/sf/joafip/service/AbstractFilePersistenceDelegatingToStore.java 2011-10-16 04:45:29 UTC (rev 2921) +++ trunk/joafip/src/main/java/net/sf/joafip/service/AbstractFilePersistenceDelegatingToStore.java 2011-10-16 08:35:26 UTC (rev 2922) @@ -736,29 +736,6 @@ storedMutableEnum((Class<? extends Enum<?>>) enumObject.getClass()); } - @Override - public void storedStaticField( - final Class<?>[] classHavingStaticFieldToPersistList) - throws FilePersistenceException { - try { - for (final Class<?> classHavingStaticFieldToPersist : classHavingStaticFieldToPersistList) { - store.storedStaticField(classHavingStaticFieldToPersist); - } - } catch (final StoreException exception) { - throw new FilePersistenceException(exception); - } - } - - @Override - public void storedStaticField(final Class<?> classHavingStaticFieldToPersist) - throws FilePersistenceException { - try { - store.storedStaticField(classHavingStaticFieldToPersist); - } catch (final StoreException exception) { - throw new FilePersistenceException(exception); - } - } - /** * set enum state from file * Modified: trunk/joafip/src/main/java/net/sf/joafip/service/FilePersistence.java =================================================================== --- trunk/joafip/src/main/java/net/sf/joafip/service/FilePersistence.java 2011-10-16 04:45:29 UTC (rev 2921) +++ trunk/joafip/src/main/java/net/sf/joafip/service/FilePersistence.java 2011-10-16 08:35:26 UTC (rev 2922) @@ -289,25 +289,6 @@ } } - private void setStoredStaticFromProperties() - throws FilePersistenceClassNotFoundException, - FilePersistenceException { - try { - final Map<String, Boolean> storedStaticMap = filePersistenceProperties - .getStoredStaticMap(); - for (final Map.Entry<String, Boolean> entry : storedStaticMap - .entrySet()) { - if (entry.getValue().booleanValue()) { - store.storedStaticField(entry.getKey()); - } - } - } catch (final StoreClassNotFoundException exception) { - throw new FilePersistenceClassNotFoundException(exception); - } catch (final StoreException exception) { - throw new FilePersistenceException(exception); - } - } - private void setSubstitutionFromProperties() throws FilePersistenceException { final Set<FilePersistencePropertyEntry> set = @@ -540,7 +521,6 @@ setStoreOnlyMarkedStorable(filePersistenceProperties .isStoreOnlyMarkedStorable()); setRecordSaveActions(filePersistenceProperties.isRecordSaveActions()); - setStoredStaticFromProperties(); } private void newAccessSessionAndReadOrCreateRootObject( Modified: trunk/joafip/src/main/java/net/sf/joafip/service/FilePersistencePropertiesReader.java =================================================================== --- trunk/joafip/src/main/java/net/sf/joafip/service/FilePersistencePropertiesReader.java 2011-10-16 04:45:29 UTC (rev 2921) +++ trunk/joafip/src/main/java/net/sf/joafip/service/FilePersistencePropertiesReader.java 2011-10-16 08:35:26 UTC (rev 2922) @@ -117,8 +117,6 @@ /** set substitution */ private static final String JOAFIP_SUBSTITUTE = "joafip.substitute."; - private static final String JOAFIP_STORED_STATIC = "joafip.storedStatic."; - private static final String JOAFIP_MAINTENED_IN_MEMORY = "joafip.maintainedInMemory"; private static final String JOAFIP_MAINTENED_IN_MEMORY_QUOTA = "joafip.maintainedInMemoryQuota"; @@ -276,10 +274,6 @@ .setBackgroundGarbageSweepSleepTime(intValue( key, value)); } - } else if (key.startsWith(JOAFIP_STORED_STATIC)) { - addStoredStatic(filePersistenceProperties, - key.substring(JOAFIP_STORED_STATIC.length()), - isEnabled(key, value)); } else if (key.equals(JOAFIP_MAINTENED_IN_MEMORY)) { filePersistenceProperties.setMaintenedInMemory(isEnabled( key, value)); @@ -422,12 +416,6 @@ value); } - private void addStoredStatic( - final FilePersistenceProperties filePersistenceProperties, - final String className, final boolean enabled) { - filePersistenceProperties.getStoredStaticMap().put(className, enabled); - } - private void addStoredMutableEnum( final FilePersistenceProperties filePersistenceProperties, final String enumClassName, final boolean enabled) { Modified: trunk/joafip/src/main/java/net/sf/joafip/service/IFilePersistence.java =================================================================== --- trunk/joafip/src/main/java/net/sf/joafip/service/IFilePersistence.java 2011-10-16 04:45:29 UTC (rev 2921) +++ trunk/joafip/src/main/java/net/sf/joafip/service/IFilePersistence.java 2011-10-16 08:35:26 UTC (rev 2922) @@ -757,25 +757,7 @@ void storedEnum(Enum<?> enumObject) throws FilePersistenceException; /** - * set classes which for static field must be persisted * - * @param classHavingStaticFieldToPersistList - * @throws FilePersistenceException - */ - void storedStaticField(Class<?>[] classHavingStaticFieldToPersistList) - throws FilePersistenceException; - - /** - * set class which for static field must be persisted - * - * @param classHavingStaticFieldToPersist - * @throws FilePersistenceException - */ - void storedStaticField(Class<?> classHavingStaticFieldToPersist) - throws FilePersistenceException; - - /** - * * @return true if manage garbage * @throws FilePersistenceException */ 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-16 04:45:29 UTC (rev 2921) +++ trunk/joafip/src/main/java/net/sf/joafip/store/entity/objectio/ObjectAndPersistInfo.java 2011-10-16 08:35:26 UTC (rev 2922) @@ -123,9 +123,6 @@ private ObjectAndPersistInfoWeakReference weakReference; - /** true if static field persistence information */ - public final boolean staticPersistence; - public FieldInfo[] fieldToSetInfo; private IProxyCallBackToImplement proxyCallBack = NULL_PROXY_CALL_BACK_INSTANCE; @@ -147,26 +144,10 @@ */ private ObjectAndPersistInfo(final boolean valueDefined) { super(valueDefined); - staticPersistence = false; proxyIntanceOrEnhanced = false; } /** - * static persistence information - * - * @param objectClassInfo - * @throws ObjectIOException - */ - public ObjectAndPersistInfo(final ClassInfo objectClassInfo) - throws ObjectIOException { - super(objectClassInfo); - staticPersistence = true; - joafipReleaseId = -1; - dataModelIdentifier = -1; - proxyIntanceOrEnhanced = false; - } - - /** * storage info not set<br> * * @param object @@ -180,7 +161,6 @@ final ClassInfo objectClassInfo) throws ObjectIOException, ClassInfoException { super(object, objectClassInfo); - staticPersistence = false; joafipReleaseId = -1; dataModelIdentifier = -1; this.proxyIntanceOrEnhanced = proxyIntanceOrEnhanced; @@ -200,7 +180,6 @@ final ClassInfo objectClassInfo, final StorageInfo storageInfo) throws ClassInfoException, ObjectIOException { super(object, objectClassInfo); - staticPersistence = false; headerDataSize = storageInfo.getHeaderDataSize(); replacementDefList = storageInfo.getReplacementDefList(); joafipReleaseId = storageInfo.getJoafipReleaseId(); @@ -215,7 +194,6 @@ final int joafipReleaseId, final int dataModelIdentifier) throws ClassInfoException { super(object, objectClassInfo); - staticPersistence = false; this.replacementDefList = replacementDefList; this.joafipReleaseId = joafipReleaseId; this.dataModelIdentifier = dataModelIdentifier; @@ -300,7 +278,7 @@ // ASSERTX assert assertStoreRootDataRecordIdentifier(dataRecordIdentifier); // ASSERTX - assert object != null || staticPersistence : "null can not have data record identifier"; + assert object != null : "null can not have data record identifier"; // ASSERTX assert this.dataRecordIdentifier == null : "data record identifier already set"; this.dataRecordIdentifier = dataRecordIdentifier; 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-10-16 04:45:29 UTC (rev 2921) +++ trunk/joafip/src/main/java/net/sf/joafip/store/entity/objectio/ObjectStateMap.java 2011-10-16 08:35:26 UTC (rev 2922) @@ -48,10 +48,6 @@ private final Map<IObjectIdentityKey, ObjectAndPersistInfo> stateMap = /**/new HashMap<IObjectIdentityKey, ObjectAndPersistInfo>(); - /** map for persisted object static fields */ - private final Map<ClassInfo, ObjectAndPersistInfo> staticStateMap = - /**/new TreeMap<ClassInfo, ObjectAndPersistInfo>(); - /** * map to obtains object persistence information by data record identifier */ @@ -152,9 +148,7 @@ // ASSERTX assert objectAndPersistInfo.isNotWeak(); // ASSERTX - assert staticStateMap.containsKey(objectAndPersistInfo - .getObjectClassInfo()) - || stateMap.containsKey(objectAndPersistInfo); + assert stateMap.containsKey(objectAndPersistInfo); final DataRecordIdentifier dataRecordIdentifier = objectAndPersistInfo.dataRecordIdentifier; final ObjectAndPersistInfo previous = stateMapByIdentifier.put( dataRecordIdentifier, objectAndPersistInfo); @@ -312,61 +306,7 @@ referencedQueueSize++; } - // // FIXME-LUC _________for test - // private boolean inQueue(final ObjectAndPersistInfo objectAndPersistInfo) - // { - // boolean found = false; - // ObjectAndPersistInfo current = queueHead; - // while (!found && current != null) { - // found = current == objectAndPersistInfo || current.hasReferences()// - // NOPMD - // && current.getObject() == objectAndPersistInfo.getObject(); - // current = current.next; - // } - // return found; - // } - /** - * - * @param objectClassInfo - * the class information of the object - * @return get or created class static field persistence information - * @throws ObjectIOException - */ - public ObjectAndPersistInfo getOrCreateObjectAndPersistInfoOfClass( - final ClassInfo objectClassInfo) throws ObjectIOException { - ObjectAndPersistInfo objectAndPersistInfo = staticStateMap - .get(objectClassInfo); - if (objectAndPersistInfo == null) { - objectAndPersistInfo = createObjectAndPersistInfoOfClass(objectClassInfo); - } - return objectAndPersistInfo; - } - - public ObjectAndPersistInfo createObjectAndPersistInfoOfClass( - final ClassInfo objectClassInfo) throws ObjectIOException { - ObjectAndPersistInfo objectAndPersistInfo; - objectAndPersistInfo = new ObjectAndPersistInfo(objectClassInfo); - objectAndPersistInfo.setObjectStateMap(this); - staticStateMap.put(objectClassInfo, objectAndPersistInfo); - return objectAndPersistInfo; - } - - /** - * Get existing, class static field persistence information.<br> - * - * @param objectClassInfo - * the class information - * @return get class static field persistence information, null if not - * defined - * @throws ObjectIOException - */ - public ObjectAndPersistInfo getObjectAndPersistInfoOfClass( - final ClassInfo objectClassInfo) throws ObjectIOException { - return staticStateMap.get(objectClassInfo); - } - - /** * to know if object have persistence state associated to it * * @param objectAndPersistInfo @@ -425,10 +365,6 @@ queueSize = 0; queueNumberOfWeakRef = 0; } - // FIXMELUC _________________static persistence information live - // with file persistence - staticStateMap.clear(); - // checkNullFieldError(); } } @@ -542,10 +478,6 @@ } } - public Collection<ObjectAndPersistInfo> staticObjectAndPersistInfoSet() { - return staticStateMap.values(); - } - /** * object is accessed * 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-10-16 04:45:29 UTC (rev 2921) +++ trunk/joafip/src/main/java/net/sf/joafip/store/entity/saver/StoreSaverSession.java 2011-10-16 08:35:26 UTC (rev 2922) @@ -119,12 +119,7 @@ */ public boolean addToVisitedForSave( final ObjectAndPersistInfo objectAndPersistInfo) { - final boolean add; - if (objectAndPersistInfo.staticPersistence) { - add = true; - } else { - add = visitedForSave.add(objectAndPersistInfo); - } + final boolean add = visitedForSave.add(objectAndPersistInfo); if (add && keepToVisitForSaveRemoveEnabled) { // no more keep to visit because visited for save keepToVisitForSave.remove(objectAndPersistInfo); Modified: trunk/joafip/src/main/java/net/sf/joafip/store/service/IStore.java =================================================================== --- trunk/joafip/src/main/java/net/sf/joafip/store/service/IStore.java 2011-10-16 04:45:29 UTC (rev 2921) +++ trunk/joafip/src/main/java/net/sf/joafip/store/service/IStore.java 2011-10-16 08:35:26 UTC (rev 2922) @@ -347,12 +347,6 @@ @Deprecated void setEnumState(Enum<?> enumObject) throws StoreException; - void storedStaticField(Class<?> classHavingStaticFieldToPersist) - throws StoreException; - - void storedStaticField(String nameOfClassHavingStaticFieldToPersist) - throws StoreClassNotFoundException, StoreException; - /** * read root object * Modified: trunk/joafip/src/main/java/net/sf/joafip/store/service/Store.java =================================================================== --- trunk/joafip/src/main/java/net/sf/joafip/store/service/Store.java 2011-10-16 04:45:29 UTC (rev 2921) +++ trunk/joafip/src/main/java/net/sf/joafip/store/service/Store.java 2011-10-16 08:35:26 UTC (rev 2922) @@ -30,7 +30,6 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; -import java.util.Set; import java.util.TreeMap; import java.util.TreeSet; import java.util.Vector; @@ -64,7 +63,6 @@ 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.garbage.GarbageException; import net.sf.joafip.store.service.heaprecordable.HeapRecordableException; import net.sf.joafip.store.service.objectio.ObjectIOClassNotFoundException; import net.sf.joafip.store.service.objectio.ObjectIODataCorruptedException; @@ -149,11 +147,6 @@ // private final Map<EnumKey, Enum> storedEnumMap = new PTreeMap<EnumKey, // Enum>(); - /** set of class which for static field are persisted */ - private final Set<Class<?>> classHavingStaticFieldToPersistSet = new HashSet<Class<?>>(); - - private boolean storedStaticFieldAdded = true; - /** exception throws in background */ private StoreException bacgroundException; @@ -998,7 +991,6 @@ true ^ proxyMode).getObject(); assert storeRoot != null; updateStoredEnumMap(); - updateStoredStaticField(); read = true; } catch (final ObjectIODataRecordNotFoundException exception) { @@ -1146,103 +1138,7 @@ } } - @StorableAccess - private void addStoredStaticField() throws StoreException { - try { - if (!storedStaticFieldAdded) { - storedStaticFieldAdded = true; - Set<Long> set = storeRoot.getDataRecordIdOfpersistedStaticSet(); - if (set == null) { - set = new PTreeSet<Long>(); - storeRoot.setDataRecordIdOfpersistedStaticSet(set); - } - - for (final Class<?> classHavingStaticFieldToPersist : classHavingStaticFieldToPersistSet) { - final ClassInfo classInfo = classInfoFactory - .getNoProxyClassInfo(classHavingStaticFieldToPersist); - final ObjectAndPersistInfo objectAndPersistInfo = objectIOManager - .getOrCreateObjectAndPersistInfoOfClass(classInfo); - if (objectAndPersistInfo.dataRecordIdentifier == null) { - final DataRecordIdentifier dataRecordIdentifier = dataManager - .getNewDataRecordIdentifier(); - objectAndPersistInfo - .setDataRecordIdentifier(dataRecordIdentifier); - set.add(dataRecordIdentifier.value); - } - } - } - } catch (final ObjectIOException exception) { - throw new StoreException(exception); - } catch (final ClassInfoException exception) { - throw new StoreException(exception); - } catch (final HeapException exception) { - throw new StoreException(exception); - } - } - - @StorableAccess - private void updateStoredStaticField() throws StoreException { - try { - final Set<Long> set = storeRoot - .getDataRecordIdOfpersistedStaticSet(); - final List<DataRecordIdentifier> unexistingList = new LinkedList<DataRecordIdentifier>(); - if (set != null) { - for (final long dataRecordIdentifierValue : set) { - final DataRecordIdentifier dataRecordIdentifier = new DataRecordIdentifier(// NOPMD - dataRecordIdentifierValue); - if (objectIOManager.setStaticState(dataRecordIdentifier) - .classDoesNotExist()) { - unexistingList.add(dataRecordIdentifier); - } - } - } - if (garbageManagement) { - for (final DataRecordIdentifier dataRecordIdentifier : unexistingList) { - garbageManager.addToGarbage(dataRecordIdentifier); - set.remove(dataRecordIdentifier.value); - } - } - - } catch (final ObjectIOException exception) { - throw new StoreException(exception); - } catch (final ObjectIODataCorruptedException exception) { - throw new StoreException(exception); - } catch (final ObjectIODataRecordNotFoundException exception) { - throw new StoreException(exception); - } catch (final ObjectIOClassNotFoundException exception) { - throw new StoreException(exception); - } catch (final ObjectIOInvalidClassException exception) { - throw new StoreException(exception); - } catch (final ObjectIONotSerializableException exception) { - throw new StoreException(exception); - } catch (final GarbageException exception) { - throw new StoreException(exception); - } - } - @Override - public void storedStaticField(final Class<?> classHavingStaticFieldToPersist) - throws StoreException { - classHavingStaticFieldToPersistSet.add(classHavingStaticFieldToPersist); - storedStaticFieldAdded = false; - } - - @Override - public void storedStaticField( - final String nameOfClassHavingStaticFieldToPersist) - throws StoreClassNotFoundException, StoreException { - Class<?> classHavingStaticFieldToPersist; - try { - classHavingStaticFieldToPersist = classInfoFactory - .classForName(nameOfClassHavingStaticFieldToPersist); - } catch (final ClassNotFoundException exception) { - throw new StoreClassNotFoundException(exception); - } - classHavingStaticFieldToPersistSet.add(classHavingStaticFieldToPersist); - storedStaticFieldAdded = false; - } - - @Override public void setAutoSaveEventListener( final IAutoSaveEventListener saveEventListener) { objectIOManager.setAutoSaveEventListener(saveEventListener); @@ -1264,7 +1160,6 @@ throw new StoreException(FILE_ACCESS_SESSION_CLOSED); } - addStoredStaticField(); storeSaver.setRootOfObjectsToSave(storeRoot); /* * else { setStoreRootIsAlwaysUnreference(); } Modified: trunk/joafip/src/main/java/net/sf/joafip/store/service/conversion/AbstractObjectReplacer.java =================================================================== --- trunk/joafip/src/main/java/net/sf/joafip/store/service/conversion/AbstractObjectReplacer.java 2011-10-16 04:45:29 UTC (rev 2921) +++ trunk/joafip/src/main/java/net/sf/joafip/store/service/conversion/AbstractObjectReplacer.java 2011-10-16 08:35:26 UTC (rev 2922) @@ -47,7 +47,6 @@ /** * @param conversionMode - * @param staticFieldConversion * @param objectIOManager * @param converterList * @param originalValuedFieldList @@ -56,7 +55,6 @@ * @throws ConversionException */ public ValuedFieldList convert(final EnumConversionMode conversionMode, - final boolean staticFieldConversion, final IObjectIOManagerForObjectIO objectIOManager, final Deque<ClassReplacementDef> replacementDefList, final ValuedFieldList originalValuedFieldList, @@ -64,14 +62,9 @@ ValuedFieldList valuedFieldList = originalValuedFieldList; for (ClassReplacementDef replacementDef : replacementDefList) { final ClassInfo converterClass; - if (staticFieldConversion) { - converterClass = replacementDef.getStaticConverterClass(); - } else { - converterClass = replacementDef.getConverterClass(); - } + converterClass = replacementDef.getConverterClass(); if (ClassInfo.NULL.equals(converterClass)) { - valuedFieldList = convertByReplacementDef( - staticFieldConversion, valuedFieldList, + valuedFieldList = convertByReplacementDef(valuedFieldList, fieldsToSetInfo, replacementDef); if (valuedFieldList == null) { throw new ConversionException("replacement " @@ -92,7 +85,6 @@ } protected abstract ValuedFieldList convertByReplacementDef( - final boolean staticFieldConversion, final ValuedFieldList valuedFieldList, final FieldInfo[] fieldsToSetInfo, final ClassReplacementDef replacementDef) Modified: trunk/joafip/src/main/java/net/sf/joafip/store/service/conversion/ObjectReplacerForImport.java =================================================================== --- trunk/joafip/src/main/java/net/sf/joafip/store/service/conversion/ObjectReplacerForImport.java 2011-10-16 04:45:29 UTC (rev 2921) +++ trunk/joafip/src/main/java/net/sf/joafip/store/service/conversion/ObjectReplacerForImport.java 2011-10-16 08:35:26 UTC (rev 2922) @@ -50,7 +50,6 @@ @Override protected ValuedFieldList convertByReplacementDef( - final boolean staticFieldConversion, final ValuedFieldList valuedFieldList, final FieldInfo[] fieldsToSetInfo, final ClassReplacementDef replacementDef) @@ -61,13 +60,8 @@ // replacement for read field by fieldInfo final FieldInfo fieldInfo = fieldValue.getFieldInfo(); final FieldReplacementDef fieldReplacementDef; - if (staticFieldConversion) { - fieldReplacementDef = replacementDef - .getReplacementStaticFieldInfo(fieldInfo); - } else { - fieldReplacementDef = replacementDef - .getReplacementFieldInfo(fieldInfo); - } + fieldReplacementDef = replacementDef + .getReplacementFieldInfo(fieldInfo); final ObjectAndPersistInfo fiedlValue = fieldValue.getValue(); if (fieldReplacementDef == null) { result.addNewFieldAndItsValue(index++, fieldInfo, fiedlValue); Modified: trunk/joafip/src/main/java/net/sf/joafip/store/service/conversion/ObjectReplacerOnTheFly.java =================================================================== --- trunk/joafip/src/main/java/net/sf/joafip/store/service/conversion/ObjectReplacerOnTheFly.java 2011-10-16 04:45:29 UTC (rev 2921) +++ trunk/joafip/src/main/java/net/sf/joafip/store/service/conversion/ObjectReplacerOnTheFly.java 2011-10-16 08:35:26 UTC (rev 2922) @@ -55,14 +55,13 @@ /** * - * @param staticFieldConversion * @param objectIOManager * @param objectAndPersistInfo * @param fieldValueList * @return * @throws ConversionException */ - public ValuedFieldList convert(final boolean staticFieldConversion, + public ValuedFieldList convert( final IObjectIOManagerForObjectIO objectIOManager, final ObjectAndPersistInfo objectAndPersistInfo, final List<ObjectAndPersistInfo> fieldValueList) @@ -71,14 +70,13 @@ .getReplacementDefList(); final ValuedFieldList valuedFieldList = new ValuedFieldList( fieldValueList); - return convert(EnumConversionMode.ON_THE_FLY, staticFieldConversion, - objectIOManager, replacementDefList, valuedFieldList, + return convert(EnumConversionMode.ON_THE_FLY, objectIOManager, + replacementDefList, valuedFieldList, objectAndPersistInfo.fieldToSetInfo); } @Override protected ValuedFieldList convertByReplacementDef( - final boolean staticFieldConversion, final ValuedFieldList valuedFieldList, final FieldInfo[] fieldsToSetInfo, final ClassReplacementDef replacementDef) @@ -91,13 +89,8 @@ try { // replacement for read field by index final FieldReplacementDef fieldReplacementDef; - if (staticFieldConversion) { - fieldReplacementDef = replacementDef - .getReplacementStaticFieldInfo(index); - } else { - fieldReplacementDef = replacementDef - .getReplacementFieldInfo(index); - } + fieldReplacementDef = replacementDef + .getReplacementFieldInfo(index); if (fieldReplacementDef == null) { result.setFieldValue(index, fieldValue); } else if (!fieldReplacementDef.isDeletedField()) { Modified: trunk/joafip/src/main/java/net/sf/joafip/store/service/export_import/in/AbstractImporter.java =================================================================== --- trunk/joafip/src/main/java/net/sf/joafip/store/service/export_import/in/AbstractImporter.java 2011-10-16 04:45:29 UTC (rev 2921) +++ trunk/joafip/src/main/java/net/sf/joafip/store/service/export_import/in/AbstractImporter.java 2011-10-16 08:35:26 UTC (rev 2922) @@ -783,17 +783,14 @@ } } - protected ValuedFieldList convert(final boolean staticFieldConversion, - final ValuedFieldList valuedFieldList, + protected ValuedFieldList convert(final ValuedFieldList valuedFieldList, final Deque<ClassReplacementDef> replacementDef, final FieldInfo[] fieldInfos) throws ImportException { try { final ValuedFieldList convertedValuedFieldList = OBJECT_REPLACER - .convert(EnumConversionMode.FOR_IMPORT, - staticFieldConversion, objectIOManager, + .convert(EnumConversionMode.FOR_IMPORT, objectIOManager, replacementDef, valuedFieldList, fieldInfos); - setFields(staticFieldConversion, fieldInfos, - convertedValuedFieldList); + setFields(fieldInfos, convertedValuedFieldList); return convertedValuedFieldList; } catch (final ConversionException exception) { throw new ImportException("\nfor original valued field list\n" @@ -801,8 +798,7 @@ } } - private void setFields(final boolean staticFieldConversion, - final FieldInfo[] fieldInfos, + private void setFields(final FieldInfo[] fieldInfos, final ValuedFieldList convertedValuedFieldList) throws ImportException { // ASSERTX @@ -812,8 +808,6 @@ // ASSERTX assert assertFieldDefined(fieldInfo); // ASSERTX - assert assertStaticField(staticFieldConversion, fieldInfo); - // ASSERTX assert assertClassExists(fieldInfo); Integer index = convertedValuedFieldList .getFieldIndexByFieldInfo(fieldInfo); @@ -886,15 +880,6 @@ return true; } - private boolean assertStaticField(final boolean staticFieldConversion, - final FieldInfo fieldInfo) throws ClassInfoException, - ImportException { - if (fieldInfo.isStaticField() != staticFieldConversion) { - throw new ImportException("\nbad static scope:\n" + fieldInfo); - } - return true; - } - private boolean assertFieldDefined(final FieldInfo fieldInfo) throws ImportException { if (!fieldInfo.isFieldDefined()) { @@ -1013,53 +998,6 @@ } } - /** - * record class static field - * - * @param classInfo - * @param dataRecordIdentifier - * @param valuedFieldList - * @throws ImportException - * @throws ImportDataCorruptedException - * @throws ImportInvalidClassException - * @throws ImportNotSerializableException - * @throws ImportClassNotFoundException - * @throws ImportTooBigForSerializationException - */ - public void recordClass(final ClassInfo classInfo, - final DataRecordIdentifier dataRecordIdentifier, - final ValuedFieldList valuedFieldList) throws ImportException, - ImportDataCorruptedException, ImportInvalidClassException, - ImportNotSerializableException, ImportClassNotFoundException, - ImportTooBigForSerializationException { - try { - setObjectState(null, classInfo, valuedFieldList); - objectIOManager.getOrCreateObjectAndPersistInfoOfClass(classInfo, - dataRecordIdentifier); - storeSaver.setRootOfObjectsToSave(null); - storeSaver.saveForImport(/* null, */dummyObjectSet); - notifyImported(); - objectIOManager.clearObjectState(); - - } catch (final ObjectIOException exception) { - throw new ImportException(exception); - } catch (final StoreException exception) { - throw new ImportException(exception); - } catch (final StoreDataCorruptedException exception) { - throw new ImportDataCorruptedException(exception); - } catch (final StoreInvalidClassException exception) { - throw new ImportInvalidClassException(exception); - } catch (final StoreNotSerializableException exception) { - throw new ImportNotSerializableException(exception); - } catch (final StoreClassNotFoundException exception) { - throw new ImportClassNotFoundException(exception); - } catch (final StoreTooBigForSerializationException exception) { - throw new ImportTooBigForSerializationException(exception); - } - objectMap.clear(); - dummyObjectSet.clear(); - } - protected ClassDef getClassReplacementDef(final Class<?> clazz) throws ImportException { try { Modified: trunk/joafip/src/main/java/net/sf/joafip/store/service/export_import/in/InObjectsHandler.java =================================================================== --- trunk/joafip/src/main/java/net/sf/joafip/store/service/export_import/in/InObjectsHandler.java 2011-10-16 04:45:29 UTC (rev 2921) +++ trunk/joafip/src/main/java/net/sf/joafip/store/service/export_import/in/InObjectsHandler.java 2011-10-16 08:35:26 UTC (rev 2922) @@ -205,36 +205,36 @@ } private void endStaticElement() throws SAXException { - try { - final ClassDef classDef = currentObject.getClassDef(); - final DataRecordIdentifier dataRecordIdentifier = currentObject - .getDataRecordIdentifier(); - final ValuedFieldList valuedFieldList = xmlImporter - .convert(true, currentObject.getValuedFieldList(), - classDef.getReplacementDef(), - currentObject.getFieldsInfo()); - final ClassInfo classInfo = classDef.getReplacementClass(); - xmlImporter.recordClass(classInfo, dataRecordIdentifier, - valuedFieldList); - } catch (final ImportException exception) { - logger.error(END_ELEMENT_ERROR + location(), exception); - throw new SAXException(END_ELEMENT_ERROR + location(), exception); - } catch (final ImportDataCorruptedException exception) { - logger.error(END_ELEMENT_ERROR + location(), exception); - throw new SAXException(END_ELEMENT_ERROR + location(), exception); - } catch (final ImportInvalidClassException exception) { - logger.error(END_ELEMENT_ERROR + location(), exception); - throw new SAXException(END_ELEMENT_ERROR + location(), exception); - } catch (final ImportNotSerializableException exception) { - logger.error(END_ELEMENT_ERROR + location(), exception); - throw new SAXException(END_ELEMENT_ERROR + location(), exception); - } catch (final ImportClassNotFoundException exception) { - logger.error(END_ELEMENT_ERROR + location(), exception); - throw new SAXException(END_ELEMENT_ERROR + location(), exception); - } catch (final ImportTooBigForSerializationException exception) { - logger.error(END_ELEMENT_ERROR + location(), exception); - throw new SAXException(END_ELEMENT_ERROR + location(), exception); - } + // try { + // final ClassDef classDef = currentObject.getClassDef(); + // final DataRecordIdentifier dataRecordIdentifier = currentObject + // .getDataRecordIdentifier(); + // final ValuedFieldList valuedFieldList = xmlImporter + // .convert(true, currentObject.getValuedFieldList(), + // classDef.getReplacementDef(), + // currentObject.getFieldsInfo()); + // final ClassInfo classInfo = classDef.getReplacementClass(); + // xmlImporter.recordClass(classInfo, dataRecordIdentifier, + // valuedFieldList); + // } catch (final ImportException exception) { + // logger.error(END_ELEMENT_ERROR + location(), exception); + // throw new SAXException(END_ELEMENT_ERROR + location(), exception); + // } catch (final ImportDataCorruptedException exception) { + // logger.error(END_ELEMENT_ERROR + location(), exception); + // throw new SAXException(END_ELEMENT_ERROR + location(), exception); + // } catch (final ImportInvalidClassException exception) { + // logger.error(END_ELEMENT_ERROR + location(), exception); + // throw new SAXException(END_ELEMENT_ERROR + location(), exception); + // } catch (final ImportNotSerializableException exception) { + // logger.error(END_ELEMENT_ERROR + location(), exception); + // throw new SAXException(END_ELEMENT_ERROR + location(), exception); + // } catch (final ImportClassNotFoundException exception) { + // logger.error(END_ELEMENT_ERROR + location(), exception); + // throw new SAXException(END_ELEMENT_ERROR + location(), exception); + // } catch (final ImportTooBigForSerializationException exception) { + // logger.error(END_ELEMENT_ERROR + location(), exception); + // throw new SAXException(END_ELEMENT_ERROR + location(), exception); + // } } private void endArrayElement() throws SAXException { @@ -271,7 +271,7 @@ try { final ClassDef classDef = currentObject.getClassDef(); final ValuedFieldList valuedFieldList = xmlImporter - .convert(false, currentObject.getValuedFieldList(), + .convert(currentObject.getValuedFieldList(), classDef.getReplacementDef(), currentObject.getFieldsInfo()); final Object object = currentObject.getObject(); Modified: trunk/joafip/src/main/java/net/sf/joafip/store/service/export_import/out/AbstractExporter.java =================================================================== --- trunk/joafip/src/main/java/net/sf/joafip/store/service/export_import/out/AbstractExporter.java 2011-10-16 04:45:29 UTC (rev 2921) +++ trunk/joafip/src/main/java/net/sf/joafip/store/service/export_import/out/AbstractExporter.java 2011-10-16 08:35:26 UTC (rev 2922) @@ -291,7 +291,8 @@ .getObject(); final int dataModelIdentifier = dataModelIdentifier(storeRoot); - final Set<Long> dataRecordIdOfpersistedStaticSet = dataRecordIdOfpersistedStaticSet(storeRoot); + // final Set<Long> dataRecordIdOfpersistedStaticSet = + // dataRecordIdOfpersistedStaticSet(storeRoot); beginExportVisit(Version.JOAFIP_RELEASE, dataModelIdentifier, dataRecordIdentifier.value); @@ -305,41 +306,40 @@ dataRecordIdentifier = exportStoreQue.pollFirst(); while (dataRecordIdentifier != null) { - if (dataRecordIdOfpersistedStaticSet != null - && dataRecordIdOfpersistedStaticSet - .contains(dataRecordIdentifier.value)) { - final ClassInfo classInfo = storeAccessForExport - .getClassInfo(dataRecordIdentifier); - storeAccessForExport.setStaticState(dataRecordIdentifier); - exportStatic(classInfo, dataRecordIdentifier); + // if (dataRecordIdOfpersistedStaticSet != null + // && dataRecordIdOfpersistedStaticSet + // .contains(dataRecordIdentifier.value)) { + // final ClassInfo classInfo = storeAccessForExport + // .getClassInfo(dataRecordIdentifier); + // storeAccessForExport.setStaticState(dataRecordIdentifier); + // exportStatic(classInfo, dataRecordIdentifier); + // } else { + objectAndItsClassInfo = + /**/storeAccessForExport + .createGenericObjectReadingInStoreNotLazy(dataRecordIdentifier); + final ClassInfo objectClassInfo = objectAndItsClassInfo.objectClassInfo; + if (exportPersistedClassByteCode) { + exportClass(objectClassInfo); + } + final Object object = objectAndItsClassInfo.getObject(); + if (objectClassInfo.isStringType()) { + exportString(dataRecordIdentifier, (String) object); + } else if (objectClassInfo.isArrayType()) { + exportArray(dataRecordIdentifier, object, objectClassInfo); + } else if (objectClassInfo.isEnumType()) { + FieldInfo[] fieldInfos; + fieldInfos = objectClassInfo + .allDeclaredFieldsWithTransientWithoutStatic(); + exportEnum(dataRecordIdentifier, object, objectClassInfo, + fieldInfos); } else { - objectAndItsClassInfo = - /**/storeAccessForExport - .createGenericObjectReadingInStoreNotLazy(dataRecordIdentifier); - final ClassInfo objectClassInfo = objectAndItsClassInfo.objectClassInfo; - if (exportPersistedClassByteCode) { - exportClass(objectClassInfo); - } - final Object object = objectAndItsClassInfo.getObject(); - if (objectClassInfo.isStringType()) { - exportString(dataRecordIdentifier, (String) object); - } else if (objectClassInfo.isArrayType()) { - exportArray(dataRecordIdentifier, object, - objectClassInfo); - } else if (objectClassInfo.isEnumType()) { - FieldInfo[] fieldInfos; - fieldInfos = objectClassInfo - .allDeclaredFieldsWithTransientWithoutStatic(); - exportEnum(dataRecordIdentifier, object, - objectClassInfo, fieldInfos); - } else { - FieldInfo[] fieldInfos; - fieldInfos = objectClassInfo - .allDeclaredFieldsWithTransientWithoutStatic(); - exportGeneric(dataRecordIdentifier, object, - objectClassInfo, fieldInfos); - } + FieldInfo[] fieldInfos; + fieldInfos = objectClassInfo + .allDeclaredFieldsWithTransientWithoutStatic(); + exportGeneric(dataRecordIdentifier, object, + objectClassInfo, fieldInfos); } + // } storeAccessForExport.clearMemory(); numberExported = exportStoreQue.getNumberExported(); dataRecordIdentifier = exportStoreQue.pollFirst(); @@ -599,6 +599,7 @@ protected abstract void exportString(final int objectIdentifier, final String string) throws StoreException; + @SuppressWarnings("unused") private void exportStatic(final ClassInfo objectClassInfo, final DataRecordIdentifier objectDataRecordIdentifier) throws StoreException { Modified: trunk/joafip/src/main/java/net/sf/joafip/store/service/export_import/out/StoreAccessForExport.java =================================================================== --- trunk/joafip/src/main/java/net/sf/joafip/store/service/export_import/out/StoreAccessForExport.java 2011-10-16 04:45:29 UTC (rev 2921) +++ trunk/joafip/src/main/java/net/sf/joafip/store/service/export_import/out/StoreAccessForExport.java 2011-10-16 08:35:26 UTC (rev 2922) @@ -182,33 +182,6 @@ return objectAndItsClassInfo; } - public void setStaticState(final DataRecordIdentifier dataRecordIdentifier) - throws StoreException, StoreClassNotFoundException, - StoreInvalidClassException, StoreDataCorruptedException, - StoreNotSerializableException { - try { - objectIOManager.setStaticState(dataRecordIdentifier); - } catch (ObjectIOException exception) { - throw new StoreException(FOR_DATA_RECORD + dataRecordIdentifier, - exception); - } catch (ObjectIODataRecordNotFoundException exception) { - throw new StoreException(FOR_DATA_RECORD + dataRecordIdentifier, - exception); - } catch (ObjectIOClassNotFoundException exception) { - throw new StoreClassNotFoundException(FOR_DATA_RECORD - + dataRecordIdentifier, exception); - } catch (ObjectIOInvalidClassException exception) { - throw new StoreInvalidClassException(FOR_DATA_RECORD - + dataRecordIdentifier, exception); - } catch (ObjectIODataCorruptedException exception) { - throw new StoreDataCorruptedException(FOR_DATA_RECORD - + dataRecordIdentifier, exception); - } catch (ObjectIONotSerializableException exception) { - throw new StoreNotSerializableException(FOR_DATA_RECORD - + dataRecordIdentifier, exception); - } - } - /** * * @param object 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-16 04:45:29 UTC (rev 2921) +++ trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/AbstractObjectIOManagerDelegatingToStateMap.java 2011-10-16 08:35:26 UTC (rev 2922) @@ -127,26 +127,6 @@ return dataRecordIdentifier; } - @Override - public ObjectAndPersistInfo getOrCreateObjectAndPersistInfoOfClass( - final ClassInfo objectClassInfo) throws ObjectIOException { - return objectStateMgr - .getOrCreateObjectAndPersistInfoOfClass(objectClassInfo); - } - - @Override - public ObjectAndPersistInfo createObjectAndPersistInfoOfClass( - final ClassInfo objectClassInfo) throws ObjectIOException { - return objectStateMgr - .createObjectAndPersistInfoOfClass(objectClassInfo); - } - - @Override - public ObjectAndPersistInfo getObjectAndPersistInfoOfClass( - final ClassInfo objectClassInfo) throws ObjectIOException { - return objectStateMgr.getObjectAndPersistInfoOfClass(objectClassInfo); - } - public void clearObjectState() throws ObjectIOException { objectStateMgr.clear(); } @@ -193,10 +173,6 @@ return objectStateMgr.getNumberOfReferenced(); } - public Collection<ObjectAndPersistInfo> staticObjectAndPersistInfoSet() { - return objectStateMgr.staticObjectAndPersistInfoSet(); - } - protected void objectIsAccessedDelegate( final ObjectAndPersistInfo proxyObjectAndPersistInfo) { objectStateMgr.objectIsAccessed(proxyObjectAndPersistInfo); 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 04:45:29 UTC (rev 2921) +++ trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/AbstractObjectIOManagerIOForObject.java 2011-10-16 08:35:26 UTC (rev 2922) @@ -72,7 +72,6 @@ import net.sf.joafip.store.service.objectio.serialize.input.ObjectInputSerialize; import net.sf.joafip.store.service.objectio.serialize.input.ObjectInputSerializeGZipped; import net.sf.joafip.store.service.objectio.serialize.input.ObjectInputSerializeZipped; -import net.sf.joafip.store.service.objectio.serialize.input.ObjectInputStatic; import net.sf.joafip.store.service.objectio.serialize.output.IObjectOutput; import net.sf.joafip.store.service.objectio.serialize.output.ObjectIOOutputStream; import net.sf.joafip.store.service.objectio.serialize.output.ObjectOutputExternalizable; @@ -85,7 +84,6 @@ import net.sf.joafip.store.service.objectio.serialize.output.ObjectOutputSerialize; import net.sf.joafip.store.service.objectio.serialize.output.ObjectOutputSerializeGZipped; import net.sf.joafip.store.service.objectio.serialize.output.ObjectOutputSerializeZipped; -import net.sf.joafip.store.service.objectio.serialize.output.ObjectOutputStatic; import net.sf.joafip.store.service.proxy.IInstanceFactory; import net.sf.joafip.store.service.proxy.IProxyManagerForObjectIO; import net.sf.joafip.store.service.proxy.ProxyException; @@ -132,10 +130,6 @@ protected final IObjectOutput[] objectOutputs; - private final ObjectInputStatic objectInputStatic; - - protected ObjectOutputStatic objectOutputStatic; - private final ObjectIOOutputStream objectIOOutputStream; private final ObjectIOInputStream objectIOInputStream; @@ -325,11 +319,6 @@ objectInputs[EnumObjectInput.OBJECT_INPUT_SPECIFIC.ordinal()] = objectIODummy; objectOutputs[EnumObjectOutput.OBJECT_OUTPUT_SPECIFIC.ordinal()] = objectIODummy; - objectInputStatic = new ObjectInputStatic(this, classInfoFactory, - proxyManager2, helperBinaryConversion); - objectOutputStatic = new ObjectOutputStatic(this, classInfoFactory, - proxyManager2, helperBinaryConversion); - objectIOInputStream.setObjectIOGeneric(objectInputImmediateGeneric); objectIOOutputStream.setObjectIOGeneric(objectOutputGeneric); @@ -666,8 +655,6 @@ headerReader.read(binary, dataRecordIdentifier); final ClassInfo classInfo = headerReader.objectClassInfo; assertStorable(classInfo); - // ASSERTX - assert assertNotStaticPersistence(classInfo); final Deque<ClassReplacementDef> replacementDef = replacementDefForHeader(classInfo); final ObjectAndPersistInfo objectAndPersistInfo; @@ -767,15 +754,6 @@ return true; } - private boolean assertNotStaticPersistence(final ClassInfo classInfo) - throws ObjectIOException { - if (headerReader.staticPersistence) { - throw new ObjectIOException("static field state of class " - + classInfo.toString()); - } - return true; - } - protected abstract void notToGarbage( final DataRecordIdentifier dataRecordIdentifier, final ObjectAndPersistInfo objectAndPersistInfo) @@ -795,8 +773,6 @@ assertNotSubstituted(objectAndPersistInfo); // ASSERTX assert assertHasPersistenceState(objectAndPersistInfo); - // ASSERTX - assert !objectAndPersistInfo.staticPersistence : "static state can not be set trought proxy"; final ClassInfo classInfo = objectAndPersistInfo.objectClassInfo; // ASSERTX assert assertStorable(classInfo); @@ -1018,11 +994,7 @@ final ClassInfo classInfo = headerReader.objectClassInfo; final IObjectInput objectInput; try { - if (headerReader.staticPersistence) { - objectInput = objectInputStatic; - } else { - objectInput = getObjectInput(classInfo, false); - } + objectInput = getObjectInput(classInfo, false); final DataRecordIdentifier[] referencedList = objectInput .getReferencedList(binary, headerReader.headerDataSize); Class<?> objectClass; @@ -1060,17 +1032,11 @@ // ASSERTX assert classInfo != null && classInfo != ClassInfo.NULL : "class information for object not defined"; final IObjectOutput objectOutput; - final boolean staticPersistence = objectAndItsPersistInfo.staticPersistence; - if (staticPersistence) { - objectOutput = objectOutputStatic; - } else { - objectOutput = getObjectOutput(classInfo); - } + objectOutput = getObjectOutput(classInfo); final int byteSize = objectOutput.byteSize(toWriteObjectAndPersistInfo, HEADER_DATA_SIZE); final byte[] binary = new byte[byteSize]; - final int offset = headerWriter.write(classInfo, binary, - staticPersistence); + final int offset = headerWriter.write(classInfo, binary); if (offset != HEADER_DATA_SIZE) { throw new ObjectIOException("header data size missmatch"); } @@ -1089,24 +1055,21 @@ private boolean assertWritable( final ObjectAndPersistInfo objectAndPersistInfo) throws ObjectIOException { - if (!objectAndPersistInfo.staticPersistence) { - final Object object = objectAndPersistInfo.getObject(); - if (object == null) { - throw new ObjectIOException("can not save null"); + final Object object = objectAndPersistInfo.getObject(); + if (object == null) { + throw new ObjectIOException("can not save null"); + } + try { + if (!ProxyManager2.isLoadedOrNotAProxy(object)) { + throw new ObjectIOException("can not save not loaded object " + + object.getClass() + "@" + + System.identityHashCode(object) + + ", objectAndPersistInfo.isLoaded()=" + + objectAndPersistInfo.isLoaded()); } - try { - if (!ProxyManager2.isLoadedOrNotAProxy(object)) { - throw new ObjectIOException( - "can not save not loaded object " - + object.getClass() + "@" - + System.identityHashCode(object) - + ", objectAndPersistInfo.isLoaded()=" - + objectAndPersistInfo.isLoaded()); - } - } catch (final ProxyException exception) { - throw new ObjectIOException("can not save not loaded object", - exception); - } + } catch (final ProxyException exception) { + throw new ObjectIOException("can not save not loaded object", + exception); } return true; } @@ -1140,15 +1103,9 @@ /**/substituteObject(objectAndPersistInfo); final Object object = substituteObjectAndPersistInfo.getObject(); final IObjectOutput objectOutput; - if (objectAndPersistInfo.staticPersistence) { - // ASSERTX - assert assertNoInstance(substituteObjectAndPersistInfo, object); - objectOutput = objectOutputStatic; - } else { - // ASSERTX - assert assertHasInstance(substituteObjectAndPersistInfo, object); - objectOutput = getObjectOutput(substituteObjectAndPersistInfo.objectClassInfo); - } + // ASSERTX + assert assertHasInstance(substituteObjectAndPersistInfo, object); + objectOutput = getObjectOutput(substituteObjectAndPersistInfo.objectClassInfo); objectOutput.prepareWrite(substituteObjectAndPersistInfo); objectAndPersistInfo .setSubstituteObjectAndPersistInfo(substituteObjectAndPersistInfo); @@ -1156,15 +1113,9 @@ // write original object final Object object = objectAndPersistInfo.getObject(); final IObjectOutput objectOutput; - if (objectAndPersistInfo.staticPersistence) { - // ASSERTX - assert assertNoInstance(objectAndPersistInfo, object); - objectOutput = objectOutputStatic; - } else { - // ASSERTX - assert assertHasInstance(objectAndPersistInfo, object); - objectOutput = getObjectOutput(classInfo); - } + // ASSERTX + assert assertHasInstance(objectAndPersistInfo, object); + objectOutput = getObjectOutput(classInfo); objectOutput.prepareWrite(objectAndPersistInfo); } } @@ -1180,17 +1131,6 @@ return true; } - private boolean assertNoInstance( - final ObjectAndPersistInfo substituteObjectAndPersistInfo, - final Object object) throws ObjectIOException { - if (object != null) { - throw new ObjectIOException( - "must not have instance for static persistence " - + substituteObjectAndPersistInfo.toString()); - } - return true; - } - protected ObjectAndPersistInfo substituteObject( final ObjectAndPersistInfo objectAndPersistInfo) throws ObjectIOException, ObjectIODataCorruptedException { @@ -1212,86 +1152,6 @@ return substituteObjectAndPersistInfo; } - /** - * set static state of a class - * - * @param dataRecordIdentifier - * data record identifier of record containing object state - * @return persistence information, null if class does not exist - * @throws ObjectIOException - * @throws ObjectIODataCorruptedException - * @throws ObjectIODataRecordNotFoundException - * @throws ObjectIOClassNotFoundException - * @throws ObjectIOInvalidClassException - * @throws ObjectIONotSerializableException - */ - public ObjectAndPersistInfo setStaticState( - final DataRecordIdentifier dataRecordIdentifier) - throws ObjectIOException, ObjectIODataCorruptedException, - ObjectIODataRecordNotFoundException, - ObjectIOClassNotFoundException, ObjectIOInvalidClassException, - ObjectIONotSerializableException { - final byte[] binary = getDataOfDataRecord(dataRecordIdentifier); - headerReader.read(binary, dataRecordIdentifier); - final ClassInfo classInfo = headerReader.objectClassInfo; - // ASSERTX - assert assertStorable(classInfo); - // ASSERTX - assert assertStaticPersistence(classInfo); - final Deque<ClassReplacementDef> replacementDef = replacementDefForHeader(classInfo); - final ObjectAndPersistInfo objectAndPersistInfo; - final int offset = headerReader.headerDataSize; - - if (replacementDef.isEmpty()) { - if (classInfo.classExists()) { - objectAndPersistInfo = createObjectAndPersistInfoOfClass(classInfo); - objectAndPersistInfo - .setDataRecordIdentifier(dataRecordIdentifier); - objectAndPersistInfo.setReplacementDefList(replacementDef); - objectInputStatic.setObjectStaticState(objectAndPersistInfo, - binary, offset); - // not a new object to add to storage, created reading in - // storage - objectAndPersistInfo.setNewObject(false); - } else { - objectAndPersistInfo = new ObjectAndPersistInfo(classInfo); - } - } else { - - assertOriginalClassInfo(classInfo, replacementDef); - - final ClassInfo replacementClassInfo = replacementDef.peekLast() - .getReplacementClass(); - - if (replacementClassInfo.classExists()) { - objectAndPersistInfo = createObjectAndPersistInfoOfClass(replacementClassInfo); - objectAndPersistInfo - .setDataRecordIdentifier(dataRecordIdentifier); - objectAndPersistInfo.setReplacementDefList(replacementDef); - objectInputStatic.setObjectState(objectAndPersistInfo, binary, - offset); - } else { - objectAndPersistInfo = new ObjectAndPersistInfo( - replacementClassInfo); - } - - } - objectAndPersistInfo.setJoafipReleaseId(headerReader.joafipReleaseId); - objectAndPersistInfo - .setDataModelIdentifier(headerReader.dataModelIdentifier); - return objectAndPersistInfo; - } - - private boolean assertStaticPersistence(final ClassInfo classInfo) - throws ObjectIOException { - if (!headerReader.staticPersistence) { - throw new ObjectIOException( - "not a record for static field state of class " - + classInfo.toString()); - } - return true; - } - private boolean assertStorable(final ClassInfo classInfo) throws ObjectIOException { if (classInfo.isNotStorable()) { @@ -1302,43 +1162,6 @@ } @Override - public ObjectAndPersistInfo getOrCreateObjectAndPersistInfoOfClass( - final ClassInfo objectClassInfo, - final DataRecordIdentifier dataRecordIdentifier) - throws ObjectIOException { - - // final ObjectAndPersistInfo objectPersistInfoOfObject = - // /**/getOrCreateObjectAndPersistInfoOfClass(objectClassInfo); - // objectPersistInfoOfObject.setDataRecordIdentifier(dataRecordIdentifier); - // dataRecordIdentifierAssociatedToObjectSetted(objectPersistInfoOfObject); - ObjectAndPersistInfo objectPersistInfoOfObject = - /**/getObjectAndPersistInfoOfClass(objectClassInfo); - if (objectPersistInfoOfObject == null) { - objectPersistInfoOfObject = createObjectAndPersistInfoOfClass(objectClassInfo); - objectPersistInfoOfObject - .setDataRecordIdentifier(dataRecordIdentifier); - dataRecordIdentifierAssociatedToObjectSetted(objectPersistInfoOfObject); - } else if (objectPersistInfoOfObject.dataRecordIdentifier.value != dataRecordIdentifier.value) { - throw new ObjectIOException("data record id... [truncated message content] |
From: <luc...@us...> - 2011-10-16 08:35:34
|
Revision: 2922 http://joafip.svn.sourceforge.net/joafip/?rev=2922&view=rev Author: luc_peuvrier Date: 2011-10-16 08:35:26 +0000 (Sun, 16 Oct 2011) Log Message: ----------- no more static field persistence Modified Paths: -------------- trunk/joafip/src/main/java/net/sf/joafip/entity/FilePersistenceProperties.java trunk/joafip/src/main/java/net/sf/joafip/service/AbstractFilePersistenceDelegatingToStore.java trunk/joafip/src/main/java/net/sf/joafip/service/FilePersistence.java trunk/joafip/src/main/java/net/sf/joafip/service/FilePersistencePropertiesReader.java trunk/joafip/src/main/java/net/sf/joafip/service/IFilePersistence.java 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/saver/StoreSaverSession.java trunk/joafip/src/main/java/net/sf/joafip/store/service/IStore.java trunk/joafip/src/main/java/net/sf/joafip/store/service/Store.java trunk/joafip/src/main/java/net/sf/joafip/store/service/conversion/AbstractObjectReplacer.java trunk/joafip/src/main/java/net/sf/joafip/store/service/conversion/ObjectReplacerForImport.java trunk/joafip/src/main/java/net/sf/joafip/store/service/conversion/ObjectReplacerOnTheFly.java trunk/joafip/src/main/java/net/sf/joafip/store/service/export_import/in/AbstractImporter.java trunk/joafip/src/main/java/net/sf/joafip/store/service/export_import/in/InObjectsHandler.java trunk/joafip/src/main/java/net/sf/joafip/store/service/export_import/out/AbstractExporter.java trunk/joafip/src/main/java/net/sf/joafip/store/service/export_import/out/StoreAccessForExport.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/HeaderReader.java trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/manager/HeaderWriter.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/ObjectStateMgr.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/saver/StoreSaver3.java trunk/joafip/src/test/java/net/sf/joafip/entity/AbstractClassForExport.java trunk/joafip/src/test/java/net/sf/joafip/entity/ClassForExport.java trunk/joafip/src/test/java/net/sf/joafip/entity/rel310/ClassTwo301bReplacement.java trunk/joafip/src/test/java/net/sf/joafip/export_import/AbstractClassOne301b.java trunk/joafip/src/test/java/net/sf/joafip/export_import/ClassOne301b.java trunk/joafip/src/test/java/net/sf/joafip/service/TestExportImport.java trunk/joafip/src/test/java/net/sf/joafip/service/rel310/Abstract301Usage.java trunk/joafip/src/test/java/net/sf/joafip/store/service/StoreForTest.java trunk/joafip/src/test/java/net/sf/joafip/store/service/copier/AbstractTestDeepCopier.java trunk/joafip/src/test/java/net/sf/joafip/store/service/objectfortest/Bob1.java trunk/joafip/src/test/java/net/sf/joafip/store/service/objectio/manager/AbstractTestIoManager.java trunk/joafip/src/test/java/net/sf/joafip/store/service/objectio/serialize/AbstractObjectIOTest.java trunk/joafip/src/test/java/net/sf/joafip/store/service/proxy/AbstractObjectIoManagerForProxyTest.java trunk/joafip/src/test/java/net/sf/joafip/store/service/proxy/ProxyCallBackForTest.java trunk/joafip-testsuite/src/main/java/net/sf/joafip/InErrorTests.java trunk/joafip-testsuite/src/main/java/net/sf/joafip/service/rel301/ServiceRel301Tests.java trunk/joafip-testsuite/src/main/java/net/sf/joafip/service/rel400/ServiceRel400Tests.java trunk/joafip-testsuite/src/main/java/net/sf/joafip/store/service/objectio/manager/ObjectIOManagerTests.java trunk/joafip-testsuite/src/main/java/net/sf/joafip/store/service/objectio/serialize/ObjectIOSerializeTests.java Removed Paths: ------------- trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/serialize/input/ObjectInputStatic.java trunk/joafip/src/main/java/net/sf/joafip/store/service/objectio/serialize/output/ObjectOutputStatic.java trunk/joafip/src/test/java/net/sf/joafip/service/rel301/TestStaticPersisted.java trunk/joafip/src/test/java/net/sf/joafip/service/rel400/TestAutoSaveWithStatic.java trunk/joafip/src/test/java/net/sf/joafip/store/service/objectio/manager/TestObjectIOManagerStaticFieldCase.java trunk/joafip/src/test/java/net/sf/joafip/store/service/objectio/serialize/ObjectIOStaticTest.java This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <luc...@us...> - 2011-10-16 04:45:37
|
Revision: 2921 http://joafip.svn.sourceforge.net/joafip/?rev=2921&view=rev Author: luc_peuvrier Date: 2011-10-16 04:45:29 +0000 (Sun, 16 Oct 2011) Log Message: ----------- auto save done when create new instance Modified Paths: -------------- trunk/joafip/doc/_todo.txt trunk/joafip/src/main/java/net/sf/joafip/reflect/HelperReflect.java 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/service/AbstractDelegatingToStoreManagers.java trunk/joafip/src/main/java/net/sf/joafip/store/service/bytecode/proxy/EnhanceCodeGenerator.java trunk/joafip/src/main/java/net/sf/joafip/store/service/export_import/out/ExportStoreQue.java trunk/joafip/src/main/java/net/sf/joafip/store/service/proxy/DetachedProxyCallBack.java trunk/joafip/src/main/java/net/sf/joafip/store/service/proxy/IProxyCallBackProxyDelegation.java trunk/joafip/src/main/java/net/sf/joafip/store/service/proxy/IProxyCallBackToImplement.java trunk/joafip/src/main/java/net/sf/joafip/store/service/proxy/NullProxyCallBack.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/proxy/StaticProxyCallBack.java trunk/joafip/src/test/java/net/sf/joafip/entity/rel400/BobASDelegatingListenDelegate.java trunk/joafip/src/test/java/net/sf/joafip/service/TestTreeListIteratorIntercept.java trunk/joafip/src/test/java/net/sf/joafip/service/rel400/TestAutoSave.java trunk/joafip/src/test/java/net/sf/joafip/store/service/proxy/ProxyCallBackForTest.java trunk/joafip-collection/src/main/java/net/sf/joafip/java/util/PMapKeyNavigableSet.java trunk/joafip-testsuite/src/main/java/net/sf/joafip/InErrorTests.java trunk/joafip-testsuite/src/main/java/net/sf/joafip/service/rel400/ServiceRel400Tests.java trunk/joafip-testsuite/src/main/java/net/sf/joafip/store/service/proxy/ProxyTests.java Added Paths: ----------- trunk/joafip/src/test/java/net/sf/joafip/entity/rel400/KeyDef.java trunk/joafip/src/test/java/net/sf/joafip/service/rel400/TestConstructEntrySetIteratorOfPMapKeyNavigableSet.java trunk/joafip/src/test/java/net/sf/joafip/store/entity/proxy/BobCallInConstructor.java trunk/joafip/src/test/java/net/sf/joafip/store/service/proxy/TestProxyCreationConstructed.java Modified: trunk/joafip/doc/_todo.txt =================================================================== --- trunk/joafip/doc/_todo.txt 2011-10-14 08:55:42 UTC (rev 2920) +++ trunk/joafip/doc/_todo.txt 2011-10-16 04:45:29 UTC (rev 2921) @@ -22,6 +22,7 @@ - export speed up - kept in memory for object referenced by static field - check field access constraints, direct field access disallow to force use of getter and/or setter +- static field persistence feature removed because a non sense minor changes: - added search last in red black tree manager @@ -94,10 +95,8 @@ garbage management error with jhupedom -keptinmemory problem +kept in memory problem -static field persistence problem - joafip reflect project (see setAccessible ) - joafip - joafip-log4j Modified: trunk/joafip/src/main/java/net/sf/joafip/reflect/HelperReflect.java =================================================================== --- trunk/joafip/src/main/java/net/sf/joafip/reflect/HelperReflect.java 2011-10-14 08:55:42 UTC (rev 2920) +++ trunk/joafip/src/main/java/net/sf/joafip/reflect/HelperReflect.java 2011-10-16 04:45:29 UTC (rev 2921) @@ -573,6 +573,12 @@ } stringBuilder.append('\n'); } + final Constructor<?>[] constructors = objectClass + .getDeclaredConstructors(); + stringBuilder.append("constructors:\n"); + for (Constructor<?> constructor : constructors) { + stringBuilder.append(constructor.toString()); + } return new ReflectException(stringBuilder.toString(), exception); } 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-14 08:55:42 UTC (rev 2920) +++ trunk/joafip/src/main/java/net/sf/joafip/store/entity/objectio/ObjectAndPersistInfo.java 2011-10-16 04:45:29 UTC (rev 2921) @@ -460,6 +460,7 @@ public void clearSubstitution() { if (substitutionOfObject != null) { substitutionOfObject.substituteObjectAndPersistInfo = null;// NOPMD + substitutionOfObject = null;// NOPMD } } 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-10-14 08:55:42 UTC (rev 2920) +++ trunk/joafip/src/main/java/net/sf/joafip/store/entity/objectio/ObjectStateMap.java 2011-10-16 04:45:29 UTC (rev 2921) @@ -425,7 +425,7 @@ queueSize = 0; queueNumberOfWeakRef = 0; } - // FIXMELUC ____________________static persistence information live + // FIXMELUC _________________static persistence information live // with file persistence staticStateMap.clear(); // checkNullFieldError(); 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-14 08:55:42 UTC (rev 2920) +++ trunk/joafip/src/main/java/net/sf/joafip/store/service/AbstractDelegatingToStoreManagers.java 2011-10-16 04:45:29 UTC (rev 2921) @@ -588,7 +588,7 @@ } catch (final ClassInfoException exception) { throw new StoreException(exception); } - // FIXMELUC _______________________not good classInfo.setKeptInMemory() + // FIXMELUC ___________________not good classInfo.setKeptInMemory() classInfo.setKeptInMemory(); setSubstituteObjectManager(objectClass, KeptInMemoryObjectKey.class, keptInMemorySubstituteObjectManager); Modified: trunk/joafip/src/main/java/net/sf/joafip/store/service/bytecode/proxy/EnhanceCodeGenerator.java =================================================================== --- trunk/joafip/src/main/java/net/sf/joafip/store/service/bytecode/proxy/EnhanceCodeGenerator.java 2011-10-14 08:55:42 UTC (rev 2920) +++ trunk/joafip/src/main/java/net/sf/joafip/store/service/bytecode/proxy/EnhanceCodeGenerator.java 2011-10-16 04:45:29 UTC (rev 2921) @@ -85,6 +85,11 @@ private String forceLoadMethodDesc; + private static final String SET_IN_CONSTRUCTION_METHOD_NAME = + /**/"setInConstruction$JOAFIP$"; + + private String setInConstructionMethodDesc; + private static final String[] FORCE_LOAD_EXCEPTION = new String[] { /**/Type.getInternalName(ObjectIOException.class), /**/Type.getInternalName(ObjectIODataRecordNotFoundException.class), @@ -189,6 +194,11 @@ forceLoadMethodDesc = Type.getMethodDescriptor(method); method = IProxyCallBack.class.getMethod( + /**/SET_IN_CONSTRUCTION_METHOD_NAME, + /**/new Class[] { boolean.class }); + setInConstructionMethodDesc = Type.getMethodDescriptor(method); + + method = IProxyCallBack.class.getMethod( /**/UNLOAD_METHOD_NAME, /**/NO_PARAMETERS); unloadMethodDesc = Type.getMethodDescriptor(method); @@ -456,6 +466,33 @@ methodVisitor.visitEnd(); /* + * setInConstruction + */ + + methodVisitor = classWriter.visitMethod( + /**/ACC_PUBLIC, + /**/SET_IN_CONSTRUCTION_METHOD_NAME, + /**/setInConstructionMethodDesc, + /**/null, + /**/null); + methodVisitor.visitCode(); + methodVisitor.visitVarInsn(ALOAD, 0); + methodVisitor.visitFieldInsn( + /**/GETFIELD, + /**/classInternalName, + /**/PROXY_CALL_BACK_FIELD_NAME, I_PROXY_CALL_BACK_DELEGATION_DESC); + methodVisitor.visitVarInsn(ILOAD, 1); + methodVisitor.visitMethodInsn( + /**/INVOKEINTERFACE, + /**/I_PROXY_CALL_BACK_INTERFACE, + /**/SET_IN_CONSTRUCTION_METHOD_NAME, + /**/setInConstructionMethodDesc); + methodVisitor.visitInsn(RETURN); + // FIXMELUC _visitmaxs call needed ? + methodVisitor.visitMaxs(0, 0); + methodVisitor.visitEnd(); + + /* * unload */ methodVisitor = classWriter.visitMethod( Modified: trunk/joafip/src/main/java/net/sf/joafip/store/service/export_import/out/ExportStoreQue.java =================================================================== --- trunk/joafip/src/main/java/net/sf/joafip/store/service/export_import/out/ExportStoreQue.java 2011-10-14 08:55:42 UTC (rev 2920) +++ trunk/joafip/src/main/java/net/sf/joafip/store/service/export_import/out/ExportStoreQue.java 2011-10-16 04:45:29 UTC (rev 2921) @@ -80,12 +80,6 @@ heapDataManagerForSet.stopService(); } - // FIXMELUC ___________________no more needed because of auto save - // public void save() throws HeapException { - // heapDataManagerForQue.flush(); - // heapDataManagerForSet.flush(); - // } - public DataRecordIdentifier pollFirst() throws HeapException { return heapDataManagerForQue.removeFirstDataRecord(); } Modified: trunk/joafip/src/main/java/net/sf/joafip/store/service/proxy/DetachedProxyCallBack.java =================================================================== --- trunk/joafip/src/main/java/net/sf/joafip/store/service/proxy/DetachedProxyCallBack.java 2011-10-14 08:55:42 UTC (rev 2920) +++ trunk/joafip/src/main/java/net/sf/joafip/store/service/proxy/DetachedProxyCallBack.java 2011-10-16 04:45:29 UTC (rev 2921) @@ -121,4 +121,10 @@ public IObjectIOManagerForProxyObjectIO getObjectIOManager$JOAFIP$() { throw new UnsupportedOperationException(); } + + @SuppressWarnings("PMD") + @Override + public void setInConstruction$JOAFIP$(final boolean inConstruction) { + throw new UnsupportedOperationException(); + } } Modified: trunk/joafip/src/main/java/net/sf/joafip/store/service/proxy/IProxyCallBackProxyDelegation.java =================================================================== --- trunk/joafip/src/main/java/net/sf/joafip/store/service/proxy/IProxyCallBackProxyDelegation.java 2011-10-14 08:55:42 UTC (rev 2920) +++ trunk/joafip/src/main/java/net/sf/joafip/store/service/proxy/IProxyCallBackProxyDelegation.java 2011-10-16 04:45:29 UTC (rev 2921) @@ -110,4 +110,7 @@ @SuppressWarnings("PMD") ObjectAndPersistInfo getInstance$JOAFIP$(); + + @SuppressWarnings("PMD") + void setInConstruction$JOAFIP$(boolean inConstruction); } Modified: trunk/joafip/src/main/java/net/sf/joafip/store/service/proxy/IProxyCallBackToImplement.java =================================================================== --- trunk/joafip/src/main/java/net/sf/joafip/store/service/proxy/IProxyCallBackToImplement.java 2011-10-14 08:55:42 UTC (rev 2920) +++ trunk/joafip/src/main/java/net/sf/joafip/store/service/proxy/IProxyCallBackToImplement.java 2011-10-16 04:45:29 UTC (rev 2921) @@ -66,4 +66,7 @@ @Fortest @SuppressWarnings("PMD") int getInObjectCount$JOAFIP$(); + + @SuppressWarnings("PMD") + boolean isAutoSaveEnabled$JOAFIP$(); } Modified: trunk/joafip/src/main/java/net/sf/joafip/store/service/proxy/NullProxyCallBack.java =================================================================== --- trunk/joafip/src/main/java/net/sf/joafip/store/service/proxy/NullProxyCallBack.java 2011-10-14 08:55:42 UTC (rev 2920) +++ trunk/joafip/src/main/java/net/sf/joafip/store/service/proxy/NullProxyCallBack.java 2011-10-16 04:45:29 UTC (rev 2921) @@ -179,4 +179,16 @@ public int getInObjectCount$JOAFIP$() { throw new UnsupportedOperationException(); } + + @Override + @SuppressWarnings("PMD") + public boolean isAutoSaveEnabled$JOAFIP$() { + throw new UnsupportedOperationException(); + } + + @Override + @SuppressWarnings("PMD") + public void setInConstruction$JOAFIP$(final boolean inConstruction) { + throw new UnsupportedOperationException(); + } } 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-14 08:55:42 UTC (rev 2920) +++ trunk/joafip/src/main/java/net/sf/joafip/store/service/proxy/ProxyCallBack.java 2011-10-16 04:45:29 UTC (rev 2921) @@ -88,6 +88,8 @@ private final boolean autoSaveEnabled; + private boolean inConstruction; + public static void setUseJavaAgent(final boolean useJavaAgent) { ProxyCallBack.useJavaAgent = useJavaAgent; } @@ -206,6 +208,7 @@ } if (!loaded + && !inConstruction && !FINALIZER_THREAD_NAME.equals(Thread.currentThread() .getName())) { /* @@ -277,7 +280,7 @@ ObjectIOClassNotFoundException, ObjectIODataCorruptedException, ObjectIONotSerializableException { synchronized (storeMutex) { - if (!loading) { + if (!loading && !inConstruction) { loading = true; if (!loaded) { load(); @@ -296,7 +299,7 @@ /* * inObjectCount==0 because can not unload object when running its code */ - if (loaded) { + if (loaded && !inConstruction) { if (!loading && inObjectCount == 0) { loaded = false; objectIOManager.unsetProxyObjectState(getInstance$JOAFIP$()); @@ -376,6 +379,18 @@ } @Override + @SuppressWarnings("PMD") + public void setInConstruction$JOAFIP$(final boolean inConstruction) { + this.inConstruction = inConstruction; + } + + @Override + @SuppressWarnings("PMD") + public boolean isAutoSaveEnabled$JOAFIP$() { + return autoSaveEnabled; + } + + @Override public String toString() { return super.toString() + ", for " + getInstance$JOAFIP$().toString(); } 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-10-14 08:55:42 UTC (rev 2920) +++ trunk/joafip/src/main/java/net/sf/joafip/store/service/proxy/ProxyManager2.java 2011-10-16 04:45:29 UTC (rev 2921) @@ -290,9 +290,12 @@ if (constructed) { assert getProxyCallBack(instanceCreated) != NULL_PROXY_CALL_BACK_INSTANCE; + setNotInConstruction(instanceCreated); + // set is loaded last for auto save objectAndPersistInfo.setIsLoaded(); } } else { + // FIXMELUC ___________one method for objectAndPersistInfo action // created by save assert constructed; objectAndPersistInfo.unWeakReferenceOnObject(); @@ -304,6 +307,9 @@ * objectAndPersistInfo.setIsLoaded() should be good to, may be * better */ + // objectAndPersistInfo.getProxyCallBackOfObject().setInConstruction$JOAFIP$(false); + setNotInConstruction(instanceCreated); + // set is loaded last for auto save setIsLoaded(instanceCreated); } return objectAndPersistInfo; @@ -394,6 +400,15 @@ } } + private void setNotInConstruction(final Object object) { + if (useJavaAgent) { + StaticProxyCallBack.setInConstruction(object, false); + } else if (isProxy(object)) { + ((IProxyCallBackProxyDelegation) object) + .setInConstruction$JOAFIP$(false); + } + } + public static void setIsLoadedNoSave(final Object object) throws ProxyException { try { @@ -546,6 +561,15 @@ + object.getClass().getName() + "@" + System.identityHashCode(object); + // FIXMELUC _______________________old proxy call back + // FIXMELUC _______________________only for autosave + // if(proxyCallBack.isAutoSaveEnabled$JOAFIP$()) + final IProxyCallBackToImplement oldProxyCallBack = proxy + .getProxyCallBack$JOAFIP$(); + if (oldProxyCallBack == NULL_PROXY_CALL_BACK_INSTANCE) {// NOPMD + // in construction + proxyCallBack.setInConstruction$JOAFIP$(true); + } proxy.setProxyCallBack$JOAFIP$(proxyCallBack); } proxyCallBack.setInstance$JOAFIP$(objectAndPersistInfo); Modified: trunk/joafip/src/main/java/net/sf/joafip/store/service/proxy/StaticProxyCallBack.java =================================================================== --- trunk/joafip/src/main/java/net/sf/joafip/store/service/proxy/StaticProxyCallBack.java 2011-10-14 08:55:42 UTC (rev 2920) +++ trunk/joafip/src/main/java/net/sf/joafip/store/service/proxy/StaticProxyCallBack.java 2011-10-16 04:45:29 UTC (rev 2921) @@ -141,6 +141,17 @@ } } + public static void setInConstruction(final Object object, + final boolean inConstruction) { + final IProxyCallBackProxyDelegation proxyCallBack; + synchronized (StaticProxyCallBack.class) { + proxyCallBack = proxyCallBackOfObject(object); + } + if (proxyCallBack != null) { + proxyCallBack.setInConstruction$JOAFIP$(inConstruction); + } + } + public static void setIsLoadedNoSave(final Object object) throws ObjectIOException { final IProxyCallBackProxyDelegation proxyCallBack; Modified: trunk/joafip/src/test/java/net/sf/joafip/entity/rel400/BobASDelegatingListenDelegate.java =================================================================== --- trunk/joafip/src/test/java/net/sf/joafip/entity/rel400/BobASDelegatingListenDelegate.java 2011-10-14 08:55:42 UTC (rev 2920) +++ trunk/joafip/src/test/java/net/sf/joafip/entity/rel400/BobASDelegatingListenDelegate.java 2011-10-16 04:45:29 UTC (rev 2921) @@ -44,6 +44,7 @@ if (delegate == null) { throw new IllegalStateException("delegate must not be null"); } + initialize();// NOPMD } public static BobASDelegatingListenDelegate newInstance( @@ -60,6 +61,10 @@ return newInstance; } + public void initialize() { + // no implementation + } + public void action() { // delegate action job delegate.action(); Added: trunk/joafip/src/test/java/net/sf/joafip/entity/rel400/KeyDef.java =================================================================== --- trunk/joafip/src/test/java/net/sf/joafip/entity/rel400/KeyDef.java (rev 0) +++ trunk/joafip/src/test/java/net/sf/joafip/entity/rel400/KeyDef.java 2011-10-16 04:45:29 UTC (rev 2921) @@ -0,0 +1,45 @@ +/* + * Copyright 2011 Luc Peuvrier + * + * This file is a part of JOAFIP. + * + * JOAFIP is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License. + * + * Licensed under the GNU LESSER GENERAL PUBLIC LICENSE + * Licensed under the LGPL License, Version 3, 29 June 2007 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.gnu.org/licenses/lgpl.html + * + * JOAFIP is distributed in the hope that it will be useful, but + * unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package net.sf.joafip.entity.rel400; + +import net.sf.joafip.StorableClass; + +/** + * + * @author luc peuvrier + * + */ +@StorableClass +public class KeyDef { + + private final String name; + + public KeyDef(final String name) { + super(); + this.name = name; + } + + public String getName() { + return name; + } +} Modified: trunk/joafip/src/test/java/net/sf/joafip/service/TestTreeListIteratorIntercept.java =================================================================== --- trunk/joafip/src/test/java/net/sf/joafip/service/TestTreeListIteratorIntercept.java 2011-10-14 08:55:42 UTC (rev 2920) +++ trunk/joafip/src/test/java/net/sf/joafip/service/TestTreeListIteratorIntercept.java 2011-10-16 04:45:29 UTC (rev 2921) @@ -138,4 +138,15 @@ final ObjectAndPersistInfo objectAndPersistInfo) { // no implementation } + + @Override + public boolean isAutoSaveEnabled$JOAFIP$() {// NOPMD + // no implementation + return false; + } + + @Override + public void setInConstruction$JOAFIP$(final boolean inConstruction) {// NOPMD + // no implementation + } } Modified: trunk/joafip/src/test/java/net/sf/joafip/service/rel400/TestAutoSave.java =================================================================== --- trunk/joafip/src/test/java/net/sf/joafip/service/rel400/TestAutoSave.java 2011-10-14 08:55:42 UTC (rev 2920) +++ trunk/joafip/src/test/java/net/sf/joafip/service/rel400/TestAutoSave.java 2011-10-16 04:45:29 UTC (rev 2921) @@ -20,8 +20,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package net.sf.joafip.service.rel400; +package net.sf.joafip.service.rel400;//NOPMD +import java.util.Iterator; +import java.util.Map.Entry; + import net.sf.joafip.AbstractDeleteFileTestCase; import net.sf.joafip.NotStorableClass; import net.sf.joafip.StorableAccess; @@ -30,6 +33,8 @@ import net.sf.joafip.entity.rel400.BobASDelegatingListenDelegate; import net.sf.joafip.entity.rel400.BobASWithTransientCaller; import net.sf.joafip.entity.rel400.BobForAutoSaveTest; +import net.sf.joafip.entity.rel400.KeyDef; +import net.sf.joafip.java.util.PTreeMap; import net.sf.joafip.service.FilePersistence; import net.sf.joafip.service.FilePersistenceBuilder; import net.sf.joafip.service.FilePersistenceClassNotFoundException; @@ -41,6 +46,7 @@ import net.sf.joafip.service.IAutoSaveEventListener; import net.sf.joafip.service.IExclusiveDataAccessSession; import net.sf.joafip.store.entity.objectio.ObjectAndPersistInfo; +import net.sf.joafip.store.entity.proxy.BobCallInConstructor; import net.sf.joafip.store.service.objectfortest.Bob1; import net.sf.joafip.store.service.objectfortest.Bob2; import net.sf.joafip.store.service.objectio.ObjectIOException; @@ -411,6 +417,49 @@ session.close(); } + public void testCallInConstructor() throws FilePersistenceException, + FilePersistenceClassNotFoundException, + FilePersistenceInvalidClassException, + FilePersistenceDataCorruptedException, + FilePersistenceNotSerializableException, + FilePersistenceTooBigForSerializationException { + final IInstanceFactory instanceFactory = session.getInstanceFactory(); + session.open(); + final Class<?> objectClass = BobCallInConstructor.class; + saveDoneFlag = false; + instanceFactory.newInstance(objectClass, + new Class<?>[] { String.class }, new Object[] { "a name" }); + assertTrue(MUST_SAVE, saveDoneFlag); + session.close(); + } + + private static final KeyDef KEY_DEF_1 = new KeyDef("key1"); + + private static final KeyDef KEY_DEF_2 = new KeyDef("key2"); + + @SuppressWarnings("unchecked") + public void testRefToStatic() throws FilePersistenceException, + FilePersistenceClassNotFoundException, + FilePersistenceInvalidClassException, + FilePersistenceDataCorruptedException, + FilePersistenceNotSerializableException { + final IInstanceFactory instanceFactory = session.getInstanceFactory(); + session.open(); + final PTreeMap<String, KeyDef> map = (PTreeMap<String, KeyDef>) instanceFactory + .newInstance(PTreeMap.class); + map.put(KEY_DEF_1.getName(), KEY_DEF_1); + map.put(KEY_DEF_2.getName(), KEY_DEF_2); + final Iterator<Entry<String, KeyDef>> iterator = map.entrySet() + .iterator(); + assertTrue("must has next", iterator.hasNext()); + Entry<String, KeyDef> next = iterator.next(); + assertEquals("bad key", KEY_DEF_1.getName(), next.getKey()); + assertTrue("must has next", iterator.hasNext()); + next = iterator.next(); + assertEquals("bad key", KEY_DEF_2.getName(), next.getKey()); + assertFalse("must not has next", iterator.hasNext()); + } + @Override public boolean doSave() { return true; Added: trunk/joafip/src/test/java/net/sf/joafip/service/rel400/TestConstructEntrySetIteratorOfPMapKeyNavigableSet.java =================================================================== --- trunk/joafip/src/test/java/net/sf/joafip/service/rel400/TestConstructEntrySetIteratorOfPMapKeyNavigableSet.java (rev 0) +++ trunk/joafip/src/test/java/net/sf/joafip/service/rel400/TestConstructEntrySetIteratorOfPMapKeyNavigableSet.java 2011-10-16 04:45:29 UTC (rev 2921) @@ -0,0 +1,81 @@ +/* + * Copyright 2011 Luc Peuvrier + * + * This file is a part of JOAFIP. + * + * JOAFIP is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License. + * + * Licensed under the GNU LESSER GENERAL PUBLIC LICENSE + * Licensed under the LGPL License, Version 3, 29 June 2007 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.gnu.org/licenses/lgpl.html + * + * JOAFIP is distributed in the hope that it will be useful, but + * unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package net.sf.joafip.service.rel400; + +import java.util.Iterator; +import java.util.NavigableMap; + +import net.sf.joafip.AbstractJoafipCommonTestCase; +import net.sf.joafip.TestException; +import net.sf.joafip.java.util.PMapKeyNavigableSet; +import net.sf.joafip.java.util.PTreeMap; +import net.sf.joafip.reflect.HelperReflect; +import net.sf.joafip.reflect.ReflectException; +import net.sf.joafip.service.FilePersistenceRuntimeException; +import net.sf.joafip.store.service.proxy.IInstanceFactory; + +/** + * + * @author luc peuvrier + * + */ +public class TestConstructEntrySetIteratorOfPMapKeyNavigableSet extends + AbstractJoafipCommonTestCase implements IInstanceFactory { + + public TestConstructEntrySetIteratorOfPMapKeyNavigableSet() + throws TestException { + super(); + } + + public TestConstructEntrySetIteratorOfPMapKeyNavigableSet(final String name) + throws TestException { + super(name); + } + + @SuppressWarnings("unchecked") + public void test() { // NOPMD + final NavigableMap<String, String> navigableMap = new PTreeMap<String, String>(); + final PMapKeyNavigableSet<String, String> map = PMapKeyNavigableSet + .newInstance(this, navigableMap); + final Iterator<String> iterator = map.iterator(); + assertFalse("must be empty", iterator.hasNext()); + final Iterator<String> descendingIterator = map.descendingIterator(); + assertFalse("must be empty", descendingIterator.hasNext()); + } + + @Override + public Object newInstance(final Class<?> objectClass, + final Class<?>[] parameterTypes, final Object[] initargs) { + try { + return HelperReflect.getInstance().newInstanceConstruct( + objectClass, parameterTypes, initargs); + } catch (ReflectException exception) { + throw new FilePersistenceRuntimeException(exception); + } + } + + @Override + public Object newInstance(final Class<?> objectClass) { + throw new UnsupportedOperationException("should not be used"); + } +} Added: trunk/joafip/src/test/java/net/sf/joafip/store/entity/proxy/BobCallInConstructor.java =================================================================== --- trunk/joafip/src/test/java/net/sf/joafip/store/entity/proxy/BobCallInConstructor.java (rev 0) +++ trunk/joafip/src/test/java/net/sf/joafip/store/entity/proxy/BobCallInConstructor.java 2011-10-16 04:45:29 UTC (rev 2921) @@ -0,0 +1,61 @@ +/* + * Copyright 2011 Luc Peuvrier + * + * This file is a part of JOAFIP. + * + * JOAFIP is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License. + * + * Licensed under the GNU LESSER GENERAL PUBLIC LICENSE + * Licensed under the LGPL License, Version 3, 29 June 2007 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.gnu.org/licenses/lgpl.html + * + * JOAFIP is distributed in the hope that it will be useful, but + * unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package net.sf.joafip.store.entity.proxy; + +/** + * + * @author luc peuvrier + * + */ +public class BobCallInConstructor { + + private String name; + + private int age; + + public BobCallInConstructor(final String name, final int age) { + super(); + setName(name);// NOPMD + setAge(age);// NOPMD + } + + public BobCallInConstructor(final String name) { + this(name, -1); + } + + public int getAge() { + return age; + } + + public void setAge(final int age) { + this.age = age; + } + + public String getName() { + return name; + } + + public void setName(final String name) { + this.name = name; + } +} Modified: trunk/joafip/src/test/java/net/sf/joafip/store/service/proxy/ProxyCallBackForTest.java =================================================================== --- trunk/joafip/src/test/java/net/sf/joafip/store/service/proxy/ProxyCallBackForTest.java 2011-10-14 08:55:42 UTC (rev 2920) +++ trunk/joafip/src/test/java/net/sf/joafip/store/service/proxy/ProxyCallBackForTest.java 2011-10-16 04:45:29 UTC (rev 2921) @@ -292,4 +292,17 @@ throws ObjectIOException { // no implementation } + + @SuppressWarnings("PMD") + @Override + public boolean isAutoSaveEnabled$JOAFIP$() { + // no implementation + return false; + } + + @SuppressWarnings("PMD") + @Override + public void setInConstruction$JOAFIP$(final boolean inConstruction) { + // no implementation + } } Added: trunk/joafip/src/test/java/net/sf/joafip/store/service/proxy/TestProxyCreationConstructed.java =================================================================== --- trunk/joafip/src/test/java/net/sf/joafip/store/service/proxy/TestProxyCreationConstructed.java (rev 0) +++ trunk/joafip/src/test/java/net/sf/joafip/store/service/proxy/TestProxyCreationConstructed.java 2011-10-16 04:45:29 UTC (rev 2921) @@ -0,0 +1,101 @@ +/* + * Copyright 2011 Luc Peuvrier + * + * This file is a part of JOAFIP. + * + * JOAFIP is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License. + * + * Licensed under the GNU LESSER GENERAL PUBLIC LICENSE + * Licensed under the LGPL License, Version 3, 29 June 2007 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.gnu.org/licenses/lgpl.html + * + * JOAFIP is distributed in the hope that it will be useful, but + * unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package net.sf.joafip.store.service.proxy; + +import net.sf.joafip.NotStorableClass; +import net.sf.joafip.TestException; +import net.sf.joafip.heapfile.record.entity.DataRecordIdentifier; +import net.sf.joafip.service.ClassLoaderProvider; +import net.sf.joafip.store.entity.classinfo.ClassInfo; +import net.sf.joafip.store.entity.objectio.ObjectAndPersistInfo; +import net.sf.joafip.store.entity.objectio.StorageInfo; +import net.sf.joafip.store.entity.proxy.BobCallInConstructor; +import net.sf.joafip.store.service.classinfo.ClassInfoException; +import net.sf.joafip.store.service.objectio.ObjectIOClassNotFoundException; +import net.sf.joafip.store.service.objectio.ObjectIODataCorruptedException; +import net.sf.joafip.store.service.objectio.ObjectIODataRecordNotFoundException; +import net.sf.joafip.store.service.objectio.ObjectIOException; +import net.sf.joafip.store.service.objectio.ObjectIOInvalidClassException; +import net.sf.joafip.store.service.objectio.ObjectIONotSerializableException; + +/** + * + * @author luc peuvrier + * + */ +@NotStorableClass +public class TestProxyCreationConstructed extends + AbstractObjectIoManagerForProxyTest { + + private boolean inConstruction; + + public TestProxyCreationConstructed() throws TestException { + super(); + } + + public TestProxyCreationConstructed(final String name) throws TestException { + super(name); + } + + public void test() throws ClassInfoException, ProxyException { + final Class<?> objectClass = BobCallInConstructor.class; + final ClassInfo classInfo = classInfoFactory + .getNoProxyClassInfo(objectClass); + final ProxyManager2 proxyManager2 = new ProxyManager2( + new ClassLoaderProvider(), classInfoFactory); + final StorageInfo storageInfo = new StorageInfo(0); + inConstruction = true; + final BobCallInConstructor object = (BobCallInConstructor) proxyManager2 + .newInstanceConstruct(classInfo, + new Class<?>[] { String.class }, + new Object[] { "a name" }, storageInfo, this, + DataRecordIdentifier.LAST, true); + inConstruction = false; + assertTrue("must say is a proxy", + ProxyManager2.isProxyOrEnhanced(object)); + assertTrue("must be loaded", ProxyManager2.isLoadedOrNotAProxy(object)); + assertEquals("bad object proxied class", objectClass, proxyManager2 + .classInfoOfObject(object).getObjectClass()); + ProxyManager2.unload(object); + setted = false; + object.setName("a new name"); + assertTrue(setted); + } + + @Override + public boolean isAutoSaveEnabled() { + return true; + } + + @Override + public void setProxyObjectState( + final ObjectAndPersistInfo objectAndItsClassInfo) + throws ObjectIOException, ObjectIODataRecordNotFoundException, + ObjectIOInvalidClassException, ObjectIOClassNotFoundException, + ObjectIODataCorruptedException, ObjectIONotSerializableException { + if (inConstruction) { + throw new ObjectIOException("in construction"); + } + super.setProxyObjectState(objectAndItsClassInfo); + } +} Modified: trunk/joafip-collection/src/main/java/net/sf/joafip/java/util/PMapKeyNavigableSet.java =================================================================== --- trunk/joafip-collection/src/main/java/net/sf/joafip/java/util/PMapKeyNavigableSet.java 2011-10-14 08:55:42 UTC (rev 2920) +++ trunk/joafip-collection/src/main/java/net/sf/joafip/java/util/PMapKeyNavigableSet.java 2011-10-16 04:45:29 UTC (rev 2921) @@ -57,7 +57,7 @@ this((IInstanceFactory) null, navigableMap); } - private PMapKeyNavigableSet(final IInstanceFactory instanceFactory, + protected PMapKeyNavigableSet(final IInstanceFactory instanceFactory, final NavigableMap<K, V> navigableMap) { super(); this.instanceFactory = instanceFactory; @@ -83,6 +83,7 @@ return newInstance; } + @StorableClass private class EntrySetIterator implements Iterator<K> { @AssertNotNull @@ -119,8 +120,9 @@ .iterator()); } else { entrySetIterator = (EntrySetIterator) instanceFactory.newInstance( - EntrySetIterator.class, new Class[] { Iterator.class }, - new Object[] { navigableMap.entrySet().iterator() }); + EntrySetIterator.class, new Class[] { + PMapKeyNavigableSet.class, Iterator.class }, + new Object[] { this, navigableMap.entrySet().iterator() }); } return entrySetIterator; } @@ -173,9 +175,12 @@ entrySetDescendingIterator = (EntrySetDescendingIterator) instanceFactory .newInstance( EntrySetDescendingIterator.class, - new Class[] { Iterator.class }, - new Object[] { ((NavigableSet<Map.Entry<K, V>>) navigableMap - .entrySet()).descendingIterator() }); + new Class[] { PMapKeyNavigableSet.class, + Iterator.class }, + new Object[] { + this, + ((NavigableSet<Map.Entry<K, V>>) navigableMap + .entrySet()).descendingIterator() }); } return entrySetDescendingIterator; } Modified: trunk/joafip-testsuite/src/main/java/net/sf/joafip/InErrorTests.java =================================================================== --- trunk/joafip-testsuite/src/main/java/net/sf/joafip/InErrorTests.java 2011-10-14 08:55:42 UTC (rev 2920) +++ trunk/joafip-testsuite/src/main/java/net/sf/joafip/InErrorTests.java 2011-10-16 04:45:29 UTC (rev 2921) @@ -24,8 +24,10 @@ import junit.framework.Test; import junit.framework.TestSuite; -import net.sf.joafip.store.service.TestGarbageForegroundFile; -import net.sf.joafip.store.service.collection.subs.TestStoreCollectionHashMapSubsNoG; +import net.sf.joafip.service.rel300.TestSubstitutionWithMethodInterception0; +import net.sf.joafip.service.rel300.TestSubstitutionWithMethodInterception1; +import net.sf.joafip.service.rel300.TestSubstitutionWithMethodInterception2; +import net.sf.joafip.service.rel400.TestAutoSave; /** * @@ -42,8 +44,10 @@ public static Test suite() { final TestSuite suite = new TestSuite("in error Tests"); // $JUnit-BEGIN$ - suite.addTestSuite(TestStoreCollectionHashMapSubsNoG.class); - suite.addTestSuite(TestGarbageForegroundFile.class); + suite.addTestSuite(TestSubstitutionWithMethodInterception0.class); + suite.addTestSuite(TestSubstitutionWithMethodInterception1.class); + suite.addTestSuite(TestSubstitutionWithMethodInterception2.class); + suite.addTestSuite(TestAutoSave.class); // suite.addTest(xxxx.suite()); // $JUnit-END$ return suite; Modified: trunk/joafip-testsuite/src/main/java/net/sf/joafip/service/rel400/ServiceRel400Tests.java =================================================================== --- trunk/joafip-testsuite/src/main/java/net/sf/joafip/service/rel400/ServiceRel400Tests.java 2011-10-14 08:55:42 UTC (rev 2920) +++ trunk/joafip-testsuite/src/main/java/net/sf/joafip/service/rel400/ServiceRel400Tests.java 2011-10-16 04:45:29 UTC (rev 2921) @@ -19,6 +19,7 @@ suite.addTestSuite(TestAutoSaveWithStatic.class); suite.addTestSuite(TestStoredImmutableEnum.class); suite.addTestSuite(TestFileManagementOptions.class); + suite.addTestSuite(TestConstructEntrySetIteratorOfPMapKeyNavigableSet.class); // $JUnit-END$ return suite; } Modified: trunk/joafip-testsuite/src/main/java/net/sf/joafip/store/service/proxy/ProxyTests.java =================================================================== --- trunk/joafip-testsuite/src/main/java/net/sf/joafip/store/service/proxy/ProxyTests.java 2011-10-14 08:55:42 UTC (rev 2920) +++ trunk/joafip-testsuite/src/main/java/net/sf/joafip/store/service/proxy/ProxyTests.java 2011-10-16 04:45:29 UTC (rev 2921) @@ -27,12 +27,14 @@ final TestSuite suite = new TestSuite( "Test for net.sf.joafip.store.service.proxy"); // $JUnit-BEGIN$ + suite.addTestSuite(TestProxyAutoSave.class); suite.addTestSuite(TestProxyCreation.class); + suite.addTestSuite(TestProxyCreationConstructed.class); suite.addTestSuite(TestProxyFieldReflect.class); + suite.addTestSuite(TestProxyInterceptPackageVisibility.class); suite.addTestSuite(TestProxyInterceptPrivate.class); suite.addTestSuite(TestProxyInterceptProtected.class); - suite.addTestSuite(TestProxyInterceptPackageVisibility.class); - suite.addTestSuite(TestProxyAutoSave.class); + suite.addTestSuite(TestProxyManager2.class); // $JUnit-END$ return suite; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <luc...@us...> - 2011-10-16 04:45:37
|
Revision: 2921 http://joafip.svn.sourceforge.net/joafip/?rev=2921&view=rev Author: luc_peuvrier Date: 2011-10-16 04:45:29 +0000 (Sun, 16 Oct 2011) Log Message: ----------- auto save done when create new instance Modified Paths: -------------- trunk/joafip/doc/_todo.txt trunk/joafip/src/main/java/net/sf/joafip/reflect/HelperReflect.java 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/service/AbstractDelegatingToStoreManagers.java trunk/joafip/src/main/java/net/sf/joafip/store/service/bytecode/proxy/EnhanceCodeGenerator.java trunk/joafip/src/main/java/net/sf/joafip/store/service/export_import/out/ExportStoreQue.java trunk/joafip/src/main/java/net/sf/joafip/store/service/proxy/DetachedProxyCallBack.java trunk/joafip/src/main/java/net/sf/joafip/store/service/proxy/IProxyCallBackProxyDelegation.java trunk/joafip/src/main/java/net/sf/joafip/store/service/proxy/IProxyCallBackToImplement.java trunk/joafip/src/main/java/net/sf/joafip/store/service/proxy/NullProxyCallBack.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/proxy/StaticProxyCallBack.java trunk/joafip/src/test/java/net/sf/joafip/entity/rel400/BobASDelegatingListenDelegate.java trunk/joafip/src/test/java/net/sf/joafip/service/TestTreeListIteratorIntercept.java trunk/joafip/src/test/java/net/sf/joafip/service/rel400/TestAutoSave.java trunk/joafip/src/test/java/net/sf/joafip/store/service/proxy/ProxyCallBackForTest.java trunk/joafip-collection/src/main/java/net/sf/joafip/java/util/PMapKeyNavigableSet.java trunk/joafip-testsuite/src/main/java/net/sf/joafip/InErrorTests.java trunk/joafip-testsuite/src/main/java/net/sf/joafip/service/rel400/ServiceRel400Tests.java trunk/joafip-testsuite/src/main/java/net/sf/joafip/store/service/proxy/ProxyTests.java Added Paths: ----------- trunk/joafip/src/test/java/net/sf/joafip/entity/rel400/KeyDef.java trunk/joafip/src/test/java/net/sf/joafip/service/rel400/TestConstructEntrySetIteratorOfPMapKeyNavigableSet.java trunk/joafip/src/test/java/net/sf/joafip/store/entity/proxy/BobCallInConstructor.java trunk/joafip/src/test/java/net/sf/joafip/store/service/proxy/TestProxyCreationConstructed.java This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <luc...@us...> - 2011-10-14 08:55:48
|
Revision: 2920 http://joafip.svn.sourceforge.net/joafip/?rev=2920&view=rev Author: luc_peuvrier Date: 2011-10-14 08:55:42 +0000 (Fri, 14 Oct 2011) Log Message: ----------- tests jhupedom ok Modified Paths: -------------- trunk/joafip/src/main/java/net/sf/joafip/store/service/bytecode/proxy/CheckMethodVisitor.java trunk/joafip-collection/src/main/java/net/sf/joafip/java/util/HashMapEntryComparator.java Modified: trunk/joafip/src/main/java/net/sf/joafip/store/service/bytecode/proxy/CheckMethodVisitor.java =================================================================== --- trunk/joafip/src/main/java/net/sf/joafip/store/service/bytecode/proxy/CheckMethodVisitor.java 2011-10-14 06:01:04 UTC (rev 2919) +++ trunk/joafip/src/main/java/net/sf/joafip/store/service/bytecode/proxy/CheckMethodVisitor.java 2011-10-14 08:55:42 UTC (rev 2920) @@ -127,8 +127,6 @@ } } - // FIXMELUC _______________________________cas du jsr/ret - final List<OpcodeNode> nextOpcodeNodeList = startOpcodeNode .getNextOpcodeNodeList(); for (OpcodeNode opcodeNode : nextOpcodeNodeList) { Modified: trunk/joafip-collection/src/main/java/net/sf/joafip/java/util/HashMapEntryComparator.java =================================================================== --- trunk/joafip-collection/src/main/java/net/sf/joafip/java/util/HashMapEntryComparator.java 2011-10-14 06:01:04 UTC (rev 2919) +++ trunk/joafip-collection/src/main/java/net/sf/joafip/java/util/HashMapEntryComparator.java 2011-10-14 08:55:42 UTC (rev 2920) @@ -49,7 +49,7 @@ // keyComparator = null; // } - private HashMapEntryComparator(final IEqualsHashComparator keyComparator) { + protected HashMapEntryComparator(final IEqualsHashComparator keyComparator) { super(); this.keyComparator = keyComparator; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <luc...@us...> - 2011-10-14 08:55:48
|
Revision: 2920 http://joafip.svn.sourceforge.net/joafip/?rev=2920&view=rev Author: luc_peuvrier Date: 2011-10-14 08:55:42 +0000 (Fri, 14 Oct 2011) Log Message: ----------- tests jhupedom ok Modified Paths: -------------- trunk/joafip/src/main/java/net/sf/joafip/store/service/bytecode/proxy/CheckMethodVisitor.java trunk/joafip-collection/src/main/java/net/sf/joafip/java/util/HashMapEntryComparator.java This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <luc...@us...> - 2011-10-14 06:01:10
|
Revision: 2919 http://joafip.svn.sourceforge.net/joafip/?rev=2919&view=rev Author: luc_peuvrier Date: 2011-10-14 06:01:04 +0000 (Fri, 14 Oct 2011) Log Message: ----------- direct access field access control ok Modified Paths: -------------- trunk/joafip-testsuite/src/main/java/net/sf/joafip/InErrorTests.java This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <luc...@us...> - 2011-10-14 06:01:10
|
Revision: 2919 http://joafip.svn.sourceforge.net/joafip/?rev=2919&view=rev Author: luc_peuvrier Date: 2011-10-14 06:01:04 +0000 (Fri, 14 Oct 2011) Log Message: ----------- direct access field access control ok Modified Paths: -------------- trunk/joafip-testsuite/src/main/java/net/sf/joafip/InErrorTests.java Modified: trunk/joafip-testsuite/src/main/java/net/sf/joafip/InErrorTests.java =================================================================== --- trunk/joafip-testsuite/src/main/java/net/sf/joafip/InErrorTests.java 2011-10-14 06:00:31 UTC (rev 2918) +++ trunk/joafip-testsuite/src/main/java/net/sf/joafip/InErrorTests.java 2011-10-14 06:01:04 UTC (rev 2919) @@ -24,7 +24,8 @@ import junit.framework.Test; import junit.framework.TestSuite; -import net.sf.joafip.store.service.collection.nosubs.TestStoreCollectionTreeMapNosubsNoG; +import net.sf.joafip.store.service.TestGarbageForegroundFile; +import net.sf.joafip.store.service.collection.subs.TestStoreCollectionHashMapSubsNoG; /** * @@ -41,7 +42,8 @@ public static Test suite() { final TestSuite suite = new TestSuite("in error Tests"); // $JUnit-BEGIN$ - suite.addTestSuite(TestStoreCollectionTreeMapNosubsNoG.class); + suite.addTestSuite(TestStoreCollectionHashMapSubsNoG.class); + suite.addTestSuite(TestGarbageForegroundFile.class); // suite.addTest(xxxx.suite()); // $JUnit-END$ return suite; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <luc...@us...> - 2011-10-14 06:00:38
|
Revision: 2918 http://joafip.svn.sourceforge.net/joafip/?rev=2918&view=rev Author: luc_peuvrier Date: 2011-10-14 06:00:31 +0000 (Fri, 14 Oct 2011) Log Message: ----------- direct access field access control ok Modified Paths: -------------- trunk/joafip/src/main/java/net/sf/joafip/store/entity/proxy/OpcodeNode.java trunk/joafip/src/main/java/net/sf/joafip/store/entity/proxy/StackElement.java trunk/joafip/src/main/java/net/sf/joafip/store/service/bytecode/proxy/CheckMethodVisitor.java trunk/joafip/src/test/java/net/sf/joafip/store/service/bytecode/proxy/ForTestCheckMethodVisitor.java trunk/joafip/src/test/java/net/sf/joafip/store/service/bytecode/proxy/TestCheckMethodVisitor.java trunk/joafip/src/test/java/net/sf/joafip/store/service/bytecode/proxy/ToCheckClass.java Modified: trunk/joafip/src/main/java/net/sf/joafip/store/entity/proxy/OpcodeNode.java =================================================================== --- trunk/joafip/src/main/java/net/sf/joafip/store/entity/proxy/OpcodeNode.java 2011-10-12 03:04:21 UTC (rev 2917) +++ trunk/joafip/src/main/java/net/sf/joafip/store/entity/proxy/OpcodeNode.java 2011-10-14 06:00:31 UTC (rev 2918) @@ -38,6 +38,8 @@ @NotStorableClass public class OpcodeNode { + private static final String TAB = " "; + protected final static OpcodeInterpreter OPCODE_INTERPRETER = OpcodeInterpreter .getInstance(); @@ -94,9 +96,20 @@ public void setBeforeExecutionStackElement( final StackElement beforeExecutionStackElement) { - assert this.beforeExecutionStackElement == null : "to set to\n" - + beforeExecutionStackElement + "\n and is\n" - + this.beforeExecutionStackElement; + // stack change accepted + // assert this.beforeExecutionStackElement == null + // || + // this.beforeExecutionStackElement.equals(beforeExecutionStackElement) + // : OPCODE_INTERPRETER + // .mnemonic(opcode) + // + " line " + // + lineNumber + // + " @" + // + address + // + " to set to\n" + // + beforeExecutionStackElement + // + "\n and is\n" + // + this.beforeExecutionStackElement; this.beforeExecutionStackElement = beforeExecutionStackElement; } @@ -137,8 +150,12 @@ @Override public String toString() { final StringBuilder stringBuilder = new StringBuilder(); - if (label != null) { - stringBuilder.append(label.toString()); + if (label == null) { + stringBuilder.append(TAB); + } else { + final String labelToString = label.toString(); + stringBuilder.append(labelToString); + stringBuilder.append(TAB.substring(labelToString.length())); } stringBuilder.append('@'); stringBuilder.append(address); @@ -159,12 +176,15 @@ stringBuilder.append(' '); } stringBuilder.append('\n'); + stringBuilder.append(TAB); if (beforeExecutionStackElement == null) { stringBuilder.append('?'); } else { stringBuilder.append(beforeExecutionStackElement.toString()); } - stringBuilder.append("\n=> "); + stringBuilder.append('\n'); + stringBuilder.append(TAB); + stringBuilder.append("=> "); if (afterExecutionStackElement == null) { stringBuilder.append('?'); } else { Modified: trunk/joafip/src/main/java/net/sf/joafip/store/entity/proxy/StackElement.java =================================================================== --- trunk/joafip/src/main/java/net/sf/joafip/store/entity/proxy/StackElement.java 2011-10-12 03:04:21 UTC (rev 2917) +++ trunk/joafip/src/main/java/net/sf/joafip/store/entity/proxy/StackElement.java 2011-10-14 06:00:31 UTC (rev 2918) @@ -67,6 +67,37 @@ } @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((type == null) ? 0 : type.hashCode()); + return result; + } + + @SuppressWarnings("PMD") + @Override + public boolean equals(final Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + StackElement other = (StackElement) obj; + if (type != other.type) { + return false; + } + if (previous == null) { + return true; + } else { + return previous.equals(other.previous); + } + } + + @Override public String toString() { final String typeName; if (thisReference) { Modified: trunk/joafip/src/main/java/net/sf/joafip/store/service/bytecode/proxy/CheckMethodVisitor.java =================================================================== --- trunk/joafip/src/main/java/net/sf/joafip/store/service/bytecode/proxy/CheckMethodVisitor.java 2011-10-12 03:04:21 UTC (rev 2917) +++ trunk/joafip/src/main/java/net/sf/joafip/store/service/bytecode/proxy/CheckMethodVisitor.java 2011-10-14 06:00:31 UTC (rev 2918) @@ -26,6 +26,7 @@ import java.util.HashMap; import java.util.HashSet; import java.util.LinkedList; +import java.util.List; import java.util.Map; import java.util.Set; @@ -37,6 +38,7 @@ import net.sf.joafip.asm.Opcodes; import net.sf.joafip.logger.JoafipLogger; import net.sf.joafip.store.entity.proxy.DirectAccessInfo; +import net.sf.joafip.store.entity.proxy.EnumStackEltType; import net.sf.joafip.store.entity.proxy.OpcodeNode; import net.sf.joafip.store.entity.proxy.OpcodeNodeAloadThis; import net.sf.joafip.store.entity.proxy.OpcodeNodeDup; @@ -64,6 +66,9 @@ @NotStorableClass public class CheckMethodVisitor implements MethodVisitor, Opcodes { + private static final StackElement HANDLER_START_STACK_ELEMENT = new StackElement( + null, EnumStackEltType.REF); + private final static JoafipLogger LOGGER = JoafipLogger .getLogger(CheckMethodVisitor.class); @@ -106,6 +111,7 @@ @Override public void visitEnd() { + listener.codeVisisted(methodAbsoluteName); try { for (Map.Entry<OpcodeNode, Set<Label>> entry : gotoMap.entrySet()) { final OpcodeNode opcodeNode = entry.getKey(); @@ -123,9 +129,10 @@ // FIXMELUC _______________________________cas du jsr/ret - for (OpcodeNode opcodeNode : startOpcodeNode - .getNextOpcodeNodeList()) { - check(opcodeNode); + final List<OpcodeNode> nextOpcodeNodeList = startOpcodeNode + .getNextOpcodeNodeList(); + for (OpcodeNode opcodeNode : nextOpcodeNodeList) { + check(opcodeNode, null); } for (Label label : handlerEntrySet) { @@ -134,9 +141,8 @@ throw new EnhanceException("undefined label " + label.toString()); } - check(handlerOpcode); + check(handlerOpcode, HANDLER_START_STACK_ELEMENT); } - listener.codeVisisted(methodAbsoluteName); } catch (Exception exception) { final String unassembled = listener.unassembled(methodAbsoluteName); throw new RuntimeEnhanceException(new EnhanceException( @@ -153,13 +159,14 @@ } } - private void check(final OpcodeNode startOpcodeNode) - throws EnhanceException { + private void check(final OpcodeNode startOpcodeNode, + final StackElement startStackElement) throws EnhanceException { final Deque<OpcodeNode> toVisitQue = new LinkedList<OpcodeNode>(); final Deque<StackElement> stackElementQue = new LinkedList<StackElement>(); final Set<OpcodeNode> visited = new HashSet<OpcodeNode>(); OpcodeNode currentOpcodeNode = startOpcodeNode; - StackElement stackElement = null; + StackElement stackElement = startStackElement; + visited.add(currentOpcodeNode); while (currentOpcodeNode != null) { listener.currentOpcode(currentOpcodeNode); currentOpcodeNode.setBeforeExecutionStackElement(stackElement); @@ -173,7 +180,7 @@ toVisitQue.add(next); stackElementQue.add(stackElement); } - // FIXMELUC __________________________stack change + // stack change accepted // else if (stackElement != // next.getBeforeExecutionStackElement()) { // throw new EnhanceException("stack change:\n" + stackElement @@ -289,7 +296,10 @@ @Override public void visitJumpInsn(final int opcode, final Label label) { - // TODO Auto-generated method stub + // FIXMELUC ______________________for test + if (opcode == JSR) { + System.out.println(); // NOPMD + } currentOpcodeNode = new OpcodeNode(opcode, currentAddress++, currentLineNumber, currentOpcodeNode); addGoto(currentOpcodeNode, label); @@ -301,6 +311,7 @@ @Override public void visitLabel(final Label label) { + assert visitedLabel == null; visitedLabel = label; } @@ -355,7 +366,7 @@ @Override public void visitTryCatchBlock(final Label start, final Label end, final Label handler, final String type) { - // TODO Auto-generated method stub + handlerEntrySet.add(handler); } @Override Modified: trunk/joafip/src/test/java/net/sf/joafip/store/service/bytecode/proxy/ForTestCheckMethodVisitor.java =================================================================== --- trunk/joafip/src/test/java/net/sf/joafip/store/service/bytecode/proxy/ForTestCheckMethodVisitor.java 2011-10-12 03:04:21 UTC (rev 2917) +++ trunk/joafip/src/test/java/net/sf/joafip/store/service/bytecode/proxy/ForTestCheckMethodVisitor.java 2011-10-14 06:00:31 UTC (rev 2918) @@ -22,9 +22,6 @@ */ package net.sf.joafip.store.service.bytecode.proxy; -import net.sf.joafip.store.service.bytecode.proxy.CheckMethodVisitor; -import net.sf.joafip.store.service.bytecode.proxy.ICheckMethodListener; - /** * * @author luc peuvrier Modified: trunk/joafip/src/test/java/net/sf/joafip/store/service/bytecode/proxy/TestCheckMethodVisitor.java =================================================================== --- trunk/joafip/src/test/java/net/sf/joafip/store/service/bytecode/proxy/TestCheckMethodVisitor.java 2011-10-12 03:04:21 UTC (rev 2917) +++ trunk/joafip/src/test/java/net/sf/joafip/store/service/bytecode/proxy/TestCheckMethodVisitor.java 2011-10-14 06:00:31 UTC (rev 2918) @@ -27,6 +27,7 @@ import java.io.InputStream; import java.lang.reflect.Constructor; import java.lang.reflect.Method; +import java.util.Set; import net.sf.joafip.AbstractJoafipTestCase; import net.sf.joafip.TestException; @@ -57,6 +58,8 @@ private transient String methodDescriptor; + private transient String absoluteMethodName; + public TestCheckMethodVisitor() throws TestException { super(); } @@ -77,6 +80,7 @@ checkMethodListener = null;// NOPMD methodName = null;// NOPMD methodDescriptor = null;// NOPMD + absoluteMethodName = null;// NOPMD super.tearDown(); } @@ -178,6 +182,14 @@ checkMethodListener.hasDirectAccess()); } + public void testWhileNokMethod() throws NoSuchMethodException, IOException, + EnhanceException { + check("whileNokMethod", new Class[] { ToCheckClass.class }); + assertTrue("whileNokMethod() must not be ok\n" + directAccess(), + checkMethodListener.hasDirectAccess()); + assertDirectAccess(new int[] { 104 }); + } + public void testWhileMethod() throws NoSuchMethodException, IOException, EnhanceException { check("whileMethod", new Class[] { Class.class }); @@ -185,28 +197,77 @@ checkMethodListener.hasDirectAccess()); } + public void testTryCatchMethod() throws NoSuchMethodException, IOException, + EnhanceException { + check("tryCatchMethod", new Class[] { ToCheckClass.class }); + assertTrue("tryCatchMethod() must not be ok\n" + directAccess(), + checkMethodListener.hasDirectAccess()); + assertDirectAccess(new int[] { 127 }); + } + + public void testTryCatchNopMethod() throws NoSuchMethodException, + IOException, EnhanceException { + check("tryCatchNopMethod", new Class[] {}); + assertFalse("tryCatchNopMethod() must be ok\n" + directAccess(), + checkMethodListener.hasDirectAccess()); + } + + public void testIndirectMethod() throws NoSuchMethodException, IOException, + EnhanceException { + check("indirectMethod", new Class[] {}); + assertTrue("indirectMethod() must not be ok\n" + directAccess(), + checkMethodListener.hasDirectAccess()); + assertDirectAccess(new int[] { 142 }); + } + + public void testFinallyMethod() throws NoSuchMethodException, IOException, + EnhanceException { + check("finallyMethod", new Class[] { ToCheckClass.class }); + assertTrue("finallyMethod() must not be ok\n" + directAccess(), + checkMethodListener.hasDirectAccess()); + assertDirectAccess(new int[] { 149 }); + } + + private void assertDirectAccess(final int[] lineNumbers) { + final int numberOfError = lineNumbers.length; + final Set<DirectAccessInfo> directAccessSet = checkMethodListener + .getDirectAccessSet(); + assertEquals("bad number of error", numberOfError, + directAccessSet.size()); + for (int lineNumber : lineNumbers) { + final DirectAccessInfo key = + /**/new DirectAccessInfo(absoluteMethodName, null, lineNumber);// NOPMD + assertTrue("expected error " + key, directAccessSet.contains(key)); + } + } + private String directAccess() { final StringBuilder stringBuilder = new StringBuilder(); for (DirectAccessInfo directAccessInfo : checkMethodListener .getDirectAccessSet()) { stringBuilder.append(directAccessInfo.toString()); stringBuilder.append('\n'); - stringBuilder.append(checkMethodListener - .unassembled(directAccessInfo.getMethodAbsoluteName())); - stringBuilder.append('\n'); + // stringBuilder.append(checkMethodListener + // .unassembled(directAccessInfo.getMethodAbsoluteName())); + // stringBuilder.append('\n'); } return stringBuilder.toString(); } - private void check(final String name, final Class<?>[] parameterTypes) + private void check(final String methodName, final Class<?>[] parameterTypes) throws NoSuchMethodException, IOException, EnhanceException { - if (name == null) { + if (methodName == null) { setConstructorTotest(parameterTypes); } else { - setMethodTotest(name, parameterTypes); + setMethodTotest(methodName, parameterTypes); } + final String toCheckClassName = ToCheckClass.class.getName().replace( + '.', '/'); + absoluteMethodName = toCheckClassName + "#" + + (methodName == null ? "<init>" : methodName) + + methodDescriptor; final InputStream inputStream = ClassLoader - .getSystemResourceAsStream("net/sf/joafip/store/service/bytecode/proxy/ToCheckClass.class"); + .getSystemResourceAsStream(toCheckClassName + ".class"); final ByteArrayOutputStream byteOutputStream = new ByteArrayOutputStream(); int byteValue; while ((byteValue = inputStream.read()) != -1) {// NOPMD Modified: trunk/joafip/src/test/java/net/sf/joafip/store/service/bytecode/proxy/ToCheckClass.java =================================================================== --- trunk/joafip/src/test/java/net/sf/joafip/store/service/bytecode/proxy/ToCheckClass.java 2011-10-12 03:04:21 UTC (rev 2917) +++ trunk/joafip/src/test/java/net/sf/joafip/store/service/bytecode/proxy/ToCheckClass.java 2011-10-14 06:00:31 UTC (rev 2918) @@ -101,7 +101,7 @@ public void whileNokMethod(final ToCheckClass toCheckClass) { int count = 0; while (count < 5) { - toCheckClass.globalCount++; + toCheckClass.globalCount++;// direct access count++; } } @@ -119,4 +119,34 @@ @SuppressWarnings("PMD") private void operation(final Class<?> clazz) { } + + public void tryCatchMethod(final ToCheckClass toCheckClass) { + try { + operation(getClass()); + } catch (Exception exception) { + toCheckClass.globalCount++;// direct access + } + } + + public void tryCatchNopMethod() { + try { + incStaticCount(); + } catch (Exception exception) {// NOPMD + // ignore + } + operation(getClass()); + } + + public Class<?> indirectMethod() { + final ToCheckClass toCheckClass = this; + return toCheckClass.root;// NOPMD + } + + public void finallyMethod(final ToCheckClass toCheckClass) { + try { + operation(getClass()); + } finally { + toCheckClass.globalCount++;// direct access + } + } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <luc...@us...> - 2011-10-14 06:00:37
|
Revision: 2918 http://joafip.svn.sourceforge.net/joafip/?rev=2918&view=rev Author: luc_peuvrier Date: 2011-10-14 06:00:31 +0000 (Fri, 14 Oct 2011) Log Message: ----------- direct access field access control ok Modified Paths: -------------- trunk/joafip/src/main/java/net/sf/joafip/store/entity/proxy/OpcodeNode.java trunk/joafip/src/main/java/net/sf/joafip/store/entity/proxy/StackElement.java trunk/joafip/src/main/java/net/sf/joafip/store/service/bytecode/proxy/CheckMethodVisitor.java trunk/joafip/src/test/java/net/sf/joafip/store/service/bytecode/proxy/ForTestCheckMethodVisitor.java trunk/joafip/src/test/java/net/sf/joafip/store/service/bytecode/proxy/TestCheckMethodVisitor.java trunk/joafip/src/test/java/net/sf/joafip/store/service/bytecode/proxy/ToCheckClass.java This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |