BUG-6757: revert fix for BUG-4456
[yangtools.git] / yang / yang-parser-impl / src / main / java / org / opendaylight / yangtools / yang / parser / stmt / rfc6020 / effective / AbstractEffectiveDocumentedNode.java
index 23ecee547575ec4853e1d7ee725c5f45e2e73cb4..39a7adabc2c1f9aa74feb3ecd0065ad47105b466 100644 (file)
@@ -1,4 +1,4 @@
-/**
+/*
  * Copyright (c) 2015 Cisco Systems, Inc. and others.  All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -7,36 +7,52 @@
  */
 package org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective;
 
-import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
-
-import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
 import org.opendaylight.yangtools.yang.model.api.DocumentedNode;
 import org.opendaylight.yangtools.yang.model.api.Status;
+import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
+import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
 
-public abstract class AbstractEffectiveDocumentedNode<A, D extends DeclaredStatement<A>>
-        extends EffectiveStatementBase<A, D> implements DocumentedNode {
+abstract class AbstractEffectiveDocumentedNode<A, D extends DeclaredStatement<A>>
+        extends DeclaredEffectiveStatementBase<A, D> implements DocumentedNode {
 
     private final String description;
     private final String reference;
     private final Status status;
 
-    AbstractEffectiveDocumentedNode(final StmtContext<A, D, ?> ctx) {
+    /**
+     * Constructor.
+     *
+     * @param ctx
+     *            context of statement.
+     */
+    protected AbstractEffectiveDocumentedNode(final StmtContext<A, D, ?> ctx) {
         super(ctx);
 
         DescriptionEffectiveStatementImpl descStmt = firstEffective(DescriptionEffectiveStatementImpl.class);
         if (descStmt != null) {
             description = descStmt.argument();
-        } else
-            description = "";
+        } else {
+            description = null;
+        }
 
         ReferenceEffectiveStatementImpl refStmt = firstEffective(ReferenceEffectiveStatementImpl.class);
         if (refStmt != null) {
             reference = refStmt.argument();
-        } else
-            reference = "";
+        } else {
+            RevisionEffectiveStatementImpl revision = firstEffective(RevisionEffectiveStatementImpl.class);
+            if (revision != null) {
+                reference = revision.getReference();
+            } else {
+                reference = null;
+            }
+        }
 
-        // :TODO
-        status = null;
+        StatusEffectiveStatementImpl statusStmt = firstEffective(StatusEffectiveStatementImpl.class);
+        if (statusStmt != null) {
+            status = statusStmt.argument();
+        } else {
+            status = Status.CURRENT;
+        }
     }
 
     @Override