From 97cc86b7c1ecd3b5b229c37837a44ee6e901501f Mon Sep 17 00:00:00 2001 From: Phillip Webb Date: Thu, 15 Nov 2012 11:36:29 -0800 Subject: [PATCH] SerializableListDataModel extends ListDataModel Update SerializableListDataModel to extend the JSF ListDataModel class. This is primarily to allow sorting operations to work with PrimeFaces Issue: SWF-1510 --- .../model/SerializableListDataModel.java | 64 ++++--------------- 1 file changed, 11 insertions(+), 53 deletions(-) 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 5e8ba398..a65c2cdb 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 @@ -19,22 +19,17 @@ import java.io.Serializable; import java.util.ArrayList; import java.util.List; -import javax.faces.model.DataModel; -import javax.faces.model.DataModelEvent; -import javax.faces.model.DataModelListener; +import javax.faces.model.ListDataModel; import org.springframework.util.Assert; /** - * A simple List-to-JSF-DataModel adapter that is also serializable. - * + * A simple {@link ListDataModel List-to-JSF-DataModel} adapter that is also {@link Serializable}. + * * @author Jeremy Grelle + * @author Phillip Webb */ -public class SerializableListDataModel extends DataModel implements Serializable { - - private int rowIndex = 0; - - private List data; +public class SerializableListDataModel extends ListDataModel implements Serializable { public SerializableListDataModel() { this(new ArrayList()); @@ -51,57 +46,20 @@ public class SerializableListDataModel extends DataModel implements Serial setWrappedData(list); } - public int getRowCount() { - return this.data.size(); - } - - public T getRowData() { - Assert.isTrue(isRowAvailable(), getClass() - + " is in an illegal state - no row is available at the current index."); - return this.data.get(this.rowIndex); - } - - public int getRowIndex() { - return this.rowIndex; - } - - public List getWrappedData() { - return this.data; - } - - public boolean isRowAvailable() { - return this.rowIndex >= 0 && this.rowIndex < this.data.size(); - } - - public void setRowIndex(int newRowIndex) { - if (newRowIndex < -1) { - throw new IllegalArgumentException("Illegal row index for " + getClass() + ": " + newRowIndex); - } - int oldRowIndex = this.rowIndex; - this.rowIndex = newRowIndex; - if (this.data != null && oldRowIndex != this.rowIndex) { - Object row = isRowAvailable() ? getRowData() : null; - DataModelEvent event = new DataModelEvent(this, this.rowIndex, row); - DataModelListener[] listeners = getDataModelListeners(); - for (DataModelListener listener : listeners) { - listener.rowSelected(event); - } - } - } - @SuppressWarnings("unchecked") + public List getWrappedData() { + return (List) super.getWrappedData(); + } + public void setWrappedData(Object data) { if (data == null) { data = new ArrayList(); } Assert.isInstanceOf(List.class, data, "The data object for " + getClass() + " must be a List"); - this.data = (List) data; - int newRowIndex = 0; - setRowIndex(newRowIndex); + super.setWrappedData(data); } public String toString() { - return this.data.toString(); + return getWrappedData().toString(); } - }