Author: kwall
Date: Fri Jun  6 15:43:18 2014
New Revision: 1600932

URL: http://svn.apache.org/r1600932
Log:
QPID-5800: [Java Broker] Add DurableConfigurationStore#onDelete method to allow 
an implementation to
delete the files/tables/databases underlying the store.

Modified:
    
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/ManagementModeStoreHandler.java
    
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/MemoryConfigurationEntryStore.java
    
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/AbstractJDBCMessageStore.java
    
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/AbstractMemoryStore.java
    
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/DurableConfigurationStore.java
    
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStore.java
    
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/MessageStore.java
    
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractVirtualHostNode.java
    
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecovererTest.java
    
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/JsonFileConfigStoreTest.java

Modified: 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/ManagementModeStoreHandler.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/ManagementModeStoreHandler.java?rev=1600932&r1=1600931&r2=1600932&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/ManagementModeStoreHandler.java
 (original)
+++ 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/ManagementModeStoreHandler.java
 Fri Jun  6 15:43:18 2014
@@ -242,6 +242,10 @@ public class ManagementModeStoreHandler 
     {
     }
 
+    @Override
+    public void onDelete()
+    {
+    }
 
     @Override
     public synchronized UUID[] remove(final ConfiguredObjectRecord... records)

Modified: 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/MemoryConfigurationEntryStore.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/MemoryConfigurationEntryStore.java?rev=1600932&r1=1600931&r2=1600932&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/MemoryConfigurationEntryStore.java
 (original)
+++ 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/configuration/store/MemoryConfigurationEntryStore.java
 Fri Jun  6 15:43:18 2014
@@ -349,6 +349,11 @@ public class MemoryConfigurationEntrySto
     }
 
     @Override
+    public void onDelete()
+    {
+    }
+
+    @Override
     public void openConfigurationStore(final ConfiguredObject<?> parent, final 
Map<String, Object> storeSettings)
             throws StoreException
     {

Modified: 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/AbstractJDBCMessageStore.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/AbstractJDBCMessageStore.java?rev=1600932&r1=1600931&r2=1600932&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/AbstractJDBCMessageStore.java
 (original)
+++ 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/AbstractJDBCMessageStore.java
 Fri Jun  6 15:43:18 2014
@@ -2439,6 +2439,7 @@ abstract public class AbstractJDBCMessag
 
     protected abstract void storedSizeChange(int storeSizeIncrease);
 
+    @Override
     public void onDelete()
     {
         // TODO should probably check we are closed

Modified: 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/AbstractMemoryStore.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/AbstractMemoryStore.java?rev=1600932&r1=1600931&r2=1600932&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/AbstractMemoryStore.java
 (original)
+++ 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/AbstractMemoryStore.java
 Fri Jun  6 15:43:18 2014
@@ -36,8 +36,6 @@ abstract class AbstractMemoryStore imple
 
     private final ConcurrentHashMap<UUID, ConfiguredObjectRecord> 
_configuredObjectRecords = new ConcurrentHashMap<UUID, 
ConfiguredObjectRecord>();
 
-
-
     @Override
     public void create(ConfiguredObjectRecord record)
     {
@@ -105,5 +103,9 @@ abstract class AbstractMemoryStore imple
         return _messageStore;
     }
 
+    @Override
+    public void onDelete()
+    {
+    }
 
 }

Modified: 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/DurableConfigurationStore.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/DurableConfigurationStore.java?rev=1600932&r1=1600931&r2=1600932&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/DurableConfigurationStore.java
 (original)
+++ 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/DurableConfigurationStore.java
 Fri Jun  6 15:43:18 2014
@@ -41,23 +41,21 @@ public interface DurableConfigurationSto
     void openConfigurationStore(ConfiguredObject<?> parent, Map<String, 
Object> storeSettings) throws StoreException;
 
     /**
-     * Makes the specified object persistent.
-     *
-     * @param object The object to persist.
+     * Visit all configured object records with given handler.
      *
-     * @throws StoreException If the operation fails for any reason.
+     * @param handler a handler to invoke on each configured object record
+     * @throws StoreException
      */
-    void create(ConfiguredObjectRecord object) throws StoreException;
+    void visitConfiguredObjectRecords(ConfiguredObjectRecordHandler handler) 
throws StoreException;
 
     /**
-     * Removes the specified persistent configured objects.
+     * Makes the specified object persistent.
      *
-     * @param objects The objects to remove.
+     * @param object The object to persist.
      *
      * @throws StoreException If the operation fails for any reason.
      */
-    public UUID[] remove(ConfiguredObjectRecord... objects) throws 
StoreException;
-
+    void create(ConfiguredObjectRecord object) throws StoreException;
 
     /**
      * Updates the specified objects in the persistent store, IF it is already 
present. If the object
@@ -71,13 +69,21 @@ public interface DurableConfigurationSto
      */
     void update(boolean createIfNecessary, ConfiguredObjectRecord... records) 
throws StoreException;
 
+    /**
+     * Removes the specified persistent configured objects.
+     *
+     * @param objects The objects to remove.
+     *
+     * @throws StoreException If the operation fails for any reason.
+     */
+    public UUID[] remove(ConfiguredObjectRecord... objects) throws 
StoreException;
+
     void closeConfigurationStore() throws StoreException;
 
     /**
-     * Visit all configured object records with given handler.
-     *
-     * @param handler a handler to invoke on each configured object record
-     * @throws StoreException
+     * Deletes the configuration store from its underlying storage.  If the 
store
+     * has not be opened, then this call will be ignored.  The store should be 
closed
+     * before making this call.
      */
-    void visitConfiguredObjectRecords(ConfiguredObjectRecordHandler handler) 
throws StoreException;
+    void onDelete();
 }

