X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fdata%2Fimpl%2FSoneImpl.java;h=eb2fc6ea78847fcd791863a12c0d042aee5ab1f3;hb=3be262ed12308938a8523118e4f909f4a88a07dc;hp=eccce4b0193a8b2cc7ce0312fd2e3aaf1aabeb64;hpb=f333f58180a7f112394cd768d86c95a3c9edf794;p=Sone.git diff --git a/src/main/java/net/pterodactylus/sone/data/impl/SoneImpl.java b/src/main/java/net/pterodactylus/sone/data/impl/SoneImpl.java index eccce4b..eb2fc6e 100644 --- a/src/main/java/net/pterodactylus/sone/data/impl/SoneImpl.java +++ b/src/main/java/net/pterodactylus/sone/data/impl/SoneImpl.java @@ -25,6 +25,7 @@ import java.net.MalformedURLException; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; +import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.concurrent.CopyOnWriteArraySet; @@ -47,6 +48,7 @@ import net.pterodactylus.sone.freenet.wot.OwnIdentity; import freenet.keys.FreenetURI; +import com.google.common.collect.FluentIterable; import com.google.common.hash.Hasher; import com.google.common.hash.Hashing; @@ -87,13 +89,13 @@ public class SoneImpl implements LocalSone { private volatile Profile profile = new Profile(this); /** The client used by the Sone. */ - private volatile Client client; + private final Client client; /** Whether this Sone is known. */ private volatile boolean known; /** All posts. */ - private final Set posts = new CopyOnWriteArraySet(); + private final Collection posts = new HashSet(); /** All replies. */ private final Set replies = new CopyOnWriteArraySet(); @@ -119,12 +121,14 @@ public class SoneImpl implements LocalSone { * @param local * {@code true} if the Sone is a local Sone, {@code false} otherwise */ - public SoneImpl(Database database, Identity identity, boolean local, long time) { + public SoneImpl(Database database, Identity identity, boolean local, long time, Client client, Collection posts) { this.database = database; this.id = identity.getId(); this.identity = identity; this.local = local; this.time = time; + this.client = client; + this.posts.addAll(posts); } // @@ -302,7 +306,6 @@ public class SoneImpl implements LocalSone { * @return This Sone (for method chaining) */ public Sone setClient(Client client) { - this.client = client; return this; } @@ -354,27 +357,9 @@ public class SoneImpl implements LocalSone { * @return All posts of this Sone */ public List getPosts() { - List sortedPosts; synchronized (this) { - sortedPosts = new ArrayList(posts); + return FluentIterable.from(posts).toSortedList(Post.TIME_COMPARATOR); } - Collections.sort(sortedPosts, Post.TIME_COMPARATOR); - return sortedPosts; - } - - /** - * Sets all posts of this Sone at once. - * - * @param posts - * The new (and only) posts of this Sone - * @return This Sone (for method chaining) - */ - public Sone setPosts(Collection posts) { - synchronized (this) { - this.posts.clear(); - this.posts.addAll(posts); - } - return this; } /**