Skip to content

Commit bd3a6ee

Browse files
authored
MINOR: Add private constructor to UuidType singleton (#945)
Add private constructor to UuidType singleton.
1 parent 30eb4cf commit bd3a6ee

File tree

10 files changed

+42
-110
lines changed

10 files changed

+42
-110
lines changed

c/src/test/java/org/apache/arrow/c/RoundtripTest.java

Lines changed: 5 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@
3535
import org.apache.arrow.memory.ArrowBuf;
3636
import org.apache.arrow.memory.BufferAllocator;
3737
import org.apache.arrow.memory.RootAllocator;
38-
import org.apache.arrow.memory.util.hash.ArrowBufHasher;
3938
import org.apache.arrow.vector.BaseLargeVariableWidthVector;
4039
import org.apache.arrow.vector.BaseVariableWidthVector;
4140
import org.apache.arrow.vector.BigIntVector;
@@ -44,7 +43,6 @@
4443
import org.apache.arrow.vector.DateMilliVector;
4544
import org.apache.arrow.vector.DecimalVector;
4645
import org.apache.arrow.vector.DurationVector;
47-
import org.apache.arrow.vector.ExtensionTypeVector;
4846
import org.apache.arrow.vector.FieldVector;
4947
import org.apache.arrow.vector.FixedSizeBinaryVector;
5048
import org.apache.arrow.vector.Float2Vector;
@@ -74,6 +72,7 @@
7472
import org.apache.arrow.vector.UInt2Vector;
7573
import org.apache.arrow.vector.UInt4Vector;
7674
import org.apache.arrow.vector.UInt8Vector;
75+
import org.apache.arrow.vector.UuidVector;
7776
import org.apache.arrow.vector.ValueVector;
7877
import org.apache.arrow.vector.VarBinaryVector;
7978
import org.apache.arrow.vector.VarCharVector;
@@ -92,6 +91,7 @@
9291
import org.apache.arrow.vector.complex.StructVector;
9392
import org.apache.arrow.vector.complex.UnionVector;
9493
import org.apache.arrow.vector.complex.impl.UnionMapWriter;
94+
import org.apache.arrow.vector.extension.UuidType;
9595
import org.apache.arrow.vector.holders.IntervalDayHolder;
9696
import org.apache.arrow.vector.holders.NullableLargeVarBinaryHolder;
9797
import org.apache.arrow.vector.holders.NullableUInt4Holder;
@@ -100,7 +100,6 @@
100100
import org.apache.arrow.vector.types.Types.MinorType;
101101
import org.apache.arrow.vector.types.pojo.ArrowType;
102102
import org.apache.arrow.vector.types.pojo.ArrowType.ExtensionType;
103-
import org.apache.arrow.vector.types.pojo.ExtensionTypeRegistry;
104103
import org.apache.arrow.vector.types.pojo.Field;
105104
import org.apache.arrow.vector.types.pojo.FieldType;
106105
import org.apache.arrow.vector.types.pojo.Schema;
@@ -810,9 +809,8 @@ public void testEmptyRunEndEncodedVector() {
810809

811810
@Test
812811
public void testExtensionTypeVector() {
813-
ExtensionTypeRegistry.register(new UuidType());
814812
final Schema schema =
815-
new Schema(Collections.singletonList(Field.nullable("a", new UuidType())));
813+
new Schema(Collections.singletonList(Field.nullable("a", UuidType.INSTANCE)));
816814
try (final VectorSchemaRoot root = VectorSchemaRoot.create(schema, allocator)) {
817815
// Fill with data
818816
UUID u1 = UUID.randomUUID();
@@ -830,13 +828,12 @@ public void testExtensionTypeVector() {
830828
assertEquals(root.getSchema(), importedRoot.getSchema());
831829

832830
final Field field = importedRoot.getSchema().getFields().get(0);
833-
final UuidType expectedType = new UuidType();
834831
assertEquals(
835832
field.getMetadata().get(ExtensionType.EXTENSION_METADATA_KEY_NAME),
836-
expectedType.extensionName());
833+
UuidType.INSTANCE.extensionName());
837834
assertEquals(
838835
field.getMetadata().get(ExtensionType.EXTENSION_METADATA_KEY_METADATA),
839-
expectedType.serialize());
836+
UuidType.INSTANCE.serialize());
840837

841838
final UuidVector deserialized = (UuidVector) importedRoot.getFieldVectors().get(0);
842839
assertEquals(vector.getValueCount(), deserialized.getValueCount());
@@ -1115,72 +1112,4 @@ private VectorSchemaRoot createTestVSR() {
11151112

11161113
return new VectorSchemaRoot(fields, vectors);
11171114
}
1118-
1119-
static class UuidType extends ExtensionType {
1120-
1121-
@Override
1122-
public ArrowType storageType() {
1123-
return new ArrowType.FixedSizeBinary(16);
1124-
}
1125-
1126-
@Override
1127-
public String extensionName() {
1128-
return "uuid";
1129-
}
1130-
1131-
@Override
1132-
public boolean extensionEquals(ExtensionType other) {
1133-
return other instanceof UuidType;
1134-
}
1135-
1136-
@Override
1137-
public ArrowType deserialize(ArrowType storageType, String serializedData) {
1138-
if (!storageType.equals(storageType())) {
1139-
throw new UnsupportedOperationException(
1140-
"Cannot construct UuidType from underlying type " + storageType);
1141-
}
1142-
return new UuidType();
1143-
}
1144-
1145-
@Override
1146-
public String serialize() {
1147-
return "";
1148-
}
1149-
1150-
@Override
1151-
public FieldVector getNewVector(String name, FieldType fieldType, BufferAllocator allocator) {
1152-
return new UuidVector(name, allocator, new FixedSizeBinaryVector(name, allocator, 16));
1153-
}
1154-
}
1155-
1156-
static class UuidVector extends ExtensionTypeVector<FixedSizeBinaryVector> {
1157-
1158-
public UuidVector(
1159-
String name, BufferAllocator allocator, FixedSizeBinaryVector underlyingVector) {
1160-
super(name, allocator, underlyingVector);
1161-
}
1162-
1163-
@Override
1164-
public UUID getObject(int index) {
1165-
final ByteBuffer bb = ByteBuffer.wrap(getUnderlyingVector().getObject(index));
1166-
return new UUID(bb.getLong(), bb.getLong());
1167-
}
1168-
1169-
@Override
1170-
public int hashCode(int index) {
1171-
return hashCode(index, null);
1172-
}
1173-
1174-
@Override
1175-
public int hashCode(int index, ArrowBufHasher hasher) {
1176-
return getUnderlyingVector().hashCode(index, hasher);
1177-
}
1178-
1179-
public void set(int index, UUID uuid) {
1180-
ByteBuffer bb = ByteBuffer.allocate(16);
1181-
bb.putLong(uuid.getMostSignificantBits());
1182-
bb.putLong(uuid.getLeastSignificantBits());
1183-
getUnderlyingVector().set(index, bb.array());
1184-
}
1185-
}
11861115
}

vector/src/main/java/org/apache/arrow/vector/UuidVector.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ public class UuidVector extends ExtensionTypeVector<FixedSizeBinaryVector>
6969
public UuidVector(
7070
String name, BufferAllocator allocator, FixedSizeBinaryVector underlyingVector) {
7171
super(name, allocator, underlyingVector);
72-
this.field = new Field(name, FieldType.nullable(new UuidType()), null);
72+
this.field = new Field(name, FieldType.nullable(UuidType.INSTANCE), null);
7373
}
7474

7575
/**
@@ -99,7 +99,7 @@ public UuidVector(
9999
*/
100100
public UuidVector(String name, BufferAllocator allocator) {
101101
super(name, allocator, new FixedSizeBinaryVector(name, allocator, UUID_BYTE_WIDTH));
102-
this.field = new Field(name, FieldType.nullable(new UuidType()), null);
102+
this.field = new Field(name, FieldType.nullable(UuidType.INSTANCE), null);
103103
}
104104

105105
/**

vector/src/main/java/org/apache/arrow/vector/extension/UuidType.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,8 @@ public class UuidType extends ExtensionType {
6363
/** Storage type for UUID: FixedSizeBinary(16). */
6464
public static final ArrowType STORAGE_TYPE = new ArrowType.FixedSizeBinary(UUID_BYTE_WIDTH);
6565

66+
private UuidType() {}
67+
6668
static {
6769
ExtensionTypeRegistry.register(INSTANCE);
6870
}

vector/src/test/java/org/apache/arrow/vector/TestListVector.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1208,15 +1208,15 @@ public void testGetTransferPairWithField() {
12081208

12091209
@Test
12101210
public void testListVectorWithExtensionType() throws Exception {
1211-
final FieldType type = FieldType.nullable(new UuidType());
1211+
final FieldType type = FieldType.nullable(UuidType.INSTANCE);
12121212
try (final ListVector inVector = new ListVector("list", allocator, type, null)) {
12131213
UnionListWriter writer = inVector.getWriter();
12141214
writer.allocate();
12151215
writer.setPosition(0);
12161216
UUID u1 = UUID.randomUUID();
12171217
UUID u2 = UUID.randomUUID();
12181218
writer.startList();
1219-
ExtensionWriter extensionWriter = writer.extension(new UuidType());
1219+
ExtensionWriter extensionWriter = writer.extension(UuidType.INSTANCE);
12201220
extensionWriter.addExtensionTypeWriterFactory(new UuidWriterFactory());
12211221
extensionWriter.writeExtension(u1);
12221222
extensionWriter.writeExtension(u2);
@@ -1236,15 +1236,15 @@ public void testListVectorWithExtensionType() throws Exception {
12361236

12371237
@Test
12381238
public void testListVectorReaderForExtensionType() throws Exception {
1239-
final FieldType type = FieldType.nullable(new UuidType());
1239+
final FieldType type = FieldType.nullable(UuidType.INSTANCE);
12401240
try (final ListVector inVector = new ListVector("list", allocator, type, null)) {
12411241
UnionListWriter writer = inVector.getWriter();
12421242
writer.allocate();
12431243
writer.setPosition(0);
12441244
UUID u1 = UUID.randomUUID();
12451245
UUID u2 = UUID.randomUUID();
12461246
writer.startList();
1247-
ExtensionWriter extensionWriter = writer.extension(new UuidType());
1247+
ExtensionWriter extensionWriter = writer.extension(UuidType.INSTANCE);
12481248
extensionWriter.addExtensionTypeWriterFactory(new UuidWriterFactory());
12491249
extensionWriter.writeExtension(u1);
12501250
extensionWriter.writeExtension(u2);
@@ -1279,7 +1279,7 @@ public void testCopyFromForExtensionType() throws Exception {
12791279
UUID u1 = UUID.randomUUID();
12801280
UUID u2 = UUID.randomUUID();
12811281
writer.startList();
1282-
ExtensionWriter extensionWriter = writer.extension(new UuidType());
1282+
ExtensionWriter extensionWriter = writer.extension(UuidType.INSTANCE);
12831283
extensionWriter.addExtensionTypeWriterFactory(new UuidWriterFactory());
12841284
extensionWriter.writeExtension(u1);
12851285
extensionWriter.writeExtension(u2);

vector/src/test/java/org/apache/arrow/vector/TestMapVector.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1284,13 +1284,13 @@ public void testMapVectorWithExtensionType() throws Exception {
12841284
writer.startMap();
12851285
writer.startEntry();
12861286
writer.key().bigInt().writeBigInt(0);
1287-
ExtensionWriter extensionWriter = writer.value().extension(new UuidType());
1287+
ExtensionWriter extensionWriter = writer.value().extension(UuidType.INSTANCE);
12881288
extensionWriter.addExtensionTypeWriterFactory(new UuidWriterFactory());
12891289
extensionWriter.writeExtension(u1);
12901290
writer.endEntry();
12911291
writer.startEntry();
12921292
writer.key().bigInt().writeBigInt(1);
1293-
extensionWriter = writer.value().extension(new UuidType());
1293+
extensionWriter = writer.value().extension(UuidType.INSTANCE);
12941294
extensionWriter.addExtensionTypeWriterFactory(new UuidWriterFactory());
12951295
extensionWriter.writeExtension(u2);
12961296
writer.endEntry();
@@ -1326,13 +1326,13 @@ public void testCopyFromForExtensionType() throws Exception {
13261326
writer.startMap();
13271327
writer.startEntry();
13281328
writer.key().bigInt().writeBigInt(0);
1329-
ExtensionWriter extensionWriter = writer.value().extension(new UuidType());
1329+
ExtensionWriter extensionWriter = writer.value().extension(UuidType.INSTANCE);
13301330
extensionWriter.addExtensionTypeWriterFactory(new UuidWriterFactory());
13311331
extensionWriter.writeExtension(u1);
13321332
writer.endEntry();
13331333
writer.startEntry();
13341334
writer.key().bigInt().writeBigInt(1);
1335-
extensionWriter = writer.value().extension(new UuidType());
1335+
extensionWriter = writer.value().extension(UuidType.INSTANCE);
13361336
extensionWriter.addExtensionTypeWriterFactory(new UuidWriterFactory());
13371337
extensionWriter.writeExtension(u2);
13381338
writer.endEntry();

vector/src/test/java/org/apache/arrow/vector/TestStructVector.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -341,7 +341,7 @@ public void testGetTransferPairWithFieldAndCallBack() {
341341

342342
@Test
343343
public void testStructVectorWithExtensionTypes() {
344-
UuidType uuidType = new UuidType();
344+
UuidType uuidType = UuidType.INSTANCE;
345345
Field uuidField = new Field("struct_child", FieldType.nullable(uuidType), null);
346346
Field structField =
347347
new Field("struct", FieldType.nullable(new ArrowType.Struct()), List.of(uuidField));
@@ -353,7 +353,7 @@ public void testStructVectorWithExtensionTypes() {
353353

354354
@Test
355355
public void testStructVectorTransferPairWithExtensionType() {
356-
UuidType uuidType = new UuidType();
356+
UuidType uuidType = UuidType.INSTANCE;
357357
Field uuidField = new Field("uuid_child", FieldType.nullable(uuidType), null);
358358
Field structField =
359359
new Field("struct", FieldType.nullable(new ArrowType.Struct()), List.of(uuidField));

vector/src/test/java/org/apache/arrow/vector/TestUuidType.java

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -75,21 +75,21 @@ void testConstants() {
7575

7676
@Test
7777
void testStorageType() {
78-
UuidType type = new UuidType();
78+
UuidType type = UuidType.INSTANCE;
7979
assertEquals(UuidType.STORAGE_TYPE, type.storageType());
8080
assertInstanceOf(ArrowType.FixedSizeBinary.class, type.storageType());
8181
}
8282

8383
@Test
8484
void testExtensionName() {
85-
UuidType type = new UuidType();
85+
UuidType type = UuidType.INSTANCE;
8686
assertEquals("arrow.uuid", type.extensionName());
8787
}
8888

8989
@Test
9090
void testExtensionEquals() {
91-
UuidType type1 = new UuidType();
92-
UuidType type2 = new UuidType();
91+
UuidType type1 = UuidType.INSTANCE;
92+
UuidType type2 = UuidType.INSTANCE;
9393
UuidType type3 = UuidType.INSTANCE;
9494

9595
assertTrue(type1.extensionEquals(type2));
@@ -99,20 +99,20 @@ void testExtensionEquals() {
9999

100100
@Test
101101
void testIsComplex() {
102-
UuidType type = new UuidType();
102+
UuidType type = UuidType.INSTANCE;
103103
assertFalse(type.isComplex());
104104
}
105105

106106
@Test
107107
void testSerialize() {
108-
UuidType type = new UuidType();
108+
UuidType type = UuidType.INSTANCE;
109109
String serialized = type.serialize();
110110
assertEquals("", serialized);
111111
}
112112

113113
@Test
114114
void testDeserializeValid() {
115-
UuidType type = new UuidType();
115+
UuidType type = UuidType.INSTANCE;
116116
ArrowType storageType = new ArrowType.FixedSizeBinary(UuidType.UUID_BYTE_WIDTH);
117117

118118
ArrowType deserialized = assertDoesNotThrow(() -> type.deserialize(storageType, ""));
@@ -122,15 +122,15 @@ void testDeserializeValid() {
122122

123123
@Test
124124
void testDeserializeInvalidStorageType() {
125-
UuidType type = new UuidType();
125+
UuidType type = UuidType.INSTANCE;
126126
ArrowType wrongStorageType = new ArrowType.FixedSizeBinary(32);
127127

128128
assertThrows(UnsupportedOperationException.class, () -> type.deserialize(wrongStorageType, ""));
129129
}
130130

131131
@Test
132132
void testGetNewVector() {
133-
UuidType type = new UuidType();
133+
UuidType type = UuidType.INSTANCE;
134134
try (FieldVector vector =
135135
type.getNewVector("uuid_field", FieldType.nullable(type), allocator)) {
136136
assertInstanceOf(UuidVector.class, vector);
@@ -141,7 +141,7 @@ void testGetNewVector() {
141141

142142
@Test
143143
void testVectorOperations() {
144-
UuidType type = new UuidType();
144+
UuidType type = UuidType.INSTANCE;
145145
try (FieldVector vector =
146146
type.getNewVector("uuid_field", FieldType.nullable(type), allocator)) {
147147
UuidVector uuidVector = (UuidVector) vector;
@@ -218,7 +218,7 @@ void testVectorIpcRoundTrip() throws IOException {
218218

219219
@Test
220220
void testVectorByteArrayOperations() {
221-
UuidType type = new UuidType();
221+
UuidType type = UuidType.INSTANCE;
222222
try (FieldVector vector =
223223
type.getNewVector("uuid_field", FieldType.nullable(type), allocator)) {
224224
UuidVector uuidVector = (UuidVector) vector;
@@ -240,7 +240,7 @@ void testVectorByteArrayOperations() {
240240

241241
@Test
242242
void testGetNewVectorWithCustomFieldType() {
243-
UuidType type = new UuidType();
243+
UuidType type = UuidType.INSTANCE;
244244
FieldType fieldType = new FieldType(false, type, null);
245245

246246
try (FieldVector vector = type.getNewVector("non_nullable_uuid", fieldType, allocator)) {
@@ -262,7 +262,7 @@ void testSingleton() {
262262

263263
@Test
264264
void testUnderlyingVector() {
265-
UuidType type = new UuidType();
265+
UuidType type = UuidType.INSTANCE;
266266
try (FieldVector vector =
267267
type.getNewVector("uuid_field", FieldType.nullable(type), allocator)) {
268268
UuidVector uuidVector = (UuidVector) vector;

0 commit comments

Comments
 (0)