+ private void handleUnknownNode(final int line, final ParseTree ctx) {
+ final String nodeParameter = stringFromNode(ctx);
+ enterLog("unknown-node", nodeParameter, line);
+
+ final String nodeTypeStr = ctx.getChild(0).getText();
+ final Iterator<String> splittedElement = COLON_SPLITTER.split(nodeTypeStr).iterator();
+ final String e0 = splittedElement.next();
+ final QName nodeType;
+ if (splittedElement.hasNext()) {
+ nodeType = QName.create(moduleQName.getModule(), e0, splittedElement.next());
+ } else {
+ nodeType = QName.create(moduleQName, e0);
+ }
+
+ QName qname;
+ try {
+ if (!Strings.isNullOrEmpty(nodeParameter)) {
+ final Iterable<String> splittedName = COLON_SPLITTER.split(nodeParameter);
+ final Iterator<String> it = splittedName.iterator();
+
+ if (Iterables.size(splittedName) == 2) {
+ qname = QName.create(QNameModule.create(null, null), it.next(), it.next());
+ } else {
+ qname = QName.create(moduleQName, it.next());
+ }
+ } else {
+ qname = nodeType;
+ }
+ } catch (IllegalArgumentException e) {
+ qname = nodeType;
+ }
+ SchemaPath path = stack.addNodeToPath(qname);
+
+ UnknownSchemaNodeBuilderImpl builder = moduleBuilder.addUnknownSchemaNode(line, qname, path);
+ builder.setNodeType(nodeType);
+ builder.setNodeParameter(nodeParameter);
+
+
+ parseSchemaNodeArgs(ctx, builder);
+ moduleBuilder.enterNode(builder);