From de6f1f947ba471acc7be3416d0a76050acbb804d Mon Sep 17 00:00:00 2001 From: Robin Kupper Date: Tue, 3 May 2011 21:46:55 +0200 Subject: [PATCH 1/3] Changed ArrayLists to HashSets in Config --- src/de/diddiz/LogBlock/Config.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/de/diddiz/LogBlock/Config.java b/src/de/diddiz/LogBlock/Config.java index 93b55fd..95cecfb 100644 --- a/src/de/diddiz/LogBlock/Config.java +++ b/src/de/diddiz/LogBlock/Config.java @@ -3,7 +3,9 @@ package de.diddiz.LogBlock; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; +import java.util.HashSet; import java.util.List; +import java.util.Set; import org.bukkit.Material; import org.bukkit.util.config.Configuration; @@ -30,8 +32,8 @@ public class Config { public final boolean logChestAccess; public final boolean logKills; public final LogKillsLevel logKillsLevel; - public final List dontRollback; - public final List replaceAnyway; + public final Set dontRollback; + public final Set replaceAnyway; public final int defaultDist; public final int defaultTime; public final int toolID; @@ -159,8 +161,8 @@ public class Config { } catch (final IllegalArgumentException ex) { throw new Exception("lookup.toolblockID doesn't appear to be a valid log level. Allowed are 'PLAYERS', 'MONSTERS' and 'ANIMALS'"); } - dontRollback = config.getIntList("rollback.dontRollback", null); - replaceAnyway = config.getIntList("rollback.replaceAnyway", null); + dontRollback = new HashSet(config.getIntList("rollback.dontRollback", null)); + replaceAnyway = new HashSet(config.getIntList("rollback.replaceAnyway", null)); defaultDist = config.getInt("lookup.defaultDist", 20); defaultTime = LogBlock.parseTimeSpec(config.getString("lookup.defaultTime")); toolID = config.getInt("lookup.toolID", 270); From 34b9385707896ce8f952ca3be817a5e062d50729 Mon Sep 17 00:00:00 2001 From: Robin Kupper Date: Tue, 3 May 2011 22:11:46 +0200 Subject: [PATCH 2/3] Improved ConnectionPool --- src/de/diddiz/util/ConnectionPool.java | 48 ++++++++++---------------- 1 file changed, 19 insertions(+), 29 deletions(-) diff --git a/src/de/diddiz/util/ConnectionPool.java b/src/de/diddiz/util/ConnectionPool.java index d576d10..30057ab 100644 --- a/src/de/diddiz/util/ConnectionPool.java +++ b/src/de/diddiz/util/ConnectionPool.java @@ -16,7 +16,6 @@ import java.sql.SQLXML; import java.sql.Savepoint; import java.sql.Statement; import java.sql.Struct; -import java.util.Enumeration; import java.util.Map; import java.util.Properties; import java.util.Vector; @@ -39,51 +38,42 @@ public class ConnectionPool { } public synchronized Connection getConnection() throws SQLException { - JDCConnection c; + JDCConnection conn; for (int i = 0; i < connections.size(); i++) { - c = connections.elementAt(i); - if (c.lease()) { - if (c.isValid()) - return c; + conn = connections.get(i); + if (conn.lease()) { + if (conn.isValid()) + return conn; else { - c.terminate(); - removeConnection(c); + conn.terminate(); + connections.remove(conn); } } } - c = new JDCConnection(DriverManager.getConnection(url, user, password)); - c.lease(); - if (!c.isValid()) { - c.terminate(); + conn = new JDCConnection(DriverManager.getConnection(url, user, password)); + conn.lease(); + if (!conn.isValid()) { + conn.terminate(); throw new SQLException("Failed to validate a brand new connection"); } - connections.addElement(c); - return c; + connections.add(conn); + return conn; } private synchronized void reapConnections() { final long stale = System.currentTimeMillis() - timeout; - final Enumeration connlist = connections.elements(); - while (connlist != null && connlist.hasMoreElements()) { - final JDCConnection conn = connlist.nextElement(); + for (final JDCConnection conn : connections) if (conn.inUse() && stale > conn.getLastUse() && !conn.isValid()) - removeConnection(conn); - } + connections.remove(conn); } public synchronized void closeConnections() { - final Enumeration connlist = connections.elements(); - while (connlist != null && connlist.hasMoreElements()) { - final JDCConnection conn = connlist.nextElement(); + for (final JDCConnection conn : connections) { conn.terminate(); - removeConnection(conn); + connections.remove(conn); } } - private synchronized void removeConnection(JDCConnection conn) { - connections.removeElement(conn); - } - private class ConnectionReaper extends Thread { @Override @@ -116,9 +106,9 @@ public class ConnectionPool { } public synchronized boolean lease() { - if (inuse) { + if (inuse) return false; - } else { + else { inuse = true; timestamp = System.currentTimeMillis(); return true; From 85678730e4102ed9ba490e7e7407ab1a6c128461 Mon Sep 17 00:00:00 2001 From: Robin Kupper Date: Wed, 4 May 2011 00:38:17 +0200 Subject: [PATCH 3/3] Added connection message at startup. --- src/de/diddiz/LogBlock/LogBlock.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/de/diddiz/LogBlock/LogBlock.java b/src/de/diddiz/LogBlock/LogBlock.java index 04ce63a..363079b 100644 --- a/src/de/diddiz/LogBlock/LogBlock.java +++ b/src/de/diddiz/LogBlock/LogBlock.java @@ -74,6 +74,7 @@ public class LogBlock extends JavaPlugin return; } try { + log.info("[LogBlock] Connecting to " + config.user + "@" + config.url + "..."); pool = new ConnectionPool(config.url, config.user, config.password); final Connection conn = getConnection(); conn.close();