diff --git a/src/main/java/com/avaje/ebeaninternal/server/cache/CachedManyIds.java b/src/main/java/com/avaje/ebeaninternal/server/cache/CachedManyIds.java index 250c978a3..069057a6f 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/cache/CachedManyIds.java +++ b/src/main/java/com/avaje/ebeaninternal/server/cache/CachedManyIds.java @@ -1,6 +1,11 @@ package com.avaje.ebeaninternal.server.cache; +import java.io.Externalizable; +import java.io.IOException; +import java.io.ObjectInput; +import java.io.ObjectOutput; import java.io.Serializable; +import java.util.ArrayList; import java.util.List; /** @@ -9,14 +14,37 @@ import java.util.List; * This is effectively just the Id values for each of the beans in the collection. *

*/ -public class CachedManyIds implements Serializable { +public class CachedManyIds implements Externalizable { - private final List idList; + private List idList; public CachedManyIds(List idList) { this.idList = idList; } + /** + * Construct for serialization. + */ + public CachedManyIds() { + } + + @Override + public void writeExternal(ObjectOutput out) throws IOException { + out.writeInt(idList.size()); + for (Object id : idList) { + out.writeObject(id); + } + } + + @Override + public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { + int size = in.readInt(); + idList = new ArrayList(size); + for (int i = 0; i < size; i++) { + idList.add(in.readObject()); + } + } + public String toString() { return idList.toString(); }