package com.yoursway.commons.preferences.core.branch; import static com.yoursway.utils.broadcaster.BroadcasterFactory.newBroadcaster; import com.yoursway.commons.preferences.core.layers.PreferenceLayer; import com.yoursway.commons.preferences.core.layers.RootPreferenceLayer; import com.yoursway.utils.EventSource; import com.yoursway.utils.annotations.SynchronizationNeededButUndecidedYet; import com.yoursway.utils.broadcaster.Broadcaster; @SynchronizationNeededButUndecidedYet public class PreferenceBranch { private PreferenceLayer layer = RootPreferenceLayer.INSTANCE; public PreferenceBranch() { } public String get(String name) { return layer.get(name); } public PreferenceLayer getLayer() { return layer; } public void update(PreferenceLayer layer) { if (layer == null) throw new NullPointerException("layer is null"); PreferenceLayer oldLayer = this.layer; this.layer = layer; broadcaster.fire().updated(oldLayer, layer); } private final Broadcaster<PreferenceBranchListener> broadcaster = newBroadcaster(PreferenceBranchListener.class); public final EventSource<PreferenceBranchListener> events() { return broadcaster; } }