Merge branch '6.2.x'

This commit is contained in:
rstoyanchev
2025-01-28 15:37:38 +00:00
6 changed files with 54 additions and 11 deletions

View File

@@ -125,7 +125,7 @@ public class ExtendedServletRequestDataBinder extends ServletRequestDataBinder {
String name = names.nextElement();
Object value = getHeaderValue(httpRequest, name);
if (value != null) {
name = StringUtils.uncapitalize(name.replace("-", ""));
name = normalizeHeaderName(name);
addValueIfNotPresent(mpvs, "Header", name, value);
}
}
@@ -171,6 +171,10 @@ public class ExtendedServletRequestDataBinder extends ServletRequestDataBinder {
return values;
}
private static String normalizeHeaderName(String name) {
return StringUtils.uncapitalize(name.replace("-", ""));
}
/**
* Resolver of values that looks up URI path variables.
@@ -206,8 +210,10 @@ public class ExtendedServletRequestDataBinder extends ServletRequestDataBinder {
if (request instanceof HttpServletRequest httpServletRequest) {
Enumeration<String> enumeration = httpServletRequest.getHeaderNames();
while (enumeration.hasMoreElements()) {
String headerName = enumeration.nextElement();
set.add(headerName.replaceAll("-", ""));
String name = enumeration.nextElement();
if (headerPredicate.test(name)) {
set.add(normalizeHeaderName(name));
}
}
}
return set;

View File

@@ -119,6 +119,23 @@ class ExtendedServletRequestDataBinderTests {
assertThat(mpvs).isEmpty();
}
@Test
void headerPredicateWithConstructorArgs() {
ExtendedServletRequestDataBinder binder = new ExtendedServletRequestDataBinder(null);
binder.addHeaderPredicate(name -> !name.equalsIgnoreCase("Some-Int-Array"));
binder.setTargetType(ResolvableType.forClass(DataBean.class));
binder.setNameResolver(new BindParamNameResolver());
request.addHeader("Some-Int-Array", "1");
request.addHeader("Some-Int-Array", "2");
binder.construct(request);
DataBean bean = (DataBean) binder.getTarget();
assertThat(bean.someIntArray()).isNull();
}
@Test
void headerPredicate() {
TestBinder binder = new TestBinder();