You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by jd...@apache.org on 2011/06/23 19:49:49 UTC

svn commit: r1139016 - /wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/html/form/CheckGroup.java

Author: jdonnerstag
Date: Thu Jun 23 17:49:48 2011
New Revision: 1139016

URL: http://svn.apache.org/viewvc?rev=1139016&view=rev
Log:
fixed: CheckGroup's model update should be aligned with ListMultipleChoice
Issue: WICKET-3785

Modified:
    wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/html/form/CheckGroup.java

Modified: wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/html/form/CheckGroup.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/html/form/CheckGroup.java?rev=1139016&r1=1139015&r2=1139016&view=diff
==============================================================================
--- wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/html/form/CheckGroup.java (original)
+++ wicket/trunk/wicket-core/src/main/java/org/apache/wicket/markup/html/form/CheckGroup.java Thu Jun 23 17:49:48 2011
@@ -16,7 +16,6 @@
  */
 package org.apache.wicket.markup.html.form;
 
-import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 
@@ -24,10 +23,14 @@ import org.apache.wicket.WicketRuntimeEx
 import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.markup.html.WebMarkupContainer;
 import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
 import org.apache.wicket.model.util.CollectionModel;
 import org.apache.wicket.util.convert.ConversionException;
+import org.apache.wicket.util.lang.Generics;
 import org.apache.wicket.util.string.Strings;
 import org.apache.wicket.util.visit.IVisit;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 
 /**
@@ -59,6 +62,8 @@ public class CheckGroup<T> extends FormC
 {
 	private static final long serialVersionUID = 1L;
 
+	private static final Logger log = LoggerFactory.getLogger(CheckGroup.class);
+
 	/**
 	 * Constructor that will create a default model collection
 	 * 
@@ -97,13 +102,10 @@ public class CheckGroup<T> extends FormC
 		setRenderBodyOnly(true);
 	}
 
-	/**
-	 * @see FormComponent#convertValue(String[])
-	 */
 	@Override
 	protected Collection<T> convertValue(String[] values) throws ConversionException
 	{
-		List<T> collection = new ArrayList<T>();
+		List<T> collection = Generics.newArrayList();
 
 		/*
 		 * if the input is null we do not need to do anything since the model collection has already
@@ -150,7 +152,14 @@ public class CheckGroup<T> extends FormC
 	}
 
 	/**
+	 * If the model object exists, it is assumed to be a Collection, and it is modified in-place.
+	 * Then {@link Model#setObject(Object)} is called with the same instance: it allows the Model to
+	 * be notified of changes even when {@link Model#getObject()} returns a different
+	 * {@link Collection} at every invocation.
+	 * 
 	 * @see FormComponent#updateModel()
+	 * @throws UnsupportedOperationException
+	 *             if the model object Collection cannot be modified
 	 */
 	@Override
 	public void updateModel()
@@ -167,16 +176,26 @@ public class CheckGroup<T> extends FormC
 			collection.clear();
 			collection.addAll(getConvertedInput());
 			modelChanged();
+
+			// call model.setObject()
+			try
+			{
+				getModel().setObject(collection);
+			}
+			catch (Exception e)
+			{
+				// ignore this exception because it could be that there
+				// is not setter for this collection.
+				log.info("no setter for the property attached to " + this);
+			}
 		}
 	}
 
-	/**
-	 * @see FormComponent#onComponentTag(ComponentTag)
-	 */
 	@Override
 	protected void onComponentTag(ComponentTag tag)
 	{
 		super.onComponentTag(tag);
+
 		// No longer applicable, breaks XHTML validation.
 		tag.remove("disabled");
 		tag.remove("name");
@@ -219,9 +238,6 @@ public class CheckGroup<T> extends FormC
 		return false;
 	}
 
-	/**
-	 * @see org.apache.wicket.MarkupContainer#getStatelessHint()
-	 */
 	@Override
 	protected boolean getStatelessHint()
 	{
@@ -231,5 +247,4 @@ public class CheckGroup<T> extends FormC
 		}
 		return super.getStatelessHint();
 	}
-
 }