throw new IllegalArgumentException("I wasn't possible to get namespace for prefix " + prefix);
}
- Module youngestModule = findYoungestModuleByNamespace(schemaContext, namespace);
- return QName.create(namespace, youngestModule.getRevision(), identifier);
- }
-
- // FIXME: this method should be provided by SchemaContext
- private static Module findYoungestModuleByNamespace(final SchemaContext schemaContext, final URI namespace) {
- Module result = null;
- for (Module module : schemaContext.findModuleByNamespace(namespace)) {
- if (result != null) {
- if (module.getRevision().after(result.getRevision())) {
- result = module;
- }
- } else {
- result = module;
- }
- }
- return result;
+ Module module = schemaContext.findModuleByNamespaceAndRevision(namespace, null);
+ return QName.create(module.getQNameModule(), identifier);
}
private static String trimIfEndIs(final String str, final char end) {
*/
package org.opendaylight.yangtools.yang.parser.builder.impl;
-import java.util.ArrayList;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
SchemaNodeBuilder parent = (SchemaNodeBuilder) newParent;
QName parentQName = parent.getQName();
if (updateQName) {
- newQName = new QName(parentQName.getNamespace(), parentQName.getRevision(), parentQName.getPrefix(),
- old.getQName().getLocalName());
+ newQName = QName.create(parentQName, old.getQName().getLocalName());
} else {
newQName = old.getQName();
}
*/
package org.opendaylight.yangtools.yang.parser.builder.impl;
+import com.google.common.base.Preconditions;
import com.google.common.io.ByteSource;
import java.io.IOException;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
+
import org.apache.commons.io.IOUtils;
import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.QNameModule;
import org.opendaylight.yangtools.yang.model.api.AugmentationSchema;
import org.opendaylight.yangtools.yang.model.api.Deviation;
import org.opendaylight.yangtools.yang.model.api.ExtensionDefinition;
private final String name;
private final String sourcePath;
private static final SchemaPath SCHEMA_PATH = SchemaPath.create(Collections.<QName> emptyList(), true);
- private URI namespace;
private String prefix;
- private Date revision;
+ private QNameModule qnameModule = QNameModule.create(null, null);
private final boolean submodule;
private String belongsTo;
submodule = false;
yangVersion = base.getYangVersion();
actualPath.push(this);//FIXME: this escapes constructor
- namespace = base.getNamespace();
prefix = base.getPrefix();
- revision = base.getRevision();
+ qnameModule = base.getQNameModule();
augments.addAll(base.getAugmentations());
rpcs.addAll(base.getRpcs());
}
public URI getNamespace() {
- return namespace;
+ return qnameModule.getNamespace();
+ }
+
+ public QNameModule getQNameModule() {
+ return qnameModule;
+ }
+
+ public void setQNameModule(final QNameModule qnameModule) {
+ this.qnameModule = Preconditions.checkNotNull(qnameModule);
}
public void setNamespace(final URI namespace) {
- this.namespace = namespace;
+ this.qnameModule = QNameModule.create(namespace, qnameModule.getRevision());
}
public String getPrefix() {
}
public Date getRevision() {
- return revision;
+ return qnameModule.getRevision();
}
protected Set<ModuleImport> getImports() {
}
public void setRevision(final Date revision) {
- this.revision = revision;
+ this.qnameModule = QNameModule.create(qnameModule.getNamespace(), revision);
}
public void setPrefix(final String prefix) {
final int prime = 31;
int result = 1;
result = prime * result + ((name == null) ? 0 : name.hashCode());
- result = prime * result + ((namespace == null) ? 0 : namespace.hashCode());
- result = prime * result + ((revision == null) ? 0 : revision.hashCode());
+ result = prime * result + qnameModule.hashCode();
result = prime * result + ((prefix == null) ? 0 : prefix.hashCode());
return result;
} else if (!name.equals(other.name)) {
return false;
}
- if (namespace == null) {
- if (other.namespace != null) {
- return false;
- }
- } else if (!namespace.equals(other.namespace)) {
+ if (!qnameModule.equals(other.qnameModule)) {
return false;
}
if (prefix == null) {
} else if (!prefix.equals(other.prefix)) {
return false;
}
- if (revision == null) {
- if (other.revision != null) {
- return false;
- }
- } else if (!revision.equals(other.revision)) {
- return false;
- }
return true;
}
import com.google.common.base.Preconditions;
import com.google.common.collect.HashBiMap;
import com.google.common.io.ByteSource;
+
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
+
import javax.annotation.concurrent.Immutable;
+
import org.antlr.v4.runtime.ANTLRInputStream;
import org.antlr.v4.runtime.CommonTokenStream;
import org.antlr.v4.runtime.tree.ParseTree;
DataNodeContainerBuilder usesParent = ((UsesNodeBuilder) parent).getParent();
newPath.addAll(usesParent.getPath().getPath());
- URI ns;
- Date revision;
- String prefix;
- QName baseQName = usesParent.getQName();
+ final QName baseQName = usesParent.getQName();
+ final QNameModule qnm;
+ final String prefix;
if (baseQName == null) {
ModuleBuilder m = BuilderUtils.getParentModule(usesParent);
- ns = m.getNamespace();
- revision = m.getRevision();
+ qnm = m.getQNameModule();
prefix = m.getPrefix();
} else {
- ns = baseQName.getNamespace();
- revision = baseQName.getRevision();
+ qnm = baseQName.getModule();
prefix = baseQName.getPrefix();
}
- final QNameModule qm = QNameModule.create(ns, revision);
for (QName qn : oldSchemaPath.getPathFromRoot()) {
- newPath.add(QName.create(qm, prefix, qn.getLocalName()));
+ newPath.add(QName.create(qnm, prefix, qn.getLocalName()));
}
} else {
Iterable<QName> oldPath = oldSchemaPath.getPathFromRoot();
for (QName qn : oldPath) {
- URI ns = module.getNamespace();
- Date rev = module.getRevision();
+ QNameModule qnm = module.getQNameModule();
String localPrefix = qn.getPrefix();
if (localPrefix != null && !localPrefix.isEmpty()) {
ModuleBuilder currentModule = BuilderUtils.findModuleFromBuilders(modules, module, localPrefix,
throw new YangParseException(module.getName(), augment.getLine(), "Module with prefix "
+ localPrefix + " not found.");
}
- ns = m.getNamespace();
- rev = m.getRevision();
+ qnm = m.getQNameModule();
} else {
- ns = currentModule.getNamespace();
- rev = currentModule.getRevision();
+ qnm = currentModule.getQNameModule();
}
}
- newPath.add(new QName(ns, rev, localPrefix, qn.getLocalName()));
+ newPath.add(new QName(qnm.getNamespace(), qnm.getRevision(), localPrefix, qn.getLocalName()));
}
}
augment.setTargetNodeSchemaPath(SchemaPath.create(newPath, true));