/** * Sets the {@link SSLSession} of the connection. If the current {@link SessionProtocol} is not TLS, * the TLS version of the current {@link SessionProtocol} will be set automatically. For example, * {@link SessionProtocol#H2C} will be automatically upgraded to {@link SessionProtocol#H2}. * Note that upgrading the current {@link SessionProtocol} may trigger an {@link IllegalArgumentException}, * as described in {@link #sessionProtocol(SessionProtocol)}. */ public final B sslSession(SSLSession sslSession) { this.sslSession = requireNonNull(sslSession, "sslSession"); switch (sessionProtocol) { case HTTP: sessionProtocol(SessionProtocol.HTTPS); break; case H1C: sessionProtocol(SessionProtocol.H1); break; case H2C: sessionProtocol(SessionProtocol.H2); break; } return self(); }