/**
* {@inheritDoc}
*
* This variation allows for the inclusion of schemas for serializing
* sub-objects that may appear in {@code message}. If no suitable schema
* is found in the registry, a schema with default settings is generated
* on the fly using {@link
* SchemaSource#get(com.google.protobuf.Descriptors.Descriptor)}.
*
*/
public Message parse(JsonNode node, ReadableSchemaRegistry registry) throws ParsingException {
Message.Builder builder = DynamicMessage.newBuilder(schema.getDescriptor());
for (Map.Entry<String, FieldDescriptor> fieldEntry : schema.getFields().entrySet()) {
String fieldName = schema.getPropertyName(fieldEntry.getKey());
FieldDescriptor field = fieldEntry.getValue();
if (node.has(fieldName) && !node.get(fieldName).isNull()) {
JsonNode valueNode = node.get(fieldName);
if (field.isRepeated()) {
if (schema.getMappings().containsKey(field.getName())) {
parseMappedField(registry, builder, fieldName, field, valueNode);
} else {
parseRepeatedField(registry, builder, fieldName, field, valueNode);
}
} else {
Object value = parseValue(valueNode, field, registry);
if (value != null) {
builder.setField(field, value);
}
}
}
}
return builder.build();
}
NamedSchemaParser.java 文件源码
java
阅读 36
收藏 0
点赞 0
评论 0
项目:shapeshifter
作者:
评论列表
文章目录