import org.opendaylight.yangtools.yang.parser.builder.impl.NotificationBuilder.NotificationDefinitionImpl;
import org.opendaylight.yangtools.yang.model.api.AugmentationTarget
import org.opendaylight.yangtools.yang.parser.builder.impl.RpcDefinitionBuilder
+import java.net.URI
+import org.opendaylight.yangtools.yang.parser.builder.api.GroupingMember
public final class ParserUtils {
return new SchemaPath(path, schemaPath.isAbsolute());
}
+ public static def SchemaPath correctSchemaPath(SchemaPath old, URI ns, Date revision, String prefix) {
+ val List<QName> newPath = new ArrayList();
+ for (name : old.path) {
+ newPath.add(new QName(ns, revision, prefix, name.localName))
+ }
+ return new SchemaPath(newPath, old.absolute)
+ }
+
/**
* Get module import referenced by given prefix.
*
public static def void fillAugmentTarget(AugmentationSchemaBuilder augment, DataNodeContainerBuilder target) {
for (DataSchemaNodeBuilder child : augment.getChildNodeBuilders()) {
val childCopy = CopyUtils.copy(child, target, false);
- setNodeAugmenting(childCopy, augment);
+ if (augment.parent instanceof UsesNodeBuilder) {
+ setNodeAddedByUses(childCopy);
+ }
+ setNodeAugmenting(childCopy);
correctNodePath(child, target.getPath());
correctNodePath(childCopy, target.getPath());
try {
"Failed to perform augmentation: " + e.getMessage());
}
}
- for (UsesNodeBuilder usesNode : augment.getUsesNodes()) {
- val copy = CopyUtils.copyUses(usesNode, target);
- target.addUsesNode(copy);
- }
}
- private static def void setNodeAugmenting(DataSchemaNodeBuilder child, AugmentationSchemaBuilder augment) {
+ private static def void setNodeAugmenting(DataSchemaNodeBuilder child) {
child.setAugmenting(true);
if (child instanceof DataNodeContainerBuilder) {
val DataNodeContainerBuilder dataNodeChild = child as DataNodeContainerBuilder;
for (inner : dataNodeChild.getChildNodeBuilders()) {
- setNodeAugmenting(inner, augment);
+ setNodeAugmenting(inner);
+ }
+ } else if (child instanceof ChoiceBuilder) {
+ val ChoiceBuilder choiceChild = child as ChoiceBuilder;
+ for (inner : choiceChild.cases) {
+ setNodeAugmenting(inner);
+ }
+ }
+ }
+
+ public static def void setNodeAddedByUses(GroupingMember child) {
+ child.setAddedByUses(true);
+ if (child instanceof DataNodeContainerBuilder) {
+ val DataNodeContainerBuilder dataNodeChild = child as DataNodeContainerBuilder;
+ for (inner : dataNodeChild.getChildNodeBuilders()) {
+ setNodeAddedByUses(inner);
}
- for (uses : dataNodeChild.getUsesNodes()) {
- uses.setParentAugment(augment);
- uses.setAugmenting(true);
+ } else if (child instanceof ChoiceBuilder) {
+ val ChoiceBuilder choiceChild = child as ChoiceBuilder;
+ for (inner : choiceChild.cases) {
+ setNodeAddedByUses(inner);
}
}
}
public static def void fillAugmentTarget(AugmentationSchemaBuilder augment, ChoiceBuilder target) {
for (DataSchemaNodeBuilder builder : augment.getChildNodeBuilders()) {
val childCopy = CopyUtils.copy(builder, target, false);
- setNodeAugmenting(childCopy, augment)
+ if (augment.parent instanceof UsesNodeBuilder) {
+ setNodeAddedByUses(childCopy);
+ }
+ setNodeAugmenting(childCopy)
correctNodePath(builder, target.getPath());
correctNodePath(childCopy, target.getPath());
target.addCase(childCopy);
}
public static def getRpc(ModuleBuilder module,String name) {
- for(rpc : module.rpcs) {
+ for(rpc : module.getRpcs()) {
if(name == rpc.QName.localName) {
return rpc;
}
}
public static def getNotification(ModuleBuilder module,String name) {
- for(notification : module.notifications) {
+ for(notification : module.getNotifications()) {
if(name == notification.QName.localName) {
return notification;
}
}
return parent as ModuleBuilder;
}
- }
-
\ No newline at end of file
+
+}
+