diff options
| author | Andrew MacBean <macbean@apache.org> | 2014-06-26 13:59:36 +0000 |
|---|---|---|
| committer | Andrew MacBean <macbean@apache.org> | 2014-06-26 13:59:36 +0000 |
| commit | ebf13e02e7371a262d96a96a40ff34bbe9f47816 (patch) | |
| tree | 8357c77b840137dbd6bc89f0151cdd469c06b9cc /qpid/java | |
| parent | cb2ad01319b3b812fb1438c2363ba0485b3d1c4f (diff) | |
| download | qpid-python-ebf13e02e7371a262d96a96a40ff34bbe9f47816.tar.gz | |
QPID-5821: [Java Broker] Make JDBC username and password separate attributes within the model
Work done by Keith Wall <kwall@apache.org> and me.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1605787 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java')
13 files changed, 187 insertions, 51 deletions
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/JDBCConnectionProviderFactory.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/JDBCConnectionProviderFactory.java index f2ab47bfbb..14acd59928 100644 --- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/JDBCConnectionProviderFactory.java +++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/JDBCConnectionProviderFactory.java @@ -26,6 +26,7 @@ import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.Map; +import java.util.Set; import org.apache.qpid.server.model.ConfiguredObject; import org.apache.qpid.server.store.jdbc.ConnectionProvider; @@ -34,28 +35,10 @@ public interface JDBCConnectionProviderFactory extends Pluggable { String getType(); - ConnectionProvider getConnectionProvider(ConfiguredObject<?> parent, String connectionUrl) + ConnectionProvider getConnectionProvider(String connectionUrl, String username, String password, Map<String, String> providerAttributes) throws SQLException; - static final class TYPES - { - private TYPES() - { - } - - public static Collection<String> get() - { - QpidServiceLoader<JDBCConnectionProviderFactory> qpidServiceLoader = new QpidServiceLoader<JDBCConnectionProviderFactory>(); - Iterable<JDBCConnectionProviderFactory> factories = qpidServiceLoader.atLeastOneInstanceOf(JDBCConnectionProviderFactory.class); - List<String> names = new ArrayList<String>(); - for(JDBCConnectionProviderFactory factory : factories) - { - names.add(factory.getType()); - } - return Collections.unmodifiableCollection(names); - } - } - + Set<String> getProviderAttributeNames(); static final class FACTORIES { diff --git a/qpid/java/broker-plugins/jdbc-provider-bone/src/main/java/org/apache/qpid/server/store/jdbc/bonecp/BoneCPConnectionProvider.java b/qpid/java/broker-plugins/jdbc-provider-bone/src/main/java/org/apache/qpid/server/store/jdbc/bonecp/BoneCPConnectionProvider.java index 75efababc0..2687a32bf9 100644 --- a/qpid/java/broker-plugins/jdbc-provider-bone/src/main/java/org/apache/qpid/server/store/jdbc/bonecp/BoneCPConnectionProvider.java +++ b/qpid/java/broker-plugins/jdbc-provider-bone/src/main/java/org/apache/qpid/server/store/jdbc/bonecp/BoneCPConnectionProvider.java @@ -20,9 +20,12 @@ */ package org.apache.qpid.server.store.jdbc.bonecp; +import static org.apache.qpid.server.store.jdbc.bonecp.BoneCPConnectionProviderFactory.MAX_CONNECTIONS_PER_PARTITION; +import static org.apache.qpid.server.store.jdbc.bonecp.BoneCPConnectionProviderFactory.MIN_CONNECTIONS_PER_PARTITION; +import static org.apache.qpid.server.store.jdbc.bonecp.BoneCPConnectionProviderFactory.PARTITION_COUNT; + import com.jolbox.bonecp.BoneCP; import com.jolbox.bonecp.BoneCPConfig; -import org.apache.qpid.server.model.ConfiguredObject; import org.apache.qpid.server.store.jdbc.ConnectionProvider; import java.sql.Connection; @@ -31,32 +34,30 @@ import java.util.Map; public class BoneCPConnectionProvider implements ConnectionProvider { - public static final String PARTITION_COUNT = "qpid.jdbcstore.bonecp.partitionCount"; - public static final String MAX_CONNECTIONS_PER_PARTITION = "qpid.jdbcstore.bonecp.maxConnectionsPerPartition"; - public static final String MIN_CONNECTIONS_PER_PARTITION = "qpid.jdbcstore.bonecp.minConnectionsPerPartition"; - - public static final int DEFAULT_MIN_CONNECTIONS_PER_PARTITION = 5; public static final int DEFAULT_MAX_CONNECTIONS_PER_PARTITION = 10; public static final int DEFAULT_PARTITION_COUNT = 4; private final BoneCP _connectionPool; - public BoneCPConnectionProvider(String connectionUrl, ConfiguredObject<?> storeSettings) throws SQLException + public BoneCPConnectionProvider(String connectionUrl, String username, String password, Map<String, String> providerAttributes) throws SQLException { - // TODO change interface to pass through username and password BoneCPConfig config = new BoneCPConfig(); config.setJdbcUrl(connectionUrl); - Map<String, String> context = storeSettings.getContext(); + if (username != null) + { + config.setUsername(username); + config.setPassword(password); + } - config.setMinConnectionsPerPartition(getContextValueAsInt(MIN_CONNECTIONS_PER_PARTITION, context, DEFAULT_MIN_CONNECTIONS_PER_PARTITION)); - config.setMaxConnectionsPerPartition(getContextValueAsInt(MAX_CONNECTIONS_PER_PARTITION, context, DEFAULT_MAX_CONNECTIONS_PER_PARTITION)); - config.setPartitionCount(getContextValueAsInt(PARTITION_COUNT, context, DEFAULT_PARTITION_COUNT)); + config.setMinConnectionsPerPartition(convertToIntWithDefault(MIN_CONNECTIONS_PER_PARTITION, providerAttributes, DEFAULT_MIN_CONNECTIONS_PER_PARTITION)); + config.setMaxConnectionsPerPartition(convertToIntWithDefault(MAX_CONNECTIONS_PER_PARTITION, providerAttributes, DEFAULT_MAX_CONNECTIONS_PER_PARTITION)); + config.setPartitionCount(convertToIntWithDefault(PARTITION_COUNT, providerAttributes, DEFAULT_PARTITION_COUNT)); _connectionPool = new BoneCP(config); } - private int getContextValueAsInt(String key, Map<String, String> context, int defaultValue) + private int convertToIntWithDefault(String key, Map<String, String> context, int defaultValue) { if (context.containsKey(key)) { diff --git a/qpid/java/broker-plugins/jdbc-provider-bone/src/main/java/org/apache/qpid/server/store/jdbc/bonecp/BoneCPConnectionProviderFactory.java b/qpid/java/broker-plugins/jdbc-provider-bone/src/main/java/org/apache/qpid/server/store/jdbc/bonecp/BoneCPConnectionProviderFactory.java index e7dc8bd16c..f894a6a27a 100644 --- a/qpid/java/broker-plugins/jdbc-provider-bone/src/main/java/org/apache/qpid/server/store/jdbc/bonecp/BoneCPConnectionProviderFactory.java +++ b/qpid/java/broker-plugins/jdbc-provider-bone/src/main/java/org/apache/qpid/server/store/jdbc/bonecp/BoneCPConnectionProviderFactory.java @@ -20,25 +20,42 @@ */ package org.apache.qpid.server.store.jdbc.bonecp; -import java.sql.SQLException; +import static java.util.Arrays.asList; +import static java.util.Collections.unmodifiableSet; -import org.apache.qpid.server.model.ConfiguredObject; import org.apache.qpid.server.plugin.JDBCConnectionProviderFactory; import org.apache.qpid.server.plugin.PluggableService; import org.apache.qpid.server.store.jdbc.ConnectionProvider; +import java.sql.SQLException; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + @PluggableService public class BoneCPConnectionProviderFactory implements JDBCConnectionProviderFactory { + public static final String PARTITION_COUNT = "qpid.jdbcstore.bonecp.partitionCount"; + public static final String MAX_CONNECTIONS_PER_PARTITION = "qpid.jdbcstore.bonecp.maxConnectionsPerPartition"; + public static final String MIN_CONNECTIONS_PER_PARTITION = "qpid.jdbcstore.bonecp.minConnectionsPerPartition"; + + private final Set<String> _supportedAttributes = unmodifiableSet(new HashSet<String>(asList(PARTITION_COUNT, MAX_CONNECTIONS_PER_PARTITION, MIN_CONNECTIONS_PER_PARTITION))); + @Override public String getType() { return "BONECP"; } - public ConnectionProvider getConnectionProvider(ConfiguredObject<?> parent, String connectionUrl) + public ConnectionProvider getConnectionProvider(String connectionUrl, String username, String password, Map<String, String> providerAttributes) throws SQLException { - return new BoneCPConnectionProvider(connectionUrl, parent); + return new BoneCPConnectionProvider(connectionUrl, username, password, providerAttributes); + } + + @Override + public Set<String> getProviderAttributeNames() + { + return _supportedAttributes; } } diff --git a/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/DefaultConnectionProvider.java b/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/DefaultConnectionProvider.java index 7945ae3b46..a96d46af18 100644 --- a/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/DefaultConnectionProvider.java +++ b/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/DefaultConnectionProvider.java @@ -27,16 +27,27 @@ import java.sql.SQLException; class DefaultConnectionProvider implements ConnectionProvider { private final String _connectionUrl; + private final String _username; + private final String _password; - public DefaultConnectionProvider(String connectionUrl) + public DefaultConnectionProvider(String connectionUrl, String username, String password) { _connectionUrl = connectionUrl; + _username = username; + _password = password; } @Override public Connection getConnection() throws SQLException { - return DriverManager.getConnection(_connectionUrl); + if (_username == null) + { + return DriverManager.getConnection(_connectionUrl); + } + else + { + return DriverManager.getConnection(_connectionUrl, _username, _password); + } } @Override diff --git a/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/DefaultConnectionProviderFactory.java b/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/DefaultConnectionProviderFactory.java index 2d8eec2021..9e10c54f7e 100644 --- a/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/DefaultConnectionProviderFactory.java +++ b/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/DefaultConnectionProviderFactory.java @@ -20,14 +20,16 @@ */ package org.apache.qpid.server.store.jdbc; -import org.apache.qpid.server.model.ConfiguredObject; import org.apache.qpid.server.plugin.JDBCConnectionProviderFactory; import org.apache.qpid.server.plugin.PluggableService; +import java.util.Collections; +import java.util.Map; +import java.util.Set; + @PluggableService public class DefaultConnectionProviderFactory implements JDBCConnectionProviderFactory { - public static final String TYPE = "DEFAULT"; @Override @@ -37,9 +39,15 @@ public class DefaultConnectionProviderFactory implements JDBCConnectionProviderF } @Override - public ConnectionProvider getConnectionProvider(ConfiguredObject<?> parent, String connectionUrl) + public ConnectionProvider getConnectionProvider(String connectionUrl, String username, String password, Map<String, String> providerAttributes) + { + return new DefaultConnectionProvider(connectionUrl, username, password); + } + + @Override + public Set<String> getProviderAttributeNames() { - return new DefaultConnectionProvider(connectionUrl); + return Collections.emptySet(); } } diff --git a/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/GenericJDBCConfigurationStore.java b/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/GenericJDBCConfigurationStore.java index 479ebd953b..ed25d97af0 100644 --- a/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/GenericJDBCConfigurationStore.java +++ b/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/GenericJDBCConfigurationStore.java @@ -20,18 +20,24 @@ package org.apache.qpid.server.store.jdbc; import java.nio.charset.Charset; +import java.security.PrivilegedAction; import java.sql.Blob; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; +import java.util.HashMap; +import java.util.Map; import java.util.concurrent.atomic.AtomicBoolean; import org.apache.log4j.Logger; import org.apache.qpid.server.model.ConfiguredObject; import org.apache.qpid.server.plugin.JDBCConnectionProviderFactory; +import org.apache.qpid.server.security.SecurityManager; import org.apache.qpid.server.store.*; +import javax.security.auth.Subject; + /** * Implementation of a DurableConfigurationStore backed by Generic JDBC Database * that also provides a MessageStore. @@ -93,11 +99,18 @@ public class GenericJDBCConfigurationStore extends AbstractJDBCConfigurationStor try { - _connectionProvider = connectionProviderFactory.getConnectionProvider(parent, _connectionURL); + Map<String, String> providerAttributes = new HashMap(_parent.getContext()); + providerAttributes.keySet().retainAll(connectionProviderFactory.getProviderAttributeNames()); + + _connectionProvider = connectionProviderFactory.getConnectionProvider(_connectionURL, + settings.getUsername(), + getPlainTextPassword(settings), + providerAttributes); } catch (SQLException e) { - throw new StoreException("Failed to create connection provider for " + _connectionURL); + throw new StoreException("Failed to create connection provider for connectionUrl: " + _connectionURL + + " and username: " + settings.getUsername()); } _blobType = details.getBlobType(); _varBinaryType = details.getVarBinaryType(); @@ -212,6 +225,18 @@ public class GenericJDBCConfigurationStore extends AbstractJDBCConfigurationStor return _providedMessageStore; } + protected String getPlainTextPassword(final JDBCSettings settings) + { + return Subject.doAs(SecurityManager.getSubjectWithAddedSystemRights(), new PrivilegedAction<String>() + { + @Override + public String run() + { + return settings.getPassword(); + } + }); + } + private class ProvidedMessageStore extends GenericAbstractJDBCMessageStore { @Override diff --git a/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/GenericJDBCMessageStore.java b/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/GenericJDBCMessageStore.java index aa8964f84f..4fde0a44c7 100644 --- a/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/GenericJDBCMessageStore.java +++ b/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/GenericJDBCMessageStore.java @@ -21,17 +21,23 @@ package org.apache.qpid.server.store.jdbc; +import java.security.PrivilegedAction; import java.sql.Blob; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; +import java.util.HashMap; +import java.util.Map; import org.apache.log4j.Logger; import org.apache.qpid.server.model.ConfiguredObject; import org.apache.qpid.server.plugin.JDBCConnectionProviderFactory; +import org.apache.qpid.server.security.SecurityManager; import org.apache.qpid.server.store.StoreException; +import javax.security.auth.Subject; + /** * Implementation of a MessageStore backed by a Generic JDBC Database. */ @@ -84,12 +90,19 @@ public class GenericJDBCMessageStore extends GenericAbstractJDBCMessageStore try { - // TODO: Pass parent to the connenction provider? - _connectionProvider = connectionProviderFactory.getConnectionProvider(parent, _connectionURL); + Map<String, String> providerAttributes = new HashMap(parent.getContext()); + providerAttributes.keySet().retainAll(connectionProviderFactory.getProviderAttributeNames()); + + + _connectionProvider = connectionProviderFactory.getConnectionProvider(_connectionURL, + settings.getUsername(), + getPlainTextPassword(settings), + providerAttributes); } catch (SQLException e) { - throw new StoreException("Failed to create connection provider for " + _connectionURL); + throw new StoreException("Failed to create connection provider for connectionUrl: " + _connectionURL + + " and username: " + settings.getUsername()); } } @@ -158,4 +171,15 @@ public class GenericJDBCMessageStore extends GenericAbstractJDBCMessageStore return _connectionURL; } + protected String getPlainTextPassword(final JDBCSettings settings) + { + return Subject.doAs(SecurityManager.getSubjectWithAddedSystemRights(), new PrivilegedAction<String>() + { + @Override + public String run() + { + return settings.getPassword(); + } + }); + } } diff --git a/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/JDBCSettings.java b/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/JDBCSettings.java index 3f3b53eb06..d784ece0e4 100644 --- a/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/JDBCSettings.java +++ b/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/JDBCSettings.java @@ -26,4 +26,8 @@ public interface JDBCSettings extends Settings String getConnectionUrl(); String getConnectionPoolType(); + + String getUsername(); + + String getPassword(); } diff --git a/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhost/jdbc/JDBCVirtualHost.java b/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhost/jdbc/JDBCVirtualHost.java index 9f794ac707..8608848d98 100644 --- a/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhost/jdbc/JDBCVirtualHost.java +++ b/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhost/jdbc/JDBCVirtualHost.java @@ -32,7 +32,12 @@ public interface JDBCVirtualHost<X extends JDBCVirtualHost<X>> extends VirtualHo @ManagedAttribute(mandatory=true) String getConnectionUrl(); - @ManagedAttribute(defaultValue= DefaultConnectionProviderFactory.TYPE) + @ManagedAttribute(defaultValue=DefaultConnectionProviderFactory.TYPE) String getConnectionPoolType(); + @ManagedAttribute + String getUsername(); + + @ManagedAttribute(secure=true) + String getPassword(); } diff --git a/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhost/jdbc/JDBCVirtualHostImpl.java b/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhost/jdbc/JDBCVirtualHostImpl.java index f4e597c6a1..434e887596 100644 --- a/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhost/jdbc/JDBCVirtualHostImpl.java +++ b/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhost/jdbc/JDBCVirtualHostImpl.java @@ -41,6 +41,12 @@ public class JDBCVirtualHostImpl extends AbstractVirtualHost<JDBCVirtualHostImpl @ManagedAttributeField private String _connectionPoolType; + @ManagedAttributeField + private String _username; + + @ManagedAttributeField + private String _password; + @ManagedObjectFactoryConstructor public JDBCVirtualHostImpl(final Map<String, Object> attributes, final VirtualHostNode<?> virtualHostNode) @@ -65,4 +71,25 @@ public class JDBCVirtualHostImpl extends AbstractVirtualHost<JDBCVirtualHostImpl { return _connectionPoolType; } + + @Override + public String getUsername() + { + return _username; + } + + @Override + public String getPassword() + { + return _password; + } + + @Override + public String toString() + { + return getClass().getSimpleName() + " [id=" + getId() + ", name=" + getName() + + ", connectionUrl=" + getConnectionUrl() + + ", connectionPoolType=" + getConnectionPoolType() + + ", username=" + getUsername() + "]"; + } } diff --git a/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhostnode/jdbc/JDBCVirtualHostNode.java b/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhostnode/jdbc/JDBCVirtualHostNode.java index a649dc1048..0ac75b3877 100644 --- a/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhostnode/jdbc/JDBCVirtualHostNode.java +++ b/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhostnode/jdbc/JDBCVirtualHostNode.java @@ -27,12 +27,15 @@ import org.apache.qpid.server.store.jdbc.JDBCSettings; public interface JDBCVirtualHostNode<X extends JDBCVirtualHostNode<X>> extends VirtualHostNode<X>, JDBCSettings { - //TODO: Split this attribute into connectionUrl, username and password. Make the password attribute secure. @ManagedAttribute(mandatory=true) String getConnectionUrl(); @ManagedAttribute(defaultValue=DefaultConnectionProviderFactory.TYPE) String getConnectionPoolType(); - //add username and passwd managed attrs + @ManagedAttribute + String getUsername(); + + @ManagedAttribute(secure=true) + String getPassword(); } diff --git a/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhostnode/jdbc/JDBCVirtualHostNodeImpl.java b/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhostnode/jdbc/JDBCVirtualHostNodeImpl.java index 0c51d397bf..01acb9e0b5 100644 --- a/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhostnode/jdbc/JDBCVirtualHostNodeImpl.java +++ b/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhostnode/jdbc/JDBCVirtualHostNodeImpl.java @@ -41,6 +41,12 @@ public class JDBCVirtualHostNodeImpl extends AbstractStandardVirtualHostNode<JDB @ManagedAttributeField private String _connectionPoolType; + @ManagedAttributeField + private String _username; + + @ManagedAttributeField + private String _password; + @ManagedObjectFactoryConstructor public JDBCVirtualHostNodeImpl(Map<String, Object> attributes, Broker<?> parent) { @@ -70,4 +76,24 @@ public class JDBCVirtualHostNodeImpl extends AbstractStandardVirtualHostNode<JDB return _connectionPoolType; } + @Override + public String getUsername() + { + return _username; + } + + @Override + public String getPassword() + { + return _password; + } + + @Override + public String toString() + { + return getClass().getSimpleName() + " [id=" + getId() + ", name=" + getName() + + ", connectionUrl=" + getConnectionUrl() + + ", connectionPoolType=" + getConnectionPoolType() + + ", username=" + getUsername() + "]"; + } } diff --git a/qpid/java/broker-plugins/jdbc-store/src/test/java/org/apache/qpid/server/store/jdbc/JDBCMessageStoreTest.java b/qpid/java/broker-plugins/jdbc-store/src/test/java/org/apache/qpid/server/store/jdbc/JDBCMessageStoreTest.java index 3f48a8fc5a..207c5a8325 100644 --- a/qpid/java/broker-plugins/jdbc-store/src/test/java/org/apache/qpid/server/store/jdbc/JDBCMessageStoreTest.java +++ b/qpid/java/broker-plugins/jdbc-store/src/test/java/org/apache/qpid/server/store/jdbc/JDBCMessageStoreTest.java @@ -70,6 +70,8 @@ public class JDBCMessageStoreTest extends MessageStoreTestCase final JDBCVirtualHost jdbcVirtualHost = mock(JDBCVirtualHost.class); when(jdbcVirtualHost.getConnectionUrl()).thenReturn(_connectionURL); + when(jdbcVirtualHost.getUsername()).thenReturn("test"); + when(jdbcVirtualHost.getPassword()).thenReturn("pass"); return jdbcVirtualHost; } |
