Repository: qpid-broker-j Updated Branches: refs/heads/master bc46f8b37 -> 192863d31
QPID-8117: [Broker-J] Make sure that table prefix of JDBC Virtual Host Node is respected by preferences store 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/192863d3 Tree: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/tree/192863d3 Diff: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/diff/192863d3 Branch: refs/heads/master Commit: 192863d3120a99a49a3f41105c201cd5fba03e0b Parents: bc46f8b Author: Alex Rudyy <oru...@apache.org> Authored: Tue Mar 6 14:47:22 2018 +0000 Committer: Alex Rudyy <oru...@apache.org> Committed: Tue Mar 6 14:47:22 2018 +0000 ---------------------------------------------------------------------- .../store/jdbc/AbstractJDBCPreferenceStore.java | 73 +++++++++++++------- .../jdbc/GenericJDBCConfigurationStore.java | 3 +- 2 files changed, 50 insertions(+), 26 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/192863d3/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/AbstractJDBCPreferenceStore.java ---------------------------------------------------------------------- diff --git a/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/AbstractJDBCPreferenceStore.java b/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/AbstractJDBCPreferenceStore.java index 61a63d4..e065649 100644 --- a/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/AbstractJDBCPreferenceStore.java +++ b/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/AbstractJDBCPreferenceStore.java @@ -56,22 +56,26 @@ public abstract class AbstractJDBCPreferenceStore implements PreferenceStore private static final String PREFERENCES_VERSION_TABLE_NAME = "PREFERENCES_VERSION"; private static final String PREFERENCES_TABLE_NAME = "PREFERENCES"; - private static final String CREATE_PREFERENCES_VERSION_TABLE = - "CREATE TABLE " + PREFERENCES_VERSION_TABLE_NAME + " ( version VARCHAR(20) NOT NULL )"; - private static final String INSERT_INTO_PREFERENCES_VERSION = - "INSERT INTO " + PREFERENCES_VERSION_TABLE_NAME + " ( version ) VALUES ( ? )"; - private static final String SELECT_FROM_PREFERENCES_VERSION = - "SELECT version FROM " + PREFERENCES_VERSION_TABLE_NAME; - - private static final String INSERT_INTO_PREFERENCES = "INSERT INTO " + PREFERENCES_TABLE_NAME + " ( id, attributes ) VALUES ( ?, ? )"; - private static final String DELETE_FROM_PREFERENCES = "DELETE FROM " + PREFERENCES_TABLE_NAME + " where id = ?"; - private static final String SELECT_FROM_PREFERENCES = "SELECT id, attributes FROM " + PREFERENCES_TABLE_NAME; - private static final String FIND_PREFERENCE = "SELECT attributes FROM " + PREFERENCES_TABLE_NAME + " WHERE id = ?"; - private static final String UPDATE_PREFERENCES = "UPDATE " + PREFERENCES_TABLE_NAME + " SET attributes = ? WHERE id = ?"; + private static final String CREATE_PREFERENCES_VERSION_TABLE = "CREATE TABLE %s ( version VARCHAR(20) NOT NULL )"; + private static final String INSERT_INTO_PREFERENCES_VERSION = "INSERT INTO %s ( version ) VALUES ( ? )"; + private static final String SELECT_FROM_PREFERENCES_VERSION = "SELECT version FROM %s"; + + private static final String INSERT_INTO_PREFERENCES = "INSERT INTO %s ( id, attributes ) VALUES ( ?, ? )"; + private static final String DELETE_FROM_PREFERENCES = "DELETE FROM %s where id = ?"; + private static final String SELECT_FROM_PREFERENCES = "SELECT id, attributes FROM %s"; + private static final String FIND_PREFERENCE = "SELECT attributes FROM %s WHERE id = ?"; + private static final String UPDATE_PREFERENCES = "UPDATE %s SET attributes = ? WHERE id = ?"; private final AtomicReference<StoreState> _storeState = new AtomicReference<>(StoreState.CLOSED); private final ReentrantReadWriteLock _useOrCloseRWLock = new ReentrantReadWriteLock(true); + private String _tableNamePrefix = ""; + + protected void setTableNamePrefix(final String tableNamePrefix) + { + _tableNamePrefix = tableNamePrefix == null ? "" : tableNamePrefix; + } + @Override public Collection<PreferenceRecord> openAndLoad(final PreferenceStoreUpdater updater) throws StoreException { @@ -179,7 +183,9 @@ public abstract class AbstractJDBCPreferenceStore implements PreferenceStore { for (UUID id : preferenceRecordsToRemove) { - try (PreparedStatement deleteStatement = connection.prepareStatement(DELETE_FROM_PREFERENCES)) + try (PreparedStatement deleteStatement = connection.prepareStatement(String.format( + DELETE_FROM_PREFERENCES, + getPreferencesTableName()))) { deleteStatement.setString(1, id.toString()); int deletedCount = deleteStatement.executeUpdate(); @@ -256,8 +262,8 @@ public abstract class AbstractJDBCPreferenceStore implements PreferenceStore { try (Statement dropTableStatement = connection.createStatement()) { - dropTableStatement.execute("DROP TABLE " + PREFERENCES_TABLE_NAME); - dropTableStatement.execute("DROP TABLE " + PREFERENCES_VERSION_TABLE_NAME); + dropTableStatement.execute(String.format("DROP TABLE %s", getPreferencesTableName())); + dropTableStatement.execute(String.format("DROP TABLE %s", getPreferencesVersionTableName())); } catch (SQLException e) { @@ -288,14 +294,16 @@ public abstract class AbstractJDBCPreferenceStore implements PreferenceStore { for (PreferenceRecord record : preferenceRecords) { - try (PreparedStatement stmt = conn.prepareStatement(FIND_PREFERENCE)) + try (PreparedStatement stmt = conn.prepareStatement(String.format(FIND_PREFERENCE, + getPreferencesTableName()))) { stmt.setString(1, record.getId().toString()); try (ResultSet rs = stmt.executeQuery()) { if (rs.next()) { - try (PreparedStatement updateStatement = conn.prepareStatement(UPDATE_PREFERENCES)) + try (PreparedStatement updateStatement = conn.prepareStatement(String.format(UPDATE_PREFERENCES, + getPreferencesTableName()))) { setAttributesAsBlob(updateStatement, 1, record.getAttributes()); updateStatement.setString(2, record.getId().toString()); @@ -304,7 +312,9 @@ public abstract class AbstractJDBCPreferenceStore implements PreferenceStore } else { - try (PreparedStatement insertStatement = conn.prepareStatement(INSERT_INTO_PREFERENCES)) + try (PreparedStatement insertStatement = conn.prepareStatement(String.format( + INSERT_INTO_PREFERENCES, + getPreferencesTableName()))) { insertStatement.setString(1, record.getId().toString()); setAttributesAsBlob(insertStatement, 2, record.getAttributes()); @@ -384,11 +394,11 @@ public abstract class AbstractJDBCPreferenceStore implements PreferenceStore private void createVersionTable(final Connection conn) throws SQLException { - if (!tableExists(PREFERENCES_VERSION_TABLE_NAME, conn)) + if (!tableExists(getPreferencesVersionTableName(), conn)) { try (Statement stmt = conn.createStatement()) { - stmt.execute(CREATE_PREFERENCES_VERSION_TABLE); + stmt.execute(String.format(CREATE_PREFERENCES_VERSION_TABLE, getPreferencesVersionTableName())); } updateVersion(conn, BrokerModel.MODEL_VERSION); @@ -397,7 +407,8 @@ public abstract class AbstractJDBCPreferenceStore implements PreferenceStore private void updateVersion(final Connection conn, final String currentVersion) throws SQLException { - try (PreparedStatement pstmt = conn.prepareStatement(INSERT_INTO_PREFERENCES_VERSION)) + try (PreparedStatement pstmt = conn.prepareStatement(String.format(INSERT_INTO_PREFERENCES_VERSION, + getPreferencesVersionTableName()))) { pstmt.setString(1, currentVersion); pstmt.execute(); @@ -406,12 +417,12 @@ public abstract class AbstractJDBCPreferenceStore implements PreferenceStore private void createPreferencesTable(final Connection conn) throws SQLException { - if (!tableExists(PREFERENCES_TABLE_NAME, conn)) + if (!tableExists(getPreferencesTableName(), conn)) { try (Statement stmt = conn.createStatement()) { stmt.execute("CREATE TABLE " - + PREFERENCES_TABLE_NAME + + getPreferencesTableName() + " ( id VARCHAR(36) not null, attributes " + getSqlBlobType() + ", PRIMARY KEY (id))"); @@ -424,7 +435,8 @@ public abstract class AbstractJDBCPreferenceStore implements PreferenceStore ModelVersion storedVersion = null; try (Statement stmt = conn.createStatement()) { - try (ResultSet rs = stmt.executeQuery(SELECT_FROM_PREFERENCES_VERSION)) + try (ResultSet rs = stmt.executeQuery(String.format(SELECT_FROM_PREFERENCES_VERSION, + getPreferencesVersionTableName()))) { while (rs.next()) { @@ -455,7 +467,8 @@ public abstract class AbstractJDBCPreferenceStore implements PreferenceStore { Collection<PreferenceRecord> records = new LinkedHashSet<>(); final ObjectMapper objectMapper = new ObjectMapper(); - try (PreparedStatement stmt = connection.prepareStatement(SELECT_FROM_PREFERENCES)) + try (PreparedStatement stmt = connection.prepareStatement(String.format(SELECT_FROM_PREFERENCES, + getPreferencesTableName()))) { try (ResultSet rs = stmt.executeQuery()) { @@ -475,6 +488,16 @@ public abstract class AbstractJDBCPreferenceStore implements PreferenceStore return records; } + private String getPreferencesTableName() + { + return _tableNamePrefix + PREFERENCES_TABLE_NAME; + } + + private String getPreferencesVersionTableName() + { + return _tableNamePrefix + PREFERENCES_VERSION_TABLE_NAME; + } + enum StoreState { CLOSED, OPENING, OPENED, CLOSING, ERRORED; http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/192863d3/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/GenericJDBCConfigurationStore.java ---------------------------------------------------------------------- diff --git a/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/GenericJDBCConfigurationStore.java b/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/GenericJDBCConfigurationStore.java index a5f5fe1..af378e7 100644 --- a/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/GenericJDBCConfigurationStore.java +++ b/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/GenericJDBCConfigurationStore.java @@ -51,7 +51,7 @@ public class GenericJDBCConfigurationStore extends AbstractJDBCConfigurationStor private static final Logger LOGGER = LoggerFactory.getLogger(GenericJDBCConfigurationStore.class); private final MessageStore _providedMessageStore = new ProvidedMessageStore(); - private final PreferenceStore _providedPreferenceStore = new ProvidedPreferenceStore(); + private final ProvidedPreferenceStore _providedPreferenceStore = new ProvidedPreferenceStore(); private String _connectionURL; private ConnectionProvider _connectionProvider; @@ -77,6 +77,7 @@ public class GenericJDBCConfigurationStore extends AbstractJDBCConfigurationStor JDBCSettings settings = (JDBCSettings) parent; super.setTableNamePrefix(settings.getTableNamePrefix()); + _providedPreferenceStore.setTableNamePrefix(settings.getTableNamePrefix()); _connectionURL = settings.getConnectionUrl(); JDBCDetails details = JDBCDetails.getDetailsForJdbcUrl(_connectionURL, parent); --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org For additional commands, e-mail: commits-h...@qpid.apache.org