Modified: 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStore.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStore.java?rev=1600932&r1=1600931&r2=1600932&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStore.java
 (original)
+++ 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/JsonFileConfigStore.java
 Fri Jun  6 15:43:18 2014
@@ -571,6 +571,17 @@ public class JsonFileConfigStore impleme
 
     }
 
+    @Override
+    public void onDelete()
+    {
+        if (_configFileName != null && _backupFileName != null)
+        {
+            renameFile(_configFileName,_backupFileName);
+            _configFileName = null;
+            _backupFileName = null;
+        }
+    }
+
     private void releaseFileLock() throws IOException
     {
         _fileLock.release();

Modified: 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/MessageStore.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/MessageStore.java?rev=1600932&r1=1600931&r2=1600932&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/MessageStore.java
 (original)
+++ 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/store/MessageStore.java
 Fri Jun  6 15:43:18 2014
@@ -38,6 +38,10 @@ public interface MessageStore
     String UNDERFULL_SIZE                       = "storeUnderfullSize";
     String OVERFULL_SIZE                        = "storeOverfullSize";
 
+    String getStoreLocation();
+
+    void addEventListener(EventListener eventListener, Event... events);
+
     /**
      * Called after instantiation in order to open and initialize the message 
store. A particular implementation can define
      * whatever parameters it wants.
@@ -46,8 +50,13 @@ public interface MessageStore
      */
     void openMessageStore(ConfiguredObject<?> parent, Map<String, Object> 
messageStoreSettings);
 
-    public <T extends StorableMessageMetaData> StoredMessage<T> addMessage(T 
metaData);
+    void visitMessages(MessageHandler handler) throws StoreException;
+
+    void visitMessageInstances(MessageInstanceHandler handler) throws 
StoreException;
+
+    void visitDistributedTransactions(DistributedTransactionHandler handler) 
throws StoreException;
 
+    <T extends StorableMessageMetaData> StoredMessage<T> addMessage(T 
metaData);
 
     /**
      * Is this store capable of persisting the data
@@ -63,15 +72,5 @@ public interface MessageStore
      */
     void closeMessageStore();
 
-    void addEventListener(EventListener eventListener, Event... events);
-
-    String getStoreLocation();
-
-    // TODO change to have separate delete methods for configuration and 
message store.
     void onDelete();
-
-    void visitMessages(MessageHandler handler) throws StoreException;
-    void visitMessageInstances(MessageInstanceHandler handler) throws 
StoreException;
-    void visitDistributedTransactions(DistributedTransactionHandler handler) 
throws StoreException;
-
 }

Modified: 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractVirtualHostNode.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractVirtualHostNode.java?rev=1600932&r1=1600931&r2=1600932&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractVirtualHostNode.java
 (original)
+++ 
qpid/trunk/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhostnode/AbstractVirtualHostNode.java
 Fri Jun  6 15:43:18 2014
@@ -199,10 +199,7 @@ public abstract class AbstractVirtualHos
         deleteVirtualHostIfExists();
         close();
         deleted();
-        if (getConfigurationStore() instanceof MessageStoreProvider)
-        {
-            
((MessageStoreProvider)getConfigurationStore()).getMessageStore().onDelete();
-        }
+        getConfigurationStore().onDelete();
     }
 
     protected void deleteVirtualHostIfExists()

Modified: 
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecovererTest.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecovererTest.java?rev=1600932&r1=1600931&r2=1600932&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecovererTest.java
 (original)
+++ 
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/BrokerStoreUpgraderAndRecovererTest.java
 Fri Jun  6 15:43:18 2014
@@ -277,6 +277,11 @@ public class BrokerStoreUpgraderAndRecov
         }
 
         @Override
+        public void onDelete()
+        {
+        }
+
+        @Override
         public void visitConfiguredObjectRecords(ConfiguredObjectRecordHandler 
handler) throws StoreException
         {
             handler.begin();

Modified: 
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/JsonFileConfigStoreTest.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/JsonFileConfigStoreTest.java?rev=1600932&r1=1600931&r2=1600932&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/JsonFileConfigStoreTest.java
 (original)
+++ 
qpid/trunk/qpid/java/broker-core/src/test/java/org/apache/qpid/server/store/JsonFileConfigStoreTest.java
 Fri Jun  6 15:43:18 2014
@@ -298,7 +298,25 @@ public class JsonFileConfigStoreTest ext
         }
         _store.closeConfigurationStore();
         secondStore.openConfigurationStore(_parent, 
_configurationStoreSettings);
+    }
+
+    public void testStoreFileLifecycle()
+    {
+        File expectedJsonFile = new File(_storeLocation, _parent.getName() + 
".json");
+        File expectedJsonFileBak = new File(_storeLocation, _parent.getName() 
+ ".bak");
+
+        assertFalse("JSON store should not exist", expectedJsonFile.exists());
+        assertFalse("JSON backup should not exist", 
expectedJsonFileBak.exists());
+
+        _store.openConfigurationStore(_parent, _configurationStoreSettings);
+        assertTrue("JSON store should exist after open", 
expectedJsonFile.exists());
+        assertFalse("JSON backup should not exist after open", 
expectedJsonFileBak.exists());
+
+        _store.closeConfigurationStore();
+        assertTrue("JSON store should exist after close", 
expectedJsonFile.exists());
 
+        _store.onDelete();
+        assertFalse("JSON store should not exist after delete", 
expectedJsonFile.exists());
 
     }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to