From 63115ae6e78403b7e1d4a51c2d1a49e64db701db Mon Sep 17 00:00:00 2001 From: David Dykstal Date: Wed, 14 Jun 2006 20:45:38 +0000 Subject: [PATCH] Making sure that the pool manager is correctly set in the pool references when pool references are constructed or released from management. Adding comments for future work. Removed overriding code that was hiding methods and variables in superclasses for persistence. --- .../SystemFilterPoolReferenceManager.java | 10 ++- .../SystemPersistableReferenceManager.java | 8 ++ .../SystemPersistableReferencedObject.java | 86 +++++++++---------- 3 files changed, 58 insertions(+), 46 deletions(-) diff --git a/rse/plugins/org.eclipse.rse.ui/filters/org/eclipse/rse/internal/filters/SystemFilterPoolReferenceManager.java b/rse/plugins/org.eclipse.rse.ui/filters/org/eclipse/rse/internal/filters/SystemFilterPoolReferenceManager.java index bdb21960605..1905200ed8e 100644 --- a/rse/plugins/org.eclipse.rse.ui/filters/org/eclipse/rse/internal/filters/SystemFilterPoolReferenceManager.java +++ b/rse/plugins/org.eclipse.rse.ui/filters/org/eclipse/rse/internal/filters/SystemFilterPoolReferenceManager.java @@ -33,7 +33,6 @@ import org.eclipse.rse.filters.ISystemFilterPoolReferenceManagerProvider; import org.eclipse.rse.filters.ISystemFilterReference; import org.eclipse.rse.filters.ISystemFilterSavePolicies; import org.eclipse.rse.internal.references.SystemPersistableReferenceManager; -import org.eclipse.rse.references.ISystemBasePersistableReferenceManager; import org.eclipse.rse.references.ISystemBasePersistableReferencingObject; import org.eclipse.rse.references.ISystemPersistableReferencedObject; @@ -47,7 +46,7 @@ import org.eclipse.rse.references.ISystemPersistableReferencedObject; /** * @lastgen class SystemFilterPoolReferenceManagerImpl extends SystemPersistableReferenceManagerImpl implements SystemFilterPoolReferenceManager, SystemPersistableReferenceManager {} */ -public class SystemFilterPoolReferenceManager extends SystemPersistableReferenceManager implements ISystemFilterPoolReferenceManager, ISystemBasePersistableReferenceManager +public class SystemFilterPoolReferenceManager extends SystemPersistableReferenceManager implements ISystemFilterPoolReferenceManager { //private SystemFilterPoolManager[] poolMgrs = null; private ISystemFilterPoolManagerProvider poolMgrProvider = null; @@ -440,6 +439,7 @@ public class SystemFilterPoolReferenceManager extends SystemPersistableReference public int addSystemFilterPoolReference(ISystemFilterPoolReference filterPoolReference) { int count = addReferencingObject(filterPoolReference); + filterPoolReference.setParentReferenceManager(this); // DWD - should be done in the addReferencingObject method invalidateFilterPoolReferencesCache(); quietSave(); return count; @@ -470,6 +470,7 @@ public class SystemFilterPoolReferenceManager extends SystemPersistableReference count = super.removeReferencingObject(filterPoolReference); else count = super.removeAndDeReferenceReferencingObject(filterPoolReference); + filterPoolReference.setParentReferenceManager(null); // DWD should be done in remove invalidateFilterPoolReferencesCache(); // callback to provider so they can fire events in their GUI if (fireEvents && (caller != null)) @@ -583,7 +584,7 @@ public class SystemFilterPoolReferenceManager extends SystemPersistableReference public ISystemFilterPoolReference addReferenceToSystemFilterPool(ISystemFilterPool filterPool) { ISystemFilterPoolReference filterPoolReference = createSystemFilterPoolReference(filterPool); - addReferencingObject(filterPoolReference); + addReferencingObject(filterPoolReference); // DWD - should be done in addReferencingObject filterPoolReference.setParentReferenceManager(this); invalidateFilterPoolReferencesCache(); quietSave(); @@ -606,6 +607,7 @@ public class SystemFilterPoolReferenceManager extends SystemPersistableReference { filterPoolReference.removeReference(); // getReferencedFilterPool().removeReference(this) newCount = removeReferencingObject(filterPoolReference); + filterPoolReference.setParentReferenceManager(null); // DWD should be done in removeReferencingObject invalidateFilterPoolReferencesCache(); quietSave(); // callback to provider so they can fire events in their GUI @@ -660,6 +662,7 @@ public class SystemFilterPoolReferenceManager extends SystemPersistableReference //addReferenceToSystemFilterPool(filterPools[idx]); ISystemFilterPoolReference filterPoolReference = createSystemFilterPoolReference(filterPools[idx]); addReferencingObject(filterPoolReference); + filterPoolReference.setParentReferenceManager(this); // DWD should be done in addReferencingObject } invalidateFilterPoolReferencesCache(); quietSave(); @@ -771,6 +774,7 @@ public class SystemFilterPoolReferenceManager extends SystemPersistableReference public void save() throws Exception { + System.out.println("Saving filter pool " + this.getName() + "?"); // DWD - debugging switch(savePolicy) { // ONE FILE PER FILTER POOL REFERENCE MANAGER diff --git a/rse/plugins/org.eclipse.rse.ui/references/org/eclipse/rse/internal/references/SystemPersistableReferenceManager.java b/rse/plugins/org.eclipse.rse.ui/references/org/eclipse/rse/internal/references/SystemPersistableReferenceManager.java index b2c7950e955..ba19583a5b7 100644 --- a/rse/plugins/org.eclipse.rse.ui/references/org/eclipse/rse/internal/references/SystemPersistableReferenceManager.java +++ b/rse/plugins/org.eclipse.rse.ui/references/org/eclipse/rse/internal/references/SystemPersistableReferenceManager.java @@ -122,6 +122,14 @@ public class SystemPersistableReferenceManager implements ISystemBasePersistable list.add(objects[idx]); } +/* + * DWD this should probably operate on ISystemPersistableReferencingObject + * instead and call setParentManager. This involves recasting this class to + * implement a new type or changing ISystemBasePersistableReferenceManager to + * deal with parent references - probably changing its name in the process. + * We could collapse ISystemBasePersistableReferencingObject and its subinterface + * into one interface. + */ /** * Add a referencing object to the managed list. * @return new count of referenced objects being managed. diff --git a/rse/plugins/org.eclipse.rse.ui/references/org/eclipse/rse/internal/references/SystemPersistableReferencedObject.java b/rse/plugins/org.eclipse.rse.ui/references/org/eclipse/rse/internal/references/SystemPersistableReferencedObject.java index 1730e9eb33d..8d0080ea0b7 100644 --- a/rse/plugins/org.eclipse.rse.ui/references/org/eclipse/rse/internal/references/SystemPersistableReferencedObject.java +++ b/rse/plugins/org.eclipse.rse.ui/references/org/eclipse/rse/internal/references/SystemPersistableReferencedObject.java @@ -15,7 +15,7 @@ ********************************************************************************/ package org.eclipse.rse.internal.references; -import org.eclipse.rse.references.ISystemBaseReferencingObject; +// import org.eclipse.rse.references.ISystemBaseReferencingObject; import org.eclipse.rse.references.ISystemPersistableReferencedObject; @@ -27,7 +27,7 @@ import org.eclipse.rse.references.ISystemPersistableReferencedObject; public abstract class SystemPersistableReferencedObject extends SystemReferencedObject implements ISystemPersistableReferencedObject { - private SystemReferencedObjectHelper helper = null; +// private SystemReferencedObjectHelper helper = null; DWD - testing removal, this overrides the one in the superclass /** * Constructor. Typically called by EMF framework via factory create method. @@ -35,7 +35,7 @@ public abstract class SystemPersistableReferencedObject extends SystemReferenced public SystemPersistableReferencedObject() { super(); - helper = new SystemReferencedObjectHelper(); +// helper = new SystemReferencedObjectHelper(); } /** * Return the unique reference name of this object. @@ -50,46 +50,46 @@ public abstract class SystemPersistableReferencedObject extends SystemReferenced return null; } - // ---------------------------------- - // ISystemReferencedObject methods... - // ---------------------------------- - /** - * Add a reference, increment reference count, return new count - * @return new count of how many referencing objects reference this object. - */ - public int addReference(ISystemBaseReferencingObject ref) - { - return helper.addReference(ref); - } - /** - * Remove a reference, decrement reference count, return new count - * @return new count of how many referencing objects reference this object. - */ - public int removeReference(ISystemBaseReferencingObject ref) - { - return helper.removeReference(ref); - } - /** - * Return a count of how many referencing objects reference this object. - */ - public int getReferenceCount() - { - return helper.getReferenceCount(); - } - /** - * Clear the list of referenced objects. - */ - public void removeAllReferences() - { - helper.removeAllReferences(); - } - /** - * Return a list of all referencing objects of this object - */ - public ISystemBaseReferencingObject[] getReferencingObjects() - { - return helper.getReferencingObjects(); - } +// // ---------------------------------- +// // ISystemReferencedObject methods... +// // ---------------------------------- +// /** +// * Add a reference, increment reference count, return new count +// * @return new count of how many referencing objects reference this object. +// */ +// public int addReference(ISystemBaseReferencingObject ref) +// { +// return helper.addReference(ref); +// } +// /** +// * Remove a reference, decrement reference count, return new count +// * @return new count of how many referencing objects reference this object. +// */ +// public int removeReference(ISystemBaseReferencingObject ref) +// { +// return helper.removeReference(ref); +// } +// /** +// * Return a count of how many referencing objects reference this object. +// */ +// public int getReferenceCount() +// { +// return helper.getReferenceCount(); +// } +// /** +// * Clear the list of referenced objects. +// */ +// public void removeAllReferences() +// { +// helper.removeAllReferences(); +// } +// /** +// * Return a list of all referencing objects of this object +// */ +// public ISystemBaseReferencingObject[] getReferencingObjects() +// { +// return helper.getReferencingObjects(); +// } } \ No newline at end of file