private String moduleName;\r
private URI namespace;\r
private String yangModelPrefix;\r
- private Date revision;\r
+ private Date revision = new Date(0L);\r
\r
private final DateFormat simpleDateFormat = new SimpleDateFormat(\r
"yyyy-mm-dd");\r
@Override\r
public void enterModule_header_stmts(final Module_header_stmtsContext ctx) {\r
super.enterModule_header_stmts(ctx);\r
-\r
+ \r
+ String yangVersion = null;\r
for (int i = 0; i < ctx.getChildCount(); ++i) {\r
final ParseTree treeNode = ctx.getChild(i);\r
if (treeNode instanceof Namespace_stmtContext) {\r
yangModelPrefix = stringFromNode(treeNode);\r
moduleBuilder.setPrefix(yangModelPrefix);\r
} else if (treeNode instanceof Yang_version_stmtContext) {\r
- final String yangVersion = stringFromNode(treeNode);\r
- moduleBuilder.setYangVersion(yangVersion);\r
+ yangVersion = stringFromNode(treeNode);\r
}\r
}\r
+ \r
+ if (yangVersion == null) {\r
+ yangVersion = "1";\r
+ }\r
+ moduleBuilder.setYangVersion(yangVersion);\r
}\r
\r
@Override\r
\r
@Override\r
public void enterRevision_stmts(Revision_stmtsContext ctx) {\r
- TreeMap<Date, Revision_stmtContext> revisions = new TreeMap<Date, Revision_stmtContext>();\r
-\r
- for (int i = 0; i < ctx.getChildCount(); ++i) {\r
- final ParseTree treeNode = ctx.getChild(i);\r
- if (treeNode instanceof Revision_stmtContext) {\r
- final String revisionDateStr = stringFromNode(treeNode);\r
- try {\r
- Date revision = simpleDateFormat.parse(revisionDateStr);\r
- revisions.put(revision, (Revision_stmtContext)treeNode);\r
-\r
- } catch (ParseException e) {\r
- final String message = "Failed to parse revision string: "+ revisionDateStr;\r
- logger.warn(message);\r
+ if (ctx != null) {\r
+ for (int i = 0; i < ctx.getChildCount(); ++i) {\r
+ final ParseTree treeNode = ctx.getChild(i);\r
+ if (treeNode instanceof Revision_stmtContext) {\r
+ updateRevisionForRevisionStatement(treeNode);\r
}\r
}\r
}\r
- if(revisions.size() > 0) {\r
- Revision_stmtContext revisionCtx = revisions.firstEntry().getValue();\r
- moduleBuilder.setRevision(revisions.firstKey());\r
-\r
- for(int i = 0; i < revisionCtx.getChildCount(); i++) {\r
- ParseTree child = revisionCtx.getChild(i);\r
- if(child instanceof Reference_stmtContext) {\r
- moduleBuilder.setReference(stringFromNode(child));\r
+ }\r
+\r
+ private void updateRevisionForRevisionStatement(final ParseTree treeNode) {\r
+ final String revisionDateStr = stringFromNode(treeNode);\r
+ try {\r
+ final Date revision = simpleDateFormat.parse(revisionDateStr);\r
+ if ((revision != null) && (this.revision.compareTo(revision) < 0)) {\r
+ this.revision = revision;\r
+ moduleBuilder.setRevision(this.revision);\r
+ for (int i = 0; i < treeNode.getChildCount(); ++i) {\r
+ ParseTree child = treeNode.getChild(i);\r
+ if (child instanceof Reference_stmtContext) {\r
+ moduleBuilder.setReference(stringFromNode(child));\r
+ }\r
}\r
}\r
+ } catch (ParseException e) {\r
+ final String message = "Failed to parse revision string: "\r
+ + revisionDateStr;\r
+ logger.warn(message);\r
}\r
}\r
-\r
+ \r
@Override\r
public void enterImport_stmt(Import_stmtContext ctx) {\r
super.enterImport_stmt(ctx);\r
private List<String> getActualPath() {\r
return Collections.unmodifiableList(actualPath);\r
}\r
-
-}
+\r
+}\r