Description
SchemaBuilder.map(), SchemaBuilder.array(), and SchemaBuilder.field() do not validate input. This can cause weird NullPointerException exceptions later. For example I mistakenly called field("somefield", null), then later performed an operation against field.schema() which yielded a null. It would be preferable to throw an exception stating the issue. We could throw the a NPE but state what is null. Schema is null in this case for example.
@Test(expected = NullPointerException.class) public void fieldNameNull() { Schema schema = SchemaBuilder.struct() .field(null, Schema.STRING_SCHEMA) .build(); } @Test(expected = NullPointerException.class) public void fieldSchemaNull() { Schema schema = SchemaBuilder.struct() .field("fieldName", null) .build(); } @Test(expected = NullPointerException.class) public void arraySchemaNull() { Schema schema = SchemaBuilder.array(Schema.STRING_SCHEMA) .build(); } @Test(expected = NullPointerException.class) public void mapKeySchemaNull() { Schema schema = SchemaBuilder.map(null, Schema.STRING_SCHEMA) .build(); } @Test(expected = NullPointerException.class) public void mapValueSchemaNull() { Schema schema = SchemaBuilder.map(Schema.STRING_SCHEMA, null) .build(); }
Attachments
Issue Links
- links to