Cleanup NamespaceBehaviourWithListeners 69/64569/6
authorRobert Varga <robert.varga@pantheon.tech>
Fri, 20 Oct 2017 12:43:48 +0000 (14:43 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Tue, 24 Oct 2017 10:55:55 +0000 (12:55 +0200)
Lower method visibility and eliminate unneeded method indirection,
as it makes things less clear than they could be.

Furthermore move isRequestedValue() so that it is a property of
ValueAddedListener -- eliminating the requirement of the listener
having an exact key.

Change-Id: Ibc3b207740349c9268c4a42072348c680295def8
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/NamespaceBehaviourWithListeners.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/SimpleNamespaceContext.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/StatementContextBase.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/VirtualNamespaceContext.java

index 9682e84a75462c46cdc4144a49cfacf60cbcaa6f..adba2b6572f7cf81952626eafbb2e8d51bdf7a48 100644 (file)
@@ -26,19 +26,16 @@ abstract class NamespaceBehaviourWithListeners<K, V, N extends IdentifierNamespa
             this.key = key;
         }
 
-        public NamespaceStorageNode getCtxNode() {
+        NamespaceStorageNode getCtxNode() {
             return ctxNode;
         }
 
-        public K getKey() {
-            return key;
+        final <V> boolean isRequestedValue(final NamespaceBehaviour<K, ? , ?> behavior,
+                final NamespaceStorageNode storage, final V value) {
+            return value == behavior.getFrom(ctxNode, key);
         }
 
-        void trigger(final Object value) {
-            onValueAdded(key, value);
-        }
-
-        abstract void onValueAdded(Object key, Object value);
+        abstract void onValueAdded(Object value);
     }
 
     protected final NamespaceBehaviour<K, V, N> delegate;
@@ -49,9 +46,7 @@ abstract class NamespaceBehaviourWithListeners<K, V, N extends IdentifierNamespa
         this.delegate = delegate;
     }
 
-    protected abstract void addListener(K key, ValueAddedListener<K> listener);
-
-    protected abstract boolean isRequestedValue(ValueAddedListener<K> listener, NamespaceStorageNode storage, V value);
+    abstract void addListener(K key, ValueAddedListener<K> listener);
 
     @Override
     public abstract void addTo(NamespaceStorageNode storage, K key, V value);
@@ -60,14 +55,14 @@ abstract class NamespaceBehaviourWithListeners<K, V, N extends IdentifierNamespa
             final Iterator<ValueAddedListener<K>> keyListeners, final V value) {
         List<ValueAddedListener<K>> toNotify = new ArrayList<>();
         while (keyListeners.hasNext()) {
-            ValueAddedListener<K> listener = keyListeners.next();
-            if (isRequestedValue(listener, storage, value)) {
+            final ValueAddedListener<K> listener = keyListeners.next();
+            if (listener.isRequestedValue(this, storage, value)) {
                 keyListeners.remove();
                 toNotify.add(listener);
             }
         }
         for (ValueAddedListener<K> listener : toNotify) {
-            listener.trigger(value);
+            listener.onValueAdded(value);
         }
     }
 
@@ -77,10 +72,6 @@ abstract class NamespaceBehaviourWithListeners<K, V, N extends IdentifierNamespa
         }
     }
 
-    final void addValueListener(final ValueAddedListener<K> listener) {
-        addListener(listener.key, listener);
-    }
-
     final void addDerivedNamespace(final VirtualNamespaceContext<?, V, ?, K> namespace) {
         derivedNamespaces.add(namespace);
     }
index 463411d853e3dd203663fe3c726b720abc0607ae..e59e5e606f4cdb602bf939832d3a1f9d6c2215da 100644 (file)
@@ -24,14 +24,7 @@ final class SimpleNamespaceContext<K, V, N extends IdentifierNamespace<K, V>>
     }
 
     @Override
-    protected boolean isRequestedValue(final ValueAddedListener<K> listener, final NamespaceStorageNode storage,
-            final V value) {
-        NamespaceStorageNode listenerCtx = listener.getCtxNode();
-        return value == getFrom(listenerCtx, listener.getKey());
-    }
-
-    @Override
-    protected void addListener(final K key, final ValueAddedListener<K> listener) {
+    void addListener(final K key, final ValueAddedListener<K> listener) {
         listeners.add(listener);
     }
 
index 4d35ad624c703c1d2389f2252a2584cda08e2a51..1807b101de3833d82ee1f62e73722a249acea9cc 100644 (file)
@@ -581,9 +581,9 @@ public abstract class StatementContextBase<A, D extends DeclaredStatement<A>, E
             "Namespace %s does not support listeners", type);
 
         final NamespaceBehaviourWithListeners<K, V, N> casted = (NamespaceBehaviourWithListeners<K, V, N>) behaviour;
-        casted.addValueListener(new ValueAddedListener<K>(this, key) {
+        casted.addListener(key, new ValueAddedListener<K>(this, key) {
             @Override
-            void onValueAdded(final Object key, final Object value) {
+            void onValueAdded(final Object value) {
                 listener.namespaceItemAdded(StatementContextBase.this, type, key, value);
             }
         });
index 013b427a4418784e41ecbaec1d6eec4327651508..77693e8dc5583eceb251b3c761020994a965fc21 100644 (file)
@@ -11,7 +11,6 @@ import com.google.common.collect.HashMultimap;
 import com.google.common.collect.Multimap;
 import org.opendaylight.yangtools.yang.model.api.meta.IdentifierNamespace;
 import org.opendaylight.yangtools.yang.parser.spi.meta.DerivedNamespaceBehaviour;
-import org.opendaylight.yangtools.yang.parser.spi.meta.NamespaceBehaviour;
 
 final class VirtualNamespaceContext<K, V, N extends IdentifierNamespace<K, V>, D>
         extends NamespaceBehaviourWithListeners<K, V, N> {
@@ -25,17 +24,11 @@ final class VirtualNamespaceContext<K, V, N extends IdentifierNamespace<K, V>, D
     }
 
     @Override
-    protected boolean isRequestedValue(final ValueAddedListener<K> listener, final NamespaceStorageNode storage,
-            final V value) {
-        return value == getFrom(listener.getCtxNode(), listener.getKey());
-    }
-
-    @Override
-    protected void addListener(final K key, final ValueAddedListener<K> listener) {
+    void addListener(final K key, final ValueAddedListener<K> listener) {
         listeners.put(derivedDelegate.getSignificantKey(key), listener);
     }
 
-    void addedToSourceNamespace(final NamespaceBehaviour.NamespaceStorageNode storage, final D key, final V value) {
+    void addedToSourceNamespace(final NamespaceStorageNode storage, final D key, final V value) {
         notifyListeners(storage, listeners.get(key).iterator(), value);
     }