Use Sone builder to set the posts of a Sone.
[Sone.git] / src / main / java / net / pterodactylus / sone / data / impl / SoneImpl.java
index 44111aa..2479276 100644 (file)
@@ -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;
@@ -94,7 +95,7 @@ public class SoneImpl implements LocalSone {
        private volatile boolean known;
 
        /** All posts. */
-       private final Set<Post> posts = new CopyOnWriteArraySet<Post>();
+       private final Collection<Post> posts = new HashSet<Post>();
 
        /** All replies. */
        private final Set<PostReply> replies = new CopyOnWriteArraySet<PostReply>();
@@ -120,13 +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, Client client) {
+       public SoneImpl(Database database, Identity identity, boolean local, long time, Client client, Collection<Post> posts) {
                this.database = database;
                this.id = identity.getId();
                this.identity = identity;
                this.local = local;
                this.time = time;
                this.client = client;
+               this.posts.addAll(posts);
        }
 
        //
@@ -368,10 +370,6 @@ public class SoneImpl implements LocalSone {
         * @return This Sone (for method chaining)
         */
        public Sone setPosts(Collection<Post> posts) {
-               synchronized (this) {
-                       this.posts.clear();
-                       this.posts.addAll(posts);
-               }
                return this;
        }