### Eclipse Workspace Patch 1.0 #P org.eclipse.jface.tests.databinding Index: src/org/eclipse/core/tests/databinding/observable/set/ObservableSetRealmTest.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jface.tests.databinding/src/org/eclipse/core/tests/databinding/observable/set/ObservableSetRealmTest.java,v retrieving revision 1.1 diff -u -r1.1 ObservableSetRealmTest.java --- src/org/eclipse/core/tests/databinding/observable/set/ObservableSetRealmTest.java 14 Apr 2007 20:46:41 -0000 1.1 +++ src/org/eclipse/core/tests/databinding/observable/set/ObservableSetRealmTest.java 12 Aug 2007 09:43:29 -0000 @@ -23,6 +23,9 @@ */ public class ObservableSetRealmTest extends AbstractObservableSetRealmTestCase { /* package */ class ObservableSetStub extends ObservableSet { + + private static final long serialVersionUID = 4242495692676164527L; + /** * @param wrappedSet * @param elementType Index: src/org/eclipse/core/tests/databinding/observable/set/AbstractObservableSetRealmTest.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jface.tests.databinding/src/org/eclipse/core/tests/databinding/observable/set/AbstractObservableSetRealmTest.java,v retrieving revision 1.1 diff -u -r1.1 AbstractObservableSetRealmTest.java --- src/org/eclipse/core/tests/databinding/observable/set/AbstractObservableSetRealmTest.java 14 Apr 2007 20:46:41 -0000 1.1 +++ src/org/eclipse/core/tests/databinding/observable/set/AbstractObservableSetRealmTest.java 12 Aug 2007 09:43:29 -0000 @@ -23,6 +23,8 @@ */ public class AbstractObservableSetRealmTest extends AbstractObservableSetRealmTestCase { /* package */static class ObservableSetStub extends AbstractObservableSet { + + private static final long serialVersionUID = 6971607995821086519L; private Set set; /* package */ObservableSetStub(Set set) { Index: src/org/eclipse/core/tests/databinding/observable/set/WritableSetRealmTest.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jface.tests.databinding/src/org/eclipse/core/tests/databinding/observable/set/WritableSetRealmTest.java,v retrieving revision 1.1 diff -u -r1.1 WritableSetRealmTest.java --- src/org/eclipse/core/tests/databinding/observable/set/WritableSetRealmTest.java 14 Apr 2007 20:46:41 -0000 1.1 +++ src/org/eclipse/core/tests/databinding/observable/set/WritableSetRealmTest.java 12 Aug 2007 09:43:29 -0000 @@ -31,6 +31,11 @@ } private static class WritableSetStub extends WritableSet { + /** + * + */ + private static final long serialVersionUID = -8269348320374796053L; + public void getterCalled() { super.getterCalled(); } Index: src/org/eclipse/core/tests/databinding/observable/ObservablesTest.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jface.tests.databinding/src/org/eclipse/core/tests/databinding/observable/ObservablesTest.java,v retrieving revision 1.1 diff -u -r1.1 ObservablesTest.java --- src/org/eclipse/core/tests/databinding/observable/ObservablesTest.java 14 Apr 2007 20:46:40 -0000 1.1 +++ src/org/eclipse/core/tests/databinding/observable/ObservablesTest.java 12 Aug 2007 09:43:29 -0000 @@ -35,6 +35,9 @@ } private static class ObservableListStub extends ObservableList { + + private static final long serialVersionUID = 8982246761243009342L; + /** * @param wrappedList * @param elementType Index: src/org/eclipse/core/tests/databinding/observable/value/AbstractObservableValueTest.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jface.tests.databinding/src/org/eclipse/core/tests/databinding/observable/value/AbstractObservableValueTest.java,v retrieving revision 1.1 diff -u -r1.1 AbstractObservableValueTest.java --- src/org/eclipse/core/tests/databinding/observable/value/AbstractObservableValueTest.java 14 Apr 2007 20:46:39 -0000 1.1 +++ src/org/eclipse/core/tests/databinding/observable/value/AbstractObservableValueTest.java 12 Aug 2007 09:43:30 -0000 @@ -66,6 +66,12 @@ } private static class ObservableValueStub extends AbstractObservableValue { + + /** + * + */ + private static final long serialVersionUID = -7608277757427191L; + ObservableValueStub() { super(Realm.getDefault()); } Index: src/org/eclipse/core/tests/internal/databinding/observable/UnmodifiableObservableListTest.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jface.tests.databinding/src/org/eclipse/core/tests/internal/databinding/observable/UnmodifiableObservableListTest.java,v retrieving revision 1.1 diff -u -r1.1 UnmodifiableObservableListTest.java --- src/org/eclipse/core/tests/internal/databinding/observable/UnmodifiableObservableListTest.java 14 Apr 2007 20:46:42 -0000 1.1 +++ src/org/eclipse/core/tests/internal/databinding/observable/UnmodifiableObservableListTest.java 12 Aug 2007 09:43:30 -0000 @@ -155,6 +155,9 @@ } private static class MutableObservableList extends ObservableList { + + private static final long serialVersionUID = -812319905879339953L; + /** * @param wrappedList * @param elementType Index: src/org/eclipse/core/tests/databinding/observable/list/ObservableListTest.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jface.tests.databinding/src/org/eclipse/core/tests/databinding/observable/list/ObservableListTest.java,v retrieving revision 1.1 diff -u -r1.1 ObservableListTest.java --- src/org/eclipse/core/tests/databinding/observable/list/ObservableListTest.java 14 Apr 2007 20:46:39 -0000 1.1 +++ src/org/eclipse/core/tests/databinding/observable/list/ObservableListTest.java 12 Aug 2007 09:43:29 -0000 @@ -110,6 +110,9 @@ } static class ObservableListStub extends ObservableList { + + private static final long serialVersionUID = 2924018673816795605L; + protected ObservableListStub(List wrappedList, Object elementType) { super(wrappedList, elementType); } Index: src/org/eclipse/core/tests/databinding/observable/list/AbstractObservableListTest.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jface.tests.databinding/src/org/eclipse/core/tests/databinding/observable/list/AbstractObservableListTest.java,v retrieving revision 1.1 diff -u -r1.1 AbstractObservableListTest.java --- src/org/eclipse/core/tests/databinding/observable/list/AbstractObservableListTest.java 14 Apr 2007 20:46:39 -0000 1.1 +++ src/org/eclipse/core/tests/databinding/observable/list/AbstractObservableListTest.java 12 Aug 2007 09:43:29 -0000 @@ -89,6 +89,9 @@ } static class AbstractObservableListStub extends AbstractObservableList { + + private static final long serialVersionUID = -6824068597959148550L; + protected int doGetSize() { return 0; } Index: src/org/eclipse/core/tests/databinding/SerializableTest.java =================================================================== RCS file: src/org/eclipse/core/tests/databinding/SerializableTest.java diff -N src/org/eclipse/core/tests/databinding/SerializableTest.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ src/org/eclipse/core/tests/databinding/SerializableTest.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,81 @@ +/******************************************************************************* + * Copyright (c) 2007 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + ******************************************************************************/ + +package org.eclipse.core.tests.databinding; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.io.Serializable; +import java.util.ArrayList; +import java.util.HashSet; + +import junit.framework.Assert; + +import org.eclipse.core.databinding.observable.list.WritableList; +import org.eclipse.core.databinding.observable.set.WritableSet; +import org.eclipse.jface.tests.databinding.AbstractDefaultRealmTestCase; + +/** + * @since 3.2 + * + */ +public class SerializableTest extends AbstractDefaultRealmTestCase{ + + + + public void testWritableList() throws Exception{ + + try{ + WritableList list = new WritableList(new ArrayList(), Object.class); + Object obj = doSerializationTest(list); + Assert.assertNotNull(obj); + }catch (Exception x){ + x.printStackTrace(); + throw x; + } + } + public void testWritableSet() throws Exception{ + + try{ + WritableSet set = new WritableSet(new HashSet(), Object.class); + Object obj = doSerializationTest(set); + Assert.assertNotNull(obj); + }catch (Exception x){ + x.printStackTrace(); + throw x; + } + } + private Object doSerializationTest(Serializable s) throws Exception{ + byte[] bytes = serialize(s); + Object obj = deserialize(bytes); + return obj; + } + + private byte[] serialize( Serializable s) throws IOException{ + ByteArrayOutputStream bos = new ByteArrayOutputStream() ; + ObjectOutputStream out = new ObjectOutputStream(bos) ; + out.writeObject(s); + out.close(); + return bos.toByteArray(); + } + + private Object deserialize( byte [] bytes) throws IOException,ClassNotFoundException{ + ByteArrayInputStream bis = new ByteArrayInputStream(bytes); + ObjectInputStream in = new ObjectInputStream(bis); + Object result = in.readObject(); + in.close(); + return result; + } + +} #P org.eclipse.core.databinding Index: src/org/eclipse/core/databinding/observable/set/WritableSet.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.core.databinding/src/org/eclipse/core/databinding/observable/set/WritableSet.java,v retrieving revision 1.5 diff -u -r1.5 WritableSet.java --- src/org/eclipse/core/databinding/observable/set/WritableSet.java 12 Apr 2007 03:26:54 -0000 1.5 +++ src/org/eclipse/core/databinding/observable/set/WritableSet.java 12 Aug 2007 09:43:32 -0000 @@ -12,6 +12,7 @@ package org.eclipse.core.databinding.observable.set; +import java.io.Serializable; import java.util.Collection; import java.util.Collections; import java.util.HashSet; @@ -32,7 +33,12 @@ * * @since 1.0 */ -public class WritableSet extends ObservableSet { +public class WritableSet extends ObservableSet implements Serializable{ + + /** + * + */ + private static final long serialVersionUID = 1L; /** * Constructs a new instance with the default realm, empty list, and a @@ -75,6 +81,8 @@ super(realm, new HashSet(c), elementType); this.elementType = elementType; } + + public boolean add(Object o) { checkRealm(); Index: src/org/eclipse/core/databinding/observable/set/ObservableSet.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.core.databinding/src/org/eclipse/core/databinding/observable/set/ObservableSet.java,v retrieving revision 1.4 diff -u -r1.4 ObservableSet.java --- src/org/eclipse/core/databinding/observable/set/ObservableSet.java 22 May 2007 19:22:19 -0000 1.4 +++ src/org/eclipse/core/databinding/observable/set/ObservableSet.java 12 Aug 2007 09:43:32 -0000 @@ -40,6 +40,12 @@ private boolean stale = false; protected Object elementType; + + /** necessary for deserialization */ + protected ObservableSet(){ + super(Realm.getDefault()); + + } protected ObservableSet(Set wrappedSet, Object elementType) { this(Realm.getDefault(), wrappedSet, elementType); Index: src/org/eclipse/core/databinding/observable/ChangeManager.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.core.databinding/src/org/eclipse/core/databinding/observable/ChangeManager.java,v retrieving revision 1.4 diff -u -r1.4 ChangeManager.java --- src/org/eclipse/core/databinding/observable/ChangeManager.java 16 Mar 2007 18:00:56 -0000 1.4 +++ src/org/eclipse/core/databinding/observable/ChangeManager.java 12 Aug 2007 09:43:31 -0000 @@ -25,7 +25,10 @@ ListenerList[] listenerLists = null; Object listenerTypes[] = null; - private Realm realm; + // this is not to be serialized + private transient Realm realm; + + /** * @param realm @@ -35,6 +38,8 @@ Assert.isNotNull(realm); this.realm = realm; } + + /** * @param listenerType Index: src/org/eclipse/core/databinding/observable/list/WritableList.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.core.databinding/src/org/eclipse/core/databinding/observable/list/WritableList.java,v retrieving revision 1.11 diff -u -r1.11 WritableList.java --- src/org/eclipse/core/databinding/observable/list/WritableList.java 12 Apr 2007 03:26:54 -0000 1.11 +++ src/org/eclipse/core/databinding/observable/list/WritableList.java 12 Aug 2007 09:43:32 -0000 @@ -14,6 +14,7 @@ *******************************************************************************/ package org.eclipse.core.databinding.observable.list; +import java.io.Serializable; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; @@ -33,7 +34,12 @@ * * @since 1.0 */ -public class WritableList extends ObservableList { +public class WritableList extends ObservableList implements Serializable{ + + /** + * + */ + private static final long serialVersionUID = 1L; /** * Creates an empty writable list in the default realm with a @@ -78,6 +84,9 @@ super(realm, toWrap, elementType); } + + + public Object set(int index, Object element) { checkRealm(); Object oldElement = wrappedList.set(index, element); Index: src/org/eclipse/core/databinding/observable/list/ObservableList.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.core.databinding/src/org/eclipse/core/databinding/observable/list/ObservableList.java,v retrieving revision 1.7 diff -u -r1.7 ObservableList.java --- src/org/eclipse/core/databinding/observable/list/ObservableList.java 22 May 2007 19:22:19 -0000 1.7 +++ src/org/eclipse/core/databinding/observable/list/ObservableList.java 12 Aug 2007 09:43:32 -0000 @@ -25,12 +25,14 @@ /** * - * Abstract implementation of {@link IObservableList}, based on an underlying regular list. + * Abstract implementation of {@link IObservableList}, based on an underlying + * regular list. *

