You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pivot.apache.org by rw...@apache.org on 2013/01/03 23:37:19 UTC
svn commit: r1428650 - in /pivot/trunk:
core/src/org/apache/pivot/beans/BXMLSerializer.java
wtk/src/org/apache/pivot/wtk/Spinner.java
Author: rwhitcomb
Date: Thu Jan 3 22:37:19 2013
New Revision: 1428650
URL: http://svn.apache.org/viewvc?rev=1428650&view=rev
Log:
PIVOT-887: Make changes to Spinner and BXMLSerializer such that using the DefaultProperty of Spinner (which is "spinnerData") in a BXML file will work correctly.
Normally if the original value is a Sequence (as it always will be for the spinner data) the child is added to the sequence. But using an ImmutableList enables BXMLSerializer to catch the UnsupportedOperationException and do a beanAdapter.put instead (which results in a call to "setSpinnerData"), which is the correct thing to do.
Modified:
pivot/trunk/core/src/org/apache/pivot/beans/BXMLSerializer.java
pivot/trunk/wtk/src/org/apache/pivot/wtk/Spinner.java
Modified: pivot/trunk/core/src/org/apache/pivot/beans/BXMLSerializer.java
URL: http://svn.apache.org/viewvc/pivot/trunk/core/src/org/apache/pivot/beans/BXMLSerializer.java?rev=1428650&r1=1428649&r2=1428650&view=diff
==============================================================================
--- pivot/trunk/core/src/org/apache/pivot/beans/BXMLSerializer.java (original)
+++ pivot/trunk/core/src/org/apache/pivot/beans/BXMLSerializer.java Thu Jan 3 22:37:19 2013
@@ -1210,7 +1210,11 @@ public class BXMLSerializer implements S
if (defaultPropertyValue instanceof Sequence<?>) {
Sequence<Object> sequence = (Sequence<Object>)defaultPropertyValue;
- sequence.add(element.value);
+ try {
+ sequence.add(element.value);
+ } catch (UnsupportedOperationException uoe) {
+ beanAdapter.put(defaultPropertyName, element.value);
+ }
} else {
beanAdapter.put(defaultPropertyName, element.value);
}
Modified: pivot/trunk/wtk/src/org/apache/pivot/wtk/Spinner.java
URL: http://svn.apache.org/viewvc/pivot/trunk/wtk/src/org/apache/pivot/wtk/Spinner.java?rev=1428650&r1=1428649&r2=1428650&view=diff
==============================================================================
--- pivot/trunk/wtk/src/org/apache/pivot/wtk/Spinner.java (original)
+++ pivot/trunk/wtk/src/org/apache/pivot/wtk/Spinner.java Thu Jan 3 22:37:19 2013
@@ -20,6 +20,7 @@ import java.util.Comparator;
import org.apache.pivot.beans.DefaultProperty;
import org.apache.pivot.collections.ArrayList;
+import org.apache.pivot.collections.immutable.ImmutableList;
import org.apache.pivot.collections.List;
import org.apache.pivot.collections.ListListener;
import org.apache.pivot.collections.Sequence;
@@ -354,9 +355,14 @@ public class Spinner extends Container {
/**
* Creates a spinner populated with an empty array list.
+ * <p> The default contents is an {@link ImmutableList} so that
+ * if the default property (which is "spinnerData") is invoked in a BXML
+ * file, <code>BXMLSerializer</code> trying to add to this immutable sequence
+ * will catch an exception and will do a {@link #setSpinnerData setSpinnerData(List<?>)}
+ * instead.
*/
public Spinner() {
- this(new ArrayList<Object>());
+ this(new ImmutableList<Object>(new ArrayList<Object>()));
}
/**