Descriptor wrapperDescriptor = ctx.getMessageDescriptor(WrappedMessage.PROTOBUF_TYPE_NAME);
private GenericDescriptor getDescriptor() { return typeId != null ? ctx.getDescriptorByTypeId(typeId) : ctx.getDescriptorByName(typeName); }
} else if (t instanceof Enum) { EnumMarshaller enumMarshaller = (EnumMarshaller) ctx.getMarshaller((Class<Enum>) t.getClass()); int encodedEnum = enumMarshaller.encode((Enum) t); Integer typeId = ctx.getTypeIdByName(enumMarshaller.getTypeName()); if (typeId == null) { out.writeString(WRAPPED_DESCRIPTOR_FULL_NAME, enumMarshaller.getTypeName()); Integer typeId = ctx.getTypeIdByName(typeName); if (typeId == null) { out.writeString(WRAPPED_DESCRIPTOR_FULL_NAME, typeName);
private static void writeMessage(ImmutableSerializationContext ctx, RawProtoStreamWriter out, MultiMessage t) throws IOException { if ( t == null ) { return; } // This is either an unknown primitive type or a message type. Try to use a message marshaller. BaseMarshallerDelegate marshallerDelegate = ( (SerializationContextImpl) ctx ).getMarshallerDelegate( t.getMessageType() ); ByteArrayOutputStreamEx buffer = new ByteArrayOutputStreamEx(); RawProtoStreamWriter nestedOut = RawProtoStreamWriterImpl.newInstance( buffer ); marshallerDelegate.marshall( null, t, null, nestedOut ); nestedOut.flush(); String typeName = marshallerDelegate.getMarshaller().getTypeName(); Integer typeId = ctx.getTypeIdByName( typeName ); if ( typeId == null ) { out.writeString( WRAPPED_DESCRIPTOR_FULL_NAME, typeName ); } else { out.writeInt32( WRAPPED_DESCRIPTOR_ID, typeId ); } out.writeBytes( WRAPPED_MESSAGE, buffer.getByteBuffer() ); out.flush(); } }
return Type.SINT64; default: GenericDescriptor descriptorByName = ctx.getDescriptorByName(fullTypeName); if (descriptorByName instanceof EnumDescriptor) { return Type.ENUM;
descriptorFullName = ctx.getTypeNameById(typeId);
private static void processObject(ImmutableSerializationContext ctx, JsonReader reader, RawProtoStreamWriter writer, String type, Integer typeId, boolean topLevel) throws IOException { GenericDescriptor descriptorByName = ctx.getDescriptorByName(type);
@Override public KObjectImpl readFrom(ProtoStreamReader protoStreamReader) throws IOException { Descriptor descriptor = protoStreamReader.getSerializationContext().getMessageDescriptor(this.getTypeName()); List<KProperty<?>> properties = descriptor.getFields() .stream() .filter(fieldDescriptor -> !isMainAttribute(fieldDescriptor)) .filter(fieldDescriptor -> isExtension(descriptor.getName()) ) .map(field -> (KProperty<?>) new KPropertyImpl(toKPropertyFormat(field.getName()), this.read(field, protoStreamReader), false) ) .collect(toList()); String id = protoStreamReader.readString(MetaObject.META_OBJECT_ID); String type = protoStreamReader.readString(MetaObject.META_OBJECT_TYPE); String clusterId = protoStreamReader.readString(CLUSTER_ID); String segmentId = protoStreamReader.readString(SEGMENT_ID); String key = protoStreamReader.readString(MetaObject.META_OBJECT_KEY); String fullText = protoStreamReader.readString(MetaObject.META_OBJECT_FULL_TEXT); return new KObjectImpl(id, type, clusterId, segmentId, key, properties, !StringUtils.isEmpty(fullText)); }
case BEGIN_OBJECT: reader.beginObject(); Descriptor d = (Descriptor) ctx.getDescriptorByName(type); FieldDescriptor fieldByName = d.findFieldByName(field); int number = fieldByName.getNumber(); case NUMBER: case BOOLEAN: Descriptor de = (Descriptor) ctx.getDescriptorByName(type); FieldDescriptor fd = de.findFieldByName(field); Type fieldType = fd.getType();
KObject kObject) throws IOException { Descriptor descriptor = protoStreamWriter.getSerializationContext().getMessageDescriptor(this.getTypeName());
private static void processJsonDocument(ImmutableSerializationContext ctx, JsonReader reader, RawProtoStreamWriter writer) throws IOException { reader.beginObject(); String currentField; String topLevelType; JsonToken token = reader.peek(); while (reader.hasNext() && !(token == END_DOCUMENT)) { token = reader.peek(); switch (token) { case NAME: currentField = reader.nextName(); expectField(JSON_TYPE_FIELD, currentField); break; case STRING: topLevelType = reader.nextString(); Type fieldType = getFieldType(ctx, topLevelType); switch (fieldType) { case ENUM: processEnum(reader, writer, (EnumDescriptor) ctx.getDescriptorByName(topLevelType)); break; case MESSAGE: processObject(ctx, reader, writer, topLevelType, null, true); break; default: processPrimitive(reader, writer, fieldType); break; } } } }
@Override public KObjectImpl readFrom(ProtoStreamReader protoStreamReader) throws IOException { Descriptor descriptor = protoStreamReader.getSerializationContext().getMessageDescriptor(this.getTypeName()); List<KProperty<?>> properties = descriptor.getFields() .stream() .filter(fieldDescriptor -> !isMainAttribute(fieldDescriptor)) .filter(fieldDescriptor -> isExtension(descriptor.getName()) ) .map(field -> (KProperty<?>) new KPropertyImpl(toKPropertyFormat(field.getName()), this.read(field, protoStreamReader), false) ) .collect(toList()); String id = protoStreamReader.readString(MetaObject.META_OBJECT_ID); String type = protoStreamReader.readString(MetaObject.META_OBJECT_TYPE); String clusterId = protoStreamReader.readString(CLUSTER_ID); String segmentId = protoStreamReader.readString(SEGMENT_ID); String key = protoStreamReader.readString(MetaObject.META_OBJECT_KEY); String fullText = protoStreamReader.readString(MetaObject.META_OBJECT_FULL_TEXT); return new KObjectImpl(id, type, clusterId, segmentId, key, properties, !StringUtils.isEmpty(fullText)); }
KObject kObject) throws IOException { Descriptor descriptor = protoStreamWriter.getSerializationContext().getMessageDescriptor(this.getTypeName());