summaryrefslogtreecommitdiff
path: root/qpid/java/broker-plugins/jdbc-store
diff options
context:
space:
mode:
authorRobert Godfrey <rgodfrey@apache.org>2014-07-28 10:41:14 +0000
committerRobert Godfrey <rgodfrey@apache.org>2014-07-28 10:41:14 +0000
commitb877fef68695499fc63c1d0aef19cd1415981052 (patch)
treed3cf766e3c9641c3cc0e1841d95e9686b2ce81ed /qpid/java/broker-plugins/jdbc-store
parentb71bbd227dfacaedaba411e908853b05e8fbd243 (diff)
downloadqpid-python-b877fef68695499fc63c1d0aef19cd1415981052.tar.gz
QPID-5930 : [Java Broker] Minimize memory footprint for persistent messages
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1613950 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/broker-plugins/jdbc-store')
-rw-r--r--qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/GenericJDBCConfigurationStore.java12
-rw-r--r--qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/GenericJDBCMessageStore.java17
-rw-r--r--qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/JDBCDetails.java76
3 files changed, 95 insertions, 10 deletions
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 4f88e011fb..9453c135e9 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
@@ -27,6 +27,7 @@ import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
+import java.util.Set;
import java.util.concurrent.atomic.AtomicBoolean;
import javax.security.auth.Subject;
@@ -84,7 +85,7 @@ public class GenericJDBCConfigurationStore extends AbstractJDBCConfigurationStor
JDBCSettings settings = (JDBCSettings)parent;
_connectionURL = settings.getConnectionUrl();
- JDBCDetails details = JDBCDetails.getDetailsForJdbcUrl(_connectionURL, parent.getContext());
+ JDBCDetails details = JDBCDetails.getDetailsForJdbcUrl(_connectionURL, parent);
if (!details.isKnownVendor() && getLogger().isInfoEnabled())
{
@@ -111,8 +112,13 @@ public class GenericJDBCConfigurationStore extends AbstractJDBCConfigurationStor
try
{
- Map<String, String> providerAttributes = new HashMap(_parent.getContext());
- providerAttributes.keySet().retainAll(connectionProviderFactory.getProviderAttributeNames());
+ Map<String, String> providerAttributes = new HashMap<>();
+ Set<String> providerAttributeNames = connectionProviderFactory.getProviderAttributeNames();
+ providerAttributeNames.retainAll(parent.getContextKeys());
+ for(String attr : providerAttributeNames)
+ {
+ providerAttributes.put(attr, parent.getContextValue(String.class, attr));
+ }
_connectionProvider = connectionProviderFactory.getConnectionProvider(_connectionURL,
settings.getUsername(),
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 4fde0a44c7..3304d01d86 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
@@ -28,6 +28,9 @@ import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
+import java.util.Set;
+
+import javax.security.auth.Subject;
import org.apache.log4j.Logger;
@@ -36,8 +39,6 @@ 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.
*/
@@ -60,7 +61,7 @@ public class GenericJDBCMessageStore extends GenericAbstractJDBCMessageStore
JDBCSettings settings = (JDBCSettings)parent;
_connectionURL = settings.getConnectionUrl();
- JDBCDetails details = JDBCDetails.getDetailsForJdbcUrl(_connectionURL, parent.getContext());
+ JDBCDetails details = JDBCDetails.getDetailsForJdbcUrl(_connectionURL, parent);
if (!details.isKnownVendor() && getLogger().isInfoEnabled())
{
@@ -90,9 +91,13 @@ public class GenericJDBCMessageStore extends GenericAbstractJDBCMessageStore
try
{
- Map<String, String> providerAttributes = new HashMap(parent.getContext());
- providerAttributes.keySet().retainAll(connectionProviderFactory.getProviderAttributeNames());
-
+ Map<String, String> providerAttributes = new HashMap<>();
+ Set<String> providerAttributeNames = connectionProviderFactory.getProviderAttributeNames();
+ providerAttributeNames.retainAll(parent.getContextKeys());
+ for(String attr : providerAttributeNames)
+ {
+ providerAttributes.put(attr, parent.getContextValue(String.class, attr));
+ }
_connectionProvider = connectionProviderFactory.getConnectionProvider(_connectionURL,
settings.getUsername(),
diff --git a/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/JDBCDetails.java b/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/JDBCDetails.java
index a74f852dfa..8cd4996033 100644
--- a/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/JDBCDetails.java
+++ b/qpid/java/broker-plugins/jdbc-store/src/main/java/org/apache/qpid/server/store/jdbc/JDBCDetails.java
@@ -19,9 +19,15 @@
package org.apache.qpid.server.store.jdbc;
+import java.util.AbstractMap;
+import java.util.AbstractSet;
import java.util.Collections;
import java.util.HashMap;
+import java.util.Iterator;
import java.util.Map;
+import java.util.Set;
+
+import org.apache.qpid.server.model.ConfiguredObject;
public abstract class JDBCDetails
{
@@ -216,7 +222,75 @@ public abstract class JDBCDetails
return result;
}
-
+ public static JDBCDetails getDetailsForJdbcUrl(String jdbcUrl, final ConfiguredObject<?> object)
+ {
+ final Set<String> contextKeys = object.getContextKeys();
+ Map<String,String> mapConversion = new AbstractMap<String, String>()
+ {
+ @Override
+ public Set<Entry<String, String>> entrySet()
+ {
+ return new AbstractSet<Entry<String, String>>()
+ {
+ @Override
+ public Iterator<Entry<String, String>> iterator()
+ {
+ final Iterator<String> underlying = contextKeys.iterator();
+ return new Iterator<Entry<String, String>>()
+ {
+ @Override
+ public boolean hasNext()
+ {
+ return underlying.hasNext();
+ }
+
+ @Override
+ public Entry<String, String> next()
+ {
+ final String key = underlying.next();
+ final String value = object.getContextValue(String.class, key);
+ return new Entry<String,String>()
+ {
+
+ @Override
+ public String getKey()
+ {
+ return key;
+ }
+
+ @Override
+ public String getValue()
+ {
+ return value;
+ }
+
+ @Override
+ public String setValue(final String value)
+ {
+ throw new UnsupportedOperationException();
+ }
+ };
+
+ }
+
+ @Override
+ public void remove()
+ {
+ throw new UnsupportedOperationException();
+ }
+ };
+ }
+
+ @Override
+ public int size()
+ {
+ return contextKeys.size();
+ }
+ };
+ }
+ };
+ return getDetailsForJdbcUrl(jdbcUrl, mapConversion);
+ }
public static JDBCDetails getDetailsForJdbcUrl(String jdbcUrl, final Map<String, String> contextMap)
{
String[] components = jdbcUrl.split(":", 3);