Move event and metadata handling into abstract base class.
[sonitus.git] / src / main / java / net / pterodactylus / sonitus / data / source / MultiSource.java
index b5705d5..2123986 100644 (file)
@@ -21,10 +21,13 @@ import static com.google.common.base.Preconditions.checkNotNull;
 
 import java.io.EOFException;
 import java.io.IOException;
+import java.util.Collections;
+import java.util.List;
 import java.util.concurrent.atomic.AtomicReference;
 import java.util.logging.Logger;
 
-import net.pterodactylus.sonitus.data.Metadata;
+import net.pterodactylus.sonitus.data.AbstractControlledComponent;
+import net.pterodactylus.sonitus.data.Controller;
 import net.pterodactylus.sonitus.data.Source;
 import net.pterodactylus.sonitus.data.event.SourceFinishedEvent;
 
@@ -38,7 +41,7 @@ import com.google.inject.Inject;
  *
  * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
  */
-public class MultiSource implements Source {
+public class MultiSource extends AbstractControlledComponent implements Source {
 
        /** The logger. */
        private static final Logger logger = Logger.getLogger(MultiSource.class.getName());
@@ -52,8 +55,12 @@ public class MultiSource implements Source {
        /** Whether the source was changed. */
        private boolean sourceChanged;
 
+       /**
+        * Creates a new multi source.
+        */
        @Inject
        public MultiSource(EventBus eventBus) {
+               super("Multisource");
                this.eventBus = eventBus;
        }
 
@@ -76,19 +83,24 @@ public class MultiSource implements Source {
                                sourceChanged = true;
                                this.source.notifyAll();
                        }
+                       metadataUpdated(source.metadata());
                        logger.info(String.format("Next Source set: %s", source));
                }
        }
 
        //
-       // SOURCE METHODS
+       // CONTROLLED METHODS
        //
 
        @Override
-       public Metadata metadata() {
-               return source.get().metadata();
+       public List<Controller<?>> controllers() {
+               return Collections.emptyList();
        }
 
+       //
+       // SOURCE METHODS
+       //
+
        @Override
        public byte[] get(int bufferSize) throws EOFException, IOException {
                while (true) {