package com.flextrade.jfixture.rules; import java.lang.reflect.Type; import com.flextrade.jfixture.FluentCustomisation; import com.flextrade.jfixture.JFixture; import com.flextrade.jfixture.SpecimenSupplier; 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; public class FixtureRuleCustomisation extends FixtureRule implements FluentCustomisation { private FluentCustomisation customisation; FixtureRuleCustomisation(JFixture fixture) { super(fixture); customisation = fixture.customise(); } @Override public FixtureRuleCustomisation repeatCount(int count) { customisation.repeatCount(count); return this; } @Override public <T> FixtureRuleCustomisation sameInstance(Type type, T instance) { customisation.sameInstance(type, instance); return this; } @Override public <T> FixtureRuleCustomisation sameInstance(Class<T> clazz, T instance) { customisation.sameInstance(clazz, instance); return this; } @Override public <T> FixtureRuleCustomisation lazyInstance(Type type, SpecimenSupplier<? extends T> supplier) { customisation.lazyInstance(type, supplier); return this; } @Override public <T> FixtureRuleCustomisation lazyInstance(Class<T> clazz, SpecimenSupplier<? extends T> supplier) { customisation.lazyInstance(clazz, supplier); return this; } @Override public FluentCustomisation propertyOf(Class<?> clazz, String name, Object value) { customisation.propertyOf(clazz, name, value); return this; } @Override public <T, U extends T> FixtureRuleCustomisation useSubType(Class<T> baseClass, Class<U> subClass) { customisation.useSubType(baseClass, subClass); return this; } @Override public FixtureRuleCustomisation add(Customisation customisation) { this.customisation.add(customisation); return this; } @Override public <T> FixtureRuleCustomisation intercept(Class<T> clazz, Interceptor<T> interceptor) { customisation.intercept(clazz, interceptor); return this; } @Override public RecursionBehaviour circularDependencyBehaviour() { return customisation.circularDependencyBehaviour(); } @Override public NoResolutionBehaviour noResolutionBehaviour() { return customisation.noResolutionBehaviour(); } @Override public AutoPropertyBehaviour autoPropertyBehaviour() { return customisation.autoPropertyBehaviour(); } }