* This class is thread safe. All state accessing methods must be invoked from * the {@link Realm#isCurrent() current realm}. Methods for adding and removing * listeners may be invoked from any thread. *

+ * * @since 1.0 * */ @@ -40,12 +42,19 @@ protected List wrappedList; /** - * Stale state of the list. Access must occur in the current realm. + * Stale state of the list. Access must occur in the current realm. */ private boolean stale = false; private Object elementType; + /** + * needed for deserialization + */ + protected ObservableList() { + super(Realm.getDefault()); + } + protected ObservableList(List wrappedList, Object elementType) { this(Realm.getDefault(), wrappedList, elementType); } @@ -60,7 +69,8 @@ addListener(ListChangeEvent.TYPE, listener); } - public synchronized void removeListChangeListener(IListChangeListener listener) { + public synchronized void removeListChangeListener( + IListChangeListener listener) { removeListener(ListChangeEvent.TYPE, listener); } @@ -69,7 +79,7 @@ super.fireChange(); fireEvent(new ListChangeEvent(this, diff)); } - + public boolean contains(Object o) { getterCalled(); return wrappedList.contains(o); @@ -133,45 +143,45 @@ getterCalled(); return wrappedList.toString(); } - + /** * @TrackedGetter */ - public Object get(int index) { - getterCalled(); - return wrappedList.get(index); - } + public Object get(int index) { + getterCalled(); + return wrappedList.get(index); + } /** * @TrackedGetter */ - public int indexOf(Object o) { - getterCalled(); - return wrappedList.indexOf(o); - } + public int indexOf(Object o) { + getterCalled(); + return wrappedList.indexOf(o); + } /** * @TrackedGetter */ - public int lastIndexOf(Object o) { - getterCalled(); - return wrappedList.lastIndexOf(o); - } + public int lastIndexOf(Object o) { + getterCalled(); + return wrappedList.lastIndexOf(o); + } - // List Iterators + // List Iterators /** * @TrackedGetter */ - public ListIterator listIterator() { - return listIterator(0); - } + public ListIterator listIterator() { + return listIterator(0); + } /** * @TrackedGetter */ - public ListIterator listIterator(int index) { - getterCalled(); + public ListIterator listIterator(int index) { + getterCalled(); final ListIterator wrappedIterator = wrappedList.listIterator(index); return new ListIterator() { @@ -211,25 +221,24 @@ throw new UnsupportedOperationException(); } }; - } - + } - public List subList(int fromIndex, int toIndex) { - getterCalled(); - return wrappedList.subList(fromIndex, toIndex); - } + public List subList(int fromIndex, int toIndex) { + getterCalled(); + return wrappedList.subList(fromIndex, toIndex); + } protected void getterCalled() { ObservableTracker.getterCalled(this); } - public Object set(int index, Object element) { - throw new UnsupportedOperationException(); - } - - public Object remove(int index) { - throw new UnsupportedOperationException(); - } + public Object set(int index, Object element) { + throw new UnsupportedOperationException(); + } + + public Object remove(int index) { + throw new UnsupportedOperationException(); + } public boolean add(Object o) { throw new UnsupportedOperationException(); @@ -238,14 +247,14 @@ public void add(int index, Object element) { throw new UnsupportedOperationException(); } - + public boolean addAll(Collection c) { throw new UnsupportedOperationException(); } - public boolean addAll(int index, Collection c) { - throw new UnsupportedOperationException(); - } + public boolean addAll(int index, Collection c) { + throw new UnsupportedOperationException(); + } public boolean remove(Object o) { throw new UnsupportedOperationException(); @@ -264,7 +273,7 @@ } /** - * Returns the stale state. Must be invoked from the current realm. + * Returns the stale state. Must be invoked from the current realm. * * @return stale state */ @@ -274,7 +283,7 @@ } /** - * Sets the stale state. Must be invoked from the current realm. + * Sets the stale state. Must be invoked from the current realm. * * @param stale * The stale state to list. This will fire a stale event if the @@ -292,16 +301,19 @@ } protected void fireChange() { - throw new RuntimeException("fireChange should not be called, use fireListChange() instead"); //$NON-NLS-1$ + throw new RuntimeException( + "fireChange should not be called, use fireListChange() instead"); //$NON-NLS-1$ } - - /* (non-Javadoc) + + /* + * (non-Javadoc) + * * @see org.eclipse.jface.provisional.databinding.observable.AbstractObservable#dispose() */ public synchronized void dispose() { super.dispose(); } - + public Object getElementType() { return elementType; }