Coherence:使用潜在的null元素优雅地导航POF路径

时间:2010-10-14 17:44:10

标签: oracle-coherence

在POF序列化的.NET对象中,我有A类包含B类,而B类有一个属性X,我想在过滤器中提取和使用。

我可以使用SimplePofPath来浏览从A到B的POF流并抓住X.除A.B == null外,这种情况很有效。

当A没有预期的B实例时,SimplePofPath失败并显示消息

  

无法调用getChild()方法   SimplePofValue实例。

而不是这个,我希望IPofNavigator做一些更优雅的事情,而不是因为我在一个字段中序列化null而无法遍历其路径时抛出异常。例如,这可能会返回用户提供的“后备”值。

是否存在此类实施?如果没有,我将如何开始自己延长AbstractPofPath?我已经看了this自定义导航器处理包含的集合,但无法理解如何开始实现navigate()

1 个答案:

答案 0 :(得分:0)

我能够通过扩展AbstractPofPath和实现递归navigate(PofValue, int)方法来实现这一点,就像链接的方法一样。我还在C#中对其进行了存根,并在.NET客户端和集群配置文件中提供了匹配的user-type配置。

在递归调用之前,该方法检查其参数是否具有等于PofConstants.V_REFERENCE_NULL的typeID,如果是,则只返回其参数而不是递归。

过去几分钟的测试表明,这种方法可以保持FilterExtractor个对象可以接受的行为。

进一步思考: 如果我有我的.NET类的Java等价物,我可以使用ChainedExtractor s。但是,集群想要知道如何反序列化提取器链中的所有内容;)