You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by sl...@apache.org on 2009/01/08 00:28:48 UTC
svn commit: r732556 - in
/myfaces/core/branches/2_0_0/api/src/main/java/javax/faces/model:
ArrayDataModel.java DataModel.java ListDataModel.java ResultDataModel.java
ResultSetDataModel.java ScalarDataModel.java
Author: slessard
Date: Wed Jan 7 15:28:46 2009
New Revision: 732556
URL: http://svn.apache.org/viewvc?rev=732556&view=rev
Log:
MYFACES-2096 : Make DataModel types generic
Modified:
myfaces/core/branches/2_0_0/api/src/main/java/javax/faces/model/ArrayDataModel.java
myfaces/core/branches/2_0_0/api/src/main/java/javax/faces/model/DataModel.java
myfaces/core/branches/2_0_0/api/src/main/java/javax/faces/model/ListDataModel.java
myfaces/core/branches/2_0_0/api/src/main/java/javax/faces/model/ResultDataModel.java
myfaces/core/branches/2_0_0/api/src/main/java/javax/faces/model/ResultSetDataModel.java
myfaces/core/branches/2_0_0/api/src/main/java/javax/faces/model/ScalarDataModel.java
Modified: myfaces/core/branches/2_0_0/api/src/main/java/javax/faces/model/ArrayDataModel.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2_0_0/api/src/main/java/javax/faces/model/ArrayDataModel.java?rev=732556&r1=732555&r2=732556&view=diff
==============================================================================
--- myfaces/core/branches/2_0_0/api/src/main/java/javax/faces/model/ArrayDataModel.java (original)
+++ myfaces/core/branches/2_0_0/api/src/main/java/javax/faces/model/ArrayDataModel.java Wed Jan 7 15:28:46 2009
@@ -24,11 +24,11 @@
* @author Thomas Spiegl (latest modification by $Author$)
* @version $Revision$ $Date$
*/
-public class ArrayDataModel extends DataModel
+public class ArrayDataModel<E> extends DataModel<E>
{
// FIELDS
private int _rowIndex = -1;
- private Object[] _data;
+ private E[] _data;
// CONSTRUCTORS
public ArrayDataModel()
@@ -36,7 +36,7 @@
super();
}
- public ArrayDataModel(Object[] array)
+ public ArrayDataModel(E[] array)
{
if (array == null)
throw new NullPointerException("array");
@@ -55,7 +55,7 @@
}
@Override
- public Object getRowData()
+ public E getRowData()
{
if (_data == null)
{
@@ -83,11 +83,7 @@
@Override
public boolean isRowAvailable()
{
- if (_data == null)
- {
- return false;
- }
- return _rowIndex >= 0 && _rowIndex < _data.length;
+ return _data != null && _rowIndex >= 0 && _rowIndex < _data.length;
}
@Override
@@ -114,7 +110,8 @@
@Override
public void setWrappedData(Object data)
{
- _data = (Object[])data;
+ // TODO: Check with EG why data argument is not of type E
+ _data = (E[])data;
int rowIndex = _data != null ? 0 : -1;
setRowIndex(rowIndex);
}
Modified: myfaces/core/branches/2_0_0/api/src/main/java/javax/faces/model/DataModel.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2_0_0/api/src/main/java/javax/faces/model/DataModel.java?rev=732556&r1=732555&r2=732556&view=diff
==============================================================================
--- myfaces/core/branches/2_0_0/api/src/main/java/javax/faces/model/DataModel.java (original)
+++ myfaces/core/branches/2_0_0/api/src/main/java/javax/faces/model/DataModel.java Wed Jan 7 15:28:46 2009
@@ -49,7 +49,7 @@
* @author Thomas Spiegl (latest modification by $Author$)
* @version $Revision$ $Date$
*/
-public abstract class DataModel implements Iterable<Object>
+public abstract class DataModel<E> implements Iterable<E>
{
// FIELDS
private List<DataModelListener> _listeners;
@@ -75,12 +75,17 @@
}
/**
+ * <p>
* Return the number of rows of data available.
+ * </p>
* <p>
* If the number of rows of data available is not known then -1 is returned.
* This may happen for DataModels that wrap sources of data such as
* java.sql.ResultSet that provide an iterator to access the "next item"
* rather than a fixed-size collection of data.
+ * </p>
+ *
+ * @return the number of rows available.
*/
abstract public int getRowCount();
@@ -89,14 +94,16 @@
* <p>
* Method isRowAvailable may be called before attempting to access
* this method, to ensure that the data is available.
- *
+ *
+ * @return The object associated with the current row index.
* @throws RuntimeException subclass of some kind if the current row index
* is not within the range of the current wrappedData property.
*/
- abstract public Object getRowData();
+ abstract public E getRowData();
/**
* Get the current row index.
+ * @return The current row index.
*/
abstract public int getRowIndex();
@@ -105,12 +112,15 @@
* the actual type of the returned object depends upon the concrete
* subclass of DataModel; the object will represent an "ordered sequence
* of components", but may be implemented as an array, java.util.List,
- * java.sql.ResultSet or other similar types.
+ * java.sql.ResultSet or other similar types.
+ *
+ * @return the wrapped object.
*/
abstract public Object getWrappedData();
/**
* Returns true if a call to getRowData will return a valid object.
+ * @return true if a call to getRowData will return a valid object. false otherwise.
*/
abstract public boolean isRowAvailable();
@@ -119,9 +129,9 @@
*
* @since 2.0
*/
- public Iterator<Object> iterator()
+ public Iterator<E> iterator()
{
- return new DataModelIterator();
+ return new DataModelIterator<E>();
}
public void removeDataModelListener(DataModelListener listener)
@@ -137,8 +147,8 @@
* Set the current row index. This affects the behaviour of the
* getRowData method in particular.
*
- * Parameter rowIndex may be -1 to indicate "no row", or may be a value
- * between 0 and getRowCount()-1.
+ * @param rowIndex The row index. It may be -1 to indicate "no row",
+ * or may be a value between 0 and getRowCount()-1.
*/
abstract public void setRowIndex(int rowIndex);
@@ -146,10 +156,13 @@
* Set the entire list of data associated with this component. Note that
* the actual type of the provided object must match the expectations
* of the concrete subclass of DataModel. See getWrappedData.
+ *
+ * @param data The object to be wrapped.
*/
+ // TODO: Check with EG why data argument is not of type E
abstract public void setWrappedData(Object data);
- private class DataModelIterator implements Iterator<Object>
+ private class DataModelIterator<E> implements Iterator<E>
{
private int nextRowIndex = 0;
@@ -158,7 +171,7 @@
return nextRowIndex < getRowCount();
}
- public Object next()
+ public E next()
{
// TODO: Go to the EG with this, we need a getRowData(int) for thread safety.
// Or the spec needs to specify that the iterator alters the selected row explicitely
@@ -169,7 +182,8 @@
if (isRowAvailable())
{
- return getRowData();
+ // TODO: Double-check if this cast is safe. It should be...
+ return (E) getRowData();
}
else
{
Modified: myfaces/core/branches/2_0_0/api/src/main/java/javax/faces/model/ListDataModel.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2_0_0/api/src/main/java/javax/faces/model/ListDataModel.java?rev=732556&r1=732555&r2=732556&view=diff
==============================================================================
--- myfaces/core/branches/2_0_0/api/src/main/java/javax/faces/model/ListDataModel.java (original)
+++ myfaces/core/branches/2_0_0/api/src/main/java/javax/faces/model/ListDataModel.java Wed Jan 7 15:28:46 2009
@@ -26,12 +26,12 @@
* @author Thomas Spiegl (latest modification by $Author$)
* @version $Revision$ $Date$
*/
-public class ListDataModel extends DataModel
+public class ListDataModel<E> extends DataModel<E>
{
// FIELDS
private int _rowIndex = -1;
- private List<?> _data;
+ private List<E> _data;
// CONSTRUCTORS
public ListDataModel()
@@ -39,7 +39,7 @@
super();
}
- public ListDataModel(List list)
+ public ListDataModel(List<E> list)
{
if (list == null)
throw new NullPointerException("list");
@@ -58,7 +58,7 @@
}
@Override
- public Object getRowData()
+ public E getRowData()
{
if (_data == null)
{
@@ -86,11 +86,7 @@
@Override
public boolean isRowAvailable()
{
- if (_data == null)
- {
- return false;
- }
- return _rowIndex >= 0 && _rowIndex < _data.size();
+ return _data != null && _rowIndex >= 0 && _rowIndex < _data.size();
}
@Override
@@ -104,7 +100,7 @@
_rowIndex = rowIndex;
if (_data != null && oldRowIndex != _rowIndex)
{
- Object data = isRowAvailable() ? getRowData() : null;
+ E data = isRowAvailable() ? getRowData() : null;
DataModelEvent event = new DataModelEvent(this, _rowIndex, data);
DataModelListener[] listeners = getDataModelListeners();
for (int i = 0; i < listeners.length; i++)
@@ -117,7 +113,8 @@
@Override
public void setWrappedData(Object data)
{
- _data = (List<?>)data;
+ // TODO: Check with EG why data is not of type E
+ _data = (List<E>)data;
int rowIndex = _data != null ? 0 : -1;
setRowIndex(rowIndex);
}
Modified: myfaces/core/branches/2_0_0/api/src/main/java/javax/faces/model/ResultDataModel.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2_0_0/api/src/main/java/javax/faces/model/ResultDataModel.java?rev=732556&r1=732555&r2=732556&view=diff
==============================================================================
--- myfaces/core/branches/2_0_0/api/src/main/java/javax/faces/model/ResultDataModel.java (original)
+++ myfaces/core/branches/2_0_0/api/src/main/java/javax/faces/model/ResultDataModel.java Wed Jan 7 15:28:46 2009
@@ -29,7 +29,7 @@
* @author Thomas Spiegl (latest modification by $Author$)
* @version $Revision$ $Date$
*/
-public class ResultDataModel extends DataModel
+public class ResultDataModel extends DataModel<SortedMap<String, Object>>
{
// FIELDS
private int _rowIndex = -1;
@@ -60,7 +60,7 @@
}
@Override
- public Object getRowData()
+ public SortedMap<String, Object> getRowData()
{
if (getRows() == null)
{
@@ -80,6 +80,7 @@
}
@Override
+ // TODO: Check with EG why data argument is not of type Result
public Object getWrappedData()
{
return _data;
@@ -88,11 +89,7 @@
@Override
public boolean isRowAvailable()
{
- if (getRows() == null)
- {
- return false;
- }
- return _rowIndex >= 0 && _rowIndex < getRows().length;
+ return getRows() != null && _rowIndex >= 0 && _rowIndex < getRows().length;
}
@Override
@@ -106,7 +103,7 @@
_rowIndex = rowIndex;
if (getRows() != null && oldRowIndex != _rowIndex)
{
- Object data = isRowAvailable() ? getRowData() : null;
+ SortedMap<String, Object> data = isRowAvailable() ? getRowData() : null;
DataModelEvent event = new DataModelEvent(this, _rowIndex, data);
DataModelListener[] listeners = getDataModelListeners();
for (int i = 0; i < listeners.length; i++)
@@ -116,7 +113,7 @@
}
}
- private SortedMap<?, ?>[] getRows()
+ private SortedMap<String, Object>[] getRows()
{
if (_data == null)
return null;
@@ -124,6 +121,7 @@
return _data.getRows();
}
+ // TODO: Check with EG why data argument is not of type Result
@Override
public void setWrappedData(Object data)
{
Modified: myfaces/core/branches/2_0_0/api/src/main/java/javax/faces/model/ResultSetDataModel.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2_0_0/api/src/main/java/javax/faces/model/ResultSetDataModel.java?rev=732556&r1=732555&r2=732556&view=diff
==============================================================================
--- myfaces/core/branches/2_0_0/api/src/main/java/javax/faces/model/ResultSetDataModel.java (original)
+++ myfaces/core/branches/2_0_0/api/src/main/java/javax/faces/model/ResultSetDataModel.java Wed Jan 7 15:28:46 2009
@@ -31,7 +31,7 @@
* @author Martin Marinschek
* @version $Revision$ $Date$
*/
-public class ResultSetDataModel extends DataModel
+public class ResultSetDataModel extends DataModel<Map<String,Object>>
{
// FIELDS
@@ -80,7 +80,7 @@
* returned from here, so check the spec before modifying anything here.
*/
@Override
- public Object getRowData()
+ public Map<String,Object> getRowData()
{
if (_resultSet == null)
{
@@ -353,9 +353,9 @@
}
@Override
- public void putAll(Map<? extends String, ? extends Object> map)
+ public void putAll(Map<? extends String, ?> map)
{
- for (Map.Entry<? extends String, ? extends Object> entry : map.entrySet())
+ for (Map.Entry<? extends String, ?> entry : map.entrySet())
{
put(entry.getKey(), entry.getValue());
}
@@ -669,7 +669,7 @@
}
@Override
- public boolean addAll(Collection<? extends Object> c)
+ public boolean addAll(Collection<?> c)
{
throw new UnsupportedOperationException("it is not allowed to add to this collection");
}
Modified: myfaces/core/branches/2_0_0/api/src/main/java/javax/faces/model/ScalarDataModel.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2_0_0/api/src/main/java/javax/faces/model/ScalarDataModel.java?rev=732556&r1=732555&r2=732556&view=diff
==============================================================================
--- myfaces/core/branches/2_0_0/api/src/main/java/javax/faces/model/ScalarDataModel.java (original)
+++ myfaces/core/branches/2_0_0/api/src/main/java/javax/faces/model/ScalarDataModel.java Wed Jan 7 15:28:46 2009
@@ -24,11 +24,11 @@
* @author Thomas Spiegl (latest modification by $Author$)
* @version $Revision$ $Date$
*/
-public class ScalarDataModel extends DataModel
+public class ScalarDataModel<E> extends DataModel<E>
{
// FIELDS
private int _rowIndex = -1;
- private Object _data;
+ private E _data;
// CONSTRUCTORS
public ScalarDataModel()
@@ -36,7 +36,7 @@
super();
}
- public ScalarDataModel(Object scalar)
+ public ScalarDataModel(E scalar)
{
setWrappedData(scalar);
}
@@ -49,7 +49,7 @@
}
@Override
- public Object getRowData()
+ public E getRowData()
{
if (_data == null)
{
@@ -77,11 +77,7 @@
@Override
public boolean isRowAvailable()
{
- if (_data == null)
- {
- return false;
- }
- return _rowIndex == 0;
+ return _data != null && _rowIndex == 0;
}
@Override
@@ -108,7 +104,8 @@
@Override
public void setWrappedData(Object data)
{
- _data = data;
+ // TODO: Check with EG why data argument is not of type E
+ _data = (E) data;
int rowIndex = _data != null ? 0 : -1;
setRowIndex(rowIndex);
}