[ONOS-4636]YANG Grouping linking bug fix + YANG Code review comment fix
Change-Id: I68ee8dd08266a02593e217cef1a9bb010037d673
diff --git a/src/main/java/org/onosproject/yangutils/parser/impl/listeners/AugmentListener.java b/src/main/java/org/onosproject/yangutils/parser/impl/listeners/AugmentListener.java
index b3b22ae..f9042fa 100644
--- a/src/main/java/org/onosproject/yangutils/parser/impl/listeners/AugmentListener.java
+++ b/src/main/java/org/onosproject/yangutils/parser/impl/listeners/AugmentListener.java
@@ -39,8 +39,10 @@
import static org.onosproject.yangutils.parser.impl.parserutils.ListenerCollisionDetector.detectCollidingChildUtil;
import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorLocation.ENTRY;
import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorLocation.EXIT;
-import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorMessageConstruction.constructExtendedListenerErrorMessage;
-import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorMessageConstruction.constructListenerErrorMessage;
+import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorMessageConstruction
+ .constructExtendedListenerErrorMessage;
+import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorMessageConstruction
+ .constructListenerErrorMessage;
import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorType.INVALID_HOLDER;
import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorType.MISSING_CURRENT_HOLDER;
import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorType.MISSING_HOLDER;
@@ -98,7 +100,7 @@
* @param ctx context object of the grammar rule
*/
public static void processAugmentEntry(TreeWalkListener listener,
- GeneratedYangParser.AugmentStatementContext ctx) {
+ GeneratedYangParser.AugmentStatementContext ctx) {
// Check for stack to be non empty.
checkStackIsNotEmpty(listener, MISSING_HOLDER, AUGMENT_DATA, ctx.augment().getText(), ENTRY);
@@ -120,7 +122,8 @@
YangNode curNode = (YangNode) curData;
YangAugment yangAugment = getYangAugmentNode(JAVA_GENERATION);
- validateTargetNodePath(targetNodes, curNode, ctx);
+ //validateTargetNodePath(targetNodes, curNode, ctx);
+ // TODO: handle in linker.
yangAugment.setTargetNode(targetNodes);
yangAugment.setName(generateNameForAugmentNode(curData, targetNodes, listener));
@@ -147,7 +150,7 @@
* @param ctx context object of the grammar rule
*/
public static void processAugmentExit(TreeWalkListener listener,
- GeneratedYangParser.AugmentStatementContext ctx) {
+ GeneratedYangParser.AugmentStatementContext ctx) {
//Check for stack to be non empty.
checkStackIsNotEmpty(listener, MISSING_HOLDER, AUGMENT_DATA, ctx.augment().getText(), EXIT);
@@ -170,15 +173,15 @@
validateCardinalityMaxOne(ctx.referenceStatement(), REFERENCE_DATA, AUGMENT_DATA, ctx.augment().getText());
validateCardinalityMaxOne(ctx.whenStatement(), WHEN_DATA, AUGMENT_DATA, ctx.augment().getText());
validateMutuallyExclusiveChilds(ctx.dataDefStatement(), DATA_DEF_DATA, ctx.caseStatement(),
- CASE_DATA, AUGMENT_DATA, ctx.augment().getText());
+ CASE_DATA, AUGMENT_DATA, ctx.augment().getText());
}
/**
* Validates whether the current target node path is correct or not.
*
* @param targetNodes list of target nodes
- * @param line line in YANG file
- * @param charPositionInLine char position in YANG file
+ * @param curNode current Node
+ * @param ctx augment context
* @param curNode current YANG node
*/
private static void validateTargetNodePath(List<YangNodeIdentifier> targetNodes, YangNode curNode,
@@ -189,7 +192,8 @@
if (!moduleId.getName().equals(curNode.getName())) {
throw parserException(ctx);
} else {
- validateNodeInTargetPath(curNode, targetNodes, ctx);
+ //validateNodeInTargetPath(curNode, targetNodes, ctx);
+ // TODO: handle in linker.
}
} else {
String parentPrefix = getParentsPrefix(curNode);
diff --git a/src/main/java/org/onosproject/yangutils/parser/impl/listeners/LeafListListener.java b/src/main/java/org/onosproject/yangutils/parser/impl/listeners/LeafListListener.java
index 4a2481a..f478e8a 100644
--- a/src/main/java/org/onosproject/yangutils/parser/impl/listeners/LeafListListener.java
+++ b/src/main/java/org/onosproject/yangutils/parser/impl/listeners/LeafListListener.java
@@ -113,11 +113,12 @@
leafList.setLeafName(identifier);
Parsable tmpData = listener.getParsedDataStack().peek();
- YangLeavesHolder leaves;
+ YangLeavesHolder leavesHolder;
if (tmpData instanceof YangLeavesHolder) {
- leaves = (YangLeavesHolder) tmpData;
- leaves.addLeafList(leafList);
+ leavesHolder = (YangLeavesHolder) tmpData;
+ leavesHolder.addLeafList(leafList);
+ leafList.setContainedIn(leavesHolder);
} else {
throw new ParserException(constructListenerErrorMessage(INVALID_HOLDER, LEAF_LIST_DATA,
ctx.identifier().getText(), ENTRY));
diff --git a/src/main/java/org/onosproject/yangutils/parser/impl/listeners/LeafListener.java b/src/main/java/org/onosproject/yangutils/parser/impl/listeners/LeafListener.java
index b8e3b2d..0a648af 100644
--- a/src/main/java/org/onosproject/yangutils/parser/impl/listeners/LeafListener.java
+++ b/src/main/java/org/onosproject/yangutils/parser/impl/listeners/LeafListener.java
@@ -115,11 +115,12 @@
leaf.setLeafName(identifier);
Parsable tmpData = listener.getParsedDataStack().peek();
- YangLeavesHolder leaves;
+ YangLeavesHolder leavesHolder;
if (tmpData instanceof YangLeavesHolder) {
- leaves = (YangLeavesHolder) tmpData;
- leaves.addLeaf(leaf);
+ leavesHolder = (YangLeavesHolder) tmpData;
+ leavesHolder.addLeaf(leaf);
+ leaf.setContainedIn(leavesHolder);
} else {
throw new ParserException(constructListenerErrorMessage(INVALID_HOLDER, LEAF_DATA,
ctx.identifier().getText(), ENTRY));
diff --git a/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ModuleListener.java b/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ModuleListener.java
index a0005ba..afa9acd 100644
--- a/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ModuleListener.java
+++ b/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ModuleListener.java
@@ -16,10 +16,11 @@
package org.onosproject.yangutils.parser.impl.listeners;
-import org.onosproject.yangutils.linker.impl.YangReferenceResolver;
import org.onosproject.yangutils.datamodel.YangModule;
import org.onosproject.yangutils.datamodel.YangRevision;
import org.onosproject.yangutils.datamodel.exceptions.DataModelException;
+import org.onosproject.yangutils.linker.ResolvableType;
+import org.onosproject.yangutils.linker.YangReferenceResolver;
import org.onosproject.yangutils.parser.antlrgencode.GeneratedYangParser;
import org.onosproject.yangutils.parser.exceptions.ParserException;
import org.onosproject.yangutils.parser.impl.TreeWalkListener;
@@ -28,7 +29,8 @@
import static org.onosproject.yangutils.datamodel.utils.YangDataModelFactory.getYangModuleNode;
import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorLocation.ENTRY;
import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorLocation.EXIT;
-import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorMessageConstruction.constructListenerErrorMessage;
+import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorMessageConstruction
+ .constructListenerErrorMessage;
import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorType.INVALID_HOLDER;
import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorType.MISSING_CURRENT_HOLDER;
import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorType.MISSING_HOLDER;
@@ -116,7 +118,10 @@
ctx.identifier().getText(), EXIT));
}
try {
- ((YangReferenceResolver) listener.getParsedDataStack().peek()).resolveSelfFileLinking();
+ ((YangReferenceResolver) listener.getParsedDataStack()
+ .peek()).resolveSelfFileLinking(ResolvableType.YANG_USES);
+ ((YangReferenceResolver) listener.getParsedDataStack()
+ .peek()).resolveSelfFileLinking(ResolvableType.YANG_DERIVED_DATA_TYPE);
} catch (DataModelException e) {
ParserException parserException = new ParserException(e.getMessage());
parserException.setLine(e.getLineNumber());
diff --git a/src/main/java/org/onosproject/yangutils/parser/impl/listeners/PatternRestrictionListener.java b/src/main/java/org/onosproject/yangutils/parser/impl/listeners/PatternRestrictionListener.java
index 4f0ce8e..bd65855 100644
--- a/src/main/java/org/onosproject/yangutils/parser/impl/listeners/PatternRestrictionListener.java
+++ b/src/main/java/org/onosproject/yangutils/parser/impl/listeners/PatternRestrictionListener.java
@@ -151,7 +151,7 @@
* @param ctx context object of the grammar rule
*/
public static void processPatternRestrictionExit(TreeWalkListener listener,
- GeneratedYangParser.PatternStatementContext ctx) {
+ GeneratedYangParser.PatternStatementContext ctx) {
// Check for stack to be non empty.
checkStackIsNotEmpty(listener, MISSING_HOLDER, PATTERN_DATA, ctx.string().getText(), EXIT);
diff --git a/src/main/java/org/onosproject/yangutils/parser/impl/listeners/SubModuleListener.java b/src/main/java/org/onosproject/yangutils/parser/impl/listeners/SubModuleListener.java
index 2c97f30..048e635 100644
--- a/src/main/java/org/onosproject/yangutils/parser/impl/listeners/SubModuleListener.java
+++ b/src/main/java/org/onosproject/yangutils/parser/impl/listeners/SubModuleListener.java
@@ -16,10 +16,11 @@
package org.onosproject.yangutils.parser.impl.listeners;
-import org.onosproject.yangutils.linker.impl.YangReferenceResolver;
import org.onosproject.yangutils.datamodel.YangRevision;
import org.onosproject.yangutils.datamodel.YangSubModule;
import org.onosproject.yangutils.datamodel.exceptions.DataModelException;
+import org.onosproject.yangutils.linker.ResolvableType;
+import org.onosproject.yangutils.linker.YangReferenceResolver;
import org.onosproject.yangutils.parser.antlrgencode.GeneratedYangParser;
import org.onosproject.yangutils.parser.exceptions.ParserException;
import org.onosproject.yangutils.parser.impl.TreeWalkListener;
@@ -28,7 +29,8 @@
import static org.onosproject.yangutils.datamodel.utils.YangDataModelFactory.getYangSubModuleNode;
import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorLocation.ENTRY;
import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorLocation.EXIT;
-import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorMessageConstruction.constructListenerErrorMessage;
+import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorMessageConstruction
+ .constructListenerErrorMessage;
import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorType.INVALID_HOLDER;
import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorType.MISSING_CURRENT_HOLDER;
import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorType.MISSING_HOLDER;
@@ -121,7 +123,10 @@
ctx.identifier().getText(), EXIT));
}
try {
- ((YangReferenceResolver) listener.getParsedDataStack().peek()).resolveSelfFileLinking();
+ ((YangReferenceResolver) listener.getParsedDataStack().peek())
+ .resolveSelfFileLinking(ResolvableType.YANG_USES);
+ ((YangReferenceResolver) listener.getParsedDataStack().peek())
+ .resolveSelfFileLinking(ResolvableType.YANG_DERIVED_DATA_TYPE);
} catch (DataModelException e) {
ParserException parserException = new ParserException(e.getMessage());
parserException.setLine(e.getLineNumber());
diff --git a/src/main/java/org/onosproject/yangutils/parser/impl/listeners/TypeListener.java b/src/main/java/org/onosproject/yangutils/parser/impl/listeners/TypeListener.java
index 6e25f1b..6e386da 100644
--- a/src/main/java/org/onosproject/yangutils/parser/impl/listeners/TypeListener.java
+++ b/src/main/java/org/onosproject/yangutils/parser/impl/listeners/TypeListener.java
@@ -35,7 +35,7 @@
import static org.onosproject.yangutils.datamodel.utils.DataModelUtils.addResolutionInfo;
import static org.onosproject.yangutils.datamodel.utils.GeneratedLanguage.JAVA_GENERATION;
import static org.onosproject.yangutils.datamodel.utils.YangDataModelFactory.getYangType;
-import static org.onosproject.yangutils.linker.impl.ResolvableStatus.UNRESOLVED;
+import static org.onosproject.yangutils.linker.ResolvableStatus.UNRESOLVED;
import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorLocation.ENTRY;
import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorLocation.EXIT;
import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorMessageConstruction.constructExtendedListenerErrorMessage;
diff --git a/src/main/java/org/onosproject/yangutils/parser/impl/parserutils/AugmentListenerUtil.java b/src/main/java/org/onosproject/yangutils/parser/impl/parserutils/AugmentListenerUtil.java
index 764cef4..7aae767 100644
--- a/src/main/java/org/onosproject/yangutils/parser/impl/parserutils/AugmentListenerUtil.java
+++ b/src/main/java/org/onosproject/yangutils/parser/impl/parserutils/AugmentListenerUtil.java
@@ -247,7 +247,7 @@
/**
* Validates whether nodes in target node list are valid or not.
*
- * @param targetNodeName current target node
+ * @param targetNodes target node
* @param curNode YANG node
* @return true or false
*/