diff --git a/jOOQ-test/src/org/jooq/test/_/testcases/RecordTests.java b/jOOQ-test/src/org/jooq/test/_/testcases/RecordTests.java index 645634f1f7..8d29fd3c0d 100644 --- a/jOOQ-test/src/org/jooq/test/_/testcases/RecordTests.java +++ b/jOOQ-test/src/org/jooq/test/_/testcases/RecordTests.java @@ -145,4 +145,30 @@ extends BaseTestfalse. + */ + void reset(); + + /** + * Reset a given value to its {@link #original(Field)} value and its + * {@link #changed(Field)} flag to false. + */ + void reset(Field field); + + /** + * Reset a given value to its {@link #original(int)} value and its + * {@link #changed(int)} flag to false. + */ + void reset(int fieldIndex); + + /** + * Reset a given value to its {@link #original(String)} value and its + * {@link #changed(String)} flag to false. + */ + void reset(String fieldName); + /** * Convert this record into an array. *

diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractRecord.java b/jOOQ/src/main/java/org/jooq/impl/AbstractRecord.java index 5ad90bdae4..e35b767a54 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractRecord.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractRecord.java @@ -422,6 +422,28 @@ abstract class AbstractRecord extends AbstractStore implements Record { changed(changed, getIndex(fieldName)); } + @Override + public final void reset() { + for (Value value : getValues()) { + value.reset(); + } + } + + @Override + public final void reset(Field field) { + reset(getIndex(field)); + } + + @Override + public final void reset(int fieldIndex) { + getValue0(fieldIndex).reset(); + } + + @Override + public final void reset(String fieldName) { + reset(getIndex(fieldName)); + } + @Override public final Object[] intoArray() { return into(Object[].class); diff --git a/jOOQ/src/main/java/org/jooq/impl/Value.java b/jOOQ/src/main/java/org/jooq/impl/Value.java index f3e10fcf96..7685918280 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Value.java +++ b/jOOQ/src/main/java/org/jooq/impl/Value.java @@ -114,6 +114,11 @@ class Value implements Serializable { } } + final void reset() { + isChanged = false; + value = original; + } + // ------------------------------------------------------------------------ // XXX: Object API // ------------------------------------------------------------------------