public void addListener()

in archaius2-core/src/main/java/com/netflix/archaius/property/DefaultPropertyContainer.java [155:179]


        public void addListener(final PropertyListener<T> listener) {
            listeners.add(listener, new ListenerUpdater() {
                private final AtomicReference<T> last = new AtomicReference<T>(null);
                
                @Override
                public void update() {
                    final T prev = last.get();
                    final T value;
                    
                    try {
                        value = get();
                    }
                    catch (Exception e) {
                        listener.onParseError(e);
                        return;
                    }

                    if (prev != value) {
                        if (last.compareAndSet(prev, value)) {
                            listener.onChange(value);
                        }
                    }
                }
            });
        }