SenderProducer { @Produces public Sender produceSender(final InjectionPoint injectionPoint) { final EnvelopeValidator envelopeValidator = new EnvelopeValidator( jsonSchemaValidator, objectMapper, envelopeValidationExceptionHandler ); final RequestResponseEnvelopeValidator requestResponseEnvelopeValidator = new RequestResponseEnvelopeValidator( envelopeValidator, nameToMediaTypeConverter, mediaTypeProvider, envelopeInspector); return new DispatcherDelegate( dispatcherCache.dispatcherFor(injectionPoint), systemUserUtil, requestResponseEnvelopeValidator, envelopePayloadTypeConverter, jsonEnvelopeRepacker); }  @Produces Sender produceSender(final InjectionPoint injectionPoint);  }
@Test public void shouldCreateANewSenderDispatcherDelegate() throws Exception { final InjectionPoint injectionPoint = mock(InjectionPoint.class); final Dispatcher dispatcher = mock(Dispatcher.class); when(dispatcherCache.dispatcherFor(injectionPoint)).thenReturn(dispatcher); final DispatcherDelegate dispatcherDelegate = (DispatcherDelegate) senderProducer.produceSender(injectionPoint); assertThat(privateField("dispatcher", dispatcherDelegate, Dispatcher.class), is(dispatcher)); assertThat(privateField("systemUserUtil", dispatcherDelegate, SystemUserUtil.class), is(systemUserUtil)); assertThat(privateField("envelopePayloadTypeConverter", dispatcherDelegate, EnvelopePayloadTypeConverter.class), is(envelopePayloadTypeConverter)); assertThat(privateField("jsonEnvelopeRepacker", dispatcherDelegate, JsonEnvelopeRepacker.class), is(jsonEnvelopeRepacker)); final RequestResponseEnvelopeValidator requestResponseEnvelopeValidator = privateField("requestResponseEnvelopeValidator", dispatcherDelegate, RequestResponseEnvelopeValidator.class); assertThat(privateField("nameToMediaTypeConverter", requestResponseEnvelopeValidator, NameToMediaTypeConverter.class), is(nameToMediaTypeConverter)); assertThat(privateField("mediaTypeProvider", requestResponseEnvelopeValidator, MediaTypeProvider.class), is(mediaTypeProvider)); assertThat(privateField("envelopeInspector", requestResponseEnvelopeValidator, EnvelopeInspector.class), is(envelopeInspector)); final EnvelopeValidator envelopeValidator = privateField("envelopeValidator", requestResponseEnvelopeValidator, EnvelopeValidator.class); assertThat(privateField("jsonSchemaValidator", envelopeValidator, JsonSchemaValidator.class), is(jsonSchemaValidator)); assertThat(privateField("objectMapper", envelopeValidator, ObjectMapper.class), is(objectMapper)); assertThat(privateField("envelopeValidationExceptionHandler", envelopeValidator, EnvelopeValidationExceptionHandler.class), is(envelopeValidationExceptionHandler)); }