[jboss-cvs] jboss-seam/src/main/org/jboss/seam/jsf ...
Gavin King
gavin.king at jboss.com
Fri Jun 8 12:30:02 EDT 2007
User: gavin
Date: 07/06/08 12:30:02
Modified: src/main/org/jboss/seam/jsf ArrayDataModel.java
ListDataModel.java MapDataModel.java
SetDataModel.java
Log:
fix a problem where changes to Maps and Lists were not reflected in the DataModel
Revision Changes Path
1.3 +11 -7 jboss-seam/src/main/org/jboss/seam/jsf/ArrayDataModel.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: ArrayDataModel.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/jsf/ArrayDataModel.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- ArrayDataModel.java 21 Dec 2006 02:38:27 -0000 1.2
+++ ArrayDataModel.java 8 Jun 2007 16:30:02 -0000 1.3
@@ -1,30 +1,34 @@
-//$Id: ArrayDataModel.java,v 1.2 2006/12/21 02:38:27 sbryzak2 Exp $
+//$Id: ArrayDataModel.java,v 1.3 2007/06/08 16:30:02 gavin Exp $
package org.jboss.seam.jsf;
+
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
+
public class ArrayDataModel extends javax.faces.model.ArrayDataModel implements
Serializable
{
private static final long serialVersionUID = -1369792328129853864L;
+
private void writeObject(ObjectOutputStream oos) throws IOException
{
oos.writeObject(getWrappedData());
oos.writeInt(getRowIndex());
}
+
private void readObject(ObjectInputStream ois) throws IOException,
ClassNotFoundException
{
- this.setWrappedData(ois.readObject());
- this.setRowIndex(ois.readInt());
- }
- public ArrayDataModel()
- {
- super();
+ this.setWrappedData( ois.readObject() );
+ this.setRowIndex( ois.readInt() );
}
+
+ public ArrayDataModel() {}
+
public ArrayDataModel(Object[] array)
{
super(array);
}
+
}
1.3 +8 -5 jboss-seam/src/main/org/jboss/seam/jsf/ListDataModel.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: ListDataModel.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/jsf/ListDataModel.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- ListDataModel.java 21 Dec 2006 02:38:27 -0000 1.2
+++ ListDataModel.java 8 Jun 2007 16:30:02 -0000 1.3
@@ -1,27 +1,30 @@
-//$Id: ListDataModel.java,v 1.2 2006/12/21 02:38:27 sbryzak2 Exp $
+//$Id: ListDataModel.java,v 1.3 2007/06/08 16:30:02 gavin Exp $
package org.jboss.seam.jsf;
+
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.List;
+
public class ListDataModel extends javax.faces.model.ListDataModel implements Serializable
{
private static final long serialVersionUID = 5156131434571541698L;
+
private void writeObject(ObjectOutputStream oos) throws IOException
{
oos.writeObject( getWrappedData() );
oos.writeInt( getRowIndex() );
}
+
private void readObject(ObjectInputStream ois) throws IOException, ClassNotFoundException
{
this.setWrappedData( ois.readObject() );
this.setRowIndex( ois.readInt() );
}
- public ListDataModel()
- {
- super();
- }
+
+ public ListDataModel() {}
+
public ListDataModel(List list)
{
super(list);
1.4 +49 -16 jboss-seam/src/main/org/jboss/seam/jsf/MapDataModel.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: MapDataModel.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/jsf/MapDataModel.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- MapDataModel.java 21 Dec 2006 02:38:27 -0000 1.3
+++ MapDataModel.java 8 Jun 2007 16:30:02 -0000 1.4
@@ -1,26 +1,31 @@
-//$Id: MapDataModel.java,v 1.3 2006/12/21 02:38:27 sbryzak2 Exp $
+//$Id: MapDataModel.java,v 1.4 2007/06/08 16:30:02 gavin Exp $
package org.jboss.seam.jsf;
+
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
+import java.util.AbstractMap;
+import java.util.AbstractSet;
import java.util.ArrayList;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.Set;
+
import javax.faces.model.DataModelEvent;
import javax.faces.model.DataModelListener;
+
public class MapDataModel extends javax.faces.model.DataModel implements
Serializable
{
private static final long serialVersionUID = -4888962547222002402L;
private int rowIndex = -1;
- private Map map;
private List<Map.Entry> entries;
- public MapDataModel()
- {
- super();
- }
+
+ public MapDataModel() {}
+
public MapDataModel(Map map)
{
if (map == null)
@@ -29,22 +34,24 @@
}
setWrappedData(map);
}
+
@Override
public int getRowCount()
{
- if (map == null)
+ if (entries == null)
{
return -1;
}
- return map.size();
+ return entries.size();
}
+
/**
* Returns a Map.Entry
*/
@Override
public Object getRowData()
{
- if (map == null)
+ if (entries == null)
{
return null;
}
@@ -54,21 +61,46 @@
}
return entries.get(rowIndex);
}
+
@Override
public int getRowIndex()
{
return rowIndex;
}
+
@Override
public Object getWrappedData()
{
- return map;
+ return new AbstractMap()
+ {
+ @Override
+ public Set entrySet()
+ {
+ return new AbstractSet()
+ {
+ @Override
+ public Iterator iterator()
+ {
+ return entries.iterator();
}
@Override
+ public int size()
+ {
+ return entries.size();
+ }
+ };
+ }
+ };
+ }
+
+ @Override
public boolean isRowAvailable()
{
- return entries!=null && rowIndex >= 0 && rowIndex < entries.size();
+ return entries!=null &&
+ rowIndex >= 0 &&
+ rowIndex < entries.size();
}
+
@Override
public void setRowIndex(int newRowIndex)
{
@@ -78,7 +110,7 @@
}
int oldRowIndex = rowIndex;
rowIndex = newRowIndex;
- if (map != null && oldRowIndex != newRowIndex)
+ if (entries != null && oldRowIndex != newRowIndex)
{
Object data = isRowAvailable() ? getRowData() : null;
DataModelEvent event = new DataModelEvent(this, newRowIndex, data);
@@ -89,25 +121,26 @@
}
}
}
+
@Override
public void setWrappedData(Object data)
{
- map = (Map) data;
- entries = new ArrayList( map.entrySet() );
+ entries = new ArrayList( ( (Map) data ).entrySet() );
int rowIndex = data != null ? 0 : -1;
setRowIndex(rowIndex);
}
+
private void writeObject(ObjectOutputStream oos) throws IOException
{
- oos.writeObject(map);
oos.writeInt(rowIndex);
oos.writeObject(entries);
}
+
private void readObject(ObjectInputStream ois) throws IOException,
ClassNotFoundException
{
- map = (Map) ois.readObject();
rowIndex = ois.readInt();
entries = (List<Map.Entry>) ois.readObject();
}
+
}
1.4 +25 -16 jboss-seam/src/main/org/jboss/seam/jsf/SetDataModel.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: SetDataModel.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/jsf/SetDataModel.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- SetDataModel.java 21 Dec 2006 02:38:27 -0000 1.3
+++ SetDataModel.java 8 Jun 2007 16:30:02 -0000 1.4
@@ -1,11 +1,13 @@
-//$Id: SetDataModel.java,v 1.3 2006/12/21 02:38:27 sbryzak2 Exp $
+//$Id: SetDataModel.java,v 1.4 2007/06/08 16:30:02 gavin Exp $
package org.jboss.seam.jsf;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
+import java.util.AbstractSet;
import java.util.ArrayList;
+import java.util.Iterator;
import java.util.List;
import java.util.Set;
@@ -17,13 +19,9 @@
{
private static final long serialVersionUID = -616367764778689337L;
private int rowIndex = -1;
- private Set set;
private List entries;
- public SetDataModel()
- {
- super();
- }
+ public SetDataModel() {}
public SetDataModel(Set set)
{
@@ -37,17 +35,17 @@
@Override
public int getRowCount()
{
- if (set==null)
+ if (entries==null)
{
return -1;
}
- return set.size();
+ return entries.size();
}
@Override
public Object getRowData()
{
- if (set == null)
+ if (entries == null)
{
return null;
}
@@ -67,13 +65,27 @@
@Override
public Object getWrappedData()
{
- return set;
+ return new AbstractSet()
+ {
+ @Override
+ public Iterator iterator()
+ {
+ return entries.iterator();
+ }
+ @Override
+ public int size()
+ {
+ return entries.size();
+ }
+ };
}
@Override
public boolean isRowAvailable()
{
- return entries!=null && rowIndex >= 0 && rowIndex < entries.size();
+ return entries!=null &&
+ rowIndex >= 0 &&
+ rowIndex < entries.size();
}
@Override
@@ -85,7 +97,7 @@
}
int oldRowIndex = rowIndex;
rowIndex = newRowIndex;
- if (set != null && oldRowIndex != newRowIndex)
+ if (entries != null && oldRowIndex != newRowIndex)
{
Object data = isRowAvailable() ? getRowData() : null;
DataModelEvent event = new DataModelEvent(this, newRowIndex, data);
@@ -100,15 +112,13 @@
@Override
public void setWrappedData(Object data)
{
- set = (Set) data;
- entries = new ArrayList(set);
+ entries = new ArrayList( (Set) data );
int rowIndex = data != null ? 0 : -1;
setRowIndex(rowIndex);
}
private void writeObject(ObjectOutputStream oos) throws IOException
{
- oos.writeObject(set);
oos.writeInt(rowIndex);
oos.writeObject(entries);
}
@@ -116,7 +126,6 @@
private void readObject(ObjectInputStream ois) throws IOException,
ClassNotFoundException
{
- set = (Set) ois.readObject();
rowIndex = ois.readInt();
entries = (List) ois.readObject();
}
More information about the jboss-cvs-commits
mailing list