diff --git a/src/main/asciidoc/dataobjects.adoc b/src/main/asciidoc/dataobjects.adoc index 4b1c63e73f2..1ba18a9df25 100644 --- a/src/main/asciidoc/dataobjects.adoc +++ b/src/main/asciidoc/dataobjects.adoc @@ -239,7 +239,7 @@ Set whether all server certificates should be trusted +++ |[[trustStoreOptions]]`trustStoreOptions`|`link:dataobjects.html#JksOptions[JksOptions]`| +++ -Set the trust options in jks format, aka Java trustore +Set the trust options in jks format, aka Java truststore +++ |[[useAlpn]]`useAlpn`|`Boolean`| +++ @@ -550,7 +550,7 @@ Set whether all server certificates should be trusted. +++ |[[trustStoreOptions]]`trustStoreOptions`|`link:dataobjects.html#JksOptions[JksOptions]`| +++ -Set the trust options in jks format, aka Java trustore +Set the trust options in jks format, aka Java truststore +++ |[[useAlpn]]`useAlpn`|`Boolean`| +++ @@ -843,7 +843,7 @@ Set whether all server certificates should be trusted +++ |[[trustStoreOptions]]`trustStoreOptions`|`link:dataobjects.html#JksOptions[JksOptions]`| +++ -Set the trust options in jks format, aka Java trustore +Set the trust options in jks format, aka Java truststore +++ |[[tryUseCompression]]`tryUseCompression`|`Boolean`| +++ @@ -1051,7 +1051,7 @@ Set the value of traffic class +++ |[[trustStoreOptions]]`trustStoreOptions`|`link:dataobjects.html#JksOptions[JksOptions]`| +++ -Set the trust options in jks format, aka Java trustore +Set the trust options in jks format, aka Java truststore +++ |[[useAlpn]]`useAlpn`|`Boolean`| +++ @@ -1276,7 +1276,7 @@ Set whether all server certificates should be trusted +++ |[[trustStoreOptions]]`trustStoreOptions`|`link:dataobjects.html#JksOptions[JksOptions]`| +++ -Set the trust options in jks format, aka Java trustore +Set the trust options in jks format, aka Java truststore +++ |[[useAlpn]]`useAlpn`|`Boolean`| +++ @@ -1401,7 +1401,7 @@ Set the value of traffic class +++ |[[trustStoreOptions]]`trustStoreOptions`|`link:dataobjects.html#JksOptions[JksOptions]`| +++ -Set the trust options in jks format, aka Java trustore +Set the trust options in jks format, aka Java truststore +++ |[[useAlpn]]`useAlpn`|`Boolean`| +++ @@ -1923,7 +1923,7 @@ Set the value of traffic class +++ |[[trustStoreOptions]]`trustStoreOptions`|`link:dataobjects.html#JksOptions[JksOptions]`| +++ -Set the trust options in jks format, aka Java trustore +Set the trust options in jks format, aka Java truststore +++ |[[useAlpn]]`useAlpn`|`Boolean`| +++ diff --git a/src/main/generated/io/vertx/core/eventbus/EventBusOptionsConverter.java b/src/main/generated/io/vertx/core/eventbus/EventBusOptionsConverter.java index 767c5df2b1f..62cc74a76f6 100644 --- a/src/main/generated/io/vertx/core/eventbus/EventBusOptionsConverter.java +++ b/src/main/generated/io/vertx/core/eventbus/EventBusOptionsConverter.java @@ -189,7 +189,28 @@ public static void toJson(EventBusOptions obj, JsonObject json) { json.put("host", obj.getHost()); } json.put("idleTimeout", obj.getIdleTimeout()); + if (obj.getJdkSslEngineOptions() != null) { + json.put("jdkSslEngineOptions", obj.getJdkSslEngineOptions().toJson()); + } + if (obj.getKeyStoreOptions() != null) { + json.put("keyStoreOptions", obj.getKeyStoreOptions().toJson()); + } json.put("logActivity", obj.getLogActivity()); + if (obj.getOpenSslEngineOptions() != null) { + json.put("openSslEngineOptions", obj.getOpenSslEngineOptions().toJson()); + } + if (obj.getPemKeyCertOptions() != null) { + json.put("pemKeyCertOptions", obj.getPemKeyCertOptions().toJson()); + } + if (obj.getPemTrustOptions() != null) { + json.put("pemTrustOptions", obj.getPemTrustOptions().toJson()); + } + if (obj.getPfxKeyCertOptions() != null) { + json.put("pfxKeyCertOptions", obj.getPfxKeyCertOptions().toJson()); + } + if (obj.getPfxTrustOptions() != null) { + json.put("pfxTrustOptions", obj.getPfxTrustOptions().toJson()); + } json.put("port", obj.getPort()); json.put("receiveBufferSize", obj.getReceiveBufferSize()); json.put("reconnectAttempts", obj.getReconnectAttempts()); @@ -202,6 +223,9 @@ public static void toJson(EventBusOptions obj, JsonObject json) { json.put("tcpNoDelay", obj.isTcpNoDelay()); json.put("trafficClass", obj.getTrafficClass()); json.put("trustAll", obj.isTrustAll()); + if (obj.getTrustStoreOptions() != null) { + json.put("trustStoreOptions", obj.getTrustStoreOptions().toJson()); + } json.put("useAlpn", obj.isUseAlpn()); json.put("usePooledBuffers", obj.isUsePooledBuffers()); } diff --git a/src/main/generated/io/vertx/core/net/TCPSSLOptionsConverter.java b/src/main/generated/io/vertx/core/net/TCPSSLOptionsConverter.java index f159b32dcc4..9958f546754 100644 --- a/src/main/generated/io/vertx/core/net/TCPSSLOptionsConverter.java +++ b/src/main/generated/io/vertx/core/net/TCPSSLOptionsConverter.java @@ -120,10 +120,34 @@ public static void toJson(TCPSSLOptions obj, JsonObject json) { json.put("enabledSecureTransportProtocols", array); } json.put("idleTimeout", obj.getIdleTimeout()); + if (obj.getJdkSslEngineOptions() != null) { + json.put("jdkSslEngineOptions", obj.getJdkSslEngineOptions().toJson()); + } + if (obj.getKeyStoreOptions() != null) { + json.put("keyStoreOptions", obj.getKeyStoreOptions().toJson()); + } + if (obj.getOpenSslEngineOptions() != null) { + json.put("openSslEngineOptions", obj.getOpenSslEngineOptions().toJson()); + } + if (obj.getPemKeyCertOptions() != null) { + json.put("pemKeyCertOptions", obj.getPemKeyCertOptions().toJson()); + } + if (obj.getPemTrustOptions() != null) { + json.put("pemTrustOptions", obj.getPemTrustOptions().toJson()); + } + if (obj.getPfxKeyCertOptions() != null) { + json.put("pfxKeyCertOptions", obj.getPfxKeyCertOptions().toJson()); + } + if (obj.getPfxTrustOptions() != null) { + json.put("pfxTrustOptions", obj.getPfxTrustOptions().toJson()); + } json.put("soLinger", obj.getSoLinger()); json.put("ssl", obj.isSsl()); json.put("tcpKeepAlive", obj.isTcpKeepAlive()); json.put("tcpNoDelay", obj.isTcpNoDelay()); + if (obj.getTrustStoreOptions() != null) { + json.put("trustStoreOptions", obj.getTrustStoreOptions().toJson()); + } json.put("useAlpn", obj.isUseAlpn()); json.put("usePooledBuffers", obj.isUsePooledBuffers()); } diff --git a/src/main/java/io/vertx/core/http/HttpClientOptions.java b/src/main/java/io/vertx/core/http/HttpClientOptions.java index 8965de0e309..ee3b75ec9f2 100644 --- a/src/main/java/io/vertx/core/http/HttpClientOptions.java +++ b/src/main/java/io/vertx/core/http/HttpClientOptions.java @@ -19,17 +19,7 @@ import io.vertx.codegen.annotations.DataObject; import io.vertx.core.buffer.Buffer; import io.vertx.core.json.JsonObject; -import io.vertx.core.net.ClientOptionsBase; -import io.vertx.core.net.JdkSSLEngineOptions; -import io.vertx.core.net.JksOptions; -import io.vertx.core.net.KeyCertOptions; -import io.vertx.core.net.OpenSSLEngineOptions; -import io.vertx.core.net.PemKeyCertOptions; -import io.vertx.core.net.PemTrustOptions; -import io.vertx.core.net.PfxOptions; -import io.vertx.core.net.ProxyOptions; -import io.vertx.core.net.SSLEngineOptions; -import io.vertx.core.net.TrustOptions; +import io.vertx.core.net.*; import java.util.ArrayList; import java.util.Collections; @@ -222,6 +212,17 @@ public HttpClientOptions(JsonObject json) { HttpClientOptionsConverter.fromJson(json, this); } + /** + * Convert to JSON + * + * @return the JSON + */ + public JsonObject toJson() { + JsonObject json = super.toJson(); + HttpClientOptionsConverter.toJson(this, json); + return json; + } + private void init() { verifyHost = DEFAULT_VERIFY_HOST; maxPoolSize = DEFAULT_MAX_POOL_SIZE; diff --git a/src/main/java/io/vertx/core/http/HttpServerOptions.java b/src/main/java/io/vertx/core/http/HttpServerOptions.java index aa58538e25e..21255e4b097 100644 --- a/src/main/java/io/vertx/core/http/HttpServerOptions.java +++ b/src/main/java/io/vertx/core/http/HttpServerOptions.java @@ -156,6 +156,17 @@ public HttpServerOptions(JsonObject json) { HttpServerOptionsConverter.fromJson(json, this); } + /** + * Convert to JSON + * + * @return the JSON + */ + public JsonObject toJson() { + JsonObject json = super.toJson(); + HttpServerOptionsConverter.toJson(this, json); + return json; + } + private void init() { compressionSupported = DEFAULT_COMPRESSION_SUPPORTED; compressionLevel = DEFAULT_COMPRESSION_LEVEL; diff --git a/src/main/java/io/vertx/core/net/ClientOptionsBase.java b/src/main/java/io/vertx/core/net/ClientOptionsBase.java index 6856c2eae5f..01f5c23b56a 100644 --- a/src/main/java/io/vertx/core/net/ClientOptionsBase.java +++ b/src/main/java/io/vertx/core/net/ClientOptionsBase.java @@ -83,6 +83,17 @@ public ClientOptionsBase(JsonObject json) { ClientOptionsBaseConverter.fromJson(json, this); } + /** + * Convert to JSON + * + * @return the JSON + */ + public JsonObject toJson() { + JsonObject json = super.toJson(); + ClientOptionsBaseConverter.toJson(this, json); + return json; + } + private void init() { this.connectTimeout = DEFAULT_CONNECT_TIMEOUT; this.trustAll = DEFAULT_TRUST_ALL; diff --git a/src/main/java/io/vertx/core/net/JdkSSLEngineOptions.java b/src/main/java/io/vertx/core/net/JdkSSLEngineOptions.java index 1b3743be18e..14497697d49 100644 --- a/src/main/java/io/vertx/core/net/JdkSSLEngineOptions.java +++ b/src/main/java/io/vertx/core/net/JdkSSLEngineOptions.java @@ -41,6 +41,10 @@ public JdkSSLEngineOptions(JsonObject json) { public JdkSSLEngineOptions(JdkSSLEngineOptions that) { } + public JsonObject toJson() { + return new JsonObject(); + } + @Override public int hashCode() { return 0; diff --git a/src/main/java/io/vertx/core/net/NetServerOptions.java b/src/main/java/io/vertx/core/net/NetServerOptions.java index 24adb972d5a..49cbfa54971 100644 --- a/src/main/java/io/vertx/core/net/NetServerOptions.java +++ b/src/main/java/io/vertx/core/net/NetServerOptions.java @@ -88,6 +88,17 @@ public NetServerOptions(JsonObject json) { NetServerOptionsConverter.fromJson(json, this); } + /** + * Convert to JSON + * + * @return the JSON + */ + public JsonObject toJson() { + JsonObject json = super.toJson(); + NetServerOptionsConverter.toJson(this, json); + return json; + } + @Override public NetServerOptions setSendBufferSize(int sendBufferSize) { super.setSendBufferSize(sendBufferSize); diff --git a/src/main/java/io/vertx/core/net/NetworkOptions.java b/src/main/java/io/vertx/core/net/NetworkOptions.java index 47579f625fd..e008d2c1073 100644 --- a/src/main/java/io/vertx/core/net/NetworkOptions.java +++ b/src/main/java/io/vertx/core/net/NetworkOptions.java @@ -92,6 +92,17 @@ public NetworkOptions(JsonObject json) { NetworkOptionsConverter.fromJson(json, this); } + /** + * Convert to JSON + * + * @return the JSON + */ + public JsonObject toJson() { + JsonObject json = new JsonObject(); + NetworkOptionsConverter.toJson(this, json); + return json; + } + /** * Return the TCP send buffer size, in bytes. * diff --git a/src/main/java/io/vertx/core/net/TCPSSLOptions.java b/src/main/java/io/vertx/core/net/TCPSSLOptions.java index a8f0a47270e..7bff67e126f 100644 --- a/src/main/java/io/vertx/core/net/TCPSSLOptions.java +++ b/src/main/java/io/vertx/core/net/TCPSSLOptions.java @@ -128,6 +128,17 @@ public TCPSSLOptions(JsonObject json) { TCPSSLOptionsConverter.fromJson(json ,this); } + /** + * Convert to JSON + * + * @return the JSON + */ + public JsonObject toJson() { + JsonObject json = super.toJson(); + TCPSSLOptionsConverter.toJson(this, json); + return json; + } + private void init() { tcpNoDelay = DEFAULT_TCP_NO_DELAY; tcpKeepAlive = DEFAULT_TCP_KEEP_ALIVE; @@ -279,6 +290,15 @@ public TCPSSLOptions setKeyCertOptions(KeyCertOptions options) { return this; } + /** + * Get the key/cert options in jks format, aka Java keystore. + * + * @return the key/cert options in jks format, aka Java keystore. + */ + public JksOptions getKeyStoreOptions() { + return keyCertOptions instanceof JksOptions ? (JksOptions) keyCertOptions : null; + } + /** * Set the key/cert options in jks format, aka Java keystore. * @param options the key store in jks format @@ -289,6 +309,15 @@ public TCPSSLOptions setKeyStoreOptions(JksOptions options) { return this; } + /** + * Get the key/cert options in pfx format. + * + * @return the key/cert options in pfx format. + */ + public PfxOptions getPfxKeyCertOptions() { + return keyCertOptions instanceof PfxOptions ? (PfxOptions) keyCertOptions : null; + } + /** * Set the key/cert options in pfx format. * @param options the key cert options in pfx format @@ -299,6 +328,15 @@ public TCPSSLOptions setPfxKeyCertOptions(PfxOptions options) { return this; } + /** + * Get the key/cert store options in pem format. + * + * @return the key/cert store options in pem format. + */ + public PemKeyCertOptions getPemKeyCertOptions() { + return keyCertOptions instanceof PemKeyCertOptions ? (PemKeyCertOptions) keyCertOptions : null; + } + /** * Set the key/cert store options in pem format. * @param options the options in pem format @@ -327,7 +365,16 @@ public TCPSSLOptions setTrustOptions(TrustOptions options) { } /** - * Set the trust options in jks format, aka Java trustore + * Get the trust options in jks format, aka Java truststore + * + * @return the trust options in jks format, aka Java truststore + */ + public JksOptions getTrustStoreOptions() { + return trustOptions instanceof JksOptions ? (JksOptions) trustOptions : null; + } + + /** + * Set the trust options in jks format, aka Java truststore * @param options the trust options in jks format * @return a reference to this, so the API can be used fluently */ @@ -336,6 +383,15 @@ public TCPSSLOptions setTrustStoreOptions(JksOptions options) { return this; } + /** + * Get the trust options in pfx format + * + * @return the trust options in pfx format + */ + public PfxOptions getPfxTrustOptions() { + return trustOptions instanceof PfxOptions ? (PfxOptions) trustOptions : null; + } + /** * Set the trust options in pfx format * @param options the trust options in pfx format @@ -346,6 +402,15 @@ public TCPSSLOptions setPfxTrustOptions(PfxOptions options) { return this; } + /** + * Get the trust options in pem format + * + * @return the trust options in pem format + */ + public PemTrustOptions getPemTrustOptions() { + return trustOptions instanceof PemTrustOptions ? (PemTrustOptions) trustOptions : null; + } + /** * Set the trust options in pem format * @param options the trust options in pem format @@ -452,10 +517,18 @@ public TCPSSLOptions setSslEngineOptions(SSLEngineOptions sslEngineOptions) { return this; } + public JdkSSLEngineOptions getJdkSslEngineOptions() { + return sslEngineOptions instanceof JdkSSLEngineOptions ? (JdkSSLEngineOptions) sslEngineOptions : null; + } + public TCPSSLOptions setJdkSslEngineOptions(JdkSSLEngineOptions sslEngineOptions) { return setSslEngineOptions(sslEngineOptions); } + public OpenSSLEngineOptions getOpenSslEngineOptions() { + return sslEngineOptions instanceof OpenSSLEngineOptions ? (OpenSSLEngineOptions) sslEngineOptions : null; + } + public TCPSSLOptions setOpenSslEngineOptions(OpenSSLEngineOptions sslEngineOptions) { return setSslEngineOptions(sslEngineOptions); } diff --git a/src/test/java/io/vertx/test/core/Http1xTest.java b/src/test/java/io/vertx/test/core/Http1xTest.java index cf817540a5d..f8ca3d9e62d 100644 --- a/src/test/java/io/vertx/test/core/Http1xTest.java +++ b/src/test/java/io/vertx/test/core/Http1xTest.java @@ -386,6 +386,48 @@ public void testServerOptions() { assertTrue(options.isDecompressionSupported()); } + private static KeyCertOptions randomKeyCertOptions() { + KeyCertOptions keyCertOptions; + switch (TestUtils.randomPositiveInt() % 3) { + case 0: + keyCertOptions = new JksOptions(); + String jksPassword = TestUtils.randomAlphaString(100); + ((JksOptions) keyCertOptions).setPassword(jksPassword); + break; + case 1: + keyCertOptions = new PemKeyCertOptions(); + Buffer keyValue = TestUtils.randomBuffer(100); + ((PemKeyCertOptions) keyCertOptions).setKeyValue(keyValue); + break; + default: + keyCertOptions = new PfxOptions(); + String pfxPassword = TestUtils.randomAlphaString(100); + ((PfxOptions) keyCertOptions).setPassword(pfxPassword); + } + return keyCertOptions; + } + + private static TrustOptions randomTrustOptions() { + TrustOptions trustOptions; + switch (TestUtils.randomPositiveInt() % 3) { + case 0: + trustOptions = new JksOptions(); + String tsPassword = TestUtils.randomAlphaString(100); + ((JksOptions) trustOptions).setPassword(tsPassword); + break; + case 1: + trustOptions = new PemTrustOptions(); + Buffer keyValue = TestUtils.randomBuffer(100); + ((PemTrustOptions) trustOptions).addCertValue(keyValue); + break; + default: + trustOptions = new PfxOptions(); + String pfxPassword = TestUtils.randomAlphaString(100); + ((PfxOptions) trustOptions).setPassword(pfxPassword); + } + return trustOptions; + } + @Test public void testCopyClientOptions() { HttpClientOptions options = new HttpClientOptions(); @@ -400,12 +442,8 @@ public void testCopyClientOptions() { boolean usePooledBuffers = rand.nextBoolean(); int idleTimeout = TestUtils.randomPositiveInt(); boolean ssl = rand.nextBoolean(); - JksOptions keyStoreOptions = new JksOptions(); - String ksPassword = TestUtils.randomAlphaString(100); - keyStoreOptions.setPassword(ksPassword); - JksOptions trustStoreOptions = new JksOptions(); - String tsPassword = TestUtils.randomAlphaString(100); - trustStoreOptions.setPassword(tsPassword); + KeyCertOptions keyCertOptions = randomKeyCertOptions(); + TrustOptions trustOptions = randomTrustOptions(); String enabledCipher = TestUtils.randomAlphaString(100); int connectTimeout = TestUtils.randomPositiveInt(); boolean trustAll = rand.nextBoolean(); @@ -445,8 +483,8 @@ public void testCopyClientOptions() { options.setSoLinger(soLinger); options.setUsePooledBuffers(usePooledBuffers); options.setIdleTimeout(idleTimeout); - options.setKeyStoreOptions(keyStoreOptions); - options.setTrustStoreOptions(trustStoreOptions); + options.setKeyCertOptions(keyCertOptions); + options.setTrustOptions(trustOptions); options.addEnabledCipherSuite(enabledCipher); options.setConnectTimeout(connectTimeout); options.setTrustAll(trustAll); @@ -474,49 +512,59 @@ public void testCopyClientOptions() { options.setLocalAddress(localAddress); options.setSendUnmaskedFrames(sendUnmaskedFrame); HttpClientOptions copy = new HttpClientOptions(options); - assertEquals(sendBufferSize, copy.getSendBufferSize()); - assertEquals(receiverBufferSize, copy.getReceiveBufferSize()); - assertEquals(reuseAddress, copy.isReuseAddress()); - assertEquals(trafficClass, copy.getTrafficClass()); - assertEquals(tcpNoDelay, copy.isTcpNoDelay()); - assertEquals(tcpKeepAlive, copy.isTcpKeepAlive()); - assertEquals(soLinger, copy.getSoLinger()); - assertEquals(usePooledBuffers, copy.isUsePooledBuffers()); - assertEquals(idleTimeout, copy.getIdleTimeout()); - assertEquals(ssl, copy.isSsl()); - assertNotSame(keyStoreOptions, copy.getKeyCertOptions()); - assertEquals(ksPassword, ((JksOptions) copy.getKeyCertOptions()).getPassword()); - assertNotSame(trustStoreOptions, copy.getTrustOptions()); - assertEquals(tsPassword, ((JksOptions)copy.getTrustOptions()).getPassword()); + checkCopyHttpClientOptions(options, copy); + HttpClientOptions copy2 = new HttpClientOptions(options.toJson()); + checkCopyHttpClientOptions(options, copy2); + } + + private void checkCopyHttpClientOptions(HttpClientOptions options, HttpClientOptions copy) { + assertEquals(options.getSendBufferSize(), copy.getSendBufferSize()); + assertEquals(options.getReceiveBufferSize(), copy.getReceiveBufferSize()); + assertEquals(options.isReuseAddress(), copy.isReuseAddress()); + assertEquals(options.getTrafficClass(), copy.getTrafficClass()); + assertEquals(options.isTcpNoDelay(), copy.isTcpNoDelay()); + assertEquals(options.isTcpKeepAlive(), copy.isTcpKeepAlive()); + assertEquals(options.getSoLinger(), copy.getSoLinger()); + assertEquals(options.isUsePooledBuffers(), copy.isUsePooledBuffers()); + assertEquals(options.getIdleTimeout(), copy.getIdleTimeout()); + assertEquals(options.isSsl(), copy.isSsl()); + assertNotSame(options.getKeyCertOptions(), copy.getKeyCertOptions()); + assertEquals(options.getKeyCertOptions(), copy.getKeyCertOptions()); + assertNotSame(options.getTrustOptions(), copy.getTrustOptions()); + if (copy.getTrustOptions() instanceof PemTrustOptions) { + assertEquals(((PemTrustOptions) options.getTrustOptions()).getCertValues(), ((PemTrustOptions) copy.getTrustOptions()).getCertValues()); + } else { + assertEquals(options.getTrustOptions(), copy.getTrustOptions()); + } assertEquals(1, copy.getEnabledCipherSuites().size()); - assertTrue(copy.getEnabledCipherSuites().contains(enabledCipher)); - assertEquals(connectTimeout, copy.getConnectTimeout()); - assertEquals(trustAll, copy.isTrustAll()); + assertEquals(options.getEnabledCipherSuites(), copy.getEnabledCipherSuites()); + assertEquals(options.getConnectTimeout(), copy.getConnectTimeout()); + assertEquals(options.isTrustAll(), copy.isTrustAll()); assertEquals(1, copy.getCrlPaths().size()); - assertEquals(crlPath, copy.getCrlPaths().get(0)); + assertEquals(options.getCrlPaths().get(0), copy.getCrlPaths().get(0)); assertEquals(1, copy.getCrlValues().size()); - assertEquals(crlValue, copy.getCrlValues().get(0)); - assertEquals(verifyHost, copy.isVerifyHost()); - assertEquals(maxPoolSize, copy.getMaxPoolSize()); - assertEquals(keepAlive, copy.isKeepAlive()); - assertEquals(pipelining, copy.isPipelining()); - assertEquals(pipeliningLimit, copy.getPipeliningLimit()); - assertEquals(http2MaxPoolSize, copy.getHttp2MaxPoolSize()); - assertEquals(http2MultiplexingLimit, copy.getHttp2MultiplexingLimit()); - assertEquals(http2ConnectionWindowSize, copy.getHttp2ConnectionWindowSize()); - assertEquals(tryUseCompression, copy.isTryUseCompression()); - assertEquals(protocolVersion, copy.getProtocolVersion()); - assertEquals(maxChunkSize, copy.getMaxChunkSize()); - assertEquals(maxInitialLineLength, copy.getMaxInitialLineLength()); - assertEquals(maxHeaderSize, copy.getMaxHeaderSize()); - assertEquals(maxWaitQueueSize, copy.getMaxWaitQueueSize()); - assertEquals(initialSettings, copy.getInitialSettings()); - assertEquals(useAlpn, copy.isUseAlpn()); - assertEquals(sslEngine, copy.getSslEngineOptions()); - assertEquals(alpnVersions, copy.getAlpnVersions()); - assertEquals(h2cUpgrade, copy.isHttp2ClearTextUpgrade()); - assertEquals(localAddress, copy.getLocalAddress()); - assertEquals(sendUnmaskedFrame, copy.isSendUnmaskedFrames()); + assertEquals(options.getCrlValues().get(0), copy.getCrlValues().get(0)); + assertEquals(options.isVerifyHost(), copy.isVerifyHost()); + assertEquals(options.getMaxPoolSize(), copy.getMaxPoolSize()); + assertEquals(options.isKeepAlive(), copy.isKeepAlive()); + assertEquals(options.isPipelining(), copy.isPipelining()); + assertEquals(options.getPipeliningLimit(), copy.getPipeliningLimit()); + assertEquals(options.getHttp2MaxPoolSize(), copy.getHttp2MaxPoolSize()); + assertEquals(options.getHttp2MultiplexingLimit(), copy.getHttp2MultiplexingLimit()); + assertEquals(options.getHttp2ConnectionWindowSize(), copy.getHttp2ConnectionWindowSize()); + assertEquals(options.isTryUseCompression(), copy.isTryUseCompression()); + assertEquals(options.getProtocolVersion(), copy.getProtocolVersion()); + assertEquals(options.getMaxChunkSize(), copy.getMaxChunkSize()); + assertEquals(options.getMaxInitialLineLength(), copy.getMaxInitialLineLength()); + assertEquals(options.getMaxHeaderSize(), copy.getMaxHeaderSize()); + assertEquals(options.getMaxWaitQueueSize(), copy.getMaxWaitQueueSize()); + assertEquals(options.getInitialSettings(), copy.getInitialSettings()); + assertEquals(options.isUseAlpn(), copy.isUseAlpn()); + assertEquals(options.getSslEngineOptions(), copy.getSslEngineOptions()); + assertEquals(options.getAlpnVersions(), copy.getAlpnVersions()); + assertEquals(options.isHttp2ClearTextUpgrade(), copy.isHttp2ClearTextUpgrade()); + assertEquals(options.getLocalAddress(), copy.getLocalAddress()); + assertEquals(options.isSendUnmaskedFrames(), copy.isSendUnmaskedFrames()); } @Test @@ -738,12 +786,8 @@ public void testCopyServerOptions() { boolean usePooledBuffers = rand.nextBoolean(); int idleTimeout = TestUtils.randomPositiveInt(); boolean ssl = rand.nextBoolean(); - JksOptions keyStoreOptions = new JksOptions(); - String ksPassword = TestUtils.randomAlphaString(100); - keyStoreOptions.setPassword(ksPassword); - JksOptions trustStoreOptions = new JksOptions(); - String tsPassword = TestUtils.randomAlphaString(100); - trustStoreOptions.setPassword(tsPassword); + KeyCertOptions keyCertOptions = randomKeyCertOptions(); + TrustOptions trustOptions = randomTrustOptions(); String enabledCipher = TestUtils.randomAlphaString(100); String crlPath = TestUtils.randomUnicodeString(100); Buffer crlValue = TestUtils.randomBuffer(100); @@ -774,8 +818,8 @@ public void testCopyServerOptions() { options.setUsePooledBuffers(usePooledBuffers); options.setIdleTimeout(idleTimeout); options.setSsl(ssl); - options.setKeyStoreOptions(keyStoreOptions); - options.setTrustStoreOptions(trustStoreOptions); + options.setKeyCertOptions(keyCertOptions); + options.setTrustOptions(trustOptions); options.addEnabledCipherSuite(enabledCipher); options.addCrlPath(crlPath); options.addCrlValue(crlValue); @@ -796,41 +840,51 @@ public void testCopyServerOptions() { options.setAcceptUnmaskedFrames(acceptUnmaskedFrames); HttpServerOptions copy = new HttpServerOptions(options); - assertEquals(sendBufferSize, copy.getSendBufferSize()); - assertEquals(receiverBufferSize, copy.getReceiveBufferSize()); - assertEquals(reuseAddress, copy.isReuseAddress()); - assertEquals(trafficClass, copy.getTrafficClass()); - assertEquals(tcpNoDelay, copy.isTcpNoDelay()); - assertEquals(tcpKeepAlive, copy.isTcpKeepAlive()); - assertEquals(soLinger, copy.getSoLinger()); - assertEquals(usePooledBuffers, copy.isUsePooledBuffers()); - assertEquals(idleTimeout, copy.getIdleTimeout()); - assertEquals(ssl, copy.isSsl()); - assertNotSame(keyStoreOptions, copy.getKeyCertOptions()); - assertEquals(ksPassword, ((JksOptions) copy.getKeyCertOptions()).getPassword()); - assertNotSame(trustStoreOptions, copy.getTrustOptions()); - assertEquals(tsPassword, ((JksOptions) copy.getTrustOptions()).getPassword()); + checkCopyHttpServerOptions(options, copy); + HttpServerOptions copy2 = new HttpServerOptions(options.toJson()); + checkCopyHttpServerOptions(options, copy2); + } + + private void checkCopyHttpServerOptions(HttpServerOptions options, HttpServerOptions copy) { + assertEquals(options.getSendBufferSize(), copy.getSendBufferSize()); + assertEquals(options.getReceiveBufferSize(), copy.getReceiveBufferSize()); + assertEquals(options.isReuseAddress(), copy.isReuseAddress()); + assertEquals(options.getTrafficClass(), copy.getTrafficClass()); + assertEquals(options.isTcpNoDelay(), copy.isTcpNoDelay()); + assertEquals(options.isTcpKeepAlive(), copy.isTcpKeepAlive()); + assertEquals(options.getSoLinger(), copy.getSoLinger()); + assertEquals(options.isUsePooledBuffers(), copy.isUsePooledBuffers()); + assertEquals(options.getIdleTimeout(), copy.getIdleTimeout()); + assertEquals(options.isSsl(), copy.isSsl()); + assertNotSame(options.getKeyCertOptions(), copy.getKeyCertOptions()); + assertEquals(options.getKeyCertOptions(), copy.getKeyCertOptions()); + assertNotSame(options.getTrustOptions(), copy.getTrustOptions()); + if (copy.getTrustOptions() instanceof PemTrustOptions) { + assertEquals(((PemTrustOptions) options.getTrustOptions()).getCertValues(), ((PemTrustOptions) copy.getTrustOptions()).getCertValues()); + } else { + assertEquals(options.getTrustOptions(), copy.getTrustOptions()); + } assertEquals(1, copy.getEnabledCipherSuites().size()); - assertTrue(copy.getEnabledCipherSuites().contains(enabledCipher)); + assertEquals(options.getEnabledCipherSuites(), copy.getEnabledCipherSuites()); assertEquals(1, copy.getCrlPaths().size()); - assertEquals(crlPath, copy.getCrlPaths().get(0)); + assertEquals(options.getCrlPaths().get(0), copy.getCrlPaths().get(0)); assertEquals(1, copy.getCrlValues().size()); - assertEquals(crlValue, copy.getCrlValues().get(0)); - assertEquals(port, copy.getPort()); - assertEquals(host, copy.getHost()); - assertEquals(acceptBacklog, copy.getAcceptBacklog()); - assertEquals(compressionSupported, copy.isCompressionSupported()); - assertEquals(maxWebsocketFrameSize, copy.getMaxWebsocketFrameSize()); - assertEquals(wsSubProtocol, copy.getWebsocketSubProtocols()); - assertEquals(is100ContinueHandledAutomatically, copy.isHandle100ContinueAutomatically()); - assertEquals(maxChunkSize, copy.getMaxChunkSize()); - assertEquals(initialSettings, copy.getInitialSettings()); - assertEquals(useAlpn, copy.isUseAlpn()); - assertEquals(http2ConnectionWindowSize, copy.getHttp2ConnectionWindowSize()); - assertEquals(sslEngine, copy.getSslEngineOptions()); - assertEquals(alpnVersions, copy.getAlpnVersions()); - assertEquals(decompressionSupported, copy.isDecompressionSupported()); - assertEquals(acceptUnmaskedFrames, copy.isAcceptUnmaskedFrames()); + assertEquals(options.getCrlValues().get(0), copy.getCrlValues().get(0)); + assertEquals(options.getPort(), copy.getPort()); + assertEquals(options.getHost(), copy.getHost()); + assertEquals(options.getAcceptBacklog(), copy.getAcceptBacklog()); + assertEquals(options.isCompressionSupported(), copy.isCompressionSupported()); + assertEquals(options.getMaxWebsocketFrameSize(), copy.getMaxWebsocketFrameSize()); + assertEquals(options.getWebsocketSubProtocols(), copy.getWebsocketSubProtocols()); + assertEquals(options.isHandle100ContinueAutomatically(), copy.isHandle100ContinueAutomatically()); + assertEquals(options.getMaxChunkSize(), copy.getMaxChunkSize()); + assertEquals(options.getInitialSettings(), copy.getInitialSettings()); + assertEquals(options.isUseAlpn(), copy.isUseAlpn()); + assertEquals(options.getHttp2ConnectionWindowSize(), copy.getHttp2ConnectionWindowSize()); + assertEquals(options.getSslEngineOptions(), copy.getSslEngineOptions()); + assertEquals(options.getAlpnVersions(), copy.getAlpnVersions()); + assertEquals(options.isDecompressionSupported(), copy.isDecompressionSupported()); + assertEquals(options.isAcceptUnmaskedFrames(), copy.isAcceptUnmaskedFrames()); } @Test