schema.metaDataColumn()) + ") VALUES (?,?,?,?,?,?,?,?,?)"; preparedStatement.setString(1, snapshot.getIdentifier()); preparedStatement.setString(2, snapshot.getAggregateIdentifier()); preparedStatement.setLong(3, snapshot.getSequenceNumber());
SerializedObject<?> payload = event.serializePayload(serializer, dataType); SerializedObject<?> metaData = event.serializeMetaData(serializer, dataType); preparedStatement.setString(1, event.getIdentifier()); preparedStatement.setString(2, event.getAggregateIdentifier()); preparedStatement.setLong(3, event.getSequenceNumber());
@Test @SuppressWarnings("OptionalGetWithoutIsPresent") public void testLoadTrackedEvents() throws InterruptedException { testSubject.appendEvents(createEvents(4)); assertEquals(4, testSubject.readEvents(null, false).count()); // give the clock some time to make sure the last message is really last Thread.sleep(10); DomainEventMessage<?> eventMessage = createEvent("otherAggregate", 0); testSubject.appendEvents(eventMessage); assertEquals(5, testSubject.readEvents(null, false).count()); assertEquals(eventMessage.getIdentifier(), testSubject.readEvents(null, false).reduce((a, b) -> b).get().getIdentifier()); }
/** * Constructor used to create a new event entry to store in Mongo. * * @param serializer Serializer to use for the event to store * @param events The events contained in this commit */ public CommitEntry(List<? extends DomainEventMessage<?>> events, Serializer serializer) { DomainEventMessage firstEvent = events.get(0); DomainEventMessage lastEvent = events.get(events.size() - 1); firstSequenceNumber = firstEvent.getSequenceNumber(); firstTimestamp = formatInstant(firstEvent.getTimestamp()); lastTimestamp = formatInstant(lastEvent.getTimestamp()); lastSequenceNumber = lastEvent.getSequenceNumber(); aggregateIdentifier = lastEvent.getAggregateIdentifier(); lastEventIdentifier = lastEvent.getIdentifier(); aggregateType = lastEvent.getType(); eventEntries = new EventEntry[events.size()]; for (int i = 0, eventsLength = events.size(); i < eventsLength; i++) { DomainEventMessage event = events.get(i); eventEntries[i] = new EventEntry(event, serializer); } }
SerializedObject<?> payload = event.serializePayload(serializer, dataType); SerializedObject<?> metaData = event.serializeMetaData(serializer, dataType); preparedStatement.setString(1, event.getIdentifier()); preparedStatement.setString(2, event.getAggregateIdentifier()); preparedStatement.setLong(3, event.getSequenceNumber());
schema.metaDataColumn()) + ") VALUES (?,?,?,?,?,?,?,?,?)"; preparedStatement.setString(1, snapshot.getIdentifier()); preparedStatement.setString(2, snapshot.getAggregateIdentifier()); preparedStatement.setLong(3, snapshot.getSequenceNumber());
/** * Constructor used to create a new event entry to store in Mongo. * * @param event The actual DomainEvent to store * @param serializer Serializer to use for the event to store */ public EventEntry(DomainEventMessage<?> event, Serializer serializer) { aggregateIdentifier = event.getAggregateIdentifier(); aggregateType = event.getType(); sequenceNumber = event.getSequenceNumber(); eventIdentifier = event.getIdentifier(); Class<?> serializationTarget = String.class; if (serializer.canSerializeTo(DBObject.class)) { serializationTarget = DBObject.class; } SerializedObject<?> serializedPayloadObject = event.serializePayload(serializer, serializationTarget); SerializedObject<?> serializedMetaDataObject = event.serializeMetaData(serializer, serializationTarget); serializedPayload = serializedPayloadObject.getData(); payloadType = serializedPayloadObject.getType().getName(); payloadRevision = serializedPayloadObject.getType().getRevision(); serializedMetaData = serializedMetaDataObject.getData(); timestamp = formatInstant(event.getTimestamp()); }