public interface OutputCollector<T,R>
The operation method usually declare a scalar type (e.g. data object) as
argument. When the operation method is invoked on an iterator over elements
of that type the execution of the chain may help you deal with this by
automatically invoking your method over every element in the input iterator.
For this to work you should set the collector that should be used by the
OperationMethod.collector() in order to construct
the method output.
So a collector is in fact collecting the result of each individual invocation
over a collections of inputs. The collector will be asked by the chain
execution to add an individual result by calling
#add(OperationContext, Object). This method is taking as argument the
return value of the invocation - so it must accept the same type of object -
see T generic type. When all partial results are collected the collector will
be asked to return the operation result through the
So when writing a collector you must ensure that the collected type is compatible with the one returned by the operation method where the collector is used.
IMPORTANT<> An implementation of this class must explicitly implements this interface (and not through its super classes). This is to ease generic type detections. If not doing so your collector class will be rejected and the operation using it invalid.
Copyright © 2012 Nuxeo SA. All Rights Reserved.