This is an automated email from the ASF dual-hosted git repository.

asf-gitbox-commits pushed a commit to branch past-M2
in repository https://gitbox.apache.org/repos/asf/cayenne.git

commit 40552a155bc88f89d5ea3f6b5b1ab90b442cfb86
Author: Andrus Adamchik <[email protected]>
AuthorDate: Sun May 31 10:56:09 2026 -0400

    Unifying ParameterBinding hierarchy into a single class and reducing its 
mutability
---
 .../transformer/DefaultBindingsTransformer.java    |   2 +-
 .../merge/token/DefaultValueForNullProvider.java   |   2 +-
 .../cayenne/dbsync/merge/token/ValueForNullIT.java |   2 +-
 .../org/apache/cayenne/velocity/BindDirective.java |   2 +-
 .../apache/cayenne/access/jdbc/BatchAction.java    |   2 +-
 .../apache/cayenne/access/jdbc/SelectAction.java   |   2 +-
 .../access/sqlbuilder/sqltree/ValueNode.java       |   2 +-
 .../access/translator/ParameterBinding.java        | 158 ++++++++++-----------
 .../translator/batch/DeleteBatchTranslator.java    |   2 +-
 .../translator/batch/InsertBatchTranslator.java    |   2 +-
 .../batch/SoftDeleteBatchTranslator.java           |   2 +-
 .../translator/batch/UpdateBatchTranslator.java    |   4 +-
 .../translator/procedure/ProcedureTranslator.java  |   5 +-
 .../access/translator/sqltemplate/Context.java     |   2 +-
 .../cayenne/dba/oracle/Oracle8LOBBatchAction.java  |   4 +-
 .../dba/oracle/Oracle8LOBBatchTranslator.java      |   4 +-
 .../cayenne/log/CompactSlf4jJdbcEventLogger.java   |   2 +-
 .../apache/cayenne/log/Slf4jJdbcEventLogger.java   |   2 +-
 .../log/CompactSlf4jJdbcEventLoggerTest.java       |   2 +-
 19 files changed, 99 insertions(+), 104 deletions(-)

diff --git 
a/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/DefaultBindingsTransformer.java
 
b/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/DefaultBindingsTransformer.java
index 02d43bda3..d3fade7bd 100644
--- 
a/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/DefaultBindingsTransformer.java
+++ 
b/cayenne-crypto/src/main/java/org/apache/cayenne/crypto/transformer/DefaultBindingsTransformer.java
@@ -57,7 +57,7 @@ public class DefaultBindingsTransformer implements 
BindingsTransformer {
                     ? extendedTypeMap.getRegisteredType(transformed.getClass())
                     : extendedTypeMap.getDefaultType();
 
-            b.include(b.getStatementPosition(), transformed, extendedType);
+            b.reset(b.getStatementPosition(), transformed, extendedType);
         }
     }
 
diff --git 
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/token/DefaultValueForNullProvider.java
 
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/token/DefaultValueForNullProvider.java
index 28d8564cd..5f77227cf 100644
--- 
a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/token/DefaultValueForNullProvider.java
+++ 
b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/merge/token/DefaultValueForNullProvider.java
@@ -36,7 +36,7 @@ public class DefaultValueForNullProvider implements 
ValueForNullProvider {
         // the binding is only ever read for its value (inlined into the 
UPDATE below), never bound to a
         // statement, so the position is irrelevant here
         ParameterBinding binding = new ParameterBinding(type, 
column.getAttributePrecision())
-                .include(1, value, null);
+                .reset(1, value, null);
         values.put(createKey(entity, column), binding);
     }
 
diff --git 
a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/token/ValueForNullIT.java
 
