OptimisticLockOption.java
package org.codefilarete.stalactite.dsl.entity;
import javax.annotation.Nullable;
import org.codefilarete.reflection.ReversibleAccessor;
import org.codefilarete.stalactite.engine.configurer.ValueAccessPointVariantSupport;
import org.codefilarete.tool.function.Serie;
import org.danekja.java.util.function.serializable.SerializableBiConsumer;
import org.danekja.java.util.function.serializable.SerializableFunction;
public class OptimisticLockOption<C, V> {
private final ValueAccessPointVariantSupport<C, V> versionAccessor;
@Nullable
private final Serie<V> serie;
public OptimisticLockOption(SerializableFunction<C, V> getter, @Nullable Serie<V> serie) {
this.versionAccessor = new ValueAccessPointVariantSupport<>(getter);
this.serie = serie;
}
public OptimisticLockOption(SerializableBiConsumer<C, V> setter, @Nullable Serie<V> serie) {
this.versionAccessor = new ValueAccessPointVariantSupport<>(setter);
this.serie = serie;
}
public OptimisticLockOption(Class persistedClass, String fieldName, @Nullable Serie<V> serie) {
this.versionAccessor = new ValueAccessPointVariantSupport<>(persistedClass, fieldName);
this.serie = serie;
}
public ReversibleAccessor<C, V> getVersionAccessor() {
return versionAccessor.getAccessor();
}
@Nullable
public Serie<V> getSerie() {
return serie;
}
}