Changeset 30187

Show
Ignore:
Timestamp:
02/14/08 19:36:11 (9 months ago)
Author:
atchertchian
Message:

NXP-2079: avoid advanced search page crash by handling lists in chain select (fwd r30186)

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • org.nuxeo.ecm.platform/trunk/nuxeo-platform-ui-web/src/main/java/org/nuxeo/ecm/platform/ui/web/directory/ChainSelect.java

    r29052 r30187  
    216216                if (!multiParentSelect) { 
    217217                    // remove the "" entry from the submitted value 
    218                     List<String> list = new ArrayList<String>(Arrays.asList(value)); 
     218                    List<String> list = new ArrayList<String>( 
     219                            Arrays.asList(value)); 
    219220                    list.remove(""); 
    220221                    value = list.toArray(new String[list.size()]); 
     
    375376    public void rebuildOptions() { 
    376377        /* 
    377         for (int i = 0; i < size; i++) { 
    378             if (optionList[i] != null) { 
    379                 continue; 
    380             } 
    381             if (i == 0 || (selections.length != 0 && selections[0].getColumnValue(i - 1) != null)) { 
    382                 rebuildOptions(i); 
    383             } 
    384         } 
    385         */ 
     378         * for (int i = 0; i < size; i++) { if (optionList[i] != null) { 
     379         * continue; } if (i == 0 || (selections.length != 0 && 
     380         * selections[0].getColumnValue(i - 1) != null)) { rebuildOptions(i); } } 
     381         */ 
    386382    } 
    387383 
     
    522518                if (value instanceof String[]) { 
    523519                    rows = (String[]) value; 
    524                 } else
     520                } else if (value instanceof Object[])
    525521                    Object[] values = (Object[]) value; 
    526522                    rows = new String[values.length]; 
     
    528524                        rows[i] = String.valueOf(values[i]); 
    529525                    } 
     526                } else if (value instanceof List) { 
     527                    List valueList = (List) value; 
     528                    rows = new String[valueList.size()]; 
     529                    for (int i = 0; i < rows.length; i++) { 
     530                        rows[i] = String.valueOf(valueList.get(i)); 
     531                    } 
     532                } else { 
     533                    rows = new String[]{}; 
    530534                } 
    531535            } else { 
    532                 rows = new String[]{ (String) value }; 
     536                rows = new String[] { (String) value }; 
    533537            } 
    534538 
     
    551555 
    552556    public Selection createSelection(List<String> columns) { 
    553         return createSelection(columns.toArray(new String[columns.size()] )); 
     557        return createSelection(columns.toArray(new String[columns.size()])); 
    554558    } 
    555559 
     
    612616                        directoryName, filter); 
    613617            } else { 
    614                 items = DirectoryHelper.getSelectItems( 
    615                         directoryValues, filter); 
     618                items = DirectoryHelper.getSelectItems(directoryValues, filter); 
    616619            } 
    617620            if (items == null) { 
     
    711714                String messageStr = ComponentUtils.translate(context, 
    712715                        "label.chainSelect.incomplete_selection"); 
    713                 FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, 
    714                                                messageStr, 
    715                                                messageStr); 
     716                FacesMessage message = new FacesMessage( 
     717                        FacesMessage.SEVERITY_ERROR, messageStr, messageStr); 
    716718                context.addMessage(getClientId(context), message); 
    717719                setValid(false);