public static CommitTransactionRequest fromJson(String json) {
    return JsonUtil.parse(json, CommitTransactionRequestParser::fromJson);
  }
@Test
  public void invalidTableIdentifier() {
    assertThatThrownBy(
            () ->
                CommitTransactionRequestParser.fromJson(
                    "{\"table-changes\":[{\"ns1.table1\" : \"ns1.table1\"}]}"))
        .isInstanceOf(IllegalArgumentException.class)
        .hasMessage("Invalid table changes: table identifier is required");

    assertThatThrownBy(
            () ->
                CommitTransactionRequestParser.fromJson(
                    "{\"table-changes\":[{\"identifier\" : {}}]}"))
        .isInstanceOf(IllegalArgumentException.class)
        .hasMessage("Cannot parse missing string: name");

    assertThatThrownBy(
            () ->
                CommitTransactionRequestParser.fromJson(
                    "{\"table-changes\":[{\"identifier\" : { \"name\": 23}}]}"))
        .isInstanceOf(IllegalArgumentException.class)
        .hasMessage("Cannot parse to a string value: name: 23");
  }