package org.opendaylight.yangtools.yang.parser.builder.impl;
-import com.google.common.base.Optional;
+import static com.google.common.base.Preconditions.checkNotNull;
+
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import java.net.URI;
import java.util.Set;
import java.util.TreeSet;
import org.opendaylight.yangtools.concepts.Immutable;
+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;
public final class ModuleImpl extends AbstractDocumentedDataNodeContainer implements Module, Immutable {
- private final URI namespace;
+ private final QNameModule qnameModule;
private final String name;
private final String sourcePath;
- private final Optional<Date> revision;
private final String prefix;
private final String yangVersion;
private final String organization;
*
*
* <b>Note</b>Constructor has intentionality limited visibility to package, since
- * this class should be only instantied via builders.
+ * this class should be only instantiated via builders.
*
* @param name
* @param sourcePath
*/
ModuleImpl(final String name, final String sourcePath, final ModuleBuilder builder) {
super(builder);
- this.name = name;
- this.sourcePath = sourcePath;
- this.imports = ImmutableSet.<ModuleImport> copyOf(builder.imports);
- this.namespace = builder.getNamespace();
+ this.name = checkNotNull(name, "Missing name");
+ this.sourcePath = sourcePath; //TODO: can this be nullable?
+ this.imports = ImmutableSet.<ModuleImport> copyOf(builder.imports.values());
this.prefix = builder.getPrefix();
- this.revision = builder.getRevision() == null ? Optional.<Date>absent():
- Optional.of(new Date(builder.getRevision().getTime()));
+
+ this.qnameModule = 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();
this.extensionNodes = ImmutableList.copyOf(builder.getExtensions());
this.identities = ImmutableSet.copyOf(builder.getIdentities());
this.unknownNodes = ImmutableList.copyOf(builder.getExtensionInstances());
- this.source = builder.source;
+ this.source = checkNotNull(builder.getSource(), "Missing source");
}
@Override
public URI getNamespace() {
- return namespace;
+ return qnameModule.getNamespace();
}
@Override
@Override
public Date getRevision() {
- if (revision.isPresent()) {
- return new Date(revision.get().getTime());
- } else {
- return null;
- }
+ return qnameModule.getRevision();
}
@Override
return unknownNodes;
}
+ @Override
public String getSource() {
return source;
}
public int hashCode() {
final int prime = 31;
int result = 1;
- result = prime * result + ((namespace == null) ? 0 : namespace.hashCode());
result = prime * result + ((name == null) ? 0 : name.hashCode());
- result = prime * result + ((revision == null) ? 0 : revision.hashCode());
result = prime * result + ((yangVersion == null) ? 0 : yangVersion.hashCode());
+ result = prime * result + qnameModule.hashCode();
return result;
}
return false;
}
ModuleImpl other = (ModuleImpl) obj;
- if (namespace == null) {
- if (other.namespace != null) {
- return false;
- }
- } else if (!namespace.equals(other.namespace)) {
- return false;
- }
if (name == null) {
if (other.name != null) {
return false;
} else if (!name.equals(other.name)) {
return false;
}
- if (revision == null) {
- if (other.revision != null) {
- return false;
- }
- } else if (!revision.equals(other.revision)) {
+ if (!qnameModule.equals(other.qnameModule)) {
return false;
}
if (yangVersion == null) {
public String toString() {
StringBuilder sb = new StringBuilder(ModuleImpl.class.getSimpleName());
sb.append("[");
- sb.append("name=" + name);
- sb.append(", namespace=" + namespace);
- sb.append(", revision=" + revision);
- sb.append(", prefix=" + prefix);
- sb.append(", yangVersion=" + yangVersion);
+ sb.append("name=").append(name);
+ sb.append(", namespace=").append(getNamespace());
+ sb.append(", revision=").append(getRevision());
+ sb.append(", prefix=").append(prefix);
+ sb.append(", yangVersion=").append(yangVersion);
sb.append("]");
return sb.toString();
}
-}
\ No newline at end of file
+
+ @Override
+ public QNameModule getQNameModule() {
+ return qnameModule;
+ }
+}