diff options
| author | Robert Godfrey <rgodfrey@apache.org> | 2012-04-12 19:46:03 +0000 |
|---|---|---|
| committer | Robert Godfrey <rgodfrey@apache.org> | 2012-04-12 19:46:03 +0000 |
| commit | efad669d94b04a59d2b62581e607a3f6243cd63a (patch) | |
| tree | 73c2c338d99072241f411e828b9b52b6868e21f2 /qpid/java/bdbstore | |
| parent | c052ece2e23a226bfc713e5137f1e71ec4f2f90d (diff) | |
| download | qpid-python-efad669d94b04a59d2b62581e607a3f6243cd63a.tar.gz | |
QPID-3917 : Refactor changes to MessageStore to use listeners and not decorators
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1325467 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/bdbstore')
3 files changed, 42 insertions, 32 deletions
diff --git a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/AbstractBDBMessageStore.java b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/AbstractBDBMessageStore.java index f0fd97dc85..3f394b79a7 100644 --- a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/AbstractBDBMessageStore.java +++ b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/AbstractBDBMessageStore.java @@ -33,10 +33,18 @@ import com.sleepycat.je.LockConflictException; import com.sleepycat.je.LockMode; import com.sleepycat.je.OperationStatus; import com.sleepycat.je.TransactionConfig; - +import java.io.File; +import java.lang.ref.SoftReference; +import java.nio.ByteBuffer; +import java.util.ArrayList; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Random; +import java.util.UUID; +import java.util.concurrent.atomic.AtomicLong; import org.apache.commons.configuration.Configuration; import org.apache.log4j.Logger; - import org.apache.qpid.AMQStoreException; import org.apache.qpid.framing.AMQShortString; import org.apache.qpid.framing.FieldTable; @@ -52,6 +60,7 @@ import org.apache.qpid.server.store.ConfigurationRecoveryHandler.QueueRecoveryHa import org.apache.qpid.server.store.DurableConfigurationStore; import org.apache.qpid.server.store.Event; import org.apache.qpid.server.store.EventListener; +import org.apache.qpid.server.store.EventManager; import org.apache.qpid.server.store.MessageStore; import org.apache.qpid.server.store.MessageStoreRecoveryHandler; import org.apache.qpid.server.store.MessageStoreRecoveryHandler.StoredMessageRecoveryHandler; @@ -83,17 +92,6 @@ import org.apache.qpid.server.store.berkeleydb.tuple.UUIDTupleBinding; import org.apache.qpid.server.store.berkeleydb.tuple.XidBinding; import org.apache.qpid.server.store.berkeleydb.upgrade.Upgrader; -import java.io.File; -import java.lang.ref.SoftReference; -import java.nio.ByteBuffer; -import java.util.ArrayList; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.Random; -import java.util.UUID; -import java.util.concurrent.atomic.AtomicLong; - public abstract class AbstractBDBMessageStore implements MessageStore { private static final Logger LOGGER = Logger.getLogger(AbstractBDBMessageStore.class); @@ -154,7 +152,7 @@ public abstract class AbstractBDBMessageStore implements MessageStore private final AtomicLong _messageId = new AtomicLong(0); - protected final StateManager _stateManager = new StateManager(); + protected final StateManager _stateManager; protected TransactionConfig _transactionConfig = new TransactionConfig(); @@ -165,20 +163,27 @@ public abstract class AbstractBDBMessageStore implements MessageStore private TransactionLogRecoveryHandler _tlogRecoveryHandler; private ConfigurationRecoveryHandler _configRecoveryHandler; + + private final EventManager _eventManager = new EventManager(); + private String _storeLocation; public AbstractBDBMessageStore() { + _stateManager = new StateManager(_eventManager); } public void configureConfigStore(String name, ConfigurationRecoveryHandler recoveryHandler, Configuration storeConfiguration) throws Exception { - _stateManager.stateTransition(State.INITIAL, State.CONFIGURING); + _stateManager.attainState(State.CONFIGURING); _configRecoveryHandler = recoveryHandler; configure(name,storeConfiguration); + + + } public void configureMessageStore(String name, @@ -188,16 +193,19 @@ public abstract class AbstractBDBMessageStore implements MessageStore { _messageRecoveryHandler = messageRecoveryHandler; _tlogRecoveryHandler = tlogRecoveryHandler; + + _stateManager.attainState(State.CONFIGURED); } public void activate() throws Exception { - _stateManager.stateTransition(State.CONFIGURING, State.RECOVERING); + _stateManager.attainState(State.RECOVERING); recoverConfig(_configRecoveryHandler); recoverMessages(_messageRecoveryHandler); recoverQueueEntries(_tlogRecoveryHandler); - _stateManager.stateTransition(State.RECOVERING, State.ACTIVE); + + _stateManager.attainState(State.ACTIVE); } public org.apache.qpid.server.store.Transaction newTransaction() @@ -216,8 +224,10 @@ public abstract class AbstractBDBMessageStore implements MessageStore */ public void configure(String name, Configuration storeConfig) throws Exception { - File environmentPath = new File(storeConfig.getString(ENVIRONMENT_PATH_PROPERTY, - System.getProperty("QPID_WORK") + File.separator + "bdbstore" + File.separator + name)); + final String storeLocation = storeConfig.getString(ENVIRONMENT_PATH_PROPERTY, + System.getProperty("QPID_WORK") + File.separator + "bdbstore" + File.separator + name); + + File environmentPath = new File(storeLocation); if (!environmentPath.exists()) { if (!environmentPath.mkdirs()) @@ -227,6 +237,8 @@ public abstract class AbstractBDBMessageStore implements MessageStore } } + _storeLocation = storeLocation; + configure(environmentPath, false); } @@ -359,7 +371,7 @@ public abstract class AbstractBDBMessageStore implements MessageStore */ public void close() throws Exception { - if (_stateManager.isInState(State.ACTIVE)) + if (_stateManager.isInState(State.ACTIVE) || _stateManager.isInState(State.QUIESCED)) { _stateManager.stateTransition(State.ACTIVE, State.CLOSING); @@ -1975,13 +1987,14 @@ public abstract class AbstractBDBMessageStore implements MessageStore } @Override - public void addEventListener(EventListener eventListener, Event event) + public void addEventListener(EventListener eventListener, Event... events) { - throw new UnsupportedOperationException(); + _eventManager.addEventListener(eventListener, events); } - public MessageStore getUnderlyingStore() + @Override + public String getStoreLocation() { - return this; + return _storeLocation; } } diff --git a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreFactory.java b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreFactory.java index 145d0f35e3..7e5ef3f94c 100644 --- a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreFactory.java +++ b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreFactory.java @@ -19,19 +19,16 @@ */ package org.apache.qpid.server.store.berkeleydb; -import org.apache.qpid.server.logging.LogSubject; import org.apache.qpid.server.store.MessageStore; import org.apache.qpid.server.store.MessageStoreFactory; -import org.apache.qpid.server.store.decorators.EventDecorator; -import org.apache.qpid.server.store.decorators.OperationalLoggingDecorator; public class BDBMessageStoreFactory implements MessageStoreFactory { @Override - public MessageStore createMessageStore(LogSubject logSubject) + public MessageStore createMessageStore() { - return new OperationalLoggingDecorator(new EventDecorator(new BDBMessageStore()), logSubject); + return new BDBMessageStore(); } @Override diff --git a/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreTest.java b/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreTest.java index a45b98b8b5..5b69c2ead6 100644 --- a/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreTest.java +++ b/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreTest.java @@ -369,10 +369,10 @@ public class BDBMessageStoreTest extends org.apache.qpid.server.store.MessageSto } private BDBMessageStore assertBDBStore(MessageStore store) { - MessageStore underlyingStore = store.getUnderlyingStore(); - assertEquals("Test requires an instance of BDBMessageStore to proceed", BDBMessageStore.class, underlyingStore.getClass()); - return (BDBMessageStore) underlyingStore; + assertEquals("Test requires an instance of BDBMessageStore to proceed", BDBMessageStore.class, store.getClass()); + + return (BDBMessageStore) store; } private StoredMessage<MessageMetaData> createAndStoreSingleChunkMessage_0_8(MessageStore store) |
