From b7a718ddaf2127423f3aad96804d60b437407b77 Mon Sep 17 00:00:00 2001 From: Rossen Stoyanchev Date: Thu, 29 May 2014 20:53:31 -0400 Subject: [PATCH] Fix bug in SerializableListDataModel This is a follow-up on an earlier commit: https://github.com/spring-projects/spring-webflow/commit/97cc86b7c1ecd3b5b229c37837a44ee6e901501f Issue: SWF-1510 --- .../model/OneSelectionTrackingListDataModel.java | 3 ++- .../faces/model/SerializableListDataModel.java | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/spring-faces/src/main/java/org/springframework/faces/model/OneSelectionTrackingListDataModel.java b/spring-faces/src/main/java/org/springframework/faces/model/OneSelectionTrackingListDataModel.java index 499ff285..a1612141 100644 --- a/spring-faces/src/main/java/org/springframework/faces/model/OneSelectionTrackingListDataModel.java +++ b/spring-faces/src/main/java/org/springframework/faces/model/OneSelectionTrackingListDataModel.java @@ -24,9 +24,10 @@ import org.springframework.util.Assert; /** * A {@link DataModel} implementation that tracks the currently selected row, allowing only one selection at a time. - * + * * @author Jeremy Grelle */ +@SuppressWarnings("serial") public class OneSelectionTrackingListDataModel extends SerializableListDataModel implements SelectionAware { /** diff --git a/spring-faces/src/main/java/org/springframework/faces/model/SerializableListDataModel.java b/spring-faces/src/main/java/org/springframework/faces/model/SerializableListDataModel.java index a65c2cdb..e9cd793e 100644 --- a/spring-faces/src/main/java/org/springframework/faces/model/SerializableListDataModel.java +++ b/spring-faces/src/main/java/org/springframework/faces/model/SerializableListDataModel.java @@ -15,6 +15,9 @@ */ package org.springframework.faces.model; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; import java.io.Serializable; import java.util.ArrayList; import java.util.List; @@ -29,8 +32,10 @@ import org.springframework.util.Assert; * @author Jeremy Grelle * @author Phillip Webb */ +@SuppressWarnings("serial") public class SerializableListDataModel extends ListDataModel implements Serializable { + public SerializableListDataModel() { this(new ArrayList()); } @@ -59,6 +64,16 @@ public class SerializableListDataModel extends ListDataModel implements Se super.setWrappedData(data); } + private void writeObject(ObjectOutputStream oos) throws IOException { + oos.writeObject(getWrappedData()); + oos.write(getRowIndex()); + } + + private void readObject(ObjectInputStream ois) throws ClassNotFoundException, IOException { + setWrappedData(ois.readObject()); + setRowIndex(ois.read()); + } + public String toString() { return getWrappedData().toString(); }