diff --git a/bramble-android/src/main/java/org/briarproject/bramble/plugin/bluetooth/AndroidBluetoothPlugin.java b/bramble-android/src/main/java/org/briarproject/bramble/plugin/bluetooth/AndroidBluetoothPlugin.java index 65e0211fa..95e082001 100644 --- a/bramble-android/src/main/java/org/briarproject/bramble/plugin/bluetooth/AndroidBluetoothPlugin.java +++ b/bramble-android/src/main/java/org/briarproject/bramble/plugin/bluetooth/AndroidBluetoothPlugin.java @@ -18,8 +18,8 @@ import org.briarproject.bramble.api.plugin.duplex.DuplexTransportConnection; import org.briarproject.bramble.api.system.AndroidExecutor; import org.briarproject.bramble.api.system.Clock; import org.briarproject.bramble.util.AndroidUtils; +import org.briarproject.bramble.util.IoUtils; -import java.io.Closeable; import java.io.IOException; import java.security.SecureRandom; import java.util.ArrayList; @@ -51,7 +51,6 @@ import static android.bluetooth.BluetoothDevice.EXTRA_DEVICE; import static java.util.concurrent.TimeUnit.MILLISECONDS; import static java.util.logging.Level.INFO; import static java.util.logging.Level.WARNING; -import static org.briarproject.bramble.util.LogUtils.logException; import static org.briarproject.bramble.util.PrivacyUtils.scrubMacAddress; @MethodsNotNullByDefault @@ -161,11 +160,7 @@ class AndroidBluetoothPlugin extends BluetoothPlugin { @Override void tryToClose(@Nullable BluetoothServerSocket ss) { - try { - if (ss != null) ss.close(); - } catch (IOException e) { - logException(LOG, WARNING, e); - } + IoUtils.tryToClose(ss, LOG, WARNING); } @Override @@ -195,7 +190,7 @@ class AndroidBluetoothPlugin extends BluetoothPlugin { s.connect(); return wrapSocket(s); } catch (IOException e) { - tryToClose(s); + IoUtils.tryToClose(s, LOG, WARNING); throw e; } } @@ -268,14 +263,6 @@ class AndroidBluetoothPlugin extends BluetoothPlugin { return addresses; } - private void tryToClose(@Nullable Closeable c) { - try { - if (c != null) c.close(); - } catch (IOException e) { - logException(LOG, WARNING, e); - } - } - private class BluetoothStateReceiver extends BroadcastReceiver { @Override diff --git a/bramble-api/src/main/java/org/briarproject/bramble/util/IoUtils.java b/bramble-api/src/main/java/org/briarproject/bramble/util/IoUtils.java index d7f94a3b3..dea0fb423 100644 --- a/bramble-api/src/main/java/org/briarproject/bramble/util/IoUtils.java +++ b/bramble-api/src/main/java/org/briarproject/bramble/util/IoUtils.java @@ -8,12 +8,15 @@ import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import java.net.ServerSocket; import java.net.Socket; +import java.util.logging.Level; import java.util.logging.Logger; import javax.annotation.Nullable; import static java.util.logging.Level.WARNING; +import static org.briarproject.bramble.util.LogUtils.logException; @NotNullByDefault public class IoUtils { @@ -54,16 +57,35 @@ public class IoUtils { out.flush(); out.close(); } catch (IOException e) { - tryToClose(in); - tryToClose(out); + tryToClose(in, LOG, WARNING); + tryToClose(out, LOG, WARNING); } } - private static void tryToClose(@Nullable Closeable c) { + public static void tryToClose(@Nullable Closeable c, Logger logger, + Level level) { try { if (c != null) c.close(); } catch (IOException e) { - // We did our best + logException(logger, level, e); + } + } + + public static void tryToClose(@Nullable Socket s, Logger logger, + Level level) { + try { + if (s != null) s.close(); + } catch (IOException e) { + logException(logger, level, e); + } + } + + public static void tryToClose(@Nullable ServerSocket ss, Logger logger, + Level level) { + try { + if (ss != null) ss.close(); + } catch (IOException e) { + logException(logger, level, e); } } diff --git a/bramble-core/src/main/java/org/briarproject/bramble/db/H2Database.java b/bramble-core/src/main/java/org/briarproject/bramble/db/H2Database.java index 1d1c4c9f9..ae0d13bfe 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/db/H2Database.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/db/H2Database.java @@ -15,16 +15,23 @@ import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; import java.util.Properties; +import java.util.logging.Logger; import javax.annotation.Nullable; import javax.inject.Inject; +import static java.util.logging.Level.WARNING; +import static java.util.logging.Logger.getLogger; +import static org.briarproject.bramble.db.JdbcUtils.tryToClose; + /** * Contains all the H2-specific code for the database. */ @NotNullByDefault class H2Database extends JdbcDatabase { + private static final Logger LOG = getLogger(H2Database.class.getName()); + private static final String HASH_TYPE = "BINARY(32)"; private static final String SECRET_TYPE = "BINARY(32)"; private static final String BINARY_TYPE = "BINARY"; @@ -121,8 +128,8 @@ class H2Database extends JdbcDatabase { s.close(); c.close(); } catch (SQLException e) { - tryToClose(s); - tryToClose(c); + tryToClose(s, LOG, WARNING); + tryToClose(c, LOG, WARNING); throw new DbException(e); } } diff --git a/bramble-core/src/main/java/org/briarproject/bramble/db/HyperSqlDatabase.java b/bramble-core/src/main/java/org/briarproject/bramble/db/HyperSqlDatabase.java index 30b6d050c..8ce328f10 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/db/HyperSqlDatabase.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/db/HyperSqlDatabase.java @@ -14,16 +14,24 @@ import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; +import java.util.logging.Logger; import javax.annotation.Nullable; import javax.inject.Inject; +import static java.util.logging.Level.WARNING; +import static java.util.logging.Logger.getLogger; +import static org.briarproject.bramble.db.JdbcUtils.tryToClose; + /** * Contains all the HSQLDB-specific code for the database. */ @NotNullByDefault class HyperSqlDatabase extends JdbcDatabase { + private static final Logger LOG = + getLogger(HyperSqlDatabase.class.getName()); + private static final String HASH_TYPE = "BINARY(32)"; private static final String SECRET_TYPE = "BINARY(32)"; private static final String BINARY_TYPE = "BINARY"; @@ -72,8 +80,8 @@ class HyperSqlDatabase extends JdbcDatabase { s.close(); c.close(); } catch (SQLException e) { - tryToClose(s); - tryToClose(c); + tryToClose(s, LOG, WARNING); + tryToClose(c, LOG, WARNING); throw new DbException(e); } } @@ -122,8 +130,8 @@ class HyperSqlDatabase extends JdbcDatabase { s.close(); c.close(); } catch (SQLException e) { - tryToClose(s); - tryToClose(c); + tryToClose(s, LOG, WARNING); + tryToClose(c, LOG, WARNING); throw new DbException(e); } } diff --git a/bramble-core/src/main/java/org/briarproject/bramble/db/JdbcDatabase.java b/bramble-core/src/main/java/org/briarproject/bramble/db/JdbcDatabase.java index 751e68224..458a55bea 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/db/JdbcDatabase.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/db/JdbcDatabase.java @@ -72,6 +72,7 @@ import static org.briarproject.bramble.db.DatabaseConstants.LAST_COMPACTED_KEY; import static org.briarproject.bramble.db.DatabaseConstants.MAX_COMPACTION_INTERVAL_MS; import static org.briarproject.bramble.db.DatabaseConstants.SCHEMA_VERSION_KEY; import static org.briarproject.bramble.db.ExponentialBackoff.calculateExpiry; +import static org.briarproject.bramble.db.JdbcUtils.tryToClose; import static org.briarproject.bramble.util.LogUtils.logDuration; import static org.briarproject.bramble.util.LogUtils.logException; import static org.briarproject.bramble.util.LogUtils.now; @@ -458,30 +459,6 @@ abstract class JdbcDatabase implements Database { mergeSettings(txn, s, DB_SETTINGS_NAMESPACE); } - private void tryToClose(@Nullable ResultSet rs) { - try { - if (rs != null) rs.close(); - } catch (SQLException e) { - logException(LOG, WARNING, e); - } - } - - protected void tryToClose(@Nullable Statement s) { - try { - if (s != null) s.close(); - } catch (SQLException e) { - logException(LOG, WARNING, e); - } - } - - protected void tryToClose(@Nullable Connection c) { - try { - if (c != null) c.close(); - } catch (SQLException e) { - logException(LOG, WARNING, e); - } - } - private void createTables(Connection txn) throws DbException { Statement s = null; try { @@ -502,7 +479,7 @@ abstract class JdbcDatabase implements Database { s.executeUpdate(dbTypes.replaceTypes(CREATE_INCOMING_KEYS)); s.close(); } catch (SQLException e) { - tryToClose(s); + tryToClose(s, LOG, WARNING); throw new DbException(e); } } @@ -519,7 +496,7 @@ abstract class JdbcDatabase implements Database { s.executeUpdate(INDEX_STATUSES_BY_CONTACT_ID_TIMESTAMP); s.close(); } catch (SQLException e) { - tryToClose(s); + tryToClose(s, LOG, WARNING); throw new DbException(e); } } @@ -566,11 +543,7 @@ abstract class JdbcDatabase implements Database { } catch (SQLException e) { // Try to close the connection logException(LOG, WARNING, e); - try { - txn.close(); - } catch (SQLException e1) { - logException(LOG, WARNING, e1); - } + tryToClose(txn, LOG, WARNING); // Whatever happens, allow the database to close connectionsLock.lock(); try { @@ -659,8 +632,8 @@ abstract class JdbcDatabase implements Database { ps.close(); return c; } catch (SQLException e) { - tryToClose(rs); - tryToClose(ps); + tryToClose(rs, LOG, WARNING); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -681,7 +654,7 @@ abstract class JdbcDatabase implements Database { if (affected != 1) throw new DbStateException(); ps.close(); } catch (SQLException e) { - tryToClose(ps); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -704,7 +677,7 @@ abstract class JdbcDatabase implements Database { // Create a status row for each message in the group addStatus(txn, c, g, groupShared); } catch (SQLException e) { - tryToClose(ps); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -735,8 +708,8 @@ abstract class JdbcDatabase implements Database { rs.close(); ps.close(); } catch (SQLException e) { - tryToClose(rs); - tryToClose(ps); + tryToClose(rs, LOG, WARNING); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -761,7 +734,7 @@ abstract class JdbcDatabase implements Database { if (affected != 1) throw new DbStateException(); ps.close(); } catch (SQLException e) { - tryToClose(ps); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -810,7 +783,7 @@ abstract class JdbcDatabase implements Database { if (affected < 0) throw new DbStateException(); ps.close(); } catch (SQLException e) { - tryToClose(ps); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -840,8 +813,8 @@ abstract class JdbcDatabase implements Database { if (affected != 1) throw new DbStateException(); ps.close(); } catch (SQLException e) { - tryToClose(rs); - tryToClose(ps); + tryToClose(rs, LOG, WARNING); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -873,7 +846,7 @@ abstract class JdbcDatabase implements Database { if (affected != 1) throw new DbStateException(); ps.close(); } catch (SQLException e) { - tryToClose(ps); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -915,8 +888,8 @@ abstract class JdbcDatabase implements Database { if (affected != 1) throw new DbStateException(); ps.close(); } catch (SQLException e) { - tryToClose(rs); - tryToClose(ps); + tryToClose(rs, LOG, WARNING); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -935,7 +908,7 @@ abstract class JdbcDatabase implements Database { if (affected != 1) throw new DbStateException(); ps.close(); } catch (SQLException e) { - tryToClose(ps); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -1015,8 +988,8 @@ abstract class JdbcDatabase implements Database { ps.close(); return keySetId; } catch (SQLException e) { - tryToClose(rs); - tryToClose(ps); + tryToClose(rs, LOG, WARNING); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -1039,8 +1012,8 @@ abstract class JdbcDatabase implements Database { ps.close(); return found; } catch (SQLException e) { - tryToClose(rs); - tryToClose(ps); + tryToClose(rs, LOG, WARNING); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -1061,8 +1034,8 @@ abstract class JdbcDatabase implements Database { ps.close(); return found; } catch (SQLException e) { - tryToClose(rs); - tryToClose(ps); + tryToClose(rs, LOG, WARNING); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -1083,8 +1056,8 @@ abstract class JdbcDatabase implements Database { ps.close(); return found; } catch (SQLException e) { - tryToClose(rs); - tryToClose(ps); + tryToClose(rs, LOG, WARNING); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -1105,8 +1078,8 @@ abstract class JdbcDatabase implements Database { ps.close(); return found; } catch (SQLException e) { - tryToClose(rs); - tryToClose(ps); + tryToClose(rs, LOG, WARNING); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -1127,8 +1100,8 @@ abstract class JdbcDatabase implements Database { ps.close(); return found; } catch (SQLException e) { - tryToClose(rs); - tryToClose(ps); + tryToClose(rs, LOG, WARNING); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -1149,8 +1122,8 @@ abstract class JdbcDatabase implements Database { ps.close(); return found; } catch (SQLException e) { - tryToClose(rs); - tryToClose(ps); + tryToClose(rs, LOG, WARNING); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -1174,8 +1147,8 @@ abstract class JdbcDatabase implements Database { ps.close(); return found; } catch (SQLException e) { - tryToClose(rs); - tryToClose(ps); + tryToClose(rs, LOG, WARNING); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -1198,8 +1171,8 @@ abstract class JdbcDatabase implements Database { ps.close(); return count; } catch (SQLException e) { - tryToClose(rs); - tryToClose(ps); + tryToClose(rs, LOG, WARNING); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -1223,7 +1196,7 @@ abstract class JdbcDatabase implements Database { if (affected < 0) throw new DbStateException(); ps.close(); } catch (SQLException e) { - tryToClose(ps); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -1240,7 +1213,7 @@ abstract class JdbcDatabase implements Database { if (affected < 0) throw new DbStateException(); ps.close(); } catch (SQLException e) { - tryToClose(ps); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -1273,8 +1246,8 @@ abstract class JdbcDatabase implements Database { return new Contact(c, author, localAuthorId, alias, verified, active); } catch (SQLException e) { - tryToClose(rs); - tryToClose(ps); + tryToClose(rs, LOG, WARNING); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -1310,8 +1283,8 @@ abstract class JdbcDatabase implements Database { ps.close(); return contacts; } catch (SQLException e) { - tryToClose(rs); - tryToClose(ps); + tryToClose(rs, LOG, WARNING); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -1333,8 +1306,8 @@ abstract class JdbcDatabase implements Database { ps.close(); return ids; } catch (SQLException e) { - tryToClose(rs); - tryToClose(ps); + tryToClose(rs, LOG, WARNING); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -1371,8 +1344,8 @@ abstract class JdbcDatabase implements Database { ps.close(); return contacts; } catch (SQLException e) { - tryToClose(rs); - tryToClose(ps); + tryToClose(rs, LOG, WARNING); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -1395,8 +1368,8 @@ abstract class JdbcDatabase implements Database { ps.close(); return new Group(g, clientId, majorVersion, descriptor); } catch (SQLException e) { - tryToClose(rs); - tryToClose(ps); + tryToClose(rs, LOG, WARNING); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -1423,8 +1396,8 @@ abstract class JdbcDatabase implements Database { ps.close(); return groups; } catch (SQLException e) { - tryToClose(rs); - tryToClose(ps); + tryToClose(rs, LOG, WARNING); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -1449,8 +1422,8 @@ abstract class JdbcDatabase implements Database { ps.close(); return v; } catch (SQLException e) { - tryToClose(rs); - tryToClose(ps); + tryToClose(rs, LOG, WARNING); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -1473,8 +1446,8 @@ abstract class JdbcDatabase implements Database { ps.close(); return visible; } catch (SQLException e) { - tryToClose(rs); - tryToClose(ps); + tryToClose(rs, LOG, WARNING); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -1505,8 +1478,8 @@ abstract class JdbcDatabase implements Database { ps.close(); return localAuthor; } catch (SQLException e) { - tryToClose(rs); - tryToClose(ps); + tryToClose(rs, LOG, WARNING); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -1537,8 +1510,8 @@ abstract class JdbcDatabase implements Database { ps.close(); return authors; } catch (SQLException e) { - tryToClose(rs); - tryToClose(ps); + tryToClose(rs, LOG, WARNING); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -1566,8 +1539,8 @@ abstract class JdbcDatabase implements Database { System.arraycopy(raw, MESSAGE_HEADER_LENGTH, body, 0, body.length); return new Message(m, g, timestamp, body); } catch (SQLException e) { - tryToClose(rs); - tryToClose(ps); + tryToClose(rs, LOG, WARNING); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -1590,8 +1563,8 @@ abstract class JdbcDatabase implements Database { ps.close(); return ids; } catch (SQLException e) { - tryToClose(rs); - tryToClose(ps); + tryToClose(rs, LOG, WARNING); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -1628,8 +1601,8 @@ abstract class JdbcDatabase implements Database { if (intersection == null) throw new AssertionError(); return intersection; } catch (SQLException e) { - tryToClose(rs); - tryToClose(ps); + tryToClose(rs, LOG, WARNING); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -1661,8 +1634,8 @@ abstract class JdbcDatabase implements Database { ps.close(); return all; } catch (SQLException e) { - tryToClose(rs); - tryToClose(ps); + tryToClose(rs, LOG, WARNING); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -1696,8 +1669,8 @@ abstract class JdbcDatabase implements Database { ps.close(); return metadata; } catch (SQLException e) { - tryToClose(rs); - tryToClose(ps); + tryToClose(rs, LOG, WARNING); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -1720,8 +1693,8 @@ abstract class JdbcDatabase implements Database { ps.close(); return metadata; } catch (SQLException e) { - tryToClose(rs); - tryToClose(ps); + tryToClose(rs, LOG, WARNING); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -1746,8 +1719,8 @@ abstract class JdbcDatabase implements Database { ps.close(); return metadata; } catch (SQLException e) { - tryToClose(rs); - tryToClose(ps); + tryToClose(rs, LOG, WARNING); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -1776,8 +1749,8 @@ abstract class JdbcDatabase implements Database { ps.close(); return statuses; } catch (SQLException e) { - tryToClose(rs); - tryToClose(ps); + tryToClose(rs, LOG, WARNING); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -1807,8 +1780,8 @@ abstract class JdbcDatabase implements Database { ps.close(); return status; } catch (SQLException e) { - tryToClose(rs); - tryToClose(ps); + tryToClose(rs, LOG, WARNING); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -1837,8 +1810,8 @@ abstract class JdbcDatabase implements Database { ps.close(); return dependencies; } catch (SQLException e) { - tryToClose(rs); - tryToClose(ps); + tryToClose(rs, LOG, WARNING); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -1868,8 +1841,8 @@ abstract class JdbcDatabase implements Database { ps.close(); return dependents; } catch (SQLException e) { - tryToClose(rs); - tryToClose(ps); + tryToClose(rs, LOG, WARNING); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -1891,8 +1864,8 @@ abstract class JdbcDatabase implements Database { ps.close(); return state; } catch (SQLException e) { - tryToClose(rs); - tryToClose(ps); + tryToClose(rs, LOG, WARNING); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -1916,8 +1889,8 @@ abstract class JdbcDatabase implements Database { ps.close(); return ids; } catch (SQLException e) { - tryToClose(rs); - tryToClose(ps); + tryToClose(rs, LOG, WARNING); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -1950,8 +1923,8 @@ abstract class JdbcDatabase implements Database { ps.close(); return ids; } catch (SQLException e) { - tryToClose(rs); - tryToClose(ps); + tryToClose(rs, LOG, WARNING); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -1975,8 +1948,8 @@ abstract class JdbcDatabase implements Database { ps.close(); return ids; } catch (SQLException e) { - tryToClose(rs); - tryToClose(ps); + tryToClose(rs, LOG, WARNING); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -2014,8 +1987,8 @@ abstract class JdbcDatabase implements Database { ps.close(); return ids; } catch (SQLException e) { - tryToClose(rs); - tryToClose(ps); + tryToClose(rs, LOG, WARNING); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -2048,8 +2021,8 @@ abstract class JdbcDatabase implements Database { ps.close(); return ids; } catch (SQLException e) { - tryToClose(rs); - tryToClose(ps); + tryToClose(rs, LOG, WARNING); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -2076,8 +2049,8 @@ abstract class JdbcDatabase implements Database { ps.close(); return ids; } catch (SQLException e) { - tryToClose(rs); - tryToClose(ps); + tryToClose(rs, LOG, WARNING); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -2106,8 +2079,8 @@ abstract class JdbcDatabase implements Database { ps.close(); return nextSendTime; } catch (SQLException e) { - tryToClose(rs); - tryToClose(ps); + tryToClose(rs, LOG, WARNING); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -2145,8 +2118,8 @@ abstract class JdbcDatabase implements Database { ps.close(); return ids; } catch (SQLException e) { - tryToClose(rs); - tryToClose(ps); + tryToClose(rs, LOG, WARNING); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -2168,8 +2141,8 @@ abstract class JdbcDatabase implements Database { ps.close(); return s; } catch (SQLException e) { - tryToClose(rs); - tryToClose(ps); + tryToClose(rs, LOG, WARNING); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -2234,8 +2207,8 @@ abstract class JdbcDatabase implements Database { ps.close(); return keys; } catch (SQLException e) { - tryToClose(rs); - tryToClose(ps); + tryToClose(rs, LOG, WARNING); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -2254,7 +2227,7 @@ abstract class JdbcDatabase implements Database { if (affected != 1) throw new DbStateException(); ps.close(); } catch (SQLException e) { - tryToClose(ps); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -2281,7 +2254,7 @@ abstract class JdbcDatabase implements Database { } ps.close(); } catch (SQLException e) { - tryToClose(ps); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -2308,7 +2281,7 @@ abstract class JdbcDatabase implements Database { } ps.close(); } catch (SQLException e) { - tryToClose(ps); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -2338,7 +2311,7 @@ abstract class JdbcDatabase implements Database { if (rows != 1) throw new DbStateException(); ps.close(); } catch (SQLException e) { - tryToClose(ps); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -2383,8 +2356,8 @@ abstract class JdbcDatabase implements Database { if (rows != 1) throw new DbStateException(); ps.close(); } catch (SQLException e) { - tryToClose(rs); - tryToClose(ps); + tryToClose(rs, LOG, WARNING); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -2450,7 +2423,7 @@ abstract class JdbcDatabase implements Database { } return added; } catch (SQLException e) { - tryToClose(ps); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -2497,7 +2470,7 @@ abstract class JdbcDatabase implements Database { if (rows != 1) throw new DbStateException(); ps.close(); } catch (SQLException e) { - tryToClose(ps); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -2516,7 +2489,7 @@ abstract class JdbcDatabase implements Database { if (affected < 0 || affected > 1) throw new DbStateException(); ps.close(); } catch (SQLException e) { - tryToClose(ps); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -2535,7 +2508,7 @@ abstract class JdbcDatabase implements Database { if (affected < 0 || affected > 1) throw new DbStateException(); ps.close(); } catch (SQLException e) { - tryToClose(ps); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -2554,7 +2527,7 @@ abstract class JdbcDatabase implements Database { if (affected < 0 || affected > 1) throw new DbStateException(); ps.close(); } catch (SQLException e) { - tryToClose(ps); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -2571,7 +2544,7 @@ abstract class JdbcDatabase implements Database { if (affected != 1) throw new DbStateException(); ps.close(); } catch (SQLException e) { - tryToClose(ps); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -2587,7 +2560,7 @@ abstract class JdbcDatabase implements Database { if (affected != 1) throw new DbStateException(); ps.close(); } catch (SQLException e) { - tryToClose(ps); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -2615,7 +2588,7 @@ abstract class JdbcDatabase implements Database { if (affected < 0) throw new DbStateException(); ps.close(); } catch (SQLException e) { - tryToClose(ps); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -2632,7 +2605,7 @@ abstract class JdbcDatabase implements Database { if (affected != 1) throw new DbStateException(); ps.close(); } catch (SQLException e) { - tryToClose(ps); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -2648,7 +2621,7 @@ abstract class JdbcDatabase implements Database { if (affected != 1) throw new DbStateException(); ps.close(); } catch (SQLException e) { - tryToClose(ps); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -2667,7 +2640,7 @@ abstract class JdbcDatabase implements Database { ps.close(); return affected == 1; } catch (SQLException e) { - tryToClose(ps); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -2692,7 +2665,7 @@ abstract class JdbcDatabase implements Database { if (rows != 1) throw new DbStateException(); ps.close(); } catch (SQLException e) { - tryToClose(ps); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -2709,7 +2682,7 @@ abstract class JdbcDatabase implements Database { if (affected != 1) throw new DbStateException(); ps.close(); } catch (SQLException e) { - tryToClose(ps); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -2730,7 +2703,7 @@ abstract class JdbcDatabase implements Database { if (affected < 0) throw new DbStateException(); ps.close(); } catch (SQLException e) { - tryToClose(ps); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -2749,7 +2722,7 @@ abstract class JdbcDatabase implements Database { if (affected < 0 || affected > 1) throw new DbStateException(); ps.close(); } catch (SQLException e) { - tryToClose(ps); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -2767,7 +2740,7 @@ abstract class JdbcDatabase implements Database { if (affected < 0 || affected > 1) throw new DbStateException(); ps.close(); } catch (SQLException e) { - tryToClose(ps); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -2785,7 +2758,7 @@ abstract class JdbcDatabase implements Database { if (affected < 0 || affected > 1) throw new DbStateException(); ps.close(); } catch (SQLException e) { - tryToClose(ps); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -2804,7 +2777,7 @@ abstract class JdbcDatabase implements Database { if (affected < 0 || affected > 1) throw new DbStateException(); ps.close(); } catch (SQLException e) { - tryToClose(ps); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -2834,7 +2807,7 @@ abstract class JdbcDatabase implements Database { if (affected < 0) throw new DbStateException(); ps.close(); } catch (SQLException e) { - tryToClose(ps); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -2860,7 +2833,7 @@ abstract class JdbcDatabase implements Database { if (affected < 0) throw new DbStateException(); ps.close(); } catch (SQLException e) { - tryToClose(ps); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -2913,7 +2886,7 @@ abstract class JdbcDatabase implements Database { if (affected < 0) throw new DbStateException(); ps.close(); } catch (SQLException e) { - tryToClose(ps); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -2936,7 +2909,7 @@ abstract class JdbcDatabase implements Database { if (affected < 0 || affected > 1) throw new DbStateException(); ps.close(); } catch (SQLException e) { - tryToClose(ps); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -2955,7 +2928,7 @@ abstract class JdbcDatabase implements Database { if (affected < 0 || affected > 1) throw new DbStateException(); ps.close(); } catch (SQLException e) { - tryToClose(ps); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -2991,8 +2964,8 @@ abstract class JdbcDatabase implements Database { if (affected != 1) throw new DbStateException(); ps.close(); } catch (SQLException e) { - tryToClose(rs); - tryToClose(ps); + tryToClose(rs, LOG, WARNING); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } @@ -3059,7 +3032,7 @@ abstract class JdbcDatabase implements Database { if (rows < 0 || rows > 1) throw new DbStateException(); ps.close(); } catch (SQLException e) { - tryToClose(ps); + tryToClose(ps, LOG, WARNING); throw new DbException(e); } } diff --git a/bramble-core/src/main/java/org/briarproject/bramble/db/JdbcUtils.java b/bramble-core/src/main/java/org/briarproject/bramble/db/JdbcUtils.java new file mode 100644 index 000000000..52cc60820 --- /dev/null +++ b/bramble-core/src/main/java/org/briarproject/bramble/db/JdbcUtils.java @@ -0,0 +1,42 @@ +package org.briarproject.bramble.db; + +import org.briarproject.bramble.api.nullsafety.NotNullByDefault; + +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.logging.Level; +import java.util.logging.Logger; + +import javax.annotation.Nullable; + +import static org.briarproject.bramble.util.LogUtils.logException; + +@NotNullByDefault +class JdbcUtils { + + static void tryToClose(@Nullable ResultSet rs, Logger logger, Level level) { + try { + if (rs != null) rs.close(); + } catch (SQLException e) { + logException(logger, level, e); + } + } + + static void tryToClose(@Nullable Statement s, Logger logger, Level level) { + try { + if (s != null) s.close(); + } catch (SQLException e) { + logException(logger, level, e); + } + } + + static void tryToClose(@Nullable Connection c, Logger logger, Level level) { + try { + if (c != null) c.close(); + } catch (SQLException e) { + logException(logger, level, e); + } + } +} diff --git a/bramble-core/src/main/java/org/briarproject/bramble/db/Migration38_39.java b/bramble-core/src/main/java/org/briarproject/bramble/db/Migration38_39.java index 455308234..089fd6308 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/db/Migration38_39.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/db/Migration38_39.java @@ -7,10 +7,8 @@ import java.sql.SQLException; import java.sql.Statement; import java.util.logging.Logger; -import javax.annotation.Nullable; - import static java.util.logging.Level.WARNING; -import static org.briarproject.bramble.util.LogUtils.logException; +import static org.briarproject.bramble.db.JdbcUtils.tryToClose; class Migration38_39 implements Migration { @@ -40,16 +38,8 @@ class Migration38_39 implements Migration { + " ALTER COLUMN contactId" + " SET NOT NULL"); } catch (SQLException e) { - tryToClose(s); + tryToClose(s, LOG, WARNING); throw new DbException(e); } } - - private void tryToClose(@Nullable Statement s) { - try { - if (s != null) s.close(); - } catch (SQLException e) { - logException(LOG, WARNING, e); - } - } } diff --git a/bramble-core/src/main/java/org/briarproject/bramble/db/Migration39_40.java b/bramble-core/src/main/java/org/briarproject/bramble/db/Migration39_40.java index 596594b52..882775f90 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/db/Migration39_40.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/db/Migration39_40.java @@ -7,10 +7,8 @@ import java.sql.SQLException; import java.sql.Statement; import java.util.logging.Logger; -import javax.annotation.Nullable; - import static java.util.logging.Level.WARNING; -import static org.briarproject.bramble.util.LogUtils.logException; +import static org.briarproject.bramble.db.JdbcUtils.tryToClose; class Migration39_40 implements Migration { @@ -39,16 +37,8 @@ class Migration39_40 implements Migration { + " ALTER COLUMN eta" + " SET NOT NULL"); } catch (SQLException e) { - tryToClose(s); + tryToClose(s, LOG, WARNING); throw new DbException(e); } } - - private void tryToClose(@Nullable Statement s) { - try { - if (s != null) s.close(); - } catch (SQLException e) { - logException(LOG, WARNING, e); - } - } } diff --git a/bramble-core/src/main/java/org/briarproject/bramble/db/Migration40_41.java b/bramble-core/src/main/java/org/briarproject/bramble/db/Migration40_41.java index efd3644f9..709be524d 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/db/Migration40_41.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/db/Migration40_41.java @@ -7,11 +7,9 @@ import java.sql.SQLException; import java.sql.Statement; import java.util.logging.Logger; -import javax.annotation.Nullable; - import static java.util.logging.Level.WARNING; import static java.util.logging.Logger.getLogger; -import static org.briarproject.bramble.util.LogUtils.logException; +import static org.briarproject.bramble.db.JdbcUtils.tryToClose; class Migration40_41 implements Migration { @@ -41,16 +39,8 @@ class Migration40_41 implements Migration { s.execute("ALTER TABLE contacts" + dbTypes.replaceTypes(" ADD alias _STRING")); } catch (SQLException e) { - tryToClose(s); + tryToClose(s, LOG, WARNING); throw new DbException(e); } } - - private void tryToClose(@Nullable Statement s) { - try { - if (s != null) s.close(); - } catch (SQLException e) { - logException(LOG, WARNING, e); - } - } } diff --git a/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/FileTransportReader.java b/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/FileTransportReader.java index bd1fb14e8..07a84d294 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/FileTransportReader.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/FileTransportReader.java @@ -4,12 +4,11 @@ import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.bramble.api.plugin.TransportConnectionReader; import java.io.File; -import java.io.IOException; import java.io.InputStream; import java.util.logging.Logger; import static java.util.logging.Level.WARNING; -import static org.briarproject.bramble.util.LogUtils.logException; +import static org.briarproject.bramble.util.IoUtils.tryToClose; @NotNullByDefault class FileTransportReader implements TransportConnectionReader { @@ -34,11 +33,7 @@ class FileTransportReader implements TransportConnectionReader { @Override public void dispose(boolean exception, boolean recognised) { - try { - in.close(); - } catch (IOException e) { - logException(LOG, WARNING, e); - } + tryToClose(in, LOG, WARNING); plugin.readerFinished(file, exception, recognised); } } diff --git a/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/FileTransportWriter.java b/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/FileTransportWriter.java index 91b2cdf01..2ab164784 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/FileTransportWriter.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/plugin/file/FileTransportWriter.java @@ -4,12 +4,11 @@ import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.bramble.api.plugin.TransportConnectionWriter; import java.io.File; -import java.io.IOException; import java.io.OutputStream; import java.util.logging.Logger; import static java.util.logging.Level.WARNING; -import static org.briarproject.bramble.util.LogUtils.logException; +import static org.briarproject.bramble.util.IoUtils.tryToClose; @NotNullByDefault class FileTransportWriter implements TransportConnectionWriter { @@ -44,11 +43,7 @@ class FileTransportWriter implements TransportConnectionWriter { @Override public void dispose(boolean exception) { - try { - out.close(); - } catch (IOException e) { - logException(LOG, WARNING, e); - } + tryToClose(out, LOG, WARNING); plugin.writerFinished(file, exception); } } diff --git a/bramble-core/src/main/java/org/briarproject/bramble/plugin/tcp/LanTcpPlugin.java b/bramble-core/src/main/java/org/briarproject/bramble/plugin/tcp/LanTcpPlugin.java index 28bcab148..1cc581cc5 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/plugin/tcp/LanTcpPlugin.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/plugin/tcp/LanTcpPlugin.java @@ -11,6 +11,7 @@ import org.briarproject.bramble.api.plugin.duplex.DuplexPluginCallback; import org.briarproject.bramble.api.plugin.duplex.DuplexTransportConnection; import org.briarproject.bramble.api.properties.TransportProperties; import org.briarproject.bramble.api.settings.Settings; +import org.briarproject.bramble.util.IoUtils; import org.briarproject.bramble.util.StringUtils; import java.io.IOException; @@ -35,7 +36,6 @@ import static org.briarproject.bramble.api.plugin.LanTcpConstants.ID; import static org.briarproject.bramble.api.plugin.LanTcpConstants.PREF_LAN_IP_PORTS; import static org.briarproject.bramble.api.plugin.LanTcpConstants.PROP_IP_PORTS; import static org.briarproject.bramble.util.ByteUtils.MAX_16_BIT_UNSIGNED; -import static org.briarproject.bramble.util.LogUtils.logException; import static org.briarproject.bramble.util.PrivacyUtils.scrubSocketAddress; @NotNullByDefault @@ -293,11 +293,7 @@ class LanTcpPlugin extends TcpPlugin { @Override public void close() { - try { - ss.close(); - } catch (IOException e) { - logException(LOG, WARNING, e); - } + IoUtils.tryToClose(ss, LOG, WARNING); } } diff --git a/bramble-core/src/main/java/org/briarproject/bramble/plugin/tcp/TcpPlugin.java b/bramble-core/src/main/java/org/briarproject/bramble/plugin/tcp/TcpPlugin.java index 5646abff6..3e8a008be 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/plugin/tcp/TcpPlugin.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/plugin/tcp/TcpPlugin.java @@ -11,6 +11,7 @@ import org.briarproject.bramble.api.plugin.duplex.DuplexPlugin; import org.briarproject.bramble.api.plugin.duplex.DuplexPluginCallback; import org.briarproject.bramble.api.plugin.duplex.DuplexTransportConnection; import org.briarproject.bramble.api.properties.TransportProperties; +import org.briarproject.bramble.util.IoUtils; import org.briarproject.bramble.util.StringUtils; import java.io.IOException; @@ -153,13 +154,8 @@ abstract class TcpPlugin implements DuplexPlugin { } protected void tryToClose(@Nullable ServerSocket ss) { - try { - if (ss != null) ss.close(); - } catch (IOException e) { - logException(LOG, WARNING, e); - } finally { - callback.transportDisabled(); - } + IoUtils.tryToClose(ss, LOG, WARNING); + callback.transportDisabled(); } String getIpPortString(InetSocketAddress a) { diff --git a/bramble-core/src/main/java/org/briarproject/bramble/plugin/tor/TorPlugin.java b/bramble-core/src/main/java/org/briarproject/bramble/plugin/tor/TorPlugin.java index b2df4e51d..46770b884 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/plugin/tor/TorPlugin.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/plugin/tor/TorPlugin.java @@ -31,7 +31,6 @@ import org.briarproject.bramble.api.system.LocationUtils; import org.briarproject.bramble.api.system.ResourceProvider; import org.briarproject.bramble.util.IoUtils; -import java.io.Closeable; import java.io.EOFException; import java.io.File; import java.io.FileInputStream; @@ -303,8 +302,8 @@ abstract class TorPlugin implements DuplexPlugin, EventHandler, EventListener { IoUtils.copyAndClose(in, out); doneFile.createNewFile(); } catch (IOException e) { - tryToClose(in); - tryToClose(out); + IoUtils.tryToClose(in, LOG, WARNING); + IoUtils.tryToClose(out, LOG, WARNING); throw new PluginException(e); } } @@ -341,22 +340,6 @@ abstract class TorPlugin implements DuplexPlugin, EventHandler, EventListener { return getClass().getClassLoader().getResourceAsStream("torrc"); } - private void tryToClose(@Nullable Closeable c) { - try { - if (c != null) c.close(); - } catch (IOException e) { - logException(LOG, WARNING, e); - } - } - - private void tryToClose(@Nullable Socket s) { - try { - if (s != null) s.close(); - } catch (IOException e) { - logException(LOG, WARNING, e); - } - } - private void listFiles(File f) { if (f.isDirectory()) { File[] children = f.listFiles(); @@ -378,7 +361,7 @@ abstract class TorPlugin implements DuplexPlugin, EventHandler, EventListener { } return b; } finally { - tryToClose(in); + IoUtils.tryToClose(in, LOG, WARNING); } } @@ -418,13 +401,8 @@ abstract class TorPlugin implements DuplexPlugin, EventHandler, EventListener { } private void tryToClose(@Nullable ServerSocket ss) { - try { - if (ss != null) ss.close(); - } catch (IOException e) { - logException(LOG, WARNING, e); - } finally { - callback.transportDisabled(); - } + IoUtils.tryToClose(ss, LOG, WARNING); + callback.transportDisabled(); } private void publishHiddenService(String port) { @@ -593,7 +571,7 @@ abstract class TorPlugin implements DuplexPlugin, EventHandler, EventListener { LOG.info("Could not connect to " + scrubOnion(bestOnion) + ": " + e.toString()); } - tryToClose(s); + IoUtils.tryToClose(s, LOG, WARNING); return null; } } diff --git a/bramble-core/src/main/java/org/briarproject/bramble/reporting/DevReporterImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/reporting/DevReporterImpl.java index 6aa211050..f03d4f730 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/reporting/DevReporterImpl.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/reporting/DevReporterImpl.java @@ -12,7 +12,6 @@ import org.briarproject.bramble.api.reporting.DevReporter; import org.briarproject.bramble.util.IoUtils; import org.briarproject.bramble.util.StringUtils; -import java.io.Closeable; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; @@ -26,13 +25,12 @@ import java.net.Socket; import java.util.concurrent.Executor; import java.util.logging.Logger; -import javax.annotation.Nullable; import javax.annotation.concurrent.Immutable; import javax.inject.Inject; import javax.net.SocketFactory; import static java.util.logging.Level.WARNING; -import static org.briarproject.bramble.util.LogUtils.logException; +import static org.briarproject.bramble.util.IoUtils.tryToClose; @Immutable @NotNullByDefault @@ -66,7 +64,7 @@ class DevReporterImpl implements DevReporter, EventListener { s.setSoTimeout(SOCKET_TIMEOUT); return s; } catch (IOException e) { - tryToClose(s); + tryToClose(s, LOG, WARNING); throw e; } } @@ -88,8 +86,7 @@ class DevReporterImpl implements DevReporter, EventListener { writer.append(armoured); writer.flush(); } finally { - if (writer != null) - writer.close(); + tryToClose(writer, LOG, WARNING); } } @@ -121,27 +118,11 @@ class DevReporterImpl implements DevReporter, EventListener { f.delete(); } catch (IOException e) { LOG.log(WARNING, "Failed to send reports", e); - tryToClose(out); - tryToClose(in); + tryToClose(out, LOG, WARNING); + tryToClose(in, LOG, WARNING); return; } } LOG.info("Reports sent"); } - - private void tryToClose(@Nullable Closeable c) { - try { - if (c != null) c.close(); - } catch (IOException e) { - logException(LOG, WARNING, e); - } - } - - private void tryToClose(@Nullable Socket s) { - try { - if (s != null) s.close(); - } catch (IOException e) { - logException(LOG, WARNING, e); - } - } }