+ private static void setLog(final String p1, final String p2) {
+ LOG.trace("setting {} {}", p1, p2);
+ }
+
+ private void handleUnknownNode(final int line, final ParseTree ctx) {
+ final String nodeParameter = stringFromNode(ctx);
+ enterLog(UNKNOWN_NODE_STR, nodeParameter, line);
+
+ final String nodeTypeStr = ctx.getChild(0).getText();
+ final QName nodeType = parseQName(nodeTypeStr, line);
+
+ QName qname = null;
+ try {
+ // FIXME: rewrite whole method to handle unknown nodes properly.
+ // This should be bugfix for bug
+ // https://bugs.opendaylight.org/show_bug.cgi?id=1539
+ // After this fix bug
+ // https://bugs.opendaylight.org/show_bug.cgi?id=1538 MUST be fixed
+ // since
+ // they are dependent!!!
+ if (Strings.isNullOrEmpty(nodeParameter)) {
+ qname = nodeType;
+ } else {
+ final Iterable<String> splittedName = COLON_SPLITTER.split(nodeParameter);
+ final Iterator<String> it = splittedName.iterator();
+ if (Iterables.size(splittedName) == 2) {
+ qname = parseQName(nodeParameter, line);
+ } else {
+ qname = QName.create(moduleQName, it.next());
+ }
+ }
+ } catch (IllegalArgumentException | YangParseException ex) {
+ qname = nodeType;
+ }
+
+ final SchemaPath path = stack.addNodeToPath(qname);
+
+ final UnknownSchemaNodeBuilderImpl builder = moduleBuilder.addUnknownSchemaNode(line, qname, path);
+ builder.setNodeType(nodeType);
+ builder.setNodeParameter(nodeParameter);
+
+ parseSchemaNodeArgs(ctx, builder);
+ moduleBuilder.enterNode(builder);