+ @Test
+ public void testAugmentRpc() throws Exception {
+ modules = TestUtils.loadModules(getClass().getResource("/augment-test/rpc").getPath());
+ final URI NS_BAR = URI.create("urn:opendaylight:bar");
+ final URI NS_FOO = URI.create("urn:opendaylight:foo");
+ final Date revision = new SimpleDateFormat("yyyy-MM-dd").parse("2013-10-11");
+
+ Module bar = TestUtils.findModule(modules, "bar");
+ Set<RpcDefinition> rpcs = bar.getRpcs();
+ assertEquals(2, rpcs.size());
+
+ RpcDefinition submit = null;
+ for (RpcDefinition rpc : rpcs) {
+ if ("submit".equals(rpc.getQName().getLocalName())) {
+ submit = rpc;
+ break;
+ }
+ }
+ assertNotNull(submit);
+
+ QName submitQName = new QName(NS_BAR, revision, "b", "submit");
+ assertEquals(submitQName, submit.getQName());
+ ContainerSchemaNode input = submit.getInput();
+ QName inputQName = new QName(NS_BAR, revision, "b", "input");
+ assertEquals(inputQName, input.getQName());
+ ChoiceNode arguments = (ChoiceNode) input.getDataChildByName("arguments");
+ QName argumentsQName = new QName(NS_BAR, revision, "b", "arguments");
+ assertEquals(argumentsQName, arguments.getQName());
+ assertFalse(arguments.isAugmenting());
+ Set<ChoiceCaseNode> cases = arguments.getCases();
+ assertEquals(3, cases.size());
+
+ ChoiceCaseNode attach = null;
+ ChoiceCaseNode create = null;
+ ChoiceCaseNode destroy = null;
+ for (ChoiceCaseNode child : cases) {
+ if ("attach".equals(child.getQName().getLocalName())) {
+ attach = child;
+ } else if ("create".equals(child.getQName().getLocalName())) {
+ create = child;
+ } else if ("destroy".equals(child.getQName().getLocalName())) {
+ destroy = child;
+ }
+ }
+ assertNotNull(attach);
+ assertNotNull(create);
+ assertNotNull(destroy);
+
+ assertTrue(attach.isAugmenting());
+ assertTrue(create.isAugmenting());
+ assertTrue(destroy.isAugmenting());
+
+ SchemaPath expectedPath;
+ QName[] qnames = new QName[4];
+ qnames[0] = submitQName;
+ qnames[1] = inputQName;
+ qnames[2] = argumentsQName;
+
+ // case attach
+ qnames[3] = new QName(NS_FOO, revision, "f", "attach");
+ assertEquals(qnames[3], attach.getQName());
+ expectedPath = new SchemaPath(Arrays.asList(qnames), true);
+ assertEquals(expectedPath, attach.getPath());
+ Set<DataSchemaNode> attachChildren = attach.getChildNodes();
+ assertEquals(1, attachChildren.size());
+
+ // case create
+ qnames[3] = new QName(NS_FOO, revision, "f", "create");
+ assertEquals(qnames[3], create.getQName());
+ expectedPath = new SchemaPath(Arrays.asList(qnames), true);
+ assertEquals(expectedPath, create.getPath());
+ Set<DataSchemaNode> createChildren = create.getChildNodes();
+ assertEquals(1, createChildren.size());
+
+ // case attach
+ qnames[3] = new QName(NS_FOO, revision, "f", "destroy");
+ assertEquals(qnames[3], destroy.getQName());
+ expectedPath = new SchemaPath(Arrays.asList(qnames), true);
+ assertEquals(expectedPath, destroy.getPath());
+ Set<DataSchemaNode> destroyChildren = destroy.getChildNodes();
+ assertEquals(1, destroyChildren.size());
+ }
+