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