@Override protected int compare(Object o1, Object o2, Schema s, boolean equals) { switch (s.getType()) { case ARRAY: if (!o1.getClass().isArray()) break; Schema elementType = s.getElementType(); int l1 = java.lang.reflect.Array.getLength(o1); int l2 = java.lang.reflect.Array.getLength(o2); int l = Math.min(l1, l2); for (int i = 0; i < l; i++) { int compare = compare(java.lang.reflect.Array.get(o1, i), java.lang.reflect.Array.get(o2, i), elementType, equals); if (compare != 0) return compare; } return l1 - l2; case BYTES: if (!o1.getClass().isArray()) break; byte[] b1 = (byte[])o1; byte[] b2 = (byte[])o2; return BinaryData.compareBytes(b1, 0, b1.length, b2, 0, b2.length); } return super.compare(o1, o2, s, equals); }
@Override protected int compare(Object o1, Object o2, Schema s, boolean equals) { switch (s.getType()) { case ARRAY: if (!o1.getClass().isArray()) break; Schema elementType = s.getElementType(); int l1 = java.lang.reflect.Array.getLength(o1); int l2 = java.lang.reflect.Array.getLength(o2); int l = Math.min(l1, l2); for (int i = 0; i < l; i++) { int compare = compare(java.lang.reflect.Array.get(o1, i), java.lang.reflect.Array.get(o2, i), elementType, equals); if (compare != 0) return compare; } return l1 - l2; case BYTES: if (!o1.getClass().isArray()) break; byte[] b1 = (byte[])o1; byte[] b2 = (byte[])o2; return BinaryData.compareBytes(b1, 0, b1.length, b2, 0, b2.length); } return super.compare(o1, o2, s, equals); }
public int compare(AvroWrapper<T> x, AvroWrapper<T> y) { return ReflectData.get().compare(x.datum(), y.datum(), schema); }
private static void checkBinary(ReflectData reflectData, Schema schema, Object datum, boolean equals, boolean blocking) throws IOException { ReflectDatumWriter<Object> writer = new ReflectDatumWriter<>(schema); ByteArrayOutputStream out = new ByteArrayOutputStream(); if (!blocking) { writer.write(datum, EncoderFactory.get().directBinaryEncoder(out, null)); } else { writer.write(datum, new EncoderFactory().configureBlockSize(64) .blockingBinaryEncoder(out, null)); } writer.write(datum, EncoderFactory.get().directBinaryEncoder(out, null)); byte[] data = out.toByteArray(); ReflectDatumReader<Object> reader = new ReflectDatumReader<>(schema); Object decoded = reader.read(null, DecoderFactory.get().binaryDecoder(data, null)); assertEquals(0, reflectData.compare(datum, decoded, schema, equals)); }
@Override public boolean equals(Object o) { if (o == this) { return true; // identical object } if (!(o instanceof UnionData)) { return false; // not a record } UnionData that = (UnionData) o; return ReflectData.get().compare(this, that, schema) == 0; }
@Override public int compare(T o1, T o2) { return ReflectData.get().compare(o1, o2, schema); }
@Override public int compareTo(UnionData that) { return ReflectData.get().compare(this, that, schema); } }
@Override public int compare(T x, T y) { // return SpecificData.get().compare(x, y, schema); return ReflectData.get().compare(x, y, schema); }
@Override public int compare(T o1, T o2) { return -ReflectData.get().compare(o1, o2, schema); }
@Override public int compare(T o1, T o2) { return -ReflectData.get().compare(o1, o2, schema); }
@Override public int compare(T o1, T o2) { return ReflectData.get().compare(o1, o2, schema); }
@Override protected int compare(Object o1, Object o2, Schema s, boolean equals) { switch (s.getType()) { case ARRAY: if (!o1.getClass().isArray()) break; Schema elementType = s.getElementType(); int l1 = java.lang.reflect.Array.getLength(o1); int l2 = java.lang.reflect.Array.getLength(o2); int l = Math.min(l1, l2); for (int i = 0; i < l; i++) { int compare = compare(java.lang.reflect.Array.get(o1, i), java.lang.reflect.Array.get(o2, i), elementType, equals); if (compare != 0) return compare; } return l1 - l2; case BYTES: if (!o1.getClass().isArray()) break; byte[] b1 = (byte[])o1; byte[] b2 = (byte[])o2; return BinaryData.compareBytes(b1, 0, b1.length, b2, 0, b2.length); } return super.compare(o1, o2, s, equals); }
@Override protected int compare(Object o1, Object o2, Schema s, boolean equals) { switch (s.getType()) { case ARRAY: if (!o1.getClass().isArray()) break; Schema elementType = s.getElementType(); int l1 = java.lang.reflect.Array.getLength(o1); int l2 = java.lang.reflect.Array.getLength(o2); int l = Math.min(l1, l2); for (int i = 0; i < l; i++) { int compare = compare(java.lang.reflect.Array.get(o1, i), java.lang.reflect.Array.get(o2, i), elementType, equals); if (compare != 0) return compare; } return l1 - l2; case BYTES: if (!o1.getClass().isArray()) break; byte[] b1 = (byte[])o1; byte[] b2 = (byte[])o2; return BinaryData.compareBytes(b1, 0, b1.length, b2, 0, b2.length); } return super.compare(o1, o2, s, equals); }
@Override public int compare(AvroWrapper<T> x, AvroWrapper<T> y) { return ReflectData.get().compare(x.datum(), y.datum(), schema); }
@Override public int compare(AvroWrapper<T> x, AvroWrapper<T> y) { return ReflectData.get().compare(x.datum(), y.datum(), schema); }
public int compare(AvroWrapper<T> x, AvroWrapper<T> y) { return ReflectData.get().compare(x.datum(), y.datum(), schema); }