Committed by
Gerrit Code Review
Defect fix for YANG revision
Change-Id: I6af5e82122629ea69c40b4fc3159bc7712d8293d
Showing
7 changed files
with
62 additions
and
5 deletions
| ... | @@ -17,6 +17,7 @@ | ... | @@ -17,6 +17,7 @@ |
| 17 | package org.onosproject.yangutils.parser.impl.listeners; | 17 | package org.onosproject.yangutils.parser.impl.listeners; |
| 18 | 18 | ||
| 19 | import org.onosproject.yangutils.datamodel.YangModule; | 19 | import org.onosproject.yangutils.datamodel.YangModule; |
| 20 | +import org.onosproject.yangutils.datamodel.YangRevision; | ||
| 20 | import org.onosproject.yangutils.parser.antlrgencode.GeneratedYangParser; | 21 | import org.onosproject.yangutils.parser.antlrgencode.GeneratedYangParser; |
| 21 | import org.onosproject.yangutils.parser.exceptions.ParserException; | 22 | import org.onosproject.yangutils.parser.exceptions.ParserException; |
| 22 | import org.onosproject.yangutils.parser.impl.TreeWalkListener; | 23 | import org.onosproject.yangutils.parser.impl.TreeWalkListener; |
| ... | @@ -30,6 +31,7 @@ import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorTyp | ... | @@ -30,6 +31,7 @@ import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorTyp |
| 30 | import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorType.MISSING_CURRENT_HOLDER; | 31 | import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorType.MISSING_CURRENT_HOLDER; |
| 31 | import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorType.MISSING_HOLDER; | 32 | import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorType.MISSING_HOLDER; |
| 32 | import static org.onosproject.yangutils.parser.impl.parserutils.ListenerUtil.getValidIdentifier; | 33 | import static org.onosproject.yangutils.parser.impl.parserutils.ListenerUtil.getValidIdentifier; |
| 34 | +import static org.onosproject.yangutils.parser.impl.parserutils.ListenerUtil.setCurrentDateForRevision; | ||
| 33 | import static org.onosproject.yangutils.parser.impl.parserutils.ListenerValidation.checkStackIsEmpty; | 35 | import static org.onosproject.yangutils.parser.impl.parserutils.ListenerValidation.checkStackIsEmpty; |
| 34 | import static org.onosproject.yangutils.parser.impl.parserutils.ListenerValidation.checkStackIsNotEmpty; | 36 | import static org.onosproject.yangutils.parser.impl.parserutils.ListenerValidation.checkStackIsNotEmpty; |
| 35 | import static org.onosproject.yangutils.utils.YangConstructType.MODULE_DATA; | 37 | import static org.onosproject.yangutils.utils.YangConstructType.MODULE_DATA; |
| ... | @@ -85,6 +87,13 @@ public final class ModuleListener { | ... | @@ -85,6 +87,13 @@ public final class ModuleListener { |
| 85 | yangModule.setVersion((byte) 1); | 87 | yangModule.setVersion((byte) 1); |
| 86 | } | 88 | } |
| 87 | 89 | ||
| 90 | + if (ctx.moduleBody().revisionStatements().revisionStatement().isEmpty()) { | ||
| 91 | + String currentDate = setCurrentDateForRevision(); | ||
| 92 | + YangRevision currentRevision = new YangRevision(); | ||
| 93 | + currentRevision.setRevDate(currentDate); | ||
| 94 | + yangModule.setRevision(currentRevision); | ||
| 95 | + } | ||
| 96 | + | ||
| 88 | listener.getParsedDataStack().push(yangModule); | 97 | listener.getParsedDataStack().push(yangModule); |
| 89 | } | 98 | } |
| 90 | 99 | ... | ... |
utils/yangutils/src/main/java/org/onosproject/yangutils/parser/impl/listeners/SubModuleListener.java
| ... | @@ -16,6 +16,7 @@ | ... | @@ -16,6 +16,7 @@ |
| 16 | 16 | ||
| 17 | package org.onosproject.yangutils.parser.impl.listeners; | 17 | package org.onosproject.yangutils.parser.impl.listeners; |
| 18 | 18 | ||
| 19 | +import org.onosproject.yangutils.datamodel.YangRevision; | ||
| 19 | import org.onosproject.yangutils.datamodel.YangSubModule; | 20 | import org.onosproject.yangutils.datamodel.YangSubModule; |
| 20 | import org.onosproject.yangutils.parser.antlrgencode.GeneratedYangParser; | 21 | import org.onosproject.yangutils.parser.antlrgencode.GeneratedYangParser; |
| 21 | import org.onosproject.yangutils.parser.exceptions.ParserException; | 22 | import org.onosproject.yangutils.parser.exceptions.ParserException; |
| ... | @@ -30,6 +31,7 @@ import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorTyp | ... | @@ -30,6 +31,7 @@ import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorTyp |
| 30 | import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorType.MISSING_CURRENT_HOLDER; | 31 | import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorType.MISSING_CURRENT_HOLDER; |
| 31 | import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorType.MISSING_HOLDER; | 32 | import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorType.MISSING_HOLDER; |
| 32 | import static org.onosproject.yangutils.parser.impl.parserutils.ListenerUtil.getValidIdentifier; | 33 | import static org.onosproject.yangutils.parser.impl.parserutils.ListenerUtil.getValidIdentifier; |
| 34 | +import static org.onosproject.yangutils.parser.impl.parserutils.ListenerUtil.setCurrentDateForRevision; | ||
| 33 | import static org.onosproject.yangutils.parser.impl.parserutils.ListenerValidation.checkStackIsEmpty; | 35 | import static org.onosproject.yangutils.parser.impl.parserutils.ListenerValidation.checkStackIsEmpty; |
| 34 | import static org.onosproject.yangutils.parser.impl.parserutils.ListenerValidation.checkStackIsNotEmpty; | 36 | import static org.onosproject.yangutils.parser.impl.parserutils.ListenerValidation.checkStackIsNotEmpty; |
| 35 | import static org.onosproject.yangutils.utils.YangConstructType.SUB_MODULE_DATA; | 37 | import static org.onosproject.yangutils.utils.YangConstructType.SUB_MODULE_DATA; |
| ... | @@ -88,6 +90,13 @@ public final class SubModuleListener { | ... | @@ -88,6 +90,13 @@ public final class SubModuleListener { |
| 88 | yangSubModule.setVersion((byte) 1); | 90 | yangSubModule.setVersion((byte) 1); |
| 89 | } | 91 | } |
| 90 | 92 | ||
| 93 | + if (ctx.submoduleBody().revisionStatements().revisionStatement().isEmpty()) { | ||
| 94 | + String currentDate = setCurrentDateForRevision(); | ||
| 95 | + YangRevision currentRevision = new YangRevision(); | ||
| 96 | + currentRevision.setRevDate(currentDate); | ||
| 97 | + yangSubModule.setRevision(currentRevision); | ||
| 98 | + } | ||
| 99 | + | ||
| 91 | listener.getParsedDataStack().push(yangSubModule); | 100 | listener.getParsedDataStack().push(yangSubModule); |
| 92 | } | 101 | } |
| 93 | 102 | ... | ... |
| ... | @@ -20,6 +20,7 @@ import org.antlr.v4.runtime.ParserRuleContext; | ... | @@ -20,6 +20,7 @@ import org.antlr.v4.runtime.ParserRuleContext; |
| 20 | 20 | ||
| 21 | import java.text.ParseException; | 21 | import java.text.ParseException; |
| 22 | import java.text.SimpleDateFormat; | 22 | import java.text.SimpleDateFormat; |
| 23 | +import java.util.Calendar; | ||
| 23 | import java.util.regex.Pattern; | 24 | import java.util.regex.Pattern; |
| 24 | 25 | ||
| 25 | import org.onosproject.yangutils.parser.antlrgencode.GeneratedYangParser; | 26 | import org.onosproject.yangutils.parser.antlrgencode.GeneratedYangParser; |
| ... | @@ -37,6 +38,11 @@ public final class ListenerUtil { | ... | @@ -37,6 +38,11 @@ public final class ListenerUtil { |
| 37 | private static final String TRUE_KEYWORD = "true"; | 38 | private static final String TRUE_KEYWORD = "true"; |
| 38 | private static final String FALSE_KEYWORD = "false"; | 39 | private static final String FALSE_KEYWORD = "false"; |
| 39 | private static final int IDENTIFIER_LENGTH = 64; | 40 | private static final int IDENTIFIER_LENGTH = 64; |
| 41 | + private static final String DATE_FORMAT = "yyyy-MM-dd"; | ||
| 42 | + private static final String EMPTY_STRING = ""; | ||
| 43 | + private static final String HYPHEN = "-"; | ||
| 44 | + private static final String SLASH = "/"; | ||
| 45 | + private static final String SPACE = " "; | ||
| 40 | 46 | ||
| 41 | /** | 47 | /** |
| 42 | * Creates a new listener util. | 48 | * Creates a new listener util. |
| ... | @@ -52,7 +58,7 @@ public final class ListenerUtil { | ... | @@ -52,7 +58,7 @@ public final class ListenerUtil { |
| 52 | */ | 58 | */ |
| 53 | public static String removeQuotesAndHandleConcat(String yangStringData) { | 59 | public static String removeQuotesAndHandleConcat(String yangStringData) { |
| 54 | 60 | ||
| 55 | - yangStringData = yangStringData.replace("\"", ""); | 61 | + yangStringData = yangStringData.replace("\"", EMPTY_STRING); |
| 56 | String[] tmpData = yangStringData.split(Pattern.quote(PLUS)); | 62 | String[] tmpData = yangStringData.split(Pattern.quote(PLUS)); |
| 57 | StringBuilder builder = new StringBuilder(); | 63 | StringBuilder builder = new StringBuilder(); |
| 58 | for (String yangString : tmpData) { | 64 | for (String yangString : tmpData) { |
| ... | @@ -103,7 +109,7 @@ public final class ListenerUtil { | ... | @@ -103,7 +109,7 @@ public final class ListenerUtil { |
| 103 | return false; | 109 | return false; |
| 104 | } | 110 | } |
| 105 | 111 | ||
| 106 | - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); | 112 | + SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT); |
| 107 | sdf.setLenient(false); | 113 | sdf.setLenient(false); |
| 108 | 114 | ||
| 109 | try { | 115 | try { |
| ... | @@ -184,4 +190,18 @@ public final class ListenerUtil { | ... | @@ -184,4 +190,18 @@ public final class ListenerUtil { |
| 184 | throw parserException; | 190 | throw parserException; |
| 185 | } | 191 | } |
| 186 | } | 192 | } |
| 193 | + | ||
| 194 | + /** | ||
| 195 | + * Sets current date and makes it in usable format for revision. | ||
| 196 | + * | ||
| 197 | + * @return usable current date format for revision | ||
| 198 | + */ | ||
| 199 | + public static String setCurrentDateForRevision() { | ||
| 200 | + | ||
| 201 | + Calendar date = Calendar.getInstance(); | ||
| 202 | + SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_FORMAT); | ||
| 203 | + String dateForRevision = ((dateFormat.format(date.getTime())).replaceAll(SLASH, HYPHEN)).replaceAll(SPACE, | ||
| 204 | + EMPTY_STRING); | ||
| 205 | + return dateForRevision; | ||
| 206 | + } | ||
| 187 | } | 207 | } |
| ... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
| ... | @@ -37,8 +37,8 @@ import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getAbsolutePac | ... | @@ -37,8 +37,8 @@ import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getAbsolutePac |
| 37 | * Module information extended to support java code generation. | 37 | * Module information extended to support java code generation. |
| 38 | */ | 38 | */ |
| 39 | public class YangJavaModule extends YangModule | 39 | public class YangJavaModule extends YangModule |
| 40 | - implements JavaCodeGenerator, HasJavaFileInfo, | 40 | +implements JavaCodeGenerator, HasJavaFileInfo, |
| 41 | - HasJavaImportData, HasTempJavaCodeFragmentFiles { | 41 | +HasJavaImportData, HasTempJavaCodeFragmentFiles { |
| 42 | 42 | ||
| 43 | /** | 43 | /** |
| 44 | * Contains the information of the java file being generated. | 44 | * Contains the information of the java file being generated. |
| ... | @@ -76,7 +76,7 @@ public class YangJavaModule extends YangModule | ... | @@ -76,7 +76,7 @@ public class YangJavaModule extends YangModule |
| 76 | public JavaFileInfo getJavaFileInfo() { | 76 | public JavaFileInfo getJavaFileInfo() { |
| 77 | 77 | ||
| 78 | if (javaFileInfo == null) { | 78 | if (javaFileInfo == null) { |
| 79 | - throw new RuntimeException("Missing java info in java datamodel node"); | 79 | + throw new RuntimeException("Missing java info in java datamodel node."); |
| 80 | } | 80 | } |
| 81 | return javaFileInfo; | 81 | return javaFileInfo; |
| 82 | } | 82 | } | ... | ... |
| ... | @@ -25,6 +25,7 @@ import org.onosproject.yangutils.parser.impl.YangUtilsParserManager; | ... | @@ -25,6 +25,7 @@ import org.onosproject.yangutils.parser.impl.YangUtilsParserManager; |
| 25 | import java.io.IOException; | 25 | import java.io.IOException; |
| 26 | 26 | ||
| 27 | import static org.hamcrest.core.Is.is; | 27 | import static org.hamcrest.core.Is.is; |
| 28 | +import static org.hamcrest.core.IsNull.notNullValue; | ||
| 28 | import static org.junit.Assert.assertThat; | 29 | import static org.junit.Assert.assertThat; |
| 29 | 30 | ||
| 30 | /** | 31 | /** |
| ... | @@ -64,4 +65,14 @@ public class RevisionListenerTest { | ... | @@ -64,4 +65,14 @@ public class RevisionListenerTest { |
| 64 | 65 | ||
| 65 | YangNode node = manager.getDataModel("src/test/resources/RevisionInValidOrder.yang"); | 66 | YangNode node = manager.getDataModel("src/test/resources/RevisionInValidOrder.yang"); |
| 66 | } | 67 | } |
| 68 | + | ||
| 69 | + /** | ||
| 70 | + * Checks the revision with current date is created for empty revision statement. | ||
| 71 | + */ | ||
| 72 | + @Test | ||
| 73 | + public void processWithoutRevision() throws IOException, ParserException { | ||
| 74 | + | ||
| 75 | + YangNode node = manager.getDataModel("src/test/resources/RevisionAbsence.yang"); | ||
| 76 | + assertThat(((YangModule) node).getRevision().getRevDate(), notNullValue()); | ||
| 77 | + } | ||
| 67 | } | 78 | } |
| ... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
| ... | @@ -26,6 +26,7 @@ import org.onosproject.yangutils.parser.impl.YangUtilsParserManager; | ... | @@ -26,6 +26,7 @@ import org.onosproject.yangutils.parser.impl.YangUtilsParserManager; |
| 26 | import java.io.IOException; | 26 | import java.io.IOException; |
| 27 | 27 | ||
| 28 | import static org.hamcrest.core.Is.is; | 28 | import static org.hamcrest.core.Is.is; |
| 29 | +import static org.hamcrest.core.IsNull.notNullValue; | ||
| 29 | import static org.junit.Assert.assertThat; | 30 | import static org.junit.Assert.assertThat; |
| 30 | 31 | ||
| 31 | /** | 32 | /** |
| ... | @@ -107,6 +108,8 @@ public class SubModuleListenerTest { | ... | @@ -107,6 +108,8 @@ public class SubModuleListenerTest { |
| 107 | assertThat(yangNode.getBelongsTo().getBelongsToModuleName(), is("ONOS")); | 108 | assertThat(yangNode.getBelongsTo().getBelongsToModuleName(), is("ONOS")); |
| 108 | // Checks for the version value in data model tree. | 109 | // Checks for the version value in data model tree. |
| 109 | assertThat(yangNode.getBelongsTo().getPrefix(), is("On1")); | 110 | assertThat(yangNode.getBelongsTo().getPrefix(), is("On1")); |
| 111 | + //Checks the revision with current date is created for empty revision statement. | ||
| 112 | + assertThat(((YangSubModule) node).getRevision().getRevDate(), notNullValue()); | ||
| 110 | } | 113 | } |
| 111 | 114 | ||
| 112 | /** | 115 | /** | ... | ... |
-
Please register or login to post a comment