Hand in changed metadata to superclass.
[sonitus.git] / src / main / java / net / pterodactylus / sonitus / data / filter / PredicateFilter.java
index 173073e..20840a8 100644 (file)
@@ -22,6 +22,7 @@ import static com.google.common.base.Preconditions.checkNotNull;
 import java.io.IOException;
 import java.util.concurrent.atomic.AtomicBoolean;
 
+import net.pterodactylus.sonitus.data.AbstractFilter;
 import net.pterodactylus.sonitus.data.Filter;
 import net.pterodactylus.sonitus.data.Metadata;
 
@@ -33,7 +34,7 @@ import com.google.common.base.Predicate;
  *
  * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
  */
-public class PredicateFilter extends DummyFilter {
+public class PredicateFilter extends AbstractFilter implements Filter {
 
        /** The predicate. */
        private final Predicate<Metadata> metadataPredicate;
@@ -50,7 +51,6 @@ public class PredicateFilter extends DummyFilter {
         * @param metadataPredicate
         *              The predicate to evaluate every time the metadata changes
         * @param filter
-        *              The filter to use if the predicate matches the metadata
         */
        public PredicateFilter(Predicate<Metadata> metadataPredicate, Filter filter) {
                super(String.format("%s (maybe)", filter.name()));
@@ -84,6 +84,14 @@ public class PredicateFilter extends DummyFilter {
        }
 
        @Override
+       public Metadata metadata() {
+               if (metadataMatches.get()) {
+                       return filter.metadata();
+               }
+               return super.metadata();
+       }
+
+       @Override
        public void metadataUpdated(Metadata metadata) {
                metadataMatches.set(metadataPredicate.apply(metadata));
                if (metadataMatches.get()) {
@@ -103,15 +111,6 @@ public class PredicateFilter extends DummyFilter {
        }
 
        @Override
-       public Metadata metadata() {
-               if (metadataMatches.get()) {
-                       return filter.metadata();
-               } else {
-                       return super.metadata();
-               }
-       }
-
-       @Override
        public byte[] get(int bufferSize) throws IOException {
                if (metadataMatches.get()) {
                        return filter.get(bufferSize);