在OpenMetadata接口中使用OMI_IGNORE_NOTFOUND标志

时间:2017-07-09 11:30:08

标签: java sas sas-metadata

SAS Open Metadata reference(第126页)中,它说: UpdateMetadata方法使您可以更新现有元数据对象的属性。如果要更新的元数据对象不存在,则返回错误,除非设置了OMI_IGNORE_NOTFOUND(134217728)标志。

这是我的问题,如果我指定了标志或者我没有指定标志,我仍然会得到同样的错误:(“无法在Foundation存储库的wlibrary容器中找到SASLibrary:A5X8AHW1.B40000SQ。”)

以下是重现错误的代码段:

import com.sas.meta.SASOMI.IOMI;
import com.sas.metadata.MetadataUtil;
import org.omg.CORBA.StringHolder;

IOMI iOMI = ... // an instance of IOMI connection

StringHolder outputMeta = new StringHolder();

String request = ""
        + "<UpdateMetadata>"
        + "   <Metadata>"
        + "     <SASLibrary Id=\"A5X8AHW1.B40000SQ\"/>"
        + "   </Metadata>"
        + "   <NS>SAS</NS>"
        + "   <Flags>" + (MetadataUtil.OMI_IGNORE_NOTFOUND | MetadataUtil.OMI_TRUSTED_CLIENT | MetadataUtil.OMI_RETURN_LIST) + "</Flags>"
        + "   <Options/>"
        + "</UpdateMetadata>"
        ;

iOMI.DoRequest(request, outputMeta);

任何想法出了什么问题?

1 个答案:

答案 0 :(得分:2)

与该文档所述内容相反,我只看到OMI_IGNORE_NOTFOUND标志与DeleteMetadata方法一起使用。

javadoc似乎也通过陈述

来支持这一点
  

OMI_IGNORE_NOTFOUND(134217728)此标志用于DeleteMetadata,以告知它忽略未找到的对象,以便在出错时不会返回。

com.sas.metadata.remote.MdOMIUtil Interface Field Summery