diff --git a/.classpath b/.classpath index e21dd31..1a530da 100644 --- a/.classpath +++ b/.classpath @@ -21,5 +21,6 @@ + diff --git a/MineverseChat/mineverse/Aust1n46/chat/MineverseChat.java b/MineverseChat/mineverse/Aust1n46/chat/MineverseChat.java index a64a946..5786697 100644 --- a/MineverseChat/mineverse/Aust1n46/chat/MineverseChat.java +++ b/MineverseChat/mineverse/Aust1n46/chat/MineverseChat.java @@ -12,9 +12,6 @@ import java.io.File; import java.io.IOException; import java.lang.reflect.Field; import java.lang.reflect.Method; -import java.sql.Connection; -import java.sql.SQLException; -import java.sql.Statement; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; @@ -87,6 +84,7 @@ import mineverse.Aust1n46.chat.command.mute.Mute; import mineverse.Aust1n46.chat.command.mute.Muteall; import mineverse.Aust1n46.chat.command.mute.Unmute; import mineverse.Aust1n46.chat.command.mute.Unmuteall; +import mineverse.Aust1n46.chat.database.Database; import mineverse.Aust1n46.chat.database.MySQL; import mineverse.Aust1n46.chat.database.PlayerData; import mineverse.Aust1n46.chat.gui.GuiSlotInfo; @@ -99,6 +97,8 @@ import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandMap; import org.bukkit.command.SimpleCommandMap; +import org.bukkit.configuration.ConfigurationSection; +import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.entity.Player; import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.RegisteredServiceProvider; @@ -136,13 +136,8 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener { private MineverseCommandExecutor commandExecutor; private Map commands = new HashMap(); - // MySQL ------------------------------------ - public Connection c = null; - public MySQL MySQL; - public boolean mysql = false; - - // SQLite ------------------------------------- - // public Connection lite = null; + // Database ------------------------------------ + public Database db = null; // Misc -------------------------------- public static AliasInfo aaInfo; @@ -179,6 +174,8 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener { @Deprecated public static ChatChannelInfo ccInfo; + public static void main(String[] args) {} + @Override public void onEnable() { ccInfo = new ChatChannelInfo(); @@ -287,19 +284,16 @@ public class MineverseChat extends JavaPlugin implements PluginMessageListener { onlinePlayers.add(mcp); } - if(this.getConfig().getConfigurationSection("mysql").getBoolean("enabled")) { - this.MySQL = new MySQL(this, getConfig().getConfigurationSection("mysql").getString("host"), getConfig().getConfigurationSection("mysql").getString("port"), getConfig().getConfigurationSection("mysql").getString("database"), getConfig().getConfigurationSection("mysql").getString("user"), getConfig().getConfigurationSection("mysql").getString("password")); - this.mysql = true; - try { - c = MySQL.openConnection(); - Statement statement = c.createStatement(); - statement.executeUpdate("CREATE TABLE IF NOT EXISTS `VentureChat` (`rowid` INT(7) NOT NULL AUTO_INCREMENT, `ChatTime` TEXT(100), `UUID` TEXT(100), `Name` TEXT(100), `Server` TEXT(100), `Channel` TEXT(100), `Text` TEXT(300), `Type` TEXT(100), PRIMARY KEY (rowid));"); - Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - Connecting to MySQL Database")); - } - catch(ClassNotFoundException | SQLException e) { - Bukkit.getConsoleSender().sendMessage(Format.FormatStringAll("&8[&eVentureChat&8]&e - &cFailed to connect to MySQL Database, Reason: " + e)); - this.mysql = false; - } + FileConfiguration config = getConfig(); + ConfigurationSection mysqlConfig = config.getConfigurationSection("mysql"); + if (this.getConfig().getConfigurationSection("mysql").getBoolean("enabled")) { + String host = mysqlConfig.getString("host"); + int port = mysqlConfig.getInt("port"); + String database = mysqlConfig.getString("database"); + String user = mysqlConfig.getString("user"); + String password = mysqlConfig.getString("password"); + db = new MySQL(host, port, database, user, password); + db.init(); } commands.put("broadcast", new Broadcast("broadcast")); diff --git a/MineverseChat/mineverse/Aust1n46/chat/database/Database.java b/MineverseChat/mineverse/Aust1n46/chat/database/Database.java index c4b1a7e..c79f18f 100644 --- a/MineverseChat/mineverse/Aust1n46/chat/database/Database.java +++ b/MineverseChat/mineverse/Aust1n46/chat/database/Database.java @@ -1,27 +1,44 @@ package mineverse.Aust1n46.chat.database; import java.sql.Connection; -import java.sql.ResultSet; +import java.sql.PreparedStatement; import java.sql.SQLException; -import org.bukkit.plugin.Plugin; + +import org.bukkit.Bukkit; + +import com.zaxxer.hikari.HikariDataSource; + +import mineverse.Aust1n46.chat.MineverseChat; //Parent class for both the MySQL and SQLite database classes. public abstract class Database { - protected Plugin plugin; - protected Database(Plugin plugin) { - this.plugin = plugin; + protected HikariDataSource dataSource = null; + + public abstract void init(); + + public void writeVentureChat(String time, String uuid, String name, String server, String channel, String text, String type) { + MineverseChat plugin = MineverseChat.getInstance(); + Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> { + try { + final Connection conn = dataSource.getConnection(); + conn.setAutoCommit(false); + final PreparedStatement statement = conn.prepareStatement( + "INSERT INTO VentureChat " + + "(ChatTime, UUID, Name, Server, Channel, Text, Type) " + + "VALUES (?, ?, ?, ?, ?, ?, ?)"); + statement.setString(1, time); + statement.setString(2, uuid); + statement.setString(3, name); + statement.setString(4, server); + statement.setString(5, channel); + statement.setString(6, text); + statement.setString(7, type); + statement.executeUpdate(); + conn.commit(); + } catch(SQLException e) { + throw new RuntimeException(e); + } + }); } - - public abstract Connection openConnection() throws SQLException, ClassNotFoundException; - - public abstract boolean checkConnection() throws SQLException; - - public abstract Connection getConnection(); - - public abstract boolean closeConnection() throws SQLException; - - public abstract ResultSet querySQL(String query) throws SQLException, ClassNotFoundException; - - public abstract int updateSQL(String query) throws SQLException, ClassNotFoundException; } \ No newline at end of file diff --git a/MineverseChat/mineverse/Aust1n46/chat/database/DatabaseSender.java b/MineverseChat/mineverse/Aust1n46/chat/database/DatabaseSender.java deleted file mode 100644 index 3e75556..0000000 --- a/MineverseChat/mineverse/Aust1n46/chat/database/DatabaseSender.java +++ /dev/null @@ -1,29 +0,0 @@ -package mineverse.Aust1n46.chat.database; - -import java.sql.SQLException; - -import mineverse.Aust1n46.chat.MineverseChat; - -//This class opens the connection to the database if it's enabled. -public class DatabaseSender { - private static MineverseChat plugin = MineverseChat.getInstance(); - - public static void writeToMySQL(String time, String uuid, String name, String server, String channel, String text, String type, String timeValue, String uuidValue, String nameValue, String serverValue, String channelValue, String textValue, String typeValue) { - try { - if(plugin.c.isClosed()) { - try { - plugin.c = plugin.MySQL.openConnection(); - } - catch(ClassNotFoundException e) { - e.printStackTrace(); - return; - } - } - plugin.c.createStatement().executeUpdate("INSERT INTO `VentureChat` (`" + time + "`, `" + uuid + "`, `" + name + "`, `" + server + "`, `" + channel + "`, `" + text + "`, `" + type + "`) VALUES ('" + timeValue + "', '" + uuidValue + "', '" + nameValue + "', '" + serverValue + "', '" + channelValue + "', '" + textValue + "', '" + typeValue + "');"); - } - catch(SQLException e) { - e.printStackTrace(); - return; - } - } -} \ No newline at end of file diff --git a/MineverseChat/mineverse/Aust1n46/chat/database/MySQL.java b/MineverseChat/mineverse/Aust1n46/chat/database/MySQL.java index dec330a..2fedbba 100644 --- a/MineverseChat/mineverse/Aust1n46/chat/database/MySQL.java +++ b/MineverseChat/mineverse/Aust1n46/chat/database/MySQL.java @@ -1,74 +1,50 @@ package mineverse.Aust1n46.chat.database; import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; -import org.bukkit.plugin.Plugin; -import mineverse.Aust1n46.chat.database.Database; + +import com.zaxxer.hikari.HikariConfig; +import com.zaxxer.hikari.HikariDataSource; //This class initializes the plugins connection to the MySQL database if it's enabled. public class MySQL extends Database { private final String user; private final String database; private final String password; - private final String port; + private final int port; private final String hostname; - private Connection connection; - public MySQL(Plugin plugin, String hostname, String port, String database, String username, String password) { - super(plugin); + public MySQL(String hostname, int port, String database, String username, String password) { this.hostname = hostname; this.port = port; this.database = database; this.user = username; this.password = password; - this.connection = null; } @Override - public Connection openConnection() throws SQLException, ClassNotFoundException { - if(checkConnection()) - return connection; - Class.forName("com.mysql.jdbc.Driver"); - connection = DriverManager.getConnection("jdbc:mysql://" + this.hostname + ":" + this.port + "/" + this.database + "?autoReconnect=true", this.user, this.password); - return connection; - } - - @Override - public boolean checkConnection() throws SQLException { - return connection != null && !connection.isClosed(); - } - - @Override - public Connection getConnection() { - return connection; - } - - @Override - public boolean closeConnection() throws SQLException { - if(connection == null) - return false; - connection.close(); - return true; - } - - @Override - public ResultSet querySQL(String query) throws SQLException, ClassNotFoundException { - if(checkConnection()) - openConnection(); - Statement statement = connection.createStatement(); - ResultSet result = statement.executeQuery(query); - return result; - } - - @Override - public int updateSQL(String query) throws SQLException, ClassNotFoundException { - if(checkConnection()) - openConnection(); - Statement statement = connection.createStatement(); - int result = statement.executeUpdate(query); - return result; + public void init() { + HikariConfig config = new HikariConfig(); + //config.setDriverClassName(org.postgresql.Driver.class.getName()); + //final String jdbcUrl = String.format("jdbc:postgresql://%s:%d/%s", hostname, port, database); + final String jdbcUrl = String.format("jdbc:mysql://%s:%d/%s", hostname, port, database); + config.setJdbcUrl(jdbcUrl); + config.setUsername(user); + config.setPassword(password); + config.addDataSourceProperty("cachePrepStmts", "true"); + config.addDataSourceProperty("prepStmtCacheSize", "250"); + config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048"); + dataSource = new HikariDataSource(config); + try { + Connection conn = dataSource.getConnection(); + conn.setAutoCommit(false); + Statement statement = conn.createStatement(); + statement.executeUpdate("CREATE TABLE IF NOT EXISTS VentureChat " + + "(ID SERIAL PRIMARY KEY, ChatTime TEXT, UUID TEXT, Name TEXT, " + + "Server TEXT, Channel TEXT, Text TEXT, Type TEXT)"); + } catch (SQLException e) { + throw new RuntimeException(e); + } } } \ No newline at end of file diff --git a/MineverseChat/mineverse/Aust1n46/chat/database/SQLite.java b/MineverseChat/mineverse/Aust1n46/chat/database/SQLite.java index 4377261..447fcdb 100644 --- a/MineverseChat/mineverse/Aust1n46/chat/database/SQLite.java +++ b/MineverseChat/mineverse/Aust1n46/chat/database/SQLite.java @@ -2,80 +2,33 @@ package mineverse.Aust1n46.chat.database; import java.io.File; import java.io.IOException; -import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.sql.Statement; -import java.util.logging.Level; -import org.bukkit.plugin.Plugin; -import mineverse.Aust1n46.chat.database.Database; + +import com.zaxxer.hikari.HikariConfig; +import com.zaxxer.hikari.HikariDataSource; + +import mineverse.Aust1n46.chat.MineverseChat; //This class initializes the connection to a SQLite database, which has no implementations currently in the plugin. public class SQLite extends Database { private final String dbLocation; - private Connection connection; - public SQLite(Plugin plugin, String dbLocation) { - super(plugin); + public SQLite(String dbLocation) { this.dbLocation = dbLocation; - this.connection = null; } @Override - public Connection openConnection() throws SQLException, ClassNotFoundException { - if(checkConnection()) - return connection; - if(!plugin.getDataFolder().exists()) - plugin.getDataFolder().mkdirs(); - File file = new File(plugin.getDataFolder(), dbLocation); - if(!(file.exists())) { - try { - file.createNewFile(); - } - catch(IOException e) { - plugin.getLogger().log(Level.SEVERE, "Unable to create database!"); - } + public void init() { + File dataFolder = MineverseChat.getInstance().getDataFolder(); + if (!dataFolder.exists()) dataFolder.mkdirs(); + File databaseFile = new File(dataFolder, dbLocation); + try { + if (!databaseFile.exists()) databaseFile.createNewFile(); + } catch (IOException e) { + throw new RuntimeException(e); } - Class.forName("org.sqlite.JDBC"); - connection = DriverManager.getConnection("jdbc:sqlite:" + plugin.getDataFolder().toPath().toString() + "/" + dbLocation); - return connection; - } - - @Override - public boolean checkConnection() throws SQLException { - return connection != null && !connection.isClosed(); - } - - @Override - public Connection getConnection() { - return connection; - } - - @Override - public boolean closeConnection() throws SQLException { - if(connection == null) { - return false; - } - connection.close(); - return true; - } - - @Override - public ResultSet querySQL(String query) throws SQLException, ClassNotFoundException { - if(checkConnection()) - openConnection(); - Statement statement = connection.createStatement(); - ResultSet result = statement.executeQuery(query); - return result; - } - - @Override - public int updateSQL(String query) throws SQLException, ClassNotFoundException { - if(checkConnection()) - openConnection(); - Statement statement = connection.createStatement(); - int result = statement.executeUpdate(query); - return result; + HikariConfig config = new HikariConfig(); + final String jdbcUrl = String.format("jdbc:sqlite:%s", databaseFile); + config.setJdbcUrl(jdbcUrl); + dataSource = new HikariDataSource(config); } } \ No newline at end of file diff --git a/MineverseChat/mineverse/Aust1n46/chat/listeners/ChatListener.java b/MineverseChat/mineverse/Aust1n46/chat/listeners/ChatListener.java index 14f1935..a4b9b4d 100644 --- a/MineverseChat/mineverse/Aust1n46/chat/listeners/ChatListener.java +++ b/MineverseChat/mineverse/Aust1n46/chat/listeners/ChatListener.java @@ -2,8 +2,6 @@ package mineverse.Aust1n46.chat.listeners; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; -import java.sql.SQLException; -import java.sql.Statement; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Set; @@ -32,7 +30,6 @@ import mineverse.Aust1n46.chat.api.MineverseChatPlayer; import mineverse.Aust1n46.chat.api.events.ChannelJoinEvent; import mineverse.Aust1n46.chat.api.events.VentureChatEvent; import mineverse.Aust1n46.chat.channel.ChatChannel; -import mineverse.Aust1n46.chat.database.DatabaseSender; import mineverse.Aust1n46.chat.localization.LocalizedMessage; import mineverse.Aust1n46.chat.utilities.Format; import mineverse.Aust1n46.chat.versions.VersionHandler; @@ -158,11 +155,11 @@ public class ChatListener implements Listener { mcp.setReplyPlayer(tp.getUUID()); tp.setReplyPlayer(mcp.getUUID()); Bukkit.getConsoleSender().sendMessage(mcp.getName() + " messages " + tp.getName() + ":" + ChatColor.valueOf(tellColor.toUpperCase()) + filtered); - if(plugin.mysql) { + if(plugin.db != null) { Calendar currentDate = Calendar.getInstance(); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String date = formatter.format(currentDate.getTime()); - DatabaseSender.writeToMySQL("ChatTime", "UUID", "Name", "Server", "Channel", "Text", "Type", date, mcp.getUUID().toString(), mcp.getName(), plugin.getServer().getName(), "Messaging_Component", chat.replace("'", "''"), "Chat"); + plugin.db.writeVentureChat(date, mcp.getUUID().toString(), mcp.getName(), plugin.getServer().getName(), "Messaging_Component", chat.replace("'", "''"), "Chat"); } } return; @@ -194,18 +191,11 @@ public class ChatListener implements Listener { } } Bukkit.getConsoleSender().sendMessage(partyformat); - if(plugin.mysql) { - Statement statement; + if(plugin.db != null) { Calendar currentDate = Calendar.getInstance(); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String date = formatter.format(currentDate.getTime()); - try { - statement = plugin.c.createStatement(); - statement.executeUpdate("INSERT INTO `VentureChat` (`ChatTime`, `UUID`, `Name`, `Server`, `Channel`, `Text`, `Type`) VALUES ('" + date + "', '" + mcp.getUUID().toString() + "', '" + mcp.getName() + "', '" + plugin.getServer().getName() + "', 'Party_Component', '" + chat.replace("'", "''") + "', 'Chat');"); - } - catch(SQLException e) { - e.printStackTrace(); - } + plugin.db.writeVentureChat(date, mcp.getUUID().toString(), mcp.getName(), plugin.getServer().getName(), "Party_Component", chat.replace("'", "''"), "Chat"); } return; } @@ -481,18 +471,11 @@ public class ChatListener implements Listener { int hash = event.getHash(); boolean bungee = event.isBungee(); - if(plugin.mysql) { - Statement statement; + if(plugin.db != null) { Calendar currentDate = Calendar.getInstance(); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String date = formatter.format(currentDate.getTime()); - try { - statement = plugin.c.createStatement(); - statement.executeUpdate("INSERT INTO `VentureChat` (`ChatTime`, `UUID`, `Name`, `Server`, `Channel`, `Text`, `Type`) VALUES ('" + date + "', '" + mcp.getUUID().toString() + "', '" + mcp.getName() + "', '" + plugin.getServer().getName() + "', '" + channel.getName() + "', '" + chat.replace("'", "''") + "', 'Chat');"); - } - catch(SQLException e) { - e.printStackTrace(); - } + plugin.db.writeVentureChat(date, mcp.getUUID().toString(), mcp.getName(), plugin.getServer().getName(), channel.getName(), chat.replace("'", "''"), "Chat"); } if(!bungee) { diff --git a/MineverseChat/mineverse/Aust1n46/chat/listeners/CommandListener.java b/MineverseChat/mineverse/Aust1n46/chat/listeners/CommandListener.java index be039f6..c83326f 100644 --- a/MineverseChat/mineverse/Aust1n46/chat/listeners/CommandListener.java +++ b/MineverseChat/mineverse/Aust1n46/chat/listeners/CommandListener.java @@ -1,8 +1,6 @@ package mineverse.Aust1n46.chat.listeners; import java.io.FileNotFoundException; -import java.sql.SQLException; -import java.sql.Statement; import java.text.SimpleDateFormat; import java.util.Calendar; @@ -96,18 +94,11 @@ public class CommandListener implements CommandExecutor, Listener { * event.setCancelled(true); return; } } */ - if(plugin.mysql) { - Statement statement; + if(plugin.db != null) { Calendar currentDate = Calendar.getInstance(); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String date = formatter.format(currentDate.getTime()); - try { - statement = plugin.c.createStatement(); - statement.executeUpdate("INSERT INTO `VentureChat` (`ChatTime`, `UUID`, `Name`, `Server`, `Channel`, `Text`, `Type`) VALUES ('" + date + "', '" + mcp.getUUID().toString() + "', '" + mcp.getName() + "', '" + plugin.getServer().getName() + "', 'Command_Component', '" + event.getMessage().replace("'", "''") + "', 'Command');"); - } - catch(SQLException error) { - error.printStackTrace(); - } + plugin.db.writeVentureChat(date, mcp.getUUID().toString(), mcp.getName(), plugin.getServer().getName(), "Command_Component", event.getMessage().replace("'", "''"), "Command"); } for(Alias a : aa.getAliases()) { @@ -205,18 +196,11 @@ public class CommandListener implements CommandExecutor, Listener { //old 1.8 command map @EventHandler public void onServerCommand(ServerCommandEvent event) { - if(plugin.mysql) { - Statement statement; + if (plugin.db != null) { Calendar currentDate = Calendar.getInstance(); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String date = formatter.format(currentDate.getTime()); - try { - statement = plugin.c.createStatement(); - statement.executeUpdate("INSERT INTO `VentureChat` (`ChatTime`, `UUID`, `Name`, `Server`, `Channel`, `Text`, `Type`) VALUES ('" + date + "', 'N/A', 'Console', '" + plugin.getServer().getName() + "', 'Command_Component', '" + event.getCommand().replace("'", "''") + "', 'Command');"); - } - catch(SQLException error) { - error.printStackTrace(); - } + plugin.db.writeVentureChat(date, "N/A", "Console", plugin.getServer().getName(), "Command_Component", event.getCommand().replace("'", "''") , "Command"); } } diff --git a/lib/com/zaxxer/hikari/HikariConfig.class b/lib/com/zaxxer/hikari/HikariConfig.class new file mode 100644 index 0000000..202a7e0 Binary files /dev/null and b/lib/com/zaxxer/hikari/HikariConfig.class differ diff --git a/lib/com/zaxxer/hikari/HikariConfigMXBean.class b/lib/com/zaxxer/hikari/HikariConfigMXBean.class new file mode 100644 index 0000000..0f70032 Binary files /dev/null and b/lib/com/zaxxer/hikari/HikariConfigMXBean.class differ diff --git a/lib/com/zaxxer/hikari/HikariDataSource.class b/lib/com/zaxxer/hikari/HikariDataSource.class new file mode 100644 index 0000000..cff5770 Binary files /dev/null and b/lib/com/zaxxer/hikari/HikariDataSource.class differ diff --git a/lib/com/zaxxer/hikari/HikariJNDIFactory.class b/lib/com/zaxxer/hikari/HikariJNDIFactory.class new file mode 100644 index 0000000..3ec42d6 Binary files /dev/null and b/lib/com/zaxxer/hikari/HikariJNDIFactory.class differ diff --git a/lib/com/zaxxer/hikari/HikariPoolMXBean.class b/lib/com/zaxxer/hikari/HikariPoolMXBean.class new file mode 100644 index 0000000..97ca6b2 Binary files /dev/null and b/lib/com/zaxxer/hikari/HikariPoolMXBean.class differ diff --git a/lib/com/zaxxer/hikari/hibernate/HikariConfigurationUtil.class b/lib/com/zaxxer/hikari/hibernate/HikariConfigurationUtil.class new file mode 100644 index 0000000..411d63e Binary files /dev/null and b/lib/com/zaxxer/hikari/hibernate/HikariConfigurationUtil.class differ diff --git a/lib/com/zaxxer/hikari/hibernate/HikariConnectionProvider.class b/lib/com/zaxxer/hikari/hibernate/HikariConnectionProvider.class new file mode 100644 index 0000000..fa54d40 Binary files /dev/null and b/lib/com/zaxxer/hikari/hibernate/HikariConnectionProvider.class differ diff --git a/lib/com/zaxxer/hikari/metrics/IMetricsTracker.class b/lib/com/zaxxer/hikari/metrics/IMetricsTracker.class new file mode 100644 index 0000000..4a181fa Binary files /dev/null and b/lib/com/zaxxer/hikari/metrics/IMetricsTracker.class differ diff --git a/lib/com/zaxxer/hikari/metrics/MetricsTracker.class b/lib/com/zaxxer/hikari/metrics/MetricsTracker.class new file mode 100644 index 0000000..29a693d Binary files /dev/null and b/lib/com/zaxxer/hikari/metrics/MetricsTracker.class differ diff --git a/lib/com/zaxxer/hikari/metrics/MetricsTrackerFactory.class b/lib/com/zaxxer/hikari/metrics/MetricsTrackerFactory.class new file mode 100644 index 0000000..43b2652 Binary files /dev/null and b/lib/com/zaxxer/hikari/metrics/MetricsTrackerFactory.class differ diff --git a/lib/com/zaxxer/hikari/metrics/PoolStats.class b/lib/com/zaxxer/hikari/metrics/PoolStats.class new file mode 100644 index 0000000..a94f2f9 Binary files /dev/null and b/lib/com/zaxxer/hikari/metrics/PoolStats.class differ diff --git a/lib/com/zaxxer/hikari/metrics/dropwizard/CodaHaleMetricsTracker.class b/lib/com/zaxxer/hikari/metrics/dropwizard/CodaHaleMetricsTracker.class new file mode 100644 index 0000000..1641dab Binary files /dev/null and b/lib/com/zaxxer/hikari/metrics/dropwizard/CodaHaleMetricsTracker.class differ diff --git a/lib/com/zaxxer/hikari/metrics/dropwizard/CodahaleHealthChecker$Connection99Percent.class b/lib/com/zaxxer/hikari/metrics/dropwizard/CodahaleHealthChecker$Connection99Percent.class new file mode 100644 index 0000000..ec16e56 Binary files /dev/null and b/lib/com/zaxxer/hikari/metrics/dropwizard/CodahaleHealthChecker$Connection99Percent.class differ diff --git a/lib/com/zaxxer/hikari/metrics/dropwizard/CodahaleHealthChecker$ConnectivityHealthCheck.class b/lib/com/zaxxer/hikari/metrics/dropwizard/CodahaleHealthChecker$ConnectivityHealthCheck.class new file mode 100644 index 0000000..1945baa Binary files /dev/null and b/lib/com/zaxxer/hikari/metrics/dropwizard/CodahaleHealthChecker$ConnectivityHealthCheck.class differ diff --git a/lib/com/zaxxer/hikari/metrics/dropwizard/CodahaleHealthChecker.class b/lib/com/zaxxer/hikari/metrics/dropwizard/CodahaleHealthChecker.class new file mode 100644 index 0000000..c5f7ae3 Binary files /dev/null and b/lib/com/zaxxer/hikari/metrics/dropwizard/CodahaleHealthChecker.class differ diff --git a/lib/com/zaxxer/hikari/metrics/dropwizard/CodahaleMetricsTrackerFactory.class b/lib/com/zaxxer/hikari/metrics/dropwizard/CodahaleMetricsTrackerFactory.class new file mode 100644 index 0000000..2bd9f2a Binary files /dev/null and b/lib/com/zaxxer/hikari/metrics/dropwizard/CodahaleMetricsTrackerFactory.class differ diff --git a/lib/com/zaxxer/hikari/metrics/micrometer/MicrometerMetricsTracker.class b/lib/com/zaxxer/hikari/metrics/micrometer/MicrometerMetricsTracker.class new file mode 100644 index 0000000..0351c9d Binary files /dev/null and b/lib/com/zaxxer/hikari/metrics/micrometer/MicrometerMetricsTracker.class differ diff --git a/lib/com/zaxxer/hikari/metrics/micrometer/MicrometerMetricsTrackerFactory.class b/lib/com/zaxxer/hikari/metrics/micrometer/MicrometerMetricsTrackerFactory.class new file mode 100644 index 0000000..34d91af Binary files /dev/null and b/lib/com/zaxxer/hikari/metrics/micrometer/MicrometerMetricsTrackerFactory.class differ diff --git a/lib/com/zaxxer/hikari/metrics/prometheus/HikariCPCollector.class b/lib/com/zaxxer/hikari/metrics/prometheus/HikariCPCollector.class new file mode 100644 index 0000000..2b3bf99 Binary files /dev/null and b/lib/com/zaxxer/hikari/metrics/prometheus/HikariCPCollector.class differ diff --git a/lib/com/zaxxer/hikari/metrics/prometheus/PrometheusHistogramMetricsTracker.class b/lib/com/zaxxer/hikari/metrics/prometheus/PrometheusHistogramMetricsTracker.class new file mode 100644 index 0000000..9b35c8f Binary files /dev/null and b/lib/com/zaxxer/hikari/metrics/prometheus/PrometheusHistogramMetricsTracker.class differ diff --git a/lib/com/zaxxer/hikari/metrics/prometheus/PrometheusHistogramMetricsTrackerFactory.class b/lib/com/zaxxer/hikari/metrics/prometheus/PrometheusHistogramMetricsTrackerFactory.class new file mode 100644 index 0000000..cf3a7bb Binary files /dev/null and b/lib/com/zaxxer/hikari/metrics/prometheus/PrometheusHistogramMetricsTrackerFactory.class differ diff --git a/lib/com/zaxxer/hikari/metrics/prometheus/PrometheusMetricsTracker.class b/lib/com/zaxxer/hikari/metrics/prometheus/PrometheusMetricsTracker.class new file mode 100644 index 0000000..966963a Binary files /dev/null and b/lib/com/zaxxer/hikari/metrics/prometheus/PrometheusMetricsTracker.class differ diff --git a/lib/com/zaxxer/hikari/metrics/prometheus/PrometheusMetricsTrackerFactory$RegistrationStatus.class b/lib/com/zaxxer/hikari/metrics/prometheus/PrometheusMetricsTrackerFactory$RegistrationStatus.class new file mode 100644 index 0000000..ef1549f Binary files /dev/null and b/lib/com/zaxxer/hikari/metrics/prometheus/PrometheusMetricsTrackerFactory$RegistrationStatus.class differ diff --git a/lib/com/zaxxer/hikari/metrics/prometheus/PrometheusMetricsTrackerFactory.class b/lib/com/zaxxer/hikari/metrics/prometheus/PrometheusMetricsTrackerFactory.class new file mode 100644 index 0000000..54bb82d Binary files /dev/null and b/lib/com/zaxxer/hikari/metrics/prometheus/PrometheusMetricsTrackerFactory.class differ diff --git a/lib/com/zaxxer/hikari/pool/HikariPool$1.class b/lib/com/zaxxer/hikari/pool/HikariPool$1.class new file mode 100644 index 0000000..2bca923 Binary files /dev/null and b/lib/com/zaxxer/hikari/pool/HikariPool$1.class differ diff --git a/lib/com/zaxxer/hikari/pool/HikariPool$HouseKeeper.class b/lib/com/zaxxer/hikari/pool/HikariPool$HouseKeeper.class new file mode 100644 index 0000000..64427ce Binary files /dev/null and b/lib/com/zaxxer/hikari/pool/HikariPool$HouseKeeper.class differ diff --git a/lib/com/zaxxer/hikari/pool/HikariPool$PoolEntryCreator.class b/lib/com/zaxxer/hikari/pool/HikariPool$PoolEntryCreator.class new file mode 100644 index 0000000..2252cec Binary files /dev/null and b/lib/com/zaxxer/hikari/pool/HikariPool$PoolEntryCreator.class differ diff --git a/lib/com/zaxxer/hikari/pool/HikariPool$PoolInitializationException.class b/lib/com/zaxxer/hikari/pool/HikariPool$PoolInitializationException.class new file mode 100644 index 0000000..2458918 Binary files /dev/null and b/lib/com/zaxxer/hikari/pool/HikariPool$PoolInitializationException.class differ diff --git a/lib/com/zaxxer/hikari/pool/HikariPool.class b/lib/com/zaxxer/hikari/pool/HikariPool.class new file mode 100644 index 0000000..e080bfb Binary files /dev/null and b/lib/com/zaxxer/hikari/pool/HikariPool.class differ diff --git a/lib/com/zaxxer/hikari/pool/HikariProxyCallableStatement.class b/lib/com/zaxxer/hikari/pool/HikariProxyCallableStatement.class new file mode 100644 index 0000000..c4dd01e Binary files /dev/null and b/lib/com/zaxxer/hikari/pool/HikariProxyCallableStatement.class differ diff --git a/lib/com/zaxxer/hikari/pool/HikariProxyConnection.class b/lib/com/zaxxer/hikari/pool/HikariProxyConnection.class new file mode 100644 index 0000000..2eb7b25 Binary files /dev/null and b/lib/com/zaxxer/hikari/pool/HikariProxyConnection.class differ diff --git a/lib/com/zaxxer/hikari/pool/HikariProxyDatabaseMetaData.class b/lib/com/zaxxer/hikari/pool/HikariProxyDatabaseMetaData.class new file mode 100644 index 0000000..f01646e Binary files /dev/null and b/lib/com/zaxxer/hikari/pool/HikariProxyDatabaseMetaData.class differ diff --git a/lib/com/zaxxer/hikari/pool/HikariProxyPreparedStatement.class b/lib/com/zaxxer/hikari/pool/HikariProxyPreparedStatement.class new file mode 100644 index 0000000..67c621d Binary files /dev/null and b/lib/com/zaxxer/hikari/pool/HikariProxyPreparedStatement.class differ diff --git a/lib/com/zaxxer/hikari/pool/HikariProxyResultSet.class b/lib/com/zaxxer/hikari/pool/HikariProxyResultSet.class new file mode 100644 index 0000000..e3efec5 Binary files /dev/null and b/lib/com/zaxxer/hikari/pool/HikariProxyResultSet.class differ diff --git a/lib/com/zaxxer/hikari/pool/HikariProxyStatement.class b/lib/com/zaxxer/hikari/pool/HikariProxyStatement.class new file mode 100644 index 0000000..93340e8 Binary files /dev/null and b/lib/com/zaxxer/hikari/pool/HikariProxyStatement.class differ diff --git a/lib/com/zaxxer/hikari/pool/PoolBase$1.class b/lib/com/zaxxer/hikari/pool/PoolBase$1.class new file mode 100644 index 0000000..90f643b Binary files /dev/null and b/lib/com/zaxxer/hikari/pool/PoolBase$1.class differ diff --git a/lib/com/zaxxer/hikari/pool/PoolBase$ConnectionSetupException.class b/lib/com/zaxxer/hikari/pool/PoolBase$ConnectionSetupException.class new file mode 100644 index 0000000..910a9ae Binary files /dev/null and b/lib/com/zaxxer/hikari/pool/PoolBase$ConnectionSetupException.class differ diff --git a/lib/com/zaxxer/hikari/pool/PoolBase$IMetricsTrackerDelegate.class b/lib/com/zaxxer/hikari/pool/PoolBase$IMetricsTrackerDelegate.class new file mode 100644 index 0000000..cb23994 Binary files /dev/null and b/lib/com/zaxxer/hikari/pool/PoolBase$IMetricsTrackerDelegate.class differ diff --git a/lib/com/zaxxer/hikari/pool/PoolBase$MetricsTrackerDelegate.class b/lib/com/zaxxer/hikari/pool/PoolBase$MetricsTrackerDelegate.class new file mode 100644 index 0000000..29950dc Binary files /dev/null and b/lib/com/zaxxer/hikari/pool/PoolBase$MetricsTrackerDelegate.class differ diff --git a/lib/com/zaxxer/hikari/pool/PoolBase$NopMetricsTrackerDelegate.class b/lib/com/zaxxer/hikari/pool/PoolBase$NopMetricsTrackerDelegate.class new file mode 100644 index 0000000..a14dc52 Binary files /dev/null and b/lib/com/zaxxer/hikari/pool/PoolBase$NopMetricsTrackerDelegate.class differ diff --git a/lib/com/zaxxer/hikari/pool/PoolBase$SynchronousExecutor.class b/lib/com/zaxxer/hikari/pool/PoolBase$SynchronousExecutor.class new file mode 100644 index 0000000..6328bee Binary files /dev/null and b/lib/com/zaxxer/hikari/pool/PoolBase$SynchronousExecutor.class differ diff --git a/lib/com/zaxxer/hikari/pool/PoolBase.class b/lib/com/zaxxer/hikari/pool/PoolBase.class new file mode 100644 index 0000000..9567962 Binary files /dev/null and b/lib/com/zaxxer/hikari/pool/PoolBase.class differ diff --git a/lib/com/zaxxer/hikari/pool/PoolEntry.class b/lib/com/zaxxer/hikari/pool/PoolEntry.class new file mode 100644 index 0000000..4db498e Binary files /dev/null and b/lib/com/zaxxer/hikari/pool/PoolEntry.class differ diff --git a/lib/com/zaxxer/hikari/pool/ProxyCallableStatement.class b/lib/com/zaxxer/hikari/pool/ProxyCallableStatement.class new file mode 100644 index 0000000..dfff467 Binary files /dev/null and b/lib/com/zaxxer/hikari/pool/ProxyCallableStatement.class differ diff --git a/lib/com/zaxxer/hikari/pool/ProxyConnection$ClosedConnection.class b/lib/com/zaxxer/hikari/pool/ProxyConnection$ClosedConnection.class new file mode 100644 index 0000000..fcf26a4 Binary files /dev/null and b/lib/com/zaxxer/hikari/pool/ProxyConnection$ClosedConnection.class differ diff --git a/lib/com/zaxxer/hikari/pool/ProxyConnection.class b/lib/com/zaxxer/hikari/pool/ProxyConnection.class new file mode 100644 index 0000000..9beebfb Binary files /dev/null and b/lib/com/zaxxer/hikari/pool/ProxyConnection.class differ diff --git a/lib/com/zaxxer/hikari/pool/ProxyDatabaseMetaData.class b/lib/com/zaxxer/hikari/pool/ProxyDatabaseMetaData.class new file mode 100644 index 0000000..fcaff35 Binary files /dev/null and b/lib/com/zaxxer/hikari/pool/ProxyDatabaseMetaData.class differ diff --git a/lib/com/zaxxer/hikari/pool/ProxyFactory.class b/lib/com/zaxxer/hikari/pool/ProxyFactory.class new file mode 100644 index 0000000..6f11b11 Binary files /dev/null and b/lib/com/zaxxer/hikari/pool/ProxyFactory.class differ diff --git a/lib/com/zaxxer/hikari/pool/ProxyLeakTask$1.class b/lib/com/zaxxer/hikari/pool/ProxyLeakTask$1.class new file mode 100644 index 0000000..586ed53 Binary files /dev/null and b/lib/com/zaxxer/hikari/pool/ProxyLeakTask$1.class differ diff --git a/lib/com/zaxxer/hikari/pool/ProxyLeakTask.class b/lib/com/zaxxer/hikari/pool/ProxyLeakTask.class new file mode 100644 index 0000000..2bf2f77 Binary files /dev/null and b/lib/com/zaxxer/hikari/pool/ProxyLeakTask.class differ diff --git a/lib/com/zaxxer/hikari/pool/ProxyLeakTaskFactory.class b/lib/com/zaxxer/hikari/pool/ProxyLeakTaskFactory.class new file mode 100644 index 0000000..8838585 Binary files /dev/null and b/lib/com/zaxxer/hikari/pool/ProxyLeakTaskFactory.class differ diff --git a/lib/com/zaxxer/hikari/pool/ProxyPreparedStatement.class b/lib/com/zaxxer/hikari/pool/ProxyPreparedStatement.class new file mode 100644 index 0000000..189cfbe Binary files /dev/null and b/lib/com/zaxxer/hikari/pool/ProxyPreparedStatement.class differ diff --git a/lib/com/zaxxer/hikari/pool/ProxyResultSet.class b/lib/com/zaxxer/hikari/pool/ProxyResultSet.class new file mode 100644 index 0000000..f7fdf74 Binary files /dev/null and b/lib/com/zaxxer/hikari/pool/ProxyResultSet.class differ diff --git a/lib/com/zaxxer/hikari/pool/ProxyStatement.class b/lib/com/zaxxer/hikari/pool/ProxyStatement.class new file mode 100644 index 0000000..fd8126a Binary files /dev/null and b/lib/com/zaxxer/hikari/pool/ProxyStatement.class differ diff --git a/lib/com/zaxxer/hikari/util/ClockSource$Factory.class b/lib/com/zaxxer/hikari/util/ClockSource$Factory.class new file mode 100644 index 0000000..39c9c36 Binary files /dev/null and b/lib/com/zaxxer/hikari/util/ClockSource$Factory.class differ diff --git a/lib/com/zaxxer/hikari/util/ClockSource$MillisecondClockSource.class b/lib/com/zaxxer/hikari/util/ClockSource$MillisecondClockSource.class new file mode 100644 index 0000000..9388ffc Binary files /dev/null and b/lib/com/zaxxer/hikari/util/ClockSource$MillisecondClockSource.class differ diff --git a/lib/com/zaxxer/hikari/util/ClockSource$NanosecondClockSource.class b/lib/com/zaxxer/hikari/util/ClockSource$NanosecondClockSource.class new file mode 100644 index 0000000..4fdea0e Binary files /dev/null and b/lib/com/zaxxer/hikari/util/ClockSource$NanosecondClockSource.class differ diff --git a/lib/com/zaxxer/hikari/util/ClockSource.class b/lib/com/zaxxer/hikari/util/ClockSource.class new file mode 100644 index 0000000..c5afacd Binary files /dev/null and b/lib/com/zaxxer/hikari/util/ClockSource.class differ diff --git a/lib/com/zaxxer/hikari/util/ConcurrentBag$IBagStateListener.class b/lib/com/zaxxer/hikari/util/ConcurrentBag$IBagStateListener.class new file mode 100644 index 0000000..864edcd Binary files /dev/null and b/lib/com/zaxxer/hikari/util/ConcurrentBag$IBagStateListener.class differ diff --git a/lib/com/zaxxer/hikari/util/ConcurrentBag$IConcurrentBagEntry.class b/lib/com/zaxxer/hikari/util/ConcurrentBag$IConcurrentBagEntry.class new file mode 100644 index 0000000..b1ddd30 Binary files /dev/null and b/lib/com/zaxxer/hikari/util/ConcurrentBag$IConcurrentBagEntry.class differ diff --git a/lib/com/zaxxer/hikari/util/ConcurrentBag.class b/lib/com/zaxxer/hikari/util/ConcurrentBag.class new file mode 100644 index 0000000..6da9f54 Binary files /dev/null and b/lib/com/zaxxer/hikari/util/ConcurrentBag.class differ diff --git a/lib/com/zaxxer/hikari/util/DriverDataSource.class b/lib/com/zaxxer/hikari/util/DriverDataSource.class new file mode 100644 index 0000000..fb1fd55 Binary files /dev/null and b/lib/com/zaxxer/hikari/util/DriverDataSource.class differ diff --git a/lib/com/zaxxer/hikari/util/FastList$1.class b/lib/com/zaxxer/hikari/util/FastList$1.class new file mode 100644 index 0000000..ba47d6b Binary files /dev/null and b/lib/com/zaxxer/hikari/util/FastList$1.class differ diff --git a/lib/com/zaxxer/hikari/util/FastList.class b/lib/com/zaxxer/hikari/util/FastList.class new file mode 100644 index 0000000..f7df460 Binary files /dev/null and b/lib/com/zaxxer/hikari/util/FastList.class differ diff --git a/lib/com/zaxxer/hikari/util/IsolationLevel.class b/lib/com/zaxxer/hikari/util/IsolationLevel.class new file mode 100644 index 0000000..ea165be Binary files /dev/null and b/lib/com/zaxxer/hikari/util/IsolationLevel.class differ diff --git a/lib/com/zaxxer/hikari/util/JavassistProxyFactory.class b/lib/com/zaxxer/hikari/util/JavassistProxyFactory.class new file mode 100644 index 0000000..a32afa7 Binary files /dev/null and b/lib/com/zaxxer/hikari/util/JavassistProxyFactory.class differ diff --git a/lib/com/zaxxer/hikari/util/PropertyElf.class b/lib/com/zaxxer/hikari/util/PropertyElf.class new file mode 100644 index 0000000..0f71930 Binary files /dev/null and b/lib/com/zaxxer/hikari/util/PropertyElf.class differ diff --git a/lib/com/zaxxer/hikari/util/SuspendResumeLock$1.class b/lib/com/zaxxer/hikari/util/SuspendResumeLock$1.class new file mode 100644 index 0000000..7de44e1 Binary files /dev/null and b/lib/com/zaxxer/hikari/util/SuspendResumeLock$1.class differ diff --git a/lib/com/zaxxer/hikari/util/SuspendResumeLock.class b/lib/com/zaxxer/hikari/util/SuspendResumeLock.class new file mode 100644 index 0000000..db64136 Binary files /dev/null and b/lib/com/zaxxer/hikari/util/SuspendResumeLock.class differ diff --git a/lib/com/zaxxer/hikari/util/UtilityElf$DefaultThreadFactory.class b/lib/com/zaxxer/hikari/util/UtilityElf$DefaultThreadFactory.class new file mode 100644 index 0000000..fc48cf8 Binary files /dev/null and b/lib/com/zaxxer/hikari/util/UtilityElf$DefaultThreadFactory.class differ diff --git a/lib/com/zaxxer/hikari/util/UtilityElf.class b/lib/com/zaxxer/hikari/util/UtilityElf.class new file mode 100644 index 0000000..b76cb52 Binary files /dev/null and b/lib/com/zaxxer/hikari/util/UtilityElf.class differ