PARQUET-1730: Use switch Statement in AvroIndexedRecordConverter for Enums (#718)
diff --git a/parquet-avro/src/main/java/org/apache/parquet/avro/AvroIndexedRecordConverter.java b/parquet-avro/src/main/java/org/apache/parquet/avro/AvroIndexedRecordConverter.java
index 4bbf58a..aba562f 100644
--- a/parquet-avro/src/main/java/org/apache/parquet/avro/AvroIndexedRecordConverter.java
+++ b/parquet-avro/src/main/java/org/apache/parquet/avro/AvroIndexedRecordConverter.java
@@ -150,35 +150,38 @@
ParentValueContainer parent = ParentValueContainer
.getConversionContainer(setter, conversion, schema);
- if (schema.getType().equals(Schema.Type.BOOLEAN)) {
- return new AvroConverters.FieldBooleanConverter(parent);
- } else if (schema.getType().equals(Schema.Type.INT)) {
- return new AvroConverters.FieldIntegerConverter(parent);
- } else if (schema.getType().equals(Schema.Type.LONG)) {
- return new AvroConverters.FieldLongConverter(parent);
- } else if (schema.getType().equals(Schema.Type.FLOAT)) {
- return new AvroConverters.FieldFloatConverter(parent);
- } else if (schema.getType().equals(Schema.Type.DOUBLE)) {
- return new AvroConverters.FieldDoubleConverter(parent);
- } else if (schema.getType().equals(Schema.Type.BYTES)) {
- return new AvroConverters.FieldByteBufferConverter(parent);
- } else if (schema.getType().equals(Schema.Type.STRING)) {
- return new AvroConverters.FieldStringConverter(parent);
- } else if (schema.getType().equals(Schema.Type.RECORD)) {
- return new AvroIndexedRecordConverter(parent, type.asGroupType(), schema, model);
- } else if (schema.getType().equals(Schema.Type.ENUM)) {
- return new FieldEnumConverter(parent, schema, model);
- } else if (schema.getType().equals(Schema.Type.ARRAY)) {
+ switch (schema.getType()) {
+ case ARRAY:
return new AvroArrayConverter(parent, type.asGroupType(), schema, model);
- } else if (schema.getType().equals(Schema.Type.MAP)) {
- return new MapConverter(parent, type.asGroupType(), schema, model);
- } else if (schema.getType().equals(Schema.Type.UNION)) {
- return new AvroUnionConverter(parent, type, schema, model);
- } else if (schema.getType().equals(Schema.Type.FIXED)) {
+ case BOOLEAN:
+ return new AvroConverters.FieldBooleanConverter(parent);
+ case BYTES:
+ return new AvroConverters.FieldByteBufferConverter(parent);
+ case DOUBLE:
+ return new AvroConverters.FieldDoubleConverter(parent);
+ case ENUM:
+ return new FieldEnumConverter(parent, schema, model);
+ case FIXED:
return new FieldFixedConverter(parent, schema, model);
+ case FLOAT:
+ return new AvroConverters.FieldFloatConverter(parent);
+ case INT:
+ return new AvroConverters.FieldIntegerConverter(parent);
+ case LONG:
+ return new AvroConverters.FieldLongConverter(parent);
+ case MAP:
+ return new MapConverter(parent, type.asGroupType(), schema, model);
+ case RECORD:
+ return new AvroIndexedRecordConverter(parent, type.asGroupType(), schema, model);
+ case STRING:
+ return new AvroConverters.FieldStringConverter(parent);
+ case UNION:
+ return new AvroUnionConverter(parent, type, schema, model);
+ case NULL: // fall through
+ default:
+ throw new UnsupportedOperationException(String.format("Cannot convert Avro type: %s" +
+ " (Parquet type: %s) ", schema, type));
}
- throw new UnsupportedOperationException(String.format("Cannot convert Avro type: %s" +
- " (Parquet type: %s) ", schema, type));
}
private void set(int index, Object value) {