У меня есть модульные тесты с использованием макетов и MockDispatcherFactory для тестирования моего приложения Rest. Они работали с предыдущими версиями Resteasy, но при обновлении до 3.15.0.Final (Wildfly 24) объекты @Context больше не внедряются. Вот мой тестовый код:
У меня есть модульные тесты с использованием макетов и MockDispatcherFactory для тестирования моего приложения Rest. Они работали с предыдущими версиями Resteasy, но при обновлении до 3.15.0.Final (Wildfly 24) объекты @Context больше не внедряются. Вот мой тестовый код: [code]private MockHttpResponse request(final Method method, final String uri, final HttpServletRequest mockedRequest, final Object service, final Optional content, final Optional contentType, final Optional, Object> contextObject : contextObjects.get().entrySet()) { dispatcher.getDefaultContextObjects().put(contextObject.getKey(), contextObject.getValue()); pushContext(contextObject.getKey(), contextObject.getValue()); } }
if (cookies.isPresent()) { for (Map.Entry cookieEntry : cookies.get().entrySet()) { request.cookie(cookieEntry.getKey(), cookieEntry.getValue()); } }
if (content.isPresent()) { request.content(content.get()); } final MockHttpResponse response = new MockHttpResponse();
dispatcher.invoke(request, response);
return response; }
@SuppressWarnings("unchecked") public void pushContext(Class clasz, Object obj) { Class type = (Class) clasz; ResteasyProviderFactory.pushContext(type, (T) obj); }
[/code] Я попробовал два метода, как вы можете видеть в коде: [list] [*]dispatcher.getDefaultContextObjects().put(contextObject .getKey(), contextObject.getValue()); [*]RestaasyProviderFactory.pushContext(type, (T) obj); И моя конечная точка отдыха: [/list] [code] public void updatePassword(@PathParam(value = "panelist") String panelistId, @Context Optional authenticatedPanelist, CurrentAndNewCredentialsDto dto) throws ForbiddenException, InvalidArgumentException, UnexpectedException {
Try result = facade.updatePassword(panelistId, currentAndNewPassword); if (result.isFailure()) { Throwable failure = result.getFailure(); if (failure instanceof InvalidArgumentException) { logger.warn("Failure when panelist tries to updatePassword, for panelist {}", panelistId, failure); throw (InvalidArgumentException) failure; } else { throw new UnexpectedException(failure); } } } [/code] Есть предложения? Я попробовал два метода, как вы можете видеть в коде: [list] [*]dispatcher.getDefaultContextObjects().put(contextObject.getKey(), contextObject.getValue()); RestaasyProviderFactory.pushContext(type, (T) obj);< /li> [/list] Я ожидаю, что @Context-инъекции работают как и в более старых версиях