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 2011/11/18 11:51:00 UTC
svn commit: r1203581 - in /wicket/trunk:
wicket-examples/src/main/java/org/apache/wicket/examples/repeater/
wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort/
wicket-extensions/src/main/java/org/apache/wicket/e...
Author: mgrigorov
Date: Fri Nov 18 10:50:59 2011
New Revision: 1203581
URL: http://svn.apache.org/viewvc?rev=1203581&view=rev
Log:
WICKET-4035 Allow to set the property type in ISortState
Modified:
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/repeater/ContactDataProvider.java
wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/repeater/FormPage.java
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort/ISortState.java
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort/ISortStateLocator.java
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort/OrderByLink.java
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/util/SingleSortState.java
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/util/SortParam.java
wicket/trunk/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/repeater/data/table/ContactsDatabase.java
Modified: wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/repeater/ContactDataProvider.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/repeater/ContactDataProvider.java?rev=1203581&r1=1203580&r2=1203581&view=diff
==============================================================================
--- wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/repeater/ContactDataProvider.java (original)
+++ wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/repeater/ContactDataProvider.java Fri Nov 18 10:50:59 2011
@@ -44,7 +44,8 @@ public class ContactDataProvider impleme
*/
public Iterator<Contact> iterator(long first, long count)
{
- return getContactsDB().find(first, count, new SortParam("firstName", true)).iterator();
+ return getContactsDB().find(first, count, new SortParam<String>("firstName", true))
+ .iterator();
}
/**
Modified: wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/repeater/FormPage.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/repeater/FormPage.java?rev=1203581&r1=1203580&r2=1203581&view=diff
==============================================================================
--- wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/repeater/FormPage.java (original)
+++ wicket/trunk/wicket-examples/src/main/java/org/apache/wicket/examples/repeater/FormPage.java Fri Nov 18 10:50:59 2011
@@ -57,8 +57,10 @@ public class FormPage extends BasePage
protected Iterator<IModel<Contact>> getItemModels()
{
// for simplicity we only show the first 10 contacts
- SortParam sort = new SortParam("firstName", true);
- Iterator<Contact> contacts = DatabaseLocator.getDatabase().find(0, 10, sort).iterator();
+ SortParam<String> sort = new SortParam<String>("firstName", true);
+ Iterator<Contact> contacts = DatabaseLocator.getDatabase()
+ .find(0, 10, sort)
+ .iterator();
// the iterator returns contact objects, but we need it to
// return models, we use this handy adapter class to perform
Modified: wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort/ISortState.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort/ISortState.java?rev=1203581&r1=1203580&r2=1203581&view=diff
==============================================================================
--- wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort/ISortState.java (original)
+++ wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort/ISortState.java Fri Nov 18 10:50:59 2011
@@ -22,9 +22,11 @@ import org.apache.wicket.IClusterable;
* Interface used by OrderByLink to interact with any object that keeps track of sorting state
*
* @author Igor Vaynberg (ivaynberg)
+ * @param <T>
+ * the type of the sort property
*
*/
-public interface ISortState extends IClusterable
+public interface ISortState<T> extends IClusterable
{
/**
* Sets sort order of the property
@@ -34,7 +36,7 @@ public interface ISortState extends IClu
* @param order
* sort order
*/
- public void setPropertySortOrder(String property, SortOrder order);
+ public void setPropertySortOrder(T property, SortOrder order);
/**
* Gets the sort order of a property
@@ -43,6 +45,6 @@ public interface ISortState extends IClu
* sort property to be checked
* @return sort order
*/
- public SortOrder getPropertySortOrder(String property);
+ public SortOrder getPropertySortOrder(T property);
}
Modified: wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort/ISortStateLocator.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort/ISortStateLocator.java?rev=1203581&r1=1203580&r2=1203581&view=diff
==============================================================================
--- wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort/ISortStateLocator.java (original)
+++ wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort/ISortStateLocator.java Fri Nov 18 10:50:59 2011
@@ -31,5 +31,5 @@ public interface ISortStateLocator exten
/**
* @return ISortState object
*/
- ISortState getSortState();
+ <T> ISortState<T> getSortState();
}
Modified: wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort/OrderByLink.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort/OrderByLink.java?rev=1203581&r1=1203580&r2=1203581&view=diff
==============================================================================
--- wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort/OrderByLink.java (original)
+++ wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/data/sort/OrderByLink.java Fri Nov 18 10:50:59 2011
@@ -21,6 +21,7 @@ import org.apache.wicket.IClusterable;
import org.apache.wicket.behavior.Behavior;
import org.apache.wicket.markup.ComponentTag;
import org.apache.wicket.markup.html.link.Link;
+import org.apache.wicket.util.lang.Args;
import org.apache.wicket.util.string.Strings;
/**
@@ -77,19 +78,12 @@ public class OrderByLink extends Link<Vo
*
*/
public OrderByLink(final String id, final String property,
- final ISortStateLocator stateLocator, final ICssProvider cssProvider)
+ final ISortStateLocator stateLocator, final ICssProvider<String> cssProvider)
{
super(id);
- if (cssProvider == null)
- {
- throw new IllegalArgumentException("argument [cssProvider] cannot be null");
- }
-
- if (property == null)
- {
- throw new IllegalArgumentException("argument [sortProperty] cannot be null");
- }
+ Args.notNull(cssProvider, "cssProvider");
+ Args.notNull(property, "property");
this.property = property;
this.stateLocator = stateLocator;
@@ -127,7 +121,7 @@ public class OrderByLink extends Link<Vo
addStateChange();
}
- ISortState state = stateLocator.getSortState();
+ ISortState<String> state = stateLocator.getSortState();
// get current sort order
SortOrder order = state.getPropertySortOrder(property);
@@ -168,7 +162,7 @@ public class OrderByLink extends Link<Vo
{
private static final long serialVersionUID = 1L;
private final OrderByLink link;
- private final ICssProvider provider;
+ private final ICssProvider<String> provider;
/**
* @param link
@@ -176,7 +170,7 @@ public class OrderByLink extends Link<Vo
* @param provider
* implementation of ICssProvider
*/
- public CssModifier(final OrderByLink link, final ICssProvider provider)
+ public CssModifier(final OrderByLink link, final ICssProvider<String> provider)
{
this.link = link;
this.provider = provider;
@@ -187,7 +181,7 @@ public class OrderByLink extends Link<Vo
{
super.onComponentTag(component, tag);
- final ISortState sortState = link.stateLocator.getSortState();
+ final ISortState<String> sortState = link.stateLocator.getSortState();
String cssClass = provider.getClassAttributeValue(sortState, link.property);
if (!Strings.isEmpty(cssClass))
{
@@ -203,8 +197,10 @@ public class OrderByLink extends Link<Vo
* value is null class attribute will not be added
*
* @author igor
+ * @param <T>
+ * the type of the sort property
*/
- public static interface ICssProvider extends IClusterable
+ public static interface ICssProvider<T> extends IClusterable
{
/**
* @param state
@@ -214,7 +210,7 @@ public class OrderByLink extends Link<Vo
* @return the value of the "class" attribute for the given sort state/sort property
* combination
*/
- public String getClassAttributeValue(ISortState state, String property);
+ public String getClassAttributeValue(ISortState<T> state, String property);
}
@@ -224,7 +220,7 @@ public class OrderByLink extends Link<Vo
* @author Igor Vaynberg (ivaynberg)
*
*/
- public static class CssProvider implements ICssProvider
+ public static class CssProvider implements ICssProvider<String>
{
private static final long serialVersionUID = 1L;
@@ -253,7 +249,7 @@ public class OrderByLink extends Link<Vo
* @see org.apache.wicket.extensions.markup.html.repeater.data.sort.OrderByLink.ICssProvider#getClassAttributeValue(org.apache.wicket.extensions.markup.html.repeater.data.sort.ISortState,
* java.lang.String)
*/
- public String getClassAttributeValue(final ISortState state, final String property)
+ public String getClassAttributeValue(final ISortState<String> state, final String property)
{
SortOrder dir = state.getPropertySortOrder(property);
@@ -282,12 +278,12 @@ public class OrderByLink extends Link<Vo
{
private static final long serialVersionUID = 1L;
- private static ICssProvider instance = new VoidCssProvider();
+ private static ICssProvider<String> instance = new VoidCssProvider();
/**
* @return singleton instance
*/
- public static ICssProvider getInstance()
+ public static ICssProvider<String> getInstance()
{
return instance;
}
Modified: wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/util/SingleSortState.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/util/SingleSortState.java?rev=1203581&r1=1203580&r2=1203581&view=diff
==============================================================================
--- wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/util/SingleSortState.java (original)
+++ wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/util/SingleSortState.java Fri Nov 18 10:50:59 2011
@@ -25,19 +25,21 @@ import org.apache.wicket.util.lang.Args;
* Implementation of ISortState that can keep track of sort information for a single property.
*
* @author Igor Vaynberg (ivaynberg)
+ * @param <T>
+ * the type of the sort property
*
*/
-public class SingleSortState implements ISortState, IClusterable
+public class SingleSortState<T> implements ISortState<T>, IClusterable
{
private static final long serialVersionUID = 1L;
- SortParam param;
+ SortParam<T> param;
/**
* @see org.apache.wicket.extensions.markup.html.repeater.data.sort.ISortState#setPropertySortOrder(String,
* org.apache.wicket.extensions.markup.html.repeater.data.sort.SortOrder)
*/
- public void setPropertySortOrder(final String property, final SortOrder order)
+ public void setPropertySortOrder(final T property, final SortOrder order)
{
Args.notNull(property, "property");
Args.notNull(order, "order");
@@ -51,14 +53,14 @@ public class SingleSortState implements
}
else
{
- param = new SortParam(property, order == SortOrder.ASCENDING);
+ param = new SortParam<T>(property, order == SortOrder.ASCENDING);
}
}
/**
* @see org.apache.wicket.extensions.markup.html.repeater.data.sort.ISortState#getPropertySortOrder(java.lang.String)
*/
- public SortOrder getPropertySortOrder(final String property)
+ public SortOrder getPropertySortOrder(final T property)
{
Args.notNull(property, "property");
@@ -72,7 +74,7 @@ public class SingleSortState implements
/**
* @return current sort state
*/
- public SortParam getSort()
+ public SortParam<T> getSort()
{
return param;
}
@@ -83,7 +85,7 @@ public class SingleSortState implements
* @param param
* parameter containing new sorting information
*/
- public void setSort(final SortParam param)
+ public void setSort(final SortParam<T> param)
{
this.param = param;
}
Modified: wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/util/SortParam.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/util/SortParam.java?rev=1203581&r1=1203580&r2=1203581&view=diff
==============================================================================
--- wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/util/SortParam.java (original)
+++ wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/repeater/util/SortParam.java Fri Nov 18 10:50:59 2011
@@ -23,12 +23,14 @@ import org.apache.wicket.util.lang.Args;
* Represents sorting information of a property
*
* @author Igor Vaynberg ( ivaynberg )
+ * @param <T>
+ * the type of the sort property
*/
-public class SortParam implements IClusterable
+public class SortParam<T> implements IClusterable
{
private static final long serialVersionUID = 1L;
- private final String property;
+ private final T property;
private final boolean ascending;
/**
@@ -38,7 +40,7 @@ public class SortParam implements IClust
* <code>true<code> if sort order is ascending, <code>false</code> if sort order is
* descending
*/
- public SortParam(final String property, final boolean ascending)
+ public SortParam(final T property, final boolean ascending)
{
Args.notNull(property, "property");
this.property = property;
@@ -48,7 +50,7 @@ public class SortParam implements IClust
/**
* @return sort property
*/
- public String getProperty()
+ public T getProperty()
{
return property;
}
@@ -76,7 +78,8 @@ public class SortParam implements IClust
return false;
}
- SortParam sortParam = (SortParam)o;
+ @SuppressWarnings("unchecked")
+ SortParam<T> sortParam = (SortParam<T>)o;
return (ascending == sortParam.ascending) && property.equals(sortParam.property);
}
Modified: wicket/trunk/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/repeater/data/table/ContactsDatabase.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/repeater/data/table/ContactsDatabase.java?rev=1203581&r1=1203580&r2=1203581&view=diff
==============================================================================
--- wicket/trunk/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/repeater/data/table/ContactsDatabase.java (original)
+++ wicket/trunk/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/repeater/data/table/ContactsDatabase.java Fri Nov 18 10:50:59 2011
@@ -87,12 +87,12 @@ public class ContactsDatabase
* @param sort
* @return list of contacts
*/
- public List<Contact> find(final long first, final long count, final SortParam sort)
+ public List<Contact> find(final long first, final long count, final SortParam<String> sort)
{
return getIndex(sort).subList((int)first, (int)(first + count));
}
- protected List<Contact> getIndex(final SortParam sort)
+ protected List<Contact> getIndex(final SortParam<String> sort)
{
if (sort == null)
{