Use local Sone for loading the Sone in the database.
[Sone.git] / src / main / java / net / pterodactylus / sone / database / memory / MemoryDatabase.java
index 12ef439..7ad40e0 100644 (file)
@@ -173,14 +173,14 @@ public class MemoryDatabase extends AbstractService implements Database {
        }
 
        @Override
-       public Sone registerLocalSone(OwnIdentity ownIdentity) {
-               final Sone localSone = loadLocalSone(ownIdentity);
+       public LocalSone registerLocalSone(OwnIdentity ownIdentity) {
+               final LocalSone localSone = loadLocalSone(ownIdentity);
                localSones.add(ownIdentity.getId());
                return localSone;
        }
 
-       private Sone loadLocalSone(OwnIdentity ownIdentity) {
-               Sone localSone = newSoneBuilder().local().from(ownIdentity).build();
+       private LocalSone loadLocalSone(OwnIdentity ownIdentity) {
+               LocalSone localSone = (LocalSone) newSoneBuilder().local().from(ownIdentity).build();
                localSone.setLatestEdition(
                                Optional.fromNullable(
                                                Longs.tryParse(ownIdentity.getProperty(LATEST_EDITION_PROPERTY)))
@@ -192,7 +192,7 @@ public class MemoryDatabase extends AbstractService implements Database {
                return localSone;
        }
 
-       public void loadSone(Sone sone) {
+       public void loadSone(LocalSone sone) {
                long soneTime = configurationLoader.getLocalSoneTime(sone.getId());
                if (soneTime == -1) {
                        return;
@@ -583,10 +583,16 @@ public class MemoryDatabase extends AbstractService implements Database {
        }
 
        @Override
-       public Collection<Sone> getLocalSones() {
+       public Collection<LocalSone> getLocalSones() {
                lock.readLock().lock();
                try {
-                       return from(allSones.values()).filter(LOCAL_SONE_FILTER).toSet();
+                       return from(allSones.values()).filter(LOCAL_SONE_FILTER).transform(new Function<Sone, LocalSone>() {
+                               @Override
+                               public LocalSone apply(Sone sone) {
+                                       // FIXME – Sones will not always implement LocalSone
+                                       return (LocalSone) sone;
+                               }
+                       }).toSet();
                } finally {
                        lock.readLock().unlock();
                }