/** * Initialized a DispatchMessage for the given <code>commandMessage</code>, to be serialized using * given <code>serializer</code>. <code>expectReply</code> indicates whether the sender will be * expecting a reply. * * @param commandMessage The message to send to the remote segment * @param serializer The serialize to serialize the message payload and metadata with * @param expectReply whether or not the sender is waiting for a reply. */ public DispatchMessage( CommandMessage<?> commandMessage, Serializer serializer, boolean expectReply) { this.commandIdentifier = commandMessage.getIdentifier(); this.expectReply = expectReply; SerializedObject<byte[]> payload = serializePayload(commandMessage, serializer, byte[].class); SerializedObject<byte[]> metaData = serializeMetaData(commandMessage, serializer, byte[].class); payloadType = payload.getType().getName(); payloadRevision = payload.getType().getRevision(); serializedPayload = payload.getData(); serializedMetaData = metaData.getData(); commandName = commandMessage.getCommandName(); }
private EventEntry(Serializer serializer, DomainEventMessage event) { this.eventIdentifier = event.getIdentifier(); Class<?> serializationTarget = String.class; if (serializer.canSerializeTo(DBObject.class)) { serializationTarget = DBObject.class; } SerializedObject serializedPayloadObject = serializePayload(event, serializer, serializationTarget); SerializedObject serializedMetaDataObject = serializeMetaData(event, serializer, serializationTarget); this.serializedPayload = serializedPayloadObject.getData(); this.payloadType = serializedPayloadObject.getType().getName(); this.payloadRevision = serializedPayloadObject.getType().getRevision(); this.serializedMetaData = serializedMetaDataObject.getData(); this.sequenceNumber = event.getSequenceNumber(); this.timestamp = event.getTimestamp().toEpochMilli(); }
@Override public Document doUpcast( SerializedObject<Document> intermediateRepresentation, UpcastingContext context) { // here, we convert the XML format of the old event to that of the new event Document data = intermediateRepresentation.getData(); Element rootElement = data.getRootElement(); // change the name of the root element to reflect the changed class name rootElement.setName(NewToDoItemWithDeadlineCreatedEvent.class.getName()); // and add an element for the new "deadline" field rootElement .addElement("deadline") // we set the value of the field to the default value: one day after the event was created .setText(context.getTimestamp().plusDays(1).toString()); // we return the modified Document return data; }