You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ibatis.apache.org by jg...@apache.org on 2009/07/06 23:05:35 UTC

svn commit: r791615 - in /ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/dynamic: DynamicContext.java ForEachSqlNode.java PrefixSqlNode.java

Author: jgbutler
Date: Mon Jul  6 21:05:34 2009
New Revision: 791615

URL: http://svn.apache.org/viewvc?rev=791615&view=rev
Log:
Make nested foreach tags work

Modified:
    ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/dynamic/DynamicContext.java
    ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/dynamic/ForEachSqlNode.java
    ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/dynamic/PrefixSqlNode.java

Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/dynamic/DynamicContext.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/dynamic/DynamicContext.java?rev=791615&r1=791614&r2=791615&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/dynamic/DynamicContext.java (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/dynamic/DynamicContext.java Mon Jul  6 21:05:34 2009
@@ -8,6 +8,7 @@
 
   private Map<String,Object> bindings = new HashMap<String,Object>();
   private StringBuilder sqlBuilder = new StringBuilder();
+  private int uniqueNumber = 0;
 
   public DynamicContext(Object parameterObject) {
     if (parameterObject instanceof Map) {
@@ -37,5 +38,8 @@
   public String getSql() {
     return sqlBuilder.toString().trim();
   }
-
+  
+  public int getUniqueNumber() {
+    return uniqueNumber++;
+  }
 }

Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/dynamic/ForEachSqlNode.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/dynamic/ForEachSqlNode.java?rev=791615&r1=791614&r2=791615&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/dynamic/ForEachSqlNode.java (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/dynamic/ForEachSqlNode.java Mon Jul  6 21:05:34 2009
@@ -32,9 +32,10 @@
     int i = 0;
     for (Object o : iterable) {
       first = applySeparator(context, first);
-      applyItem(context, o, i);
+      int uniqueNumber = context.getUniqueNumber();
+      applyItem(context, o, uniqueNumber);
       applyIndex(context, i);
-      contents.apply(new FilteredDynamicContext(context, item, i));
+      contents.apply(new FilteredDynamicContext(context, item, uniqueNumber));
       i++;
     }
     applyClose(context);
@@ -117,6 +118,11 @@
 
       delegate.appendSql(parser.parse(sql));
     }
+    
+    @Override
+    public int getUniqueNumber() {
+      return delegate.getUniqueNumber();
+    }
 
   }
 

Modified: ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/dynamic/PrefixSqlNode.java
URL: http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/dynamic/PrefixSqlNode.java?rev=791615&r1=791614&r2=791615&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/dynamic/PrefixSqlNode.java (original)
+++ ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/dynamic/PrefixSqlNode.java Mon Jul  6 21:05:34 2009
@@ -72,6 +72,11 @@
     public String getSql() {
       return delegate.getSql();
     }
+
+    @Override
+    public int getUniqueNumber() {
+      return delegate.getUniqueNumber();
+    }
   }
 
 }