【发布时间】:2018-07-30 19:45:32
【问题描述】:
我想用一些自定义片段来扩展托管对象。像这样的:
@Alias(value = "Dictionary")
public class Dictionary extends AbstractDynamicProperties {
private Map<String, String> records = new HashMap<>();
@JSONProperty(ignoreIfNull = false)
public Map<String, String> getRecords() { return this.records; }
(...)
}
当我创建一个新的托管对象并将其保存到库存 API 中时,一切看起来都很棒:
ManagedObjectRepresentation dictionary = new ManagedObjectRepresentation();
dictionary.setName(dictionaryName);
dictionary.set(new Dictionary());
不幸的是,当我获取这个托管对象并想要检索 Dictionary 类时,我收到了一个 HashMap:
dictionary.get(Dictionary.class).addRecord(key, value);
经过一些调试,我发现保存托管对象时,ExtensibilityConverter(tryGetAlias() 第 98 行)正在遍历对象中的所有注解,如果找到 Alias 注释,它从那里获取值。
另一方面,当 Cumulocity 的响应被反序列化时,Svenson 正在使用 AliasMapClassFinder,我只能在 ExtensibilityConverter 中看到初始化。我无法发现这张地图 alias2ClassName 已被填充的任何地方,因为它总是空的,所以我收到的是 HashMap 而不是我期望的类。
我错过了什么吗?或者这是 SDK 中的错误?
【问题讨论】:
标签: java cumulocity