[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