package com.flextrade.jfixture.customisation;
import com.flextrade.jfixture.JFixture;
import com.flextrade.jfixture.SpecimenSupplier;
import com.flextrade.jfixture.utility.SpecimenType;
import java.lang.reflect.Type;
public class InstanceFactoryCustomisation<T> implements Customisation {
private final SpecimenType instanceType;
private final SpecimenSupplier<? extends T> specimenSupplier;
public InstanceFactoryCustomisation(Type instanceType, SpecimenSupplier<? extends T> supplier) {
this.instanceType = SpecimenType.of(instanceType);
this.specimenSupplier = supplier;
}
@Override
public void customise(JFixture fixture) {
CustomBuilder<T> builder = new CustomBuilder<T>(this.instanceType, this.specimenSupplier);
fixture.addBuilderToStartOfPipeline(builder);
fixture.customise(new OmitAutoPropertyCustomisation(this.instanceType));
}
}