THRIFT-5197: TSSLTransportFactory Do Not Wrap NOT_OPEN Exception Type for Client
Client: java
Patch: David Mollitor
This closes #2131
The class TSSLTransportFactory is wrapping TTransportExceptions, which have a particular "type,"
in a type-less TTransportException and therefore the Exception type is lost.
diff --git a/lib/java/src/org/apache/thrift/transport/TSSLTransportFactory.java b/lib/java/src/org/apache/thrift/transport/TSSLTransportFactory.java
index 73dfaaf..570f533 100644
--- a/lib/java/src/org/apache/thrift/transport/TSSLTransportFactory.java
+++ b/lib/java/src/org/apache/thrift/transport/TSSLTransportFactory.java
@@ -172,7 +172,7 @@
*/
public static TSocket getClientSocket(String host, int port, int timeout, TSSLTransportParameters params) throws TTransportException {
if (params == null || !(params.isKeyStoreSet || params.isTrustStoreSet)) {
- throw new TTransportException("Either one of the KeyStore or TrustStore must be set for SSLTransportParameters");
+ throw new TTransportException(TTransportException.NOT_OPEN, "Either one of the KeyStore or TrustStore must be set for SSLTransportParameters");
}
SSLContext ctx = createSSLContext(params);
@@ -225,7 +225,7 @@
}
} catch (Exception e) {
- throw new TTransportException("Error creating the transport", e);
+ throw new TTransportException(TTransportException.NOT_OPEN, "Error creating the transport", e);
} finally {
if (in != null) {
try {
@@ -275,8 +275,10 @@
SSLSocket socket = (SSLSocket) factory.createSocket(host, port);
socket.setSoTimeout(timeout);
return new TSocket(socket);
+ } catch (TTransportException tte) {
+ throw tte;
} catch (Exception e) {
- throw new TTransportException("Could not connect to " + host + " on port " + port, e);
+ throw new TTransportException(TTransportException.NOT_OPEN, "Could not connect to " + host + " on port " + port, e);
}
}