[jboss-cvs] jboss-seam/ui/src/main/java/org/jboss/seam/ui/component ...
Peter Muir
peter at bleepbleep.org.uk
Fri Jan 4 13:58:47 EST 2008
User: pmuir
Date: 08/01/04 13:58:47
Modified: ui/src/main/java/org/jboss/seam/ui/component
UISelectItems.java
Log:
Another refactor
Revision Changes Path
1.11 +36 -39 jboss-seam/ui/src/main/java/org/jboss/seam/ui/component/UISelectItems.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: UISelectItems.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/ui/src/main/java/org/jboss/seam/ui/component/UISelectItems.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -b -r1.10 -r1.11
--- UISelectItems.java 4 Jan 2008 18:23:19 -0000 1.10
+++ UISelectItems.java 4 Jan 2008 18:58:47 -0000 1.11
@@ -25,7 +25,7 @@
*/
public abstract class UISelectItems extends javax.faces.component.UISelectItems {
- private Object value;
+ private List<javax.faces.model.SelectItem> selectItems;
private Object originalValue;
private class NullableSelectItem extends javax.faces.model.SelectItem
@@ -145,64 +145,42 @@
@Override
public Object getValue()
{
- if (value == null || originalValue == null || !originalValue.equals(super.getValue()))
+ if (selectItems == null || originalValue == null || !originalValue.equals(super.getValue()))
{
originalValue = super.getValue();
-
+ selectItems = new ArrayList<javax.faces.model.SelectItem>();
+ javax.faces.model.SelectItem noSelectionLabel = noSelectionLabel();
+ if (noSelectionLabel != null)
+ {
+ selectItems.add(noSelectionLabel);
+ }
if (originalValue instanceof Iterable)
{
- value = asSelectItems((Iterable) originalValue);
+ selectItems.addAll(asSelectItems((Iterable) originalValue));
}
else if (originalValue instanceof DataModel && ((DataModel) originalValue).getWrappedData() instanceof Iterable)
{
- value = asSelectItems((Iterable) ((DataModel) originalValue).getWrappedData());
+ selectItems.addAll(asSelectItems((Iterable) ((DataModel) originalValue).getWrappedData()));
}
else if (originalValue instanceof Query)
{
- value = asSelectItems(((Query) originalValue).getResultList());
+ selectItems.addAll(asSelectItems(((Query) originalValue).getResultList()));
}
else if (originalValue != null && originalValue.getClass().isArray())
{
- if (originalValue.getClass().getComponentType().isPrimitive())
- {
- List list = new ArrayList();
- for (int i = 0; i < Array.getLength(originalValue); i++)
- {
- list.add(Array.get(originalValue, i));
- }
- value = asSelectItems(list);
- }
- else
- {
- value = asSelectItems(Arrays.asList((Object[]) originalValue));
- }
- }
- else
- {
- javax.faces.model.SelectItem noSelectionLabel = noSelectionLabel();
- if (noSelectionLabel != null)
- {
- List<javax.faces.model.SelectItem> selectItems = new ArrayList<javax.faces.model.SelectItem>();
- selectItems.add(noSelectionLabel);
- value = selectItems;
+ selectItems.addAll(asSelectItems(arrayAsList(originalValue)));
}
- else
+ else if (selectItems.size() == 0)
{
- value = originalValue;
- }
+ return originalValue;
}
}
- return value;
+ return selectItems;
}
private List<javax.faces.model.SelectItem> asSelectItems(Iterable iterable)
{
- final List<javax.faces.model.SelectItem> selectItems = new ArrayList<javax.faces.model.SelectItem>();
- javax.faces.model.SelectItem noSelectionLabel = noSelectionLabel();
- if (noSelectionLabel != null)
- {
- selectItems.add(noSelectionLabel);
- }
+ List<javax.faces.model.SelectItem> selectItems = new ArrayList<javax.faces.model.SelectItem>();
for (final Object o : iterable)
{
selectItems.add(new ContextualSelectItem(o)
@@ -233,6 +211,8 @@
return selectItems;
}
+
+
private javax.faces.model.SelectItem noSelectionLabel()
{
if (isShowNoSelectionLabel())
@@ -302,4 +282,21 @@
}
}
+ private static List arrayAsList(Object array)
+ {
+ if (array.getClass().getComponentType().isPrimitive())
+ {
+ List list = new ArrayList();
+ for (int i = 0; i < Array.getLength(array); i++)
+ {
+ list.add(Array.get(array, i));
+ }
+ return list;
+ }
+ else
+ {
+ return Arrays.asList((Object[]) array);
+ }
+ }
+
}
More information about the jboss-cvs-commits
mailing list