*/
package org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
-
-import org.opendaylight.yangtools.yang.parser.spi.source.ModuleNameToModuleQName;
+import java.net.URI;
import java.util.Collection;
+import java.util.Date;
import java.util.HashSet;
import java.util.LinkedList;
-import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
-import java.net.URI;
-import java.util.Date;
-import org.opendaylight.yangtools.yang.parser.builder.impl.ModuleImpl;
import java.util.List;
import java.util.Set;
+
+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;
import org.opendaylight.yangtools.yang.model.api.FeatureDefinition;
import org.opendaylight.yangtools.yang.model.api.IdentitySchemaNode;
+import org.opendaylight.yangtools.yang.model.api.Module;
import org.opendaylight.yangtools.yang.model.api.ModuleImport;
import org.opendaylight.yangtools.yang.model.api.NotificationDefinition;
import org.opendaylight.yangtools.yang.model.api.RpcDefinition;
import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
-import org.opendaylight.yangtools.concepts.Immutable;
-import org.opendaylight.yangtools.yang.model.api.Module;
-import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
+import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.IncludeStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.ModuleStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.SubmoduleStatement;
+import org.opendaylight.yangtools.yang.parser.builder.impl.ModuleImpl;
+import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
+import org.opendaylight.yangtools.yang.parser.spi.source.ModuleNameToModuleQName;
+
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableSet;
+import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.IncludedModuleContext;
-public class ModuleEffectiveStatementImpl extends
- AbstractEffectiveDocumentedDataNodeContainer<String, ModuleStatement>
+public class ModuleEffectiveStatementImpl extends AbstractEffectiveDocumentedDataNodeContainer<String, ModuleStatement>
implements Module, Immutable {
- private final QNameModule qnameModule;
+ private final QNameModule qNameModule;
private final String name;
private String sourcePath;
private String prefix;
private ImmutableList<UnknownSchemaNode> unknownNodes;
private String source;
- public ModuleEffectiveStatementImpl(
- StmtContext<String, ModuleStatement, ?> ctx) {
+ public ModuleEffectiveStatementImpl(StmtContext<String, ModuleStatement, ?> ctx) {
super(ctx);
name = argument();
- qnameModule = ctx.getFromNamespace(ModuleNameToModuleQName.class, name);
- // :TODO init other fields
+ qNameModule = ctx.getFromNamespace(ModuleNameToModuleQName.class, name);
- initSubstatementCollections();
+ for (EffectiveStatement<?, ?> effectiveStatement : effectiveSubstatements()) {
+ if (effectiveStatement instanceof PrefixEffectiveStatementImpl) {
+ prefix = ((PrefixEffectiveStatementImpl) effectiveStatement).argument();
+ }
+ if (effectiveStatement instanceof YangVersionEffectiveStatementImpl) {
+ yangVersion = ((YangVersionEffectiveStatementImpl) effectiveStatement).argument();
+ }
+ if (effectiveStatement instanceof OrganizationEffectiveStatementImpl) {
+ organization = ((OrganizationEffectiveStatementImpl) effectiveStatement).argument();
+ }
+ if (effectiveStatement instanceof ContactEffectiveStatementImpl) {
+ contact = ((ContactEffectiveStatementImpl) effectiveStatement).argument();
+ }
+ }
+
+ source = ctx.getStatementSource().name();
+
+ //ctx.getFromNamespace(IncludedModuleContext.class, ) //ModuleIdentifier
+ initSubstatementCollections();
}
private void initSubstatementCollections() {
Collection<? extends EffectiveStatement<?, ?>> effectiveSubstatements = effectiveSubstatements();
- LinkedList<UnknownSchemaNode> unknownNodes = new LinkedList<UnknownSchemaNode>();
- HashSet<AugmentationSchema> augmentations = new HashSet<AugmentationSchema>();
+ List<UnknownSchemaNode> unknownNodesInit = new LinkedList<>();
+ Set<AugmentationSchema> augmentationsInit = new HashSet<>();
+ Set<ModuleImport> importsInit = new HashSet<>();
+ Set<Module> submodulesInit = new HashSet<>();
+ Set<NotificationDefinition> notificationsInit = new HashSet<>();
+ Set<RpcDefinition> rpcsInit = new HashSet<>();
+ Set<Deviation> deviationsInit = new HashSet<>();
+ Set<IdentitySchemaNode> identitiesInit = new HashSet<>();
+ Set<FeatureDefinition> featuresInit = new HashSet<>();
+ List<ExtensionDefinition> extensionNodesInit = new LinkedList<>();
+
+
for (EffectiveStatement<?, ?> effectiveStatement : effectiveSubstatements) {
if (effectiveStatement instanceof UnknownSchemaNode) {
- UnknownSchemaNode unknownNode = (UnknownSchemaNode) effectiveStatement;
- unknownNodes.add(unknownNode);
+ unknownNodesInit.add((UnknownSchemaNode) effectiveStatement);
}
if (effectiveStatement instanceof AugmentationSchema) {
- AugmentationSchema augmentationSchema = (AugmentationSchema) effectiveStatement;
- augmentations.add(augmentationSchema);
+ augmentationsInit.add((AugmentationSchema) effectiveStatement);
+ }
+ if (effectiveStatement instanceof ModuleImport) {
+ importsInit.add((ModuleImport) effectiveStatement);
+ }
+ if (effectiveStatement instanceof IncludeEffectiveStatementImpl) {
+// ((IncludeEffectiveStatementImpl) effectiveStatement).
+ }
+ if (effectiveStatement instanceof NotificationDefinition) {
+ notificationsInit.add((NotificationDefinition) effectiveStatement);
+ }
+ if (effectiveStatement instanceof RpcDefinition) {
+ rpcsInit.add((RpcDefinition) effectiveStatement);
+ }
+ if (effectiveStatement instanceof Deviation) {
+ deviationsInit.add((Deviation) effectiveStatement);
+ }
+ if (effectiveStatement instanceof IdentitySchemaNode) {
+ identitiesInit.add((IdentitySchemaNode) effectiveStatement);
+ }
+ if (effectiveStatement instanceof FeatureDefinition) {
+ featuresInit.add((FeatureDefinition) effectiveStatement);
+ }
+ if (effectiveStatement instanceof ExtensionDefinition) {
+ extensionNodesInit.add((ExtensionDefinition) effectiveStatement);
}
}
- this.unknownNodes = ImmutableList.copyOf(unknownNodes);
- this.augmentations = ImmutableSet.copyOf(augmentations);
-
- // :TODO other substatement collections ...
+ this.unknownNodes = ImmutableList.copyOf(unknownNodesInit);
+ this.augmentations = ImmutableSet.copyOf(augmentationsInit);
+ this.imports = ImmutableSet.copyOf(importsInit);
+ this.submodules = ImmutableSet.copyOf(submodulesInit);
+ this.notifications = ImmutableSet.copyOf(notificationsInit);
+ this.rpcs = ImmutableSet.copyOf(rpcsInit);
+ this.deviations = ImmutableSet.copyOf(deviationsInit);
+ this.identities = ImmutableSet.copyOf(identitiesInit);
+ this.features = ImmutableSet.copyOf(featuresInit);
+ this.extensionNodes = ImmutableList.copyOf(extensionNodesInit);
}
@Override
@Override
public URI getNamespace() {
- return qnameModule.getNamespace();
+ return qNameModule.getNamespace();
}
@Override
@Override
public Date getRevision() {
- return qnameModule.getRevision();
+ return qNameModule.getRevision();
}
@Override
final int prime = 31;
int result = 1;
result = prime * result + ((name == null) ? 0 : name.hashCode());
- result = prime * result
- + ((yangVersion == null) ? 0 : yangVersion.hashCode());
- result = prime * result + qnameModule.hashCode();
+ result = prime * result + ((yangVersion == null) ? 0 : yangVersion.hashCode());
+ result = prime * result + qNameModule.hashCode();
return result;
}
} else if (!name.equals(other.name)) {
return false;
}
- if (!qnameModule.equals(other.qnameModule)) {
+ if (!qNameModule.equals(other.qNameModule)) {
return false;
}
if (yangVersion == null) {
return true;
}
- // private static <T extends SchemaNode> Set<T> toImmutableSortedSet(final
- // Set<T> original) {
- // TreeSet<T> sorted = new TreeSet<>(Comparators.SCHEMA_NODE_COMP);
- // sorted.addAll(original);
- // return Collections.unmodifiableSet(sorted);
- // }
-
@Override
public String toString() {
StringBuilder sb = new StringBuilder(ModuleImpl.class.getSimpleName());
@Override
public QNameModule getQNameModule() {
- return qnameModule;
+ return qNameModule;
}
}