Index: src/test/java/org/jboss/metadata/ejb/test/util/ChildrenListTestCase.java =================================================================== --- src/test/java/org/jboss/metadata/ejb/test/util/ChildrenListTestCase.java (revision 105580) +++ src/test/java/org/jboss/metadata/ejb/test/util/ChildrenListTestCase.java (working copy) @@ -23,8 +23,15 @@ import org.junit.Test; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; + import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; /** * @author Carlo de Wolf @@ -42,4 +49,28 @@ assertTrue(success); assertEquals(parent, child.getParent()); } + + @Test + public void testSerializable() + { + MockParent parent = new MockParent(); + MockChild child = new MockChild(); + parent.getChildren().add(child); + + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + + try { + ObjectOutputStream out = new ObjectOutputStream(bos); + out.writeObject(parent); + out.close(); + byte[] buf = bos.toByteArray(); + + ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(buf)); + MockParent parent2 = (MockParent)in.readObject(); + } catch (Exception e) { + e.printStackTrace(); + fail("unexpected exception " + e.getClass().getName() + ":" + e.getMessage()); + } + + } } Index: src/test/java/org/jboss/metadata/ejb/test/util/MockParent.java =================================================================== --- src/test/java/org/jboss/metadata/ejb/test/util/MockParent.java (revision 105580) +++ src/test/java/org/jboss/metadata/ejb/test/util/MockParent.java (working copy) @@ -24,13 +24,14 @@ import org.jboss.metadata.ejb.util.ChildrenList; import org.jboss.metadata.ejb.util.Parent; +import java.io.Serializable; import java.util.Collection; import java.util.List; /** * @author Carlo de Wolf */ -public class MockParent implements Parent +public class MockParent implements Parent, Serializable { private List children = new ChildrenList(this); Index: src/test/java/org/jboss/metadata/ejb/test/util/MockChild.java =================================================================== --- src/test/java/org/jboss/metadata/ejb/test/util/MockChild.java (revision 105580) +++ src/test/java/org/jboss/metadata/ejb/test/util/MockChild.java (working copy) @@ -23,10 +23,12 @@ import org.jboss.metadata.ejb.util.Child; +import java.io.Serializable; + /** * @author Carlo de Wolf */ -public class MockChild implements Child +public class MockChild implements Child, Serializable { private MockParent parent; Index: src/main/java/org/jboss/metadata/ejb/util/ChildrenList.java =================================================================== --- src/main/java/org/jboss/metadata/ejb/util/ChildrenList.java (revision 105580) +++ src/main/java/org/jboss/metadata/ejb/util/ChildrenList.java (working copy) @@ -21,6 +21,7 @@ */ package org.jboss.metadata.ejb.util; +import java.io.Serializable; import java.util.AbstractList; import java.util.ArrayList; import java.util.List; @@ -33,7 +34,7 @@ * * @author Carlo de Wolf */ -public class ChildrenList extends AbstractList +public class ChildrenList extends AbstractList implements Serializable { private static ChildClassAdapter defaultChildClassAdapter = new ChildClassAdapter, Parent>() { @Override Index: src/main/java/org/jboss/metadata/ejb/util/ChildClassAdapter.java =================================================================== --- src/main/java/org/jboss/metadata/ejb/util/ChildClassAdapter.java (revision 105580) +++ src/main/java/org/jboss/metadata/ejb/util/ChildClassAdapter.java (working copy) @@ -21,13 +21,15 @@ */ package org.jboss.metadata.ejb.util; +import java.io.Serializable; + /** * Because the child object might not implement Child, we need * a ChildClassAdapter. * * @author Carlo de Wolf */ -public interface ChildClassAdapter +public interface ChildClassAdapter extends Serializable { P getParent(C child);