/** * Initializes a {@link SerializedMessage} with given {@code identifier} from the given serialized payload and * metadata. The given {@code serializer} will be used to deserialize the data. * * @param identifier the message identifier * @param serializedPayload the serialized message payload * @param serializedMetaData the serialized message metadata * @param serializer the serializer required when the data needs to be deserialized */ public SerializedMessage(String identifier, SerializedObject<?> serializedPayload, SerializedObject<?> serializedMetaData, Serializer serializer) { this(identifier, new LazyDeserializingObject<>(serializedPayload, serializer), new LazyDeserializingObject<>(serializedMetaData, serializer)); }
@Override public LazyDeserializingObject<MetaData> getMetaData() { if (metaData == null) { metaData = new LazyDeserializingObject<>(metaDataUpcastFunction.apply(source.getMetaData().getObject())); } return metaData; } }
@Override public Class<R> getPayloadType() { if (serializedPayload == null) { return null; } return serializedPayload.getType(); }
@SuppressWarnings("unchecked") @Override public <R> SerializedObject<R> serializePayload(Serializer serializer, Class<R> expectedRepresentation) { if (serializer.equals(payload.getSerializer())) { return serializer.getConverter().convert(payload.getSerializedObject(), expectedRepresentation); } return serializer.serialize(payload.getObject(), expectedRepresentation); }
@Override public R getPayload() { if (serializedPayload == null) { return null; } return serializedPayload.getObject(); }
/** * Indicates whether the metaData of this message has already been deserialized. * * @return {@code true} if the metaData is deserialized, otherwise {@code false} */ public boolean isMetaDataDeserialized() { return metaData.isDeserialized(); }
@SuppressWarnings("unchecked") @Override public <R> SerializedObject<R> serializeMetaData(Serializer serializer, Class<R> expectedRepresentation) { if (serializer.equals(metaData.getSerializer())) { return serializer.getConverter().convert(metaData.getSerializedObject(), expectedRepresentation); } return serializer.serialize(metaData.getObject(), expectedRepresentation); }
@Override public MetaData getMetaData() { return metaData.getObject(); }
/** * Indicates whether the payload of this message has already been deserialized. * * @return {@code true} if the payload is deserialized, otherwise {@code false} */ public boolean isPayloadDeserialized() { return payload.isDeserialized(); }
@Override protected SerializedMessage<T> withMetaData(MetaData metaData) { if (getMetaData().equals(metaData)) { return this; } return new SerializedMessage<>(this, new LazyDeserializingObject<>(metaData)); }
@Override public LazyDeserializingObject<MetaData> getMetaData() { if (metaData == null) { metaData = new LazyDeserializingObject<>(metaDataUpcastFunction.apply(source.getMetaData().getObject())); } return metaData; } }
@SuppressWarnings("unchecked") @Override public <R> SerializedObject<R> serializePayload(Serializer serializer, Class<R> expectedRepresentation) { if (serializer.equals(payload.getSerializer())) { return serializer.getConverter().convert(payload.getSerializedObject(), expectedRepresentation); } return serializer.serialize(payload.getObject(), expectedRepresentation); }
@Override public Q getPayload() { return serializedPayload.getObject(); }
@Override public Class<Q> getPayloadType() { return serializedPayload.getType(); }
/** * De-serializes the object and returns the result. * * @return the deserialized object */ public T getObject() { if (!isDeserialized()) { deserializedObject = serializer.deserialize(serializedObject.get()); } return deserializedObject; }
public GrpcBackedQueryMessage(QueryRequest query, Serializer messageSerializer, Serializer genericSerializer) { this.query = query; this.messageSerializer = messageSerializer; this.serializedPayload = new LazyDeserializingObject<>(new GrpcSerializedObject(query.getPayload()), messageSerializer); this.serializedResponseType = new LazyDeserializingObject<>(new GrpcSerializedObject(query.getResponseType()), genericSerializer); this.metadata = new GrpcMetadata(query.getMetaDataMap(), messageSerializer); }
@Override public LazyDeserializingObject<MetaData> getMetaData() { if (metaData == null) { metaData = new LazyDeserializingObject<>(metaDataUpcastFunction.apply(source.getMetaData().getObject())); } return metaData; } }
@SuppressWarnings("unchecked") @Override public <R> SerializedObject<R> serializeMetaData(Serializer serializer, Class<R> expectedRepresentation) { if (serializer.equals(metaData.getSerializer())) { return serializer.getConverter().convert(metaData.getSerializedObject(), expectedRepresentation); } return serializer.serialize(metaData.getObject(), expectedRepresentation); }
@Override public ResponseType<U> getUpdateResponseType() { return updateType.getObject(); }
@Override public Class<U> getPayloadType() { return payload.getType(); }