diff options
author | Bjørn Christian Seime <bjorncs@oath.com> | 2017-11-29 11:27:59 +0100 |
---|---|---|
committer | Bjørn Christian Seime <bjorncs@oath.com> | 2017-11-29 11:27:59 +0100 |
commit | 5a24610fab32f9df42f3fec475ea72cd67ae9d49 (patch) | |
tree | 3517215d59ac1cd535ddde1ca730f180a7f47f36 /jdisc_http_service/src | |
parent | 68bb6ea25a1794bb08b454d9e6a22320971b55a5 (diff) |
Refactor out duplicate code
Diffstat (limited to 'jdisc_http_service/src')
-rw-r--r-- | jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/ConnectorFactory.java | 56 |
1 files changed, 27 insertions, 29 deletions
diff --git a/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/ConnectorFactory.java b/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/ConnectorFactory.java index 69999ebc355..e4a21f2eb73 100644 --- a/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/ConnectorFactory.java +++ b/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/ConnectorFactory.java @@ -2,9 +2,14 @@ package com.yahoo.jdisc.http.server.jetty; import com.google.inject.Inject; +import com.yahoo.config.InnerNode; import com.yahoo.jdisc.Metric; import com.yahoo.jdisc.http.ConnectorConfig; import com.yahoo.jdisc.http.ConnectorConfig.Ssl; +import com.yahoo.jdisc.http.ConnectorConfig.Ssl.ExcludeCipherSuite; +import com.yahoo.jdisc.http.ConnectorConfig.Ssl.ExcludeProtocol; +import com.yahoo.jdisc.http.ConnectorConfig.Ssl.IncludeCipherSuite; +import com.yahoo.jdisc.http.ConnectorConfig.Ssl.IncludeProtocol; import com.yahoo.jdisc.http.SecretStore; import com.yahoo.jdisc.http.ssl.DefaultSslKeyStoreContext; import com.yahoo.jdisc.http.ssl.DefaultSslTrustStoreContext; @@ -20,6 +25,10 @@ import org.eclipse.jetty.server.SslConnectionFactory; import org.eclipse.jetty.util.ssl.SslContextFactory; import java.nio.channels.ServerSocketChannel; +import java.util.List; +import java.util.function.BiConsumer; +import java.util.function.Function; +import java.util.function.Supplier; /** * @author Einar M R Rosenvinge @@ -105,39 +114,28 @@ public class ConnectorFactory { factory.setSecureRandomAlgorithm(sslConfig.prng()); } - if (!sslConfig.excludeProtocol().isEmpty()) { - String[] prots = new String[sslConfig.excludeProtocol().size()]; - for (int i = 0; i < prots.length; i++) { - prots[i] = sslConfig.excludeProtocol(i).name(); - } - factory.setExcludeProtocols(prots); - } - if (!sslConfig.includeProtocol().isEmpty()) { - String[] prots = new String[sslConfig.includeProtocol().size()]; - for (int i = 0; i < prots.length; i++) { - prots[i] = sslConfig.includeProtocol(i).name(); - } - factory.setIncludeProtocols(prots); - } - if (!sslConfig.excludeCipherSuite().isEmpty()) { - String[] ciphs = new String[sslConfig.excludeCipherSuite().size()]; - for (int i = 0; i < ciphs.length; i++) { - ciphs[i] = sslConfig.excludeCipherSuite(i).name(); - } - factory.setExcludeCipherSuites(ciphs); - - } - if (!sslConfig.includeCipherSuite().isEmpty()) { - String[] ciphs = new String[sslConfig.includeCipherSuite().size()]; - for (int i = 0; i < ciphs.length; i++) { - ciphs[i] = sslConfig.includeCipherSuite(i).name(); - } - factory.setIncludeCipherSuites(ciphs); - } + setStringArrayParameter( + factory, sslConfig.excludeProtocol(), ExcludeProtocol::name, SslContextFactory::setExcludeProtocols); + setStringArrayParameter( + factory, sslConfig.includeProtocol(), IncludeProtocol::name, SslContextFactory::setIncludeProtocols); + setStringArrayParameter( + factory, sslConfig.excludeCipherSuite(), ExcludeCipherSuite::name, SslContextFactory::setExcludeCipherSuites); + setStringArrayParameter( + factory, sslConfig.includeCipherSuite(), IncludeCipherSuite::name, SslContextFactory::setIncludeCipherSuites); factory.setKeyManagerFactoryAlgorithm(sslConfig.sslKeyManagerFactoryAlgorithm()); factory.setProtocol(sslConfig.protocol()); return new SslConnectionFactory(factory, HttpVersion.HTTP_1_1.asString()); } + private static <T extends InnerNode> void setStringArrayParameter(SslContextFactory sslContextFactory, + List<T> configValues, + Function<T, String> nameProperty, + BiConsumer<SslContextFactory, String[]> setter) { + if (!configValues.isEmpty()) { + String[] nameArray = configValues.stream().map(nameProperty).toArray(String[]::new); + setter.accept(sslContextFactory, nameArray); + } + } + } |