* otherwise result may not be valid.
*/
public class ModuleBuilder extends AbstractDocumentedDataNodeContainerBuilder implements DocumentedNodeBuilder {
-
+ private static final QNameModule EMPTY_QNAME_MODULE = QNameModule.cachedReference(QNameModule.create(null, null));
private static final String GROUPING_STR = "Grouping";
private static final String TYPEDEF_STR = "typedef";
private ModuleImpl instance;
private final String sourcePath;
private static final SchemaPath SCHEMA_PATH = SchemaPath.create(Collections.<QName> emptyList(), true);
private String prefix;
- private QNameModule qnameModule = QNameModule.create(null, null);
+ private QNameModule qnameModule = EMPTY_QNAME_MODULE;
private final boolean submodule;
private String belongsTo;
}
public void setNamespace(final URI namespace) {
- this.qnameModule = QNameModule.create(namespace, qnameModule.getRevision());
+ this.qnameModule = QNameModule.cachedReference(QNameModule.create(namespace, qnameModule.getRevision()));
}
public String getPrefix() {
}
public void setRevision(final Date revision) {
- this.qnameModule = QNameModule.create(qnameModule.getNamespace(), revision);
+ this.qnameModule = QNameModule.cachedReference(QNameModule.create(qnameModule.getNamespace(), revision));
}
public void setPrefix(final String prefix) {
public void addModuleImport(final String moduleName, final Date revision, final String prefix) {
checkPrefix(prefix);
checkNotSealed();
- final ModuleImport moduleImport = createModuleImport(moduleName, revision, prefix);
+ final ModuleImport moduleImport = new ModuleImportImpl(moduleName, revision, prefix);
imports.put(prefix, moduleImport);
}
}
}
- private ModuleImport createModuleImport(final String moduleName, final Date revision, final String prefix) {
- return new ModuleImportImpl(moduleName, revision, prefix);
- }
-
private void raiseYangParserException(final String cantAddType, final String type, final String name,
final int currentLine, final int duplicateLine) {
this.submodules = ImmutableSet.<Module> copyOf(builder.submodules);
this.prefix = builder.getPrefix();
- this.qnameModule = QNameModule.create(builder.getNamespace(),
- builder.getRevision() == null ? null : new Date(builder.getRevision().getTime()));
+ this.qnameModule = QNameModule.cachedReference(QNameModule.create(builder.getNamespace(),
+ builder.getRevision() == null ? null : new Date(builder.getRevision().getTime())));
this.yangVersion = builder.getYangVersion();
this.organization = builder.getOrganization();
this.contact = builder.getContact();
+ "] is missing.");
}
+ // FIXME: this is wrong, it has to select the newest revision statement, not the first it encounters.
+ // YANG files are not required to order revisions
Optional<Date> revisionDate = Optional.fromNullable(firstAttributeOf(stmt.declaredSubstatements(),
RevisionStatement.class));
- qNameModule = QNameModule.create(moduleNs.get(), revisionDate.orNull());
+ qNameModule = QNameModule.cachedReference(QNameModule.create(moduleNs.get(), revisionDate.orNull()));
ModuleIdentifier moduleIdentifier = new ModuleIdentifierImpl(stmt.getStatementArgument(),
Optional.<URI> absent(), revisionDate);