package org.ovirt.engine.ui.uicommonweb.builders;
/**
* Base synchronous implementation of the {@link Builder}. It takes care of the boilerplate invocation of the rest and lets it's descendants
* to only take care of copying parameters.
* <p>
* Use this only when the the descendant class does not do any async call. Otherwise implement the {@link Builder} directly
*/
public abstract class BaseSyncBuilder<S, D> implements SyncBuilder<S, D> {
@Override
public void build(S source, D destination, BuilderList<S, D> rest) {
build(source, destination);
rest.head().build(source, destination, rest.tail());
}
/**
* Builds the backend model from frontend the one
*
* @param frontend source
* @param backend destination
*/
protected abstract void build(S source, D destination);
}