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.EffectiveModelContext;
-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.api.stmt.SchemaNodeIdentifier.Absolute;
-import org.opendaylight.yangtools.yang.model.util.SchemaContextUtil;
/**
* Definition of Action routing table.
@Override
protected DOMActionRoutingTableEntry createOperationEntry(final EffectiveModelContext context,
final Absolute 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 Absolute path) {
- // FIXME: use direct search
- final SchemaPath legacy = path.asSchemaPath();
- final SchemaNode node = SchemaContextUtil.findDataSchemaNode(context, legacy.getParent());
- if (node instanceof ActionNodeContainer) {
- return ((ActionNodeContainer) node).findAction(legacy.getLastComponent()).orElse(null);
- }
- return null;
+ return context.findSchemaTreeNode(ActionDefinition.class, type)
+ .map(dummy -> new DOMActionRoutingTableEntry(type, implementations))
+ .orElse(null);
}
}