b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/token/ValueForNullIT.java
index f85815c94..0d3d615d7 100644
--- 
a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/token/ValueForNullIT.java
+++ 
b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/token/ValueForNullIT.java
@@ -105,7 +105,7 @@ public class ValueForNullIT extends MergeCase {
                 int type = column.getType();
                 switch (type) {
                     case Types.VARCHAR:
-                        return new ParameterBinding(type, -1).include(1, 
DEFAULT_VALUE_STRING, null);
+                        return new ParameterBinding(type, -1).reset(1, 
DEFAULT_VALUE_STRING, null);
                     default:
                         throw new AssertionError("should not get here");
                 }
diff --git 
a/cayenne-velocity/src/main/java/org/apache/cayenne/velocity/BindDirective.java 
b/cayenne-velocity/src/main/java/org/apache/cayenne/velocity/BindDirective.java
index 26f927328..2c2b3d438 100644
--- 
a/cayenne-velocity/src/main/java/org/apache/cayenne/velocity/BindDirective.java
+++ 
b/cayenne-velocity/src/main/java/org/apache/cayenne/velocity/BindDirective.java
@@ -172,7 +172,7 @@ public class BindDirective extends Directive {
                if (bindings != null) {
                        // a binding's statement position is its 1-based 
ordinal among the bound parameters; the
                        // ExtendedType is resolved from the value via the 
adapter
-                       binding.include(bindings.size() + 1, value, 
extendedType(context, value));
+                       binding.reset(bindings.size() + 1, value, 
extendedType(context, value));
                        bindings.add(binding);
                }
        }
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/access/jdbc/BatchAction.java 
b/cayenne/src/main/java/org/apache/cayenne/access/jdbc/BatchAction.java
index 42d918132..19de7fa71 100644
--- a/cayenne/src/main/java/org/apache/cayenne/access/jdbc/BatchAction.java
+++ b/cayenne/src/main/java/org/apache/cayenne/access/jdbc/BatchAction.java
@@ -59,7 +59,7 @@ public class BatchAction extends BaseSQLAction {
                        throws Exception {
 
                for (ParameterBinding b : bindings) {
-                       if (!b.isExcluded()) {
+                       if (!b.isDisabled()) {
                                adapter.bindParameter(statement, b);
                        }
                }
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/access/jdbc/SelectAction.java 
b/cayenne/src/main/java/org/apache/cayenne/access/jdbc/SelectAction.java
index 6318d1798..3785f6a66 100644
--- a/cayenne/src/main/java/org/apache/cayenne/access/jdbc/SelectAction.java
+++ b/cayenne/src/main/java/org/apache/cayenne/access/jdbc/SelectAction.java
@@ -48,7 +48,7 @@ public class SelectAction extends BaseSQLAction {
 
         for (ParameterBinding b : bindings) {
 
-            if (b.isExcluded()) {
+            if (b.isDisabled()) {
                 continue;
             }
 
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/access/sqlbuilder/sqltree/ValueNode.java
 
b/cayenne/src/main/java/org/apache/cayenne/access/sqlbuilder/sqltree/ValueNode.java
index 52cc75383..0d3f8e929 100644
--- 
a/cayenne/src/main/java/org/apache/cayenne/access/sqlbuilder/sqltree/ValueNode.java
+++ 
b/cayenne/src/main/java/org/apache/cayenne/access/sqlbuilder/sqltree/ValueNode.java
@@ -157,7 +157,7 @@ public class ValueNode extends Node {
             int jdbcType = 
context.getAdapter().preferredBindingType(TypesMapping.getSqlTypeByJava(value.getClass()));
             binding = new ParameterBinding(jdbcType, -1);
         }
-        binding.include(context.getBindings().size() + 1, value, extendedType);
+        binding.reset(context.getBindings().size() + 1, value, extendedType);
         context.getBindings().add(binding);
     }
 
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/access/translator/ParameterBinding.java
 
b/cayenne/src/main/java/org/apache/cayenne/access/translator/ParameterBinding.java
index 410539961..64347424e 100644
--- 
a/cayenne/src/main/java/org/apache/cayenne/access/translator/ParameterBinding.java
+++ 
b/cayenne/src/main/java/org/apache/cayenne/access/translator/ParameterBinding.java
@@ -22,90 +22,86 @@ import org.apache.cayenne.access.types.ExtendedType;
 import org.apache.cayenne.map.DbAttribute;
 
 /**
- * Describes a single PreparedStatement parameter binding. A binding carries 
immutable metadata
- * (the optional source {@link DbAttribute}, the JDBC type and scale) 
established at creation time,
- * plus a mutable per-iteration state (value, statement position, {@link 
ExtendedType}) updated via
- * {@link #include(int, Object, ExtendedType)} / {@link #exclude()} as batch 
rows are processed.
+ * Describes a single PreparedStatement parameter binding. Partially mutable
  *
  * @since 4.0
  */
 public class ParameterBinding {
 
-       private static final int EXCLUDED_POSITION = -1;
-
-       private final DbAttribute attribute;
-       private final int jdbcType;
-       private final int scale;
-
-       private Object value;
-       private int statementPosition;
-       private ExtendedType<?> extendedType;
-
-       /**
-        * @since 5.0
-        */
-       public ParameterBinding(int jdbcType, int scale) {
-               this(jdbcType, scale, null);
-       }
-
-       /**
-        * @since 5.0
-        */
-       public ParameterBinding(int jdbcType, int scale, DbAttribute attribute) 
{
-               this.attribute = attribute;
-               this.jdbcType = jdbcType;
-               this.scale = scale;
-               this.statementPosition = EXCLUDED_POSITION;
-       }
-
-       public Object getValue() {
-               return value;
-       }
-
-       public int getStatementPosition() {
-               return statementPosition;
-       }
-
-       public boolean isExcluded() {
-               return statementPosition == EXCLUDED_POSITION;
-       }
-
-       public ExtendedType getExtendedType() {
-               return extendedType;
-       }
-
-       /**
-        * Marks the binding object as excluded for the current iteration.
-        */
-       public void exclude() {
-               this.statementPosition = EXCLUDED_POSITION;
-               this.value = null;
-               this.extendedType = null;
-       }
-
-       /**
-        * Sets the value, statement position and {@link ExtendedType} of the 
binding, thus "including" it in the current
-        * iteration. Returns this binding for chaining.
-        */
-       public ParameterBinding include(int statementPosition, Object value, 
ExtendedType<?> extendedType) {
-               this.statementPosition = statementPosition;
-               this.value = value;
-               this.extendedType = extendedType;
-               return this;
-       }
-
-       public int getJdbcType() {
-               return jdbcType;
-       }
-
-       public int getScale() {
-               return scale;
-       }
-
-       /**
-        * @since 5.0
-        */
-       public DbAttribute getAttribute() {
-               return attribute;
-       }
+    private static final int EXCLUDED_POSITION = -1;
+
+    private final DbAttribute attribute;
+    private final int jdbcType;
+    private final int scale;
+
+    private Object value;
+    private int statementPosition;
+    private ExtendedType<?> extendedType;
+
+    /**
+     * @since 5.0
+     */
+    public ParameterBinding(int jdbcType, int scale) {
+        this(jdbcType, scale, null);
+    }
+
+    /**
+     * @since 5.0
+     */
+    public ParameterBinding(int jdbcType, int scale, DbAttribute attribute) {
+        this.attribute = attribute;
+        this.jdbcType = jdbcType;
+        this.scale = scale;
+        this.statementPosition = EXCLUDED_POSITION;
+    }
+
+    public Object getValue() {
+        return value;
+    }
+
+    public int getStatementPosition() {
+        return statementPosition;
+    }
+
+    public boolean isDisabled() {
+        return statementPosition == EXCLUDED_POSITION;
+    }
+
+    public ExtendedType getExtendedType() {
+        return extendedType;
+    }
+
+    /**
+     * Marks the binding object as excluded for the current iteration.
+     */
+    public void disable() {
+        this.statementPosition = EXCLUDED_POSITION;
+        this.value = null;
+        this.extendedType = null;
+    }
+
+    /**
+     * Sets the value, statement position and {@link ExtendedType} of the 
binding.
+     */
+    public ParameterBinding reset(int statementPosition, Object value, 
ExtendedType<?> extendedType) {
+        this.statementPosition = statementPosition;
+        this.value = value;
+        this.extendedType = extendedType;
+        return this;
+    }
+
+    public int getJdbcType() {
+        return jdbcType;
+    }
+
+    public int getScale() {
+        return scale;
+    }
+
+    /**
+     * @since 5.0
+     */
+    public DbAttribute getAttribute() {
+        return attribute;
+    }
 }
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/access/translator/batch/DeleteBatchTranslator.java
 
b/cayenne/src/main/java/org/apache/cayenne/access/translator/batch/DeleteBatchTranslator.java
index 78c87d6ea..414b86cbb 100644
--- 
a/cayenne/src/main/java/org/apache/cayenne/access/translator/batch/DeleteBatchTranslator.java
+++ 
b/cayenne/src/main/java/org/apache/cayenne/access/translator/batch/DeleteBatchTranslator.java
@@ -63,7 +63,7 @@ public class DeleteBatchTranslator extends 
BaseBatchTranslator<DeleteBatchQuery>
         // skip null attributes... they are translated as "IS NULL"
         if(value != null) {
             ExtendedType<?> extendedType = 
context.getAdapter().getExtendedTypes().getRegisteredType(value.getClass());
-            bindings[position].include(++position, value, extendedType);
+            bindings[position].reset(++position, value, extendedType);
         }
         return position;
     }
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/access/translator/batch/InsertBatchTranslator.java
 
b/cayenne/src/main/java/org/apache/cayenne/access/translator/batch/InsertBatchTranslator.java
index bddf13877..2330ef872 100644
--- 
a/cayenne/src/main/java/org/apache/cayenne/access/translator/batch/InsertBatchTranslator.java
+++ 
b/cayenne/src/main/java/org/apache/cayenne/access/translator/batch/InsertBatchTranslator.java
@@ -72,7 +72,7 @@ public class InsertBatchTranslator extends 
BaseBatchTranslator<InsertBatchQuery>
             ExtendedType<?> extendedType = value != null
                     ? 
context.getAdapter().getExtendedTypes().getRegisteredType(value.getClass())
                     : context.getAdapter().getExtendedTypes().getDefaultType();
-            bindings[j].include(++j, value, extendedType);
+            bindings[j].reset(++j, value, extendedType);
         }
         return bindings;
     }
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/access/translator/batch/SoftDeleteBatchTranslator.java
 
b/cayenne/src/main/java/org/apache/cayenne/access/translator/batch/SoftDeleteBatchTranslator.java
index 50e7824df..d866fdadf 100644
--- 
a/cayenne/src/main/java/org/apache/cayenne/access/translator/batch/SoftDeleteBatchTranslator.java
+++ 
b/cayenne/src/main/java/org/apache/cayenne/access/translator/batch/SoftDeleteBatchTranslator.java
@@ -57,7 +57,7 @@ public class SoftDeleteBatchTranslator extends 
DeleteBatchTranslator {
 
         String typeName = TypesMapping.getJavaBySqlType(deleteAttribute);
         ExtendedType<?> extendedType = 
context.getAdapter().getExtendedTypes().getRegisteredType(typeName);
-        bindings[0].include(1, true, extendedType);
+        bindings[0].reset(1, true, extendedType);
 
         return sql;
     }
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/access/translator/batch/UpdateBatchTranslator.java
 
b/cayenne/src/main/java/org/apache/cayenne/access/translator/batch/UpdateBatchTranslator.java
index a7c074fef..6c9eca408 100644
--- 
a/cayenne/src/main/java/org/apache/cayenne/access/translator/batch/UpdateBatchTranslator.java
+++ 
b/cayenne/src/main/java/org/apache/cayenne/access/translator/batch/UpdateBatchTranslator.java
@@ -69,7 +69,7 @@ public class UpdateBatchTranslator extends 
BaseBatchTranslator<UpdateBatchQuery>
             ExtendedType<?> extendedType = value == null
                 ? context.getAdapter().getExtendedTypes().getDefaultType()
                 : 
context.getAdapter().getExtendedTypes().getRegisteredType(value.getClass());
-            bindings[j].include(++j, value, extendedType);
+            bindings[j].reset(++j, value, extendedType);
         }
 
         for(DbAttribute attribute : updateBatch.getQualifierAttributes()) {
@@ -79,7 +79,7 @@ public class UpdateBatchTranslator extends 
BaseBatchTranslator<UpdateBatchQuery>
             }
             Object value = row.getValue(i);
             ExtendedType<?> extendedType = 
context.getAdapter().getExtendedTypes().getRegisteredType(value.getClass());
-            bindings[j].include(++j, value, extendedType);
+            bindings[j].reset(++j, value, extendedType);
             i++;
         }
         return bindings;
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/access/translator/procedure/ProcedureTranslator.java
 
b/cayenne/src/main/java/org/apache/cayenne/access/translator/procedure/ProcedureTranslator.java
index 8d329fd46..b04929dd2 100644
--- 
a/cayenne/src/main/java/org/apache/cayenne/access/translator/procedure/ProcedureTranslator.java
+++ 
b/cayenne/src/main/java/org/apache/cayenne/access/translator/procedure/ProcedureTranslator.java
@@ -26,7 +26,6 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
-import org.apache.cayenne.access.translator.ParameterBinding;
 import org.apache.cayenne.access.translator.ParameterBinding;
 import org.apache.cayenne.access.types.ExtendedType;
 import org.apache.cayenne.dba.DbAdapter;
@@ -161,7 +160,7 @@ public class ProcedureTranslator {
                                        value = value.toString();
                                }
                                parameterBindings[i] = new 
ParameterBinding(procedureParameter.getType(), 
procedureParameter.getPrecision())
-                                               .include(i + 1, value, null);
+                                               .reset(i + 1, value, null);
                        }
                        logger.logQuery(sqlStr, parameterBindings);
                }
