/** * Returns an {@link OperationRequestPreprocessor} that will preprocess the request by * applying the given {@code preprocessors} to it. * @param preprocessors the preprocessors * @return the request preprocessor */ public static OperationRequestPreprocessor preprocessRequest( OperationPreprocessor... preprocessors) { return new DelegatingOperationRequestPreprocessor(Arrays.asList(preprocessors)); }
@Test public void delegationOccurs() { OperationRequest originalRequest = mock(OperationRequest.class); OperationPreprocessor preprocessor1 = mock(OperationPreprocessor.class); OperationRequest preprocessedRequest1 = mock(OperationRequest.class); OperationPreprocessor preprocessor2 = mock(OperationPreprocessor.class); OperationRequest preprocessedRequest2 = mock(OperationRequest.class); OperationPreprocessor preprocessor3 = mock(OperationPreprocessor.class); OperationRequest preprocessedRequest3 = mock(OperationRequest.class); given(preprocessor1.preprocess(originalRequest)).willReturn(preprocessedRequest1); given(preprocessor2.preprocess(preprocessedRequest1)) .willReturn(preprocessedRequest2); given(preprocessor3.preprocess(preprocessedRequest2)) .willReturn(preprocessedRequest3); OperationRequest result = new DelegatingOperationRequestPreprocessor( Arrays.asList(preprocessor1, preprocessor2, preprocessor3)) .preprocess(originalRequest); assertThat(result).isSameAs(preprocessedRequest3); }