private static Stream<IntermediateEventRepresentation> upcastAndDeserialize( Stream<? extends EventData<?>> eventEntryStream, EventUpcaster upcasterChain, Function<EventData<?>, IntermediateEventRepresentation> entryConverter) { return upcasterChain.upcast(eventEntryStream.map(entryConverter)); } }
private static Stream<IntermediateEventRepresentation> upcastAndDeserialize( Stream<? extends EventData<?>> eventEntryStream, EventUpcaster upcasterChain, Function<EventData<?>, IntermediateEventRepresentation> entryConverter) { return upcasterChain.upcast(eventEntryStream.map(entryConverter)); } }
@Test @DirtiesContext @SuppressWarnings({"unchecked", "OptionalGetWithoutIsPresent"}) public void testStoreAndLoadEventsWithUpcaster() { EventUpcaster mockUpcasterChain = mock(EventUpcaster.class); when(mockUpcasterChain.upcast(isA(Stream.class))).thenAnswer(invocation -> { Stream<?> inputStream = (Stream) invocation.getArguments()[0]; return inputStream.flatMap(e -> Stream.of(e, e)); }); testSubject = createEngine(mockUpcasterChain); testSubject.appendEvents(createEvents(4)); List<DomainEventMessage> upcastedEvents = testSubject.readEvents(AGGREGATE).asStream().collect(toList()); assertEquals(8, upcastedEvents.size()); Iterator<DomainEventMessage> iterator = upcastedEvents.iterator(); while (iterator.hasNext()) { DomainEventMessage event1 = iterator.next(), event2 = iterator.next(); assertEquals(event1.getAggregateIdentifier(), event2.getAggregateIdentifier()); assertEquals(event1.getSequenceNumber(), event2.getSequenceNumber()); assertEquals(event1.getPayload(), event2.getPayload()); assertEquals(event1.getMetaData(), event2.getMetaData()); } }
private static Stream<IntermediateEventRepresentation> upcastAndDeserialize( Stream<? extends EventData<?>> eventEntryStream, EventUpcaster upcasterChain, Function<EventData<?>, IntermediateEventRepresentation> entryConverter) { return upcasterChain.upcast(eventEntryStream.map(entryConverter)); } }
private static Stream<IntermediateEventRepresentation> upcastAndDeserialize( Stream<? extends EventData<?>> eventEntryStream, EventUpcaster upcasterChain, Function<EventData<?>, IntermediateEventRepresentation> entryConverter) { return upcasterChain.upcast(eventEntryStream.map(entryConverter)); } }
private static Stream<IntermediateEventRepresentation> upcastAndDeserialize( Stream<? extends EventData<?>> eventEntryStream, Serializer serializer, EventUpcaster upcasterChain, boolean skipUnknownTypes, Function<EventData<?>, IntermediateEventRepresentation> entryConverter) { Stream<IntermediateEventRepresentation> upcastResult = upcasterChain.upcast(eventEntryStream.map(entryConverter)); if (skipUnknownTypes) { upcastResult = upcastResult.map(ir -> { try { serializer.classForType(ir.getType()); return ir; } catch (UnknownSerializedTypeException e) { return ir.upcast(SerializedType.emptyType(), byte[].class, u -> EMPTY_BYTES, Function.identity()); } }); } return upcastResult; } }