You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2012/05/09 14:58:36 UTC

[1/2] git commit: WICKET-4535 Inconsistent use of generics in sorting APIs

Updated Branches:
  refs/heads/master 0852b22cf -> 0f16b908e


WICKET-4535 Inconsistent use of generics in sorting APIs


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/0f16b908
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/0f16b908
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/0f16b908

Branch: refs/heads/master
Commit: 0f16b908e6e0630ba85e6e6e539996487f567cfd
Parents: 98798f7
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Wed May 9 15:57:14 2012 +0300
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Wed May 9 15:57:14 2012 +0300

----------------------------------------------------------------------
 .../devutils/diskstore/browser/BrowserTable.java   |    2 +-
 .../diskstore/browser/PageWindowProvider.java      |    4 +-
 .../examples/repeater/AjaxDataTablePage.java       |    2 +-
 .../repeater/SortableContactDataProvider.java      |    2 +-
 .../examples/spring/annot/web/AnnotPage.java       |    6 +---
 .../spring/annot/web/ProxyDataProvider.java        |    4 +-
 .../wicket/examples/spring/common/ContactDao.java  |    2 +-
 .../spring/common/web/ContactDataProvider.java     |    5 ++-
 .../spring/common/web/ContactDetachableModel.java  |    2 +-
 .../spring/common/web/ContactsDisplayPage.java     |    4 +-
 .../data/table/AjaxFallbackDefaultDataTable.java   |    8 +++--
 .../html/repeater/data/sort/ISortStateLocator.java |    4 +-
 .../html/repeater/data/table/DefaultDataTable.java |    6 +++-
 .../repeater/data/table/ISortableDataProvider.java |    4 ++-
 .../html/repeater/tree/DefaultTableTree.java       |    8 +++--
 .../html/repeater/tree/ISortableTreeProvider.java  |    2 +-
 .../html/repeater/util/SortableDataProvider.java   |   14 +++++----
 .../html/repeater/util/SortableTreeProvider.java   |   21 ++++++++-------
 .../data/table/SortableContactDataProvider.java    |    4 +-
 19 files changed, 57 insertions(+), 47 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/0f16b908/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/browser/BrowserTable.java
----------------------------------------------------------------------
diff --git a/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/browser/BrowserTable.java b/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/browser/BrowserTable.java
index 2a1a175..1ddd48b 100644
--- a/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/browser/BrowserTable.java
+++ b/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/browser/BrowserTable.java
@@ -25,7 +25,7 @@ import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
  * A data table that shows the attributes of the recently stored pages in the data store. The last
  * used pages are rendered first.
  */
