Return-Path: Delivered-To: apmail-cocoon-cvs-archive@www.apache.org Received: (qmail 29771 invoked from network); 20 Mar 2005 13:36:42 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 20 Mar 2005 13:36:42 -0000 Received: (qmail 78973 invoked by uid 500); 20 Mar 2005 13:36:41 -0000 Delivered-To: apmail-cocoon-cvs-archive@cocoon.apache.org Received: (qmail 78886 invoked by uid 500); 20 Mar 2005 13:36:40 -0000 Mailing-List: contact cvs-help@cocoon.apache.org; run by ezmlm Precedence: bulk Reply-To: dev@cocoon.apache.org list-help: list-unsubscribe: List-Post: Delivered-To: mailing list cvs@cocoon.apache.org Received: (qmail 78870 invoked by uid 99); 20 Mar 2005 13:36:40 -0000 X-ASF-Spam-Status: No, hits=-9.8 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from minotaur.apache.org (HELO minotaur.apache.org) (209.237.227.194) by apache.org (qpsmtpd/0.28) with SMTP; Sun, 20 Mar 2005 05:36:40 -0800 Received: (qmail 29709 invoked by uid 65534); 20 Mar 2005 13:36:39 -0000 Message-ID: <20050320133639.29708.qmail@minotaur.apache.org> Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Mailer: svnmailer-1.0.0-dev Date: Sun, 20 Mar 2005 13:36:39 -0000 Subject: svn commit: r158326 - cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/forms/binding/MultiValueJXPathBinding.java To: cvs@cocoon.apache.org From: giacomo@apache.org X-Virus-Checked: Checked X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N Author: giacomo Date: Sun Mar 20 05:36:38 2005 New Revision: 158326 URL: http://svn.apache.org/viewcvs?view=3Drev&rev=3D158326 Log: enable multi-value fields to bind in both directions Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/fo= rms/binding/MultiValueJXPathBinding.java Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/coc= oon/forms/binding/MultiValueJXPathBinding.java URL: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/= forms/java/org/apache/cocoon/forms/binding/MultiValueJXPathBinding.java?vie= w=3Ddiff&r1=3D158325&r2=3D158326 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D --- cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/fo= rms/binding/MultiValueJXPathBinding.java (original) +++ cocoon/branches/BRANCH_2_1_X/src/blocks/forms/java/org/apache/cocoon/fo= rms/binding/MultiValueJXPathBinding.java Sun Mar 20 05:36:38 2005 @@ -15,6 +15,7 @@ */ package org.apache.cocoon.forms.binding; =20 +import java.util.Collection; import java.util.Iterator; import java.util.LinkedList; import java.util.Locale; @@ -23,6 +24,7 @@ import org.apache.cocoon.forms.datatype.convertor.Convertor; import org.apache.cocoon.forms.datatype.convertor.ConversionResult; import org.apache.cocoon.forms.formmodel.Widget; +import org.apache.commons.jxpath.AbstractFactory; import org.apache.commons.jxpath.JXPathContext; import org.apache.commons.jxpath.Pointer; =20 @@ -102,6 +104,21 @@ Object[] values =3D (Object[])widget.getValue(); =20 JXPathContext multiValueContext =3D jctx.getRelativeContext(jctx.c= reatePath(this.multiValuePath)); + multiValueContext.setFactory( new AbstractFactory() { + public boolean createObject(JXPathContext context, Pointer poi= nter, + Object parent, String name, int in= dex) { + final Object o =3D context.getValue(name); + if( Collection.class.isAssignableFrom( o.getClass() ) ) { + ((Collection)context.getValue(name)).add(null); + } else if( o.getClass().isArray() ) { + // not yet supported + return false; + } else { + return false; + } + return true; + } + }); // Delete all that is already present multiValueContext.removeAll(this.rowPath); =20