У меня есть ServletRequest
, который оборачивается несколько раз с помощью javax.servlet.ServletRequestWrapper#ServletRequestWrapper
У меня также есть какой-то метод, где входящий параметр - HttpServletRequest
, который является оберткой верхнего уровня ServletRequest
.
Есть удобный способ проверить, обернут ли этот входящий ServletRequest
какой-то конкретный ServletRequestWrapper
- javax.servlet.ServletRequestWrapper#isWrapperFor(java.lang.Class)
Мой вопрос заключается в том, существует ли какой-либо метод (в некоторых Java-библиотеках), который позволяет получить этоконкретный ServletRequestWrapper
из входящих HttpServletRequest
Метод, который делает подобные вещи:
public <T extends HttpServletRequestWrapper> Optional<T> findWrapper(
HttpServletRequest request, Class<T> type) {
ServletRequest servletRequest = request;
HttpServletRequestWrapper wrapper;
while (servletRequest instanceof HttpServletRequestWrapper) {
wrapper = (HttpServletRequestWrapper) servletRequest;
if (type.isAssignableFrom(wrapper.getClass())) {
return Optional.of((T) wrapper);
} else {
servletRequest = wrapper.getRequest();
}
}
return Optional.empty();
}