@Override public PartitionKey deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext jsonDeserializationContext) throws JsonParseException { JsonObject jsonObject = jsonElement.getAsJsonObject(); PartitionKey.Builder builder = PartitionKey.builder(); for (Map.Entry<String, JsonElement> entry : jsonObject.entrySet()) { JsonArray jsonArray = entry.getValue().getAsJsonArray(); builder.addField(entry.getKey(), deserializeComparable(jsonArray, jsonDeserializationContext)); } return builder.build(); }
public Map<String, String> getOutputArguments(long snapshotTime, Map<String, String> otherProperties) { Map<String, String> args = new HashMap<>(); args.putAll(otherProperties); PartitionKey outputKey = PartitionKey.builder().addLongField(SNAPSHOT_FIELD, snapshotTime).build(); PartitionedFileSetArguments.setOutputPartitionKey(args, outputKey); return args; }
@Override public PartitionKey getPartitionKey(String key, String value) { return PartitionKey.builder().addIntField("number", Integer.parseInt(key.substring(0, 1))).build(); } }
@Override public PartitionKey getPartitionKey(String key, String value) { return PartitionKey.builder() .addStringField("x", key) .build(); } }
@Test(expected = IllegalStateException.class) public void testBuilderEmpty() { PartitionKey.builder().build(); }
private PartitionKey generateUniqueKey() { return PartitionKey.builder() .addIntField("i", counter++) .addLongField("l", 17L) .addStringField("s", UUID.randomUUID().toString()) .build(); }
private PartitionKey generateUniqueKey() { return PartitionKey.builder() .addIntField("i", counter++) .addLongField("l", 17L) .addStringField("s", UUID.randomUUID().toString()) .build(); } }
private PartitionKey generateUniqueKey() { return PartitionKey.builder() .addIntField("i", 1) .addLongField("l", 17L) .addStringField("s", UUID.randomUUID().toString()) .build(); } }
private PartitionKey generateUniqueKey() { return PartitionKey.builder() .addIntField("i", counter++) .addLongField("l", 17L) .addStringField("s", UUID.randomUUID().toString()) .build(); } }
private PartitionKey generateUniqueKey() { return PartitionKey.builder() .addIntField("i", counter++) .addLongField("l", 17L) .addStringField("s", UUID.randomUUID().toString()) .build(); }
@Test(expected = IllegalArgumentException.class) public void testBuilderNullValue() { PartitionKey.builder().addStringField("x", null).build(); }
@Test(expected = IllegalArgumentException.class) public void testBuilderNullField() { PartitionKey.builder().addIntField(null, 1).build(); }
@Test(expected = IllegalArgumentException.class) public void testBuilderEmptyField() { PartitionKey.builder().addIntField("", 1).build(); }
private void testIllegalFieldValue(Function<PartitionKey.Builder, PartitionKey.Builder> function) { PartitionKey.Builder builder = PartitionKey.builder( Partitioning.builder().addIntField("x").addLongField("y").addStringField("z").build()); try { function.apply(builder); Assert.fail("builder should have thrown exception for invalid field type"); } catch (IllegalArgumentException e) { //expected } }
private void publishNotification(TopicId topicId, NamespaceId namespaceId, String dataset) throws Exception { DatasetId datasetId = namespaceId.dataset(dataset); PartitionKey partitionKey = PartitionKey.builder().addIntField("part1", 1).build(); Notification notification = Notification.forPartitions(datasetId, ImmutableList.of(partitionKey)); messagingService.publish(StoreRequestBuilder.of(topicId).addPayload(GSON.toJson(notification)).build()); }
@Test(expected = IllegalArgumentException.class) public void testEncodeIncompleteKey() { PartitionKey key = PartitionKey.builder() .addIntField("i", 42) .addStringField("s", "x") .build(); PartitionedFileSetDataset.generateRowKey(key, PARTITIONING_1); }
@Test(expected = IllegalArgumentException.class) public void testBuilderDuplicateField() { PartitionKey.builder().addField("x", 10).addField("y", 10L).addField("x", 14).build(); }
@Test public void testSetGetOutputPartitionKey() throws Exception { Map<String, String> arguments = new HashMap<>(); PartitionKey key = PartitionKey.builder() .addIntField("i", 42) .addLongField("l", 17L) .addStringField("s", "x") .build(); PartitionedFileSetArguments.setOutputPartitionKey(arguments, key); Assert.assertEquals(key, PartitionedFileSetArguments.getOutputPartitionKey(arguments, PARTITIONING)); }
@Test(expected = IllegalArgumentException.class) public void testBuilderUnknownField() { PartitionKey.builder( Partitioning.builder().addIntField("x").addLongField("y").build()) .addField("x", 10).addField("y", 10L).addField("z", 15).build(); }
@Test(expected = IllegalStateException.class) public void testBuilderMissingField() { PartitionKey.builder( Partitioning.builder().addIntField("x").addLongField("y").addStringField("z").build()) .addField("x", 10).addField("y", 10L).build(); }