package com.flextrade.jfixture.extensions; import com.flextrade.jfixture.BuilderContainer; import com.flextrade.jfixture.SpecimenBuilder; import com.flextrade.jfixture.SpecimenContext; import com.flextrade.jfixture.requests.ElementFromListRequest; import com.flextrade.jfixture.requests.RangeRequest; import com.flextrade.jfixture.utility.SpecimenType; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class CreateExtensionsImpl implements CreateExtensions { private final BuilderContainer builderContainer; public CreateExtensionsImpl(BuilderContainer builderContainer) { this.builderContainer = builderContainer; } @Override public <T, U extends Comparable<U>> T inRange(Class<T> clazz, U min, U max) { Object result = this.create(new RangeRequest<U>(SpecimenType.of(clazz), min, max)); return (T) result; } @Override public <T> T fromList(T... list) { List<Object> objects = new ArrayList<Object>(); Collections.addAll(objects, list); Object result = this.create(new ElementFromListRequest(objects)); return (T) result; } private Object create(Object request) { SpecimenBuilder builder = builderContainer.getBuilder(); SpecimenContext context = builderContainer.getContext(); return builder.create(request, context); } }