From 7b9726ec01454dfdd596ec8b366cedc5bc71d47c Mon Sep 17 00:00:00 2001 From: Vidyashree Rama Date: Mon, 26 Aug 2019 13:48:33 +0530 Subject: [PATCH 1/2] [ONOS-8031]Yang revision date are stored with default timezone Change-Id: I14265b2e6c2f2b82f183f6317f79ec675dbc085c --- .../yang/compiler/datamodel/YangImport.java | 10 +-- .../yang/compiler/datamodel/YangInclude.java | 10 +-- .../yang/compiler/datamodel/YangRevision.java | 8 +- .../datamodel/utils/DataModelUtils.java | 4 +- .../impl/listeners/RevisionDateListener.java | 4 +- .../impl/listeners/RevisionListener.java | 12 +-- .../parser/impl/parserutils/ListenerUtil.java | 76 +++++-------------- .../impl/listeners/ImportListenerTest.java | 6 +- .../impl/listeners/IncludeListenerTest.java | 14 ++-- .../listeners/RevisionDateListenerTest.java | 25 +++--- .../impl/listeners/RevisionListenerTest.java | 35 +++++++-- .../RevisionDayMonthSingleDigit.yang | 17 +++++ .../resources/RevisionDaySingleDigit.yang | 17 +++++ .../resources/RevisionMonthSingleDigit.yang | 17 +++++ .../tojava/utils/JavaIdentifierSyntax.java | 9 +-- .../utils/JavaIdentifierSyntaxTest.java | 11 +-- 16 files changed, 147 insertions(+), 128 deletions(-) create mode 100755 compiler/base/parser/src/test/resources/RevisionDayMonthSingleDigit.yang create mode 100755 compiler/base/parser/src/test/resources/RevisionDaySingleDigit.yang create mode 100755 compiler/base/parser/src/test/resources/RevisionMonthSingleDigit.yang diff --git a/compiler/base/datamodel/src/main/java/org/onosproject/yang/compiler/datamodel/YangImport.java b/compiler/base/datamodel/src/main/java/org/onosproject/yang/compiler/datamodel/YangImport.java index b3f0e2bf..d4b3d1aa 100644 --- a/compiler/base/datamodel/src/main/java/org/onosproject/yang/compiler/datamodel/YangImport.java +++ b/compiler/base/datamodel/src/main/java/org/onosproject/yang/compiler/datamodel/YangImport.java @@ -21,7 +21,7 @@ import org.slf4j.Logger; import java.io.Serializable; -import java.util.Date; +import java.time.LocalDate; import java.util.Set; import static org.onosproject.yang.compiler.datamodel.utils.DataModelUtils.findReferredNode; @@ -96,7 +96,7 @@ public class YangImport extends DefaultLocationInfo * the most recent "revision" statement in the imported module. organization * which defined the YANG module. */ - private Date revision; + private LocalDate revision; /** * Reference to node which is imported. @@ -151,7 +151,7 @@ public void setPrefixId(String prefixId) { * * @return the revision of the imported module */ - public Date getRevision() { + public LocalDate getRevision() { return revision; } @@ -160,7 +160,7 @@ public Date getRevision() { * * @param rev set the revision of the imported module */ - public void setRevision(Date rev) { + public void setRevision(LocalDate rev) { revision = rev; } @@ -224,7 +224,7 @@ public void setImportedNode(YangNode importedNode) { */ public void addReferenceToImport(Set yangNodeSet) throws DataModelException { String importedModuleName = getModuleName(); - Date importedModuleRevision = getRevision(); + LocalDate importedModuleRevision = getRevision(); YangNode moduleNode = null; /* * Find the imported module node for a given module name with a diff --git a/compiler/base/datamodel/src/main/java/org/onosproject/yang/compiler/datamodel/YangInclude.java b/compiler/base/datamodel/src/main/java/org/onosproject/yang/compiler/datamodel/YangInclude.java index 873ec6eb..2d520d39 100644 --- a/compiler/base/datamodel/src/main/java/org/onosproject/yang/compiler/datamodel/YangInclude.java +++ b/compiler/base/datamodel/src/main/java/org/onosproject/yang/compiler/datamodel/YangInclude.java @@ -20,7 +20,7 @@ import org.onosproject.yang.compiler.datamodel.utils.YangConstructType; import java.io.Serializable; -import java.util.Date; +import java.time.LocalDate; import java.util.Set; import static org.onosproject.yang.compiler.datamodel.utils.DataModelUtils.findReferredNode; @@ -57,7 +57,7 @@ public class YangInclude extends DefaultLocationInfo * The include's "revision-date" statement is used to specify the exact * version of the submodule to import. */ - private Date revision; + private LocalDate revision; /** * Reference to node which is included. @@ -93,7 +93,7 @@ public void setSubModuleName(String subModuleName) { * * @return the revision */ - public Date getRevision() { + public LocalDate getRevision() { return revision; } @@ -102,7 +102,7 @@ public Date getRevision() { * * @param revision the revision to set */ - public void setRevision(Date revision) { + public void setRevision(LocalDate revision) { this.revision = revision; } @@ -157,7 +157,7 @@ public void setIncludedNode(YangNode includedNode) { */ public YangSubModule addReferenceToInclude(Set yangNodeSet) throws DataModelException { String includedSubModuleName = getSubModuleName(); - Date includedSubModuleRevision = getRevision(); + LocalDate includedSubModuleRevision = getRevision(); YangNode subModuleNode = null; /* diff --git a/compiler/base/datamodel/src/main/java/org/onosproject/yang/compiler/datamodel/YangRevision.java b/compiler/base/datamodel/src/main/java/org/onosproject/yang/compiler/datamodel/YangRevision.java index 6d4a52b1..fdafdb43 100644 --- a/compiler/base/datamodel/src/main/java/org/onosproject/yang/compiler/datamodel/YangRevision.java +++ b/compiler/base/datamodel/src/main/java/org/onosproject/yang/compiler/datamodel/YangRevision.java @@ -20,7 +20,7 @@ import org.onosproject.yang.compiler.datamodel.utils.YangConstructType; import java.io.Serializable; -import java.util.Date; +import java.time.LocalDate; /* * Reference:RFC 6020. @@ -55,7 +55,7 @@ public class YangRevision /** * Revision date. Date string in the format "YYYY-MM-DD" */ - private Date revDate; + private LocalDate revDate; /** * Description of revision. @@ -78,7 +78,7 @@ public YangRevision() { * * @return the revision date */ - public Date getRevDate() { + public LocalDate getRevDate() { return revDate; } @@ -87,7 +87,7 @@ public Date getRevDate() { * * @param revDate the revision date to set */ - public void setRevDate(Date revDate) { + public void setRevDate(LocalDate revDate) { this.revDate = revDate; } diff --git a/compiler/base/datamodel/src/main/java/org/onosproject/yang/compiler/datamodel/utils/DataModelUtils.java b/compiler/base/datamodel/src/main/java/org/onosproject/yang/compiler/datamodel/utils/DataModelUtils.java index 9a9cde10..b3b60a48 100644 --- a/compiler/base/datamodel/src/main/java/org/onosproject/yang/compiler/datamodel/utils/DataModelUtils.java +++ b/compiler/base/datamodel/src/main/java/org/onosproject/yang/compiler/datamodel/utils/DataModelUtils.java @@ -76,7 +76,6 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; -import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Collection; import java.util.Enumeration; @@ -1476,8 +1475,7 @@ private static YangNode getNode(YangNodeIdentifier nodeId, public static String getDateInStringFormat(YangNode schemaNode) { if (schemaNode != null) { if (schemaNode.getRevision() != null) { - return new SimpleDateFormat(DATE_FORMAT) - .format(schemaNode.getRevision().getRevDate()); + return schemaNode.getRevision().getRevDate().toString(); } } return null; diff --git a/compiler/base/parser/src/main/java/org/onosproject/yang/compiler/parser/impl/listeners/RevisionDateListener.java b/compiler/base/parser/src/main/java/org/onosproject/yang/compiler/parser/impl/listeners/RevisionDateListener.java index e51c33b3..b299b665 100644 --- a/compiler/base/parser/src/main/java/org/onosproject/yang/compiler/parser/impl/listeners/RevisionDateListener.java +++ b/compiler/base/parser/src/main/java/org/onosproject/yang/compiler/parser/impl/listeners/RevisionDateListener.java @@ -22,7 +22,7 @@ import org.onosproject.yang.compiler.parser.exceptions.ParserException; import org.onosproject.yang.compiler.parser.impl.TreeWalkListener; -import java.util.Date; +import java.time.LocalDate; import static org.onosproject.yang.compiler.datamodel.utils.YangConstructType.REVISION_DATE_DATA; import static org.onosproject.yang.compiler.parser.antlrgencode.GeneratedYangParser.RevisionDateStatementContext; @@ -88,7 +88,7 @@ public static void processRevisionDateEntry(TreeWalkListener listener, checkStackIsNotEmpty(listener, MISSING_HOLDER, REVISION_DATE_DATA, ctx.dateArgumentString().getText(), ENTRY); - Date date = getValidDateFromString(ctx.dateArgumentString().getText(), ctx); + LocalDate date = getValidDateFromString(ctx.dateArgumentString().getText(), ctx); // Obtain the node of the stack. Parsable tmpNode = listener.getParsedDataStack().peek(); diff --git a/compiler/base/parser/src/main/java/org/onosproject/yang/compiler/parser/impl/listeners/RevisionListener.java b/compiler/base/parser/src/main/java/org/onosproject/yang/compiler/parser/impl/listeners/RevisionListener.java index 5868328b..f3ba93da 100644 --- a/compiler/base/parser/src/main/java/org/onosproject/yang/compiler/parser/impl/listeners/RevisionListener.java +++ b/compiler/base/parser/src/main/java/org/onosproject/yang/compiler/parser/impl/listeners/RevisionListener.java @@ -23,7 +23,7 @@ import org.onosproject.yang.compiler.parser.exceptions.ParserException; import org.onosproject.yang.compiler.parser.impl.TreeWalkListener; -import java.util.Date; +import java.time.LocalDate; import static org.onosproject.yang.compiler.datamodel.utils.YangConstructType.REVISION_DATA; import static org.onosproject.yang.compiler.parser.antlrgencode.GeneratedYangParser.RevisionStatementContext; @@ -89,7 +89,7 @@ public static void processRevisionEntry(TreeWalkListener listener, // Check for stack to be non empty. checkStackIsNotEmpty(listener, MISSING_HOLDER, REVISION_DATA, ctx.dateArgumentString().getText(), ENTRY); - Date date = getValidDateFromString(ctx.dateArgumentString().getText(), ctx); + LocalDate date = getValidDateFromString(ctx.dateArgumentString().getText(), ctx); YangRevision revisionNode = new YangRevision(); revisionNode.setRevDate(date); @@ -123,8 +123,8 @@ public static void processRevisionExit(TreeWalkListener listener, RevisionStatem case MODULE_DATA: { YangModule module = (YangModule) tmpNode; if (module.getRevision() != null) { - Date curRevisionDate = module.getRevision().getRevDate(); - if (curRevisionDate.before(((YangRevision) tmpRevisionNode).getRevDate())) { + LocalDate curRevisionDate = module.getRevision().getRevDate(); + if (curRevisionDate.isBefore(((YangRevision) tmpRevisionNode).getRevDate())) { module.setRevision((YangRevision) tmpRevisionNode); } } else { @@ -135,8 +135,8 @@ public static void processRevisionExit(TreeWalkListener listener, RevisionStatem case SUB_MODULE_DATA: { YangSubModule subModule = (YangSubModule) tmpNode; if (subModule.getRevision() != null) { - Date curRevisionDate = subModule.getRevision().getRevDate(); - if (curRevisionDate.before(((YangRevision) tmpRevisionNode).getRevDate())) { + LocalDate curRevisionDate = subModule.getRevision().getRevDate(); + if (curRevisionDate.isBefore(((YangRevision) tmpRevisionNode).getRevDate())) { subModule.setRevision((YangRevision) tmpRevisionNode); } } else { diff --git a/compiler/base/parser/src/main/java/org/onosproject/yang/compiler/parser/impl/parserutils/ListenerUtil.java b/compiler/base/parser/src/main/java/org/onosproject/yang/compiler/parser/impl/parserutils/ListenerUtil.java index 538e8636..7d8c5a1a 100644 --- a/compiler/base/parser/src/main/java/org/onosproject/yang/compiler/parser/impl/parserutils/ListenerUtil.java +++ b/compiler/base/parser/src/main/java/org/onosproject/yang/compiler/parser/impl/parserutils/ListenerUtil.java @@ -39,10 +39,8 @@ import org.onosproject.yang.compiler.translator.tojava.javamodel.YangJavaAugmentTranslator; import org.slf4j.Logger; -import java.text.ParseException; -import java.text.SimpleDateFormat; +import java.time.LocalDate; import java.util.ArrayList; -import java.util.Date; import java.util.HashMap; import java.util.LinkedList; import java.util.List; @@ -70,6 +68,7 @@ import static org.onosproject.yang.compiler.utils.UtilConstants.CURRENT; import static org.onosproject.yang.compiler.utils.UtilConstants.EMPTY_STRING; import static org.onosproject.yang.compiler.utils.UtilConstants.FALSE; +import static org.onosproject.yang.compiler.utils.UtilConstants.HYPHEN; import static org.onosproject.yang.compiler.utils.UtilConstants.IN; import static org.onosproject.yang.compiler.utils.UtilConstants.INVALID_TREE; import static org.onosproject.yang.compiler.utils.UtilConstants.ONE; @@ -103,6 +102,8 @@ public final class ListenerUtil { Pattern.compile("\\[(.*?)\\]"); private static final String XML = "xml"; private static final int IDENTIFIER_LENGTH = 64; + private static final int VALUE_CHECK = 10; + private static final int ZERO = 0; private static final String DATE_FORMAT = "yyyy-MM-dd"; private static final String REGEX_EQUAL = "[=]"; private static final String REGEX_OPEN_BRACE = "[(]"; @@ -172,30 +173,6 @@ public static String getValidIdentifier(String identifier, throw parserException; } - /** - * Validates the revision date. - * - * @param dateToValidate input revision date - * @return validation result, true for success, false for failure - */ - public static boolean isDateValid(String dateToValidate) { - if (dateToValidate == null || !dateToValidate.matches(DATE_PATTERN)) { - return false; - } - - SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT); - sdf.setLenient(false); - - try { - //if not valid, it will throw ParseException - sdf.parse(dateToValidate); - } catch (ParseException e) { - return false; - } - - return true; - } - /** * Validates YANG version. * @@ -310,27 +287,6 @@ public static boolean getValidBooleanValue(String booleanValue, YangConstructTyp } } - /** - * Returns current date and makes it in usable format for revision. - * - * @return usable current date format for revision - */ - public static Date getCurrentDateForRevision() { - - SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_FORMAT); - - Date date = new Date(); - String dateInString = dateFormat.format(date); - try { - //if not valid, it will throw ParseException - Date now = dateFormat.parse(dateInString); - return date; - } catch (ParseException e) { - ParserException parserException = new ParserException("YANG file error: Input date is not correct"); - throw parserException; - } - } - /** * Checks and return valid node identifier. * @@ -630,7 +586,7 @@ public static void handleUnsupportedYangConstruct(YangConstructType type, * @param ctx yang construct's context to get the line number and character position * @return date format for revision */ - public static Date getValidDateFromString(String dateInString, ParserRuleContext ctx) { + public static LocalDate getValidDateFromString(String dateInString, ParserRuleContext ctx) { String dateArgument = removeQuotesAndHandleConcat(dateInString); if (!dateArgument.matches(DATE_PATTERN)) { ParserException parserException = new ParserException("YANG file error: Input date is not correct"); @@ -639,18 +595,20 @@ public static Date getValidDateFromString(String dateInString, ParserRuleContext throw parserException; } - SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT); - sdf.setLenient(false); + String[] revisionArr = dateArgument.toString().split(HYPHEN); - try { - //if not valid, it will throw ParseException - return sdf.parse(dateArgument); - } catch (ParseException e) { - ParserException parserException = new ParserException("YANG file error: Input date is not correct"); - parserException.setLine(ctx.getStart().getLine()); - parserException.setCharPosition(ctx.getStart().getCharPositionInLine()); - throw parserException; + StringBuilder rev = new StringBuilder(revisionArr[0]); + for (int i = 1; i < revisionArr.length; i++) { + rev.append(HYPHEN); + Integer val = Integer.parseInt(revisionArr[i]); + if (val < VALUE_CHECK) { + rev.append(ZERO); + } + rev.append(val); } + + //if not valid, it will throw ParseException + return LocalDate.parse(rev); } /** diff --git a/compiler/base/parser/src/test/java/org/onosproject/yang/compiler/parser/impl/listeners/ImportListenerTest.java b/compiler/base/parser/src/test/java/org/onosproject/yang/compiler/parser/impl/listeners/ImportListenerTest.java index 31ba5842..b47c957a 100644 --- a/compiler/base/parser/src/test/java/org/onosproject/yang/compiler/parser/impl/listeners/ImportListenerTest.java +++ b/compiler/base/parser/src/test/java/org/onosproject/yang/compiler/parser/impl/listeners/ImportListenerTest.java @@ -24,7 +24,7 @@ import java.io.IOException; import java.text.ParseException; -import java.text.SimpleDateFormat; +import java.time.LocalDate; import static org.hamcrest.core.Is.is; import static org.junit.Assert.assertThat; @@ -35,8 +35,6 @@ public class ImportListenerTest { private final YangUtilsParserManager manager = new YangUtilsParserManager(); - private static final String DATE_FORMAT = "yyyy-MM-dd"; - private final SimpleDateFormat simpleDateFormat = new SimpleDateFormat(DATE_FORMAT); /** * Checks if mandatory parameter prefix is present in import. @@ -74,7 +72,7 @@ public void processImportValidEntry() throws IOException, ParserException, Parse YangNode node = manager.getDataModel("src/test/resources/ImportValidEntry.yang"); // Checks for the revision value in data model tree. - assertThat(((YangModule) node).getImportList().get(0).getRevision(), is(simpleDateFormat.parse("2015-02-03"))); + assertThat(((YangModule) node).getImportList().get(0).getRevision(), is(LocalDate.parse("2015-02-03"))); // Checks for the prefix id in data model tree. assertThat(((YangModule) node).getImportList().get(0).getPrefixId(), is("On2")); // Checks for the module name in data model tree. diff --git a/compiler/base/parser/src/test/java/org/onosproject/yang/compiler/parser/impl/listeners/IncludeListenerTest.java b/compiler/base/parser/src/test/java/org/onosproject/yang/compiler/parser/impl/listeners/IncludeListenerTest.java index db549def..c25d02fa 100644 --- a/compiler/base/parser/src/test/java/org/onosproject/yang/compiler/parser/impl/listeners/IncludeListenerTest.java +++ b/compiler/base/parser/src/test/java/org/onosproject/yang/compiler/parser/impl/listeners/IncludeListenerTest.java @@ -24,7 +24,7 @@ import java.io.IOException; import java.text.ParseException; -import java.text.SimpleDateFormat; +import java.time.LocalDate; import static org.hamcrest.core.Is.is; import static org.junit.Assert.assertThat; @@ -35,8 +35,6 @@ public class IncludeListenerTest { private final YangUtilsParserManager manager = new YangUtilsParserManager(); - private static final String DATE_FORMAT = "yyyy-MM-dd"; - private final SimpleDateFormat simpleDateFormat = new SimpleDateFormat(DATE_FORMAT); /** * Checks if include listener with ; is valid and updates the data @@ -75,7 +73,7 @@ public void processIncludeWithDate() throws IOException, ParserException, ParseE // Checks for the sub module name in data model tree. assertThat(((YangModule) node).getIncludeList().get(0).getSubModuleName(), is("itut")); - assertThat(((YangModule) node).getIncludeList().get(0).getRevision(), is(simpleDateFormat.parse("2016-02-03"))); + assertThat(((YangModule) node).getIncludeList().get(0).getRevision(), is(LocalDate.parse("2016-02-03"))); } /** @@ -88,9 +86,9 @@ public void processIncludeMultiInstance() throws IOException, ParserException, P // Checks for the sub module name in data model tree. assertThat(((YangModule) node).getIncludeList().get(0).getSubModuleName(), is("itut")); - assertThat(((YangModule) node).getIncludeList().get(0).getRevision(), is(simpleDateFormat.parse("2016-02-03"))); + assertThat(((YangModule) node).getIncludeList().get(0).getRevision(), is(LocalDate.parse("2016-02-03"))); assertThat(((YangModule) node).getIncludeList().get(1).getSubModuleName(), is("sdn")); - assertThat(((YangModule) node).getIncludeList().get(1).getRevision(), is(simpleDateFormat.parse("2014-02-03"))); + assertThat(((YangModule) node).getIncludeList().get(1).getRevision(), is(LocalDate.parse("2014-02-03"))); } /** @@ -103,9 +101,9 @@ public void processIncludeImportAnyOrder() throws IOException, ParserException, // Checks for the sub module name in data model tree. assertThat(((YangModule) node).getIncludeList().get(0).getSubModuleName(), is("itut")); - assertThat(((YangModule) node).getIncludeList().get(0).getRevision(), is(simpleDateFormat.parse("2016-02-03"))); + assertThat(((YangModule) node).getIncludeList().get(0).getRevision(), is(LocalDate.parse("2016-02-03"))); assertThat(((YangModule) node).getIncludeList().get(1).getSubModuleName(), is("sdn")); - assertThat(((YangModule) node).getIncludeList().get(1).getRevision(), is(simpleDateFormat.parse("2014-02-03"))); + assertThat(((YangModule) node).getIncludeList().get(1).getRevision(), is(LocalDate.parse("2014-02-03"))); } /** diff --git a/compiler/base/parser/src/test/java/org/onosproject/yang/compiler/parser/impl/listeners/RevisionDateListenerTest.java b/compiler/base/parser/src/test/java/org/onosproject/yang/compiler/parser/impl/listeners/RevisionDateListenerTest.java index 7f088e87..27ffe053 100644 --- a/compiler/base/parser/src/test/java/org/onosproject/yang/compiler/parser/impl/listeners/RevisionDateListenerTest.java +++ b/compiler/base/parser/src/test/java/org/onosproject/yang/compiler/parser/impl/listeners/RevisionDateListenerTest.java @@ -24,7 +24,8 @@ import java.io.IOException; import java.text.ParseException; -import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.time.format.DateTimeParseException; import static org.hamcrest.core.Is.is; import static org.junit.Assert.assertThat; @@ -35,8 +36,6 @@ public class RevisionDateListenerTest { private final YangUtilsParserManager manager = new YangUtilsParserManager(); - private static final String DATE_FORMAT = "yyyy-MM-dd"; - private final SimpleDateFormat simpleDateFormat = new SimpleDateFormat(DATE_FORMAT); /** * Checks if revision date syntax is correct in include. @@ -64,9 +63,9 @@ public void processRevisionDateInQuotesAtInclude() throws IOException, ParserExc YangNode node = manager.getDataModel("src/test/resources/RevisionDateInQuotesAtInclude.yang"); // Checks for the version value in data model tree. - assertThat(((YangModule) node).getImportList().get(0).getRevision(), is(simpleDateFormat.parse("2015-02-03"))); - assertThat(((YangModule) node).getIncludeList().get(0).getRevision(), is(simpleDateFormat.parse("2016-02-03"))); - assertThat(((YangModule) node).getIncludeList().get(1).getRevision(), is(simpleDateFormat.parse("2014-02-03"))); + assertThat(((YangModule) node).getImportList().get(0).getRevision(), is(LocalDate.parse("2015-02-03"))); + assertThat(((YangModule) node).getIncludeList().get(0).getRevision(), is(LocalDate.parse("2016-02-03"))); + assertThat(((YangModule) node).getIncludeList().get(1).getRevision(), is(LocalDate.parse("2014-02-03"))); } /** @@ -77,9 +76,9 @@ public void processRevisionDateInQuotesAtImport() throws IOException, ParserExce YangNode node = manager.getDataModel("src/test/resources/RevisionDateInQuotesAtImport.yang"); // Checks for the version value in data model tree. - assertThat(((YangModule) node).getImportList().get(0).getRevision(), is(simpleDateFormat.parse("2015-02-03"))); - assertThat(((YangModule) node).getIncludeList().get(0).getRevision(), is(simpleDateFormat.parse("2016-02-03"))); - assertThat(((YangModule) node).getIncludeList().get(1).getRevision(), is(simpleDateFormat.parse("2014-02-03"))); + assertThat(((YangModule) node).getImportList().get(0).getRevision(), is(LocalDate.parse("2015-02-03"))); + assertThat(((YangModule) node).getIncludeList().get(0).getRevision(), is(LocalDate.parse("2016-02-03"))); + assertThat(((YangModule) node).getIncludeList().get(1).getRevision(), is(LocalDate.parse("2014-02-03"))); } /** @@ -94,7 +93,7 @@ public void processRevisionDateInvalidFormat() throws IOException, ParserExcepti /** * Checks if revision date is correct. */ - @Test(expected = ParserException.class) + @Test(expected = DateTimeParseException.class) public void processRevisionDateInvalid() throws IOException, ParserException { YangNode node = manager.getDataModel("src/test/resources/RevisionDateInvalid.yang"); @@ -109,8 +108,8 @@ public void processRevisionDateValidEntry() throws IOException, ParserException, YangNode node = manager.getDataModel("src/test/resources/RevisionDateValidEntry.yang"); // Checks for the version value in data model tree. - assertThat(((YangModule) node).getImportList().get(0).getRevision(), is(simpleDateFormat.parse("2015-02-03"))); - assertThat(((YangModule) node).getIncludeList().get(0).getRevision(), is(simpleDateFormat.parse("2016-02-03"))); - assertThat(((YangModule) node).getIncludeList().get(1).getRevision(), is(simpleDateFormat.parse("2014-02-03"))); + assertThat(((YangModule) node).getImportList().get(0).getRevision(), is(LocalDate.parse("2015-02-03"))); + assertThat(((YangModule) node).getIncludeList().get(0).getRevision(), is(LocalDate.parse("2016-02-03"))); + assertThat(((YangModule) node).getIncludeList().get(1).getRevision(), is(LocalDate.parse("2014-02-03"))); } } \ No newline at end of file diff --git a/compiler/base/parser/src/test/java/org/onosproject/yang/compiler/parser/impl/listeners/RevisionListenerTest.java b/compiler/base/parser/src/test/java/org/onosproject/yang/compiler/parser/impl/listeners/RevisionListenerTest.java index 8c7a8164..0ce68862 100644 --- a/compiler/base/parser/src/test/java/org/onosproject/yang/compiler/parser/impl/listeners/RevisionListenerTest.java +++ b/compiler/base/parser/src/test/java/org/onosproject/yang/compiler/parser/impl/listeners/RevisionListenerTest.java @@ -24,7 +24,7 @@ import java.io.IOException; import java.text.ParseException; -import java.text.SimpleDateFormat; +import java.time.LocalDate; import static org.hamcrest.core.Is.is; import static org.junit.Assert.assertThat; @@ -35,8 +35,6 @@ public class RevisionListenerTest { private final YangUtilsParserManager manager = new YangUtilsParserManager(); - private static final String DATE_FORMAT = "yyyy-MM-dd"; - private final SimpleDateFormat simpleDateFormat = new SimpleDateFormat(DATE_FORMAT); /** * Checks if revision doesn't have optional parameters "revision and @@ -47,7 +45,7 @@ public void processRevisionNoOptionalParameter() throws IOException, ParserExcep YangNode node = manager.getDataModel("src/test/resources/RevisionNoOptionalParameter.yang"); // Checks for the version value in data model tree. - assertThat(((YangModule) node).getRevision().getRevDate(), is(simpleDateFormat.parse("2016-02-03"))); + assertThat(((YangModule) node).getRevision().getRevDate(), is(LocalDate.parse("2016-02-03"))); } /** @@ -85,6 +83,33 @@ public void processWithoutRevision() throws IOException, ParserException { public void processWithMultipleRevision() throws IOException, ParserException, ParseException { YangNode node = manager.getDataModel("src/test/resources/MultipleRevision.yang"); - assertThat((node).getRevision().getRevDate(), is(simpleDateFormat.parse("2013-07-15"))); + assertThat((node).getRevision().getRevDate(), is(LocalDate.parse("2013-07-15"))); + } + + /** + * Checks revision month of date in single digit format. + */ + @Test + public void processRevisionDateWithSingleDigitMonth() throws IOException, ParserException, ParseException { + YangNode node = manager.getDataModel("src/test/resources/RevisionMonthSingleDigit.yang"); + assertThat((node).getRevision().getRevDate(), is(LocalDate.parse("2013-07-15"))); + } + + /** + * Checks revision day in single digit format. + */ + @Test + public void processRevisionDateWithSingleDigitDay() throws IOException, ParserException, ParseException { + YangNode node = manager.getDataModel("src/test/resources/RevisionDaySingleDigit.yang"); + assertThat((node).getRevision().getRevDate(), is(LocalDate.parse("2013-10-07"))); + } + + /** + * Checks revision day and month in single digit format. + */ + @Test + public void processRevisionDateWithSingleDigitDayMonth() throws IOException, ParserException, ParseException { + YangNode node = manager.getDataModel("src/test/resources/RevisionDayMonthSingleDigit.yang"); + assertThat((node).getRevision().getRevDate(), is(LocalDate.parse("2013-07-07"))); } } \ No newline at end of file diff --git a/compiler/base/parser/src/test/resources/RevisionDayMonthSingleDigit.yang b/compiler/base/parser/src/test/resources/RevisionDayMonthSingleDigit.yang new file mode 100755 index 00000000..96686cb8 --- /dev/null +++ b/compiler/base/parser/src/test/resources/RevisionDayMonthSingleDigit.yang @@ -0,0 +1,17 @@ +module Test { + yang-version 1; + namespace urn:ietf:params:xml:ns:yang:ietf-ospf; + prefix test; + + revision 2013-7-7 { + description + "This revision adds the following new data types: + - yang-identifier + - hex-string + - uuid + - dotted-quad"; + reference + "RFC 6991: Common YANG Data Types"; + } + +} diff --git a/compiler/base/parser/src/test/resources/RevisionDaySingleDigit.yang b/compiler/base/parser/src/test/resources/RevisionDaySingleDigit.yang new file mode 100755 index 00000000..0c600017 --- /dev/null +++ b/compiler/base/parser/src/test/resources/RevisionDaySingleDigit.yang @@ -0,0 +1,17 @@ +module Test { + yang-version 1; + namespace urn:ietf:params:xml:ns:yang:ietf-ospf; + prefix test; + + revision 2013-10-7 { + description + "This revision adds the following new data types: + - yang-identifier + - hex-string + - uuid + - dotted-quad"; + reference + "RFC 6991: Common YANG Data Types"; + } + +} diff --git a/compiler/base/parser/src/test/resources/RevisionMonthSingleDigit.yang b/compiler/base/parser/src/test/resources/RevisionMonthSingleDigit.yang new file mode 100755 index 00000000..6e75f73c --- /dev/null +++ b/compiler/base/parser/src/test/resources/RevisionMonthSingleDigit.yang @@ -0,0 +1,17 @@ +module Test { + yang-version 1; + namespace urn:ietf:params:xml:ns:yang:ietf-ospf; + prefix test; + + revision 2013-7-15 { + description + "This revision adds the following new data types: + - yang-identifier + - hex-string + - uuid + - dotted-quad"; + reference + "RFC 6991: Common YANG Data Types"; + } + +} diff --git a/compiler/base/translator/src/main/java/org/onosproject/yang/compiler/translator/tojava/utils/JavaIdentifierSyntax.java b/compiler/base/translator/src/main/java/org/onosproject/yang/compiler/translator/tojava/utils/JavaIdentifierSyntax.java index 9e14b5b4..b9f7d462 100644 --- a/compiler/base/translator/src/main/java/org/onosproject/yang/compiler/translator/tojava/utils/JavaIdentifierSyntax.java +++ b/compiler/base/translator/src/main/java/org/onosproject/yang/compiler/translator/tojava/utils/JavaIdentifierSyntax.java @@ -25,10 +25,9 @@ import java.io.File; import java.io.IOException; -import java.text.SimpleDateFormat; +import java.time.LocalDate; import java.util.ArrayList; import java.util.Arrays; -import java.util.Date; import java.util.List; import static org.onosproject.yang.compiler.datamodel.utils.DataModelUtils.getParentNodeInGenCode; @@ -111,10 +110,8 @@ private static String getYangVersion(String ver) { * @param date YANG module revision * @return revision string */ - private static String getYangRevisionStr(Date date) { - SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT); - String dateInString = sdf.format(date); - String[] revisionArr = dateInString.split(HYPHEN); + private static String getYangRevisionStr(LocalDate date) { + String[] revisionArr = date.toString().split(HYPHEN); StringBuilder rev = new StringBuilder(REVISION_PREFIX) .append(revisionArr[INDEX_ZERO]); diff --git a/compiler/base/translator/src/test/java/org/onosproject/yang/compiler/translator/tojava/utils/JavaIdentifierSyntaxTest.java b/compiler/base/translator/src/test/java/org/onosproject/yang/compiler/translator/tojava/utils/JavaIdentifierSyntaxTest.java index 6ef2d3a0..0d377986 100644 --- a/compiler/base/translator/src/test/java/org/onosproject/yang/compiler/translator/tojava/utils/JavaIdentifierSyntaxTest.java +++ b/compiler/base/translator/src/test/java/org/onosproject/yang/compiler/translator/tojava/utils/JavaIdentifierSyntaxTest.java @@ -31,7 +31,7 @@ import java.lang.reflect.InvocationTargetException; import java.text.ParseException; import java.text.SimpleDateFormat; -import java.util.Date; +import java.time.LocalDate; import static org.apache.commons.io.FileUtils.deleteDirectory; import static org.hamcrest.core.Is.is; @@ -52,7 +52,7 @@ public final class JavaIdentifierSyntaxTest { private static final String PARENT_PACKAGE = "test5/test6/test7"; private static final String CHILD_PACKAGE = "test1-test2-test3"; - private static final String DATE1 = "2000-1-5"; + private static final String DATE1 = "2000-01-05"; private static final String DATE2 = "1992-01-25"; private static final String PARENT_WITH_PERIOD = "test5.test6.test7"; private static final String CHILD_WITH_PERIOD = "test1test2test3"; @@ -174,7 +174,6 @@ INVALID_NAME_SPACE_FOR_INVALID_PREFIX, getYangRevision(DATE1), @Test public void getRootPackageWithRevTest() throws ParseException { - Date date = simpleDateFormat.parse(DATE2); String rootPkgWithRev = getRootPackage("1", CHILD_PACKAGE, getYangRevision(DATE2), null); assertThat(rootPkgWithRev.equals( @@ -306,11 +305,7 @@ public void packageExistTest() private YangRevision getYangRevision(String date) { YangRevision revision = new YangRevision(); - try { - revision.setRevDate(simpleDateFormat.parse(date)); - } catch (ParseException e) { - e.printStackTrace(); - } + revision.setRevDate(LocalDate.parse(date)); return revision; } } From 036385b7daaba62e68a2cceb3ef85868ddd464d5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 13 Nov 2019 06:08:00 +0000 Subject: [PATCH 2/2] Bump jackson-databind from 2.8.6 to 2.9.10.1 in /serializers/json Bumps [jackson-databind](https://github.com/FasterXML/jackson) from 2.8.6 to 2.9.10.1. - [Release notes](https://github.com/FasterXML/jackson/releases) - [Commits](https://github.com/FasterXML/jackson/commits) Signed-off-by: dependabot[bot] --- serializers/json/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/serializers/json/pom.xml b/serializers/json/pom.xml index 7ccc95d3..52977c10 100644 --- a/serializers/json/pom.xml +++ b/serializers/json/pom.xml @@ -42,7 +42,7 @@ com.fasterxml.jackson.core jackson-databind - 2.8.6 + 2.9.10.1 com.fasterxml.jackson.core