X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsonitus%2Fdata%2FAbstractControlledComponent.java;fp=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsonitus%2Fdata%2FAbstractControlledComponent.java;h=0000000000000000000000000000000000000000;hb=633a841142f978235ed9f745b6ba16c278963e62;hp=fe338c114bc6f92bbfafaf281b660136885ef6b2;hpb=70ea21939e6071954eeb05f2a42e7a92a02013f2;p=sonitus.git diff --git a/src/main/java/net/pterodactylus/sonitus/data/AbstractControlledComponent.java b/src/main/java/net/pterodactylus/sonitus/data/AbstractControlledComponent.java deleted file mode 100644 index fe338c1..0000000 --- a/src/main/java/net/pterodactylus/sonitus/data/AbstractControlledComponent.java +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Sonitus - AbstractControlledComponent.java - Copyright © 2013 David Roden - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package net.pterodactylus.sonitus.data; - -import java.util.List; -import java.util.concurrent.atomic.AtomicReference; - -import com.google.common.collect.Lists; - -/** - * Abstract {@link ControlledComponent} implementation that takes care of - * managing {@link MetadataListener}s. - * - * @author David ‘Bombe’ Roden - */ -public abstract class AbstractControlledComponent implements ControlledComponent { - - /** The name of this filter. */ - private final String name; - - /** The list of metadata listeners. */ - private final List metadataListeners = Lists.newCopyOnWriteArrayList(); - - /** The current metadata. */ - private final AtomicReference metadata = new AtomicReference(); - - /** - * Creates a new abstract controlled component. - * - * @param name - * The name of the component - */ - protected AbstractControlledComponent(String name) { - this.name = name; - } - - // - // LISTENER MANAGEMENT - // - - @Override - public void addMetadataListener(MetadataListener metadataListener) { - metadataListeners.add(metadataListener); - } - - @Override - public void removeMetadataListener(MetadataListener metadataListener) { - metadataListeners.remove(metadataListener); - } - - // - // CONTROLLEDCOMPONENT METHODS - // - - @Override - public String name() { - return name; - } - - @Override - public Metadata metadata() { - return metadata.get(); - } - - @Override - public void metadataUpdated(Metadata metadata) { - if (metadata.equals(this.metadata.get())) { - return; - } - this.metadata.set(metadata); - fireMetadataUpdated(metadata); - } - - // - // EVENT METHODS - // - - /** - * Notifies all registered metadata listeners that the metadata has changed. - * - * @param metadata - * The new metadata - */ - protected void fireMetadataUpdated(Metadata metadata) { - for (MetadataListener metadataListener : metadataListeners) { - metadataListener.metadataUpdated(this, metadata); - } - } - -}