public static FieldAccessor newAccessor(Field field) { return new ReflectionFieldAccessor(field); }
public static FieldAccessor newAccessor(Configuration configuration, Field field) { if (configuration.isUseUnsafe()) { return new UnsafeFieldAccessor(field); } return new ReflectionFieldAccessor(field); }
private Accessors.FieldAccessor accessor(Method method) { PropertyDescriptor descriptor = BeanUtils.findPropertyForMethod(method); Class<?> declaringClass = method.getDeclaringClass(); Field field = Fields.getFieldByName(declaringClass, descriptor.getName()); return Accessors.newAccessor(field); }
/** * Materialize a value from sub columns, columns must be incremented and read in the same order as they were written * in either {@link #writeValue} or {@link #writeFromField} and the materialized value must be written into the field of the parent */ public void readIntoField(Object parent, Contexts.ReadContext context) { getAccessor().set(parent, readValue(context)); }
public static void writeIntToStream(int value, OutputStream outputStream) throws IOException { byte[] arr = new byte[4]; writeInt(value, arr, 0); outputStream.write(arr); }
public UnsafeFieldAccessor(Field field) { this.field = field; this.unsafe = UnsafeUtil.unsafe(); this.offset = unsafe.objectFieldOffset(field); }
/** * Fully consume a field value from the parent, parent is guaranteed to be non-null * Follow the same incrementing rules as {@link #writeValue} */ public void writeFromField(Object parent, Contexts.WriteContext context) { writeValue((T) getAccessor().get(parent), context); }
@Override public void writeFromField(Object parent, Contexts.WriteContext context) { writeBoolean(getAccessor().getBoolean(parent), context); }
@Override public void writeFromField(Object parent, Contexts.WriteContext context) { writeShort(getAccessor().getShort(parent), context); }
public long readLong() { require(8); return Bytes.readLong(buffer, getAndIncrementPosition(8)); }
public void writeShort(short value) { ensureCapacity(2); Bytes.writeShort(value, buffer, getPositionAndIncrement(2)); }
public short readShort() { require(2); return Bytes.readShort(buffer, getAndIncrementPosition(2)); }
@Override public void readIntoField(Object parent, Contexts.ReadContext context) { getAccessor().setByte(parent, readByte(context)); }
@Override public void readIntoField(Object parent, Contexts.ReadContext context) { getAccessor().setChar(parent, readChar(context)); }
@Override public void readIntoField(Object parent, Contexts.ReadContext context) { getAccessor().setFloat(parent, readFloat(context)); }
@Override public void writeFromField(Object parent, Contexts.WriteContext context) { writeInt(getAccessor().getInt(parent), context); }
public void writeChar(char value) { ensureCapacity(2); Bytes.writeChar(value, buffer, getPositionAndIncrement(2)); }
public void writeLong(long value) { ensureCapacity(8); Bytes.writeLong(value, buffer, getPositionAndIncrement(8)); }
public void writeInt(int value) { ensureCapacity(4); Bytes.writeInt(value, buffer, getPositionAndIncrement(4)); }