Smartsheet Java SDK - AssertionError: "Primary Column" has null Id

Smartsheet Java SDK - AssertionError: "Primary Column" has null Id

我在为 sheet 取回列 ID 时遇到问题。下面是我失败的单元测试。关于我做错了什么的想法? ID 似乎没有进入 Column 模型。

它失败了:java.lang.AssertionError: Column "Primary Column" has null Id.

@Test
public void getColumnInfo() {
    try {
        Token token = new Token();
        token.setAccessToken(TEST_API_TOKEN);
        Smartsheet conn = new SmartsheetBuilder().setAccessToken(token.getAccessToken()).build();
        List<Column> columns = conn.sheets().columns().listColumns(TEST_SHEET_ID);
        org.junit.Assert.assertTrue("Sheet has columns.", columns.size() > 0);
        for (Column column : columns) {
            String columnName = column.getTitle();
            org.junit.Assert.assertNotNull("Column has null Title.", columnName);
            org.junit.Assert.assertNotNull("Column \"" + columnName + "\" has null Index.", column.getIndex());
            org.junit.Assert.assertNotNull("Column \"" + columnName + "\" has null Type.", column.getType());
            org.junit.Assert.assertNotNull("Column \"" + columnName + "\" has null Id.", column.getId());
        }
    } catch (Exception ex) {
        org.junit.Assert.assertNull("Exception calling API.", ex);
    }
}

这是 Smartsheet Java SDK 的 v1.1.0。

这是由于使用了比 Smartsheet SDK 当前支持的更新版本的 Jackson (> 2.4.3)。

我们将很快发布新版本的 SDK,它将支持更新版本的 Jackson。


不适用于 Jackson > 2.4.3 的特定代码行是在 JacksonJsonSerializer.java 中找到的以下代码:

OBJECT_MAPPER.addMixInAnnotations(IdentifiableModel.class, IdFieldExclusionMixin.class);

需要更改为:

SimpleModule module = new SimpleModule("Module", Version.unknownVersion());
module.setMixInAnnotation(IdentifiableModel.class, IdFieldExclusionMixin.class);
OBJECT_MAPPER.registerModule(module);