[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