@SuppressWarnings({"unchecked", "rawtypes"}) private List<SerializedObject> upcastInternal( List<SerializedObject> serializedObjects, Iterator<Upcaster<?>> upcasterIterator, UpcastingContext context) { if (!upcasterIterator.hasNext()) { return serializedObjects; } List<SerializedObject> upcastObjects = new ArrayList<>(); Upcaster<?> currentUpcaster = upcasterIterator.next(); for (SerializedObject serializedObject : serializedObjects) { if (currentUpcaster.canUpcast(serializedObject.getType())) { List<SerializedType> upcastTypes; if (currentUpcaster instanceof ExtendedUpcaster) { upcastTypes = ((ExtendedUpcaster) currentUpcaster) .upcast(serializedObject.getType(), serializedObject); } else { upcastTypes = currentUpcaster.upcast(serializedObject.getType()); } upcastObjects.addAll(doUpcast(currentUpcaster, serializedObject, upcastTypes, context)); } else { upcastObjects.add(serializedObject); } } return upcastInternal(upcastObjects, upcasterIterator, context); }
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 SerializedObject<T> convert(SerializedObject<S> original) { return new SimpleSerializedObject<>( convert(original.getData()), targetType(), original.getType()); }