Commit 3bd7760f authored by Madhura Bhave's avatar Madhura Bhave

Polish "Allow Undertow's options to be configured via the environment

See gh-17356
parent 417f4dd7
......@@ -142,12 +142,12 @@ public class UndertowWebServerFactoryCustomizer
return this.serverProperties.getForwardHeadersStrategy().equals(ServerProperties.ForwardHeadersStrategy.NATIVE);
}
@SuppressWarnings("unchecked")
private <T> void setCustomOption(ConfigurableUndertowWebServerFactory factory, String key, String value,
String type) {
Field[] fields = UndertowOptions.class.getDeclaredFields();
for (Field field : fields) {
String name = getLetterAndNumber(key);
if (getLetterAndNumber(field.getName()).equals(name)) {
if (getCanonicalName(field.getName()).equals(getCanonicalName(key))) {
Option<T> option = (Option<T>) Option.fromString(
UndertowOptions.class.getName() + '.' + field.getName(), getClass().getClassLoader());
T parsed = option.parseValue(value, getClass().getClassLoader());
......@@ -162,9 +162,9 @@ public class UndertowWebServerFactoryCustomizer
}
}
private String getLetterAndNumber(String name) {
StringBuilder canonicalName = new StringBuilder(name.length());
name.chars().map((c) -> (char) c).filter(Character::isLetterOrDigit).map(Character::toLowerCase)
private String getCanonicalName(String key) {
StringBuilder canonicalName = new StringBuilder(key.length());
key.chars().map((c) -> (char) c).filter(Character::isLetterOrDigit).map(Character::toLowerCase)
.forEach((c) -> canonicalName.append((char) c));
return canonicalName.toString();
}
......
......@@ -161,12 +161,23 @@ class UndertowWebServerFactoryCustomizerTests {
assertThat(boundServerOption(UndertowOptions.ALWAYS_SET_KEEP_ALIVE)).isFalse();
}
@Test
void customServerOptionShouldBeRelaxed() {
bind("server.undertow.options.server.always-set-keep-alive=false");
assertThat(boundServerOption(UndertowOptions.ALWAYS_SET_KEEP_ALIVE)).isFalse();
}
@Test
void customSocketOption() {
bind("server.undertow.options.socket.ALWAYS_SET_KEEP_ALIVE=false");
assertThat(boundSocketOption(UndertowOptions.ALWAYS_SET_KEEP_ALIVE)).isFalse();
}
void customSocketOptionShouldBeRelaxed() {
bind("server.undertow.options.socket.always-set-keep-alive=false");
assertThat(boundSocketOption(UndertowOptions.ALWAYS_SET_KEEP_ALIVE)).isFalse();
}
@Test
void deduceUseForwardHeaders() {
this.environment.setProperty("DYNO", "-");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment