[jboss-cvs] jboss-seam/src/ui/org/jboss/seam/ui ...
Peter Muir
peter at bleepbleep.org.uk
Sat Feb 24 19:42:34 EST 2007
User: pmuir
Date: 07/02/24 19:42:34
Modified: src/ui/org/jboss/seam/ui UISelectItems.java
Log:
JBSEAM-880
Revision Changes Path
1.10 +38 -51 jboss-seam/src/ui/org/jboss/seam/ui/UISelectItems.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: UISelectItems.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/ui/org/jboss/seam/ui/UISelectItems.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -b -r1.9 -r1.10
--- UISelectItems.java 21 Feb 2007 19:03:06 -0000 1.9
+++ UISelectItems.java 25 Feb 2007 00:42:34 -0000 1.10
@@ -183,17 +183,17 @@
@Override
public Object getValue()
{
- return createSelectItems(super.getValue());
- }
+ Object value = super.getValue();
- private Object createSelectItems(Object value)
+ if (value instanceof Iterable)
{
- Iterable<?> iterable = null;
- if (value instanceof DataModel)
+ return asSelectItems((Iterable) value);
+ }
+ else if (value instanceof DataModel && ((DataModel) value).getWrappedData() instanceof Iterable)
{
- value = ((DataModel) value).getWrappedData();
+ return asSelectItems((Iterable) ((DataModel) value).getWrappedData());
}
- if (value != null && value.getClass().isArray())
+ else if (value != null && value.getClass().isArray())
{
if (value.getClass().getComponentType().isPrimitive())
{
@@ -202,75 +202,62 @@
{
list.add(Array.get(value, i));
}
- iterable = list;
+ return asSelectItems(list);
}
else
{
- iterable = Arrays.asList((Object[]) value);
+ return asSelectItems(Arrays.asList((Object[]) value));
}
}
- else if (value instanceof Iterable)
+ else
{
- iterable = (Iterable) value;
- }
- if (iterable != null)
+ javax.faces.model.SelectItem noSelectionLabel = noSelectionLabel();
+ if (noSelectionLabel != null)
{
List<javax.faces.model.SelectItem> selectItems = new ArrayList<javax.faces.model.SelectItem>();
- addNoSelectionLabel(selectItems, iterable);
- for (Object o : iterable)
- {
- initVar(o);
- selectItems.add(new javax.faces.model.SelectItem(o, getLabel(), "", isDisabled()));
- destroyVar();
- }
+ selectItems.add(noSelectionLabel);
return selectItems;
}
else
{
- ValueBinding vb = this.getValueBinding("value");
- if (vb != null)
- {
- throw new IllegalArgumentException(
- "selectItems' value=\""
- + vb.getExpressionString()
- + "\" must implement java.lang.Iteratable, be an array or a JSF DataModel but it is "
- + iterable + " (" + vb.getType(getFacesContext()) + ")");
- }
- else
- {
- throw new IllegalArgumentException(
- "selectItems' value must implement java.lang.Iteratable, be an array or a JSF DataModel but is "
- + iterable);
+ return null;
}
-
}
}
- private boolean addNoSelectionLabel(List<javax.faces.model.SelectItem> selectItems,
- Object originalValue)
+ private List<javax.faces.model.SelectItem> asSelectItems(Iterable iterable)
{
- boolean add = true;
- if (isHideNoSelectionLabel() && getParentValue() != null)
+ List<javax.faces.model.SelectItem> selectItems = new ArrayList<javax.faces.model.SelectItem>();
+ javax.faces.model.SelectItem noSelectionLabel = noSelectionLabel();
+ if (noSelectionLabel != null)
{
- add = false;
+ selectItems.add(noSelectionLabel);
}
- if (add && getNoSelectionLabel() != null)
+ for (Object o : iterable)
+ {
+ initVar(o);
+ selectItems.add(new javax.faces.model.SelectItem(o, getLabel(), "", isDisabled()));
+ destroyVar();
+ }
+ return selectItems;
+ }
+
+ private javax.faces.model.SelectItem noSelectionLabel()
+ {
+ if (getNoSelectionLabel() != null && !(isHideNoSelectionLabel() && getParentValue() != null))
{
NullableSelectItem s = new NullableSelectItem(NO_SELECTION_VALUE, getNoSelectionLabel());
- selectItems.add(s);
ConverterChain converterChain = new ConverterChain(this.getParent());
-
-
Converter noSelectionConverter = new NoSelectionConverter();
// Make sure that the converter is only added once
if (!converterChain.containsConverterType(noSelectionConverter)) {
converterChain.addConverterToChain(noSelectionConverter, ConverterChain.CHAIN_START);
}
- return true;
+ return s;
}
else
{
- return false;
+ return null;
}
}
More information about the jboss-cvs-commits
mailing list