package com.flextrade.jfixture; import com.flextrade.jfixture.customisation.Customisation; import com.flextrade.jfixture.customisation.fluent.AutoPropertyBehaviour; import com.flextrade.jfixture.customisation.fluent.NoResolutionBehaviour; import com.flextrade.jfixture.customisation.fluent.RecursionBehaviour; import com.flextrade.jfixture.utility.Interceptor; import java.lang.reflect.Type; public interface FluentCustomisation { FluentCustomisation repeatCount(int count); <T> FluentCustomisation sameInstance(Type type, T instance); <T> FluentCustomisation sameInstance(Class<T> clazz, T instance); <T> FluentCustomisation lazyInstance(Type type, SpecimenSupplier<? extends T> supplier); <T> FluentCustomisation lazyInstance(Class<T> clazz, SpecimenSupplier<? extends T> supplier); FluentCustomisation propertyOf(Class<?> clazz, String name, Object value); <T, U extends T> FluentCustomisation useSubType(Class<T> baseClass, Class<U> subClass); FluentCustomisation add(Customisation customisation); <T> FluentCustomisation intercept(Class<T> clazz, Interceptor<T> interceptor); RecursionBehaviour circularDependencyBehaviour(); NoResolutionBehaviour noResolutionBehaviour(); AutoPropertyBehaviour autoPropertyBehaviour(); }