Opendaylight序列化空值问题

时间:2019-06-12 08:03:12

标签: opendaylight ietf-netmod-yang

我正在使用Opendaylight(oxygen-sr4)开发一个项目。我通过Yang定义了对象。 .yang个文件,例如:grouping person{ leaf enName{ type string; } leaf zhName{ type string; } }

当我将一个人对象传输到前端时,如果field的值为null,我发现field缺少问题。 我需要:{"person":{"enName":"allen","zhName":null}},但是我得到了:{"person":{"enName":"allen"}})

我调试了项目。我发现问题是在序列化Person.java模块下的DataNodeContainerSerializerSource人对象(mdsal-binding-dom-codec由Yang自动生成)时
 生成匿名序列化方法,并添加了null检查,如下所示:

java.lang.String getZhName = ((java.lang.String) _input.getZhName());
if (getZhName != null) {
    _stream.leafNode("zhName",getZhName);
} 

org.opendaylight.mdsal.binding.dom.codec.gen.impl.DataNodeContainerSerializerSource生成的匿名序列化方法:

private void emitChild(final StringBuilder sb, final String getterName, final Type childType,
            final DataSchemaNode schemaChild) {
        sb.append(statement(assign(childType, getterName, cast(childType, invoke(INPUT, getterName)))));

        sb.append("if (").append(getterName).append(" != null) {\n");
        emitChildInner(sb, getterName, childType, schemaChild);
        sb.append("}\n");
    }

有什么方法可以传输空值字段?通过修改.yang文件的配置?还是通过创建扩展DataNodeContainerSerializerSource的自定义类?

顺便说一句,我发现DataNodeContainerSerializerSource已过时。

0 个答案:

没有答案