Jython 收到类型错误:共享已修改属性的超类型存在 MRO 冲突



我正在jython 2.7中开发IBM FileNet P8 Platform 5.2.1 Content Engine单元测试应用程序。

# Verify a directory
def testDirectory(self):
    directoryConfigurationList = [] 
    url = self.serverUrl + "?tenantId=" + self.tenantName  
    connection = Factory.Connection.getConnection(url)
    domain = Factory.Domain.fetchInstance(connection, self.tenantName, None)
    if (domain is not None):
        dc_set = domain._DirectoryConfigurations.iterator()
        while dc_set.hasNext():
            dc = dc_set.next()
            print dc._DisplayName

我收到错误:

类型

错误:共享已修改属性的超类型具有 MRO conflict[attribute=remove, supertypes=[, 'com.filenet.api.collection.DependentObjectList'>], type=CmIndexPartitionConstraintList]

在线 dc_set = domain._DirectoryConfigurations.iterator() 我现在不知道为什么。任何这方面的帮助将不胜感激。以下指向 IBM 5.2.1 知识中心的链接可能会有所帮助:

  • http://www.ibm.com/support/knowledgecenter/SSNW2F_5.2.1/com.ibm.p8.ce.dev.java.doc/com/filenet/api/collection/DirectoryConfigurationList.html
  • http://www.ibm.com/support/knowledgecenter/en/SSNW2F_5.2.1/com.ibm.p8.ce.dev.java.doc/com/filenet/api/collection/DependentObjectList.html?view=embed

问题不在于您的fileNet代码,看起来Jython不希望看到一个也是可迭代的地图。我认为它具有在每个上安装 iter 然后发生冲突的逻辑。遗憾的是,同时实现 Map 和 Iterable 的类型没有任何错误。Jython 应该服从 Iterable for iter,但看起来它需要和增强才能做到这一点。

如果检查DependentObjectList接口规范,则会在超类型接口中看到其超类型接口java.util.Collection, EngineCollection, java.lang.Iterable, java.util.List, java.io.Serializable

我相信自 Jython 2.7b1 以来,这个问题可能已修复。

更新:
我一直在挖掘我们之前在 Java 中开发的代码,我们使用以下逻辑将引擎集合转换为基于列表的集合

public static <T> List<T> convertToList(EngineCollection engineCollection) {
    Iterator<T> engineCollectionIterator = engineCollection.iterator();
    List<T> collection = new ArrayList<T>();
    CollectionUtils.addAll(collection , engineCollectionIterator);
    return collection ;
}

相关内容

  • 没有找到相关文章

最新更新