You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by br...@apache.org on 2003/10/29 10:36:04 UTC

cvs commit: cocoon-2.1/src/blocks/woody/java/org/apache/cocoon/woody/binding RepeaterJXPathBinding.java

bruno       2003/10/29 01:36:04

  Modified:    src/blocks/woody/java/org/apache/cocoon/woody/binding
                        RepeaterJXPathBinding.java
  Log:
  Fixed problem with wrong rows being deleted, causing by changing pointers,
  solved by cloning the pointers.
  
  Revision  Changes    Path
  1.8       +4 -4      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.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- RepeaterJXPathBinding.java	18 Sep 2003 20:16:13 -0000	1.7
  +++ RepeaterJXPathBinding.java	29 Oct 2003 09:36:04 -0000	1.8
  @@ -191,7 +191,7 @@
                           } else {
                               getLogger().warn("Convertor ignored on backend-value which isn't of type String.");
                           }                            
  -                    }                        
  +                    }
   
                       if (rowIdValue.equals(matchId)) {
                           // match! --> bind to children
  @@ -212,7 +212,7 @@
           List rowsToDelete = new ArrayList();
           while (rowPointers.hasNext()) {
               Pointer jxp = (Pointer) rowPointers.next();
  -            JXPathContext rowContext = repeaterContext.getRelativeContext(jxp);
  +            JXPathContext rowContext = repeaterContext.getRelativeContext((Pointer)jxp.clone());
   
               Object matchId = rowContext.getValue(this.uniqueRowIdPath);
               if (matchId != null && this.uniqueRowIdConvertor != null) {
  @@ -221,8 +221,8 @@
                   } else {
                       getLogger().warn("Convertor ignored on backend-value which isn't of type String.");
                   }                            
  -            }  
  -            
  +            }
  +
               // check if matchPath was in list of updates, if not --> bind for delete
               if (!updatedRowIds.contains(matchId)) {
                   rowsToDelete.add(rowContext);