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)
 		{