summaryrefslogtreecommitdiff
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
commit6a078e2e8c8778e10371cb49b3593b561f40a567 (patch)
treea8100cb728d3647ca75e14e660af6e4726203168
parentfc4b37165cdd14939d4e40d7b3cf3ef836995be6 (diff)
downloadqpid-python-6a078e2e8c8778e10371cb49b3593b561f40a567.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@895735 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--qpid/java/broker/src/main/java/org/apache/qpid/server/AMQBrokerManagerMBean.java4
-rw-r--r--qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/DefaultExchangeRegistry.java6
-rw-r--r--qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/ExchangeInitialiser.java17
-rw-r--r--qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ExchangeDeclareHandler.java5
-rw-r--r--qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSessionDelegate.java2
-rw-r--r--qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java5
-rw-r--r--qpid/java/broker/src/test/java/org/apache/qpid/server/store/MessageStoreTest.java4
7 files changed, 32 insertions, 11 deletions
diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/AMQBrokerManagerMBean.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/AMQBrokerManagerMBean.java
index 08b3c08215..de1b69b0a4 100644
--- a/qpid/java/broker/src/main/java/org/apache/qpid/server/AMQBrokerManagerMBean.java
+++ b/qpid/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/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/DefaultExchangeRegistry.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/DefaultExchangeRegistry.java
index 2a8a87be7d..7b21ad6b91 100644
--- a/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/DefaultExchangeRegistry.java
+++ b/qpid/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/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/ExchangeInitialiser.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/ExchangeInitialiser.java
index 59fe94ddc0..4dfcce7bbe 100644
--- a/qpid/java/broker/src/main/java/org/apache/qpid/server/exchange/ExchangeInitialiser.java
+++ b/qpid/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/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ExchangeDeclareHandler.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ExchangeDeclareHandler.java
index b0ee5fff08..1dd6f1413b 100644
--- a/qpid/java/broker/src/main/java/org/apache/qpid/server/handler/ExchangeDeclareHandler.java
+++ b/qpid/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/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSessionDelegate.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSessionDelegate.java
index 36ed8e24ce..4ade799c59 100644
--- a/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSessionDelegate.java
+++ b/qpid/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/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java
index 78deeeb164..9c4913e1af 100644
--- a/qpid/java/broker/src/main/java/org/apache/qpid/server/virtualhost/VirtualHostImpl.java
+++ b/qpid/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/qpid/java/broker/src/test/java/org/apache/qpid/server/store/MessageStoreTest.java b/qpid/java/broker/src/test/java/org/apache/qpid/server/store/MessageStoreTest.java
index 5169676dae..e011301f06 100644
--- a/qpid/java/broker/src/test/java/org/apache/qpid/server/store/MessageStoreTest.java
+++ b/qpid/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)
{