Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 107780 Details for
Bug 241318
[DataBinding] DetailObservable(Value|List|Set) disposes the master observable in its own dispose() method
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read
this important communication.
[patch]
simple patch along with tests for the three detail observables
patch_241318.txt (text/plain), 13.11 KB, created by
Ovidio Mallo
on 2008-07-17 16:38:16 EDT
(
hide
)
Description:
simple patch along with tests for the three detail observables
Filename:
MIME Type:
Creator:
Ovidio Mallo
Created:
2008-07-17 16:38:16 EDT
Size:
13.11 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.core.databinding >Index: src/org/eclipse/core/internal/databinding/observable/masterdetail/DetailObservableSet.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.core.databinding/src/org/eclipse/core/internal/databinding/observable/masterdetail/DetailObservableSet.java,v >retrieving revision 1.7 >diff -u -r1.7 DetailObservableSet.java >--- src/org/eclipse/core/internal/databinding/observable/masterdetail/DetailObservableSet.java 4 Mar 2008 23:53:55 -0000 1.7 >+++ src/org/eclipse/core/internal/databinding/observable/masterdetail/DetailObservableSet.java 17 Jul 2008 20:36:16 -0000 >@@ -8,6 +8,7 @@ > * Contributors: > * IBM Corporation - initial API and implementation > * Matthew Hall - bug 221351 >+ * Ovidio Mallo - bug 241318 > *******************************************************************************/ > package org.eclipse.core.internal.databinding.observable.masterdetail; > >@@ -136,12 +137,13 @@ > > if (outerObservableValue != null) { > outerObservableValue.removeValueChangeListener(outerChangeListener); >- outerObservableValue.dispose(); > } > if (innerObservableSet != null) { > innerObservableSet.removeSetChangeListener(innerChangeListener); > innerObservableSet.dispose(); > } >+ outerObservableValue = null; >+ outerChangeListener = null; > currentOuterValue = null; > factory = null; > innerObservableSet = null; >Index: src/org/eclipse/core/internal/databinding/observable/masterdetail/DetailObservableValue.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.core.databinding/src/org/eclipse/core/internal/databinding/observable/masterdetail/DetailObservableValue.java,v >retrieving revision 1.6 >diff -u -r1.6 DetailObservableValue.java >--- src/org/eclipse/core/internal/databinding/observable/masterdetail/DetailObservableValue.java 26 Mar 2007 14:19:35 -0000 1.6 >+++ src/org/eclipse/core/internal/databinding/observable/masterdetail/DetailObservableValue.java 17 Jul 2008 20:36:16 -0000 >@@ -9,6 +9,7 @@ > * IBM Corporation - initial API and implementation > * Brad Reynolds - bug 164653 > * Brad Reynolds - bug 147515 >+ * Ovidio Mallo - bug 241318 > *******************************************************************************/ > package org.eclipse.core.internal.databinding.observable.masterdetail; > >@@ -114,12 +115,13 @@ > > if (outerObservableValue != null) { > outerObservableValue.removeValueChangeListener(outerChangeListener); >- outerObservableValue.dispose(); > } > if (innerObservableValue != null) { > innerObservableValue.removeValueChangeListener(innerChangeListener); > innerObservableValue.dispose(); > } >+ outerObservableValue = null; >+ outerChangeListener = null; > currentOuterValue = null; > factory = null; > innerObservableValue = null; >Index: src/org/eclipse/core/internal/databinding/observable/masterdetail/DetailObservableList.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.core.databinding/src/org/eclipse/core/internal/databinding/observable/masterdetail/DetailObservableList.java,v >retrieving revision 1.8 >diff -u -r1.8 DetailObservableList.java >--- src/org/eclipse/core/internal/databinding/observable/masterdetail/DetailObservableList.java 4 Mar 2008 23:53:55 -0000 1.8 >+++ src/org/eclipse/core/internal/databinding/observable/masterdetail/DetailObservableList.java 17 Jul 2008 20:36:16 -0000 >@@ -9,6 +9,7 @@ > * IBM Corporation - initial API and implementation > * Brad Reynolds - bug 147515 > * Matthew Hall - bug 221351 >+ * Ovidio Mallo - bug 241318 > *******************************************************************************/ > package org.eclipse.core.internal.databinding.observable.masterdetail; > >@@ -154,12 +155,13 @@ > > if (outerObservableValue != null) { > outerObservableValue.removeValueChangeListener(outerChangeListener); >- outerObservableValue.dispose(); > } > if (innerObservableList != null) { > innerObservableList.removeListChangeListener(innerChangeListener); > innerObservableList.dispose(); > } >+ outerObservableValue = null; >+ outerChangeListener = null; > currentOuterValue = null; > factory = null; > innerObservableList = null; >#P org.eclipse.jface.tests.databinding >Index: src/org/eclipse/core/tests/internal/databinding/observable/masterdetail/DetailObservableListTest.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jface.tests.databinding/src/org/eclipse/core/tests/internal/databinding/observable/masterdetail/DetailObservableListTest.java,v >retrieving revision 1.6 >diff -u -r1.6 DetailObservableListTest.java >--- src/org/eclipse/core/tests/internal/databinding/observable/masterdetail/DetailObservableListTest.java 7 Mar 2008 01:32:22 -0000 1.6 >+++ src/org/eclipse/core/tests/internal/databinding/observable/masterdetail/DetailObservableListTest.java 17 Jul 2008 20:36:19 -0000 >@@ -8,6 +8,7 @@ > * Contributors: > * Brad Reynolds - initial API and implementation > * Matthew Hall - bugs 208858, 221351, 213145 >+ * Ovidio Mallo - bug 241318 > ******************************************************************************/ > > package org.eclipse.core.tests.internal.databinding.observable.masterdetail; >@@ -44,15 +45,7 @@ > public void testElementTypeNull() throws Exception { > WritableValue observableValue = new WritableValue(new WritableList(new ArrayList(), Object.class), null); > >- class Factory implements IObservableFactory { >- Object type = Object.class; >- >- public IObservable createObservable(Object target) { >- return new WritableList(new ArrayList(), type); >- } >- } >- >- Factory factory = new Factory(); >+ WritableListFactory factory = new WritableListFactory(); > DetailObservableList detailObservable = new DetailObservableList( > factory, observableValue, null); > assertNull(detailObservable.getElementType()); >@@ -72,15 +65,7 @@ > WritableValue observableValue = new WritableValue(new WritableList(new ArrayList(), Object.class), > null); > >- class Factory implements IObservableFactory { >- Object type = Object.class; >- >- public IObservable createObservable(Object target) { >- return new WritableList(new ArrayList(), type); >- } >- } >- >- Factory factory = new Factory(); >+ WritableListFactory factory = new WritableListFactory(); > DetailObservableList detailObservable = new DetailObservableList(factory, > observableValue, Object.class); > assertEquals(factory.type, detailObservable.getElementType()); >@@ -94,6 +79,39 @@ > } > } > >+ /** >+ * Asserts that the master observable value is not disposed upon disposing >+ * its detail observable value (bug 241318). >+ */ >+ public void testMasterNotDisposedWhenDetailDisposed() { >+ class OuterObservable extends WritableValue { >+ boolean disposed = false; >+ >+ public synchronized void dispose() { >+ disposed = true; >+ super.dispose(); >+ } >+ } >+ >+ OuterObservable outerObservable = new OuterObservable(); >+ WritableListFactory factory = new WritableListFactory(); >+ DetailObservableList detailObservable = new DetailObservableList( >+ factory, outerObservable, null); >+ >+ assertFalse(outerObservable.disposed); >+ >+ detailObservable.dispose(); >+ assertFalse(outerObservable.disposed); >+ } >+ >+ private static class WritableListFactory implements IObservableFactory { >+ Object type = Object.class; >+ >+ public IObservable createObservable(Object target) { >+ return new WritableList(new ArrayList(), type); >+ } >+ } >+ > public static Test suite() { > TestSuite suite = new TestSuite(DetailObservableListTest.class.getName()); > suite.addTestSuite(DetailObservableListTest.class); >Index: src/org/eclipse/core/tests/internal/databinding/observable/masterdetail/DetailObservableSetTest.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jface.tests.databinding/src/org/eclipse/core/tests/internal/databinding/observable/masterdetail/DetailObservableSetTest.java,v >retrieving revision 1.5 >diff -u -r1.5 DetailObservableSetTest.java >--- src/org/eclipse/core/tests/internal/databinding/observable/masterdetail/DetailObservableSetTest.java 7 Mar 2008 01:32:22 -0000 1.5 >+++ src/org/eclipse/core/tests/internal/databinding/observable/masterdetail/DetailObservableSetTest.java 17 Jul 2008 20:36:19 -0000 >@@ -8,6 +8,7 @@ > * Contributors: > * Brad Reynolds - initial API and implementation > * Matthew Hall - bugs 221351, 213145 >+ * Ovidio Mallo - bug 241318 > ******************************************************************************/ > > package org.eclipse.core.tests.internal.databinding.observable.masterdetail; >@@ -47,15 +48,7 @@ > WritableValue observableValue = new WritableValue(new WritableSet(new HashSet(), Object.class), > null); > >- class Factory implements IObservableFactory { >- Object type; >- >- public IObservable createObservable(Object target) { >- return new WritableSet(new HashSet(), type); >- } >- } >- >- Factory factory = new Factory(); >+ WritableSetFactory factory = new WritableSetFactory(); > DetailObservableSet detailObservable = new DetailObservableSet(factory, > observableValue, null); > assertNull(detailObservable.getElementType()); >@@ -82,15 +75,7 @@ > WritableValue observableValue = new WritableValue(new WritableSet(new HashSet(), Object.class), > null); > >- class Factory implements IObservableFactory { >- Object type = Object.class; >- >- public IObservable createObservable(Object target) { >- return new WritableSet(new HashSet(), type); >- } >- } >- >- Factory factory = new Factory(); >+ WritableSetFactory factory = new WritableSetFactory(); > DetailObservableSet detailObservable = new DetailObservableSet(factory, > observableValue, Object.class); > assertEquals(factory.type, detailObservable.getElementType()); >@@ -104,6 +89,39 @@ > } > } > >+ /** >+ * Asserts that the master observable value is not disposed upon disposing >+ * its detail observable value (bug 241318). >+ */ >+ public void testMasterNotDisposedWhenDetailDisposed() { >+ class OuterObservable extends WritableValue { >+ boolean disposed = false; >+ >+ public synchronized void dispose() { >+ disposed = true; >+ super.dispose(); >+ } >+ } >+ >+ OuterObservable outerObservable = new OuterObservable(); >+ WritableSetFactory factory = new WritableSetFactory(); >+ DetailObservableSet detailObservable = new DetailObservableSet(factory, >+ outerObservable, null); >+ >+ assertFalse(outerObservable.disposed); >+ >+ detailObservable.dispose(); >+ assertFalse(outerObservable.disposed); >+ } >+ >+ private static class WritableSetFactory implements IObservableFactory { >+ Object type = Object.class; >+ >+ public IObservable createObservable(Object target) { >+ return new WritableSet(new HashSet(), type); >+ } >+ } >+ > public static Test suite() { > TestSuite suite = new TestSuite(DetailObservableSetTest.class.getName()); > suite.addTestSuite(DetailObservableSetTest.class); >Index: src/org/eclipse/core/tests/internal/databinding/observable/masterdetail/DetailObservableValueTest.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jface.tests.databinding/src/org/eclipse/core/tests/internal/databinding/observable/masterdetail/DetailObservableValueTest.java,v >retrieving revision 1.6 >diff -u -r1.6 DetailObservableValueTest.java >--- src/org/eclipse/core/tests/internal/databinding/observable/masterdetail/DetailObservableValueTest.java 7 Mar 2008 01:32:23 -0000 1.6 >+++ src/org/eclipse/core/tests/internal/databinding/observable/masterdetail/DetailObservableValueTest.java 17 Jul 2008 20:36:20 -0000 >@@ -9,6 +9,7 @@ > * Brad Reynolds - initial API and implementation > * Brad Reynolds - bug 147515 > * Matthew Hall - bugs 221351, 213145 >+ * Ovidio Mallo - bug 241318 > ******************************************************************************/ > > package org.eclipse.core.tests.internal.databinding.observable.masterdetail; >@@ -80,7 +81,32 @@ > outerObservable.setValue("2"); > assertNull("value type should be ignored", detailObservable.getValueType()); > } >- >+ >+ /** >+ * Asserts that the master observable value is not disposed upon disposing >+ * its detail observable value (bug 241318). >+ */ >+ public void testMasterNotDisposedWhenDetailDisposed() { >+ class OuterObservable extends WritableValue { >+ boolean disposed = false; >+ >+ public synchronized void dispose() { >+ disposed = true; >+ super.dispose(); >+ } >+ } >+ >+ OuterObservable outerObservable = new OuterObservable(); >+ WritableValueFactory factory = new WritableValueFactory(); >+ DetailObservableValue detailObservable = new DetailObservableValue( >+ outerObservable, factory, null); >+ >+ assertFalse(outerObservable.disposed); >+ >+ detailObservable.dispose(); >+ assertFalse(outerObservable.disposed); >+ } >+ > /** > * Factory that creates WritableValues with the target as the value. > */
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Flags:
qualidafial
:
iplog+
Actions:
View
|
Diff
Attachments on
bug 241318
: 107780