summaryrefslogtreecommitdiff
path: root/qpid/java/bdbstore
diff options
context:
space:
mode:
authorRobert Godfrey <rgodfrey@apache.org>2012-04-12 19:46:03 +0000
committerRobert Godfrey <rgodfrey@apache.org>2012-04-12 19:46:03 +0000
commitefad669d94b04a59d2b62581e607a3f6243cd63a (patch)
tree73c2c338d99072241f411e828b9b52b6868e21f2 /qpid/java/bdbstore
parentc052ece2e23a226bfc713e5137f1e71ec4f2f90d (diff)
downloadqpid-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')
-rw-r--r--qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/AbstractBDBMessageStore.java61
-rw-r--r--qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreFactory.java7
-rw-r--r--qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBMessageStoreTest.java6
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)