You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by or...@apache.org on 2018/03/06 14:00:42 UTC
qpid-broker-j git commit: QPID-7873: [Broker-J] Make sure that link
store structure and preferences store structure are deleted on deletion of
the virtual host node
Repository: qpid-broker-j
Updated Branches:
refs/heads/master dbcbed940 -> bc46f8b37
QPID-7873: [Broker-J] Make sure that link store structure and preferences store structure are deleted on deletion of the virtual host node
Project: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/commit/bc46f8b3
Tree: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/tree/bc46f8b3
Diff: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/diff/bc46f8b3
Branch: refs/heads/master
Commit: bc46f8b37eef8db31779acaf59225e8001f7a479
Parents: dbcbed9
Author: Alex Rudyy <or...@apache.org>
Authored: Tue Mar 6 13:48:29 2018 +0000
Committer: Alex Rudyy <or...@apache.org>
Committed: Tue Mar 6 13:48:29 2018 +0000
----------------------------------------------------------------------
.../AbstractStandardVirtualHostNode.java | 11 ++++++
.../protocol/v1_0/store/jdbc/JDBCLinkStore.java | 18 +++++++---
.../virtualhost/derby/DerbyVirtualHostImpl.java | 13 +++++++
.../derby/DerbyVirtualHostNodeImpl.java | 22 ++++++++++--
.../jdbc/AbstractJDBCConfigurationStore.java | 36 +++++++++++++++++---
.../store/jdbc/AbstractJDBCMessageStore.java | 26 +++++++++++++-
.../qpid/server/store/jdbc/JDBCContainer.java | 5 +++
.../qpid/server/store/jdbc/JdbcUtils.java | 2 +-
.../virtualhost/jdbc/JDBCVirtualHostImpl.java | 20 ++++++++++-
.../jdbc/JDBCVirtualHostNodeImpl.java | 22 ++++++++++--
.../jdbc/GenericJDBCConfigurationStoreTest.java | 12 +++++++
.../server/store/jdbc/JDBCMessageStoreTest.java | 12 +++++++
.../qpid/server/store/jdbc/TestJdbcUtils.java | 4 +--
.../virtualhost/jdbc/JDBCVirtualHostTest.java | 27 +++++++++++++++
.../jdbc/JDBCVirtualHostNodeTest.java | 30 ++++++++++++++++
15 files changed, 241 insertions(+), 19 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/bc46f8b3/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractStandardVirtualHostNode.java
----------------------------------------------------------------------
diff --git a/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractStandardVirtualHostNode.java b/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractStandardVirtualHostNode.java
index d7de6fd..aaa436b 100644
--- a/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractStandardVirtualHostNode.java
+++ b/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractStandardVirtualHostNode.java
@@ -46,6 +46,8 @@ import org.apache.qpid.server.store.ConfiguredObjectRecordImpl;
import org.apache.qpid.server.store.DurableConfigurationStore;
import org.apache.qpid.server.store.MessageStore;
import org.apache.qpid.server.store.VirtualHostStoreUpgraderAndRecoverer;
+import org.apache.qpid.server.store.preferences.PreferenceStore;
+import org.apache.qpid.server.store.preferences.PreferenceStoreProvider;
import org.apache.qpid.server.virtualhost.QueueManagingVirtualHost;
public abstract class AbstractStandardVirtualHostNode<X extends AbstractStandardVirtualHostNode<X>> extends AbstractVirtualHostNode<X>
@@ -136,6 +138,15 @@ public abstract class AbstractStandardVirtualHostNode<X extends AbstractStandard
messageStore.onDelete(virtualHost);
}
+ if (AbstractStandardVirtualHostNode.this instanceof PreferenceStoreProvider)
+ {
+ PreferenceStore preferenceStore =
+ ((PreferenceStoreProvider) AbstractStandardVirtualHostNode.this).getPreferenceStore();
+ if (preferenceStore != null)
+ {
+ preferenceStore.onDelete();
+ }
+ }
DurableConfigurationStore configurationStore = getConfigurationStore();
if (configurationStore != null)
{
http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/bc46f8b3/broker-plugins/amqp-1-0-jdbc-store/src/main/java/org/apache/qpid/server/protocol/v1_0/store/jdbc/JDBCLinkStore.java
----------------------------------------------------------------------
diff --git a/broker-plugins/amqp-1-0-jdbc-store/src/main/java/org/apache/qpid/server/protocol/v1_0/store/jdbc/JDBCLinkStore.java b/broker-plugins/amqp-1-0-jdbc-store/src/main/java/org/apache/qpid/server/protocol/v1_0/store/jdbc/JDBCLinkStore.java
index 94de03c..4441d6a 100644
--- a/broker-plugins/amqp-1-0-jdbc-store/src/main/java/org/apache/qpid/server/protocol/v1_0/store/jdbc/JDBCLinkStore.java
+++ b/broker-plugins/amqp-1-0-jdbc-store/src/main/java/org/apache/qpid/server/protocol/v1_0/store/jdbc/JDBCLinkStore.java
@@ -36,6 +36,7 @@ import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Base64;
import java.util.Collection;
@@ -62,6 +63,7 @@ import org.apache.qpid.server.store.StoreException;
import org.apache.qpid.server.store.jdbc.JDBCContainer;
import org.apache.qpid.server.store.jdbc.JDBCDetails;
import org.apache.qpid.server.store.jdbc.JdbcUtils;
+import org.apache.qpid.server.util.Action;
public class JDBCLinkStore extends AbstractLinkStore
{
@@ -72,6 +74,7 @@ public class JDBCLinkStore extends AbstractLinkStore
private final String _tableNamePrefix;
private final String _sqlBlobType;
private final boolean _isUseBytesMethodsForBlob;
+ private final Action<Connection> _cleanUpAction;
JDBCLinkStore(final JDBCContainer jdbcContainer)
{
@@ -80,6 +83,8 @@ public class JDBCLinkStore extends AbstractLinkStore
JDBCDetails jdbcDetails = jdbcContainer.getJDBCDetails();
_sqlBlobType = jdbcDetails.getBlobType();
_isUseBytesMethodsForBlob = jdbcDetails.isUseBytesMethodsForBlob();
+ _cleanUpAction = this::cleanUp;
+ jdbcContainer.addDeleteAction(_cleanUpAction);
}
@Override
@@ -186,12 +191,10 @@ public class JDBCLinkStore extends AbstractLinkStore
@Override
protected void doDelete()
{
- try (Connection connection = getConnection();
- Statement dropLinksStatement = connection.createStatement();
- Statement dropVersionsStatement = connection.createStatement())
+ _jdbcContainer.removeDeleteAction(_cleanUpAction);
+ try (Connection connection = getConnection())
{
- dropLinksStatement.execute(String.format("DROP TABLE %s", getLinksTableName()));
- dropVersionsStatement.execute(String.format("DROP TABLE %s", getVersionTableName()));
+ cleanUp(connection);
}
catch (IllegalStateException e)
{
@@ -203,6 +206,11 @@ public class JDBCLinkStore extends AbstractLinkStore
}
}
+ private void cleanUp(final Connection connection)
+ {
+ JdbcUtils.dropTables(connection, LOGGER, Arrays.asList(getLinksTableName(), getVersionTableName()));
+ }
+
@Override
public TerminusDurability getHighestSupportedTerminusDurability()
{
http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/bc46f8b3/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/virtualhost/derby/DerbyVirtualHostImpl.java
----------------------------------------------------------------------
diff --git a/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/virtualhost/derby/DerbyVirtualHostImpl.java b/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/virtualhost/derby/DerbyVirtualHostImpl.java
index 39085c8..5985f51 100644
--- a/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/virtualhost/derby/DerbyVirtualHostImpl.java
+++ b/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/virtualhost/derby/DerbyVirtualHostImpl.java
@@ -33,6 +33,7 @@ import org.apache.qpid.server.store.derby.DerbyMessageStore;
import org.apache.qpid.server.store.derby.DerbyUtils;
import org.apache.qpid.server.store.jdbc.JDBCContainer;
import org.apache.qpid.server.store.jdbc.JDBCDetails;
+import org.apache.qpid.server.util.Action;
import org.apache.qpid.server.util.ConnectionScopedRuntimeException;
import org.apache.qpid.server.util.FileHelper;
import org.apache.qpid.server.virtualhost.AbstractVirtualHost;
@@ -122,4 +123,16 @@ public class DerbyVirtualHostImpl extends AbstractVirtualHost<DerbyVirtualHostIm
{
return "";
}
+
+ @Override
+ public void addDeleteAction(final Action<Connection> action)
+ {
+ ((DerbyMessageStore) getMessageStore()).addDeleteAction(action);
+ }
+
+ @Override
+ public void removeDeleteAction(final Action<Connection> action)
+ {
+ ((DerbyMessageStore) getMessageStore()).removeDeleteAction(action);
+ }
}
http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/bc46f8b3/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/virtualhostnode/derby/DerbyVirtualHostNodeImpl.java
----------------------------------------------------------------------
diff --git a/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/virtualhostnode/derby/DerbyVirtualHostNodeImpl.java b/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/virtualhostnode/derby/DerbyVirtualHostNodeImpl.java
index 8eba861..cdd90e8 100644
--- a/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/virtualhostnode/derby/DerbyVirtualHostNodeImpl.java
+++ b/broker-plugins/derby-store/src/main/java/org/apache/qpid/server/virtualhostnode/derby/DerbyVirtualHostNodeImpl.java
@@ -40,6 +40,7 @@ import org.apache.qpid.server.store.derby.DerbyUtils;
import org.apache.qpid.server.store.jdbc.JDBCContainer;
import org.apache.qpid.server.store.jdbc.JDBCDetails;
import org.apache.qpid.server.store.preferences.PreferenceStore;
+import org.apache.qpid.server.util.Action;
import org.apache.qpid.server.util.ConnectionScopedRuntimeException;
import org.apache.qpid.server.util.FileHelper;
import org.apache.qpid.server.virtualhostnode.AbstractStandardVirtualHostNode;
@@ -108,7 +109,7 @@ public class DerbyVirtualHostNodeImpl extends AbstractStandardVirtualHostNode<De
@Override
public PreferenceStore getPreferenceStore()
{
- return ((DerbyConfigurationStore)getConfigurationStore()).getPreferenceStore();
+ return getStore().getPreferenceStore();
}
@Override
@@ -122,7 +123,7 @@ public class DerbyVirtualHostNodeImpl extends AbstractStandardVirtualHostNode<De
{
try
{
- return ((DerbyConfigurationStore) getConfigurationStore()).getConnection();
+ return getStore().getConnection();
}
catch (SQLException e)
{
@@ -137,4 +138,21 @@ public class DerbyVirtualHostNodeImpl extends AbstractStandardVirtualHostNode<De
{
return "";
}
+
+ @Override
+ public void addDeleteAction(final Action<Connection> action)
+ {
+ getStore().addDeleteAction(action);
+ }
+
+ @Override
+ public void removeDeleteAction(final Action<Connection> action)
+ {
+ getStore().removeDeleteAction(action);
+ }
+
+ private DerbyConfigurationStore getStore()
+ {
+ return (DerbyConfigurationStore) getConfigurationStore();
+ }
}
http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/bc46f8b3/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/AbstractJDBCConfigurationStore.java
----------------------------------------------------------------------
diff --git a/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/AbstractJDBCConfigurationStore.java b/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/AbstractJDBCConfigurationStore.java
index 1aac9c7..c87d719 100644
--- a/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/AbstractJDBCConfigurationStore.java
+++ b/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/AbstractJDBCConfigurationStore.java
@@ -38,7 +38,9 @@ import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import java.util.UUID;
+import java.util.concurrent.ConcurrentHashMap;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.slf4j.Logger;
@@ -51,6 +53,7 @@ import org.apache.qpid.server.store.DurableConfigurationStore;
import org.apache.qpid.server.store.MessageStoreProvider;
import org.apache.qpid.server.store.StoreException;
import org.apache.qpid.server.store.handler.ConfiguredObjectRecordHandler;
+import org.apache.qpid.server.util.Action;
public abstract class AbstractJDBCConfigurationStore implements MessageStoreProvider, DurableConfigurationStore
{
@@ -59,7 +62,7 @@ public abstract class AbstractJDBCConfigurationStore implements MessageStoreProv
private final static String CONFIGURED_OBJECT_HIERARCHY_TABLE_NAME_SUFFIX = "QPID_CONFIGURED_OBJECT_HIERARCHY";
private static final int DEFAULT_CONFIG_VERSION = 0;
-
+ private final Set<Action<Connection>> _deleteActions = Collections.newSetFromMap(new ConcurrentHashMap<>());;
public enum State { CLOSED, CONFIGURED, OPEN };
private State _state = State.CLOSED;
@@ -78,6 +81,7 @@ public abstract class AbstractJDBCConfigurationStore implements MessageStoreProv
final ConfiguredObjectRecord... initialRecords)
{
changeState(CONFIGURED, OPEN);
+ _deleteActions.clear();
try
{
Collection<? extends ConfiguredObjectRecord> records = doVisitAllConfiguredObjectRecords(handler);
@@ -734,6 +738,16 @@ public abstract class AbstractJDBCConfigurationStore implements MessageStoreProv
}
}
+ public void addDeleteAction(final Action<Connection> action)
+ {
+ _deleteActions.add(action);
+ }
+
+ public void removeDeleteAction(final Action<Connection> action)
+ {
+ _deleteActions.remove(action);
+ }
+
private void updateConfiguredObject(ConfiguredObjectRecord configuredObject,
boolean createIfNecessary,
Connection conn)
@@ -819,11 +833,23 @@ public abstract class AbstractJDBCConfigurationStore implements MessageStoreProv
protected abstract String getBlobAsString(ResultSet rs, int col) throws SQLException;
- void onDelete(final Connection conn) throws SQLException
+ void onDelete(final Connection conn)
{
- JdbcUtils.dropTables(conn,
- getLogger(),
- Arrays.asList(getConfiguredObjectsTableName(), getConfiguredObjectHierarchyTableName()));
+ try
+ {
+ for (Action<Connection> deleteAction : _deleteActions)
+ {
+ deleteAction.performAction(conn);
+ }
+ _deleteActions.clear();
+ }
+ finally
+ {
+ JdbcUtils.dropTables(conn,
+ getLogger(),
+ Arrays.asList(getConfiguredObjectsTableName(),
+ getConfiguredObjectHierarchyTableName()));
+ }
}
private static final class ConfiguredObjectRecordImpl implements ConfiguredObjectRecord
http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/bc46f8b3/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/AbstractJDBCMessageStore.java
----------------------------------------------------------------------
diff --git a/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/AbstractJDBCMessageStore.java b/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/AbstractJDBCMessageStore.java
index c12e223..0ad638c 100644
--- a/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/AbstractJDBCMessageStore.java
+++ b/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/AbstractJDBCMessageStore.java
@@ -67,6 +67,7 @@ import org.apache.qpid.server.store.handler.DistributedTransactionHandler;
import org.apache.qpid.server.store.handler.MessageHandler;
import org.apache.qpid.server.store.handler.MessageInstanceHandler;
import org.apache.qpid.server.txn.Xid;
+import org.apache.qpid.server.util.Action;
import org.apache.qpid.server.util.CachingUUIDFactory;
public abstract class AbstractJDBCMessageStore implements MessageStore
@@ -90,6 +91,7 @@ public abstract class AbstractJDBCMessageStore implements MessageStore
private final AtomicLong _bytesEvacuatedFromMemory = new AtomicLong();
private final Set<StoredJDBCMessage<?>> _messages = Collections.newSetFromMap(new ConcurrentHashMap<>());
private final Set<MessageDeleteListener> _messageDeleteListeners = Collections.newSetFromMap(new ConcurrentHashMap<>());
+ private final Set<Action<Connection>> _deleteActions = Collections.newSetFromMap(new ConcurrentHashMap<>());
protected abstract boolean isMessageStoreOpen();
@@ -247,6 +249,7 @@ public abstract class AbstractJDBCMessageStore implements MessageStore
protected void createOrOpenMessageStoreDatabase() throws StoreException
{
+ _deleteActions.clear();
try(Connection conn = newAutoCommitConnection())
{
createVersionTable(conn);
@@ -735,6 +738,16 @@ public abstract class AbstractJDBCMessageStore implements MessageStore
return _tablePrefix + XID_ACTIONS_TABLE_NAME_SUFFIX;
}
+ public void addDeleteAction(final Action<Connection> action)
+ {
+ _deleteActions.add(action);
+ }
+
+ public void removeDeleteAction(final Action<Connection> action)
+ {
+ _deleteActions.remove(action);
+ }
+
private static final class ConnectionWrapper
{
private final Connection _connection;
@@ -1816,7 +1829,18 @@ public abstract class AbstractJDBCMessageStore implements MessageStore
protected void onDelete(final Connection conn)
{
- JdbcUtils.dropTables(conn, getLogger(), getTableNames());
+ try
+ {
+ for (Action<Connection> deleteAction: _deleteActions)
+ {
+ deleteAction.performAction(conn);
+ }
+ _deleteActions.clear();
+ }
+ finally
+ {
+ JdbcUtils.dropTables(conn, getLogger(), getTableNames());
+ }
}
public List<String> getTableNames()
http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/bc46f8b3/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/JDBCContainer.java
----------------------------------------------------------------------
diff --git a/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/JDBCContainer.java b/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/JDBCContainer.java
index 2634a14..1566f3f 100644
--- a/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/JDBCContainer.java
+++ b/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/JDBCContainer.java
@@ -21,6 +21,8 @@ package org.apache.qpid.server.store.jdbc;
import java.sql.Connection;
+import org.apache.qpid.server.util.Action;
+
public interface JDBCContainer
{
JDBCDetails getJDBCDetails();
@@ -28,4 +30,7 @@ public interface JDBCContainer
Connection getConnection();
String getTableNamePrefix();
+
+ void addDeleteAction(Action<Connection> action);
+ void removeDeleteAction(Action<Connection> action);
}
http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/bc46f8b3/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/JdbcUtils.java
----------------------------------------------------------------------
diff --git a/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/JdbcUtils.java b/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/JdbcUtils.java
index b6d9f22..d3df9ae 100644
--- a/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/JdbcUtils.java
+++ b/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/JdbcUtils.java
@@ -119,7 +119,7 @@ public class JdbcUtils
}
}
- static void dropTables(final Connection connection, final Logger logger, Collection<String> tableNames)
+ public static void dropTables(final Connection connection, final Logger logger, Collection<String> tableNames)
{
for (String tableName : tableNames)
{
http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/bc46f8b3/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhost/jdbc/JDBCVirtualHostImpl.java
----------------------------------------------------------------------
diff --git a/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhost/jdbc/JDBCVirtualHostImpl.java b/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhost/jdbc/JDBCVirtualHostImpl.java
index 497f1eb..33ff899 100644
--- a/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhost/jdbc/JDBCVirtualHostImpl.java
+++ b/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhost/jdbc/JDBCVirtualHostImpl.java
@@ -33,6 +33,7 @@ import org.apache.qpid.server.store.jdbc.AbstractJDBCMessageStore;
import org.apache.qpid.server.store.jdbc.GenericJDBCMessageStore;
import org.apache.qpid.server.store.jdbc.JDBCContainer;
import org.apache.qpid.server.store.jdbc.JDBCDetails;
+import org.apache.qpid.server.util.Action;
import org.apache.qpid.server.util.ConnectionScopedRuntimeException;
import org.apache.qpid.server.virtualhost.AbstractVirtualHost;
@@ -111,7 +112,7 @@ public class JDBCVirtualHostImpl extends AbstractVirtualHost<JDBCVirtualHostImpl
{
try
{
- return ((AbstractJDBCMessageStore) getMessageStore()).getConnection();
+ return getStore().getConnection();
}
catch (SQLException e)
{
@@ -129,4 +130,21 @@ public class JDBCVirtualHostImpl extends AbstractVirtualHost<JDBCVirtualHostImpl
", connectionPoolType=" + getConnectionPoolType() +
", username=" + getUsername() + "]";
}
+
+ @Override
+ public void addDeleteAction(final Action<Connection> action)
+ {
+ getStore().addDeleteAction(action);
+ }
+
+ @Override
+ public void removeDeleteAction(final Action<Connection> action)
+ {
+ getStore().removeDeleteAction(action);
+ }
+
+ private AbstractJDBCMessageStore getStore()
+ {
+ return (AbstractJDBCMessageStore) getMessageStore();
+ }
}
http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/bc46f8b3/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhostnode/jdbc/JDBCVirtualHostNodeImpl.java
----------------------------------------------------------------------
diff --git a/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhostnode/jdbc/JDBCVirtualHostNodeImpl.java b/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhostnode/jdbc/JDBCVirtualHostNodeImpl.java
index 77f20f4..7c4efd4 100644
--- a/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhostnode/jdbc/JDBCVirtualHostNodeImpl.java
+++ b/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhostnode/jdbc/JDBCVirtualHostNodeImpl.java
@@ -36,6 +36,7 @@ import org.apache.qpid.server.store.jdbc.GenericJDBCConfigurationStore;
import org.apache.qpid.server.store.jdbc.JDBCContainer;
import org.apache.qpid.server.store.jdbc.JDBCDetails;
import org.apache.qpid.server.store.preferences.PreferenceStore;
+import org.apache.qpid.server.util.Action;
import org.apache.qpid.server.util.ConnectionScopedRuntimeException;
import org.apache.qpid.server.virtualhostnode.AbstractStandardVirtualHostNode;
@@ -119,7 +120,7 @@ public class JDBCVirtualHostNodeImpl extends AbstractStandardVirtualHostNode<JDB
{
try
{
- return ((GenericJDBCConfigurationStore) getConfigurationStore()).getConnection();
+ return getStore().getConnection();
}
catch (SQLException e)
{
@@ -147,6 +148,23 @@ public class JDBCVirtualHostNodeImpl extends AbstractStandardVirtualHostNode<JDB
@Override
public PreferenceStore getPreferenceStore()
{
- return ((GenericJDBCConfigurationStore) getConfigurationStore()).getPreferenceStore();
+ return getStore().getPreferenceStore();
+ }
+
+ @Override
+ public void addDeleteAction(final Action<Connection> action)
+ {
+ getStore().addDeleteAction(action);
+ }
+
+ @Override
+ public void removeDeleteAction(final Action<Connection> action)
+ {
+ getStore().removeDeleteAction(action);
+ }
+
+ private GenericJDBCConfigurationStore getStore()
+ {
+ return (GenericJDBCConfigurationStore) getConfigurationStore();
}
}
http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/bc46f8b3/broker-plugins/jdbc-store/src/test/java/org/apache/qpid/server/store/jdbc/GenericJDBCConfigurationStoreTest.java
----------------------------------------------------------------------
diff --git a/broker-plugins/jdbc-store/src/test/java/org/apache/qpid/server/store/jdbc/GenericJDBCConfigurationStoreTest.java b/broker-plugins/jdbc-store/src/test/java/org/apache/qpid/server/store/jdbc/GenericJDBCConfigurationStoreTest.java
index c5d7de4..aca3d9c 100644
--- a/broker-plugins/jdbc-store/src/test/java/org/apache/qpid/server/store/jdbc/GenericJDBCConfigurationStoreTest.java
+++ b/broker-plugins/jdbc-store/src/test/java/org/apache/qpid/server/store/jdbc/GenericJDBCConfigurationStoreTest.java
@@ -30,6 +30,7 @@ import java.sql.Connection;
import java.sql.SQLException;
import java.util.Arrays;
import java.util.Collection;
+import java.util.concurrent.atomic.AtomicBoolean;
import org.apache.qpid.server.model.ConfiguredObjectFactory;
import org.apache.qpid.server.model.VirtualHost;
@@ -74,6 +75,17 @@ public class GenericJDBCConfigurationStoreTest extends AbstractDurableConfigurat
}
}
+ public void testDeleteAction()
+ {
+ GenericJDBCConfigurationStore store = (GenericJDBCConfigurationStore) getConfigurationStore();
+ AtomicBoolean deleted = new AtomicBoolean();
+ store.addDeleteAction(object -> deleted.set(true));
+
+ store.closeConfigurationStore();
+ store.onDelete(getVirtualHostNode());
+ assertEquals("Delete action was not invoked", true, deleted.get());
+ }
+
@Override
protected VirtualHostNode createVirtualHostNode(final String storeLocation, final ConfiguredObjectFactory factory)
{
http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/bc46f8b3/broker-plugins/jdbc-store/src/test/java/org/apache/qpid/server/store/jdbc/JDBCMessageStoreTest.java
----------------------------------------------------------------------
diff --git a/broker-plugins/jdbc-store/src/test/java/org/apache/qpid/server/store/jdbc/JDBCMessageStoreTest.java b/broker-plugins/jdbc-store/src/test/java/org/apache/qpid/server/store/jdbc/JDBCMessageStoreTest.java
index a2636a2..e392109 100644
--- a/broker-plugins/jdbc-store/src/test/java/org/apache/qpid/server/store/jdbc/JDBCMessageStoreTest.java
+++ b/broker-plugins/jdbc-store/src/test/java/org/apache/qpid/server/store/jdbc/JDBCMessageStoreTest.java
@@ -30,6 +30,7 @@ import java.sql.SQLException;
import java.util.Collection;
import java.util.UUID;
import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicBoolean;
import com.google.common.util.concurrent.ListenableFuture;
@@ -146,6 +147,17 @@ public class JDBCMessageStoreTest extends MessageStoreTestCase
future.get(1000, TimeUnit.MILLISECONDS);
}
+ public void testDeleteAction()
+ {
+ GenericJDBCMessageStore store = (GenericJDBCMessageStore) getStore();
+ AtomicBoolean deleted = new AtomicBoolean();
+ store.addDeleteAction(object -> deleted.set(true));
+
+ store.closeMessageStore();
+ store.onDelete(getVirtualHost());
+ assertEquals("Delete action was not invoked", true, deleted.get());
+ }
+
private InternalMessage addTestMessage(final MessageStore store,
final String transactionalLogName,
final String messageContent)
http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/bc46f8b3/broker-plugins/jdbc-store/src/test/java/org/apache/qpid/server/store/jdbc/TestJdbcUtils.java
----------------------------------------------------------------------
diff --git a/broker-plugins/jdbc-store/src/test/java/org/apache/qpid/server/store/jdbc/TestJdbcUtils.java b/broker-plugins/jdbc-store/src/test/java/org/apache/qpid/server/store/jdbc/TestJdbcUtils.java
index e1ee362..e0af00a 100644
--- a/broker-plugins/jdbc-store/src/test/java/org/apache/qpid/server/store/jdbc/TestJdbcUtils.java
+++ b/broker-plugins/jdbc-store/src/test/java/org/apache/qpid/server/store/jdbc/TestJdbcUtils.java
@@ -31,7 +31,7 @@ import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
-class TestJdbcUtils
+public class TestJdbcUtils
{
static void assertTablesExistence(Collection<String> expectedTables,
@@ -60,7 +60,7 @@ class TestJdbcUtils
return tableNames;
}
- static void shutdownDerby(String connectionURL) throws SQLException
+ public static void shutdownDerby(String connectionURL) throws SQLException
{
Connection connection = null;
try
http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/bc46f8b3/broker-plugins/jdbc-store/src/test/java/org/apache/qpid/server/virtualhost/jdbc/JDBCVirtualHostTest.java
----------------------------------------------------------------------
diff --git a/broker-plugins/jdbc-store/src/test/java/org/apache/qpid/server/virtualhost/jdbc/JDBCVirtualHostTest.java b/broker-plugins/jdbc-store/src/test/java/org/apache/qpid/server/virtualhost/jdbc/JDBCVirtualHostTest.java
index 3af9000..3ceda39 100644
--- a/broker-plugins/jdbc-store/src/test/java/org/apache/qpid/server/virtualhost/jdbc/JDBCVirtualHostTest.java
+++ b/broker-plugins/jdbc-store/src/test/java/org/apache/qpid/server/virtualhost/jdbc/JDBCVirtualHostTest.java
@@ -27,21 +27,27 @@ import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.concurrent.atomic.AtomicBoolean;
import org.apache.qpid.server.configuration.IllegalConfigurationException;
import org.apache.qpid.server.configuration.updater.CurrentThreadTaskExecutor;
import org.apache.qpid.server.logging.EventLogger;
import org.apache.qpid.server.model.Broker;
import org.apache.qpid.server.model.BrokerModel;
+import org.apache.qpid.server.model.BrokerTestHelper;
import org.apache.qpid.server.model.ConfiguredObject;
import org.apache.qpid.server.model.ConfiguredObjectFactoryImpl;
import org.apache.qpid.server.model.SystemConfig;
+import org.apache.qpid.server.model.VirtualHost;
import org.apache.qpid.server.model.VirtualHostNode;
+import org.apache.qpid.server.store.jdbc.JDBCContainer;
+import org.apache.qpid.server.store.jdbc.TestJdbcUtils;
import org.apache.qpid.test.utils.QpidTestCase;
public class JDBCVirtualHostTest extends QpidTestCase
{
private CurrentThreadTaskExecutor _taskExecutor;
+ private String _connectionURL;
@Override
public void setUp() throws Exception
@@ -56,6 +62,10 @@ public class JDBCVirtualHostTest extends QpidTestCase
{
super.tearDown();
_taskExecutor.stopImmediately();
+ if (_connectionURL != null)
+ {
+ TestJdbcUtils.shutdownDerby(_connectionURL);
+ }
}
public void testInvalidTableNamePrefix() throws Exception
@@ -108,4 +118,21 @@ public class JDBCVirtualHostTest extends QpidTestCase
}
}
}
+
+ public void testDeleteAction()
+ {
+ _connectionURL = "jdbc:derby:memory:/" + getTestName();
+ Map<String, Object> attributes = new HashMap<>();
+ attributes.put(ConfiguredObject.NAME, getTestName());
+ attributes.put(ConfiguredObject.TYPE, JDBCVirtualHostImpl.VIRTUAL_HOST_TYPE);
+ attributes.put("connectionUrl", _connectionURL + ";create=true");
+
+ final VirtualHost vh = BrokerTestHelper.createVirtualHost(attributes);
+
+ AtomicBoolean deleted = new AtomicBoolean();
+ ((JDBCContainer)vh).addDeleteAction(object -> deleted.set(true));
+
+ vh.delete();
+ assertEquals("Delete action was not invoked", true, deleted.get());
+ }
}
http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/bc46f8b3/broker-plugins/jdbc-store/src/test/java/org/apache/qpid/server/virtualhostnode/jdbc/JDBCVirtualHostNodeTest.java
----------------------------------------------------------------------
diff --git a/broker-plugins/jdbc-store/src/test/java/org/apache/qpid/server/virtualhostnode/jdbc/JDBCVirtualHostNodeTest.java b/broker-plugins/jdbc-store/src/test/java/org/apache/qpid/server/virtualhostnode/jdbc/JDBCVirtualHostNodeTest.java
index 6160dee..b911a51 100644
--- a/broker-plugins/jdbc-store/src/test/java/org/apache/qpid/server/virtualhostnode/jdbc/JDBCVirtualHostNodeTest.java
+++ b/broker-plugins/jdbc-store/src/test/java/org/apache/qpid/server/virtualhostnode/jdbc/JDBCVirtualHostNodeTest.java
@@ -27,19 +27,25 @@ import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.concurrent.atomic.AtomicBoolean;
import org.apache.qpid.server.configuration.IllegalConfigurationException;
import org.apache.qpid.server.configuration.updater.CurrentThreadTaskExecutor;
import org.apache.qpid.server.model.Broker;
import org.apache.qpid.server.model.BrokerModel;
+import org.apache.qpid.server.model.BrokerTestHelper;
import org.apache.qpid.server.model.ConfiguredObject;
import org.apache.qpid.server.model.ConfiguredObjectFactoryImpl;
import org.apache.qpid.server.model.SystemConfig;
+import org.apache.qpid.server.model.VirtualHostNode;
+import org.apache.qpid.server.store.jdbc.JDBCContainer;
+import org.apache.qpid.server.store.jdbc.TestJdbcUtils;
import org.apache.qpid.test.utils.QpidTestCase;
public class JDBCVirtualHostNodeTest extends QpidTestCase
{
private CurrentThreadTaskExecutor _taskExecutor;
+ private String _connectionURL;
@Override
public void setUp() throws Exception
@@ -47,6 +53,10 @@ public class JDBCVirtualHostNodeTest extends QpidTestCase
super.setUp();
_taskExecutor = new CurrentThreadTaskExecutor();
_taskExecutor.start();
+ if (_connectionURL != null)
+ {
+ TestJdbcUtils.shutdownDerby(_connectionURL);
+ }
}
@Override
@@ -100,4 +110,24 @@ public class JDBCVirtualHostNodeTest extends QpidTestCase
}
}
}
+
+ public void testDeleteAction()
+ {
+ _connectionURL = "jdbc:derby:memory:/" + getTestName();
+ Map<String, Object> attributes = new HashMap<>();
+ attributes.put(ConfiguredObject.NAME, getTestName());
+ attributes.put(ConfiguredObject.TYPE, JDBCVirtualHostNodeImpl.VIRTUAL_HOST_NODE_TYPE);
+ attributes.put("connectionUrl", _connectionURL + ";create=true");
+
+ Broker<?> broker = BrokerTestHelper.createBrokerMock();
+ final VirtualHostNode virtualHostNode =
+ broker.getObjectFactory().create(VirtualHostNode.class, attributes, broker);
+ virtualHostNode.start();
+
+ AtomicBoolean deleted = new AtomicBoolean();
+ ((JDBCContainer) virtualHostNode).addDeleteAction(object -> deleted.set(true));
+
+ virtualHostNode.delete();
+ assertEquals("Delete action was not invoked", true, deleted.get());
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org