-class BrowserTable extends DefaultDataTable<PageWindowDescription>
+class BrowserTable extends DefaultDataTable<PageWindowDescription, String>
 {
 
 	/**

http://git-wip-us.apache.org/repos/asf/wicket/blob/0f16b908/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/browser/PageWindowProvider.java
----------------------------------------------------------------------
diff --git a/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/browser/PageWindowProvider.java b/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/browser/PageWindowProvider.java
index 178fb1c..43ae93a 100644
--- a/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/browser/PageWindowProvider.java
+++ b/wicket-devutils/src/main/java/org/apache/wicket/devutils/diskstore/browser/PageWindowProvider.java
@@ -31,7 +31,7 @@ import org.apache.wicket.pageStore.PageWindowManager.PageWindow;
 /**
  * An {@link IDataProvider} that extracts the information about the stored pages
  */
-class PageWindowProvider implements ISortableDataProvider<PageWindowDescription>
+class PageWindowProvider implements ISortableDataProvider<PageWindowDescription, String>
 {
 	private static final int MAX_PAGES_TO_READ = 1000;
 
@@ -95,7 +95,7 @@ class PageWindowProvider implements ISortableDataProvider<PageWindowDescription>
 	 * No sort state for now. The provider is ISortableDataProvider just because we use
 	 * DefaultDataTable
 	 */
-	public ISortState getSortState()
+	public ISortState<String> getSortState()
 	{
 		return null;
 	}

http://git-wip-us.apache.org/repos/asf/wicket/blob/0f16b908/wicket-examples/src/main/java/org/apache/wicket/examples/repeater/AjaxDataTablePage.java
----------------------------------------------------------------------
diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/repeater/AjaxDataTablePage.java b/wicket-examples/src/main/java/org/apache/wicket/examples/repeater/AjaxDataTablePage.java
index 1abdc65..3a1b3fc 100644
--- a/wicket-examples/src/main/java/org/apache/wicket/examples/repeater/AjaxDataTablePage.java
+++ b/wicket-examples/src/main/java/org/apache/wicket/examples/repeater/AjaxDataTablePage.java
@@ -58,7 +58,7 @@ public class AjaxDataTablePage extends BasePage
 		columns.add(new PropertyColumn<Contact>(new Model<String>("Home Phone"), "homePhone"));
 		columns.add(new PropertyColumn<Contact>(new Model<String>("Cell Phone"), "cellPhone"));
 
-		add(new AjaxFallbackDefaultDataTable<Contact>("table", columns,
+		add(new AjaxFallbackDefaultDataTable<Contact, String>("table", columns,
 			new SortableContactDataProvider(), 8));
 	}
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/0f16b908/wicket-examples/src/main/java/org/apache/wicket/examples/repeater/SortableContactDataProvider.java
----------------------------------------------------------------------
diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/repeater/SortableContactDataProvider.java b/wicket-examples/src/main/java/org/apache/wicket/examples/repeater/SortableContactDataProvider.java
index a98150d..cd2011b 100644
--- a/wicket-examples/src/main/java/org/apache/wicket/examples/repeater/SortableContactDataProvider.java
+++ b/wicket-examples/src/main/java/org/apache/wicket/examples/repeater/SortableContactDataProvider.java
@@ -29,7 +29,7 @@ import org.apache.wicket.model.IModel;
  * @author igor
  * 
  */
-public class SortableContactDataProvider extends SortableDataProvider<Contact>
+public class SortableContactDataProvider extends SortableDataProvider<Contact, String>
 {
 	/**
 	 * constructor

http://git-wip-us.apache.org/repos/asf/wicket/blob/0f16b908/wicket-examples/src/main/java/org/apache/wicket/examples/spring/annot/web/AnnotPage.java
----------------------------------------------------------------------
diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/spring/annot/web/AnnotPage.java b/wicket-examples/src/main/java/org/apache/wicket/examples/spring/annot/web/AnnotPage.java
index 0bcc3b8..b894f54 100644
--- a/wicket-examples/src/main/java/org/apache/wicket/examples/spring/annot/web/AnnotPage.java
+++ b/wicket-examples/src/main/java/org/apache/wicket/examples/spring/annot/web/AnnotPage.java
@@ -17,6 +17,7 @@
 package org.apache.wicket.examples.spring.annot.web;
 
 import org.apache.wicket.examples.spring.common.ContactDao;
+import org.apache.wicket.examples.spring.common.web.ContactDataProvider;
 import org.apache.wicket.examples.spring.common.web.ContactsDisplayPage;
 import org.apache.wicket.extensions.markup.html.repeater.util.SortableDataProvider;
 import org.apache.wicket.spring.injection.annot.SpringBean;
@@ -38,11 +39,8 @@ public class AnnotPage extends ContactsDisplayPage
 
 	}
 
-	/**
-	 * @see org.apache.wicket.spring.common.web.ContactsDisplayPage#getDataProvider()
-	 */
 	@Override
-	protected SortableDataProvider<?> getDataProvider()
+	protected ContactDataProvider getDataProvider()
 	{
 		return new ProxyDataProvider(dao);
 	}

http://git-wip-us.apache.org/repos/asf/wicket/blob/0f16b908/wicket-examples/src/main/java/org/apache/wicket/examples/spring/annot/web/ProxyDataProvider.java
----------------------------------------------------------------------
diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/spring/annot/web/ProxyDataProvider.java b/wicket-examples/src/main/java/org/apache/wicket/examples/spring/annot/web/ProxyDataProvider.java
index 01115ee..7625450 100644
--- a/wicket-examples/src/main/java/org/apache/wicket/examples/spring/annot/web/ProxyDataProvider.java
+++ b/wicket-examples/src/main/java/org/apache/wicket/examples/spring/annot/web/ProxyDataProvider.java
@@ -36,9 +36,9 @@ public class ProxyDataProvider extends ContactDataProvider
 		return dao;
 	}
 
-	public IModel model(Object object)
+	public IModel<Contact> model(Contact contact)
 	{
-		return new ProxyModel((Contact)object, dao);
+		return new ProxyModel(contact, dao);
 	}
 
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/0f16b908/wicket-examples/src/main/java/org/apache/wicket/examples/spring/common/ContactDao.java
----------------------------------------------------------------------
diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/spring/common/ContactDao.java b/wicket-examples/src/main/java/org/apache/wicket/examples/spring/common/ContactDao.java
index 57a5ec1..793c314 100644
--- a/wicket-examples/src/main/java/org/apache/wicket/examples/spring/common/ContactDao.java
+++ b/wicket-examples/src/main/java/org/apache/wicket/examples/spring/common/ContactDao.java
@@ -36,7 +36,7 @@ public interface ContactDao
 	 *            sorting and paging info
 	 * @return iterator over contacts
 	 */
-	Iterator find(QueryParam qp);
+	Iterator<Contact> find(QueryParam qp);
 
 	/**
 	 * @param id

http://git-wip-us.apache.org/repos/asf/wicket/blob/0f16b908/wicket-examples/src/main/java/org/apache/wicket/examples/spring/common/web/ContactDataProvider.java
----------------------------------------------------------------------
diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/spring/common/web/ContactDataProvider.java b/wicket-examples/src/main/java/org/apache/wicket/examples/spring/common/web/ContactDataProvider.java
index fb933e1..b9725d0 100644
--- a/wicket-examples/src/main/java/org/apache/wicket/examples/spring/common/web/ContactDataProvider.java
+++ b/wicket-examples/src/main/java/org/apache/wicket/examples/spring/common/web/ContactDataProvider.java
@@ -18,6 +18,7 @@ package org.apache.wicket.examples.spring.common.web;
 
 import java.util.Iterator;
 
+import org.apache.wicket.examples.spring.common.Contact;
 import org.apache.wicket.examples.spring.common.ContactDao;
 import org.apache.wicket.examples.spring.common.QueryParam;
 import org.apache.wicket.extensions.markup.html.repeater.data.sort.SortOrder;
@@ -30,7 +31,7 @@ import org.apache.wicket.extensions.markup.html.repeater.util.SortableDataProvid
  * @author Igor Vaynberg (ivaynerg)
  * 
  */
-public abstract class ContactDataProvider extends SortableDataProvider
+public abstract class ContactDataProvider extends SortableDataProvider<Contact, String>
 {
 
 	public ContactDataProvider()
@@ -40,7 +41,7 @@ public abstract class ContactDataProvider extends SortableDataProvider
 
 	protected abstract ContactDao getContactDao();
 
-	public final Iterator iterator(long first, long count)
+	public final Iterator<Contact> iterator(long first, long count)
 	{
 		QueryParam qp = new QueryParam(first, count, getSort());
 		return getContactDao().find(qp);

http://git-wip-us.apache.org/repos/asf/wicket/blob/0f16b908/wicket-examples/src/main/java/org/apache/wicket/examples/spring/common/web/ContactDetachableModel.java
----------------------------------------------------------------------
diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/spring/common/web/ContactDetachableModel.java b/wicket-examples/src/main/java/org/apache/wicket/examples/spring/common/web/ContactDetachableModel.java
index 6129a43..50b133c 100644
--- a/wicket-examples/src/main/java/org/apache/wicket/examples/spring/common/web/ContactDetachableModel.java
+++ b/wicket-examples/src/main/java/org/apache/wicket/examples/spring/common/web/ContactDetachableModel.java
@@ -27,7 +27,7 @@ import org.apache.wicket.model.LoadableDetachableModel;
  * @author Igor Vaynberg (ivaynberg)
  * 
  */
-public abstract class ContactDetachableModel extends LoadableDetachableModel
+public abstract class ContactDetachableModel extends LoadableDetachableModel<Contact>
 {
 
 	private long id;

http://git-wip-us.apache.org/repos/asf/wicket/blob/0f16b908/wicket-examples/src/main/java/org/apache/wicket/examples/spring/common/web/ContactsDisplayPage.java
----------------------------------------------------------------------
diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/spring/common/web/ContactsDisplayPage.java b/wicket-examples/src/main/java/org/apache/wicket/examples/spring/common/web/ContactsDisplayPage.java
index 0f6f3bc..cde2b3a 100644
--- a/wicket-examples/src/main/java/org/apache/wicket/examples/spring/common/web/ContactsDisplayPage.java
+++ b/wicket-examples/src/main/java/org/apache/wicket/examples/spring/common/web/ContactsDisplayPage.java
@@ -18,10 +18,10 @@ package org.apache.wicket.examples.spring.common.web;
 
 import java.util.Arrays;
 
+import org.apache.wicket.examples.spring.common.Contact;
 import org.apache.wicket.extensions.markup.html.repeater.data.table.DefaultDataTable;
 import org.apache.wicket.extensions.markup.html.repeater.data.table.IColumn;
 import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn;
-import org.apache.wicket.extensions.markup.html.repeater.util.SortableDataProvider;
 import org.apache.wicket.model.Model;
 
 
@@ -47,5 +47,5 @@ public abstract class ContactsDisplayPage extends BasePage
 		add(new DefaultDataTable("contacts", Arrays.asList(cols), getDataProvider(), 5));
 	}
 
-	protected abstract SortableDataProvider<?> getDataProvider();
+	protected abstract ContactDataProvider getDataProvider();
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/0f16b908/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/repeater/data/table/AjaxFallbackDefaultDataTable.java
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/repeater/data/table/AjaxFallbackDefaultDataTable.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/repeater/data/table/AjaxFallbackDefaultDataTable.java
index 74892e9..c572483 100644
--- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/repeater/data/table/AjaxFallbackDefaultDataTable.java
+++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/repeater/data/table/AjaxFallbackDefaultDataTable.java
@@ -44,10 +44,12 @@ import org.apache.wicket.model.IModel;
  * @author Igor Vaynberg ( ivaynberg )
  * 
  * @param <T>
- *            The model object type
+ *     The model object type
+ * @param <S>
+ *     the type of the sorting parameter
  * 
  */
-public class AjaxFallbackDefaultDataTable<T> extends DataTable<T>
+public class AjaxFallbackDefaultDataTable<T, S> extends DataTable<T>
 {
 	private static final long serialVersionUID = 1L;
 
@@ -64,7 +66,7 @@ public class AjaxFallbackDefaultDataTable<T> extends DataTable<T>
 	 *            number of rows per page
 	 */
 	public AjaxFallbackDefaultDataTable(final String id, final List<IColumn<T>> columns,
-		final ISortableDataProvider<T> dataProvider, final int rowsPerPage)
+		final ISortableDataProvider<T, S> dataProvider, final int rowsPerPage)
 	{
 		super(id, columns, dataProvider, rowsPerPage);
 		setOutputMarkupId(true);

http://git-wip-us.apache.org/repos/asf/wicket/blob/0f16b908/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort/ISortStateLocator.java
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort/ISortStateLocator.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort/ISortStateLocator.java
index a185515..1180591 100644
--- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort/ISortStateLocator.java
+++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort/ISortStateLocator.java
@@ -26,10 +26,10 @@ import org.apache.wicket.util.io.IClusterable;
  * @author Igor Vaynberg (ivaynberg)
  * 
  */
-public interface ISortStateLocator extends IClusterable
+public interface ISortStateLocator<T> extends IClusterable
 {
 	/**
 	 * @return ISortState object
 	 */
-	<T> ISortState<T> getSortState();
+	ISortState<T> getSortState();
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/0f16b908/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/DefaultDataTable.java
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/DefaultDataTable.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/DefaultDataTable.java
index 6adfbc8..6f60000 100644
--- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/DefaultDataTable.java
+++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/DefaultDataTable.java
@@ -38,8 +38,10 @@ import org.apache.wicket.model.IModel;
  * @author Igor Vaynberg ( ivaynberg )
  * @param <T>
  *            The model object type
+ * @param <S>
+ *      the type of the sorting parameter
  */
-public class DefaultDataTable<T> extends DataTable<T>
+public class DefaultDataTable<T, S> extends DataTable<T>
 {
 	private static final long serialVersionUID = 1L;
 
@@ -56,7 +58,7 @@ public class DefaultDataTable<T> extends DataTable<T>
 	 *            number of rows per page
 	 */
 	public DefaultDataTable(final String id, final List<IColumn<T>> columns,
-		final ISortableDataProvider<T> dataProvider, final int rowsPerPage)
+		final ISortableDataProvider<T, S> dataProvider, final int rowsPerPage)
 	{
 		super(id, columns, dataProvider, rowsPerPage);
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/0f16b908/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/ISortableDataProvider.java
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/ISortableDataProvider.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/ISortableDataProvider.java
index b62e2cc..c8c5414 100644
--- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/ISortableDataProvider.java
+++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/table/ISortableDataProvider.java
@@ -25,9 +25,11 @@ import org.apache.wicket.markup.repeater.data.IDataProvider;
  * 
  * @author Igor Vaynberg (ivaynberg at apache dot org)
  * @param <T>
+ * @param <S>
+ *     the type of the sorting parameter
  * 
  */
-public interface ISortableDataProvider<T> extends IDataProvider<T>, ISortStateLocator
+public interface ISortableDataProvider<T, S> extends IDataProvider<T>, ISortStateLocator<S>
 {
 
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/0f16b908/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/tree/DefaultTableTree.java
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/tree/DefaultTableTree.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/tree/DefaultTableTree.java
index 0b5611c..42299b1 100644
--- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/tree/DefaultTableTree.java
+++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/tree/DefaultTableTree.java
@@ -37,9 +37,11 @@ import org.apache.wicket.model.IModel;
  * 
  * @param <T>
  *            The node type
+ * @param <S>
+ *     the type of the sorting parameter
  * @author svenmeier
  */
-public class DefaultTableTree<T> extends TableTree<T>
+public class DefaultTableTree<T, S> extends TableTree<T>
 {
 
 	private static final long serialVersionUID = 1L;
@@ -56,7 +58,7 @@ public class DefaultTableTree<T> extends TableTree<T>
 	 * @param rowsPerPage
 	 *            rows to show on each page
 	 */
-	public DefaultTableTree(String id, List<IColumn<T>> columns, ISortableTreeProvider<T> provider,
+	public DefaultTableTree(String id, List<IColumn<T>> columns, ISortableTreeProvider<T, S> provider,
 		int rowsPerPage)
 	{
 		this(id, columns, provider, rowsPerPage, null);
@@ -76,7 +78,7 @@ public class DefaultTableTree<T> extends TableTree<T>
 	 * @param state
 	 *            expansion state
 	 */
-	public DefaultTableTree(String id, List<IColumn<T>> columns, ISortableTreeProvider<T> provider,
+	public DefaultTableTree(String id, List<IColumn<T>> columns, ISortableTreeProvider<T, S> provider,
 		int rowsPerPage, IModel<Set<T>> state)
 	{
 		super(id, columns, provider, rowsPerPage, state);

http://git-wip-us.apache.org/repos/asf/wicket/blob/0f16b908/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/tree/ISortableTreeProvider.java
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/tree/ISortableTreeProvider.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/tree/ISortableTreeProvider.java
index e0b5095..5a45a01 100644
--- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/tree/ISortableTreeProvider.java
+++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/tree/ISortableTreeProvider.java
@@ -25,6 +25,6 @@ import org.apache.wicket.extensions.markup.html.repeater.data.sort.ISortStateLoc
  * @param <T>
  *            node type
  */
-public interface ISortableTreeProvider<T> extends ITreeProvider<T>, ISortStateLocator
+public interface ISortableTreeProvider<T, S> extends ITreeProvider<T>, ISortStateLocator<S>
 {
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/0f16b908/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/util/SortableDataProvider.java
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/util/SortableDataProvider.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/util/SortableDataProvider.java
index 7a21507..5d83638 100644
--- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/util/SortableDataProvider.java
+++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/util/SortableDataProvider.java
@@ -30,19 +30,21 @@ import org.apache.wicket.extensions.markup.html.repeater.data.table.ISortableDat
  * 
  * @author Igor Vaynberg (ivaynberg at apache dot org)
  * @param <T>
+ * @param <S>
+ *     the type of the sorting parameter
  */
-public abstract class SortableDataProvider<T> implements ISortableDataProvider<T>
+public abstract class SortableDataProvider<T, S> implements ISortableDataProvider<T, S>
 {
 	/**
 	 * 
 	 */
 	private static final long serialVersionUID = 1L;
-	private SingleSortState state = new SingleSortState();
+	private SingleSortState<S> state = new SingleSortState<S>();
 
 	/**
 	 * @see ISortableDataProvider#getSortState()
 	 */
-	public final ISortState getSortState()
+	public final ISortState<S> getSortState()
 	{
 		return state;
 	}
@@ -52,7 +54,7 @@ public abstract class SortableDataProvider<T> implements ISortableDataProvider<T
 	 * 
 	 * @return current sort state
 	 */
-	public SortParam getSort()
+	public SortParam<S> getSort()
 	{
 		return state.getSort();
 	}
@@ -63,7 +65,7 @@ public abstract class SortableDataProvider<T> implements ISortableDataProvider<T
 	 * @param param
 	 *            parameter containing new sorting information
 	 */
-	public void setSort(final SortParam param)
+	public void setSort(final SortParam<S> param)
 	{
 		state.setSort(param);
 	}
@@ -76,7 +78,7 @@ public abstract class SortableDataProvider<T> implements ISortableDataProvider<T
 	 * @param order
 	 *            sort order
 	 */
-	public void setSort(final String property, final SortOrder order)
+	public void setSort(final S property, final SortOrder order)
 	{
 		state.setPropertySortOrder(property, order);
 	}

http://git-wip-us.apache.org/repos/asf/wicket/blob/0f16b908/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/util/SortableTreeProvider.java
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/util/SortableTreeProvider.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/util/SortableTreeProvider.java
index 0093dd6..94145c0 100644
--- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/util/SortableTreeProvider.java
+++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/util/SortableTreeProvider.java
@@ -27,27 +27,27 @@ import org.apache.wicket.extensions.markup.html.repeater.tree.ISortableTreeProvi
  * @author svenmeier
  * @param <T>
  */
-public abstract class SortableTreeProvider<T> implements ISortableTreeProvider<T>
+public abstract class SortableTreeProvider<T, S> implements ISortableTreeProvider<T, S>
 {
 	private static final long serialVersionUID = 1L;
 
-	private SingleSortState<String> state = new SingleSortState<String>();
+	private SingleSortState<S> state = new SingleSortState<S>();
 
 	/**
 	 * @see ISortableDataProvider#getSortState()
 	 */
 	@SuppressWarnings("unchecked")
-	public final <S> ISortState<S> getSortState()
+	public final ISortState<S> getSortState()
 	{
 		return (ISortState<S>)state;
 	}
 
 	/**
-	 * @see ISortableDataProvider#setSortState(org.apache.wicket.extensions.markup.html.repeater.data.sort.ISortState)
+	 * @see org.apache.wicket.extensions.markup.html.repeater.data.table.ISortableDataProvider#getSortState()
 	 * @param state
 	 */
 	@SuppressWarnings("unchecked")
-	public final void setSortState(ISortState<?> state)
+	public final void setSortState(ISortState<S> state)
 	{
 		if (!(state instanceof SingleSortState))
 		{
@@ -55,7 +55,7 @@ public abstract class SortableTreeProvider<T> implements ISortableTreeProvider<T
 				"argument [state] must be an instance of SingleSortState, but it is [" +
 					state.getClass().getName() + "]:[" + state.toString() + "]");
 		}
-		this.state = (SingleSortState<String>)state;
+		this.state = (SingleSortState<S>)state;
 	}
 
 	/**
@@ -63,7 +63,7 @@ public abstract class SortableTreeProvider<T> implements ISortableTreeProvider<T
 	 * 
 	 * @return current sort state
 	 */
-	public SortParam<String> getSort()
+	public SortParam<S> getSort()
 	{
 		return state.getSort();
 	}
@@ -74,7 +74,7 @@ public abstract class SortableTreeProvider<T> implements ISortableTreeProvider<T
 	 * @param param
 	 *            parameter containing new sorting information
 	 */
-	public void setSort(SortParam<String> param)
+	public void setSort(SortParam<S> param)
 	{
 		state.setSort(param);
 	}
@@ -87,14 +87,15 @@ public abstract class SortableTreeProvider<T> implements ISortableTreeProvider<T
 	 * @param ascending
 	 *            sort direction
 	 */
-	public void setSort(String property, boolean ascending)
+	public void setSort(S property, boolean ascending)
 	{
-		setSort(new SortParam<String>(property, ascending));
+		setSort(new SortParam<S>(property, ascending));
 	}
 
 	/**
 	 * @see ISortableDataProvider#detach()
 	 */
+	@Override
 	public void detach()
 	{
 	}

http://git-wip-us.apache.org/repos/asf/wicket/blob/0f16b908/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/repeater/data/table/SortableContactDataProvider.java
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/repeater/data/table/SortableContactDataProvider.java b/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/repeater/data/table/SortableContactDataProvider.java
index e7c313d..07a200c 100644
--- a/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/repeater/data/table/SortableContactDataProvider.java
+++ b/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/repeater/data/table/SortableContactDataProvider.java
@@ -29,7 +29,7 @@ import org.apache.wicket.model.IModel;
  * @author igor
  * 
  */
-public class SortableContactDataProvider extends SortableDataProvider<Contact>
+public class SortableContactDataProvider extends SortableDataProvider<Contact, String>
 {
 	private static final long serialVersionUID = 1L;
 
@@ -48,7 +48,7 @@ public class SortableContactDataProvider extends SortableDataProvider<Contact>
 	}
 
 	/**
-	 * @see org.apache.wicket.markup.repeater.data.IDataProvider#iterator(int, int)
+	 * @see org.apache.wicket.markup.repeater.data.IDataProvider#iterator(long, long)
 	 */
 	public Iterator<Contact> iterator(final long first, final long count)
 	{