package com.flextrade.jfixture.builders;
import com.flextrade.jfixture.MultipleCount;
import com.flextrade.jfixture.NoSpecimen;
import com.flextrade.jfixture.SpecimenBuilder;
import com.flextrade.jfixture.SpecimenContext;
import com.flextrade.jfixture.requests.MultipleRequest;
import java.util.ArrayList;
class MultipleSpecimenRelay implements SpecimenBuilder {
private final MultipleCount multipleCount;
public MultipleSpecimenRelay(MultipleCount multipleCount) {
this.multipleCount = multipleCount;
}
@Override
public Object create(Object request, SpecimenContext context) {
if (!(request instanceof MultipleRequest)) {
return new NoSpecimen();
}
MultipleRequest multipleRequest = (MultipleRequest) request;
return buildArrayList(multipleRequest, context);
}
private Object buildArrayList(MultipleRequest multipleRequest, SpecimenContext context) {
ArrayList<Object> list = new ArrayList<Object>();
for (int i = 0; i < multipleCount.getCount(); i++) {
Object innerRequest = multipleRequest.getInnerRequest();
Object result = context.resolve(innerRequest);
if (result instanceof NoSpecimen) {
return new NoSpecimen();
}
list.add(result);
}
return list;
}
}