Author: macbean
Date: Thu Jun 26 13:59:36 2014
New Revision: 1605787

URL: http://svn.apache.org/r1605787
Log:
QPID-5821: [Java Broker] Make JDBC username and password separate attributes 
within the model

Work done by Keith Wall <[email protected]> and me.

Modified:
    
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/JDBCConnectionProviderFactory.java
    
qpid/trunk/qpid/java/broker-plugins/jdbc-provider-bone/src/main/java/org/apache/qpid/server/store/jdbc/bonecp/BoneCPConnectionProvider.java
    
qpid/trunk/qpid/java/broker-plugins/jdbc-provider-bone/src/main/java/org/apache/qpid/server/store/jdbc/bonecp/BoneCPConnectionProviderFactory.java
    
qpid/trunk/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/DefaultConnectionProvider.java
    
qpid/trunk/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/DefaultConnectionProviderFactory.java
    
qpid/trunk/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/GenericJDBCConfigurationStore.java
    
qpid/trunk/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/GenericJDBCMessageStore.java
    
qpid/trunk/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/JDBCSettings.java
    
qpid/trunk/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhost/jdbc/JDBCVirtualHost.java
    
qpid/trunk/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhost/jdbc/JDBCVirtualHostImpl.java
    
qpid/trunk/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhostnode/jdbc/JDBCVirtualHostNode.java
    
qpid/trunk/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhostnode/jdbc/JDBCVirtualHostNodeImpl.java
    
qpid/trunk/qpid/java/broker-plugins/jdbc-store/src/test/java/org/apache/qpid/server/store/jdbc/JDBCMessageStoreTest.java

Modified: 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/JDBCConnectionProviderFactory.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/JDBCConnectionProviderFactory.java?rev=1605787&r1=1605786&r2=1605787&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/JDBCConnectionProviderFactory.java
 (original)
+++ 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/plugin/JDBCConnectionProviderFactory.java
 Thu Jun 26 13:59:36 2014
@@ -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 JDBCConnectionProviderF
 {
     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
     {

Modified: 
qpid/trunk/qpid/java/broker-plugins/jdbc-provider-bone/src/main/java/org/apache/qpid/server/store/jdbc/bonecp/BoneCPConnectionProvider.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/jdbc-provider-bone/src/main/java/org/apache/qpid/server/store/jdbc/bonecp/BoneCPConnectionProvider.java?rev=1605787&r1=1605786&r2=1605787&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker-plugins/jdbc-provider-bone/src/main/java/org/apache/qpid/server/store/jdbc/bonecp/BoneCPConnectionProvider.java
 (original)
+++ 
qpid/trunk/qpid/java/broker-plugins/jdbc-provider-bone/src/main/java/org/apache/qpid/server/store/jdbc/bonecp/BoneCPConnectionProvider.java
 Thu Jun 26 13:59:36 2014
@@ -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))
         {

Modified: 
qpid/trunk/qpid/java/broker-plugins/jdbc-provider-bone/src/main/java/org/apache/qpid/server/store/jdbc/bonecp/BoneCPConnectionProviderFactory.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/jdbc-provider-bone/src/main/java/org/apache/qpid/server/store/jdbc/bonecp/BoneCPConnectionProviderFactory.java?rev=1605787&r1=1605786&r2=1605787&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker-plugins/jdbc-provider-bone/src/main/java/org/apache/qpid/server/store/jdbc/bonecp/BoneCPConnectionProviderFactory.java
 (original)
+++ 
qpid/trunk/qpid/java/broker-plugins/jdbc-provider-bone/src/main/java/org/apache/qpid/server/store/jdbc/bonecp/BoneCPConnectionProviderFactory.java
 Thu Jun 26 13:59:36 2014
@@ -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;
     }
 }

Modified: 
qpid/trunk/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/DefaultConnectionProvider.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/DefaultConnectionProvider.java?rev=1605787&r1=1605786&r2=1605787&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/DefaultConnectionProvider.java
 (original)
+++ 
qpid/trunk/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/DefaultConnectionProvider.java
 Thu Jun 26 13:59:36 2014
@@ -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

Modified: 
qpid/trunk/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/DefaultConnectionProviderFactory.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/DefaultConnectionProviderFactory.java?rev=1605787&r1=1605786&r2=1605787&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/DefaultConnectionProviderFactory.java
 (original)
+++ 
qpid/trunk/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/DefaultConnectionProviderFactory.java
 Thu Jun 26 13:59:36 2014
@@ -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 DefaultConnectionProviderFa
     }
 
     @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();
     }
 
 }

Modified: 
qpid/trunk/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/GenericJDBCConfigurationStore.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/GenericJDBCConfigurationStore.java?rev=1605787&r1=1605786&r2=1605787&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/GenericJDBCConfigurationStore.java
 (original)
+++ 
qpid/trunk/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/GenericJDBCConfigurationStore.java
 Thu Jun 26 13:59:36 2014
@@ -20,18 +20,24 @@ package org.apache.qpid.server.store.jdb
 
 
 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 GenericJDBCConfigurationSto
 
             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 GenericJDBCConfigurationSto
         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

