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 InstanceCustomisation<T> implements Customisation { private final Object instance; private final SpecimenType instanceType; public InstanceCustomisation(Class<T> clazz, T instance) { this.instance = instance; this.instanceType = SpecimenType.of(clazz); } public InstanceCustomisation(Type type, Object instance) { this.instance = instance; this.instanceType = SpecimenType.of(type); } @Override public void customise(JFixture fixture) { SpecimenSupplier<? extends T> supplier = new SpecimenSupplier<T>() { @Override public T create() { return (T)instance; } }; CustomBuilder<T> builder = new CustomBuilder<T>(instanceType, supplier); fixture.addBuilderToStartOfPipeline(builder); fixture.customise(new OmitAutoPropertyCustomisation(instanceType)); } }