[ONOS-6784] Leafref and identity ref under grouping.
Change-Id: Ic2d950efc6da25ed83fe4b709e2800f45f01edfa
diff --git a/runtime/src/main/java/org/onosproject/yang/runtime/impl/YobLeafNodeHandler.java b/runtime/src/main/java/org/onosproject/yang/runtime/impl/YobLeafNodeHandler.java
index f407d13..8a496cd 100644
--- a/runtime/src/main/java/org/onosproject/yang/runtime/impl/YobLeafNodeHandler.java
+++ b/runtime/src/main/java/org/onosproject/yang/runtime/impl/YobLeafNodeHandler.java
@@ -18,6 +18,7 @@
import org.onosproject.yang.compiler.datamodel.YangLeaf;
import org.onosproject.yang.compiler.datamodel.YangSchemaNode;
+import org.onosproject.yang.compiler.datamodel.YangType;
import org.onosproject.yang.compiler.datamodel.utils.builtindatatype.YangDataTypes;
import org.onosproject.yang.model.DataNode;
import org.onosproject.yang.model.LeafNode;
@@ -29,6 +30,7 @@
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
+import static org.onosproject.yang.runtime.impl.ModelConverterUtil.isTypeEmpty;
import static org.onosproject.yang.runtime.impl.YobConstants.E_FAIL_TO_INVOKE_METHOD;
import static org.onosproject.yang.runtime.impl.YobConstants.L_FAIL_TO_INVOKE_METHOD;
import static org.onosproject.yang.runtime.impl.YobUtils.getChildSchemaNode;
@@ -76,16 +78,13 @@
String setterInParent = referredSchema.getJavaAttributeName();
Object parentObj = curWb.getParentObject(registry, schemaNode);
parentClass = parentObj.getClass();
- YangDataTypes dataType = ((YangLeaf) referredSchema).getDataType()
- .getDataType();
- if (((LeafNode) leafNode).value() != null ||
- dataType == YangDataTypes.EMPTY) {
+ YangType<?> type = ((YangLeaf) referredSchema).getDataType();
+ YangDataTypes dataType = type.getDataType();
+ if (((LeafNode) leafNode).value() != null || isTypeEmpty(type)) {
Field leafName = parentClass.getDeclaredField(setterInParent);
- Method setterMethod = parentClass.getDeclaredMethod(setterInParent,
- leafName.getType());
-
- setDataFromStringValue(dataType,
- ((LeafNode) leafNode).value(),
+ Method setterMethod = parentClass.getDeclaredMethod(
+ setterInParent, leafName.getType());
+ setDataFromStringValue(dataType, ((LeafNode) leafNode).value(),
setterMethod, parentObj, referredSchema,
curWb.schemaNode());
}
diff --git a/runtime/src/main/java/org/onosproject/yang/runtime/impl/YobUtils.java b/runtime/src/main/java/org/onosproject/yang/runtime/impl/YobUtils.java
index 6aff30d..9fe5691 100644
--- a/runtime/src/main/java/org/onosproject/yang/runtime/impl/YobUtils.java
+++ b/runtime/src/main/java/org/onosproject/yang/runtime/impl/YobUtils.java
@@ -17,12 +17,12 @@
package org.onosproject.yang.runtime.impl;
import org.onosproject.yang.compiler.datamodel.RpcNotificationContainer;
-import org.onosproject.yang.compiler.datamodel.YangDerivedInfo;
import org.onosproject.yang.compiler.datamodel.YangIdentity;
import org.onosproject.yang.compiler.datamodel.YangIdentityRef;
import org.onosproject.yang.compiler.datamodel.YangLeaf;
import org.onosproject.yang.compiler.datamodel.YangLeafList;
import org.onosproject.yang.compiler.datamodel.YangLeafRef;
+import org.onosproject.yang.compiler.datamodel.YangLeavesHolder;
import org.onosproject.yang.compiler.datamodel.YangList;
import org.onosproject.yang.compiler.datamodel.YangNode;
import org.onosproject.yang.compiler.datamodel.YangSchemaNode;
@@ -135,7 +135,7 @@
break;
case DERIVED:
- parseDerivedTypeInfo(parentSetter, parentObj, value.toString(),
+ parseDerivedTypeInfo(parentSetter, parentObj, value,
false, schemaNode);
break;
@@ -145,13 +145,13 @@
break;
case UNION:
- parseDerivedTypeInfo(parentSetter, parentObj, value.toString(),
+ parseDerivedTypeInfo(parentSetter, parentObj, value,
false, schemaNode);
break;
case LEAFREF:
parseLeafRefTypeInfo(parentSetter, parentObj, value,
- schemaNode, parentSchema);
+ schemaNode);
break;
case ENUMERATION:
@@ -185,11 +185,17 @@
*/
static void parseDerivedTypeInfo(Method parentSetter,
Object parentObj,
- String value,
+ Object value,
boolean isEnum,
YangSchemaNode leaf)
throws InvocationTargetException, IllegalAccessException,
NoSuchMethodException {
+ String val;
+ if (value == null) {
+ val = "true";
+ } else {
+ val = value.toString();
+ }
Class<?> childSetClass = null;
Constructor<?> childConstructor = null;
Object childValue = null;
@@ -201,6 +207,7 @@
String qualifiedClassName = leaf.getJavaPackage() + PERIOD +
getCapitalCase(leaf.getJavaClassNameOrBuiltInType());
+
ClassLoader classLoader = parentObj.getClass().getClassLoader();
try {
childSetClass = classLoader.loadClass(qualifiedClassName);
@@ -234,7 +241,7 @@
}
}
if (childMethod != null) {
- childValue = childMethod.invoke(childObject, value);
+ childValue = childMethod.invoke(childObject, val);
}
parentSetter.invoke(parentObj, childValue);
}
@@ -268,9 +275,11 @@
leaf = leaf.getReferredSchema();
}
+ String pName = parentSchema.getJavaClassNameOrBuiltInType()
+ .toLowerCase() + PERIOD;
+
String qualifiedClassName = parentSchema.getJavaPackage() + PERIOD +
- parentSchema.getJavaAttributeName().toLowerCase() +
- PERIOD + getCapitalCase(leaf.getJavaAttributeName());
+ pName + getCapitalCase(leaf.getJavaAttributeName());
ClassLoader classLoader = parentObject.getClass().getClassLoader();
@@ -294,21 +303,18 @@
/**
* To set data into parent setter method from string value for leafref type.
*
- * @param parentSetterMethod the parent setter method to be invoked
- * @param parentObject the parent build object on which to invoke
- * the method
- * @param leafValue leaf value to be set
- * @param schemaNode schema information
- * @param parentSchema schema information of parent
+ * @param parentSetter the parent setter method to be invoked
+ * @param parentObject the parent build object on which to invoke
+ * the method
+ * @param leafValue leaf value to be set
+ * @param schemaNode schema information
* @throws InvocationTargetException if method could not be invoked
* @throws IllegalAccessException if method could not be accessed
* @throws NoSuchMethodException if method does not exist
*/
- static void parseLeafRefTypeInfo(Method parentSetterMethod,
- Object parentObject,
+ static void parseLeafRefTypeInfo(Method parentSetter, Object parentObject,
Object leafValue,
- YangSchemaNode schemaNode,
- YangSchemaNode parentSchema)
+ YangSchemaNode schemaNode)
throws InvocationTargetException, IllegalAccessException,
NoSuchMethodException {
while (schemaNode.getReferredSchema() != null) {
@@ -325,25 +331,16 @@
}
YangType type = leafRef.getEffectiveDataType();
- if (type.getDataType() == YangDataTypes.DERIVED &&
- schemaNode.getJavaPackage().equals(YobConstants.JAVA_LANG)) {
- /*
- * If leaf is inside grouping, then its return type will be of type
- * Object and if its actual type is derived type then get the
- * effective built-in type and set the value.
- */
- YangDerivedInfo derivedInfo = (YangDerivedInfo) leafRef
- .getEffectiveDataType()
- .getDataTypeExtendedInfo();
- YobUtils.setDataFromStringValue(derivedInfo.getEffectiveBuiltInType(),
- leafValue, parentSetterMethod,
- parentObject, schemaNode, parentSchema);
+ Object refLeaf = leafRef.getReferredLeafOrLeafList();
+ YangLeavesHolder parent;
+ if (refLeaf instanceof YangLeaf) {
+ parent = ((YangLeaf) refLeaf).getContainedIn();
} else {
- YobUtils.setDataFromStringValue(type.getDataType(),
- leafValue, parentSetterMethod,
- parentObject,
- schemaNode, parentSchema);
+ parent = ((YangLeafList) refLeaf).getContainedIn();
}
+ setDataFromStringValue(type.getDataType(), leafValue, parentSetter,
+ parentObject, (YangSchemaNode) refLeaf,
+ (YangSchemaNode) parent);
}
diff --git a/runtime/src/test/java/org/onosproject/yang/runtime/impl/YobAugmentTest.java b/runtime/src/test/java/org/onosproject/yang/runtime/impl/YobAugmentTest.java
index 4c5ed88..ab29e12 100644
--- a/runtime/src/test/java/org/onosproject/yang/runtime/impl/YobAugmentTest.java
+++ b/runtime/src/test/java/org/onosproject/yang/runtime/impl/YobAugmentTest.java
@@ -17,24 +17,24 @@
package org.onosproject.yang.runtime.impl;
import org.junit.Test;
-
import org.onosproject.yang.gen.v1.ymsiptopology.rev20140101.ymsiptopology.node.DefaultAugmentedTopoNode;
import org.onosproject.yang.gen.v1.ymstopology.rev20140101.ymstopology.DefaultNode;
import org.onosproject.yang.gen.v1.yrtietfnetwork.rev20151208.yrtietfnetwork.DefaultNetworks;
import org.onosproject.yang.gen.v1.yrtietfnetwork.rev20151208.yrtietfnetwork.networks.DefaultNetwork;
import org.onosproject.yang.gen.v1.yrtietfnetwork.rev20151208.yrtietfnetwork.networks.Network;
+import org.onosproject.yang.gen.v1.yrtietftetopology.rev20160317.yrtietftetopology.TeTemplateName;
import org.onosproject.yang.gen.v1.yrtietftetopology.rev20160317.yrtietftetopology.networks.network.link.DefaultAugmentedNtLink;
import org.onosproject.yang.gen.v1.yrtietftetopology.rev20160317.yrtietftetopology.telinkaugment.te.Config;
import org.onosproject.yang.gen.v1.yrtietftetopology.rev20160317.yrtietftetopology.telinkconfig.bundlestacklevel.Bundle;
import org.onosproject.yang.gen.v1.yrtietftetopology.rev20160317.yrtietftetopology.telinkconfig.bundlestacklevel.bundle.bundledlinks.BundledLink;
+import org.onosproject.yang.gen.v1.yrtnetworktopology.rev20151208.yrtnetworktopology.TpId;
import org.onosproject.yang.gen.v1.yrtnetworktopology.rev20151208.yrtnetworktopology.networks.network.DefaultAugmentedNdNetwork;
-import org.onosproject.yang.gen.v1.yrtnetworktopology.rev20151208.yrtnetworktopology.networks.network.augmentedndnetwork.DefaultLink;
import org.onosproject.yang.gen.v1.yrtnetworktopology.rev20151208.yrtnetworktopology.networks.network.augmentedndnetwork.Link;
import org.onosproject.yang.model.DataNode;
+import org.onosproject.yang.model.DefaultResourceData;
import org.onosproject.yang.model.ModelObject;
import org.onosproject.yang.model.ModelObjectData;
import org.onosproject.yang.model.ResourceData;
-import org.onosproject.yang.model.DefaultResourceData;
import java.util.List;
@@ -210,17 +210,19 @@
DefaultNetworks networks = ((DefaultNetworks) modelObject);
Network network = networks.network().get(0);
assertThat(network.networkId().toString(), is("network-id"));
- DefaultAugmentedNdNetwork augNw = ((DefaultNetwork) network)
- .augmentation(DefaultAugmentedNdNetwork.class);
+ DefaultAugmentedNdNetwork augNw = network.augmentation(
+ DefaultAugmentedNdNetwork.class);
Link link = augNw.link().get(0);
assertThat(link.linkId().toString(), is("link-id"));
- DefaultAugmentedNtLink augLink = ((DefaultLink) link)
- .augmentation(DefaultAugmentedNtLink.class);
+ DefaultAugmentedNtLink augLink = link.augmentation(
+ DefaultAugmentedNtLink.class);
Config config = augLink.te().config();
- assertThat(config.teLinkTemplate().get(0), is("abc"));
+ TeTemplateName tName = (TeTemplateName) config.teLinkTemplate().get(0);
+ assertThat(tName.string(), is("abc"));
BundledLink bundledLink = ((Bundle) config.bundleStackLevel())
.bundledLinks().bundledLink().get(0);
- assertThat(bundledLink.srcTpRef(), is("101"));
+ TpId id = (TpId) bundledLink.srcTpRef();
+ assertThat(id.uri().string(), is("101"));
assertThat(bundledLink.sequence(), is(100L));
}
}
diff --git a/runtime/src/test/java/org/onosproject/yang/runtime/impl/YobL3VpnSvcTest.java b/runtime/src/test/java/org/onosproject/yang/runtime/impl/YobL3VpnSvcTest.java
index 478855c..191b40e 100644
--- a/runtime/src/test/java/org/onosproject/yang/runtime/impl/YobL3VpnSvcTest.java
+++ b/runtime/src/test/java/org/onosproject/yang/runtime/impl/YobL3VpnSvcTest.java
@@ -17,8 +17,8 @@
package org.onosproject.yang.runtime.impl;
import org.junit.Test;
-
import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.DefaultL3VpnSvc;
+import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.SvcId;
import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.accessvpnpolicy.vpnattachment.attachmentflavor.VpnId;
import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.l3vpnsvc.DefaultSites;
import org.onosproject.yang.gen.v1.ietfl3vpnsvc.rev20160730.ietfl3vpnsvc.l3vpnsvc.DefaultVpnServices;
@@ -304,8 +304,9 @@
assertThat(ipConnection.ipv6().addresses().mask(), is(mask));
assertThat(sna.routingProtocols().routingProtocol().get(0).type()
.getSimpleName(), is("Ospf"));
- assertThat(((VpnId) sna.vpnAttachment().attachmentFlavor()).vpnId(),
- is("10"));
+ SvcId sId = (SvcId) ((VpnId) sna.vpnAttachment().attachmentFlavor())
+ .vpnId();
+ assertThat(sId.string(), is("10"));
assertThat(((VpnId) sna.vpnAttachment().attachmentFlavor()).siteRole()
.getSimpleName(), is("HubRole"));
}
@@ -410,8 +411,9 @@
assertThat(ipConnection.ipv6().addresses().mask(), is(mask));
assertThat(sna.routingProtocols().routingProtocol().get(0).type()
.getSimpleName(), is("Ospf"));
- assertThat(((VpnId) sna.vpnAttachment().attachmentFlavor()).vpnId(),
- is("10"));
+ SvcId sId = (SvcId) ((VpnId) sna.vpnAttachment().attachmentFlavor())
+ .vpnId();
+ assertThat(sId.string(), is("10"));
assertThat(((VpnId) sna.vpnAttachment().attachmentFlavor()).siteRole()
.getSimpleName(), is("HubRole"));
DefaultSite site2 = ((DefaultSite) modelObjectList.get(1));
@@ -432,8 +434,9 @@
assertThat(ipConnection.ipv6().addresses().mask(), is(mask));
assertThat(sna.routingProtocols().routingProtocol().get(0).type()
.getSimpleName(), is("Ospf"));
- assertThat(((VpnId) sna.vpnAttachment().attachmentFlavor()).vpnId(),
- is("10"));
+ sId = (SvcId) ((VpnId) sna.vpnAttachment().attachmentFlavor())
+ .vpnId();
+ assertThat(sId.string(), is("10"));
assertThat(((VpnId) sna.vpnAttachment().attachmentFlavor()).siteRole()
.getSimpleName(), is("HubRole"));
}
@@ -513,8 +516,9 @@
assertThat(ipConnection.ipv6().addresses().mask(), is(mask));
assertThat(sna1.routingProtocols().routingProtocol().get(0).type()
.getSimpleName(), is("Ospf"));
- assertThat(((VpnId) sna1.vpnAttachment().attachmentFlavor()).vpnId(),
- is("10"));
+ SvcId sId = (SvcId) ((VpnId) sna1.vpnAttachment().attachmentFlavor())
+ .vpnId();
+ assertThat(sId.string(), is("10"));
assertThat(((VpnId) sna1.vpnAttachment().attachmentFlavor()).siteRole()
.getSimpleName(), is("HubRole"));
@@ -525,8 +529,8 @@
bearerAttach = bearer.augmentation(DefaultAugmentedL3VpnBearer.class);
assertThat(bearerAttach.bearerAttachment().peMgmtIp().string(), is("192.1.1.1"));
assertThat(bearerAttach.bearerAttachment().peName(), is("pe-name"));
- reqType = ((DefaultRequestedType) bearer.requestedType())
- .augmentation(DefaultAugmentedL3VpnRequestedType.class);
+ reqType = bearer.requestedType().augmentation(
+ DefaultAugmentedL3VpnRequestedType.class);
py = ((PhysicalCase) reqType.requestedTypeProfile()
.requestedTypeChoice()).physical();
assertThat(py.physicalIf(), is("eth0/0/0"));
@@ -542,8 +546,9 @@
assertThat(ipConnection.ipv6().addresses().mask(), is(mask));
assertThat(sna2.routingProtocols().routingProtocol().get(0).type()
.getSimpleName(), is("Ospf"));
- assertThat(((VpnId) sna2.vpnAttachment().attachmentFlavor()).vpnId(),
- is("10"));
+ sId = (SvcId) ((VpnId) sna2.vpnAttachment().attachmentFlavor())
+ .vpnId();
+ assertThat(sId.string(), is("10"));
assertThat(((VpnId) sna2.vpnAttachment().attachmentFlavor()).siteRole()
.getSimpleName(), is("HubRole"));
}
@@ -608,8 +613,9 @@
assertThat(ipConnection.ipv6().addresses().mask(), is(mask));
assertThat(sna.routingProtocols().routingProtocol().get(0).type()
.getSimpleName(), is("Ospf"));
- assertThat(((VpnId) sna.vpnAttachment().attachmentFlavor()).vpnId(),
- is("10"));
+ SvcId sId = (SvcId) ((VpnId) sna.vpnAttachment().attachmentFlavor())
+ .vpnId();
+ assertThat(sId.string(), is("10"));
assertThat(((VpnId) sna.vpnAttachment().attachmentFlavor()).siteRole()
.getSimpleName(), is("HubRole"));
}
diff --git a/runtime/src/test/java/org/onosproject/yang/runtime/impl/YobSimpleDataTypeTest.java b/runtime/src/test/java/org/onosproject/yang/runtime/impl/YobSimpleDataTypeTest.java
index ceffa46..31e2c9d 100644
--- a/runtime/src/test/java/org/onosproject/yang/runtime/impl/YobSimpleDataTypeTest.java
+++ b/runtime/src/test/java/org/onosproject/yang/runtime/impl/YobSimpleDataTypeTest.java
@@ -18,13 +18,18 @@
import org.junit.Test;
import org.onosproject.yang.gen.v1.simpledatatypes.rev20131112.simpledatatypes.DefaultCont;
+import org.onosproject.yang.gen.v1.simpledatatypes.rev20131112.simpledatatypes.gr.Cont3;
import org.onosproject.yang.gen.v1.simpledatatypesll.rev20131112.simpledatatypesll.DefaultCont1;
+import org.onosproject.yang.gen.v1.ytbdatatypes.rev20160826.ytbdatatypes.Leaf7;
import org.onosproject.yang.model.DataNode;
+import org.onosproject.yang.model.DataNode.Builder;
import org.onosproject.yang.model.DefaultResourceData;
import org.onosproject.yang.model.ModelObject;
import org.onosproject.yang.model.ModelObjectData;
import org.onosproject.yang.model.ResourceData;
+import java.util.Base64;
+import java.util.BitSet;
import java.util.List;
import static org.hamcrest.MatcherAssert.assertThat;
@@ -44,10 +49,10 @@
private static final String DATA_TYPE_NAME_SPACE_LL =
"simple:data:types:ll";
TestYangSerializerContext context = new TestYangSerializerContext();
- private DataNode.Builder dBlr;
+ private Builder dBlr;
private String value;
- public DataNode buildDataNodeForSimpleDataTypes() {
+ private DataNode buildDataNodeForSimpleDataTypes() {
dBlr = initializeDataNode(context);
value = null;
dBlr = addDataNode(dBlr, "cont", DATA_TYPE_NAME_SPACE, value, null);
@@ -221,15 +226,215 @@
dBlr = exitDataNode(dBlr);
value = "/cont";
- dBlr = addDataNode(dBlr, "inst-iden", null, value, null);
+ dBlr = addDataNode(dBlr, "inst-iden", DATA_TYPE_NAME_SPACE, value, null);
dBlr = exitDataNode(dBlr);
+ dBlr = getLeafRefData(dBlr);
dBlr = exitDataNode(dBlr);
return dBlr.build();
}
+ private Builder getLeafRefData(Builder dBlr) {
+ value = "8";
+ dBlr = addDataNode(dBlr, "lref1", DATA_TYPE_NAME_SPACE, value, null);
+ dBlr = exitDataNode(dBlr);
- public DataNode buildDnForLeafListSimpleDataTypes() {
+ value = "val";
+ dBlr = addDataNode(dBlr, "lref2", DATA_TYPE_NAME_SPACE, value, null);
+ dBlr = exitDataNode(dBlr);
+
+ value = "zero";
+ dBlr = addDataNode(dBlr, "lref3", DATA_TYPE_NAME_SPACE, value, null);
+ dBlr = exitDataNode(dBlr);
+
+ value = "b2 b3";
+ dBlr = addDataNode(dBlr, "lref4", DATA_TYPE_NAME_SPACE, value, null);
+ dBlr = exitDataNode(dBlr);
+
+ value = "-92233720368547758.08";
+ dBlr = addDataNode(dBlr, "lref5", DATA_TYPE_NAME_SPACE, value, null);
+ dBlr = exitDataNode(dBlr);
+
+ value = "10";
+ dBlr = addDataNode(dBlr, "lref6", DATA_TYPE_NAME_SPACE, value, null);
+ dBlr = exitDataNode(dBlr);
+
+ value = "enum4";
+ dBlr = addDataNode(dBlr, "lref7", DATA_TYPE_NAME_SPACE, value, null);
+ dBlr = exitDataNode(dBlr);
+
+ value = "-9223372036854.775808";
+ dBlr = addDataNode(dBlr, "lref8", DATA_TYPE_NAME_SPACE, value, null);
+ dBlr = exitDataNode(dBlr);
+
+ value = "MTAxMDEwMTAx";
+ dBlr = addDataNode(dBlr, "lref9", DATA_TYPE_NAME_SPACE, value, null);
+ dBlr = exitDataNode(dBlr);
+
+ value = "";
+ dBlr = addDataNode(dBlr, "lref10", DATA_TYPE_NAME_SPACE, value, null);
+ dBlr = exitDataNode(dBlr);
+
+ value = "";
+ dBlr = addDataNode(dBlr, "lref11", DATA_TYPE_NAME_SPACE, value, null);
+ dBlr = exitDataNode(dBlr);
+
+ value = "b3";
+ dBlr = addDataNode(dBlr, "lref12", DATA_TYPE_NAME_SPACE, value, null);
+ dBlr = exitDataNode(dBlr);
+
+ value = "";
+ dBlr = addDataNode(dBlr, "lref13", DATA_TYPE_NAME_SPACE, value, null);
+ dBlr = exitDataNode(dBlr);
+
+ value = "b1 b2 b3";
+ dBlr = addDataNode(dBlr, "lref14", DATA_TYPE_NAME_SPACE, value, null);
+ dBlr = exitDataNode(dBlr);
+
+ value = "/cont";
+ dBlr = addDataNode(dBlr, "lref15", DATA_TYPE_NAME_SPACE, value, null);
+ dBlr = exitDataNode(dBlr);
+
+ value = "physical";
+ dBlr = addDataNode(dBlr, "lref16", DATA_TYPE_NAME_SPACE, value, null);
+ dBlr = exitDataNode(dBlr);
+
+ value = "784985";
+ dBlr = addDataNode(dBlr, "lref17", DATA_TYPE_NAME_SPACE, value, null);
+ dBlr = exitDataNode(dBlr);
+
+ value = "MTExMTExMTE=";
+ dBlr = addDataNode(dBlr, "lref18", DATA_TYPE_NAME_SPACE, value, null);
+ dBlr = exitDataNode(dBlr);
+
+ value = "hundred";
+ dBlr = addDataNode(dBlr, "lref19", DATA_TYPE_NAME_SPACE, value, null);
+ dBlr = exitDataNode(dBlr);
+
+ value = "leafref";
+ dBlr = addDataNode(dBlr, "lref20", DATA_TYPE_NAME_SPACE, value, null);
+ dBlr = exitDataNode(dBlr);
+
+ value = "val";
+ dBlr = addDataNode(dBlr, "iref1", DATA_TYPE_NAME_SPACE, value, null);
+ dBlr = exitDataNode(dBlr);
+
+ value = "pro";
+ dBlr = addDataNode(dBlr, "iref2", DATA_TYPE_NAME_SPACE, value, null);
+ dBlr = exitDataNode(dBlr);
+
+ value = "physical";
+ dBlr = addDataNode(dBlr, "iref3", DATA_TYPE_NAME_SPACE, value, null);
+ dBlr = exitDataNode(dBlr);
+
+ value = "virtual";
+ dBlr = addDataNode(dBlr, "iref4", DATA_TYPE_NAME_SPACE, value, null);
+ dBlr = exitDataNode(dBlr);
+
+ dBlr = addDataNode(dBlr, "cont3", DATA_TYPE_NAME_SPACE, null, null);
+
+ value = "108";
+ dBlr = addDataNode(dBlr, "llref1", DATA_TYPE_NAME_SPACE, value, null);
+ dBlr = exitDataNode(dBlr);
+
+ value = "val";
+ dBlr = addDataNode(dBlr, "llref2", DATA_TYPE_NAME_SPACE, value, null);
+ dBlr = exitDataNode(dBlr);
+
+ value = "one";
+ dBlr = addDataNode(dBlr, "llref3", DATA_TYPE_NAME_SPACE, value, null);
+ dBlr = exitDataNode(dBlr);
+
+ value = "b1 b3";
+ dBlr = addDataNode(dBlr, "llref4", DATA_TYPE_NAME_SPACE, value, null);
+ dBlr = exitDataNode(dBlr);
+
+ value = "-922337203685470058.08";
+ dBlr = addDataNode(dBlr, "llref5", DATA_TYPE_NAME_SPACE, value, null);
+ dBlr = exitDataNode(dBlr);
+
+ value = "121";
+ dBlr = addDataNode(dBlr, "llref6", DATA_TYPE_NAME_SPACE, value, null);
+ dBlr = exitDataNode(dBlr);
+
+ value = "enum1";
+ dBlr = addDataNode(dBlr, "llref7", DATA_TYPE_NAME_SPACE, value, null);
+ dBlr = exitDataNode(dBlr);
+
+ value = "-9223372036000.775808";
+ dBlr = addDataNode(dBlr, "llref8", DATA_TYPE_NAME_SPACE, value, null);
+ dBlr = exitDataNode(dBlr);
+
+ value = "MTExMTExMTE=";
+ dBlr = addDataNode(dBlr, "llref9", DATA_TYPE_NAME_SPACE, value, null);
+ dBlr = exitDataNode(dBlr);
+
+ value = "";
+ dBlr = addDataNode(dBlr, "llref11", DATA_TYPE_NAME_SPACE, value, null);
+ dBlr = exitDataNode(dBlr);
+
+ value = "b2";
+ dBlr = addDataNode(dBlr, "llref12", DATA_TYPE_NAME_SPACE, value, null);
+ dBlr = exitDataNode(dBlr);
+
+ value = "";
+ dBlr = addDataNode(dBlr, "llref13", DATA_TYPE_NAME_SPACE, value, null);
+ dBlr = exitDataNode(dBlr);
+
+ value = "b1";
+ dBlr = addDataNode(dBlr, "llref14", DATA_TYPE_NAME_SPACE, value, null);
+ dBlr = exitDataNode(dBlr);
+
+ value = "/cont/con2";
+ dBlr = addDataNode(dBlr, "llref15", DATA_TYPE_NAME_SPACE, value, null);
+ dBlr = exitDataNode(dBlr);
+
+ value = "virtual";
+ dBlr = addDataNode(dBlr, "llref16", DATA_TYPE_NAME_SPACE, value, null);
+ dBlr = exitDataNode(dBlr);
+
+ value = "78498522";
+ dBlr = addDataNode(dBlr, "llref17", DATA_TYPE_NAME_SPACE, value, null);
+ dBlr = exitDataNode(dBlr);
+
+ value = "MDEwMTAxMDEw";
+ dBlr = addDataNode(dBlr, "llref18", DATA_TYPE_NAME_SPACE, value, null);
+ dBlr = exitDataNode(dBlr);
+
+ value = "ten";
+ dBlr = addDataNode(dBlr, "llref19", DATA_TYPE_NAME_SPACE, value, null);
+ dBlr = exitDataNode(dBlr);
+
+ value = "leaflistref";
+ dBlr = addDataNode(dBlr, "llref20", DATA_TYPE_NAME_SPACE, value, null);
+ dBlr = exitDataNode(dBlr);
+
+ value = "check";
+ dBlr = addDataNode(dBlr, "lref21", DATA_TYPE_NAME_SPACE, value, null);
+ dBlr = exitDataNode(dBlr);
+
+ value = "val";
+ dBlr = addDataNode(dBlr, "iref1", DATA_TYPE_NAME_SPACE, value, null);
+ dBlr = exitDataNode(dBlr);
+
+ value = "pro";
+ dBlr = addDataNode(dBlr, "iref2", DATA_TYPE_NAME_SPACE, value, null);
+ dBlr = exitDataNode(dBlr);
+
+ value = "physical";
+ dBlr = addDataNode(dBlr, "iref3", DATA_TYPE_NAME_SPACE, value, null);
+ dBlr = exitDataNode(dBlr);
+
+ value = "virtual";
+ dBlr = addDataNode(dBlr, "iref4", DATA_TYPE_NAME_SPACE, value, null);
+ dBlr = exitDataNode(dBlr);
+
+ dBlr = exitDataNode(dBlr);
+ return dBlr;
+ }
+
+
+ private DataNode buildDnForLeafListSimpleDataTypes() {
dBlr = initializeDataNode(context);
value = null;
dBlr = addDataNode(dBlr, "cont1", DATA_TYPE_NAME_SPACE_LL, value, null);
@@ -402,6 +607,7 @@
dBlr = addDataNode(dBlr, "lfenum1", null, value, null);
dBlr = exitDataNode(dBlr);
dBlr = exitDataNode(dBlr);
+
return dBlr.build();
}
@@ -475,6 +681,89 @@
assertThat(cont.identityref1().getSimpleName(), is("Iden"));
assertThat(cont.lfenum1().enumeration(), is(SUCCESSFUL_EXIT));
assertThat(cont.instIden(), is("/cont"));
+ value = 8;
+ assertThat(cont.lref1(), is(value));
+ assertThat(cont.lref2().toString(), is(
+ "class org.onosproject.yang.gen.v1.simpledatatypes" +
+ ".rev20131112.simpledatatypes.Val"));
+ assertThat(cont.lref3().toString(), is("zero"));
+ assertThat(cont.lref4().toString(), is("b2 b3 "));
+ assertThat(cont.lref5().toString(), is("-92233720368547758.08"));
+ value = 10;
+ assertThat(cont.lref6(), is(value));
+ assertThat(cont.lref7().toString(), is("enum4"));
+ assertThat(cont.lref8().toString(), is("-9223372036854.775808"));
+ byte[] arr = Base64.getDecoder().decode("MTAxMDEwMTAx");
+ assertThat(cont.lref9(), is(arr));
+ assertThat(cont.lref10(), is(true));
+ assertThat(cont.lref11().toString(), is("true"));
+ assertThat(cont.lref12().toString(), is("b3 "));
+ assertThat(cont.lref13(), is(true));
+ String bit = Leaf7.toString(cont.lref14());
+ assertThat(bit, is("b1 b2 b3 "));
+ assertThat(cont.lref15(), is("/cont"));
+ assertThat(cont.lref16().toString(), is(
+ "class org.onosproject.yang.gen.v1.ytbdatatypes.rev20160826." +
+ "ytbdatatypes.Physical"));
+ assertThat(cont.lref17().toString(), is("784985"));
+ arr = Base64.getDecoder().decode("MTExMTExMTE=");
+ assertThat(cont.lref18(), is(arr));
+ assertThat(cont.lref19().toString(), is("hundred"));
+ assertThat(cont.lref20(), is("leafref"));
+ assertThat(cont.iref1().toString(), is(
+ "class org.onosproject.yang.gen.v1.simpledatatypes.rev201311" +
+ "12.simpledatatypes.Val"));
+ assertThat(cont.iref2().get(0).toString(), is(
+ "class org.onosproject.yang.gen.v1.simpledatatypes.rev201311" +
+ "12.simpledatatypes.Pro"));
+ assertThat(cont.iref3().toString(), is(
+ "class org.onosproject.yang.gen.v1.ytbdatatypes.rev20160826." +
+ "ytbdatatypes.Physical"));
+ assertThat(cont.iref4().get(0).toString(), is(
+ "class org.onosproject.yang.gen.v1.ytbdatatypes.rev20160826." +
+ "ytbdatatypes.Virtual"));
+ Cont3 cont3 = cont.cont3();
+ value = 108;
+ assertThat(cont3.llref1().get(0), is(value));
+ assertThat(cont3.llref2().get(0).toString(), is(
+ "class org.onosproject.yang.gen.v1.simpledatatypes" +
+ ".rev20131112.simpledatatypes.Val"));
+ assertThat(cont3.llref3().get(0).toString(), is("one"));
+ assertThat(cont3.llref4().get(0).toString(), is("b1 b3 "));
+ assertThat(cont3.llref5().get(0).toString(), is("-922337203685470058.08"));
+ value = 121;
+ assertThat(cont3.llref6().get(0), is(value));
+ assertThat(cont3.llref7().get(0).toString(), is("enum1"));
+ assertThat(cont3.llref8().get(0).toString(), is("-9223372036000.775808"));
+ arr = Base64.getDecoder().decode("MTExMTExMTE=");
+ assertThat(cont3.llref9().get(0), is(arr));
+ assertThat(cont3.llref11().get(0).toString(), is("true"));
+ assertThat(cont3.llref12().get(0).toString(), is("b2 "));
+ assertThat(cont3.llref13().get(0), is(true));
+ bit = Leaf7.toString((BitSet) cont3.llref14().get(0));
+ assertThat(bit, is("b1 "));
+ assertThat(cont3.llref15().get(0), is("/cont/con2"));
+ assertThat(cont3.llref16().get(0).toString(), is(
+ "class org.onosproject.yang.gen.v1.ytbdatatypes.rev20160826." +
+ "ytbdatatypes.Virtual"));
+ assertThat(cont3.llref17().get(0).toString(), is("78498522"));
+ arr = Base64.getDecoder().decode("MDEwMTAxMDEw");
+ assertThat(cont3.llref18().get(0), is(arr));
+ assertThat(cont3.llref19().get(0).toString(), is("ten"));
+ assertThat(cont3.llref20().get(0), is("leaflistref"));
+ assertThat(cont3.lref21(), is("check"));
+ assertThat(cont3.iref1().toString(), is(
+ "class org.onosproject.yang.gen.v1.simpledatatypes.rev201311" +
+ "12.simpledatatypes.Val"));
+ assertThat(cont3.iref2().get(0).toString(), is(
+ "class org.onosproject.yang.gen.v1.simpledatatypes.rev201311" +
+ "12.simpledatatypes.Pro"));
+ assertThat(cont3.iref3().toString(), is(
+ "class org.onosproject.yang.gen.v1.ytbdatatypes.rev20160826." +
+ "ytbdatatypes.Physical"));
+ assertThat(cont3.iref4().get(0).toString(), is(
+ "class org.onosproject.yang.gen.v1.ytbdatatypes.rev20160826." +
+ "ytbdatatypes.Virtual"));
}
diff --git a/runtime/src/test/resources/yobTestYangFiles/simple-data-types.yang b/runtime/src/test/resources/yobTestYangFiles/simple-data-types.yang
index 599649f..1267a0a 100644
--- a/runtime/src/test/resources/yobTestYangFiles/simple-data-types.yang
+++ b/runtime/src/test/resources/yobTestYangFiles/simple-data-types.yang
@@ -1,275 +1,606 @@
module simple-data-types {
- namespace "simple:data:types";
+ namespace "simple:data:types";
- prefix "smpdtp";
- revision 2013-11-12 {
- }
+ prefix "smpdtp";
- identity iden {
- }
-
- typedef tpdfempty {
- type empty;
- }
-
- typedef tpdfbit {
- type bits {
- bit b1;
- bit b2;
- bit b3;
+ import YtbDataTypes {
+ prefix ytb;
}
- }
-
- typedef tpdfun4 {
- type boolean;
- }
-
- typedef tpdfun3 {
- type union {
- type tpdfbit;
- type tpdfempty;
- }
- }
-
- typedef tpdfun2 {
- type union {
- type tpdfun3;
- type tpdfun4;
- }
- }
-
- typedef tpdfun1 {
- type union {
- type uint8;
- type decimal64 {
- fraction-digits 2;
- }
- }
- }
-
- typedef tpdfun0 {
- type enumeration {
- enum "successful exit" {
- value 1;
- }
- enum "grace period expired" {
- value 2;
- }
- }
- }
-
- container cont {
- leaf lfnint8Min {
- type int8;
- }
- leaf lfnint8Max {
- type int8;
- }
- leaf lfnint16Min {
- type int16;
- }
- leaf lfnint16Max {
- type int16;
- }
- leaf lfnint32Min {
- type int32;
- }
- leaf lfnint32Max {
- type int32;
- }
- leaf lfnint64Min {
- type int64;
- }
- leaf lfnint64Max {
- type int64;
- }
- leaf lfnuint8Max {
- type uint8;
- }
- leaf lfnuint16Max {
- type uint16;
- }
- leaf lfnuint32Max {
- type uint32;
- }
- leaf lfuint64Max {
- type uint64;
- }
- leaf lfstr {
- type string;
- }
- leaf lfstr1 {
- type string;
- }
- leaf lfbool1 {
- type boolean;
- }
- leaf lfbool2 {
- type boolean;
- }
- leaf lfbool3 {
- type boolean;
- }
- leaf lfdecimal1 {
- type decimal64 {
- fraction-digits 1;
- }
- }
- leaf lfdecimal2 {
- type decimal64 {
- fraction-digits 2;
- }
- }
- leaf lfdecimal3 {
- type decimal64 {
- fraction-digits 3;
- }
- }
-
- leaf lfdecimal4 {
- type decimal64 {
- fraction-digits 4;
- }
- }
-
- leaf lfdecimal6 {
- type decimal64 {
- fraction-digits 6;
- }
- }
-
- leaf lfenum {
- type enumeration {
- enum enum1;
- enum enum2;
- enum enum3;
- enum enum4;
- }
+ revision 2013-11-12 {
}
- leaf lfbits {
- type bits {
- bit bit1;
- bit bit2;
- bit bit3;
- bit bit4;
- }
+ identity iden {
}
- leaf lfbinary {
- type binary;
- }
-
- leaf lfref1 { //reference to string type
- type leafref {
- path "../lfstr";
- }
+ identity val {
+ base iden;
}
- leaf lfref2 { //reference to number type
- type leafref {
- path "../lfnint8Max";
- }
+ identity pro {
+ base iden;
}
- leaf lfempty {
+ typedef tpdfempty {
type empty;
}
- leaf lfunion1 {
- type union {
- type uint16;
- type string;
+ typedef tpdfbit {
+ type bits {
+ bit b1;
+ bit b2;
+ bit b3;
}
}
- leaf lfunion2 {
+
+ typedef tpdfun4 {
+ type boolean;
+ }
+
+ typedef tpdfun3 {
type union {
+ type tpdfbit;
+ type tpdfempty;
+ }
+ }
+
+ typedef tpdfun2 {
+ type union {
+ type tpdfun3;
+ type tpdfun4;
+ }
+ }
+
+ typedef tpdfun1 {
+ type union {
+ type uint8;
type decimal64 {
fraction-digits 2;
}
- type string;
}
}
- leaf lfunion4 {
- type union {
- type boolean;
- type string;
- }
- }
-
- leaf lfunion5 {
- type union {
- type uint16;
- type string;
- }
- }
-
- leaf lfunion7 {
- type tpdfun3;
- }
-
- leaf lfunion8 {
- type union {
- type uint16;
- type string;
- }
- }
-
- leaf lfunion9 {
- type union {
- type uint16;
- type boolean;
- }
- }
-
- leaf lfunion10 {
- type union {
- type bits {
- bit bt1;
- bit bt2;
+ typedef tpdfun0 {
+ type enumeration {
+ enum "successful exit" {
+ value 1;
}
- type boolean;
+ enum "grace period expired" {
+ value 2;
+ }
}
}
- leaf lfunion11 {
- type union {
- type tpdfun1;
+ container cont {
+ leaf lfnint8Min {
+ type int8;
+ }
+
+ leaf lfnint8Max {
+ type int8;
+ }
+
+ leaf lfnint16Min {
+ type int16;
+ }
+
+ leaf lfnint16Max {
+ type int16;
+ }
+
+ leaf lfnint32Min {
+ type int32;
+ }
+
+ leaf lfnint32Max {
+ type int32;
+ }
+
+ leaf lfnint64Min {
+ type int64;
+ }
+
+ leaf lfnint64Max {
+ type int64;
+ }
+
+ leaf lfnuint8Max {
+ type uint8;
+ }
+
+ leaf lfnuint16Max {
+ type uint16;
+ }
+
+ leaf lfnuint32Max {
+ type uint32;
+ }
+
+ leaf lfuint64Max {
+ type uint64;
+ }
+
+ leaf lfstr {
+ type string;
+ }
+
+ leaf lfstr1 {
+ type string;
+ }
+
+ leaf lfbool1 {
+ type boolean;
+ }
+
+ leaf lfbool2 {
+ type boolean;
+ }
+
+ leaf lfbool3 {
+ type boolean;
+ }
+
+ leaf lfdecimal1 {
+ type decimal64 {
+ fraction-digits 1;
+ }
+ }
+
+ leaf lfdecimal2 {
+ type decimal64 {
+ fraction-digits 2;
+ }
+ }
+
+ leaf lfdecimal3 {
+ type decimal64 {
+ fraction-digits 3;
+ }
+ }
+
+ leaf lfdecimal4 {
+ type decimal64 {
+ fraction-digits 4;
+ }
+ }
+
+ leaf lfdecimal6 {
+ type decimal64 {
+ fraction-digits 6;
+ }
+ }
+
+ leaf lfenum {
+ type enumeration {
+ enum enum1;
+ enum enum2;
+ enum enum3;
+ enum enum4;
+ }
+ }
+
+ leaf lfbits {
+ type bits {
+ bit bit1;
+ bit bit2;
+ bit bit3;
+ bit bit4;
+ }
+ }
+
+ leaf lfbinary {
+ type binary;
+ }
+
+ leaf lfref1 { //reference to string type
+ type leafref {
+ path "../lfstr";
+ }
+ }
+
+ leaf lfref2 { //reference to number type
+ type leafref {
+ path "../lfnint8Max";
+ }
+ }
+
+ leaf lfempty {
+ type empty;
+ }
+
+ leaf lfunion1 {
+ type union {
+ type uint16;
+ type string;
+ }
+ }
+ leaf lfunion2 {
+ type union {
+ type decimal64 {
+ fraction-digits 2;
+ }
+ type string;
+ }
+ }
+
+ leaf lfunion4 {
+ type union {
+ type boolean;
+ type string;
+ }
+ }
+
+ leaf lfunion5 {
+ type union {
+ type uint16;
+ type string;
+ }
+ }
+
+ leaf lfunion7 {
+ type tpdfun3;
+ }
+
+ leaf lfunion8 {
+ type union {
+ type uint16;
+ type string;
+ }
+ }
+
+ leaf lfunion9 {
+ type union {
+ type uint16;
+ type boolean;
+ }
+ }
+
+ leaf lfunion10 {
+ type union {
+ type bits {
+ bit bt1;
+ bit bt2;
+ }
+ type boolean;
+ }
+ }
+
+ leaf lfunion11 {
+ type union {
+ type tpdfun1;
+ type tpdfun2;
+ }
+ }
+
+ leaf lfunion12 {
type tpdfun2;
}
- }
- leaf lfunion12 {
- type tpdfun2;
- }
+ leaf lfunion13 {
+ type tpdfbit;
+ }
- leaf lfunion13 {
- type tpdfbit;
- }
-
- leaf lfunion14 {
- type union {
- type enumeration {
- enum zero;
- enum one;
+ leaf lfunion14 {
+ type union {
+ type enumeration {
+ enum zero;
+ enum one;
+ }
+ type uint16;
}
- type uint16;
+ }
+
+ leaf identityref1 {
+ type identityref {
+ base iden;
+ }
+ }
+
+ leaf lfenum1 {
+ type tpdfun0;
+ }
+
+ leaf inst-iden {
+ type instance-identifier;
+ }
+
+ leaf lref1 {
+ type leafref {
+ path "../lfnint8Min";
+ }
+ }
+
+ leaf lref2 {
+ type leafref {
+ path "../identityref1";
+ }
+ }
+
+ leaf lref3 {
+ type leafref {
+ path "../lfunion14";
+ }
+ }
+
+ leaf lref4 {
+ type leafref {
+ path "../lfunion13";
+ }
+ }
+
+ leaf lref5 {
+ type leafref {
+ path "../lfunion11";
+ }
+ }
+
+ leaf lref6 {
+ type leafref {
+ path "../lfref2";
+ }
+ }
+
+ leaf lref7 {
+ type leafref {
+ path "../lfenum";
+ }
+ }
+
+ leaf lref8 {
+ type leafref {
+ path "../lfdecimal6";
+ }
+ }
+
+ leaf lref9 {
+ type leafref {
+ path "/ytb:leaf12";
+ }
+ }
+
+ leaf lref10 {
+ type leafref {
+ path "/ytb:leaf11";
+ }
+ }
+
+ leaf lref11 {
+ type leafref {
+ path "/ytb:leaf10";
+ }
+ }
+
+ leaf lref12 {
+ type leafref {
+ path "/ytb:leaf9";
+ }
+ }
+
+ leaf lref13 {
+ type leafref {
+ path "/ytb:leaf8";
+ }
+ }
+
+ leaf lref14 {
+ type leafref {
+ path "/ytb:leaf7";
+ }
+ }
+
+ leaf lref15 {
+ type leafref {
+ path "/ytb:leaf6";
+ }
+ }
+
+ leaf lref16 {
+ type leafref {
+ path "/ytb:leaf5";
+ }
+ }
+
+ leaf lref17 {
+ type leafref {
+ path "/ytb:leaf4";
+ }
+ }
+
+ leaf lref18 {
+ type leafref {
+ path "/ytb:leaf3";
+ }
+ }
+
+ leaf lref19 {
+ type leafref {
+ path "/ytb:leaf2";
+ }
+ }
+
+ leaf lref20 {
+ type leafref {
+ path "/ytb:leaf1";
+ }
+ }
+
+ leaf iref1 {
+ type identityref {
+ base iden;
+ }
+ }
+
+ leaf-list iref2 {
+ type identityref {
+ base iden;
+ }
+ }
+
+ leaf iref3 {
+ type identityref {
+ base ytb:type;
+ }
+ }
+
+ leaf-list iref4 {
+ type identityref {
+ base ytb:type;
+ }
+ }
+
+ uses gr;
+ }
+
+ grouping gr {
+ container cont3 {
+ leaf-list llref1 {
+ type leafref {
+ path "../../lfnint8Min";
+ }
+ }
+
+ leaf-list llref2 {
+ type leafref {
+ path "../../identityref1";
+ }
+ }
+
+ leaf-list llref3 {
+ type leafref {
+ path "../../lfunion14";
+ }
+ }
+
+ leaf-list llref4 {
+ type leafref {
+ path "../../lfunion13";
+ }
+ }
+
+ leaf-list llref5 {
+ type leafref {
+ path "../../lfunion11";
+ }
+ }
+
+ leaf-list llref6 {
+ type leafref {
+ path "../../lfref2";
+ }
+ }
+
+ leaf-list llref7 {
+ type leafref {
+ path "../../lfenum";
+ }
+ }
+
+ leaf-list llref8 {
+ type leafref {
+ path "../../lfdecimal6";
+ }
+ }
+
+ leaf-list llref9 {
+ type leafref {
+ path "/ytb:leaf12";
+ }
+ }
+
+ leaf-list llref10 {
+ type leafref {
+ path "/ytb:leaf11";
+ }
+ }
+
+ leaf-list llref11 {
+ type leafref {
+ path "/ytb:leaf10";
+ }
+ }
+
+ leaf-list llref12 {
+ type leafref {
+ path "/ytb:leaf9";
+ }
+ }
+
+ leaf-list llref13 {
+ type leafref {
+ path "/ytb:leaf8";
+ }
+ }
+
+ leaf-list llref14 {
+ type leafref {
+ path "/ytb:leaf7";
+ }
+ }
+
+ leaf-list llref15 {
+ type leafref {
+ path "/ytb:leaf6";
+ }
+ }
+
+ leaf-list llref16 {
+ type leafref {
+ path "/ytb:leaf5";
+ }
+ }
+
+ leaf-list llref17 {
+ type leafref {
+ path "/ytb:leaf4";
+ }
+ }
+
+ leaf-list llref18 {
+ type leafref {
+ path "/ytb:leaf3";
+ }
+ }
+
+ leaf-list llref19 {
+ type leafref {
+ path "/ytb:leaf2";
+ }
+ }
+
+ leaf-list llref20 {
+ type leafref {
+ path "/ytb:leaf1";
+ }
+ }
+
+ leaf lref21 {
+ type leafref {
+ path "/ytb:leaf1";
+ }
+ }
+
+ leaf iref1 {
+ type identityref {
+ base iden;
+ }
+ }
+
+ leaf-list iref2 {
+ type identityref {
+ base iden;
+ }
+ }
+
+ leaf iref3 {
+ type identityref {
+ base ytb:type;
+ }
+ }
+
+ leaf-list iref4 {
+ type identityref {
+ base ytb:type;
+ }
+ }
}
}
-
- leaf identityref1 {
- type identityref {
- base iden;
- }
- }
-
- leaf lfenum1 {
- type tpdfun0;
- }
-
- leaf inst-iden {
- type instance-identifier;
- }
- }
}