final GeneratedType input;
final GeneratedType output;
if (action.isAddedByUses()) {
- final ActionDefinition orig = findAction(parentSchema, action).get();
+ final ActionDefinition orig = findOrigAction(parentSchema, action).get();
input = context.getChildNode(orig.getInput().getPath()).build();
output = context.getChildNode(orig.getOutput().getPath()).build();
} else {
}
}
- private Optional<ActionDefinition> findAction(final DataNodeContainer parent, final ActionDefinition action) {
- return parent.getUses().stream()
- .flatMap(uses -> findUsedGrouping(uses).getActions().stream())
- .filter(act -> action.getQName().equals(act.getQName()))
- .findFirst();
+ private Optional<ActionDefinition> findOrigAction(final DataNodeContainer parent, final ActionDefinition action) {
+ for (UsesNode uses : parent.getUses()) {
+ final GroupingDefinition grp = findUsedGrouping(uses);
+ final Optional<ActionDefinition> found = grp.getActions().stream()
+ .filter(act -> action.getQName().equals(act.getQName())).findFirst();
+ if (found.isPresent()) {
+ final ActionDefinition result = found.get();
+ return result.isAddedByUses() ? findOrigAction(grp, result) : found;
+ }
+ }
+
+ return Optional.empty();
}
private GeneratedType actionContainer(final ModuleContext context, final Type baseInterface,
--- /dev/null
+/*
+ * Copyright (c) 2018 Pantheon Technologies, s.r.o. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.mdsal.binding.generator.impl;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import java.util.List;
+import org.junit.Test;
+import org.opendaylight.mdsal.binding.model.api.Type;
+import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
+
+public class ActionsTest {
+ @Test
+ public void actionsTypeTest() {
+ SchemaContext context = YangParserTestUtils.parseYangResource("/actions.yang");
+
+ List<Type> generateTypes = new BindingGeneratorImpl().generateTypes(context);
+ assertNotNull(generateTypes);
+ assertEquals(13, generateTypes.size());
+ }
+}