1616
1717public class TestedDataSourceProvider {
1818
19- interface ConnectStringPossibility {
20- String getConnectString (ConnectionConfig config );
21-
22- String getMaskedConnectString (ConnectionConfig config );
23- }
24-
2519 private static final Logger logger = LoggerFactory .getLogger (TestedDataSourceProvider .class );
20+ /**
21+ * JDBC URL prefixes tried in this order: thick (OCI) driver first, then thin driver
22+ */
23+ private static final List <String > JDBC_URL_PREFIXES = List .of ("jdbc:oracle:oci8:" , "jdbc:oracle:thin:" );
24+
2625 private final ConnectionConfig config ;
27- private final List <ConnectStringPossibility > possibilities = new ArrayList <>();
2826 private final int maxConnections ;
2927
3028 public TestedDataSourceProvider (ConnectionConfig config , int maxConnections ) {
3129 this .config = config ;
3230 this .maxConnections = maxConnections ;
33-
34- possibilities .add (new ThickConnectStringPossibility ());
35- possibilities .add (new ThinConnectStringPossibility ());
3631 }
3732
3833 public DataSource getDataSource () throws SQLException {
@@ -55,14 +50,15 @@ private void setThickOrThinJdbcUrl(InitializableOracleDataSource ds) throws SQLE
5550 ds .setPassword (config .getPassword ());
5651 }
5752
58- for (ConnectStringPossibility possibility : possibilities ) {
59- logger .debug ("Try connecting {}" , possibility .getMaskedConnectString (config ));
60- ds .setURL (possibility .getConnectString (config ));
53+ for (String jdbcUrlPrefix : JDBC_URL_PREFIXES ) {
54+ String maskedUrl = jdbcUrlPrefix + config .getMaskedConnectString ();
55+ logger .debug ("Try connecting {}" , maskedUrl );
56+ ds .setURL (jdbcUrlPrefix + "@" + config .getConnect ());
6157 try (Connection ignored = ds .getConnection ()) {
62- logger .info ("Use connection string {}" , possibility . getMaskedConnectString ( config ) );
58+ logger .info ("Use connection string {}" , maskedUrl );
6359 return ;
6460 } catch (Error | Exception e ) {
65- errors .add (possibility . getMaskedConnectString ( config ) + ": " + e .getMessage ());
61+ errors .add (maskedUrl + ": " + e .getMessage ());
6662 lastException = e ;
6763 }
6864 }
@@ -101,32 +97,4 @@ private void setInitSqlFrom_NLS_LANG(InitializableOracleDataSource ds) {
10197 }
10298 }
10399 }
104-
105- private static class ThickConnectStringPossibility implements ConnectStringPossibility {
106- @ Override
107- public String getConnectString (ConnectionConfig config ) {
108- return "jdbc:oracle:oci8:@" + config .getConnect ();
109- }
110-
111- @ Override
112- public String getMaskedConnectString (ConnectionConfig config ) {
113- return "jdbc:oracle:oci8:" + maskedCredentials (config ) + "@" + config .getConnect ();
114- }
115- }
116-
117- private static class ThinConnectStringPossibility implements ConnectStringPossibility {
118- @ Override
119- public String getConnectString (ConnectionConfig config ) {
120- return "jdbc:oracle:thin:@" + config .getConnect ();
121- }
122-
123- @ Override
124- public String getMaskedConnectString (ConnectionConfig config ) {
125- return "jdbc:oracle:thin:" + maskedCredentials (config ) + "@" + config .getConnect ();
126- }
127- }
128-
129- private static String maskedCredentials (ConnectionConfig config ) {
130- return config .isExternalAuthentication () ? "/" : "****/****" ;
131- }
132100}
0 commit comments