import org.opendaylight.yangtools.yang.parser.builder.api.TypeDefinitionBuilder;
import org.opendaylight.yangtools.yang.parser.builder.api.UsesNodeBuilder;
import org.opendaylight.yangtools.yang.parser.util.Comparators;
+import org.opendaylight.yangtools.yang.parser.util.ModuleImportImpl;
import org.opendaylight.yangtools.yang.parser.util.RefineHolder;
import org.opendaylight.yangtools.yang.parser.util.YangParseException;
}
}
- /**
- *
- * Implementation of <code>ModuleImport</code> interface only for the method
- * {@link ModuleBuilder#createModuleImport(String, Date, String)
- * createModuleImport}.
- *
- */
- private class ModuleImportImpl implements ModuleImport {
- final String moduleName;
- final Date revision;
- final String prefix;
-
- private ModuleImportImpl(final String moduleName, final Date revision, final String prefix) {
- this.moduleName = moduleName;
- this.revision = revision;
- this.prefix = prefix;
- }
-
- @Override
- public String getModuleName() {
- return moduleName;
- }
-
- @Override
- public Date getRevision() {
- return revision;
- }
-
- @Override
- public String getPrefix() {
- return prefix;
- }
-
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + ((moduleName == null) ? 0 : moduleName.hashCode());
- result = prime * result + ((revision == null) ? 0 : revision.hashCode());
- result = prime * result + ((prefix == null) ? 0 : prefix.hashCode());
- return result;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj) {
- return true;
- }
- if (obj == null) {
- return false;
- }
- if (getClass() != obj.getClass()) {
- return false;
- }
- ModuleImport other = (ModuleImport) obj;
- if (getModuleName() == null) {
- if (other.getModuleName() != null) {
- return false;
- }
- } else if (!getModuleName().equals(other.getModuleName())) {
- return false;
- }
- if (getRevision() == null) {
- if (other.getRevision() != null) {
- return false;
- }
- } else if (!getRevision().equals(other.getRevision())) {
- return false;
- }
- if (getPrefix() == null) {
- if (other.getPrefix() != null) {
- return false;
- }
- } else if (!getPrefix().equals(other.getPrefix())) {
- return false;
- }
- return true;
- }
-
- @Override
- public String toString() {
- return "ModuleImport[moduleName=" + moduleName + ", revision=" + revision + ", prefix=" + prefix + "]";
- }
- }
-
private ModuleImport createModuleImport(final String moduleName, final Date revision, final String prefix) {
final ModuleImport moduleImport = new ModuleImportImpl(moduleName, revision, prefix);
return moduleImport;
String prefix = module.getPrefix();
SchemaPath parentPath = parent.getPath();
+
+
if(parent instanceof AugmentationSchemaBuilder) {
parentPath = ((AugmentationSchemaBuilder)parent).getTargetNodeSchemaPath();
}
GroupingMember gm = (GroupingMember) child;
if (gm.isAddedByUses()) {
if(usesNode.isAugmenting()) {
- if(child.getQName().getLocalName().equals("paths")) {
- System.out.println();
- }
+ child.setAugmenting(true);
+ }
+ if(usesNode.isAugmenting() && !(usesNode.getParentAugment().getParent() instanceof UsesNodeBuilder)) {
AugmentationSchemaBuilder parentAugment = usesNode.getParentAugment();
ModuleBuilder m = ParserUtils.getParentModule(parentAugment);
- child.setAugmenting(true);
correctNodePathForUsesNodes(child, parentPath, m);
} else {
child.setQName(new QName(ns, rev, prefix, child.getQName().getLocalName()));
--- /dev/null
+/*
+ * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.yangtools.yang.parser.util;
+
+import java.util.Date;
+
+import org.opendaylight.yangtools.yang.model.api.ModuleImport;
+
+public final class ModuleImportImpl implements ModuleImport {
+ private final String moduleName;
+ private final Date revision;
+ private final String prefix;
+
+ public ModuleImportImpl(final String moduleName, final Date revision, final String prefix) {
+ this.moduleName = moduleName;
+ this.revision = revision;
+ this.prefix = prefix;
+ }
+
+ @Override
+ public String getModuleName() {
+ return moduleName;
+ }
+
+ @Override
+ public Date getRevision() {
+ return revision;
+ }
+
+ @Override
+ public String getPrefix() {
+ return prefix;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((moduleName == null) ? 0 : moduleName.hashCode());
+ result = prime * result + ((revision == null) ? 0 : revision.hashCode());
+ result = prime * result + ((prefix == null) ? 0 : prefix.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ ModuleImport other = (ModuleImport) obj;
+ if (getModuleName() == null) {
+ if (other.getModuleName() != null) {
+ return false;
+ }
+ } else if (!getModuleName().equals(other.getModuleName())) {
+ return false;
+ }
+ if (getRevision() == null) {
+ if (other.getRevision() != null) {
+ return false;
+ }
+ } else if (!getRevision().equals(other.getRevision())) {
+ return false;
+ }
+ if (getPrefix() == null) {
+ if (other.getPrefix() != null) {
+ return false;
+ }
+ } else if (!getPrefix().equals(other.getPrefix())) {
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public String toString() {
+ return "ModuleImport[moduleName=" + moduleName + ", revision=" + revision + ", prefix=" + prefix + "]";
+ }
+
+}
+
public static def void fillAugmentTarget(AugmentationSchemaBuilder augment, DataNodeContainerBuilder target) {
for (DataSchemaNodeBuilder child : augment.getChildNodeBuilders()) {
val childCopy = CopyUtils.copy(child, target, false);
- childCopy.setAugmenting(true);
+ setNodeAugmenting(childCopy, augment);
correctNodePath(child, target.getPath());
correctNodePath(childCopy, target.getPath());
try {
throw new YangParseException(augment.getModuleName(), augment.getLine(),
"Failed to perform augmentation: " + e.getMessage());
}
-
}
for (UsesNodeBuilder usesNode : augment.getUsesNodes()) {
val copy = CopyUtils.copyUses(usesNode, target);
}
}
+ private static def void setNodeAugmenting(DataSchemaNodeBuilder child, AugmentationSchemaBuilder augment) {
+ child.setAugmenting(true);
+ if (child instanceof DataNodeContainerBuilder) {
+ val DataNodeContainerBuilder dataNodeChild = child as DataNodeContainerBuilder;
+ for (inner : dataNodeChild.getChildNodeBuilders()) {
+ setNodeAugmenting(inner, augment);
+ }
+ for (uses : dataNodeChild.getUsesNodes()) {
+ uses.setParentAugment(augment);
+ uses.setAugmenting(true);
+ }
+ }
+ }
+
/**
* Add all augment's child nodes to given target.
*