summaryrefslogtreecommitdiff
path: root/java/broker/src
diff options
context:
space:
mode:
authorRobert Gemmell <robbie@apache.org>2010-01-04 18:12:57 +0000
committerRobert Gemmell <robbie@apache.org>2010-01-04 18:12:57 +0000
commita3d4e1299c52e9d0625b05a0efb6d3c849b84a94 (patch)
tree6745e20fba4270659304792d3ea61d39c16aa848 /java/broker/src
parent94081207a4cf896db5da007b42335b4f05accbbf (diff)
downloadqpid-python-a3d4e1299c52e9d0625b05a0efb6d3c849b84a94.tar.gz
QPID-2096: decouple the addition of durable exchanges to the store from exchange registration. Remove auto-delete related persistence restriction from 0-10 based exchange declarations
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@895735 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java/broker/src')
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/AMQBrokerManagerMBean.java4
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/exchange/DefaultExchangeRegistry.java6
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/exchange/ExchangeInitialiser.java17
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/handler/ExchangeDeclareHandler.java5
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/transport/ServerSessionDelegate.java2
-rw-r--r--java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java5
-rw-r--r--java/broker/src/test/java/org/apache/qpid/server/store/MessageStoreTest.java4
7 files changed, 32 insertions, 11 deletions
diff --git a/java/broker/src/main/java/org/apache/qpid/server/AMQBrokerManagerMBean.java b/java/broker/src/main/java/org/apache/qpid/server/AMQBrokerManagerMBean.java
index 08b3c08215..de1b69b0a4 100644
--- a/java/broker/src/main/java/org/apache/qpid/server/AMQBrokerManagerMBean.java
+++ b/java/broker/src/main/java/org/apache/qpid/server/AMQBrokerManagerMBean.java
@@ -203,6 +203,10 @@ public class AMQBrokerManagerMBean extends AMQManagedObject implements ManagedBr
exchange = _exchangeFactory.createExchange(new AMQShortString(exchangeName), new AMQShortString(type),
durable, false, 0);
_exchangeRegistry.registerExchange(exchange);
+ if (durable)
+ {
+ _durableConfig.createExchange(exchange);
+ }
}
else
{
diff --git a/java/broker/src/main/java/org/apache/qpid/server/exchange/DefaultExchangeRegistry.java b/java/broker/src/main/java/org/apache/qpid/server/exchange/DefaultExchangeRegistry.java
index 2a8a87be7d..7b21ad6b91 100644
--- a/java/broker/src/main/java/org/apache/qpid/server/exchange/DefaultExchangeRegistry.java
+++ b/java/broker/src/main/java/org/apache/qpid/server/exchange/DefaultExchangeRegistry.java
@@ -54,7 +54,7 @@ public class DefaultExchangeRegistry implements ExchangeRegistry
public void initialise() throws AMQException
{
- new ExchangeInitialiser().initialise(_host.getExchangeFactory(), this);
+ new ExchangeInitialiser().initialise(_host.getExchangeFactory(), this, getDurableConfigurationStore());
}
@@ -68,10 +68,6 @@ public class DefaultExchangeRegistry implements ExchangeRegistry
{
_exchangeMap.put(exchange.getName(), exchange);
_exchangeMapStr.put(exchange.getName().toString(), exchange);
- if (exchange.isDurable())
- {
- getDurableConfigurationStore().createExchange(exchange);
- }
}
public void setDefaultExchange(Exchange exchange)
diff --git a/java/broker/src/main/java/org/apache/qpid/server/exchange/ExchangeInitialiser.java b/java/broker/src/main/java/org/apache/qpid/server/exchange/ExchangeInitialiser.java
index 59fe94ddc0..4dfcce7bbe 100644
--- a/java/broker/src/main/java/org/apache/qpid/server/exchange/ExchangeInitialiser.java
+++ b/java/broker/src/main/java/org/apache/qpid/server/exchange/ExchangeInitialiser.java
@@ -23,25 +23,32 @@ package org.apache.qpid.server.exchange;
import org.apache.qpid.AMQException;
import org.apache.qpid.exchange.ExchangeDefaults;
import org.apache.qpid.framing.AMQShortString;
+import org.apache.qpid.server.store.DurableConfigurationStore;
public class ExchangeInitialiser
{
- public void initialise(ExchangeFactory factory, ExchangeRegistry registry) throws AMQException{
+ public void initialise(ExchangeFactory factory, ExchangeRegistry registry, DurableConfigurationStore store) throws AMQException{
for (ExchangeType<? extends Exchange> type : factory.getRegisteredTypes())
{
- define (registry, factory, type.getDefaultExchangeName(), type.getName());
+ define (registry, factory, type.getDefaultExchangeName(), type.getName(), store);
}
- define(registry, factory, ExchangeDefaults.DEFAULT_EXCHANGE_NAME, ExchangeDefaults.DIRECT_EXCHANGE_CLASS);
+ define(registry, factory, ExchangeDefaults.DEFAULT_EXCHANGE_NAME, ExchangeDefaults.DIRECT_EXCHANGE_CLASS, store);
registry.setDefaultExchange(registry.getExchange(ExchangeDefaults.DEFAULT_EXCHANGE_NAME));
}
private void define(ExchangeRegistry r, ExchangeFactory f,
- AMQShortString name, AMQShortString type) throws AMQException
+ AMQShortString name, AMQShortString type, DurableConfigurationStore store) throws AMQException
{
if(r.getExchange(name)== null)
{
- r.registerExchange(f.createExchange(name, type, true, false, 0));
+ Exchange exchange = f.createExchange(name, type, true, false, 0);
+ r.registerExchange(exchange);
+
+ if(exchange.isDurable())
+ {
+ store.createExchange(exchange);
+ }
}
}
}
diff --git a/java/broker/src/main/java/org/apache/qpid/server/handler/ExchangeDeclareHandler.java b/java/broker/src/main/java/org/apache/qpid/server/handler/ExchangeDeclareHandler.java
index b0ee5fff08..1dd6f1413b 100644
--- a/java/broker/src/main/java/org/apache/qpid/server/handler/ExchangeDeclareHandler.java
+++ b/java/broker/src/main/java/org/apache/qpid/server/handler/ExchangeDeclareHandler.java
@@ -97,6 +97,11 @@ public class ExchangeDeclareHandler implements StateAwareMethodListener<Exchange
body.getDurable(),
body.getPassive(), body.getTicket());
exchangeRegistry.registerExchange(exchange);
+
+ if (exchange.isDurable())
+ {
+ virtualHost.getDurableConfigurationStore().createExchange(exchange);
+ }
}
catch(AMQUnknownExchangeType e)
{
diff --git a/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSessionDelegate.java b/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSessionDelegate.java
index 36ed8e24ce..4ade799c59 100644
--- a/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSessionDelegate.java
+++ b/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSessionDelegate.java
@@ -398,7 +398,7 @@ public class ServerSessionDelegate extends SessionDelegate
exchange.setAlternateExchange(alternate);
}
- if (exchange.isDurable() && !exchange.isAutoDelete())
+ if (exchange.isDurable())
{
DurableConfigurationStore store = virtualHost.getDurableConfigurationStore();
store.createExchange(exchange);
diff --git a/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java b/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java
index 78deeeb164..9c4913e1af 100644
--- a/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java
+++ b/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java
@@ -363,6 +363,11 @@ public class VirtualHostImpl implements Accessable, VirtualHost
Exchange newExchange = _exchangeFactory.createExchange(exchangeName, type, durable, autodelete, 0);
_exchangeRegistry.registerExchange(newExchange);
+
+ if (newExchange.isDurable())
+ {
+ _durableConfigurationStore.createExchange(newExchange);
+ }
}
}
diff --git a/java/broker/src/test/java/org/apache/qpid/server/store/MessageStoreTest.java b/java/broker/src/test/java/org/apache/qpid/server/store/MessageStoreTest.java
index 5169676dae..e011301f06 100644
--- a/java/broker/src/test/java/org/apache/qpid/server/store/MessageStoreTest.java
+++ b/java/broker/src/test/java/org/apache/qpid/server/store/MessageStoreTest.java
@@ -449,6 +449,10 @@ public class MessageStoreTest extends TestCase
try
{
_virtualHost.getExchangeRegistry().registerExchange(exchange);
+ if (durable)
+ {
+ _virtualHost.getMessageStore().createExchange(exchange);
+ }
}
catch (AMQException e)
{