private void updateToNextProducer(InputT input) { if (doneWithOwn) { isDone = true; } else { if (predicate.test(input)) { BuilderT builder = factory.createSequential(); currentResult = function.buildComputation(builder, input); currentProducer = builder.build(); } else { doneWithOwn = true; if (next != null) { currentProducer = next.createProducer(input, factory); next = null; } } } }
public Pair<ProtocolProducer, DRes<OutputT>> createNextStep( InputT input, BuilderFactory<BuilderT> factory, BuildStep<OutputT, BuilderT, ?> next) { BuilderT builder = createBuilder(factory); DRes<OutputT> output = function.buildComputation(builder, input); if (next != null) { List<ProtocolProducer> protocols = Arrays.asList( builder.build(), new LazyProtocolProducerDecorator(() -> { OutputT out = null; if (output != null) { out = output.out(); } return next.createProducer(out, factory); })); SequentialProtocolProducer protocolProducer = new SequentialProtocolProducer(protocols); return new Pair<>(protocolProducer, null); } else { return new Pair<>(builder.build(), output); } }
@Test(expected = IllegalStateException.class) public void build() throws Exception { ProtocolBuilderImpl<BuilderTestClass> protocolBuilder = new BuilderTestClass(); protocolBuilder.append(null); protocolBuilder.build(); protocolBuilder.append(null); }