Cannot save a cform containing a multivalued field with more than 9 values ! ----------------------------------------------------------------------------
Key: COCOON-1689 URL: http://issues.apache.org/jira/browse/COCOON-1689 Project: Cocoon Type: Bug Components: Blocks: Forms Versions: 2.1.8, 2.2-dev (Current SVN), 2.1.9-dev (current SVN) Reporter: Philippe Gassmann Priority: Blocker An UnsupportedOperationException occurs when trying to save a form containing a multivalued field with more that 9 values. Here is the explanation : here is the incriminated code in MultiValueJXPathBinding.java:doSave(): Iterator rowPointers = multiValueContext.iteratePointers(this.rowPath); List l = new ArrayList(); while( rowPointers.hasNext() ) { Pointer p = (Pointer)rowPointers.next(); l.add(p.asPath()); } Collections.sort(l); for( int i = l.size()-1; i >= 0; i-- ) { multiValueContext.removePath((String)l.get(i)); } This code is wrong : The p.asPath returns something like "/doc/node[x]" if the iterator contains more than 9 values x will be written in TWO characters so, the result of Collections.sort(l) return for 10 values : /doc/node[10] /doc/node[1] /doc/node[2] /doc/node[3] /doc/node[4] /doc/node[5] /doc/node[6] /doc/node[7] /doc/node[8] /doc/node[9] so the first node to be deleted is 9. the last is 10. but when trying to delete the 10th node it does not exist anymore ! A UnsupportedOperationException is thrown. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira