- private QName parseQName(final String typeName) {
- QName typeQName;
- if (typeName.contains(":")) {
- String[] splittedName = typeName.split(":");
- String prefix = splittedName[0];
- String name = splittedName[1];
- if (prefix.equals(yangModelPrefix)) {
- typeQName = new QName(namespace, revision, prefix, name);
+ /**
+ * Method transforms string representation of yang element (i.e. leaf name,
+ * container name etc.) into QName. The namespace of QName is assigned from
+ * parent module same as revision date of module. If String qname parameter
+ * contains ":" the string is evaluated as prefix:name of element. In this
+ * case method will look into import map and extract correct ModuleImport.
+ * If such import is not present in import map the method will throw
+ * {@link YangParseException} <br>
+ * If ModuleImport is present but the value of namespace in ModuleImport is
+ * <code>null</code> the method will throw {@link YangParseException}
+ *
+ * @param qnameString
+ * QName value as String
+ * @param line
+ * line in Yang model document where QName occur.
+ * @return transformed string qname parameter as QName structure.
+ *
+ * @throws YangParseException
+ */
+ private QName parseQName(final String qnameString, final int line) {
+ final QName qname;
+ if (qnameString.indexOf(':') == -1) {
+ qname = QName.create(moduleQName, qnameString);
+ } else {
+ final Iterator<String> split = COLON_SPLITTER.split(qnameString).iterator();
+ final String prefix = split.next();
+ final String name = split.next();
+ if (prefix.equals(moduleBuilder.getPrefix())) {
+ qname = QName.create(moduleQName, name);