You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by am...@apache.org on 2020/12/15 14:09:50 UTC
[ignite-3] 01/03: Rework reflection-based Serializer with using
VarHandles.
This is an automated email from the ASF dual-hosted git repository.
amashenkov pushed a commit to branch ignite-13618-javapoet
in repository https://gitbox.apache.org/repos/asf/ignite-3.git
commit b993d6b7a8a6da702b167abcd442f545f4470c4d
Author: Andrew Mashenkov <an...@gmail.com>
AuthorDate: Fri Dec 11 13:12:21 2020 +0300
Rework reflection-based Serializer with using VarHandles.
---
modules/commons/pom.xml | 5 +-
...UnsafeFieldAccessor.java => FieldAccessor.java} | 166 +++++++++------------
.../schema/marshaller/reflection/Marshaller.java | 14 +-
.../benchmarks/SerializerBenchmarkTest.java | 2 +-
.../schema/marshaller/JavaSerializerTest.java | 4 +-
.../marshaller/reflection/FieldAccessorTest.java | 14 +-
pom.xml | 5 +-
7 files changed, 94 insertions(+), 116 deletions(-)
diff --git a/modules/commons/pom.xml b/modules/commons/pom.xml
index fc78231..05a2fff 100644
--- a/modules/commons/pom.xml
+++ b/modules/commons/pom.xml
@@ -29,7 +29,7 @@
<artifactId>apache-ignite</artifactId>
<groupId>org.apache.ignite</groupId>
<version>3.0.0-SNAPSHOT</version>
- <relativePath>../..</relativePath>
+ <relativePath>../../pom.xml</relativePath>
</parent>
<artifactId>ignite-commons</artifactId>
@@ -56,11 +56,10 @@
<version>${junit.jupiter.version}</version>
<scope>test</scope>
</dependency>
-
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
- <version>${mockito.version}</version>
+ <version>${mockito.core.version}</version>
<scope>test</scope>
</dependency>
diff --git a/modules/commons/src/main/java/org/apache/ignite/internal/schema/marshaller/reflection/UnsafeFieldAccessor.java b/modules/commons/src/main/java/org/apache/ignite/internal/schema/marshaller/reflection/FieldAccessor.java
similarity index 69%
rename from modules/commons/src/main/java/org/apache/ignite/internal/schema/marshaller/reflection/UnsafeFieldAccessor.java
rename to modules/commons/src/main/java/org/apache/ignite/internal/schema/marshaller/reflection/FieldAccessor.java
index 72b2491..97ea038 100644
--- a/modules/commons/src/main/java/org/apache/ignite/internal/schema/marshaller/reflection/UnsafeFieldAccessor.java
+++ b/modules/commons/src/main/java/org/apache/ignite/internal/schema/marshaller/reflection/FieldAccessor.java
@@ -17,6 +17,8 @@
package org.apache.ignite.internal.schema.marshaller.reflection;
+import java.lang.invoke.MethodHandles;
+import java.lang.invoke.VarHandle;
import java.lang.reflect.Field;
import java.util.Objects;
import org.apache.ignite.internal.schema.Column;
@@ -26,32 +28,18 @@ import org.apache.ignite.internal.schema.TupleAssembler;
import org.apache.ignite.internal.schema.marshaller.BinaryMode;
import org.apache.ignite.internal.schema.marshaller.MarshallerUtil;
import org.apache.ignite.internal.schema.marshaller.SerializationException;
-import org.apache.ignite.internal.util.IgniteUnsafeUtils;
import org.jetbrains.annotations.Nullable;
/**
* Field accessor to speedup access.
*/
-// TODO: Extract interface, move to java-8 profile and add Java9+ implementation using VarHandles.
-public abstract class UnsafeFieldAccessor {
- /**
- * TODO: implement sesitive information filtering.
- *
- * @return {@code False} if sensitive information exoising is prohibited, {@code false} otherwise.
- */
- private static boolean includeSensitive() {
- return true;
- }
-
- /** Offset. */
- protected final long offset;
+public abstract class FieldAccessor {
+ /** VarHandle. */
+ protected final VarHandle varHandle;
/** Mode. */
protected final BinaryMode mode;
- /** Field name */
- protected final String name;
-
/**
* Mapped column position in schema.
* <p>
@@ -67,7 +55,7 @@ public abstract class UnsafeFieldAccessor {
* @param colIdx Column index in schema.
* @return Accessor.
*/
- static UnsafeFieldAccessor create(Class<?> type, Column col, int colIdx) {
+ static FieldAccessor create(Class<?> type, Column col, int colIdx) {
try {
final Field field = type.getDeclaredField(col.name());
@@ -75,25 +63,28 @@ public abstract class UnsafeFieldAccessor {
throw new IllegalArgumentException("Failed to map non-nullable field to nullable column [name=" + field.getName() + ']');
BinaryMode mode = MarshallerUtil.mode(field.getType());
+ final MethodHandles.Lookup lookup = MethodHandles.privateLookupIn(type, MethodHandles.lookup());
+
+ VarHandle varHandle = lookup.unreflectVarHandle(field);
switch (mode) {
case P_BYTE:
- return new BytePrimitiveAccessor(field, colIdx);
+ return new BytePrimitiveAccessor(varHandle, colIdx);
case P_SHORT:
- return new ShortPrimitiveAccessor(field, colIdx);
+ return new ShortPrimitiveAccessor(varHandle, colIdx);
case P_INT:
- return new IntPrimitiveAccessor(field, colIdx);
+ return new IntPrimitiveAccessor(varHandle, colIdx);
case P_LONG:
- return new LongPrimitiveAccessor(field, colIdx);
+ return new LongPrimitiveAccessor(varHandle, colIdx);
case P_FLOAT:
- return new FloatPrimitiveAccessor(field, colIdx);
+ return new FloatPrimitiveAccessor(varHandle, colIdx);
case P_DOUBLE:
- return new DoublePrimitiveAccessor(field, colIdx);
+ return new DoublePrimitiveAccessor(varHandle, colIdx);
case BYTE:
case SHORT:
@@ -105,7 +96,7 @@ public abstract class UnsafeFieldAccessor {
case UUID:
case BYTE_ARR:
case BITSET:
- return new ReferenceFieldAccessor(field, colIdx, mode);
+ return new ReferenceFieldAccessor(varHandle, colIdx, mode);
default:
assert false : "Invalid mode " + mode;
@@ -113,7 +104,7 @@ public abstract class UnsafeFieldAccessor {
throw new IllegalArgumentException("Failed to create accessor for field [name=" + field.getName() + ']');
}
- catch (NoSuchFieldException | SecurityException ex) {
+ catch (NoSuchFieldException | SecurityException | IllegalAccessException ex) {
throw new IllegalArgumentException(ex);
}
}
@@ -126,7 +117,7 @@ public abstract class UnsafeFieldAccessor {
* @param mode Binary mode.
* @return Accessor.
*/
- static UnsafeFieldAccessor createIdentityAccessor(Column col, int colIdx, BinaryMode mode) {
+ static FieldAccessor createIdentityAccessor(Column col, int colIdx, BinaryMode mode) {
switch (mode) {
// Marshaller read/write object contract methods allowed boxed types only.
case P_BYTE:
@@ -159,19 +150,18 @@ public abstract class UnsafeFieldAccessor {
/**
* Protected constructor.
*
- * @param field Field.
+ * @param varHandle Field.
* @param colIdx Column index.
* @param mode Binary mode;
*/
- protected UnsafeFieldAccessor(Field field, int colIdx, BinaryMode mode) {
- assert field != null;
+ protected FieldAccessor(VarHandle varHandle, int colIdx, BinaryMode mode) {
+ assert varHandle != null;
assert colIdx >= 0;
assert mode != null;
this.colIdx = colIdx;
this.mode = mode;
- offset = IgniteUnsafeUtils.objectFieldOffset(field);
- name = field.getName();
+ this.varHandle = varHandle;
}
/**
@@ -180,23 +170,13 @@ public abstract class UnsafeFieldAccessor {
* @param colIdx Column index.
* @param mode Binary mode;
*/
- private UnsafeFieldAccessor(int colIdx, BinaryMode mode) {
+ private FieldAccessor(int colIdx, BinaryMode mode) {
assert colIdx >= 0;
assert mode != null;
this.colIdx = colIdx;
this.mode = mode;
- offset = 0;
- name = null;
- }
-
- /**
- * Get binary read/write mode.
- *
- * @return Binary mode.
- */
- public BinaryMode mode() {
- return mode;
+ varHandle = null;
}
/**
@@ -211,10 +191,7 @@ public abstract class UnsafeFieldAccessor {
write0(Objects.requireNonNull(obj), writer);
}
catch (Exception ex) {
- if (includeSensitive() && name != null)
- throw new SerializationException("Failed to read field [id=" + colIdx + ']', ex);
- else
- throw new SerializationException("Failed to write field [id=" + colIdx + ']', ex);
+ throw new SerializationException("Failed to write field [id=" + colIdx + ']', ex);
}
}
@@ -239,10 +216,7 @@ public abstract class UnsafeFieldAccessor {
read0(Objects.requireNonNull(obj), reader);
}
catch (Exception ex) {
- if (includeSensitive() && name != null)
- throw new SerializationException("Failed to read field [name=" + name + ']', ex);
- else
- throw new SerializationException("Failed to read field [id=" + colIdx + ']', ex);
+ throw new SerializationException("Failed to read field [id=" + colIdx + ']', ex);
}
}
@@ -272,13 +246,13 @@ public abstract class UnsafeFieldAccessor {
* @return Field value of given object.
*/
@Nullable Object value(Object obj) {
- return IgniteUnsafeUtils.getObjectField(Objects.requireNonNull(obj), offset);
+ return varHandle.get(Objects.requireNonNull(obj));
}
/**
* Accessor for field of primitive {@code byte} type.
*/
- private static class IdentityAccessor extends UnsafeFieldAccessor {
+ private static class IdentityAccessor extends FieldAccessor {
/**
* Constructor.
*
@@ -313,20 +287,20 @@ public abstract class UnsafeFieldAccessor {
/**
* Accessor for field of primitive {@code byte} type.
*/
- private static class BytePrimitiveAccessor extends UnsafeFieldAccessor {
+ private static class BytePrimitiveAccessor extends FieldAccessor {
/**
* Constructor.
*
- * @param field Field.
+ * @param varHandle VarHandle.
* @param colIdx Column index.
*/
- public BytePrimitiveAccessor(Field field, int colIdx) {
- super(field, colIdx, BinaryMode.P_BYTE);
+ public BytePrimitiveAccessor(VarHandle varHandle, int colIdx) {
+ super(varHandle, colIdx, BinaryMode.P_BYTE);
}
/** {@inheritDoc} */
@Override protected void write0(Object obj, TupleAssembler writer) {
- final byte val = IgniteUnsafeUtils.getByteField(obj, offset);
+ final byte val = (byte)varHandle.get(obj);
writer.appendByte(val);
}
@@ -335,27 +309,27 @@ public abstract class UnsafeFieldAccessor {
@Override protected void read0(Object obj, Tuple reader) {
final byte val = reader.byteValue(colIdx);
- IgniteUnsafeUtils.putByteField(obj, offset, val);
+ varHandle.set(obj, val);
}
}
/**
* Accessor for field of primitive {@code short} type.
*/
- private static class ShortPrimitiveAccessor extends UnsafeFieldAccessor {
+ private static class ShortPrimitiveAccessor extends FieldAccessor {
/**
* Constructor.
*
- * @param field Field.
+ * @param varHandle VarHandle.
* @param colIdx Column index.
*/
- public ShortPrimitiveAccessor(Field field, int colIdx) {
- super(field, colIdx, BinaryMode.P_SHORT);
+ public ShortPrimitiveAccessor(VarHandle varHandle, int colIdx) {
+ super(varHandle, colIdx, BinaryMode.P_SHORT);
}
/** {@inheritDoc} */
@Override protected void write0(Object obj, TupleAssembler writer) {
- final short val = IgniteUnsafeUtils.getShortField(obj, offset);
+ final short val = (short)varHandle.get(obj);
writer.appendShort(val);
}
@@ -364,27 +338,27 @@ public abstract class UnsafeFieldAccessor {
@Override protected void read0(Object obj, Tuple reader) {
final short val = reader.shortValue(colIdx);
- IgniteUnsafeUtils.putShortField(obj, offset, val);
+ varHandle.set(obj, val);
}
}
/**
* Accessor for field of primitive {@code int} type.
*/
- private static class IntPrimitiveAccessor extends UnsafeFieldAccessor {
+ private static class IntPrimitiveAccessor extends FieldAccessor {
/**
* Constructor.
*
- * @param field Field.
+ * @param varHandle VarHandle.
* @param colIdx Column index.
*/
- public IntPrimitiveAccessor(Field field, int colIdx) {
- super(field, colIdx, BinaryMode.P_INT);
+ public IntPrimitiveAccessor(VarHandle varHandle, int colIdx) {
+ super(varHandle, colIdx, BinaryMode.P_INT);
}
/** {@inheritDoc} */
@Override protected void write0(Object obj, TupleAssembler writer) {
- final int val = IgniteUnsafeUtils.getIntField(obj, offset);
+ final int val = (int)varHandle.get(obj);
writer.appendInt(val);
}
@@ -393,27 +367,27 @@ public abstract class UnsafeFieldAccessor {
@Override protected void read0(Object obj, Tuple reader) {
final int val = reader.intValue(colIdx);
- IgniteUnsafeUtils.putIntField(obj, offset, val);
+ varHandle.set(obj, val);
}
}
/**
* Accessor for field of primitive {@code long} type.
*/
- private static class LongPrimitiveAccessor extends UnsafeFieldAccessor {
+ private static class LongPrimitiveAccessor extends FieldAccessor {
/**
* Constructor.
*
- * @param field Field.
+ * @param varHandle VarHandle.
* @param colIdx Column index.
*/
- public LongPrimitiveAccessor(Field field, int colIdx) {
- super(field, colIdx, BinaryMode.P_LONG);
+ public LongPrimitiveAccessor(VarHandle varHandle, int colIdx) {
+ super(varHandle, colIdx, BinaryMode.P_LONG);
}
/** {@inheritDoc} */
@Override protected void write0(Object obj, TupleAssembler writer) {
- final long val = IgniteUnsafeUtils.getLongField(obj, offset);
+ final long val = (long)varHandle.get(obj);
writer.appendLong(val);
}
@@ -422,27 +396,27 @@ public abstract class UnsafeFieldAccessor {
@Override protected void read0(Object obj, Tuple reader) {
final long val = reader.longValue(colIdx);
- IgniteUnsafeUtils.putLongField(obj, offset, val);
+ varHandle.set(obj, val);
}
}
/**
* Accessor for field of primitive {@code float} type.
*/
- private static class FloatPrimitiveAccessor extends UnsafeFieldAccessor {
+ private static class FloatPrimitiveAccessor extends FieldAccessor {
/**
* Constructor.
*
- * @param field Field.
+ * @param varHandle VarHandle.
* @param colIdx Column index.
*/
- public FloatPrimitiveAccessor(Field field, int colIdx) {
- super(field, colIdx, BinaryMode.P_FLOAT);
+ public FloatPrimitiveAccessor(VarHandle varHandle, int colIdx) {
+ super(varHandle, colIdx, BinaryMode.P_FLOAT);
}
/** {@inheritDoc} */
@Override protected void write0(Object obj, TupleAssembler writer) {
- final float val = IgniteUnsafeUtils.getFloatField(obj, offset);
+ final float val = (float)varHandle.get(obj);
writer.appendFloat(val);
}
@@ -451,27 +425,27 @@ public abstract class UnsafeFieldAccessor {
@Override protected void read0(Object obj, Tuple reader) {
final float val = reader.floatValue(colIdx);
- IgniteUnsafeUtils.putFloatField(obj, offset, val);
+ varHandle.set(obj, val);
}
}
/**
* Accessor for field of primitive {@code double} type.
*/
- private static class DoublePrimitiveAccessor extends UnsafeFieldAccessor {
+ private static class DoublePrimitiveAccessor extends FieldAccessor {
/**
* Constructor.
*
- * @param field Field.
+ * @param varHandle VarHandle.
* @param colIdx Column index.
*/
- public DoublePrimitiveAccessor(Field field, int colIdx) {
- super(field, colIdx, BinaryMode.P_DOUBLE);
+ public DoublePrimitiveAccessor(VarHandle varHandle, int colIdx) {
+ super(varHandle, colIdx, BinaryMode.P_DOUBLE);
}
/** {@inheritDoc} */
@Override protected void write0(Object obj, TupleAssembler writer) {
- final double val = IgniteUnsafeUtils.getDoubleField(obj, offset);
+ final double val = (double)varHandle.get(obj);
writer.appendDouble(val);
}
@@ -480,23 +454,23 @@ public abstract class UnsafeFieldAccessor {
@Override protected void read0(Object obj, Tuple reader) {
final double val = reader.doubleValue(colIdx);
- IgniteUnsafeUtils.putDoubleField(obj, offset, val);
+ varHandle.set(obj, val);
}
}
/**
* Accessor for field of reference type.
*/
- private static class ReferenceFieldAccessor extends UnsafeFieldAccessor {
+ private static class ReferenceFieldAccessor extends FieldAccessor {
/**
* Constructor.
*
- * @param field Field.
+ * @param varHandle VarHandle.
* @param colIdx Column index.
* @param mode Binary mode.
*/
- ReferenceFieldAccessor(Field field, int colIdx, BinaryMode mode) {
- super(field, colIdx, mode);
+ ReferenceFieldAccessor(VarHandle varHandle, int colIdx, BinaryMode mode) {
+ super(varHandle, colIdx, mode);
}
/** {@inheritDoc} */
@@ -506,7 +480,7 @@ public abstract class UnsafeFieldAccessor {
Object val;
- val = IgniteUnsafeUtils.getObjectField(obj, offset);
+ val = varHandle.get(obj);
if (val == null) {
writer.appendNull();
@@ -521,7 +495,7 @@ public abstract class UnsafeFieldAccessor {
@Override public void read0(Object obj, Tuple reader) {
Object val = JavaSerializer.readRefValue(reader, colIdx, mode);
- IgniteUnsafeUtils.putObjectField(obj, offset, val);
+ varHandle.set(obj, val);
}
}
}
diff --git a/modules/commons/src/main/java/org/apache/ignite/internal/schema/marshaller/reflection/Marshaller.java b/modules/commons/src/main/java/org/apache/ignite/internal/schema/marshaller/reflection/Marshaller.java
index 506c3a3..a89158b 100644
--- a/modules/commons/src/main/java/org/apache/ignite/internal/schema/marshaller/reflection/Marshaller.java
+++ b/modules/commons/src/main/java/org/apache/ignite/internal/schema/marshaller/reflection/Marshaller.java
@@ -51,17 +51,17 @@ public class Marshaller {
assert mode.typeSpec() == col.type().spec() : "Target type is not compatible.";
assert !aClass.isPrimitive() : "Non-nullable types are not allowed.";
- return new Marshaller(UnsafeFieldAccessor.createIdentityAccessor(col, firstColId, mode));
+ return new Marshaller(FieldAccessor.createIdentityAccessor(col, firstColId, mode));
}
- UnsafeFieldAccessor[] fieldAccessors = new UnsafeFieldAccessor[cols.length()];
+ FieldAccessor[] fieldAccessors = new FieldAccessor[cols.length()];
// Build accessors
for (int i = 0; i < cols.length(); i++) {
final Column col = cols.column(i);
final int colIdx = firstColId + i; /* Absolute column idx in schema. */
- fieldAccessors[i] = UnsafeFieldAccessor.create(aClass, col, colIdx);
+ fieldAccessors[i] = FieldAccessor.create(aClass, col, colIdx);
}
return new Marshaller(new ObjectFactory<>(aClass), fieldAccessors);
@@ -71,7 +71,7 @@ public class Marshaller {
* Field accessors for mapped columns.
* Array has same size and order as columns.
*/
- private final UnsafeFieldAccessor[] fieldAccessors;
+ private final FieldAccessor[] fieldAccessors;
/**
* Object factory for complex types or {@code null} for basic type.
@@ -86,7 +86,7 @@ public class Marshaller {
* @param fieldAccessors Object field accessors for mapped columns.
*/
@SuppressWarnings("AssignmentOrReturnOfFieldWithMutableType")
- public Marshaller(Factory<?> factory, UnsafeFieldAccessor[] fieldAccessors) {
+ public Marshaller(Factory<?> factory, FieldAccessor[] fieldAccessors) {
this.fieldAccessors = fieldAccessors;
this.factory = Objects.requireNonNull(factory);
}
@@ -97,8 +97,8 @@ public class Marshaller {
*
* @param fieldAccessor Identity field accessor for object of basic type.
*/
- public Marshaller(UnsafeFieldAccessor fieldAccessor) {
- fieldAccessors = new UnsafeFieldAccessor[] {fieldAccessor};
+ public Marshaller(FieldAccessor fieldAccessor) {
+ fieldAccessors = new FieldAccessor[] {fieldAccessor};
factory = null;
}
diff --git a/modules/commons/src/test/java/org/apache/ignite/internal/benchmarks/SerializerBenchmarkTest.java b/modules/commons/src/test/java/org/apache/ignite/internal/benchmarks/SerializerBenchmarkTest.java
index 23193ba..1f0ebef 100644
--- a/modules/commons/src/test/java/org/apache/ignite/internal/benchmarks/SerializerBenchmarkTest.java
+++ b/modules/commons/src/test/java/org/apache/ignite/internal/benchmarks/SerializerBenchmarkTest.java
@@ -56,7 +56,7 @@ import static org.apache.ignite.internal.schema.NativeType.LONG;
@Measurement(time = 10, iterations = 5, timeUnit = TimeUnit.SECONDS)
@BenchmarkMode({Mode.Throughput, Mode.AverageTime})
@OutputTimeUnit(TimeUnit.MICROSECONDS)
-@Fork(1)
+@Fork(jvmArgs = "-Djava.lang.invoke.stringConcat=BC_SB" /* Workaround for Java 9+ */, value = 1)
public class SerializerBenchmarkTest {
/** Random. */
private Random rnd = new Random();
diff --git a/modules/commons/src/test/java/org/apache/ignite/internal/schema/marshaller/JavaSerializerTest.java b/modules/commons/src/test/java/org/apache/ignite/internal/schema/marshaller/JavaSerializerTest.java
index 49ef554..d172e86 100644
--- a/modules/commons/src/test/java/org/apache/ignite/internal/schema/marshaller/JavaSerializerTest.java
+++ b/modules/commons/src/test/java/org/apache/ignite/internal/schema/marshaller/JavaSerializerTest.java
@@ -245,7 +245,7 @@ public class JavaSerializerTest {
*/
@ParameterizedTest
@MethodSource("serializerFactoryProvider")
- public void testClassWithNoDefaultConstructor(SerializerFactory factory) throws SerializationException {
+ public void testClassWithNoDefaultConstructor(SerializerFactory factory) {
Column[] cols = new Column[] {
new Column("pLongCol", LONG, false),
};
@@ -340,7 +340,9 @@ public class JavaSerializerTest {
obj.longCol = rnd.nextLong();
obj.floatCol = rnd.nextFloat();
obj.doubleCol = rnd.nextDouble();
+ obj.nullLongCol = null;
+ obj.nullBytesCol = null;
obj.uuidCol = new UUID(rnd.nextLong(), rnd.nextLong());
obj.bitmaskCol = TestUtils.randomBitSet(rnd, 42);
obj.stringCol = TestUtils.randomString(rnd, rnd.nextInt(255));
diff --git a/modules/commons/src/test/java/org/apache/ignite/internal/schema/marshaller/reflection/FieldAccessorTest.java b/modules/commons/src/test/java/org/apache/ignite/internal/schema/marshaller/reflection/FieldAccessorTest.java
index 8e864d6..2cec0b3 100644
--- a/modules/commons/src/test/java/org/apache/ignite/internal/schema/marshaller/reflection/FieldAccessorTest.java
+++ b/modules/commons/src/test/java/org/apache/ignite/internal/schema/marshaller/reflection/FieldAccessorTest.java
@@ -103,7 +103,7 @@ public class FieldAccessorTest {
final TestObject obj = TestObject.randomObject(rnd);
for (int i = 0; i < cols.length; i++) {
- UnsafeFieldAccessor accessor = UnsafeFieldAccessor.create(TestObject.class, cols[i], i);
+ FieldAccessor accessor = FieldAccessor.create(TestObject.class, cols[i], i);
accessor.write(obj, tupleAssembler);
}
@@ -111,7 +111,7 @@ public class FieldAccessorTest {
final TestObject restoredObj = new TestObject();
for (int i = 0; i < cols.length; i++) {
- UnsafeFieldAccessor accessor = UnsafeFieldAccessor.create(TestObject.class, cols[i], i);
+ FieldAccessor accessor = FieldAccessor.create(TestObject.class, cols[i], i);
accessor.read(restoredObj, tuple);
}
@@ -159,7 +159,7 @@ public class FieldAccessorTest {
obj.stringCol = TestUtils.randomString(rnd, 255);
for (int i = 0; i < cols.length; i++) {
- UnsafeFieldAccessor accessor = UnsafeFieldAccessor.create(TestSimpleObject.class, cols[i], i);
+ FieldAccessor accessor = FieldAccessor.create(TestSimpleObject.class, cols[i], i);
accessor.write(obj, tupleAssembler);
}
@@ -167,7 +167,7 @@ public class FieldAccessorTest {
final TestSimpleObject restoredObj = new TestSimpleObject();
for (int i = 0; i < cols.length; i++) {
- UnsafeFieldAccessor accessor = UnsafeFieldAccessor.create(TestSimpleObject.class, cols[i], i);
+ FieldAccessor accessor = FieldAccessor.create(TestSimpleObject.class, cols[i], i);
accessor.read(restoredObj, tuple);
}
@@ -184,7 +184,7 @@ public class FieldAccessorTest {
*/
@Test
public void testIdentityAccessor() throws Exception {
- final UnsafeFieldAccessor accessor = UnsafeFieldAccessor.createIdentityAccessor(
+ final FieldAccessor accessor = FieldAccessor.createIdentityAccessor(
new Column("col0", STRING, true),
0,
BinaryMode.STRING);
@@ -202,7 +202,7 @@ public class FieldAccessorTest {
*/
@Test
public void testWrongIdentityAccessor() throws Exception {
- final UnsafeFieldAccessor accessor = UnsafeFieldAccessor.createIdentityAccessor(
+ final FieldAccessor accessor = FieldAccessor.createIdentityAccessor(
new Column("col0", STRING, true),
42,
BinaryMode.UUID);
@@ -242,7 +242,7 @@ public class FieldAccessorTest {
final Answer<Object> tupleAnswer = new Answer<Object>() {
@Override public Object answer(InvocationOnMock invocation) {
- final int idx = invocation.getArgumentAt(0, Integer.class);
+ final int idx = invocation.getArgument(0, Integer.class);
return vals.get(idx);
}
diff --git a/pom.xml b/pom.xml
index 2d460d4..7d1a734 100644
--- a/pom.xml
+++ b/pom.xml
@@ -54,9 +54,12 @@
<jetbrains.annotations.version>20.1.0</jetbrains.annotations.version>
<jmh.framework.verion>1.9.3</jmh.framework.verion>
<junit.jupiter.version>5.7.0</junit.jupiter.version>
- <mockito.version>1.10.19</mockito.version>
+ <mockito.core.version>3.6.28</mockito.core.version>
<!-- Maven plugins -->
+ <maven.compiler.source>11</maven.compiler.source> <!-- Requires for correct compilation in IDEA. -->
+ <maven.compiler.target>11</maven.compiler.target>
+
<maven.compiler.plugin.version>3.8.1</maven.compiler.plugin.version>
<maven.surefire.plugin.version>3.0.0-M4</maven.surefire.plugin.version>
<apache.rat.plugin.version>0.13</apache.rat.plugin.version>