@@ -232,7 +231,7 @@ public class ProcedureTranslator {
                                : adapter.getExtendedTypes().getDefaultType();
 
                ParameterBinding binding = new 
ParameterBinding(adapter.preferredBindingType(param.getType()), 
param.getPrecision())
-                               .include(pos, val, extendedType);
+                               .reset(pos, val, extendedType);
                adapter.bindParameter(stmt, binding);
        }
 
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/access/translator/sqltemplate/Context.java
 
b/cayenne/src/main/java/org/apache/cayenne/access/translator/sqltemplate/Context.java
index 2821dd0c1..61bac2832 100644
--- 
a/cayenne/src/main/java/org/apache/cayenne/access/translator/sqltemplate/Context.java
+++ 
b/cayenne/src/main/java/org/apache/cayenne/access/translator/sqltemplate/Context.java
@@ -118,7 +118,7 @@ public class Context {
         }
         // a binding's statement position is its 1-based ordinal among the 
bound parameters; the
         // ExtendedType is resolved from the value via the adapter
-        binding.include(parameterBindings.size() + 1, value, 
extendedType(value));
+        binding.reset(parameterBindings.size() + 1, value, 
extendedType(value));
         parameterBindings.add(binding);
     }
 
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/dba/oracle/Oracle8LOBBatchAction.java
 
