This is an automated email from the ASF dual-hosted git repository.
mpochatkin pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git
The following commit(s) were added to refs/heads/main by this push:
new 014873b3947 IGNITE-27315 Marshaller java records test fixtures
checkstyle (#7209)
014873b3947 is described below
commit 014873b3947cbd27edf53855fc57bcaba6dffcc6
Author: Vadim Kolodin <[email protected]>
AuthorDate: Thu Dec 11 11:48:43 2025 +0400
IGNITE-27315 Marshaller java records test fixtures checkstyle (#7209)
---
.../internal/client/sql/ClientAsyncResultSet.java | 2 +-
.../internal/client/table/ClientKeyValueView.java | 6 +++---
.../client/table/ClientRecordSerializer.java | 6 +++---
.../internal/client/table/ClientRecordView.java | 2 +-
modules/java-records-tests/build.gradle | 1 +
.../internal/schema/marshaller/ItTableViewTest.java | 8 ++++----
.../internal/schema/marshaller/MarshallerTest.java | 11 ++++++-----
.../internal/schema/marshaller/AssertMarshaller.java | 1 -
.../ignite/internal/schema/marshaller/Records.java | 20 ++++++++++++++------
.../ignite/internal/marshaller/Marshaller.java | 9 +++++----
.../marshaller/reflection/KvMarshallerImpl.java | 6 +++---
.../marshaller/reflection/RecordMarshallerImpl.java | 2 +-
.../ignite/internal/table/KeyValueViewImpl.java | 4 ++--
.../apache/ignite/internal/table/RecordViewImpl.java | 2 +-
14 files changed, 45 insertions(+), 35 deletions(-)
diff --git
a/modules/client/src/main/java/org/apache/ignite/internal/client/sql/ClientAsyncResultSet.java
b/modules/client/src/main/java/org/apache/ignite/internal/client/sql/ClientAsyncResultSet.java
index 7d7d1b48fb0..070386d52e8 100644
---
a/modules/client/src/main/java/org/apache/ignite/internal/client/sql/ClientAsyncResultSet.java
+++
b/modules/client/src/main/java/org/apache/ignite/internal/client/sql/ClientAsyncResultSet.java
@@ -361,7 +361,7 @@ public class ClientAsyncResultSet<T> implements
AsyncResultSet<T> {
var tupleReader = new BinaryTupleReader(rowSize,
in.readBinaryUnsafe());
var reader = new ClientMarshallerReader(tupleReader, null,
TuplePart.KEY_AND_VAL);
- res.add((T) marshaller.readObject(reader));
+ res.add((T) marshaller.readObject(reader, null));
}
} catch (MarshallerException e) {
assert mapper != null;
diff --git
a/modules/client/src/main/java/org/apache/ignite/internal/client/table/ClientKeyValueView.java
b/modules/client/src/main/java/org/apache/ignite/internal/client/table/ClientKeyValueView.java
index 8897c05c5ca..75becae7133 100644
---
a/modules/client/src/main/java/org/apache/ignite/internal/client/table/ClientKeyValueView.java
+++
b/modules/client/src/main/java/org/apache/ignite/internal/client/table/ClientKeyValueView.java
@@ -715,7 +715,7 @@ public class ClientKeyValueView<K, V> extends
AbstractClientView<Entry<K, V>> im
var tupleReader = new
BinaryTupleReader(schema.columns().length, in.in().readBinaryUnsafe());
var keyReader = new ClientMarshallerReader(tupleReader,
schema.keyColumns(), TuplePart.KEY_AND_VAL);
var valReader = new ClientMarshallerReader(tupleReader,
schema.valColumns(), TuplePart.KEY_AND_VAL);
- res.put((K) keyMarsh.readObject(keyReader), (V)
valMarsh.readObject(valReader));
+ res.put((K) keyMarsh.readObject(keyReader, null), (V)
valMarsh.readObject(valReader, null));
}
}
@@ -812,8 +812,8 @@ public class ClientKeyValueView<K, V> extends
AbstractClientView<Entry<K, V>> im
Marshaller valMarsh = schema.getMarshaller(valSer.mapper(),
TuplePart.VAL, true);
return (row) -> new IgniteBiTuple<>(
- (K) keyMarsh.readObject(new TupleReader(new
SqlRowProjection(row, meta, keyCols))),
- (V) valMarsh.readObject(new TupleReader(new
SqlRowProjection(row, meta, valCols)))
+ (K) keyMarsh.readObject(new TupleReader(new
SqlRowProjection(row, meta, keyCols)), null),
+ (V) valMarsh.readObject(new TupleReader(new
SqlRowProjection(row, meta, valCols)), null)
);
}
diff --git
a/modules/client/src/main/java/org/apache/ignite/internal/client/table/ClientRecordSerializer.java
b/modules/client/src/main/java/org/apache/ignite/internal/client/table/ClientRecordSerializer.java
index 97d03e8c5a8..5883faac5e3 100644
---
a/modules/client/src/main/java/org/apache/ignite/internal/client/table/ClientRecordSerializer.java
+++
b/modules/client/src/main/java/org/apache/ignite/internal/client/table/ClientRecordSerializer.java
@@ -248,7 +248,7 @@ public class ClientRecordSerializer<R> {
ClientColumn[] columns = schema.columns(part);
var tupleReader = new BinaryTupleReader(columns.length,
in.readBinaryUnsafe());
var reader = new ClientMarshallerReader(tupleReader, columns,
part);
- res.add((R) marshaller.readObject(reader));
+ res.add((R) marshaller.readObject(reader, null));
}
}
@@ -261,7 +261,7 @@ public class ClientRecordSerializer<R> {
var tupleReader = new BinaryTupleReader(schema.columns().length,
in.readBinaryUnsafe());
ClientMarshallerReader reader = new
ClientMarshallerReader(tupleReader, schema.columns(partToRead), dataPart);
- return (R) marshaller.readObject(reader);
+ return (R) marshaller.readObject(reader, null);
}
R readValRec(R keyRec, ClientSchema schema, ClientMessageUnpacker in) {
@@ -274,7 +274,7 @@ public class ClientRecordSerializer<R> {
var tupleReader = new BinaryTupleReader(schema.columns().length,
in.readBinaryUnsafe());
ClientMarshallerReader reader = new
ClientMarshallerReader(tupleReader, schema.columns(), TuplePart.KEY_AND_VAL);
- return (R) valMarshaller.readObject(reader);
+ return (R) valMarshaller.readObject(reader, null);
}
private static int columnCount(ClientSchema schema, TuplePart part) {
diff --git
a/modules/client/src/main/java/org/apache/ignite/internal/client/table/ClientRecordView.java
b/modules/client/src/main/java/org/apache/ignite/internal/client/table/ClientRecordView.java
index 7fbfd9e1302..a4908e888c8 100644
---
a/modules/client/src/main/java/org/apache/ignite/internal/client/table/ClientRecordView.java
+++
b/modules/client/src/main/java/org/apache/ignite/internal/client/table/ClientRecordView.java
@@ -557,6 +557,6 @@ public class ClientRecordView<R> extends
AbstractClientView<R> implements Record
String[] cols = columnNames(schema.columns());
Marshaller marsh = schema.getMarshaller(ser.mapper(),
TuplePart.KEY_AND_VAL, true);
- return (row) -> (R) marsh.readObject(new TupleReader(new
SqlRowProjection(row, meta, cols)));
+ return (row) -> (R) marsh.readObject(new TupleReader(new
SqlRowProjection(row, meta, cols)), null);
}
}
diff --git a/modules/java-records-tests/build.gradle
b/modules/java-records-tests/build.gradle
index a495c902c01..103a491b342 100644
--- a/modules/java-records-tests/build.gradle
+++ b/modules/java-records-tests/build.gradle
@@ -48,5 +48,6 @@ dependencies {
testFixturesImplementation testFixtures(project(':ignite-core'))
testImplementation project(':ignite-api')
+ testImplementation testFixtures(project(':ignite-core'))
testImplementation testFixtures(project(':java-records-tests'))
}
diff --git
a/modules/java-records-tests/src/integrationTest/java/org/apache/ignite/internal/schema/marshaller/ItTableViewTest.java
b/modules/java-records-tests/src/integrationTest/java/org/apache/ignite/internal/schema/marshaller/ItTableViewTest.java
index 55b0873af95..eef639b835b 100644
---
a/modules/java-records-tests/src/integrationTest/java/org/apache/ignite/internal/schema/marshaller/ItTableViewTest.java
+++
b/modules/java-records-tests/src/integrationTest/java/org/apache/ignite/internal/schema/marshaller/ItTableViewTest.java
@@ -137,14 +137,14 @@ class ItTableViewTest extends
ClusterPerClassIntegrationTest {
void componentsWrongTypesThrowsException(Table t) {
String msgSubstring = "Column's type mismatch";
- assertViewThrows(ClassCastException.class, msgSubstring, t, new
ComponentsWrongTypes.Record((short) 1, 2));
- assertViewThrows(ClassCastException.class, msgSubstring, t, new
ComponentsWrongTypes.Class((short) 1, 2));
+ assertViewThrows(MarshallerException.class, msgSubstring, t, new
ComponentsWrongTypes.Record((short) 1, 2));
+ assertViewThrows(MarshallerException.class, msgSubstring, t, new
ComponentsWrongTypes.Class((short) 1, 2));
- assertViewThrows(ClassCastException.class, msgSubstring, t,
+ assertViewThrows(MarshallerException.class, msgSubstring, t,
new ComponentsWrongTypes.RecordK((short) 1),
new ComponentsWrongTypes.RecordV(2)
);
- assertViewThrows(ClassCastException.class, msgSubstring, t,
+ assertViewThrows(MarshallerException.class, msgSubstring, t,
new ComponentsWrongTypes.ClassK((short) 1),
new ComponentsWrongTypes.ClassV(2)
);
diff --git
a/modules/java-records-tests/src/test/java/org/apache/ignite/internal/schema/marshaller/MarshallerTest.java
b/modules/java-records-tests/src/test/java/org/apache/ignite/internal/schema/marshaller/MarshallerTest.java
index b912c518cb1..cdcc5476286 100644
---
a/modules/java-records-tests/src/test/java/org/apache/ignite/internal/schema/marshaller/MarshallerTest.java
+++
b/modules/java-records-tests/src/test/java/org/apache/ignite/internal/schema/marshaller/MarshallerTest.java
@@ -28,13 +28,14 @@ import
org.apache.ignite.internal.schema.marshaller.Records.ComponentsWide;
import
org.apache.ignite.internal.schema.marshaller.Records.ComponentsWrongTypes;
import
org.apache.ignite.internal.schema.marshaller.Records.NoDefaultConstructor;
import
org.apache.ignite.internal.schema.marshaller.Records.NotAnnotatedNotMapped;
+import org.apache.ignite.internal.testframework.BaseIgniteAbstractTest;
import org.apache.ignite.lang.MarshallerException;
import org.junit.jupiter.api.Test;
/**
* Ensures that records and classes behave the same way.
*/
-class MarshallerTest {
+class MarshallerTest extends BaseIgniteAbstractTest {
@Test
void marshalUnmarshalTest() {
@@ -83,15 +84,15 @@ class MarshallerTest {
String msgSubstring = "Column's type mismatch";
// recordView
- assertMarshallerThrows(ClassCastException.class, msgSubstring, new
ComponentsWrongTypes.Record((short) 1, 2));
- assertMarshallerThrows(ClassCastException.class, msgSubstring, new
ComponentsWrongTypes.Class((short) 1, 2));
+ assertMarshallerThrows(MarshallerException.class, msgSubstring, new
ComponentsWrongTypes.Record((short) 1, 2));
+ assertMarshallerThrows(MarshallerException.class, msgSubstring, new
ComponentsWrongTypes.Class((short) 1, 2));
// kvView
- assertMarshallerThrows(ClassCastException.class, msgSubstring,
+ assertMarshallerThrows(MarshallerException.class, msgSubstring,
new ComponentsWrongTypes.RecordK((short) 1),
new ComponentsWrongTypes.RecordV(2)
);
- assertMarshallerThrows(ClassCastException.class, msgSubstring,
+ assertMarshallerThrows(MarshallerException.class, msgSubstring,
new ComponentsWrongTypes.ClassK((short) 1),
new ComponentsWrongTypes.ClassV(2)
);
diff --git
a/modules/java-records-tests/src/testFixtures/java/org/apache/ignite/internal/schema/marshaller/AssertMarshaller.java
b/modules/java-records-tests/src/testFixtures/java/org/apache/ignite/internal/schema/marshaller/AssertMarshaller.java
index 4c004765725..cc29dc701c4 100644
---
a/modules/java-records-tests/src/testFixtures/java/org/apache/ignite/internal/schema/marshaller/AssertMarshaller.java
+++
b/modules/java-records-tests/src/testFixtures/java/org/apache/ignite/internal/schema/marshaller/AssertMarshaller.java
@@ -70,7 +70,6 @@ class AssertMarshaller {
IgniteTestUtils.assertThrows(expectedType, () ->
assertMarshaller(expectedKey, expectedVal), msgSubstring);
}
-
static <T> void assertView(Table table, T expected) {
RecordView<T> view = (RecordView<T>)
table.recordView(expected.getClass());
diff --git
a/modules/java-records-tests/src/testFixtures/java/org/apache/ignite/internal/schema/marshaller/Records.java
b/modules/java-records-tests/src/testFixtures/java/org/apache/ignite/internal/schema/marshaller/Records.java
index b732342a3a3..3fa4838cd27 100644
---
a/modules/java-records-tests/src/testFixtures/java/org/apache/ignite/internal/schema/marshaller/Records.java
+++
b/modules/java-records-tests/src/testFixtures/java/org/apache/ignite/internal/schema/marshaller/Records.java
@@ -40,8 +40,11 @@ class Records {
});
static class ComponentsExact {
+
record RecordK(@Column("key") Integer id) { }
+
record RecordV(@Column("val") String val) { }
+
record Record(@Column("key") Integer id, @Column("val") String val) { }
record ExplicitCanonical(@Column("key") Integer id, @Column("val")
String val) {
@@ -302,8 +305,8 @@ class Records {
return false;
}
var that = (Class) obj;
- return Objects.equals(this.val, that.val) &&
- Objects.equals(this.id, that.id);
+ return Objects.equals(this.val, that.val)
+ && Objects.equals(this.id, that.id);
}
@Override
@@ -314,8 +317,11 @@ class Records {
}
static class ComponentsWrongTypes {
+
record RecordK(@Column("key") Short id) { }
+
record RecordV(@Column("val") Integer val) { }
+
record Record(@Column("key") Short id, @Column("val") Integer val) { }
static final class Class {
@@ -340,8 +346,8 @@ class Records {
return false;
}
var that = (Class) obj;
- return Objects.equals(this.id, that.id) &&
- Objects.equals(this.val, that.val);
+ return Objects.equals(this.id, that.id)
+ && Objects.equals(this.val, that.val);
}
@Override
@@ -408,7 +414,9 @@ class Records {
}
static class ComponentsEmpty {
+
record Record() { }
+
static final class Class {}
}
@@ -433,8 +441,8 @@ class Records {
return false;
}
var that = (Class) obj;
- return Objects.equals(this.id, that.id) &&
- Objects.equals(this.value, that.value);
+ return Objects.equals(this.id, that.id)
+ && Objects.equals(this.value, that.value);
}
@Override
diff --git
a/modules/marshaller-common/src/main/java/org/apache/ignite/internal/marshaller/Marshaller.java
b/modules/marshaller-common/src/main/java/org/apache/ignite/internal/marshaller/Marshaller.java
index 827f4d1b87c..7961407831e 100644
---
a/modules/marshaller-common/src/main/java/org/apache/ignite/internal/marshaller/Marshaller.java
+++
b/modules/marshaller-common/src/main/java/org/apache/ignite/internal/marshaller/Marshaller.java
@@ -185,7 +185,7 @@ public abstract class Marshaller {
* @return Object.
* @throws MarshallerException If failed.
*/
- public abstract Object readObject(MarshallerReader reader) throws
MarshallerException;
+ public abstract Object readObject(MarshallerReader reader, Object target)
throws MarshallerException;
/**
* Write an object to a row.
@@ -233,7 +233,7 @@ public abstract class Marshaller {
/** {@inheritDoc} */
@Override
- public Object readObject(MarshallerReader reader) {
+ public Object readObject(MarshallerReader reader, Object target) {
return fieldAccessor.read(reader);
}
@@ -281,7 +281,8 @@ public abstract class Marshaller {
/** {@inheritDoc} */
@Override
- public Object readObject(MarshallerReader reader) throws
MarshallerException {
+ public Object readObject(MarshallerReader reader, Object target)
throws MarshallerException {
+ // target is always null, but this exact API is used by migration
tools
return creator.createInstance(fieldAccessors, reader);
}
@@ -307,7 +308,7 @@ public abstract class Marshaller {
}
@Override
- public Object readObject(MarshallerReader reader) {
+ public Object readObject(MarshallerReader reader, Object target) {
return null;
}
diff --git
a/modules/schema/src/main/java/org/apache/ignite/internal/schema/marshaller/reflection/KvMarshallerImpl.java
b/modules/schema/src/main/java/org/apache/ignite/internal/schema/marshaller/reflection/KvMarshallerImpl.java
index 39654a33473..aed0eb7ca7b 100644
---
a/modules/schema/src/main/java/org/apache/ignite/internal/schema/marshaller/reflection/KvMarshallerImpl.java
+++
b/modules/schema/src/main/java/org/apache/ignite/internal/schema/marshaller/reflection/KvMarshallerImpl.java
@@ -124,7 +124,7 @@ public class KvMarshallerImpl<K, V> implements
KvMarshaller<K, V> {
public K unmarshalKeyOnly(Row row) throws MarshallerException {
assert row.elementCount() == keyPositions.length : "Number of key
columns does not match";
- Object o = keyMarsh.readObject(new RowReader(row));
+ Object o = keyMarsh.readObject(new RowReader(row), null);
assert keyClass.isInstance(o);
@@ -134,7 +134,7 @@ public class KvMarshallerImpl<K, V> implements
KvMarshaller<K, V> {
/** {@inheritDoc} */
@Override
public K unmarshalKey(Row row) throws MarshallerException {
- Object o = keyMarsh.readObject(new RowReader(row, keyPositions));
+ Object o = keyMarsh.readObject(new RowReader(row, keyPositions), null);
assert keyClass.isInstance(o);
@@ -145,7 +145,7 @@ public class KvMarshallerImpl<K, V> implements
KvMarshaller<K, V> {
@Nullable
@Override
public V unmarshalValue(Row row) throws MarshallerException {
- Object o = valMarsh.readObject(new RowReader(row, valPositions));
+ Object o = valMarsh.readObject(new RowReader(row, valPositions), null);
assert o == null || valClass.isInstance(o);
diff --git
a/modules/schema/src/main/java/org/apache/ignite/internal/schema/marshaller/reflection/RecordMarshallerImpl.java
b/modules/schema/src/main/java/org/apache/ignite/internal/schema/marshaller/reflection/RecordMarshallerImpl.java
index 3b43dcb31f3..10cc20697fe 100644
---
a/modules/schema/src/main/java/org/apache/ignite/internal/schema/marshaller/reflection/RecordMarshallerImpl.java
+++
b/modules/schema/src/main/java/org/apache/ignite/internal/schema/marshaller/reflection/RecordMarshallerImpl.java
@@ -112,7 +112,7 @@ public class RecordMarshallerImpl<R> implements
RecordMarshaller<R> {
public R unmarshal(Row row) throws MarshallerException {
Marshaller marsh = row.keyOnly() ? keyMarsh : recMarsh;
RowReader reader = row.keyOnly() ? new RowReader(row, keyPositions) :
new RowReader(row);
- final Object o = marsh.readObject(reader);
+ final Object o = marsh.readObject(reader, null);
assert recClass.isInstance(o);
diff --git
a/modules/table/src/main/java/org/apache/ignite/internal/table/KeyValueViewImpl.java
b/modules/table/src/main/java/org/apache/ignite/internal/table/KeyValueViewImpl.java
index 086de732beb..8648a08819c 100644
---
a/modules/table/src/main/java/org/apache/ignite/internal/table/KeyValueViewImpl.java
+++
b/modules/table/src/main/java/org/apache/ignite/internal/table/KeyValueViewImpl.java
@@ -870,8 +870,8 @@ public class KeyValueViewImpl<K, V> extends
AbstractTableView<Entry<K, V>> imple
Marshaller valMarsh =
marshallers.getValuesMarshaller(marshallerSchema, valueMapper, false, true);
return (row) -> new IgniteBiTuple<>(
- (K) keyMarsh.readObject(new TupleReader(new
SqlRowProjection(row, meta, columnNames(keyCols)))),
- (V) valMarsh.readObject(new TupleReader(new
SqlRowProjection(row, meta, columnNames(valCols))))
+ (K) keyMarsh.readObject(new TupleReader(new
SqlRowProjection(row, meta, columnNames(keyCols))), null),
+ (V) valMarsh.readObject(new TupleReader(new
SqlRowProjection(row, meta, columnNames(valCols))), null)
);
}
}
diff --git
a/modules/table/src/main/java/org/apache/ignite/internal/table/RecordViewImpl.java
b/modules/table/src/main/java/org/apache/ignite/internal/table/RecordViewImpl.java
index fd6e870e301..5045b9fa271 100644
---
a/modules/table/src/main/java/org/apache/ignite/internal/table/RecordViewImpl.java
+++
b/modules/table/src/main/java/org/apache/ignite/internal/table/RecordViewImpl.java
@@ -656,6 +656,6 @@ public class RecordViewImpl<R> extends AbstractTableView<R>
implements RecordVie
Marshaller marsh = marshallers.getRowMarshaller(marshallerSchema,
mapper, false, true);
List<Column> cols = schema.columns();
- return (row) -> (R) marsh.readObject(new TupleReader(new
SqlRowProjection(row, meta, columnNames(cols))));
+ return (row) -> (R) marsh.readObject(new TupleReader(new
SqlRowProjection(row, meta, columnNames(cols))), null);
}
}