Move event and metadata handling into abstract base class.
[sonitus.git] / src / main / java / net / pterodactylus / sonitus / data / source / MultiSource.java
index a1d0202..2123986 100644 (file)
@@ -26,8 +26,8 @@ import java.util.List;
 import java.util.concurrent.atomic.AtomicReference;
 import java.util.logging.Logger;
 
+import net.pterodactylus.sonitus.data.AbstractControlledComponent;
 import net.pterodactylus.sonitus.data.Controller;
-import net.pterodactylus.sonitus.data.Metadata;
 import net.pterodactylus.sonitus.data.Source;
 import net.pterodactylus.sonitus.data.event.SourceFinishedEvent;
 
@@ -41,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());
@@ -55,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;
        }
 
@@ -79,6 +83,7 @@ public class MultiSource implements Source {
                                sourceChanged = true;
                                this.source.notifyAll();
                        }
+                       metadataUpdated(source.metadata());
                        logger.info(String.format("Next Source set: %s", source));
                }
        }
@@ -88,11 +93,6 @@ public class MultiSource implements Source {
        //
 
        @Override
-       public String name() {
-               return "Multisource";
-       }
-
-       @Override
        public List<Controller<?>> controllers() {
                return Collections.emptyList();
        }
@@ -102,11 +102,6 @@ public class MultiSource implements Source {
        //
 
        @Override
-       public Metadata metadata() {
-               return source.get().metadata();
-       }
-
-       @Override
        public byte[] get(int bufferSize) throws EOFException, IOException {
                while (true) {
                        try {