b/cayenne/src/main/java/org/apache/cayenne/dba/oracle/Oracle8LOBBatchAction.java
index 33159de64..14b3efc20 100644
--- 
a/cayenne/src/main/java/org/apache/cayenne/dba/oracle/Oracle8LOBBatchAction.java
+++ 
b/cayenne/src/main/java/org/apache/cayenne/dba/oracle/Oracle8LOBBatchAction.java
@@ -99,7 +99,7 @@ class Oracle8LOBBatchAction implements SQLAction {
                                logger.logQueryParameters("bind", bindings);
 
                                for (ParameterBinding b : bindings) {
-                                       if (!b.isExcluded()) {
+                                       if (!b.isDisabled()) {
                                                
adapter.bindParameter(statement, b);
                                        }
                                }
@@ -148,7 +148,7 @@ class Oracle8LOBBatchAction implements SQLAction {
                                ParameterBinding binding = new ParameterBinding(
                                                
adapter.preferredBindingType(attribute.getType()), attribute.getScale(), 
attribute
                                );
-                               binding.include(i + 1, value, extendedType);
+                               binding.reset(i + 1, value, extendedType);
                                adapter.bindParameter(selectStatement, binding);
                                if(isLoggable) {
                                        attributeBindings[i] = binding;
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/dba/oracle/Oracle8LOBBatchTranslator.java
 
b/cayenne/src/main/java/org/apache/cayenne/dba/oracle/Oracle8LOBBatchTranslator.java
index 1e0dd739d..291a8b9be 100644
--- 
a/cayenne/src/main/java/org/apache/cayenne/dba/oracle/Oracle8LOBBatchTranslator.java
+++ 
b/cayenne/src/main/java/org/apache/cayenne/dba/oracle/Oracle8LOBBatchTranslator.java
@@ -143,9 +143,9 @@ abstract class Oracle8LOBBatchTranslator extends 
DefaultBatchTranslator {
                         ? 
adapter.getExtendedTypes().getRegisteredType(value.getClass())
                         : adapter.getExtendedTypes().getDefaultType();
 
-                b.include(j++, value, extendedType);
+                b.reset(j++, value, extendedType);
             } else {
-                b.exclude();
+                b.disable();
             }
         }
 
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/log/CompactSlf4jJdbcEventLogger.java 
b/cayenne/src/main/java/org/apache/cayenne/log/CompactSlf4jJdbcEventLogger.java
index 54bea360e..407c81cfb 100644
--- 
a/cayenne/src/main/java/org/apache/cayenne/log/CompactSlf4jJdbcEventLogger.java
+++ 
b/cayenne/src/main/java/org/apache/cayenne/log/CompactSlf4jJdbcEventLogger.java
@@ -112,7 +112,7 @@ public class CompactSlf4jJdbcEventLogger extends 
Slf4jJdbcEventLogger {
         String key = null;
         String value;
         for (ParameterBinding b : bindings) {
-            if (b.isExcluded()) {
+            if (b.isDisabled()) {
                 continue;
             }
 
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/log/Slf4jJdbcEventLogger.java 
b/cayenne/src/main/java/org/apache/cayenne/log/Slf4jJdbcEventLogger.java
index 484eab7c7..217fd287f 100644
--- a/cayenne/src/main/java/org/apache/cayenne/log/Slf4jJdbcEventLogger.java
+++ b/cayenne/src/main/java/org/apache/cayenne/log/Slf4jJdbcEventLogger.java
@@ -100,7 +100,7 @@ public class Slf4jJdbcEventLogger implements 
JdbcEventLogger {
                        for (int i = 0, j = 1; i < len; i++) {
                                ParameterBinding b = bindings[i];
 
-                               if (b.isExcluded()) {
+                               if (b.isDisabled()) {
                                        continue;
                                }
 
diff --git 
a/cayenne/src/test/java/org/apache/cayenne/log/CompactSlf4jJdbcEventLoggerTest.java
 
b/cayenne/src/test/java/org/apache/cayenne/log/CompactSlf4jJdbcEventLoggerTest.java
index 57a58a058..f78db4021 100644
--- 
a/cayenne/src/test/java/org/apache/cayenne/log/CompactSlf4jJdbcEventLoggerTest.java
+++ 
b/cayenne/src/test/java/org/apache/cayenne/log/CompactSlf4jJdbcEventLoggerTest.java
@@ -112,7 +112,7 @@ public class CompactSlf4jJdbcEventLoggerTest {
     private ParameterBinding createBinding(String name, int position, Object 
object, ExtendedType type){
         DbAttribute attribute = new DbAttribute(name);
         ParameterBinding binding = new ParameterBinding(attribute.getType(), 
-1, attribute);
-        binding.include(position, object, type);
+        binding.reset(position, object, type);
         return binding;
     }
 }

Reply via email to