Modified: 
qpid/trunk/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/GenericJDBCMessageStore.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/GenericJDBCMessageStore.java?rev=1605787&r1=1605786&r2=1605787&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/GenericJDBCMessageStore.java
 (original)
+++ 
qpid/trunk/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/GenericJDBCMessageStore.java
 Thu Jun 26 13:59:36 2014
@@ -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 ext
 
         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 ext
         return _connectionURL;
     }
 
+    protected String getPlainTextPassword(final JDBCSettings settings)
+    {
+        return Subject.doAs(SecurityManager.getSubjectWithAddedSystemRights(), 
new PrivilegedAction<String>()
+        {
+            @Override
+            public String run()
+            {
+                return settings.getPassword();
+            }
+        });
+    }
 }

Modified: 
qpid/trunk/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/JDBCSettings.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/JDBCSettings.java?rev=1605787&r1=1605786&r2=1605787&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/JDBCSettings.java
 (original)
+++ 
qpid/trunk/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/JDBCSettings.java
 Thu Jun 26 13:59:36 2014
@@ -26,4 +26,8 @@ public interface JDBCSettings extends Se
     String getConnectionUrl();
 
     String getConnectionPoolType();
+
+    String getUsername();
+
+    String getPassword();
 }

Modified: 
qpid/trunk/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhost/jdbc/JDBCVirtualHost.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhost/jdbc/JDBCVirtualHost.java?rev=1605787&r1=1605786&r2=1605787&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhost/jdbc/JDBCVirtualHost.java
 (original)
+++ 
qpid/trunk/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhost/jdbc/JDBCVirtualHost.java
 Thu Jun 26 13:59:36 2014
@@ -32,7 +32,12 @@ public interface JDBCVirtualHost<X exten
     @ManagedAttribute(mandatory=true)
     String getConnectionUrl();
 
-    @ManagedAttribute(defaultValue= DefaultConnectionProviderFactory.TYPE)
+    @ManagedAttribute(defaultValue=DefaultConnectionProviderFactory.TYPE)
     String getConnectionPoolType();
 
+    @ManagedAttribute
+    String getUsername();
+
+    @ManagedAttribute(secure=true)
+    String getPassword();
 }

Modified: 
qpid/trunk/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhost/jdbc/JDBCVirtualHostImpl.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhost/jdbc/JDBCVirtualHostImpl.java?rev=1605787&r1=1605786&r2=1605787&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhost/jdbc/JDBCVirtualHostImpl.java
 (original)
+++ 
qpid/trunk/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhost/jdbc/JDBCVirtualHostImpl.java
 Thu Jun 26 13:59:36 2014
@@ -41,6 +41,12 @@ public class JDBCVirtualHostImpl extends
     @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
     {
         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() + "]";
+    }
 }

Modified: 
qpid/trunk/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhostnode/jdbc/JDBCVirtualHostNode.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhostnode/jdbc/JDBCVirtualHostNode.java?rev=1605787&r1=1605786&r2=1605787&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhostnode/jdbc/JDBCVirtualHostNode.java
 (original)
+++ 
qpid/trunk/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhostnode/jdbc/JDBCVirtualHostNode.java
 Thu Jun 26 13:59:36 2014
@@ -27,12 +27,15 @@ import org.apache.qpid.server.store.jdbc
 
 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();
 }

Modified: 
qpid/trunk/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhostnode/jdbc/JDBCVirtualHostNodeImpl.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhostnode/jdbc/JDBCVirtualHostNodeImpl.java?rev=1605787&r1=1605786&r2=1605787&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhostnode/jdbc/JDBCVirtualHostNodeImpl.java
 (original)
+++ 
qpid/trunk/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/virtualhostnode/jdbc/JDBCVirtualHostNodeImpl.java
 Thu Jun 26 13:59:36 2014
@@ -41,6 +41,12 @@ public class JDBCVirtualHostNodeImpl ext
     @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 ext
         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() + "]";
+    }
 }

Modified: 
qpid/trunk/qpid/java/broker-plugins/jdbc-store/src/test/java/org/apache/qpid/server/store/jdbc/JDBCMessageStoreTest.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-plugins/jdbc-store/src/test/java/org/apache/qpid/server/store/jdbc/JDBCMessageStoreTest.java?rev=1605787&r1=1605786&r2=1605787&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker-plugins/jdbc-store/src/test/java/org/apache/qpid/server/store/jdbc/JDBCMessageStoreTest.java
 (original)
+++ 
qpid/trunk/qpid/java/broker-plugins/jdbc-store/src/test/java/org/apache/qpid/server/store/jdbc/JDBCMessageStoreTest.java
 Thu Jun 26 13:59:36 2014
@@ -70,6 +70,8 @@ public class JDBCMessageStoreTest extend
 
         final JDBCVirtualHost jdbcVirtualHost = mock(JDBCVirtualHost.class);
         when(jdbcVirtualHost.getConnectionUrl()).thenReturn(_connectionURL);
+        when(jdbcVirtualHost.getUsername()).thenReturn("test");
+        when(jdbcVirtualHost.getPassword()).thenReturn("pass");
         return jdbcVirtualHost;
     }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to