X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;ds=sidebyside;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fdatabase%2Fmemory%2FMemoryDatabase.java;h=c49f9780f58c420f9dad9ce6a736b63b18461dd2;hb=af417cd58d0d99061ed484e981c7be20adf066d6;hp=8d60e0f4b548f4f0c579ad7aca52cda000d76911;hpb=4d62892729cbce31c4fb2171ad2c2174db1d44b4;p=Sone.git
diff --git a/src/main/java/net/pterodactylus/sone/database/memory/MemoryDatabase.java b/src/main/java/net/pterodactylus/sone/database/memory/MemoryDatabase.java
index 8d60e0f..c49f978 100644
--- a/src/main/java/net/pterodactylus/sone/database/memory/MemoryDatabase.java
+++ b/src/main/java/net/pterodactylus/sone/database/memory/MemoryDatabase.java
@@ -57,11 +57,9 @@ import com.google.common.base.Optional;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.HashMultimap;
import com.google.common.collect.ListMultimap;
-import com.google.common.collect.Maps;
import com.google.common.collect.SetMultimap;
import com.google.common.collect.SortedSetMultimap;
import com.google.common.collect.TreeMultimap;
-import com.google.common.util.concurrent.AbstractService;
import com.google.inject.Inject;
/**
@@ -69,7 +67,7 @@ import com.google.inject.Inject;
*
* @author David âBombeâ Roden
*/
-public class MemoryDatabase extends AbstractService implements Database {
+public class MemoryDatabase implements Database {
private static final Logger logger = getLogger(MemoryDatabase.class.getName());
@@ -79,8 +77,8 @@ public class MemoryDatabase extends AbstractService implements Database {
/** The configuration. */
private final Configuration configuration;
- private final Map identities = Maps.newHashMap();
private final Map sones = new HashMap();
+ private final MemoryIdentityDatabase memoryIdentityDatabase;
private final MemoryPostDatabase memoryPostDatabase;
/** All post replies by their ID. */
@@ -125,6 +123,7 @@ public class MemoryDatabase extends AbstractService implements Database {
public MemoryDatabase(Configuration configuration) {
this.configuration = configuration;
memoryPostDatabase = new MemoryPostDatabase(this, lock, configuration);
+ memoryIdentityDatabase = new MemoryIdentityDatabase(lock);
}
//
@@ -132,40 +131,33 @@ public class MemoryDatabase extends AbstractService implements Database {
//
@Override
- protected void doStart() {
+ public void start() {
memoryPostDatabase.start();
loadKnownPostReplies();
notifyStarted();
}
@Override
- protected void doStop() {
+ public void stop() {
try {
memoryPostDatabase.stop();
+ configuration.save();
} catch (DatabaseException de1) {
logger.log(Level.WARNING, "Could not stop post database!", de1);
+ } catch (ConfigurationException ce1) {
+ logger.log(Level.WARNING, "Could not save configuration!", ce1);
}
notifyStopped();
}
@Override
public Optional getIdentity(String identityId) {
- lock.readLock().lock();
- try {
- return fromNullable(identities.get(identityId));
- } finally {
- lock.readLock().unlock();
- }
+ return memoryIdentityDatabase.getIdentity(identityId);
}
@Override
public void storeIdentity(Identity identitiy) {
- lock.writeLock().lock();
- try {
- identities.put(identitiy.getId(), identitiy);
- } finally {
- lock.writeLock().unlock();
- }
+ memoryIdentityDatabase.storeIdentity(identitiy);
}
@Override