if (wrappedWriter instanceof InitializeAccessor) {
((InitializeAccessor) wrappedWriter).initialize();
}
return wrappedWriter;
}
final StorageKey partitionStratKey = new StorageKey(dataset.getDescriptor().getPartitionStrategy());
// Return a dataset writer that checks on write that an entity is within the
// range of the view
AbstractDatasetWriter<E> writer = new AbstractDatasetWriter<E>() {
private Predicate<StorageKey> keyPredicate = constraints.toKeyPredicate();
@Override
public void initialize() {
if (wrappedWriter instanceof InitializeAccessor) {
((InitializeAccessor) wrappedWriter).initialize();
}
}
@Override
public void write(E entity) {
StorageKey key = getAccessor().keyFor(entity,
constraints.getProvidedValues(), partitionStratKey);
if (!keyPredicate.apply(key)) {
throw new IllegalArgumentException("View does not contain entity: " + entity);
}
wrappedWriter.write(entity);