cocoon-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From br...@apache.org
Subject cvs commit: cocoon-2.1/src/blocks/woody/java/org/apache/cocoon/woody/binding RepeaterJXPathBinding.java
Date Tue, 09 Sep 2003 09:14:53 GMT
bruno       2003/09/09 02:14:52

  Modified:    src/blocks/woody/java/org/apache/cocoon/woody/binding
                        RepeaterJXPathBinding.java
  Log:
  Fixed problem with deleting rows, reported by Hugo Burm.
  
  Revision  Changes    Path
  1.6       +14 -6     cocoon-2.1/src/blocks/woody/java/org/apache/cocoon/woody/binding/RepeaterJXPathBinding.java
  
  Index: RepeaterJXPathBinding.java
  ===================================================================
  RCS file: /home/cvs/cocoon-2.1/src/blocks/woody/java/org/apache/cocoon/woody/binding/RepeaterJXPathBinding.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- RepeaterJXPathBinding.java	26 Aug 2003 13:55:46 -0000	1.5
  +++ RepeaterJXPathBinding.java	9 Sep 2003 09:14:52 -0000	1.6
  @@ -185,6 +185,7 @@
   
           //again iterate nodes for deletion  
           Iterator rowPointers = repeaterContext.iteratePointers(this.rowPath);
  +        List rowsToDelete = new ArrayList();
           while (rowPointers.hasNext()) {
               Pointer jxp = (Pointer) rowPointers.next();
               JXPathContext rowContext = repeaterContext.getRelativeContext(jxp);
  @@ -193,12 +194,19 @@
   
               // check if matchPath was in list of updates, if not --> bind for delete
               if (!updatedRowIds.contains(matchId)) {
  -                if (this.deleteRowBinding != null) {
  -                    this.deleteRowBinding.saveFormToModel(frmModel, rowContext);      
             
  -                } else {
  -                    getLogger().warn("RepeaterBinding has detected rows to delete, " +
  -                        "but misses the <on-delete-row> binding to do it.");
  -                }
  +                rowsToDelete.add(rowContext);
  +            }
  +        }
  +
  +        if (rowsToDelete.size() > 0) {
  +            if (this.deleteRowBinding == null) {
  +                getLogger().warn("RepeaterBinding has detected rows to delete, " +
  +                    "but misses the <on-delete-row> binding to do it.");
  +            }
  +            else {
  +                // run backwards through the list, so that we don't get into trouble by
shifting indexes
  +                for (int i = rowsToDelete.size() - 1; i >= 0; i--)
  +                    this.deleteRowBinding.saveFormToModel(frmModel, rowsToDelete.get(i));
               }
           }
   
  
  
  

Mime
View raw message