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

Reply via email to