Remove (DOM)TransactionChainListener
[mdsal.git] / dom / mdsal-dom-broker / src / main / java / org / opendaylight / mdsal / dom / broker / DOMActionRoutingTable.java
index 00a062cba17f398ad32a07bca5736d2d5e38fb9a..a118cfe5e853226c58712dc9e530722ad5f70f20 100644 (file)
@@ -19,36 +19,32 @@ import org.opendaylight.mdsal.dom.api.DOMActionImplementation;
 import org.opendaylight.mdsal.dom.api.DOMActionInstance;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeIdentifier;
 import org.opendaylight.yangtools.yang.model.api.ActionDefinition;
-import org.opendaylight.yangtools.yang.model.api.ActionNodeContainer;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-import org.opendaylight.yangtools.yang.model.api.SchemaNode;
-import org.opendaylight.yangtools.yang.model.api.SchemaPath;
-import org.opendaylight.yangtools.yang.model.util.SchemaContextUtil;
-
+import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
+import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absolute;
 
 /**
  * Definition of Action routing table.
  */
 @Beta
 final class DOMActionRoutingTable extends AbstractDOMRoutingTable<DOMActionInstance, DOMDataTreeIdentifier,
-        DOMActionImplementation, AvailabilityListener, DOMActionRoutingTableEntry> {
+        DOMActionImplementation, AvailabilityListener, Absolute, DOMActionRoutingTableEntry> {
     static final DOMActionRoutingTable EMPTY = new DOMActionRoutingTable(ImmutableMap.of(), null);
 
-    private DOMActionRoutingTable(final Map<SchemaPath, DOMActionRoutingTableEntry> actions,
-            final SchemaContext schemaContext) {
+    private DOMActionRoutingTable(final Map<Absolute, DOMActionRoutingTableEntry> actions,
+            final EffectiveModelContext schemaContext) {
         super(actions, schemaContext);
     }
 
     @Override
-    protected DOMActionRoutingTable newInstance(final Map<SchemaPath, DOMActionRoutingTableEntry> operations,
-            final SchemaContext schemaContext) {
+    protected DOMActionRoutingTable newInstance(final Map<Absolute, DOMActionRoutingTableEntry> operations,
+            final EffectiveModelContext schemaContext) {
         return new DOMActionRoutingTable(operations, schemaContext);
     }
 
     @Override
-    protected ListMultimap<SchemaPath, DOMDataTreeIdentifier> decomposeIdentifiers(
+    protected ListMultimap<Absolute, DOMDataTreeIdentifier> decomposeIdentifiers(
             final Set<DOMActionInstance> instances) {
-        final ListMultimap<SchemaPath, DOMDataTreeIdentifier> ret = LinkedListMultimap.create();
+        final ListMultimap<Absolute, DOMDataTreeIdentifier> ret = LinkedListMultimap.create();
         for (DOMActionInstance instance : instances) {
             instance.getDataTrees().forEach(id -> ret.put(instance.getType(), id));
         }
@@ -56,22 +52,10 @@ final class DOMActionRoutingTable extends AbstractDOMRoutingTable<DOMActionInsta
     }
 
     @Override
-    protected DOMActionRoutingTableEntry createOperationEntry(final SchemaContext context, final SchemaPath type,
-            final Map<DOMDataTreeIdentifier, List<DOMActionImplementation>> implementations) {
-        final ActionDefinition actionDef = findActionDefinition(context, type);
-        if (actionDef == null) {
-            //FIXME: return null directly instead of providing kind of unknown entry.
-            return null;
-        }
-
-        return new DOMActionRoutingTableEntry(type, implementations);
-    }
-
-    private static ActionDefinition findActionDefinition(final SchemaContext context, final SchemaPath path) {
-        final SchemaNode node = SchemaContextUtil.findDataSchemaNode(context, path.getParent());
-        if (node instanceof ActionNodeContainer) {
-            return ((ActionNodeContainer) node).findAction(path.getLastComponent()).orElse(null);
-        }
-        return null;
+    protected DOMActionRoutingTableEntry createOperationEntry(final EffectiveModelContext context,
+            final Absolute type, final Map<DOMDataTreeIdentifier, List<DOMActionImplementation>> implementations) {
+        return context.findSchemaTreeNode(ActionDefinition.class, type)
+            .map(dummy -> new DOMActionRoutingTableEntry(type, implementations))
+            .orElse(null);
     }
 }