-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Tue, 22 Nov 2005, Sylvain Wallez (JIRA) wrote:
Date: Tue, 22 Nov 2005 16:14:42 +0100 (CET) From: "Sylvain Wallez (JIRA)" <[EMAIL PROTECTED]> Reply-To: [email protected] To: [email protected] Subject: [jira] Commented: (COCOON-1689) Cannot save a cform containing a multivalued field with more than 9 values ! [ http://issues.apache.org/jira/browse/COCOON-1689?page=comments#action_12358249 ] Sylvain Wallez commented on COCOON-1689: ---------------------------------------- We have no indication of the JXPath problem that led to avoiding the use of jxpathContext.removePath(). Giacomo, as the author of this change, can you give us more indications on what motivated it ?
This was a workaround due to a bug in JXPath removePath() method reported by Jeremy and me prior to ApacheCon in Stuttgart. At that time it was fixed in their repository but not released (and we do not want to have unreleased jars in our repository). I'll check whether it works with current jxpath jar.
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.1.9-dev (current SVN), 2.2-dev (Current SVN) Reporter: Philippe Gassmann Priority: MinorAn 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.
- -- Giacomo Pati
Otego AG, Switzerland - http://www.otego.com Orixo, the XML business alliance - http://www.orixo.com -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.2 (GNU/Linux) iD8DBQFDg0PcLNdJvZjjVZARAsQXAKCm7XPfp3RNl61DV9rpUMg39/htSQCfSk2c ZD+i347W6Rm0F1RvJrn+cJY= =RRC0 -----END PGP SIGNATURE-----
