Add copy constructor.
authorDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Tue, 5 Apr 2011 07:57:19 +0000 (09:57 +0200)
committerDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Tue, 5 Apr 2011 08:06:14 +0000 (10:06 +0200)
src/main/java/net/pterodactylus/sone/notify/ListNotification.java

index 2f43c58..2217b70 100644 (file)
@@ -18,6 +18,7 @@
 package net.pterodactylus.sone.notify;
 
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.List;
 import java.util.concurrent.CopyOnWriteArrayList;
 
@@ -33,6 +34,9 @@ import net.pterodactylus.util.template.Template;
  */
 public class ListNotification<T> extends TemplateNotification {
 
+       /** The key under which to store the elements in the template. */
+       private final String key;
+
        /** The list of new elements. */
        private final List<T> elements = new CopyOnWriteArrayList<T>();
 
@@ -48,9 +52,24 @@ public class ListNotification<T> extends TemplateNotification {
         */
        public ListNotification(String id, String key, Template template) {
                super(id, template);
+               this.key = key;
                template.getInitialContext().set(key, elements);
        }
 
+       /**
+        * Creates a new list notification that copies its ID and the template from
+        * the given list notification.
+        *
+        * @param listNotification
+        *            The list notification to copy
+        */
+       public ListNotification(ListNotification<T> listNotification) {
+               super(listNotification.getId(), new Template());
+               this.key = listNotification.key;
+               getTemplate().add(listNotification.getTemplate());
+               getTemplate().getInitialContext().set(key, elements);
+       }
+
        //
        // ACTIONS
        //