Committed by
Patrick Liu
[ONOS-4838] Decimal64 Range Restrictions Modification
Change-Id: I4d79c0da5ef400a188bfc5a85830e1187602e698
Showing
25 changed files
with
420 additions
and
22 deletions
... | @@ -478,9 +478,7 @@ public class YangDerivedInfo<T> | ... | @@ -478,9 +478,7 @@ public class YangDerivedInfo<T> |
478 | return RESOLVED; | 478 | return RESOLVED; |
479 | } | 479 | } |
480 | } else if (getEffectiveBuiltInType() == DECIMAL64) { | 480 | } else if (getEffectiveBuiltInType() == DECIMAL64) { |
481 | - if ((refDerivedInfo.getResolvedExtendedInfo() == null) || | 481 | + if (refDerivedInfo.getResolvedExtendedInfo() == null) { |
482 | - (((YangDecimal64) refDerivedInfo.getResolvedExtendedInfo()) | ||
483 | - .getRangeRestrictedExtendedInfo() == null)) { | ||
484 | resolveRangeRestriction(null); | 482 | resolveRangeRestriction(null); |
485 | /* | 483 | /* |
486 | * Return the resolution status as resolved, if it's not; | 484 | * Return the resolution status as resolved, if it's not; |
... | @@ -489,13 +487,12 @@ public class YangDerivedInfo<T> | ... | @@ -489,13 +487,12 @@ public class YangDerivedInfo<T> |
489 | */ | 487 | */ |
490 | return RESOLVED; | 488 | return RESOLVED; |
491 | } else { | 489 | } else { |
492 | - if (!(((YangDecimal64) refDerivedInfo.getResolvedExtendedInfo()) | 490 | + if (!(refDerivedInfo.getResolvedExtendedInfo() instanceof YangRangeRestriction)) { |
493 | - .getRangeRestrictedExtendedInfo() instanceof YangRangeRestriction)) { | ||
494 | throw new DataModelException("Linker error: Referred typedef restriction info is of invalid " + | 491 | throw new DataModelException("Linker error: Referred typedef restriction info is of invalid " + |
495 | "type."); | 492 | "type."); |
496 | } | 493 | } |
497 | - resolveRangeRestriction((YangRangeRestriction) ((YangDecimal64) refDerivedInfo | 494 | + resolveRangeRestriction((YangRangeRestriction) refDerivedInfo |
498 | - .getResolvedExtendedInfo()).getRangeRestrictedExtendedInfo()); | 495 | + .getResolvedExtendedInfo()); |
499 | /* | 496 | /* |
500 | * Return the resolution status as resolved, if it's not | 497 | * Return the resolution status as resolved, if it's not |
501 | * resolve range/string restriction will throw exception in | 498 | * resolve range/string restriction will throw exception in | ... | ... |
... | @@ -1613,7 +1613,6 @@ public class TempJavaFragmentFiles { | ... | @@ -1613,7 +1613,6 @@ public class TempJavaFragmentFiles { |
1613 | addBitsetImport(imports, false); | 1613 | addBitsetImport(imports, false); |
1614 | } | 1614 | } |
1615 | insertDataIntoJavaFile(getOpParamClassJavaFileHandle(), getJavaClassDefClose()); | 1615 | insertDataIntoJavaFile(getOpParamClassJavaFileHandle(), getJavaClassDefClose()); |
1616 | - | ||
1617 | } | 1616 | } |
1618 | } | 1617 | } |
1619 | /* | 1618 | /* | ... | ... |
... | @@ -22,15 +22,19 @@ import java.util.ArrayList; | ... | @@ -22,15 +22,19 @@ import java.util.ArrayList; |
22 | import java.util.List; | 22 | import java.util.List; |
23 | 23 | ||
24 | import org.onosproject.yangutils.datamodel.YangAugment; | 24 | import org.onosproject.yangutils.datamodel.YangAugment; |
25 | +import org.onosproject.yangutils.datamodel.YangAugmentableNode; | ||
25 | import org.onosproject.yangutils.datamodel.YangLeaf; | 26 | import org.onosproject.yangutils.datamodel.YangLeaf; |
26 | import org.onosproject.yangutils.datamodel.YangLeafList; | 27 | import org.onosproject.yangutils.datamodel.YangLeafList; |
27 | import org.onosproject.yangutils.datamodel.YangLeavesHolder; | 28 | import org.onosproject.yangutils.datamodel.YangLeavesHolder; |
28 | -import org.onosproject.yangutils.datamodel.YangAugmentableNode; | ||
29 | import org.onosproject.yangutils.datamodel.YangNode; | 29 | import org.onosproject.yangutils.datamodel.YangNode; |
30 | +import org.onosproject.yangutils.datamodel.YangTypeDef; | ||
31 | +import org.onosproject.yangutils.datamodel.YangType; | ||
32 | +import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes; | ||
30 | import org.onosproject.yangutils.translator.tojava.JavaAttributeInfo; | 33 | import org.onosproject.yangutils.translator.tojava.JavaAttributeInfo; |
31 | import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo; | 34 | import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo; |
32 | import org.onosproject.yangutils.translator.tojava.JavaFileInfo; | 35 | import org.onosproject.yangutils.translator.tojava.JavaFileInfo; |
33 | import org.onosproject.yangutils.translator.tojava.JavaFileInfoContainer; | 36 | import org.onosproject.yangutils.translator.tojava.JavaFileInfoContainer; |
37 | +import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfo; | ||
34 | import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFilesContainer; | 38 | import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFilesContainer; |
35 | import org.onosproject.yangutils.translator.tojava.TempJavaEnumerationFragmentFiles; | 39 | import org.onosproject.yangutils.translator.tojava.TempJavaEnumerationFragmentFiles; |
36 | import org.onosproject.yangutils.translator.tojava.TempJavaServiceFragmentFiles; | 40 | import org.onosproject.yangutils.translator.tojava.TempJavaServiceFragmentFiles; |
... | @@ -70,6 +74,8 @@ import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType. | ... | @@ -70,6 +74,8 @@ import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType. |
70 | import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.SETTER_FOR_CLASS_MASK; | 74 | import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.SETTER_FOR_CLASS_MASK; |
71 | import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.SETTER_FOR_INTERFACE_MASK; | 75 | import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.SETTER_FOR_INTERFACE_MASK; |
72 | import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.TO_STRING_IMPL_MASK; | 76 | import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.TO_STRING_IMPL_MASK; |
77 | +import static org.onosproject.yangutils.translator.tojava.JavaAttributeInfo.getAttributeInfoForTheData; | ||
78 | +import static org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfo.getQualifiedTypeInfoOfCurNode; | ||
73 | import static org.onosproject.yangutils.translator.tojava.TempJavaFragmentFiles.getCurNodeAsAttributeInTarget; | 79 | import static org.onosproject.yangutils.translator.tojava.TempJavaFragmentFiles.getCurNodeAsAttributeInTarget; |
74 | import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.addAugmentationAttribute; | 80 | import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.addAugmentationAttribute; |
75 | import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getEnumsValueAttribute; | 81 | import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getEnumsValueAttribute; |
... | @@ -111,6 +117,9 @@ import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator | ... | @@ -111,6 +117,9 @@ import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator |
111 | import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getToStringSelectLeafListgetter; | 117 | import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getToStringSelectLeafListgetter; |
112 | import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getToStringSelectLeafgetter; | 118 | import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getToStringSelectLeafgetter; |
113 | import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getisFilterContentMatch; | 119 | import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getisFilterContentMatch; |
120 | +import static org.onosproject.yangutils.utils.UtilConstants.BASE64; | ||
121 | +import static org.onosproject.yangutils.utils.UtilConstants.BINARY_STRING; | ||
122 | +import static org.onosproject.yangutils.utils.UtilConstants.BITS_STRING; | ||
114 | import static org.onosproject.yangutils.utils.UtilConstants.BUILDER; | 123 | import static org.onosproject.yangutils.utils.UtilConstants.BUILDER; |
115 | import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_CURLY_BRACKET; | 124 | import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_CURLY_BRACKET; |
116 | import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_PARENTHESIS; | 125 | import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_PARENTHESIS; |
... | @@ -122,6 +131,11 @@ import static org.onosproject.yangutils.utils.UtilConstants.EVENT_LISTENER_STRIN | ... | @@ -122,6 +131,11 @@ import static org.onosproject.yangutils.utils.UtilConstants.EVENT_LISTENER_STRIN |
122 | import static org.onosproject.yangutils.utils.UtilConstants.EVENT_STRING; | 131 | import static org.onosproject.yangutils.utils.UtilConstants.EVENT_STRING; |
123 | import static org.onosproject.yangutils.utils.UtilConstants.EVENT_SUBJECT_NAME_SUFFIX; | 132 | import static org.onosproject.yangutils.utils.UtilConstants.EVENT_SUBJECT_NAME_SUFFIX; |
124 | import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION; | 133 | import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION; |
134 | +import static org.onosproject.yangutils.utils.UtilConstants.GET_ENCODER; | ||
135 | +import static org.onosproject.yangutils.utils.UtilConstants.ENCODE_TO_STRING; | ||
136 | +import static org.onosproject.yangutils.utils.UtilConstants.JAVA_UTIL_OBJECTS_IMPORT_PKG; | ||
137 | +import static org.onosproject.yangutils.utils.UtilConstants.JAVA_UTIL_IMPORT_BASE64_CLASS; | ||
138 | +import static org.onosproject.yangutils.utils.UtilConstants.IMPORT; | ||
125 | import static org.onosproject.yangutils.utils.UtilConstants.INT; | 139 | import static org.onosproject.yangutils.utils.UtilConstants.INT; |
126 | import static org.onosproject.yangutils.utils.UtilConstants.LOGGER_STATEMENT; | 140 | import static org.onosproject.yangutils.utils.UtilConstants.LOGGER_STATEMENT; |
127 | import static org.onosproject.yangutils.utils.UtilConstants.MANAGER; | 141 | import static org.onosproject.yangutils.utils.UtilConstants.MANAGER; |
... | @@ -150,10 +164,13 @@ import static org.onosproject.yangutils.utils.UtilConstants.ENUM; | ... | @@ -150,10 +164,13 @@ import static org.onosproject.yangutils.utils.UtilConstants.ENUM; |
150 | import static org.onosproject.yangutils.utils.UtilConstants.OPEN_CURLY_BRACKET; | 164 | import static org.onosproject.yangutils.utils.UtilConstants.OPEN_CURLY_BRACKET; |
151 | import static org.onosproject.yangutils.utils.UtilConstants.MERGE; | 165 | import static org.onosproject.yangutils.utils.UtilConstants.MERGE; |
152 | import static org.onosproject.yangutils.utils.UtilConstants.REPLACE; | 166 | import static org.onosproject.yangutils.utils.UtilConstants.REPLACE; |
167 | +import static org.onosproject.yangutils.utils.UtilConstants.RETURN; | ||
153 | import static org.onosproject.yangutils.utils.UtilConstants.CREATE; | 168 | import static org.onosproject.yangutils.utils.UtilConstants.CREATE; |
154 | import static org.onosproject.yangutils.utils.UtilConstants.REMOVE; | 169 | import static org.onosproject.yangutils.utils.UtilConstants.REMOVE; |
155 | import static org.onosproject.yangutils.utils.UtilConstants.DELETE; | 170 | import static org.onosproject.yangutils.utils.UtilConstants.DELETE; |
156 | import static org.onosproject.yangutils.utils.UtilConstants.PERIOD; | 171 | import static org.onosproject.yangutils.utils.UtilConstants.PERIOD; |
172 | +import static org.onosproject.yangutils.utils.UtilConstants.STRING_DATA_TYPE; | ||
173 | +import static org.onosproject.yangutils.utils.UtilConstants.TO; | ||
157 | import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.GETTER_METHOD; | 174 | import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.GETTER_METHOD; |
158 | import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.TYPE_CONSTRUCTOR; | 175 | import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.TYPE_CONSTRUCTOR; |
159 | import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc; | 176 | import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc; |
... | @@ -830,8 +847,15 @@ public final class JavaFileGenerator { | ... | @@ -830,8 +847,15 @@ public final class JavaFileGenerator { |
830 | JavaFileInfo javaFileInfo = ((JavaFileInfoContainer) curNode).getJavaFileInfo(); | 847 | JavaFileInfo javaFileInfo = ((JavaFileInfoContainer) curNode).getJavaFileInfo(); |
831 | YangPluginConfig pluginConfig = javaFileInfo.getPluginConfig(); | 848 | YangPluginConfig pluginConfig = javaFileInfo.getPluginConfig(); |
832 | 849 | ||
850 | + // import | ||
833 | String className = getCapitalCase(javaFileInfo.getJavaName()); | 851 | String className = getCapitalCase(javaFileInfo.getJavaName()); |
834 | String path = javaFileInfo.getBaseCodeGenPath() + javaFileInfo.getPackageFilePath(); | 852 | String path = javaFileInfo.getBaseCodeGenPath() + javaFileInfo.getPackageFilePath(); |
853 | + YangTypeDef typeDef = (YangTypeDef) curNode; | ||
854 | + List<YangType<?>> types = typeDef.getTypeList(); | ||
855 | + YangType type = types.get(0); | ||
856 | + if (type.getDataType().equals(YangDataTypes.BINARY)) { | ||
857 | + imports.add(IMPORT + JAVA_UTIL_OBJECTS_IMPORT_PKG + PERIOD + JAVA_UTIL_IMPORT_BASE64_CLASS); | ||
858 | + } | ||
835 | 859 | ||
836 | initiateJavaFileGeneration(file, className, GENERATE_TYPEDEF_CLASS, imports, path, pluginConfig); | 860 | initiateJavaFileGeneration(file, className, GENERATE_TYPEDEF_CLASS, imports, path, pluginConfig); |
837 | 861 | ||
... | @@ -899,9 +923,39 @@ public final class JavaFileGenerator { | ... | @@ -899,9 +923,39 @@ public final class JavaFileGenerator { |
899 | /** | 923 | /** |
900 | * To string method. | 924 | * To string method. |
901 | */ | 925 | */ |
926 | + if (type.getDataType().equals(YangDataTypes.BINARY)) { | ||
927 | + JavaQualifiedTypeInfo qualifiedTypeInfo = getQualifiedTypeInfoOfCurNode(curNode, | ||
928 | + getCapitalCase(BINARY_STRING)); | ||
929 | + | ||
930 | + JavaAttributeInfo attr = getAttributeInfoForTheData(qualifiedTypeInfo, BINARY_STRING, null, false, | ||
931 | + false); | ||
932 | + String attributeName = attr.getAttributeName(); | ||
933 | + String bitsToStringMethod = MethodsGenerator.getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC | ||
934 | + + SPACE + STRING_DATA_TYPE + SPACE + TO + STRING_DATA_TYPE + OPEN_PARENTHESIS | ||
935 | + + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION | ||
936 | + + RETURN + SPACE + BASE64 + PERIOD + GET_ENCODER + OPEN_PARENTHESIS + CLOSE_PARENTHESIS | ||
937 | + + PERIOD + ENCODE_TO_STRING + OPEN_PARENTHESIS + attributeName + CLOSE_PARENTHESIS | ||
938 | + + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE; | ||
939 | + methods.add(bitsToStringMethod); | ||
940 | + } else if (type.getDataType().equals(YangDataTypes.BITS)) { | ||
941 | + JavaQualifiedTypeInfo qualifiedTypeInfo = getQualifiedTypeInfoOfCurNode(curNode, | ||
942 | + getCapitalCase(BITS_STRING)); | ||
943 | + | ||
944 | + JavaAttributeInfo attr = getAttributeInfoForTheData(qualifiedTypeInfo, BITS_STRING, | ||
945 | + null, false, false); | ||
946 | + String attributeName = attr.getAttributeName(); | ||
947 | + String bitsToStringMethod = MethodsGenerator.getOverRideString() + FOUR_SPACE_INDENTATION + PUBLIC | ||
948 | + + SPACE + STRING_DATA_TYPE + SPACE + TO + STRING_DATA_TYPE + OPEN_PARENTHESIS | ||
949 | + + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION | ||
950 | + + RETURN + SPACE + attributeName + PERIOD + TO + STRING_DATA_TYPE + OPEN_PARENTHESIS | ||
951 | + + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET | ||
952 | + + NEW_LINE; | ||
953 | + methods.add(bitsToStringMethod); | ||
954 | + } else { | ||
902 | methods.add(getToStringMethodOpen() + getDataFromTempFileHandle(TO_STRING_IMPL_MASK, | 955 | methods.add(getToStringMethodOpen() + getDataFromTempFileHandle(TO_STRING_IMPL_MASK, |
903 | ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles().getTypeTempFiles(), | 956 | ((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles().getTypeTempFiles(), |
904 | path) + getToStringMethodClose()); | 957 | path) + getToStringMethodClose()); |
958 | + } | ||
905 | 959 | ||
906 | JavaCodeGeneratorInfo javaGeninfo = (JavaCodeGeneratorInfo) curNode; | 960 | JavaCodeGeneratorInfo javaGeninfo = (JavaCodeGeneratorInfo) curNode; |
907 | /** | 961 | /** | ... | ... |
... | @@ -59,6 +59,7 @@ import static org.onosproject.yangutils.utils.UtilConstants.ADD_STRING; | ... | @@ -59,6 +59,7 @@ import static org.onosproject.yangutils.utils.UtilConstants.ADD_STRING; |
59 | import static org.onosproject.yangutils.utils.UtilConstants.AND; | 59 | import static org.onosproject.yangutils.utils.UtilConstants.AND; |
60 | import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTATION; | 60 | import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTATION; |
61 | import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTED; | 61 | import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTED; |
62 | +import static org.onosproject.yangutils.utils.UtilConstants.BASE64; | ||
62 | import static org.onosproject.yangutils.utils.UtilConstants.BIG_DECIMAL; | 63 | import static org.onosproject.yangutils.utils.UtilConstants.BIG_DECIMAL; |
63 | import static org.onosproject.yangutils.utils.UtilConstants.BIG_INTEGER; | 64 | import static org.onosproject.yangutils.utils.UtilConstants.BIG_INTEGER; |
64 | import static org.onosproject.yangutils.utils.UtilConstants.BOOLEAN_DATA_TYPE; | 65 | import static org.onosproject.yangutils.utils.UtilConstants.BOOLEAN_DATA_TYPE; |
... | @@ -74,10 +75,11 @@ import static org.onosproject.yangutils.utils.UtilConstants.CLASS; | ... | @@ -74,10 +75,11 @@ import static org.onosproject.yangutils.utils.UtilConstants.CLASS; |
74 | import static org.onosproject.yangutils.utils.UtilConstants.CLASS_STRING; | 75 | import static org.onosproject.yangutils.utils.UtilConstants.CLASS_STRING; |
75 | import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_CURLY_BRACKET; | 76 | import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_CURLY_BRACKET; |
76 | import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_PARENTHESIS; | 77 | import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_PARENTHESIS; |
77 | -import static org.onosproject.yangutils.utils.UtilConstants.COLAN; | 78 | +import static org.onosproject.yangutils.utils.UtilConstants.COLON; |
78 | import static org.onosproject.yangutils.utils.UtilConstants.COMMA; | 79 | import static org.onosproject.yangutils.utils.UtilConstants.COMMA; |
79 | import static org.onosproject.yangutils.utils.UtilConstants.DEACTIVATE; | 80 | import static org.onosproject.yangutils.utils.UtilConstants.DEACTIVATE; |
80 | import static org.onosproject.yangutils.utils.UtilConstants.DEACTIVATE_ANNOTATION; | 81 | import static org.onosproject.yangutils.utils.UtilConstants.DEACTIVATE_ANNOTATION; |
82 | +import static org.onosproject.yangutils.utils.UtilConstants.DECODE; | ||
81 | import static org.onosproject.yangutils.utils.UtilConstants.DEFAULT; | 83 | import static org.onosproject.yangutils.utils.UtilConstants.DEFAULT; |
82 | import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_CLOSE_BRACKET; | 84 | import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_CLOSE_BRACKET; |
83 | import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_OPEN_BRACKET; | 85 | import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_OPEN_BRACKET; |
... | @@ -89,11 +91,12 @@ import static org.onosproject.yangutils.utils.UtilConstants.EQUALS_STRING; | ... | @@ -89,11 +91,12 @@ import static org.onosproject.yangutils.utils.UtilConstants.EQUALS_STRING; |
89 | import static org.onosproject.yangutils.utils.UtilConstants.EXCEPTION; | 91 | import static org.onosproject.yangutils.utils.UtilConstants.EXCEPTION; |
90 | import static org.onosproject.yangutils.utils.UtilConstants.EXCEPTION_VAR; | 92 | import static org.onosproject.yangutils.utils.UtilConstants.EXCEPTION_VAR; |
91 | import static org.onosproject.yangutils.utils.UtilConstants.FALSE; | 93 | import static org.onosproject.yangutils.utils.UtilConstants.FALSE; |
94 | +import static org.onosproject.yangutils.utils.UtilConstants.FOR; | ||
92 | import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION; | 95 | import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION; |
93 | import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_METHOD_NAME; | 96 | import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_METHOD_NAME; |
94 | import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_PARAM_NAME; | 97 | import static org.onosproject.yangutils.utils.UtilConstants.FROM_STRING_PARAM_NAME; |
95 | import static org.onosproject.yangutils.utils.UtilConstants.GET; | 98 | import static org.onosproject.yangutils.utils.UtilConstants.GET; |
96 | -import static org.onosproject.yangutils.utils.UtilConstants.GET_BYTES; | 99 | +import static org.onosproject.yangutils.utils.UtilConstants.GET_DECODER; |
97 | import static org.onosproject.yangutils.utils.UtilConstants.GET_METHOD_PREFIX; | 100 | import static org.onosproject.yangutils.utils.UtilConstants.GET_METHOD_PREFIX; |
98 | import static org.onosproject.yangutils.utils.UtilConstants.GOOGLE_MORE_OBJECT_METHOD_STRING; | 101 | import static org.onosproject.yangutils.utils.UtilConstants.GOOGLE_MORE_OBJECT_METHOD_STRING; |
99 | import static org.onosproject.yangutils.utils.UtilConstants.HASH; | 102 | import static org.onosproject.yangutils.utils.UtilConstants.HASH; |
... | @@ -170,6 +173,12 @@ import static org.onosproject.yangutils.utils.UtilConstants.FILTER_CONTENT_MATCH | ... | @@ -170,6 +173,12 @@ import static org.onosproject.yangutils.utils.UtilConstants.FILTER_CONTENT_MATCH |
170 | import static org.onosproject.yangutils.utils.UtilConstants.APP_INSTANCE; | 173 | import static org.onosproject.yangutils.utils.UtilConstants.APP_INSTANCE; |
171 | import static org.onosproject.yangutils.utils.UtilConstants.NOT; | 174 | import static org.onosproject.yangutils.utils.UtilConstants.NOT; |
172 | import static org.onosproject.yangutils.utils.UtilConstants.OR_OPERATION; | 175 | import static org.onosproject.yangutils.utils.UtilConstants.OR_OPERATION; |
176 | +import static org.onosproject.yangutils.utils.UtilConstants.REPLACE_STRING; | ||
177 | +import static org.onosproject.yangutils.utils.UtilConstants.SINGLE_QUOTE; | ||
178 | +import static org.onosproject.yangutils.utils.UtilConstants.SPLIT_STRING; | ||
179 | +import static org.onosproject.yangutils.utils.UtilConstants.SQUARE_BRACKETS; | ||
180 | +import static org.onosproject.yangutils.utils.UtilConstants.TRIM_STRING; | ||
181 | +import static org.onosproject.yangutils.utils.UtilConstants.ZERO; | ||
173 | import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.BUILD_METHOD; | 182 | import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.BUILD_METHOD; |
174 | import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.CONSTRUCTOR; | 183 | import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.CONSTRUCTOR; |
175 | import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.DEFAULT_CONSTRUCTOR; | 184 | import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.DEFAULT_CONSTRUCTOR; |
... | @@ -188,11 +197,15 @@ import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase | ... | @@ -188,11 +197,15 @@ import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase |
188 | import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getSmallCase; | 197 | import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getSmallCase; |
189 | import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.trimAtLast; | 198 | import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.trimAtLast; |
190 | import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.BINARY; | 199 | import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.BINARY; |
200 | +import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.BITS; | ||
191 | 201 | ||
192 | /** | 202 | /** |
193 | * Represents generator for methods of generated files based on the file type. | 203 | * Represents generator for methods of generated files based on the file type. |
194 | */ | 204 | */ |
195 | public final class MethodsGenerator { | 205 | public final class MethodsGenerator { |
206 | + private static final String BITS_STRING_ARRAY_VAR = "bitsTemp"; | ||
207 | + private static final String BIT_TEMP_VAR = "bitTemp"; | ||
208 | + private static final String FOR_TYPE = " for type "; | ||
196 | 209 | ||
197 | /** | 210 | /** |
198 | * Creates an instance of method generator. | 211 | * Creates an instance of method generator. |
... | @@ -1085,14 +1098,39 @@ public final class MethodsGenerator { | ... | @@ -1085,14 +1098,39 @@ public final class MethodsGenerator { |
1085 | JavaAttributeInfo fromStringAttributeInfo) { | 1098 | JavaAttributeInfo fromStringAttributeInfo) { |
1086 | 1099 | ||
1087 | String targetDataType = getReturnType(attr); | 1100 | String targetDataType = getReturnType(attr); |
1088 | - if (fromStringAttributeInfo.getAttributeType().getDataType() == BINARY) { | 1101 | + if (fromStringAttributeInfo.getAttributeType().getDataType() == BITS) { |
1089 | - return targetDataType + SPACE + TMP_VAL + SPACE + EQUAL + SPACE + FROM_STRING_PARAM_NAME | 1102 | + String lines = targetDataType + SPACE + TMP_VAL + SPACE + EQUAL + SPACE + NEW + SPACE + targetDataType |
1090 | - + PERIOD + GET_BYTES + OPEN_PARENTHESIS + CLOSE_PARENTHESIS; | 1103 | + + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE; |
1104 | + lines += TWELVE_SPACE_INDENTATION + FROM_STRING_PARAM_NAME + SPACE + EQUAL + SPACE + FROM_STRING_PARAM_NAME | ||
1105 | + + PERIOD + REPLACE_STRING + OPEN_PARENTHESIS + SINGLE_QUOTE + OPEN_CURLY_BRACKET + SINGLE_QUOTE | ||
1106 | + + COMMA + SPACE + SINGLE_QUOTE + SPACE + SINGLE_QUOTE + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE; | ||
1107 | + lines += TWELVE_SPACE_INDENTATION + FROM_STRING_PARAM_NAME + SPACE + EQUAL + SPACE + FROM_STRING_PARAM_NAME | ||
1108 | + + PERIOD + REPLACE_STRING + OPEN_PARENTHESIS + SINGLE_QUOTE + CLOSE_CURLY_BRACKET + SINGLE_QUOTE | ||
1109 | + + COMMA + SPACE + SINGLE_QUOTE + SPACE + SINGLE_QUOTE + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE; | ||
1110 | + lines += TWELVE_SPACE_INDENTATION + FROM_STRING_PARAM_NAME + SPACE + EQUAL + SPACE + FROM_STRING_PARAM_NAME | ||
1111 | + + PERIOD + TRIM_STRING + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE; | ||
1112 | + lines += TWELVE_SPACE_INDENTATION + STRING_DATA_TYPE + SQUARE_BRACKETS + SPACE + BITS_STRING_ARRAY_VAR | ||
1113 | + + SPACE + EQUAL + SPACE + FROM_STRING_PARAM_NAME + PERIOD + SPLIT_STRING + OPEN_PARENTHESIS | ||
1114 | + + QUOTES + COMMA + QUOTES + COMMA + SPACE + ZERO + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE; | ||
1115 | + lines += TWELVE_SPACE_INDENTATION + FOR + SPACE + OPEN_PARENTHESIS + STRING_DATA_TYPE + SPACE | ||
1116 | + + BIT_TEMP_VAR + SPACE + COLON + SPACE + BITS_STRING_ARRAY_VAR + CLOSE_PARENTHESIS + SPACE | ||
1117 | + + OPEN_CURLY_BRACKET + NEW_LINE; | ||
1118 | + lines += SIXTEEN_SPACE_INDENTATION + BIT_TEMP_VAR + SPACE + EQUAL + SPACE + BIT_TEMP_VAR + PERIOD | ||
1119 | + + TRIM_STRING + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE; | ||
1120 | + lines += SIXTEEN_SPACE_INDENTATION + TMP_VAL + PERIOD + SET_METHOD_PREFIX + OPEN_PARENTHESIS | ||
1121 | + + INTEGER_WRAPPER + PERIOD + PARSE_INT + OPEN_PARENTHESIS + BIT_TEMP_VAR + CLOSE_PARENTHESIS | ||
1122 | + + CLOSE_PARENTHESIS + SEMI_COLAN + NEW_LINE; | ||
1123 | + lines += TWELVE_SPACE_INDENTATION + CLOSE_CURLY_BRACKET; | ||
1124 | + return lines; | ||
1125 | + } else if (attr.getAttributeType().getDataType() == BINARY) { | ||
1126 | + return targetDataType + SPACE + TMP_VAL + SPACE + EQUAL + SPACE + BASE64 + PERIOD | ||
1127 | + + GET_DECODER + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + PERIOD + DECODE + OPEN_PARENTHESIS | ||
1128 | + + FROM_STRING_PARAM_NAME + CLOSE_PARENTHESIS + SEMI_COLAN; | ||
1091 | } else { | 1129 | } else { |
1092 | String parseFromStringMethod = getParseFromStringMethod(targetDataType, | 1130 | String parseFromStringMethod = getParseFromStringMethod(targetDataType, |
1093 | fromStringAttributeInfo.getAttributeType()); | 1131 | fromStringAttributeInfo.getAttributeType()); |
1094 | return targetDataType + SPACE + TMP_VAL + SPACE + EQUAL + SPACE + parseFromStringMethod | 1132 | return targetDataType + SPACE + TMP_VAL + SPACE + EQUAL + SPACE + parseFromStringMethod |
1095 | - + OPEN_PARENTHESIS + FROM_STRING_PARAM_NAME + CLOSE_PARENTHESIS; | 1133 | + + OPEN_PARENTHESIS + FROM_STRING_PARAM_NAME + CLOSE_PARENTHESIS + SEMI_COLAN; |
1096 | } | 1134 | } |
1097 | } | 1135 | } |
1098 | 1136 | ||
... | @@ -1350,15 +1388,15 @@ public final class MethodsGenerator { | ... | @@ -1350,15 +1388,15 @@ public final class MethodsGenerator { |
1350 | for (String str : enumList) { | 1388 | for (String str : enumList) { |
1351 | 1389 | ||
1352 | value = enumMap.get(str); | 1390 | value = enumMap.get(str); |
1353 | - method = method + TWELVE_SPACE_INDENTATION + CASE + SPACE + value + COLAN + NEW_LINE | 1391 | + method = method + TWELVE_SPACE_INDENTATION + CASE + SPACE + value + COLON + NEW_LINE |
1354 | + SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + getCapitalCase(className) + PERIOD | 1392 | + SIXTEEN_SPACE_INDENTATION + RETURN + SPACE + getCapitalCase(className) + PERIOD |
1355 | + str + SEMI_COLAN + NEW_LINE; | 1393 | + str + SEMI_COLAN + NEW_LINE; |
1356 | } | 1394 | } |
1357 | - method = method + TWELVE_SPACE_INDENTATION + DEFAULT + SPACE + COLAN + NEW_LINE + SIXTEEN_SPACE_INDENTATION | 1395 | + method = method + TWELVE_SPACE_INDENTATION + DEFAULT + SPACE + COLON + NEW_LINE + SIXTEEN_SPACE_INDENTATION |
1358 | + RETURN + SPACE + NULL + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET | 1396 | + RETURN + SPACE + NULL + SEMI_COLAN + NEW_LINE + EIGHT_SPACE_INDENTATION + CLOSE_CURLY_BRACKET |
1359 | + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET; | 1397 | + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET; |
1360 | 1398 | ||
1361 | - return getJavaDoc(OF_METHOD, getCapitalCase(className) + " for type " + attrName, false, pluginConfig) | 1399 | + return getJavaDoc(OF_METHOD, getCapitalCase(className) + FOR_TYPE + attrName, false, pluginConfig) |
1362 | + method; | 1400 | + method; |
1363 | } | 1401 | } |
1364 | 1402 | ... | ... |
... | @@ -237,6 +237,31 @@ public final class UtilConstants { | ... | @@ -237,6 +237,31 @@ public final class UtilConstants { |
237 | public static final String PARSE_LONG = "parseLong"; | 237 | public static final String PARSE_LONG = "parseLong"; |
238 | 238 | ||
239 | /** | 239 | /** |
240 | + * Static attribute for base64. | ||
241 | + */ | ||
242 | + public static final String BASE64 = "Base64"; | ||
243 | + | ||
244 | + /** | ||
245 | + * Static attribute for getEncoder. | ||
246 | + */ | ||
247 | + public static final String GET_ENCODER = "getEncoder"; | ||
248 | + | ||
249 | + /** | ||
250 | + * Static attribute for encodeToString. | ||
251 | + */ | ||
252 | + public static final String ENCODE_TO_STRING = "encodeToString"; | ||
253 | + | ||
254 | + /** | ||
255 | + * Static attribute for getDecoder. | ||
256 | + */ | ||
257 | + public static final String GET_DECODER = "getDecoder"; | ||
258 | + | ||
259 | + /** | ||
260 | + * Static attribute for decode. | ||
261 | + */ | ||
262 | + public static final String DECODE = "decode"; | ||
263 | + | ||
264 | + /** | ||
240 | * Static attribute for omit null value. | 265 | * Static attribute for omit null value. |
241 | */ | 266 | */ |
242 | public static final String OMIT_NULL_VALUE_STRING = "omitNullValues()"; | 267 | public static final String OMIT_NULL_VALUE_STRING = "omitNullValues()"; |
... | @@ -322,6 +347,16 @@ public final class UtilConstants { | ... | @@ -322,6 +347,16 @@ public final class UtilConstants { |
322 | public static final String IDENTITYREF = "identityref"; | 347 | public static final String IDENTITYREF = "identityref"; |
323 | 348 | ||
324 | /** | 349 | /** |
350 | + * Static attribute for binary string. | ||
351 | + */ | ||
352 | + public static final String BINARY_STRING = "binary"; | ||
353 | + | ||
354 | + /** | ||
355 | + * Static attribute for bits string. | ||
356 | + */ | ||
357 | + public static final String BITS_STRING = "bits"; | ||
358 | + | ||
359 | + /** | ||
325 | * Static attribute for output variable of rpc. | 360 | * Static attribute for output variable of rpc. |
326 | */ | 361 | */ |
327 | public static final String RPC_INPUT_VAR_NAME = "inputVar"; | 362 | public static final String RPC_INPUT_VAR_NAME = "inputVar"; |
... | @@ -342,11 +377,21 @@ public final class UtilConstants { | ... | @@ -342,11 +377,21 @@ public final class UtilConstants { |
342 | public static final String ADD = "+"; | 377 | public static final String ADD = "+"; |
343 | 378 | ||
344 | /** | 379 | /** |
380 | + * Static attribute for single quote. | ||
381 | + */ | ||
382 | + public static final String SINGLE_QUOTE = "\'"; | ||
383 | + | ||
384 | + /** | ||
345 | * Static attribute for quotes. | 385 | * Static attribute for quotes. |
346 | */ | 386 | */ |
347 | public static final String QUOTES = "\""; | 387 | public static final String QUOTES = "\""; |
348 | 388 | ||
349 | /** | 389 | /** |
390 | + * Static attribute for zero. | ||
391 | + */ | ||
392 | + public static final String ZERO = "0"; | ||
393 | + | ||
394 | + /** | ||
350 | * Static attribute for ampersand. | 395 | * Static attribute for ampersand. |
351 | */ | 396 | */ |
352 | public static final String AND = "&"; | 397 | public static final String AND = "&"; |
... | @@ -412,6 +457,21 @@ public final class UtilConstants { | ... | @@ -412,6 +457,21 @@ public final class UtilConstants { |
412 | public static final String ADD_STRING = "add"; | 457 | public static final String ADD_STRING = "add"; |
413 | 458 | ||
414 | /** | 459 | /** |
460 | + * Static attribute for string replace syntax. | ||
461 | + */ | ||
462 | + public static final String REPLACE_STRING = "replace"; | ||
463 | + | ||
464 | + /** | ||
465 | + * Static attribute for string trim syntax. | ||
466 | + */ | ||
467 | + public static final String TRIM_STRING = "trim"; | ||
468 | + | ||
469 | + /** | ||
470 | + * Static attribute for string split syntax. | ||
471 | + */ | ||
472 | + public static final String SPLIT_STRING = "split"; | ||
473 | + | ||
474 | + /** | ||
415 | * Static attribute for from syntax. | 475 | * Static attribute for from syntax. |
416 | */ | 476 | */ |
417 | public static final String FROM_STRING_METHOD_NAME = "fromString"; | 477 | public static final String FROM_STRING_METHOD_NAME = "fromString"; |
... | @@ -457,6 +517,11 @@ public final class UtilConstants { | ... | @@ -457,6 +517,11 @@ public final class UtilConstants { |
457 | public static final String IF = "if"; | 517 | public static final String IF = "if"; |
458 | 518 | ||
459 | /** | 519 | /** |
520 | + * Static attribute for "for" syntax. | ||
521 | + */ | ||
522 | + public static final String FOR = "for"; | ||
523 | + | ||
524 | + /** | ||
460 | * Static attribute for of. | 525 | * Static attribute for of. |
461 | */ | 526 | */ |
462 | public static final String OF = "of"; | 527 | public static final String OF = "of"; |
... | @@ -1103,6 +1168,11 @@ public final class UtilConstants { | ... | @@ -1103,6 +1168,11 @@ public final class UtilConstants { |
1103 | public static final String JAVA_UTIL_OBJECTS_IMPORT_CLASS = "Objects;\n"; | 1168 | public static final String JAVA_UTIL_OBJECTS_IMPORT_CLASS = "Objects;\n"; |
1104 | 1169 | ||
1105 | /** | 1170 | /** |
1171 | + * Static attribute for java utilities import base64 class. | ||
1172 | + */ | ||
1173 | + public static final String JAVA_UTIL_IMPORT_BASE64_CLASS = "Base64;\n"; | ||
1174 | + | ||
1175 | + /** | ||
1106 | * Static attribute for AugmentedInfo class import package. | 1176 | * Static attribute for AugmentedInfo class import package. |
1107 | */ | 1177 | */ |
1108 | public static final String YANG_AUGMENTED_INFO_CLASS_IMPORT_PKG = "org.onosproject.yangutils.datamodel"; | 1178 | public static final String YANG_AUGMENTED_INFO_CLASS_IMPORT_PKG = "org.onosproject.yangutils.datamodel"; | ... | ... |
... | @@ -21,6 +21,7 @@ import static org.hamcrest.core.Is.is; | ... | @@ -21,6 +21,7 @@ import static org.hamcrest.core.Is.is; |
21 | import org.junit.Test; | 21 | import org.junit.Test; |
22 | import org.onosproject.yangutils.datamodel.YangBit; | 22 | import org.onosproject.yangutils.datamodel.YangBit; |
23 | import org.onosproject.yangutils.datamodel.YangBits; | 23 | import org.onosproject.yangutils.datamodel.YangBits; |
24 | +import org.onosproject.yangutils.datamodel.YangDerivedInfo; | ||
24 | import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes; | 25 | import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes; |
25 | import org.onosproject.yangutils.datamodel.YangLeaf; | 26 | import org.onosproject.yangutils.datamodel.YangLeaf; |
26 | import org.onosproject.yangutils.datamodel.YangModule; | 27 | import org.onosproject.yangutils.datamodel.YangModule; |
... | @@ -168,6 +169,117 @@ public class BitListenerTest { | ... | @@ -168,6 +169,117 @@ public class BitListenerTest { |
168 | } | 169 | } |
169 | 170 | ||
170 | /** | 171 | /** |
172 | + * Checks bit statement with typedef with referred leaf. | ||
173 | + */ | ||
174 | + @Test | ||
175 | + public void processBitTypedefReferredLeafStatement() throws IOException, ParserException { | ||
176 | + | ||
177 | + YangNode node = manager.getDataModel("src/test/resources/BitTypedefReferredLeafStatement.yang"); | ||
178 | + | ||
179 | + // Check whether the data model tree returned is of type module. | ||
180 | + assertThat((node instanceof YangModule), is(true)); | ||
181 | + | ||
182 | + // Check whether the node type is set properly to module. | ||
183 | + assertThat(node.getNodeType(), is(YangNodeType.MODULE_NODE)); | ||
184 | + | ||
185 | + // Check whether the module name is set correctly. | ||
186 | + YangModule yangNode = (YangModule) node; | ||
187 | + assertThat(yangNode.getName(), is("Test")); | ||
188 | + | ||
189 | + YangTypeDef typedef = (YangTypeDef) yangNode.getChild(); | ||
190 | + assertThat(typedef.getName(), is("topBits")); | ||
191 | + | ||
192 | + YangType type = typedef.getTypeList().iterator().next(); | ||
193 | + assertThat(type.getDataType(), is(YangDataTypes.BITS)); | ||
194 | + assertThat(type.getDataTypeName(), is("bits")); | ||
195 | + | ||
196 | + // Check bit name map | ||
197 | + Map<String, YangBit> bitNameMap = ((YangBits) type.getDataTypeExtendedInfo()).getBitNameMap(); | ||
198 | + assertThat(bitNameMap.size(), is(3)); | ||
199 | + for (Map.Entry<String, YangBit> element : bitNameMap.entrySet()) { | ||
200 | + String bitName = element.getKey(); | ||
201 | + YangBit yangBit = element.getValue(); | ||
202 | + if (bitName.equals("disable-nagle")) { | ||
203 | + assertThat(yangBit.getPosition(), is(0)); | ||
204 | + } else if (bitName.equals("auto-sense-speed")) { | ||
205 | + assertThat(yangBit.getPosition(), is(1)); | ||
206 | + } else if (bitName.equals("Mb-only")) { | ||
207 | + assertThat(yangBit.getPosition(), is(2)); | ||
208 | + } else { | ||
209 | + throw new IOException("Invalid bit name: " + bitName); | ||
210 | + } | ||
211 | + } | ||
212 | + | ||
213 | + // Check bit position map | ||
214 | + Map<Integer, YangBit> bitPositionMap = ((YangBits) type.getDataTypeExtendedInfo()).getBitPositionMap(); | ||
215 | + assertThat(bitPositionMap.size(), is(3)); | ||
216 | + for (Map.Entry<Integer, YangBit> element : bitPositionMap.entrySet()) { | ||
217 | + int position = element.getKey(); | ||
218 | + YangBit yangBit = element.getValue(); | ||
219 | + if (position == 0) { | ||
220 | + assertThat(yangBit.getBitName(), is("disable-nagle")); | ||
221 | + } else if (position == 1) { | ||
222 | + assertThat(yangBit.getBitName(), is("auto-sense-speed")); | ||
223 | + } else if (position == 2) { | ||
224 | + assertThat(yangBit.getBitName(), is("Mb-only")); | ||
225 | + } else { | ||
226 | + throw new IOException("Invalid bit position: " + position); | ||
227 | + } | ||
228 | + } | ||
229 | + | ||
230 | + // Check leaf reffered typedef | ||
231 | + ListIterator<YangLeaf> leafIterator = yangNode.getListOfLeaf().listIterator(); | ||
232 | + YangLeaf leafInfo = leafIterator.next(); | ||
233 | + | ||
234 | + assertThat(leafInfo.getName(), is("myBits")); | ||
235 | + assertThat(leafInfo.getDataType().getDataTypeName(), is("topBits")); | ||
236 | + assertThat(leafInfo.getDataType().getDataType(), is(YangDataTypes.DERIVED)); | ||
237 | + YangType<YangDerivedInfo> typeDerived = (YangType<YangDerivedInfo>) leafInfo.getDataType(); | ||
238 | + YangDerivedInfo derivedInfo = (YangDerivedInfo) typeDerived.getDataTypeExtendedInfo(); | ||
239 | + YangTypeDef prevTypedef = (YangTypeDef) derivedInfo.getReferredTypeDef(); | ||
240 | + assertThat(prevTypedef.getName(), is("topBits")); | ||
241 | + YangType topType = prevTypedef.getTypeList().iterator().next(); | ||
242 | + assertThat(topType.getDataType(), is(YangDataTypes.BITS)); | ||
243 | + assertThat(topType.getDataTypeName(), is("bits")); | ||
244 | + YangType<YangBits> typeBits = (YangType<YangBits>) topType; | ||
245 | + YangBits bits = typeBits.getDataTypeExtendedInfo(); | ||
246 | + | ||
247 | + // Check bit name map | ||
248 | + bitNameMap = bits.getBitNameMap(); | ||
249 | + assertThat(bitNameMap.size(), is(3)); | ||
250 | + for (Map.Entry<String, YangBit> element : bitNameMap.entrySet()) { | ||
251 | + String bitName = element.getKey(); | ||
252 | + YangBit yangBit = element.getValue(); | ||
253 | + if (bitName.equals("disable-nagle")) { | ||
254 | + assertThat(yangBit.getPosition(), is(0)); | ||
255 | + } else if (bitName.equals("auto-sense-speed")) { | ||
256 | + assertThat(yangBit.getPosition(), is(1)); | ||
257 | + } else if (bitName.equals("Mb-only")) { | ||
258 | + assertThat(yangBit.getPosition(), is(2)); | ||
259 | + } else { | ||
260 | + throw new IOException("Invalid bit name: " + bitName); | ||
261 | + } | ||
262 | + } | ||
263 | + | ||
264 | + // Check bit position map | ||
265 | + bitPositionMap = bits.getBitPositionMap(); | ||
266 | + assertThat(bitPositionMap.size(), is(3)); | ||
267 | + for (Map.Entry<Integer, YangBit> element : bitPositionMap.entrySet()) { | ||
268 | + int position = element.getKey(); | ||
269 | + YangBit yangBit = element.getValue(); | ||
270 | + if (position == 0) { | ||
271 | + assertThat(yangBit.getBitName(), is("disable-nagle")); | ||
272 | + } else if (position == 1) { | ||
273 | + assertThat(yangBit.getBitName(), is("auto-sense-speed")); | ||
274 | + } else if (position == 2) { | ||
275 | + assertThat(yangBit.getBitName(), is("Mb-only")); | ||
276 | + } else { | ||
277 | + throw new IOException("Invalid bit position: " + position); | ||
278 | + } | ||
279 | + } | ||
280 | + } | ||
281 | + | ||
282 | + /** | ||
171 | * Checks bit statement with union. | 283 | * Checks bit statement with union. |
172 | */ | 284 | */ |
173 | @Test | 285 | @Test | ... | ... |
This diff is collapsed. Click to expand it.
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + typedef topBits { | ||
6 | + type bits { | ||
7 | + bit disable-nagle { | ||
8 | + position 0; | ||
9 | + } | ||
10 | + bit auto-sense-speed { | ||
11 | + position 1; | ||
12 | + } | ||
13 | + bit Mb-only { | ||
14 | + position 2; | ||
15 | + } | ||
16 | + } | ||
17 | + } | ||
18 | + | ||
19 | + leaf myBits { | ||
20 | + type topBits; | ||
21 | + } | ||
22 | +} |
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + | ||
6 | + typedef topDecimal { | ||
7 | + type decimal64 { | ||
8 | + fraction-digits 4; | ||
9 | + range 4..11; | ||
10 | + } | ||
11 | + } | ||
12 | + | ||
13 | + typedef midDecimal { | ||
14 | + type topDecimal; | ||
15 | + } | ||
16 | + | ||
17 | + leaf lowerDecimal { | ||
18 | + type midDecimal { | ||
19 | + range 1..12; | ||
20 | + } | ||
21 | + } | ||
22 | +} |
utils/yangutils/plugin/src/test/resources/decimal64/Decimal64MultiTypedefMultiRangeStatement.yang
0 → 100644
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + | ||
6 | + typedef topDecimal { | ||
7 | + type decimal64 { | ||
8 | + fraction-digits 4; | ||
9 | + range 1..12; | ||
10 | + } | ||
11 | + } | ||
12 | + | ||
13 | + typedef midDecimal { | ||
14 | + type topDecimal; | ||
15 | + } | ||
16 | + | ||
17 | + leaf lowerDecimal { | ||
18 | + type midDecimal { | ||
19 | + range 4..11; | ||
20 | + } | ||
21 | + } | ||
22 | +} |
utils/yangutils/plugin/src/test/resources/decimal64/Decimal64MultiTypedefRangeInLeafStatement.yang
0 → 100644
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + | ||
6 | + typedef topDecimal { | ||
7 | + type decimal64 { | ||
8 | + fraction-digits 4; | ||
9 | + } | ||
10 | + } | ||
11 | + | ||
12 | + typedef midDecimal { | ||
13 | + type topDecimal; | ||
14 | + } | ||
15 | + | ||
16 | + leaf lowerDecimal { | ||
17 | + type midDecimal { | ||
18 | + range 1..12; | ||
19 | + } | ||
20 | + } | ||
21 | +} |
utils/yangutils/plugin/src/test/resources/decimal64/Decimal64MultiTypedefRangeStatement.yang
0 → 100644
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + | ||
6 | + typedef topDecimal { | ||
7 | + type decimal64 { | ||
8 | + fraction-digits 4; | ||
9 | + range 1..12; | ||
10 | + } | ||
11 | + } | ||
12 | + | ||
13 | + typedef midDecimal { | ||
14 | + type topDecimal; | ||
15 | + } | ||
16 | + | ||
17 | + leaf lowerDecimal { | ||
18 | + type midDecimal; | ||
19 | + } | ||
20 | +} |
... | @@ -9,11 +9,11 @@ module Test { | ... | @@ -9,11 +9,11 @@ module Test { |
9 | } | 9 | } |
10 | } | 10 | } |
11 | 11 | ||
12 | - typedef validDecimal { | 12 | + typedef midDecimal { |
13 | type topDecimal; | 13 | type topDecimal; |
14 | } | 14 | } |
15 | 15 | ||
16 | - leaf setFourDecimal { | 16 | + leaf lowerDecimal { |
17 | - type validDecimal; | 17 | + type midDecimal; |
18 | } | 18 | } |
19 | } | 19 | } | ... | ... |
utils/yangutils/plugin/src/test/resources/decimal64/Decimal64MultiTypedefWithMaxRange.yang
0 → 100644
1 | +module Test { | ||
2 | + yang-version 1; | ||
3 | + namespace http://huawei.com; | ||
4 | + prefix Ant; | ||
5 | + | ||
6 | + typedef topDecimal { | ||
7 | + type decimal64 { | ||
8 | + fraction-digits 4; | ||
9 | + range 1..12; | ||
10 | + } | ||
11 | + } | ||
12 | + | ||
13 | + typedef midDecimal { | ||
14 | + type topDecimal; | ||
15 | + } | ||
16 | + | ||
17 | + leaf lowerDecimal { | ||
18 | + type midDecimal { | ||
19 | + range 4..max; | ||
20 | + } | ||
21 | + } | ||
22 | +} |
... | @@ -1723,7 +1723,6 @@ | ... | @@ -1723,7 +1723,6 @@ |
1723 | uses tet:te-link-state-derived; | 1723 | uses tet:te-link-state-derived; |
1724 | } | 1724 | } |
1725 | 1725 | ||
1726 | - | ||
1727 | augment "/te-link-event/te-link-attributes/underlay" { | 1726 | augment "/te-link-event/te-link-attributes/underlay" { |
1728 | description "Add state attributes to te-link underlay."; | 1727 | description "Add state attributes to te-link underlay."; |
1729 | uses te-link-state-underlay-attributes; | 1728 | uses te-link-state-underlay-attributes; | ... | ... |
-
Please register or login to post a comment