org.axonframework.upcasting
Class LazyUpcasterChain

java.lang.Object
  extended by org.axonframework.upcasting.AbstractUpcasterChain
      extended by org.axonframework.upcasting.LazyUpcasterChain
All Implemented Interfaces:
UpcasterChain

public class LazyUpcasterChain
extends AbstractUpcasterChain

UpcasterChain implementation that delays the actual upcasting until the data inside the returned SerializedObject is actually fetched. This makes this implementation perform better in cases where not all events are used.

Ordering guarantees:
This upcasterChain only guarantees that for each of the configured upcasters, all previous upcasters have had the opportunity to upcast the SerializedObject first. This UpcasterChain does not guarantee that, for each upcaster, all events are upcast in the order they are provided in the stream.

Note that this implementation is not suitable if you require each upcaster to upcast all events in a stream in order. See SimpleUpcasterChain instead for these cases.

Since:
2.0
Author:
Allard Buijze

Constructor Summary
LazyUpcasterChain(ConverterFactory converterFactory, List<Upcaster> upcasters)
          Initializes the UpcasterChain with given converterFactory and upcasters.
LazyUpcasterChain(List<Upcaster> upcasters)
          Initializes the UpcasterChain with given upcasters and a ChainingConverterFactory to convert between content types.
LazyUpcasterChain(Serializer serializer, List<Upcaster> upcasters)
          Initializes the UpcasterChain with given serializer and upcasters.
 
Method Summary
protected
<T> List<SerializedObject<?>>
doUpcast(Upcaster<T> upcaster, SerializedObject<?> sourceObject, List<SerializedType> targetTypes, UpcastingContext context)
          Performs the actual upcasting by the given upcaster on the given sourceObject.
 
Methods inherited from class org.axonframework.upcasting.AbstractUpcasterChain
ensureCorrectContentType, upcast
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

LazyUpcasterChain

public LazyUpcasterChain(List<Upcaster> upcasters)
Initializes the UpcasterChain with given upcasters and a ChainingConverterFactory to convert between content types.

Parameters:
upcasters - the upcasters to form the chain

LazyUpcasterChain

public LazyUpcasterChain(Serializer serializer,
                         List<Upcaster> upcasters)
Initializes the UpcasterChain with given serializer and upcasters. The serializer is used to fetch the ConverterFactory instance it uses. This ConverterFactory is generally adapted to the exact form of serialization used by the serializer.

Parameters:
serializer - The serializer used to serialize the data
upcasters - The upcasters to form this chain

LazyUpcasterChain

public LazyUpcasterChain(ConverterFactory converterFactory,
                         List<Upcaster> upcasters)
Initializes the UpcasterChain with given converterFactory and upcasters.

Parameters:
converterFactory - The factory providing the converters to convert between content types
upcasters - The upcasters to form this chain
Method Detail

doUpcast

protected <T> List<SerializedObject<?>> doUpcast(Upcaster<T> upcaster,
                                                 SerializedObject<?> sourceObject,
                                                 List<SerializedType> targetTypes,
                                                 UpcastingContext context)
Description copied from class: AbstractUpcasterChain
Performs the actual upcasting by the given upcaster on the given sourceObject. The returned list of serialized object must represent the upcast version of the given sourceObject.

Each item in the returned List of SerializedObject must match the given list of targetTypes. These types are returned by the invocation of Upcaster.upcast(org.axonframework.serializer.SerializedType).

Specified by:
doUpcast in class AbstractUpcasterChain
Type Parameters:
T - The representation type expected by the upcaster
Parameters:
upcaster - The upcaster to perform the upcasting with
sourceObject - The SerializedObject to upcast
targetTypes - The types expected in the returned List of SerializedObject
context - The container of properties of the Domain Event Message being upcast
Returns:
The List of SerializedObject representing the upcast sourceObject


Copyright © 2010-2016. All Rights Reserved.