[ONOS-5141],[ONOS-5142],[ONOS-5165],[ONOS-4881],[ONOS-4889],[ONOS-5104],[ONOS-5138] defect fixes
Change-Id: I435dc0cf9afae7230fc98b57f33af104e0e38e67
diff --git a/plugin/src/main/java/org/onosproject/yangutils/linker/impl/YangLinkerManager.java b/plugin/src/main/java/org/onosproject/yangutils/linker/impl/YangLinkerManager.java
index c1b6726..daf035e 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/linker/impl/YangLinkerManager.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/linker/impl/YangLinkerManager.java
@@ -100,9 +100,10 @@
try {
((YangSubModule) yangNode).linkWithModule(getYangNodeSet());
} catch (DataModelException e) {
- String errorInfo = "YANG file error: " + yangNode.getName() + " at line: "
- + e.getLineNumber() + " at position: " + e.getCharPositionInLine() + NEW_LINE
- + e.getMessage();
+ String errorInfo = "Error in file: " + yangNode.getName() + " in " +
+ yangNode.getFileName() + " at " +
+ "line: " + e.getLineNumber() + " at position: " + e.getCharPositionInLine() + NEW_LINE
+ + e.getLocalizedMessage();
throw new LinkerException(errorInfo);
// TODO add file path in exception message in util manager.
}
@@ -123,9 +124,10 @@
try {
((YangReferenceResolver) yangNode).addReferencesToImportList(getYangNodeSet());
} catch (DataModelException e) {
- String errorInfo = "Error in file: " + yangNode.getName() + " at line: "
- + e.getLineNumber() + " at position: " + e.getCharPositionInLine() + NEW_LINE
- + e.getMessage();
+ String errorInfo = "Error in file: " + yangNode.getName() + " in " +
+ yangNode.getFileName() + " at " +
+ "line: " + e.getLineNumber() + " at position: " + e.getCharPositionInLine() + NEW_LINE
+ + e.getLocalizedMessage();
throw new LinkerException(errorInfo);
// TODO add file path in exception message in util manager.
}
@@ -146,9 +148,10 @@
try {
((YangReferenceResolver) yangNode).addReferencesToIncludeList(getYangNodeSet());
} catch (DataModelException e) {
- String errorInfo = "Error in file: " + yangNode.getName() + " at line: "
- + e.getLineNumber() + " at position: " + e.getCharPositionInLine() + NEW_LINE
- + e.getMessage();
+ String errorInfo = "Error in file: " + yangNode.getName() + " in " +
+ yangNode.getFileName() + " at " +
+ "line: " + e.getLineNumber() + " at position: " + e.getCharPositionInLine() + NEW_LINE
+ + e.getLocalizedMessage();
throw new LinkerException(errorInfo);
// TODO add file path in exception message in util manager.
}
@@ -186,13 +189,17 @@
((YangReferenceResolver) yangNode)
.resolveInterFileLinking(ResolvableType.YANG_COMPILER_ANNOTATION);
} catch (DataModelException e) {
- String errorInfo = "Error in file: " + yangNode.getName() + " at line: "
- + e.getLineNumber() + " at position: " + e.getCharPositionInLine() + NEW_LINE + e.getMessage();
+ String errorInfo = "Error in file: " + yangNode.getName() + " in " +
+ yangNode.getFileName() + " at " +
+ "line: " + e.getLineNumber() + " at position: " + e.getCharPositionInLine() + NEW_LINE
+ + e.getLocalizedMessage();
throw new LinkerException(errorInfo);
// TODO add file path in exception message in util manager.
} catch (LinkerException e) {
- String errorInfo = "Error in file: " + yangNode.getName() + " at line: "
- + e.getLineNumber() + " at position: " + e.getCharPositionInLine() + NEW_LINE + e.getMessage();
+ String errorInfo = "Error in file: " + yangNode.getName() + " in " +
+ yangNode.getFileName() + " at " +
+ "line: " + e.getLineNumber() + " at position: " + e.getCharPositionInLine() + NEW_LINE
+ + e.getLocalizedMessage();
throw new LinkerException(errorInfo);
// TODO add file path in exception message in util manager.
}
diff --git a/plugin/src/main/java/org/onosproject/yangutils/linker/impl/YangLinkerUtils.java b/plugin/src/main/java/org/onosproject/yangutils/linker/impl/YangLinkerUtils.java
index 37a04df..23e190c 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/linker/impl/YangLinkerUtils.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/linker/impl/YangLinkerUtils.java
@@ -54,6 +54,7 @@
import static org.onosproject.yangutils.datamodel.TraversalType.SIBILING;
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.YangConstructType.getYangConstructType;
import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.DERIVED;
import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.IDENTITYREF;
import static org.onosproject.yangutils.translator.tojava.YangDataModelFactory.getYangCaseNode;
@@ -118,7 +119,8 @@
if (targetLeaf.getName().equals(leaf.getName())) {
throw new LinkerException("target node " + targetNode.getName()
+ " contains augmented leaf " + leaf.getName() + " in module "
- + parent.getName());
+ + parent.getName() + " in " + targetNode.getLineNumber()
+ + " at " + targetNode.getCharPosition() + " in " + targetNode.getFileName());
}
}
}
@@ -130,7 +132,8 @@
if (targetLeafList.getName().equals(leafList.getName())) {
throw new LinkerException("target node " + targetNode.getName()
+ " contains augmented leaf-list" + leafList.getName() + " in module "
- + parent.getName());
+ + parent.getName() + " in " + targetNode.getLineNumber()
+ + " at " + targetNode.getCharPosition() + " in " + targetNode.getFileName());
}
}
}
@@ -144,8 +147,9 @@
while (targetNodesChild != null) {
if (targetNodesChild.getName().equals(augmentsChild.getName())) {
throw new LinkerException("target node " + targetName
- + " contains augmented child node" + augmentsChild.getName() + " in module "
- + parentName);
+ + " contains augmented child node " + augmentsChild.getName() + " in module "
+ + parentName + " in " + targetNodesChild.getLineNumber()
+ + " at " + targetNodesChild.getCharPosition() + " in " + targetNodesChild.getFileName());
}
targetNodesChild = targetNodesChild.getNextSibling();
}
@@ -198,7 +202,9 @@
}
} catch (DataModelException e) {
- throw new TranslatorException("Failed to add child nodes to case node of augment " + augment.getName());
+ throw new TranslatorException("Failed to add child nodes to case node of augment " + augment.getName()
+ + " in " + augment.getLineNumber() + " at "
+ + augment.getCharPosition() + " in " + augment.getFileName());
}
}
@@ -220,7 +226,8 @@
for (YangNode aChild : augmentChildren) {
if (cChild.getName().equals(aChild.getName())) {
throw new LinkerException("case node " + aChild.getName() + "already present in choice " +
- choice.getName());
+ choice.getName() + " in " + cChild.getLineNumber() + " at " + cChild.getCharPosition()
+ + " in " + cChild.getFileName());
}
}
}
@@ -261,8 +268,6 @@
listOfPathName.add(atomicPath.getNodeIdentifier().getName());
}
}
-
-
for (int countOfAncestor = 0; countOfAncestor < remainingAncestors; countOfAncestor++) {
listOfPathName.remove(listOfPathName.size() - 1);
}
@@ -282,7 +287,8 @@
while (currentParent instanceof YangChoice || currentParent instanceof YangCase) {
if (currentParent.getParent() == null) {
throw new LinkerException("YANG file error: The target node, in the leafref path " +
- leafref.getPath() + ", is invalid.");
+ leafref.getPath() + ", is invalid." + " in " + leafref.getLineNumber()
+ + " at " + leafref.getCharPosition() + " in " + leafref.getFileName());
}
currentParent = currentParent.getParent();
}
@@ -310,7 +316,7 @@
return nodeIdentifier;
} else {
throw new LinkerException("YANG file error : " +
- YangConstructType.getYangConstructType(yangConstruct) + " name " + nodeIdentifierString +
+ getYangConstructType(yangConstruct) + " name " + nodeIdentifierString +
" is not valid.");
}
}
@@ -326,15 +332,15 @@
if (identifier.length() > IDENTIFIER_LENGTH) {
throw new LinkerException("YANG file error : " +
- YangConstructType.getYangConstructType(yangConstruct) + " name " + identifier + " is " +
+ getYangConstructType(yangConstruct) + " name " + identifier + " is " +
"greater than 64 characters.");
} else if (!IDENTIFIER_PATTERN.matcher(identifier).matches()) {
throw new LinkerException("YANG file error : " +
- YangConstructType.getYangConstructType(yangConstruct) + " name " + identifier + " is not " +
+ getYangConstructType(yangConstruct) + " name " + identifier + " is not " +
"valid.");
} else if (identifier.toLowerCase().startsWith(XML)) {
throw new LinkerException("YANG file error : " +
- YangConstructType.getYangConstructType(yangConstruct) + " identifier " + identifier +
+ getYangConstructType(yangConstruct) + " identifier " + identifier +
" must not start with (('X'|'x') ('M'|'m') ('L'|'l')).");
} else {
return identifier;
@@ -448,7 +454,13 @@
try {
addResolutionInfo(resolutionInfo);
} catch (DataModelException e) {
- throw new LinkerException("Failed to add type info in grouping to resolution ");
+ String errorInfo = "Error in file: " + curNode.getName() + " in " +
+ curNode.getFileName() + " at " +
+ "line: " + e.getLineNumber() +
+ " at position: " + e.getCharPositionInLine()
+ + e.getLocalizedMessage();
+ throw new LinkerException("Failed to add type info in grouping to resolution "
+ + errorInfo);
}
}
}
@@ -485,7 +497,7 @@
// Add resolution information to the list
YangResolutionInfoImpl resolutionInfo =
- new YangResolutionInfoImpl<YangType>(type, (YangNode) leavesHolder,
+ new YangResolutionInfoImpl<>(type, (YangNode) leavesHolder,
type.getLineNumber(), type.getCharPosition());
try {
addResolutionInfo(resolutionInfo);
diff --git a/plugin/src/main/java/org/onosproject/yangutils/linker/impl/YangResolutionInfoImpl.java b/plugin/src/main/java/org/onosproject/yangutils/linker/impl/YangResolutionInfoImpl.java
index 0c21bc9..f40f6ff 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/linker/impl/YangResolutionInfoImpl.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/linker/impl/YangResolutionInfoImpl.java
@@ -22,6 +22,7 @@
import java.util.List;
import java.util.Stack;
+import org.onosproject.yangutils.datamodel.DefaultLocationInfo;
import org.onosproject.yangutils.datamodel.Resolvable;
import org.onosproject.yangutils.datamodel.ResolvableType;
import org.onosproject.yangutils.datamodel.TraversalType;
@@ -103,7 +104,7 @@
*
* @param <T> type of resolution entity uses / type
*/
-public class YangResolutionInfoImpl<T>
+public class YangResolutionInfoImpl<T> extends DefaultLocationInfo
implements YangResolutionInfo<T>, Serializable {
private static final long serialVersionUID = 806201658L;
@@ -114,16 +115,6 @@
private YangEntityToResolveInfoImpl<T> entityToResolveInfo;
/**
- * Error line number.
- */
- private transient int lineNumber;
-
- /**
- * Error character position in number.
- */
- private transient int charPosition;
-
- /**
* Current module/sub-module reference, will be used in inter-file/
* inter-jar scenario to get the import/include list.
*/
@@ -548,7 +539,11 @@
int currentParentCount = 1;
while (currentParentCount < ancestorCount) {
if (currentParent.getParent() == null) {
- throw new DataModelException("YANG file error: The target node of leafref is invalid.");
+ throw new DataModelException("YANG file error: The target node of leafref is invalid."
+ + currentParent.getName() + " in " +
+ currentParent.getLineNumber() + " at " +
+ currentParent.getCharPosition()
+ + " in " + currentParent.getFileName() + "\"");
}
currentParent = currentParent.getParent();
currentParentCount = currentParentCount + 1;
@@ -719,7 +714,11 @@
if (potentialReferredNode.getParent() instanceof YangRpc) {
potentialReferredNode = potentialReferredNode.getNextSibling();
} else {
- throw new DataModelException("YANG file error: The target node of leafref is invalid.");
+ throw new DataModelException("YANG file error: The target node of leafref is invalid. "
+ + potentialReferredNode.getName() + " in " +
+ potentialReferredNode.getLineNumber() + " at " +
+ potentialReferredNode.getCharPosition()
+ + " in " + potentialReferredNode.getFileName() + "\"");
}
}
return potentialReferredNode;
@@ -770,7 +769,11 @@
*/
return currentReferredNode.getName().contentEquals(nameOfNodeinPath);
} else {
- throw new DataModelException("Data Model Exception: Entity to resolved is other than leafref");
+ throw new DataModelException("Data Model Exception: Entity to resolved is other than leafref "
+ + currentReferredNode.getName() + " in " +
+ currentReferredNode.getLineNumber() + " at " +
+ currentReferredNode.getCharPosition()
+ + " in " + currentReferredNode.getFileName() + "\"");
}
}
@@ -791,7 +794,11 @@
//Check if name of node name matches with the current reference node.
return currentReferredNode.getName().contentEquals(nameOfIdentityRefBase);
} else {
- throw new DataModelException("Data Model Exception: Entity to resolved is other than identityref");
+ throw new DataModelException("Data Model Exception: Entity to resolved is other than identityref"
+ + currentReferredNode.getName() + " in " +
+ currentReferredNode.getLineNumber() + " at " +
+ currentReferredNode.getCharPosition()
+ + " in " + currentReferredNode.getFileName() + "\"");
}
}
@@ -875,7 +882,11 @@
}
} else {
throw new DataModelException("Data Model Exception: Entity to resolved is other than type/" +
- "uses/base/identityref");
+ "uses/base/identityref"
+ + potentialReferredNode.getName() + " in " +
+ potentialReferredNode.getLineNumber() + " at " +
+ potentialReferredNode.getCharPosition()
+ + " in " + potentialReferredNode.getFileName() + "\"");
}
return false;
}
@@ -916,7 +927,11 @@
return true;
}
} else {
- throw new DataModelException("Data Model Exception: Entity to resolved is other than type/uses");
+ throw new DataModelException("Data Model Exception: Entity to resolved is other than type/uses "
+ + node.getName() + " in " +
+ node.getLineNumber() + " at " +
+ node.getCharPosition()
+ + " in " + node.getFileName() + "\"");
}
return false;
}
@@ -965,7 +980,11 @@
((YangIdentityRef) getCurrentEntityToResolveFromStack()).setReferredIdentity((YangIdentity) referredNode);
} else {
throw new DataModelException("Data Model Exception: Entity to resolved is other than type" +
- "/uses/base/identityref");
+ "/uses/base/identityref"
+ + referredNode.getName() + " in " +
+ referredNode.getLineNumber() + " at " +
+ referredNode.getCharPosition()
+ + " in " + referredNode.getFileName() + "\"");
}
// Sets the resolution status in inside the type/uses.
@@ -1004,7 +1023,11 @@
addUnResolvedIfFeatureToStack(referredNode);
} else if (getCurrentEntityToResolveFromStack() instanceof YangLeafRef) {
// do nothing , referred node is already set
- throw new DataModelException("Data Model Exception: Entity to resolved is other than type/uses");
+ throw new DataModelException("Data Model Exception: Entity to resolved is other than type/uses "
+ + referredNode.getName() + " in " +
+ referredNode.getLineNumber() + " at " +
+ referredNode.getCharPosition()
+ + " in " + referredNode.getFileName() + "\"");
} else if ((getCurrentEntityToResolveFromStack() instanceof YangBase) ||
(getCurrentEntityToResolveFromStack() instanceof YangIdentityRef)) {
@@ -1012,7 +1035,11 @@
addUnResolvedBaseToStack(referredNode);
} else {
throw new DataModelException("Data Model Exception: Entity to resolved is other than type/uses/" +
- "base/identityref");
+ "base/identityref " + referredNode.getName() + " in " +
+ referredNode.getLineNumber() + " at " +
+ referredNode.getCharPosition()
+ + " in " + referredNode.getFileName() + "\"");
+
}
}
@@ -1147,26 +1174,6 @@
this.entityToResolveInfo = entityToResolveInfo;
}
- @Override
- public int getLineNumber() {
- return lineNumber;
- }
-
- @Override
- public int getCharPosition() {
- return charPosition;
- }
-
- @Override
- public void setLineNumber(int lineNumber) {
- this.lineNumber = lineNumber;
- }
-
- @Override
- public void setCharPosition(int charPositionInLine) {
- this.charPosition = charPositionInLine;
- }
-
/**
* Returns current module/sub-module reference, will be used in inter-file/
* inter-jar scenario to get the import/include list.
@@ -1248,10 +1255,16 @@
resolvable.setResolvableStatus(RESOLVED);
} else {
throw new LinkerException("Invalid target node type " + targetNode.getNodeType() + " for "
- + augment.getName());
+ + augment.getName() + " for " + targetNode.getName() +
+ "in " + targetNode.getLineNumber()
+ + " at " + targetNode.getCharPosition() +
+ " in " + targetNode.getFileName());
}
} else {
- throw new LinkerException("Failed to link " + augment.getName());
+ throw new LinkerException("Failed to link " + augment.getName() +
+ "in " + augment.getLineNumber()
+ + " at " + augment.getCharPosition() +
+ " in " + augment.getFileName());
}
} else if (entityToResolve instanceof YangCompilerAnnotation) {
YangNode targetNode;
@@ -1267,18 +1280,21 @@
resolvable.setResolvableStatus(RESOLVED);
} else {
throw new LinkerException("Invalid target node type " + targetNode.getNodeType() + " for compiler" +
- " annotation " + ca.getPath());
+ " annotation " + ca.getPath() + " in " + ca.getLineNumber() + " at "
+ + ca.getCharPosition() + " in " + ca.getFileName());
}
} else {
- throw new LinkerException("Failed to link compiler annotation " + ca.getPath());
+ throw new LinkerException("Failed to link compiler annotation " + ca.getPath()
+ + " in " + ca.getLineNumber() + " at "
+ + ca.getCharPosition() + " in " + ca.getFileName());
}
} else if (entityToResolve instanceof YangLeafRef) {
YangLeafRef leafRef = (YangLeafRef) entityToResolve;
Object target = xPathLinker.processLeafRefXpathLinking(leafRef.getAtomicPath(),
(YangNode) root, leafRef);
if (target != null) {
- YangLeaf leaf = null;
- YangLeafList leafList = null;
+ YangLeaf leaf;
+ YangLeafList leafList;
leafRef.setReferredLeafOrLeafList(target);
if (target instanceof YangLeaf) {
leaf = (YangLeaf) target;
@@ -1297,6 +1313,7 @@
+ leafRef.getPath());
linkerException.setCharPosition(leafRef.getCharPosition());
linkerException.setLine(leafRef.getLineNumber());
+ linkerException.setFileName(leafRef.getFileName());
throw linkerException;
}
}
@@ -1554,6 +1571,7 @@
"leafref path " + leafref.getPath() + ", is invalid.");
dataModelException.setCharPosition(leafref.getCharPosition());
dataModelException.setLine(leafref.getLineNumber());
+ dataModelException.setFileName(leafref.getFileName());
throw dataModelException;
}
}
@@ -1582,7 +1600,11 @@
if (currentSkippedParent == currentParent) {
if (currentParent.getParent() == null) {
throw new DataModelException("YANG file error: The target node, in the leafref path "
- + leafref.getPath() + ", is invalid.");
+ + leafref.getPath() + ", is invalid."
+ + " in " +
+ leafref.getLineNumber() + " at " +
+ leafref.getCharPosition()
+ + " in " + leafref.getFileName() + "\"");
}
currentParent = currentParent.getParent();
} else {
diff --git a/plugin/src/main/java/org/onosproject/yangutils/linker/impl/YangXpathLinker.java b/plugin/src/main/java/org/onosproject/yangutils/linker/impl/YangXpathLinker.java
index d77fe7d..a53e727 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/linker/impl/YangXpathLinker.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/linker/impl/YangXpathLinker.java
@@ -63,6 +63,7 @@
private YangNode rootNode;
private Map<YangAtomicPath, PrefixResolverType> prefixResolverTypes;
private String curPrefix;
+ private String constructsParentsPrefix;
/**
* Creates an instance of x-path linker.
@@ -163,6 +164,24 @@
}
/**
+ * Returns unresolved construct's parent's prefix.
+ *
+ * @return unresolved construct's parent's prefix
+ */
+ private String getConstructsParentsPrefix() {
+ return constructsParentsPrefix;
+ }
+
+ /**
+ * Sets unresolved construct's parent's prefix.
+ *
+ * @param constructsParentsPrefix unresolved construct's parent's prefix
+ */
+ private void setConstructsParentsPrefix(String constructsParentsPrefix) {
+ this.constructsParentsPrefix = constructsParentsPrefix;
+ }
+
+ /**
* Adds node to resolved nodes.
*
* @param path absolute path
@@ -237,6 +256,7 @@
+ leafref.getPath());
linkerException.setCharPosition(leafref.getCharPosition());
linkerException.setLine(leafref.getLineNumber());
+ linkerException.setFileName(leafref.getFileName());
throw linkerException;
}
}
@@ -261,6 +281,7 @@
"leafref path " + leafref.getPath() + ", is invalid.");
linkerException.setCharPosition(leafref.getCharPosition());
linkerException.setLine(leafref.getLineNumber());
+ linkerException.setFileName(leafref.getFileName());
throw linkerException;
}
}
@@ -314,7 +335,8 @@
private YangLeaf searchReferredLeaf(YangNode targetNode, String leafName) {
if (!(targetNode instanceof YangLeavesHolder)) {
throw new LinkerException("Referred node " + targetNode.getName() +
- "should be of type leaves holder ");
+ "should be of type leaves holder in " + targetNode.getLineNumber() +
+ " at " + targetNode.getCharPosition() + " in " + targetNode.getFileName());
}
YangLeavesHolder holder = (YangLeavesHolder) targetNode;
List<YangLeaf> leaves = holder.getListOfLeaf();
@@ -338,7 +360,8 @@
private YangLeafList searchReferredLeafList(YangNode targetNode, String leafListName) {
if (!(targetNode instanceof YangLeavesHolder)) {
throw new LinkerException("Referred node " + targetNode.getName() +
- "should be of type leaves holder ");
+ "should be of type leaves holder in " + targetNode.getLineNumber() +
+ " at " + targetNode.getCharPosition() + " in " + targetNode.getFileName());
}
YangLeavesHolder holder = (YangLeavesHolder) targetNode;
List<YangLeafList> leavesList = holder.getListOfLeafList();
@@ -360,6 +383,7 @@
*/
private YangNode parseData(YangNode root) {
String rootPrefix = getRootsPrefix(root);
+ setConstructsParentsPrefix(rootPrefix);
Iterator<YangAtomicPath> pathIterator = getAbsPaths().iterator();
YangAtomicPath path = pathIterator.next();
if (path.getNodeIdentifier().getPrefix() != null
@@ -382,27 +406,28 @@
Stack<YangNode> linkerStack = new Stack<>();
Iterator<YangAtomicPath> pathIterator = getAbsPaths().iterator();
YangAtomicPath tempPath = pathIterator.next();
+ YangNodeIdentifier nodeId;
setCurPrefix(tempPath.getNodeIdentifier().getPrefix());
int index = 0;
YangNode tempAugment;
do {
-
+ nodeId = tempPath.getNodeIdentifier();
if (tempPath.getNodeIdentifier().getPrefix() == null) {
tempAugment = resolveIntraFileAugment(tempPath, root);
} else {
tempAugment = resolveInterFileAugment(tempPath, root);
}
-
if (tempAugment != null) {
linkerStack.push(tempNode);
tempNode = tempAugment;
}
- tempNode = searchTargetNode(tempNode, tempPath.getNodeIdentifier());
+ tempNode = searchTargetNode(tempNode, nodeId);
+
if (tempNode == null && linkerStack.size() != 0) {
tempNode = linkerStack.peek();
linkerStack.pop();
- tempNode = searchTargetNode(tempNode, tempPath.getNodeIdentifier());
+ tempNode = searchTargetNode(tempNode, nodeId);
}
if (tempNode != null) {
@@ -558,6 +583,9 @@
}
}
+ if (nodeId.getName() != null && nodeId.getPrefix().equals(getConstructsParentsPrefix())) {
+ return getRootNode();
+ }
return root;
}
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/YangUtilsParserManager.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/YangUtilsParserManager.java
index c8b7804..c2b29ed 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/YangUtilsParserManager.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/YangUtilsParserManager.java
@@ -47,7 +47,7 @@
try {
input = new ANTLRFileStream(yangFile);
} catch (IOException e) {
- throw new ParserException("YANG file error : YANG file does not exist.");
+ throw new ParserException("YANG file error : YANG file does not exist. " + yangFile);
}
// Create a lexer that feeds off of input char stream.
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/AppDataStructureListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/AppDataStructureListener.java
index c541bda..e9ff96c 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/AppDataStructureListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/AppDataStructureListener.java
@@ -80,6 +80,9 @@
YangAppDataStructure appDataStructure = new YangAppDataStructure();
appDataStructure.setPrefix(prefix);
appDataStructure.setDataStructure(dataStructure);
+ appDataStructure.setLineNumber(ctx.getStart().getLine());
+ appDataStructure.setCharPosition(ctx.getStart().getCharPositionInLine());
+ appDataStructure.setFileName(listener.getFileName());
Parsable curData = listener.getParsedDataStack().peek();
if (curData instanceof YangCompilerAnnotation) {
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/AppExtendedNameListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/AppExtendedNameListener.java
index b72b95c..7ff8bbe 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/AppExtendedNameListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/AppExtendedNameListener.java
@@ -71,6 +71,9 @@
extendedName.setPrefix(prefix);
extendedName.setYangAppExtendedName(removeQuotesAndHandleConcat(ctx.extendedName().getText()));
+ extendedName.setLineNumber(ctx.getStart().getLine());
+ extendedName.setCharPosition(ctx.getStart().getCharPositionInLine());
+ extendedName.setFileName(listener.getFileName());
Parsable curData = listener.getParsedDataStack().peek();
if (curData instanceof YangCompilerAnnotation) {
YangCompilerAnnotation compilerAnnotation = ((YangCompilerAnnotation) curData);
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ArgumentListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ArgumentListener.java
index 2d06fa4..797da12 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ArgumentListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ArgumentListener.java
@@ -75,6 +75,10 @@
Parsable curData = listener.getParsedDataStack().peek();
if (curData instanceof YangExtension) {
YangExtension extension = ((YangExtension) curData);
+
+ extension.setLineNumber(ctx.getStart().getLine());
+ extension.setCharPosition(ctx.getStart().getCharPositionInLine());
+ extension.setFileName(listener.getFileName());
extension.setArgumentName(identifier);
} else {
throw new ParserException(constructListenerErrorMessage(INVALID_HOLDER, ARGUMENT_DATA,
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/AugmentListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/AugmentListener.java
index 375a9b8..2717e74 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/AugmentListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/AugmentListener.java
@@ -118,7 +118,9 @@
if (curData instanceof YangModule || curData instanceof YangSubModule || curData instanceof YangUses) {
YangNode curNode = (YangNode) curData;
YangAugment yangAugment = getYangAugmentNode(JAVA_GENERATION);
-
+ yangAugment.setLineNumber(line);
+ yangAugment.setCharPosition(charPositionInLine);
+ yangAugment.setFileName(listener.getFileName());
//validateTargetNodePath(targetNodes, curNode, ctx);
// TODO: handle in linker.
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/BaseListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/BaseListener.java
index 25bb595..ebf85a7 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/BaseListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/BaseListener.java
@@ -90,6 +90,10 @@
int errorLine = ctx.getStart().getLine();
int errorPosition = ctx.getStart().getCharPositionInLine();
+ yangBase.setLineNumber(errorLine);
+ yangBase.setCharPosition(errorPosition);
+ yangBase.setFileName(listener.getFileName());
+
// Add resolution information to the list
YangResolutionInfoImpl resolutionInfo =
new YangResolutionInfoImpl<YangBase>(yangBase, (YangNode) tmpData, errorLine, errorPosition);
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/BelongsToListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/BelongsToListener.java
index ab12d46..4f7ecf8 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/BelongsToListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/BelongsToListener.java
@@ -93,6 +93,7 @@
int errorPosition = ctx.getStart().getCharPositionInLine();
belongstoNode.setLineNumber(errorLine);
belongstoNode.setCharPosition(errorPosition);
+ belongstoNode.setFileName(listener.getFileName());
// Push belongsto into the stack.
listener.getParsedDataStack().push(belongstoNode);
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/BitListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/BitListener.java
index e011fca..bd60910 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/BitListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/BitListener.java
@@ -112,6 +112,10 @@
YangBit bitNode = new YangBit();
bitNode.setBitName(identifier);
+
+ bitNode.setLineNumber(ctx.getStart().getLine());
+ bitNode.setCharPosition(ctx.getStart().getCharPositionInLine());
+ bitNode.setFileName(listener.getFileName());
listener.getParsedDataStack().push(bitNode);
}
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/BitsListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/BitsListener.java
index f2c326d..a476902 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/BitsListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/BitsListener.java
@@ -89,6 +89,10 @@
if (listener.getParsedDataStack().peek() instanceof YangType) {
YangBits bitsNode = new YangBits();
+
+ bitsNode.setLineNumber(ctx.getStart().getLine());
+ bitsNode.setCharPosition(ctx.getStart().getCharPositionInLine());
+ bitsNode.setFileName(listener.getFileName());
Parsable typeData = listener.getParsedDataStack().pop();
// Check for stack to be non empty.
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/CaseListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/CaseListener.java
index 2440521..f3803da 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/CaseListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/CaseListener.java
@@ -108,6 +108,9 @@
if (curData instanceof YangChoice || curData instanceof YangAugment) {
YangCase caseNode = getYangCaseNode(JAVA_GENERATION);
caseNode.setName(identifier);
+ caseNode.setLineNumber(line);
+ caseNode.setCharPosition(charPositionInLine);
+ caseNode.setFileName(listener.getFileName());
YangNode curNode = (YangNode) curData;
try {
curNode.addChild(caseNode);
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ChoiceListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ChoiceListener.java
index ff476c7..00b9973 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ChoiceListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ChoiceListener.java
@@ -129,7 +129,9 @@
YangChoice choiceNode = getYangChoiceNode(JAVA_GENERATION);
choiceNode.setName(identifier);
-
+ choiceNode.setLineNumber(line);
+ choiceNode.setCharPosition(charPositionInLine);
+ choiceNode.setFileName(listener.getFileName());
/*
* If "config" is not specified, the default is the same as the parent
* schema node's "config" value.
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/CompilerAnnotationListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/CompilerAnnotationListener.java
index d8abb31..ed892b3 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/CompilerAnnotationListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/CompilerAnnotationListener.java
@@ -91,6 +91,9 @@
compilerAnnotation.setPrefix(prefix);
compilerAnnotation.setPath(removeQuotesAndHandleConcat(ctx.string().getText()));
+ compilerAnnotation.setLineNumber(ctx.getStart().getLine());
+ compilerAnnotation.setCharPosition(ctx.getStart().getCharPositionInLine());
+ compilerAnnotation.setFileName(listener.getFileName());
// Validate augment argument string
List<YangAtomicPath> targetNodes = getValidAbsoluteSchemaNodeId(ctx.string().getText(),
COMPILER_ANNOTATION_DATA, ctx);
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ContainerListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ContainerListener.java
index 5ff73e2..7ea261b 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ContainerListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ContainerListener.java
@@ -124,6 +124,9 @@
YangContainer container = getYangContainerNode(JAVA_GENERATION);
container.setName(identifier);
+ container.setLineNumber(line);
+ container.setCharPosition(charPositionInLine);
+ container.setFileName(listener.getFileName());
/*
* If "config" is not specified, the default is the same as the parent
* schema node's "config" value.
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/DataStructureKeyListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/DataStructureKeyListener.java
index 65fc50b..9cee91f 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/DataStructureKeyListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/DataStructureKeyListener.java
@@ -69,6 +69,10 @@
Parsable tmpData = listener.getParsedDataStack().peek();
if (listener.getParsedDataStack().peek() instanceof YangAppDataStructure) {
YangAppDataStructure dataStructure = (YangAppDataStructure) tmpData;
+
+ dataStructure.setLineNumber(ctx.getStart().getLine());
+ dataStructure.setCharPosition(ctx.getStart().getCharPositionInLine());
+ dataStructure.setFileName(listener.getFileName());
String tmpKeyValue = removeQuotesAndHandleConcat(ctx.string().getText());
if (tmpKeyValue.contains(SPACE)) {
String[] keyValues = tmpKeyValue.split(SPACE);
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/Decimal64Listener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/Decimal64Listener.java
index 1806c4c..14ae935 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/Decimal64Listener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/Decimal64Listener.java
@@ -112,6 +112,10 @@
(YangType<YangDecimal64<YangRangeRestriction>>) tmpNode;
YangDecimal64 decimal64Node = new YangDecimal64();
typeNode.setDataTypeExtendedInfo(decimal64Node);
+
+ decimal64Node.setLineNumber(ctx.getStart().getLine());
+ decimal64Node.setCharPosition(ctx.getStart().getCharPositionInLine());
+ decimal64Node.setFileName(listener.getFileName());
} else {
throw new ParserException(constructListenerErrorMessage(INVALID_HOLDER, DECIMAL64_DATA, "", ENTRY));
}
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/DefaultListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/DefaultListener.java
index bc7c060..b93fe52 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/DefaultListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/DefaultListener.java
@@ -46,13 +46,13 @@
import org.onosproject.yangutils.parser.antlrgencode.GeneratedYangParser;
import org.onosproject.yangutils.parser.exceptions.ParserException;
import org.onosproject.yangutils.parser.impl.TreeWalkListener;
-import org.onosproject.yangutils.parser.impl.parserutils.ListenerUtil;
import static org.onosproject.yangutils.datamodel.utils.YangConstructType.DEFAULT_DATA;
import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorLocation.ENTRY;
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_HOLDER;
+import static org.onosproject.yangutils.parser.impl.parserutils.ListenerUtil.removeQuotesAndHandleConcat;
import static org.onosproject.yangutils.parser.impl.parserutils.ListenerValidation.checkStackIsNotEmpty;
/**
@@ -83,17 +83,17 @@
switch (tmpNode.getYangConstructType()) {
case TYPEDEF_DATA: {
YangTypeDef typeDef = (YangTypeDef) tmpNode;
- typeDef.setDefaultValueInString(ListenerUtil.removeQuotesAndHandleConcat(ctx.string().getText()));
+ typeDef.setDefaultValueInString(removeQuotesAndHandleConcat(ctx.string().getText()));
break;
}
case LEAF_DATA: {
YangLeaf leaf = (YangLeaf) tmpNode;
- leaf.setDefaultValueInString(ListenerUtil.removeQuotesAndHandleConcat(ctx.string().getText()));
+ leaf.setDefaultValueInString(removeQuotesAndHandleConcat(ctx.string().getText()));
break;
}
case CHOICE_DATA: {
YangChoice choice = (YangChoice) tmpNode;
- choice.setDefaultValueInString(ListenerUtil.removeQuotesAndHandleConcat(ctx.string().getText()));
+ choice.setDefaultValueInString(removeQuotesAndHandleConcat(ctx.string().getText()));
break;
}
default:
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/EnumListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/EnumListener.java
index 3440e2e..b0beef5 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/EnumListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/EnumListener.java
@@ -107,6 +107,10 @@
YangEnum enumNode = new YangEnum();
enumNode.setNamedValue(getValidNamedValue(ctx.string().getText()));
+
+ enumNode.setLineNumber(ctx.getStart().getLine());
+ enumNode.setCharPosition(ctx.getStart().getCharPositionInLine());
+ enumNode.setFileName(listener.getFileName());
listener.getParsedDataStack().push(enumNode);
}
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/EnumerationListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/EnumerationListener.java
index bc6dd45..5eff217 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/EnumerationListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/EnumerationListener.java
@@ -102,6 +102,9 @@
if (listener.getParsedDataStack().peek() instanceof YangType) {
YangEnumeration enumerationNode = getYangEnumerationNode(JAVA_GENERATION);
+ enumerationNode.setLineNumber(ctx.getStart().getLine());
+ enumerationNode.setCharPosition(ctx.getStart().getCharPositionInLine());
+ enumerationNode.setFileName(listener.getFileName());
Parsable typeData = listener.getParsedDataStack().pop();
// Check for stack to be non empty.
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ErrorAppTagListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ErrorAppTagListener.java
index befc70a..64f718b 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ErrorAppTagListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ErrorAppTagListener.java
@@ -73,6 +73,10 @@
if (tmpNode instanceof YangAppErrorHolder) {
YangAppErrorInfo yangAppErrorInfo = ((YangAppErrorHolder) tmpNode).getAppErrorInfo();
yangAppErrorInfo.setErrorAppTag(errorMessage);
+
+ yangAppErrorInfo.setLineNumber(ctx.getStart().getLine());
+ yangAppErrorInfo.setCharPosition(ctx.getStart().getCharPositionInLine());
+ yangAppErrorInfo.setFileName(listener.getFileName());
} else {
throw new ParserException(constructListenerErrorMessage(INVALID_HOLDER, ERROR_APP_TAG_DATA,
ctx.string().getText(), ENTRY));
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ErrorMessageListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ErrorMessageListener.java
index e36fe74..ead1746 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ErrorMessageListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ErrorMessageListener.java
@@ -74,6 +74,10 @@
if (tmpNode instanceof YangAppErrorHolder) {
YangAppErrorInfo yangAppErrorInfo = ((YangAppErrorHolder) tmpNode).getAppErrorInfo();
yangAppErrorInfo.setErrorMessage(errorMessage);
+
+ yangAppErrorInfo.setLineNumber(ctx.getStart().getLine());
+ yangAppErrorInfo.setCharPosition(ctx.getStart().getCharPositionInLine());
+ yangAppErrorInfo.setFileName(listener.getFileName());
} else {
throw new ParserException(constructListenerErrorMessage(INVALID_HOLDER, ERROR_MESSAGE_DATA,
ctx.string().getText(), ENTRY));
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ExtensionListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ExtensionListener.java
index 2169640..9a1180f 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ExtensionListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ExtensionListener.java
@@ -80,6 +80,10 @@
String identifier = getValidIdentifier(ctx.identifier().getText(), EXTENSION_DATA, ctx);
YangExtension extension = new YangExtension();
+
+ extension.setLineNumber(ctx.getStart().getLine());
+ extension.setCharPosition(ctx.getStart().getCharPositionInLine());
+ extension.setFileName(listener.getFileName());
extension.setName(identifier);
Parsable curData = listener.getParsedDataStack().peek();
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/FeatureListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/FeatureListener.java
index 6a70f31..12e83b1 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/FeatureListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/FeatureListener.java
@@ -88,6 +88,9 @@
YangFeature feature = new YangFeature();
feature.setName(identifier);
+ feature.setLineNumber(ctx.getStart().getLine());
+ feature.setCharPosition(ctx.getStart().getCharPositionInLine());
+ feature.setFileName(listener.getFileName());
featureHolder.addFeatureList(feature);
listener.getParsedDataStack().push(feature);
} else {
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/GroupingListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/GroupingListener.java
index 4dc224f..46ca2e0 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/GroupingListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/GroupingListener.java
@@ -122,6 +122,10 @@
YangGrouping groupingNode = getYangGroupingNode(JAVA_GENERATION);
groupingNode.setName(identifier);
groupingNode.setGroupingDepth(listener.getGroupingDepth());
+
+ groupingNode.setLineNumber(line);
+ groupingNode.setCharPosition(charPositionInLine);
+ groupingNode.setFileName(listener.getFileName());
YangNode curNode = (YangNode) curData;
try {
curNode.addChild(groupingNode);
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/IdentityListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/IdentityListener.java
index 29443ef..332ae4f 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/IdentityListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/IdentityListener.java
@@ -82,6 +82,9 @@
YangIdentity identity = getYangIdentityNode(JAVA_GENERATION);
identity.setName(identifier);
+ identity.setLineNumber(ctx.getStart().getLine());
+ identity.setCharPosition(ctx.getStart().getCharPositionInLine());
+ identity.setFileName(listener.getFileName());
Parsable curData = listener.getParsedDataStack().peek();
if (curData instanceof YangModule || curData instanceof YangSubModule) {
YangNode curNode = (YangNode) curData;
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/IdentityrefListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/IdentityrefListener.java
index c61eb3e..ad197a6 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/IdentityrefListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/IdentityrefListener.java
@@ -94,6 +94,9 @@
int errorLine = ctx.getStart().getLine();
int errorPosition = ctx.getStart().getCharPositionInLine();
+ identityRef.setLineNumber(errorLine);
+ identityRef.setCharPosition(errorPosition);
+ identityRef.setFileName(listener.getFileName());
Parsable tmpData = listener.getParsedDataStack().peek();
switch (tmpData.getYangConstructType()) {
case LEAF_DATA:
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/IfFeatureListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/IfFeatureListener.java
index 29899de..ab11780 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/IfFeatureListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/IfFeatureListener.java
@@ -87,6 +87,10 @@
YangIfFeature ifFeature = new YangIfFeature();
ifFeature.setName(nodeIdentifier);
ifFeature.setResolvableStatus(UNRESOLVED);
+
+ ifFeature.setLineNumber(ctx.getStart().getLine());
+ ifFeature.setCharPosition(ctx.getStart().getCharPositionInLine());
+ ifFeature.setFileName(listener.getFileName());
YangIfFeatureHolder ifFeatureHolder;
// Obtain the node of the stack.
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ImportListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ImportListener.java
index 76a2e30..1f7a7d7 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ImportListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ImportListener.java
@@ -90,6 +90,7 @@
int errorPosition = ctx.getStart().getCharPositionInLine();
importNode.setLineNumber(errorLine);
importNode.setCharPosition(errorPosition);
+ importNode.setFileName(listener.getFileName());
// Push import node to the stack.
listener.getParsedDataStack().push(importNode);
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/IncludeListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/IncludeListener.java
index 847712f..5842a7e 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/IncludeListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/IncludeListener.java
@@ -90,6 +90,7 @@
int errorPosition = ctx.getStart().getCharPositionInLine();
includeNode.setLineNumber(errorLine);
includeNode.setCharPosition(errorPosition);
+ includeNode.setFileName(listener.getFileName());
listener.getParsedDataStack().push(includeNode);
}
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/InputListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/InputListener.java
index 83e47d4..3003d56 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/InputListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/InputListener.java
@@ -93,6 +93,10 @@
YangInput yangInput = getYangInputNode(JAVA_GENERATION);
yangInput.setName(((YangRpc) curData).getName() + INPUT_KEYWORD);
+
+ yangInput.setLineNumber(ctx.getStart().getLine());
+ yangInput.setCharPosition(ctx.getStart().getCharPositionInLine());
+ yangInput.setFileName(listener.getFileName());
YangNode curNode = (YangNode) curData;
try {
curNode.addChild(yangInput);
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/LeafListListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/LeafListListener.java
index 99e8cae..8dd33b8 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/LeafListListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/LeafListListener.java
@@ -111,7 +111,9 @@
YangLeafList leafList = getYangLeafList(JAVA_GENERATION);
leafList.setName(identifier);
-
+ leafList.setLineNumber(line);
+ leafList.setCharPosition(charPositionInLine);
+ leafList.setFileName(listener.getFileName());
/*
* If "config" is not specified, the default is the same as the parent
* schema node's "config" value.
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/LeafListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/LeafListener.java
index edf0ed4..d6f06ff 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/LeafListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/LeafListener.java
@@ -115,6 +115,9 @@
YangLeaf leaf = getYangLeaf(JAVA_GENERATION);
leaf.setName(identifier);
+ leaf.setLineNumber(line);
+ leaf.setCharPosition(charPositionInLine);
+ leaf.setFileName(listener.getFileName());
/*
* If "config" is not specified, the default is the same as the parent
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/LeafrefListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/LeafrefListener.java
index fea7f38..a90b87b 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/LeafrefListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/LeafrefListener.java
@@ -102,6 +102,7 @@
leafRef.setLineNumber(errorLine);
leafRef.setCharPosition(errorPosition);
+ leafRef.setFileName(listener.getFileName());
Parsable typeData = listener.getParsedDataStack().pop();
if (!(typeData instanceof YangType)) {
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ListListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ListListener.java
index 5154171..ab91675 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ListListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ListListener.java
@@ -129,7 +129,9 @@
YangList yangList = getYangListNode(JAVA_GENERATION);
yangList.setName(identifier);
-
+ yangList.setLineNumber(line);
+ yangList.setCharPosition(charPositionInLine);
+ yangList.setFileName(listener.getFileName());
/*
* If "config" is not specified, the default is the same as the parent
* schema node's "config" value.
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/MaxElementsListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/MaxElementsListener.java
index 90acba6..93cd621 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/MaxElementsListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/MaxElementsListener.java
@@ -78,19 +78,21 @@
int maxElementsValue = getValidMaxElementValue(ctx);
+ YangMaxElement maxElement = new YangMaxElement();
+ maxElement.setMaxElement(maxElementsValue);
+
+ maxElement.setLineNumber(ctx.getStart().getLine());
+ maxElement.setCharPosition(ctx.getStart().getCharPositionInLine());
+ maxElement.setFileName(listener.getFileName());
Parsable tmpData = listener.getParsedDataStack().peek();
switch (tmpData.getYangConstructType()) {
case LEAF_LIST_DATA:
YangLeafList leafList = (YangLeafList) tmpData;
- YangMaxElement maxLeafListElement = new YangMaxElement();
- maxLeafListElement.setMaxElement(maxElementsValue);
- leafList.setMaxElements(maxLeafListElement);
+ leafList.setMaxElements(maxElement);
break;
case LIST_DATA:
YangList yangList = (YangList) tmpData;
- YangMaxElement maxListElement = new YangMaxElement();
- maxListElement.setMaxElement(maxElementsValue);
- yangList.setMaxElements(maxListElement);
+ yangList.setMaxElements(maxElement);
break;
default:
throw new ParserException(constructListenerErrorMessage(INVALID_HOLDER, MAX_ELEMENT_DATA, "", ENTRY));
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/MinElementsListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/MinElementsListener.java
index 64069ae..3fae538 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/MinElementsListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/MinElementsListener.java
@@ -75,18 +75,20 @@
int minElementValue = getValidNonNegativeIntegerValue(ctx.minValue().getText(), MIN_ELEMENT_DATA, ctx);
+ YangMinElement minElement = new YangMinElement();
+
+ minElement.setMinElement(minElementValue);
+ minElement.setLineNumber(ctx.getStart().getLine());
+ minElement.setCharPosition(ctx.getStart().getCharPositionInLine());
+ minElement.setFileName(listener.getFileName());
Parsable tmpData = listener.getParsedDataStack().peek();
switch (tmpData.getYangConstructType()) {
case LEAF_LIST_DATA:
YangLeafList leafList = (YangLeafList) tmpData;
- YangMinElement minLeafListElement = new YangMinElement();
- minLeafListElement.setMinElement(minElementValue);
- leafList.setMinElements(minLeafListElement);
+ leafList.setMinElements(minElement);
break;
case LIST_DATA:
YangList yangList = (YangList) tmpData;
- YangMinElement minElement = new YangMinElement();
- minElement.setMinElement(minElementValue);
yangList.setMinElements(minElement);
break;
default:
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ModuleListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ModuleListener.java
index c77ffea..5598561 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ModuleListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ModuleListener.java
@@ -91,6 +91,9 @@
YangModule yangModule = getYangModuleNode(JAVA_GENERATION);
yangModule.setName(identifier);
+ yangModule.setLineNumber(ctx.getStart().getLine());
+ yangModule.setCharPosition(ctx.getStart().getCharPositionInLine());
+ yangModule.setFileName(listener.getFileName());
if (ctx.moduleBody().moduleHeaderStatement().yangVersionStatement() == null) {
yangModule.setVersion((byte) 1);
@@ -149,6 +152,7 @@
LinkerException linkerException = new LinkerException(e.getMessage());
linkerException.setLine(e.getLineNumber());
linkerException.setCharPosition(e.getCharPositionInLine());
+ linkerException.setFileName(listener.getFileName());
throw linkerException;
}
}
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/MustListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/MustListener.java
index b6cbf20..421ede1 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/MustListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/MustListener.java
@@ -86,6 +86,9 @@
YangMust must = new YangMust();
must.setConstraint(constraint);
+ must.setLineNumber(ctx.getStart().getLine());
+ must.setCharPosition(ctx.getStart().getCharPositionInLine());
+ must.setFileName(listener.getFileName());
YangMustHolder mustHolder = (YangMustHolder) tmpNode;
mustHolder.addMust(must);
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/NotificationListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/NotificationListener.java
index 94369d7..6109518 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/NotificationListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/NotificationListener.java
@@ -113,6 +113,10 @@
YangNotification notification = getYangNotificationNode(JAVA_GENERATION);
notification.setName(identifier);
+
+ notification.setLineNumber(ctx.getStart().getLine());
+ notification.setCharPosition(ctx.getStart().getCharPositionInLine());
+ notification.setFileName(listener.getFileName());
((RpcNotificationContainer) curData).setNotificationPresenceFlag(true);
YangNode curNode = (YangNode) curData;
try {
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/OutputListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/OutputListener.java
index aee77b0..70c135f 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/OutputListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/OutputListener.java
@@ -93,6 +93,10 @@
YangOutput yangOutput = getYangOutputNode(JAVA_GENERATION);
yangOutput.setName(((YangRpc) curData).getName() + OUTPUT_KEYWORD);
+
+ yangOutput.setLineNumber(ctx.getStart().getLine());
+ yangOutput.setCharPosition(ctx.getStart().getCharPositionInLine());
+ yangOutput.setFileName(listener.getFileName());
YangNode curNode = (YangNode) curData;
try {
curNode.addChild(yangOutput);
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/RpcListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/RpcListener.java
index 89f7eb7..e037e52 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/RpcListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/RpcListener.java
@@ -111,6 +111,10 @@
YangNode curNode = (YangNode) curData;
YangRpc yangRpc = getYangRpcNode(JAVA_GENERATION);
+
+ yangRpc.setLineNumber(ctx.getStart().getLine());
+ yangRpc.setCharPosition(ctx.getStart().getCharPositionInLine());
+ yangRpc.setFileName(listener.getFileName());
yangRpc.setName(identifier);
try {
curNode.addChild(yangRpc);
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ShortCaseListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ShortCaseListener.java
index 90b5269..6963a98 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ShortCaseListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/ShortCaseListener.java
@@ -86,6 +86,9 @@
YangCase caseNode = getYangCaseNode(JAVA_GENERATION);
+ caseNode.setLineNumber(ctx.getStart().getLine());
+ caseNode.setCharPosition(ctx.getStart().getCharPositionInLine());
+ caseNode.setFileName(listener.getFileName());
if (ctx.containerStatement() != null) {
caseNode.setName(getValidIdentifier(ctx.containerStatement().identifier().getText(), CASE_DATA, ctx));
errorConstructContext = ctx.containerStatement();
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/SubModuleListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/SubModuleListener.java
index a19431d..b429e6d 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/SubModuleListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/SubModuleListener.java
@@ -96,6 +96,9 @@
YangSubModule yangSubModule = getYangSubModuleNode(JAVA_GENERATION);
yangSubModule.setName(identifier);
+ yangSubModule.setLineNumber(ctx.getStart().getLine());
+ yangSubModule.setCharPosition(ctx.getStart().getCharPositionInLine());
+ yangSubModule.setFileName(listener.getFileName());
if (ctx.submoduleBody().submoduleHeaderStatement().yangVersionStatement() == null) {
yangSubModule.setVersion((byte) 1);
}
@@ -155,7 +158,7 @@
LinkerException linkerException = new LinkerException(e.getMessage());
linkerException.setLine(e.getLineNumber());
linkerException.setCharPosition(e.getCharPositionInLine());
-
+ linkerException.setFileName(listener.getFileName());
throw linkerException;
}
}
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/TypeDefListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/TypeDefListener.java
index 4a629ba..4821cfa 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/TypeDefListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/TypeDefListener.java
@@ -130,6 +130,9 @@
YangTypeDef typeDefNode = getYangTypeDefNode(JAVA_GENERATION);
typeDefNode.setName(identifier);
+ typeDefNode.setLineNumber(ctx.getStart().getLine());
+ typeDefNode.setCharPosition(ctx.getStart().getCharPositionInLine());
+ typeDefNode.setFileName(listener.getFileName());
Parsable curData = listener.getParsedDataStack().peek();
if (curData instanceof YangModule || curData instanceof YangSubModule || curData instanceof YangContainer
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/TypeListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/TypeListener.java
index 9d92018..ab0ad3c 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/TypeListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/TypeListener.java
@@ -104,6 +104,9 @@
type.setNodeIdentifier(nodeIdentifier);
type.setDataType(yangDataTypes);
+ type.setLineNumber(ctx.getStart().getLine());
+ type.setCharPosition(ctx.getStart().getCharPositionInLine());
+ type.setFileName(listener.getFileName());
// Set default require instance value as true for instance identifier.
setDefaultRequireInstanceForInstanceIdentifier(type);
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/UnionListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/UnionListener.java
index 63a09c5..9653e40 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/UnionListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/UnionListener.java
@@ -100,6 +100,9 @@
YangUnion unionNode = getYangUnionNode(JAVA_GENERATION);
Parsable typeData = listener.getParsedDataStack().pop();
+ unionNode.setLineNumber(ctx.getStart().getLine());
+ unionNode.setCharPosition(ctx.getStart().getCharPositionInLine());
+ unionNode.setFileName(listener.getFileName());
// Check for stack to be non empty.
checkStackIsNotEmpty(listener, MISSING_HOLDER, UNION_DATA, "", ENTRY);
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/UsesListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/UsesListener.java
index 6e27a1b..2609d44 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/UsesListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/UsesListener.java
@@ -135,6 +135,10 @@
|| curData instanceof YangNotification) {
YangUses usesNode = getYangUsesNode(JAVA_GENERATION);
+
+ usesNode.setLineNumber(ctx.getStart().getLine());
+ usesNode.setCharPosition(ctx.getStart().getCharPositionInLine());
+ usesNode.setFileName(listener.getFileName());
YangNodeIdentifier nodeIdentifier = getValidNodeIdentifier(ctx.string().getText(), USES_DATA, ctx);
usesNode.setNodeIdentifier(nodeIdentifier);
usesNode.setCurrentGroupingDepth(listener.getGroupingDepth());
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/WhenListener.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/WhenListener.java
index 15092a1..218440f 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/WhenListener.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/listeners/WhenListener.java
@@ -88,6 +88,10 @@
YangWhen when = new YangWhen();
when.setCondition(condition);
+ when.setLineNumber(ctx.getStart().getLine());
+ when.setCharPosition(ctx.getStart().getCharPositionInLine());
+ when.setFileName(listener.getFileName());
+
whenHolder.setWhen(when);
listener.getParsedDataStack().push(when);
} else {
diff --git a/plugin/src/main/java/org/onosproject/yangutils/plugin/manager/YangUtilManager.java b/plugin/src/main/java/org/onosproject/yangutils/plugin/manager/YangUtilManager.java
index ab3c6e1..d89eee4 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/plugin/manager/YangUtilManager.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/plugin/manager/YangUtilManager.java
@@ -16,13 +16,6 @@
package org.onosproject.yangutils.plugin.manager;
-import java.io.IOException;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Set;
-
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
@@ -45,7 +38,14 @@
import org.onosproject.yangutils.utils.io.impl.YangFileScanner;
import org.sonatype.plexus.build.incremental.BuildContext;
-import static org.apache.maven.plugins.annotations.LifecyclePhase.GENERATE_SOURCES;
+import java.io.IOException;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Set;
+
+import static org.apache.maven.plugins.annotations.LifecyclePhase.PROCESS_SOURCES;
import static org.apache.maven.plugins.annotations.ResolutionScope.COMPILE;
import static org.onosproject.yangutils.datamodel.ResolvableType.YANG_DERIVED_DATA_TYPE;
import static org.onosproject.yangutils.datamodel.ResolvableType.YANG_IDENTITYREF;
@@ -59,6 +59,8 @@
import static org.onosproject.yangutils.utils.UtilConstants.DEFAULT_BASE_PKG;
import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
import static org.onosproject.yangutils.utils.UtilConstants.SLASH;
+import static org.onosproject.yangutils.utils.UtilConstants.TEMP;
+import static org.onosproject.yangutils.utils.UtilConstants.YANG_RESOURCES;
import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.deleteDirectory;
import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getDirectory;
import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getPackageDirPathFromJavaJPackage;
@@ -69,8 +71,7 @@
* Execution phase is generate-sources.
* requiresDependencyResolution at compile time.
*/
-@Mojo(name = "yang2java", defaultPhase = GENERATE_SOURCES, requiresDependencyResolution = COMPILE,
- requiresProject = true)
+@Mojo(name = "yang2java", defaultPhase = PROCESS_SOURCES, requiresDependencyResolution = COMPILE)
public class YangUtilManager
extends AbstractMojo {
@@ -83,6 +84,7 @@
private YangLinker yangLinker = new YangLinkerManager();
private YangFileInfo curYangFileInfo = new YangFileInfo();
private Set<YangNode> yangNodeSet = new HashSet<>();
+
/**
* Source directory for YANG files.
*/
@@ -170,8 +172,8 @@
/*
* For deleting the generated code in previous build.
*/
- deleteDirectory(getDirectory(baseDir, outputDirectory));
-
+ deleteDirectory(getDirectory(baseDir, outputDirectory + SLASH + TEMP));
+ deleteDirectory(getDirectory(baseDir, outputDirectory + SLASH + YANG_RESOURCES));
String searchDir = getDirectory(baseDir, yangFilesDir);
String codeGenDir = getDirectory(baseDir, classFileDir) + SLASH;
@@ -227,7 +229,7 @@
throw new MojoExecutionException(
"Error handler failed to delete files for data model node.");
}
- e.printStackTrace();
+ getLog().info(e);
throw new MojoExecutionException(
"Exception occurred due to " + e.getLocalizedMessage() + " in " + fileName
+ " YANG file.");
@@ -320,7 +322,7 @@
}
if (e.getMessage() != null) {
- logInfo = logInfo + NEW_LINE + e.getMessage();
+ logInfo = logInfo + NEW_LINE + e.getLocalizedMessage();
}
getLog().info(logInfo);
throw e;
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/exception/InvalidNodeForTranslatorException.java b/plugin/src/main/java/org/onosproject/yangutils/translator/exception/InvalidNodeForTranslatorException.java
index c737175..935f6b6 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/exception/InvalidNodeForTranslatorException.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/exception/InvalidNodeForTranslatorException.java
@@ -23,6 +23,8 @@
private static final long serialVersionUID = 20160311L;
private transient String fileName;
+ private transient int lineNumber;
+ private transient int charPosition;
/**
* Creates a new exception.
@@ -69,9 +71,45 @@
}
/**
- * Sets file name in translator exception.
+ * Returns line number of the exception.
*
- * @param fileName generated file name
+ * @return line number of the exception
+ */
+ public int getLineNumber() {
+ return this.lineNumber;
+ }
+
+ /**
+ * Returns position of the exception.
+ *
+ * @return position of the exception
+ */
+ public int getCharPositionInLine() {
+ return this.charPosition;
+ }
+
+ /**
+ * Sets line number of YANG file.
+ *
+ * @param line line number of YANG file
+ */
+ public void setLine(int line) {
+ this.lineNumber = line;
+ }
+
+ /**
+ * Sets position of exception.
+ *
+ * @param charPosition position of exception
+ */
+ public void setCharPosition(int charPosition) {
+ this.charPosition = charPosition;
+ }
+
+ /**
+ * Sets file name in exception.
+ *
+ * @param fileName YANG file name
*/
public void setFileName(String fileName) {
this.fileName = fileName;
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/exception/TranslatorException.java b/plugin/src/main/java/org/onosproject/yangutils/translator/exception/TranslatorException.java
index a033a00..0f68e97 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/exception/TranslatorException.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/exception/TranslatorException.java
@@ -23,6 +23,8 @@
private static final long serialVersionUID = 20160311L;
private transient String fileName;
+ private transient int lineNumber;
+ private transient int charPosition;
/**
* Create a new translator exception.
@@ -60,18 +62,54 @@
}
/**
- * Returns generated file name for the exception.
+ * Returns line number of the exception.
*
- * @return generated file name for the exception
+ * @return line number of the exception
+ */
+ public int getLineNumber() {
+ return this.lineNumber;
+ }
+
+ /**
+ * Returns YANG file name of the exception.
+ *
+ * @return YANG file name of the exception
*/
public String getFileName() {
return this.fileName;
}
/**
+ * Returns position of the exception.
+ *
+ * @return position of the exception
+ */
+ public int getCharPositionInLine() {
+ return this.charPosition;
+ }
+
+ /**
+ * Sets line number of YANG file.
+ *
+ * @param line line number of YANG file
+ */
+ public void setLine(int line) {
+ this.lineNumber = line;
+ }
+
+ /**
+ * Sets position of exception.
+ *
+ * @param charPosition position of exception
+ */
+ public void setCharPosition(int charPosition) {
+ this.charPosition = charPosition;
+ }
+
+ /**
* Sets file name in translator exception.
*
- * @param fileName generated file name
+ * @param fileName YANG file name
*/
public void setFileName(String fileName) {
this.fileName = fileName;
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaCodeGeneratorInfo.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaCodeGeneratorInfo.java
index 6edd208..4ddde17 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaCodeGeneratorInfo.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaCodeGeneratorInfo.java
@@ -16,6 +16,8 @@
package org.onosproject.yangutils.translator.tojava;
+import org.onosproject.yangutils.datamodel.LocationInfo;
+
/**
* Represents YANG java info containing interface for java code generator, java
* file information, java import data and temp java code fragment files. This
@@ -23,5 +25,5 @@
* entry function.
*/
public interface JavaCodeGeneratorInfo
- extends JavaFileInfoContainer, TempJavaCodeFragmentFilesContainer {
+ extends JavaFileInfoContainer, TempJavaCodeFragmentFilesContainer, LocationInfo {
}
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaCodeGeneratorUtil.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaCodeGeneratorUtil.java
index 089a1b3..724c9cf 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaCodeGeneratorUtil.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaCodeGeneratorUtil.java
@@ -90,7 +90,9 @@
while (codeGenNode != null) {
if (curTraversal != PARENT) {
if (!(codeGenNode instanceof JavaCodeGenerator)) {
- throw new TranslatorException("Unsupported node to generate code");
+ throw new TranslatorException("Unsupported node to generate code " +
+ codeGenNode.getName() + " in " + codeGenNode.getLineNumber() + " at "
+ + codeGenNode.getCharPosition() + " in " + codeGenNode.getFileName());
}
setCurNode(codeGenNode);
try {
@@ -155,7 +157,9 @@
} else {
close(codeGenNode, yangPlugin);
throw new TranslatorException(
- "Generated data model node cannot be translated to target language code");
+ "Generated data model node cannot be translated to target language code for " +
+ codeGenNode.getName() + " in " + codeGenNode.getLineNumber()
+ + " at " + codeGenNode.getCharPosition() + " in " + codeGenNode.getFileName());
}
}
@@ -175,7 +179,9 @@
} else {
close(codeGenNode, pluginConfig);
throw new TranslatorException(
- "Generated data model node cannot be translated to target language code");
+ "Generated data model node cannot be translated to target language code for " +
+ codeGenNode.getName() + " in " + codeGenNode.getLineNumber()
+ + " at " + codeGenNode.getCharPosition() + " in " + codeGenNode.getFileName());
}
}
@@ -281,18 +287,17 @@
if (node instanceof JavaCodeGenerator && ((TempJavaCodeFragmentFilesContainer) node)
.getTempJavaCodeFragmentFiles() != null) {
((TempJavaCodeFragmentFilesContainer) node).getTempJavaCodeFragmentFiles().freeTemporaryResources(true);
- } else {
-
- if (getRootNode() != null) {
- JavaFileInfoTranslator javaFileInfo = ((JavaFileInfoContainer) getRootNode()).getJavaFileInfo();
- if (javaFileInfo != null) {
- searchAndDeleteTempDir(javaFileInfo.getBaseCodeGenPath() +
- javaFileInfo.getPackageFilePath());
- } else {
- searchAndDeleteTempDir(yangPlugin.getCodeGenDir());
- }
+ }
+ if (getRootNode() != null) {
+ JavaFileInfoTranslator javaFileInfo = ((JavaFileInfoContainer) getRootNode()).getJavaFileInfo();
+ if (javaFileInfo.getPackage() != null) {
+ searchAndDeleteTempDir(javaFileInfo.getBaseCodeGenPath() +
+ javaFileInfo.getPackageFilePath());
+ } else {
+ searchAndDeleteTempDir(yangPlugin.getCodeGenDir());
}
}
+
}
/**
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaQualifiedTypeInfoTranslator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaQualifiedTypeInfoTranslator.java
index a0e7b93..27cba78 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaQualifiedTypeInfoTranslator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaQualifiedTypeInfoTranslator.java
@@ -91,7 +91,8 @@
JavaQualifiedTypeInfoTranslator importInfo = (JavaQualifiedTypeInfoTranslator) leaf.getJavaQualifiedInfo();
if (leaf.getDataType() == null) {
- throw new TranslatorException("missing data type of leaf " + leaf.getName());
+ throw new TranslatorException("missing data type of leaf " + leaf.getName()
+ + " in " + leaf.getLineNumber() + " at" + leaf.getCharPosition() + " in " + leaf.getFileName());
}
/*
@@ -109,7 +110,9 @@
String classPkg = getJavaImportPackage(leaf.getDataType(),
leaf.isLeafList(), leaf.getConflictResolveConfig());
if (classPkg == null) {
- throw new TranslatorException("import package cannot be null when the class is used");
+ throw new TranslatorException("import package cannot be null when the class is used for "
+ + leaf.getName()
+ + " in " + leaf.getLineNumber() + " at" + leaf.getCharPosition() + " in " + leaf.getFileName());
}
importInfo.setPkgInfo(classPkg);
} else {
@@ -119,7 +122,9 @@
*/
String dataTypeName = AttributesJavaDataType.getJavaDataType(leaf.getDataType());
if (dataTypeName == null) {
- throw new TranslatorException("not supported data type");
+ throw new TranslatorException("not supported data type for "
+ + leaf.getName()
+ + " in " + leaf.getLineNumber() + " at" + leaf.getCharPosition() + " in " + leaf.getFileName());
}
importInfo.setClassInfo(dataTypeName);
}
@@ -144,7 +149,9 @@
if (!(curNode instanceof JavaFileInfoContainer)) {
throw new TranslatorException("missing java file information to get the package details "
- + "of attribute corresponding to child node");
+ + "of attribute corresponding to child node " + curNode.getName() +
+ " in " + curNode.getLineNumber() + " at " + curNode.getCharPosition() + " in " +
+ curNode.getFileName());
}
importInfo.setClassInfo(attributeName);
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaEnumerationFragmentFiles.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaEnumerationFragmentFiles.java
index 5068458..7bf3f2a 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaEnumerationFragmentFiles.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaEnumerationFragmentFiles.java
@@ -218,7 +218,9 @@
addJavaSnippetInfoToApplicableTempFiles(curEnum.getNamedValue(), pluginConfig);
}
} else {
- throw new TranslatorException("current node should be of enumeration type.");
+ throw new TranslatorException("current node should be of enumeration type. " +
+ curNode.getName() + " in " + curNode.getLineNumber() + " at " + curNode.getCharPosition()
+ + " in " + curNode.getFileName());
}
}
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaFragmentFiles.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaFragmentFiles.java
index 14fcdc1..e20d788 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaFragmentFiles.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaFragmentFiles.java
@@ -525,7 +525,9 @@
throws IOException {
YangNode parent = getParentNodeInGenCode(curNode);
if (!(parent instanceof JavaCodeGenerator)) {
- throw new TranslatorException("missing parent node to contain current node info in generated file");
+ throw new TranslatorException("missing parent node to contain current node info in generated file "
+ + parent.getName() + " in " + parent.getLineNumber() + " at " + parent.getCharPosition()
+ + " in " + parent.getFileName());
}
if (parent instanceof YangJavaGroupingTranslator) {
@@ -569,7 +571,9 @@
JavaQualifiedTypeInfoTranslator qualifiedTypeInfo = getQualifiedTypeInfoOfCurNode(curNode,
getCapitalCase(curNodeName));
if (!(targetNode instanceof TempJavaCodeFragmentFilesContainer)) {
- throw new TranslatorException("Parent node does not have file info");
+ throw new TranslatorException("Parent node does not have file info "
+ + targetNode.getName() + " in " + targetNode.getLineNumber() + " at " + targetNode.getCharPosition()
+ + " in " + targetNode.getFileName());
}
JavaImportData parentImportData = tempJavaFragmentFiles.getJavaImportData();
JavaFileInfoTranslator fileInfo = ((JavaFileInfoContainer) targetNode).getJavaFileInfo();
@@ -1332,7 +1336,8 @@
throw new IOException("failed to create temporary file for " + fileName);
}
} else {
- throw new IOException(fileName + " is reused due to YANG naming");
+ throw new IOException(fileName + " is reused due to YANG naming. probably your previous build would have " +
+ "failed");
}
return file;
}
@@ -1438,7 +1443,9 @@
}
if (!(curNode instanceof JavaFileInfoContainer)) {
throw new TranslatorException("missing java file information to get the package details "
- + "of attribute corresponding to child node");
+ + "of attribute corresponding to child node " +
+ curNode.getName() + " in " + curNode.getLineNumber() + " at " + curNode.getCharPosition()
+ + " in " + curNode.getFileName());
}
caseImportInfo.setClassInfo(getCapitalCase(getCamelCase(parent.getName(),
pluginConfig.getConflictResolver())));
@@ -1465,7 +1472,10 @@
if (listOfLeaves != null) {
for (YangLeaf leaf : listOfLeaves) {
if (!(leaf instanceof JavaLeafInfoContainer)) {
- throw new TranslatorException("Leaf does not have java information");
+ throw new TranslatorException("Leaf does not have java information " +
+ leaf.getName() + " in " + leaf.getLineNumber() + " at " +
+ leaf.getCharPosition()
+ + " in " + leaf.getFileName());
}
if (curNode instanceof YangModule || curNode instanceof YangSubModule) {
TempJavaBeanFragmentFiles tempJavaBeanFragmentFiles = ((JavaCodeGeneratorInfo) curNode)
@@ -1494,7 +1504,9 @@
if (listOfLeafList != null) {
for (YangLeafList leafList : listOfLeafList) {
if (!(leafList instanceof JavaLeafInfoContainer)) {
- throw new TranslatorException("Leaf-list does not have java information");
+ throw new TranslatorException("Leaf-list does not have java information " +
+ curNode.getName() + " in " + curNode.getLineNumber() + " at " + curNode.getCharPosition()
+ + " in " + curNode.getFileName());
}
if (curNode instanceof YangModule || curNode instanceof YangSubModule) {
TempJavaBeanFragmentFiles tempJavaBeanFragmentFiles = ((JavaCodeGeneratorInfo) curNode)
@@ -1520,7 +1532,9 @@
YangPluginConfig yangPluginConfig)
throws IOException {
if (!(curNode instanceof YangLeavesHolder)) {
- throw new TranslatorException("Data model node does not have any leaves");
+ throw new TranslatorException("Data model node does not have any leaves " +
+ curNode.getName() + " in " + curNode.getLineNumber() + " at " + curNode.getCharPosition()
+ + " in " + curNode.getFileName());
}
YangLeavesHolder leavesHolder = (YangLeavesHolder) curNode;
addLeavesInfoToTempFiles(leavesHolder.getListOfLeaf(), yangPluginConfig, curNode);
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaTypeFragmentFiles.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaTypeFragmentFiles.java
index 62c6390..32f6c17 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaTypeFragmentFiles.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TempJavaTypeFragmentFiles.java
@@ -274,7 +274,10 @@
if (typeList != null) {
for (YangType<?> yangType : typeList) {
if (!(yangType instanceof YangJavaTypeTranslator)) {
- throw new TranslatorException("Type does not have Java info");
+ throw new TranslatorException("Type does not have Java info " +
+ yangType.getDataTypeName() + " in " + yangType.getLineNumber() + " at " + yangType
+ .getCharPosition()
+ + " in " + yangType.getFileName());
}
JavaAttributeInfo javaAttributeInfo = getAttributeForType(yangType, pluginConfig);
addJavaSnippetInfoToApplicableTempFiles(javaAttributeInfo,
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/YangJavaModelUtils.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/YangJavaModelUtils.java
index f89ad3d..08a6d9b 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/YangJavaModelUtils.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/YangJavaModelUtils.java
@@ -227,7 +227,10 @@
} else if (javaCodeGeneratorInfo instanceof YangChoice) {
/*Do nothing, only the interface needs to be generated*/
} else {
- throw new TranslatorException("Unsupported Node Translation");
+ throw new TranslatorException("Unsupported Node Translation "
+ + javaCodeGeneratorInfo.getLineNumber() + " at " +
+ javaCodeGeneratorInfo.getCharPosition()
+ + " in " + javaCodeGeneratorInfo.getFileName());
}
}
@@ -242,7 +245,10 @@
YangPluginConfig yangPluginConfig)
throws IOException {
if (!(javaCodeGeneratorInfo instanceof YangNode)) {
- throw new TranslatorException("translation is not supported for the node");
+ throw new TranslatorException("translation is not supported for the node "
+ + javaCodeGeneratorInfo.getLineNumber() + " at " +
+ javaCodeGeneratorInfo.getCharPosition()
+ + " in " + javaCodeGeneratorInfo.getFileName());
}
createTempFragmentFile(javaCodeGeneratorInfo);
updateTempFragmentFiles(javaCodeGeneratorInfo, yangPluginConfig);
@@ -288,7 +294,10 @@
YangPluginConfig yangPlugin, boolean isMultiInstance)
throws IOException {
if (!(javaCodeGeneratorInfo instanceof YangNode)) {
- throw new TranslatorException("Invalid node for translation");
+ throw new TranslatorException("Invalid node for translation " +
+ javaCodeGeneratorInfo.getLineNumber() + " at " +
+ javaCodeGeneratorInfo.getCharPosition()
+ + " in " + javaCodeGeneratorInfo.getFileName());
}
/*
@@ -313,7 +322,10 @@
YangPluginConfig yangPlugin)
throws IOException {
if (!(javaCodeGeneratorInfo instanceof YangNode)) {
- throw new TranslatorException("invalid node for translation");
+ throw new TranslatorException("invalid node for translation " +
+ javaCodeGeneratorInfo.getLineNumber() + " at " +
+ javaCodeGeneratorInfo.getCharPosition()
+ + " in " + javaCodeGeneratorInfo.getFileName());
}
generateCodeOfNode(javaCodeGeneratorInfo, yangPlugin);
@@ -375,7 +387,10 @@
YangPluginConfig yangPluginConfig)
throws IOException {
if (!(javaCodeGeneratorInfo instanceof YangNode)) {
- throw new TranslatorException("invalid node for translation");
+ throw new TranslatorException("invalid node for translation "
+ + javaCodeGeneratorInfo.getLineNumber() + " at " +
+ javaCodeGeneratorInfo.getCharPosition()
+ + " in " + javaCodeGeneratorInfo.getFileName());
}
updatePackageInfo(javaCodeGeneratorInfo, yangPluginConfig);
generateTempFiles(javaCodeGeneratorInfo, yangPluginConfig);
@@ -393,7 +408,10 @@
YangPluginConfig yangPluginConfig, String rootPkg)
throws IOException {
if (!(javaCodeGeneratorInfo instanceof YangNode)) {
- throw new TranslatorException("invalid node for translation");
+ throw new TranslatorException("invalid node for translation " + javaCodeGeneratorInfo.getLineNumber()
+ + " at " +
+ javaCodeGeneratorInfo.getCharPosition()
+ + " in " + javaCodeGeneratorInfo.getFileName());
}
updatePackageInfo(javaCodeGeneratorInfo, yangPluginConfig, rootPkg);
@@ -415,12 +433,20 @@
String pkg;
if (!(curNode instanceof JavaFileInfoContainer)
|| curNode.getParent() == null) {
- throw new TranslatorException("missing parent node to get current node's package");
+ throw new TranslatorException("missing parent node to get current node's package " +
+ curNode.getName() + " in " +
+ curNode.getLineNumber() + " at " +
+ curNode.getCharPosition()
+ + " in " + curNode.getFileName());
}
YangNode parentNode = DataModelUtils.getParentNodeInGenCode(curNode);
if (!(parentNode instanceof JavaFileInfoContainer)) {
- throw new TranslatorException("missing parent java node to get current node's package");
+ throw new TranslatorException("missing parent java node to get current node's package " +
+ curNode.getName() + " in " +
+ curNode.getLineNumber() + " at " +
+ curNode.getCharPosition()
+ + " in " + curNode.getFileName());
}
JavaFileInfoTranslator parentJavaFileHandle = ((JavaFileInfoContainer) parentNode).getJavaFileInfo();
pkg = parentJavaFileHandle.getPackage() + PERIOD + parentJavaFileHandle.getJavaName();
@@ -460,6 +486,26 @@
}
/**
+ * Returns true if only augment nodes present in module.
+ *
+ * @param curNode root node
+ * @return true if only augment nodes present in module
+ */
+ public static boolean isOnlyAugmentNodeInRoot(YangNode curNode) {
+ List<Boolean> booleanData = new ArrayList<>();
+ curNode = curNode.getChild();
+ while (curNode != null) {
+ if (curNode instanceof YangAugment) {
+ booleanData.add(true);
+ } else {
+ booleanData.add(false);
+ }
+ curNode = curNode.getNextSibling();
+ }
+ return !booleanData.contains(false);
+ }
+
+ /**
* Returns nodes package.
*
* @param node YANG node
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/AttributesJavaDataType.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/AttributesJavaDataType.java
index ce172ff..85c190b 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/AttributesJavaDataType.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/AttributesJavaDataType.java
@@ -17,6 +17,7 @@
package org.onosproject.yangutils.translator.tojava.javamodel;
import java.util.Stack;
+
import org.onosproject.yangutils.datamodel.YangDerivedInfo;
import org.onosproject.yangutils.datamodel.YangEnumeration;
import org.onosproject.yangutils.datamodel.YangIdentity;
@@ -110,7 +111,11 @@
case LEAFREF:
return getJavaDataType(getReferredTypeFromLeafref(yangType));
default:
- throw new TranslatorException("given data type is not supported.");
+ throw new TranslatorException("given data type is not supported. " +
+ yangType.getDataTypeName() + " in " +
+ yangType.getLineNumber() + " at " +
+ yangType.getCharPosition()
+ + " in " + yangType.getFileName());
}
}
@@ -178,7 +183,11 @@
return getCapitalCase(
getCamelCase(yangType.getDataTypeName(), pluginConfig));
default:
- throw new TranslatorException("given data type is not supported.");
+ throw new TranslatorException("given data type is not supported ." +
+ yangType.getDataTypeName() + " in " +
+ yangType.getLineNumber() + " at " +
+ yangType.getCharPosition()
+ + " in " + yangType.getFileName());
}
} else {
switch (type) {
@@ -263,7 +272,11 @@
case DERIVED:
return getTypeDefsPackage(yangType, conflictResolver);
default:
- throw new TranslatorException("given data type is not supported.");
+ throw new TranslatorException("given data type is not supported. " +
+ yangType.getDataTypeName() + " in " +
+ yangType.getLineNumber() + " at " +
+ yangType.getCharPosition()
+ + " in " + yangType.getFileName());
}
} else {
switch (type) {
@@ -304,11 +317,19 @@
private static String getTypeDefsPackage(YangType<?> type, YangToJavaNamingConflictUtil conflictResolver) {
Object var = type.getDataTypeExtendedInfo();
if (!(var instanceof YangDerivedInfo)) {
- throw new TranslatorException("type should have been derived.");
+ throw new TranslatorException("type should have been derived. " +
+ type.getDataTypeName() + " in " +
+ type.getLineNumber() + " at " +
+ type.getCharPosition()
+ + " in " + type.getFileName());
}
if (!(((YangDerivedInfo<?>) var).getReferredTypeDef() != null)) {
- throw new TranslatorException("derived info is not an instance of typedef.");
+ throw new TranslatorException("derived info is not an instance of typedef. " +
+ type.getDataTypeName() + " in " +
+ type.getLineNumber() + " at " +
+ type.getCharPosition()
+ + " in " + type.getFileName());
}
YangJavaTypeDefTranslator typedef = (YangJavaTypeDefTranslator) ((YangDerivedInfo<?>) var).getReferredTypeDef();
@@ -328,7 +349,11 @@
private static String getUnionPackage(YangType<?> type, YangToJavaNamingConflictUtil conflictResolver) {
if (!(type.getDataTypeExtendedInfo() instanceof YangUnion)) {
- throw new TranslatorException("type should have been union.");
+ throw new TranslatorException("type should have been union. " +
+ type.getDataTypeName() + " in " +
+ type.getLineNumber() + " at " +
+ type.getCharPosition()
+ + " in " + type.getFileName());
}
YangJavaUnionTranslator union = (YangJavaUnionTranslator) type.getDataTypeExtendedInfo();
@@ -348,7 +373,11 @@
private static String getEnumsPackage(YangType<?> type, YangToJavaNamingConflictUtil conflictResolver) {
if (!(type.getDataTypeExtendedInfo() instanceof YangEnumeration)) {
- throw new TranslatorException("type should have been enumeration.");
+ throw new TranslatorException("type should have been enumeration. " +
+ type.getDataTypeName() + " in " +
+ type.getLineNumber() + " at " +
+ type.getCharPosition()
+ + " in " + type.getFileName());
}
YangJavaEnumerationTranslator enumeration = (YangJavaEnumerationTranslator) type.getDataTypeExtendedInfo();
if (enumeration.getJavaFileInfo().getPackage() == null) {
@@ -367,7 +396,11 @@
private static String getIdentityRefPackage(YangType<?> type, YangToJavaNamingConflictUtil conflictResolver) {
if (!(type.getDataTypeExtendedInfo() instanceof YangIdentityRef)) {
- throw new TranslatorException("type should have been identityref.");
+ throw new TranslatorException("type should have been identityref. " +
+ type.getDataTypeName() + " in " +
+ type.getLineNumber() + " at " +
+ type.getCharPosition()
+ + " in " + type.getFileName());
}
YangIdentityRef identityRef = (YangIdentityRef) type.getDataTypeExtendedInfo();
YangJavaIdentityTranslator identity = (YangJavaIdentityTranslator) (identityRef.getReferredIdentity());
@@ -387,7 +420,11 @@
private static String getPackageFromParent(YangNode parent,
YangToJavaNamingConflictUtil conflictResolver) {
if (!(parent instanceof JavaFileInfoContainer)) {
- throw new TranslatorException("invalid child node is being processed.");
+ throw new TranslatorException("invalid child node is being processed. " +
+ parent.getName() + " in " +
+ parent.getLineNumber() + " at " +
+ parent.getCharPosition()
+ + " in " + parent.getFileName());
}
JavaFileInfoTranslator parentInfo = ((JavaFileInfoContainer) parent).getJavaFileInfo();
if (parentInfo.getPackage() == null) {
@@ -434,7 +471,12 @@
submodule.getNameSpaceFromModule(submodule.getBelongsTo()),
submodule.getRevision().getRevDate(), conflictResolver);
} else {
- throw new TranslatorException("Invalid root node of data model tree");
+ throw new TranslatorException("Invalid root node of data model tree " +
+ yangNode.getName() + " in " +
+ yangNode.getLineNumber() + " at " +
+ yangNode.getCharPosition()
+ + " in " + yangNode.getFileName());
+
}
((JavaCodeGeneratorInfo) yangNode).getJavaFileInfo()
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/JavaLeafInfoContainer.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/JavaLeafInfoContainer.java
index 49f2f41..c1c6e60 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/JavaLeafInfoContainer.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/JavaLeafInfoContainer.java
@@ -15,15 +15,16 @@
*/
package org.onosproject.yangutils.translator.tojava.javamodel;
+import org.onosproject.yangutils.datamodel.LocationInfo;
import org.onosproject.yangutils.datamodel.YangType;
-import org.onosproject.yangutils.utils.io.YangToJavaNamingConflictUtil;
import org.onosproject.yangutils.datamodel.javadatamodel.JavaQualifiedTypeInfoContainer;
+import org.onosproject.yangutils.utils.io.YangToJavaNamingConflictUtil;
/**
* Represent java based identification of the YANG leaves.
*/
public interface JavaLeafInfoContainer
- extends JavaQualifiedTypeInfoContainer {
+ extends JavaQualifiedTypeInfoContainer, LocationInfo {
/**
* Retrieves the data type of the leaf.
*
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaAugmentTranslator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaAugmentTranslator.java
index 6589201..1607b9f 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaAugmentTranslator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaAugmentTranslator.java
@@ -18,13 +18,13 @@
import java.io.IOException;
import org.onosproject.yangutils.datamodel.YangChoice;
-import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
import org.onosproject.yangutils.datamodel.javadatamodel.YangJavaAugment;
-import org.onosproject.yangutils.utils.io.YangPluginConfig;
import org.onosproject.yangutils.translator.exception.TranslatorException;
import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator;
import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
+import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
+import org.onosproject.yangutils.utils.io.YangPluginConfig;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER;
import static org.onosproject.yangutils.translator.tojava.YangJavaModelUtils.generateCodeOfAugmentableNode;
@@ -61,7 +61,11 @@
public JavaFileInfoTranslator getJavaFileInfo() {
if (javaFileInfo == null) {
- throw new TranslatorException("Missing java info in java datamodel node");
+ throw new TranslatorException("Missing java info in java datamodel node " +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName());
}
return (JavaFileInfoTranslator) javaFileInfo;
}
@@ -107,7 +111,11 @@
try {
generateCodeOfAugmentableNode(this, yangPlugin);
} catch (IOException e) {
- throw new TranslatorException("Failed to generate code for augmentable node " + getName());
+ throw new TranslatorException("Failed to generate code for augmentable node " +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + " " + e.getLocalizedMessage());
}
}
@@ -123,7 +131,11 @@
getTempJavaCodeFragmentFiles().generateJavaFile(GENERATE_INTERFACE_WITH_BUILDER, this);
}
} catch (IOException e) {
- throw new TranslatorException("Failed to generate code for augmentable node " + getName());
+ throw new TranslatorException("Failed to generate code for augmentable node " +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + " " + e.getLocalizedMessage());
}
}
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaCaseTranslator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaCaseTranslator.java
index 88498db..b1d8a1c 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaCaseTranslator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaCaseTranslator.java
@@ -60,7 +60,11 @@
@Override
public JavaFileInfoTranslator getJavaFileInfo() {
if (javaFileInfo == null) {
- throw new TranslatorException("Missing java info in java datamodel node");
+ throw new TranslatorException("Missing java info in java datamodel node" +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName());
}
return (JavaFileInfoTranslator) javaFileInfo;
}
@@ -108,7 +112,11 @@
generateCodeOfAugmentableNode(this, yangPlugin);
} catch (IOException e) {
throw new TranslatorException(
- "Failed to prepare generate code entry for case node " + getName());
+ "Failed to prepare generate code entry for case node " +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + " " + e.getLocalizedMessage());
}
}
@@ -120,7 +128,11 @@
try {
getTempJavaCodeFragmentFiles().generateJavaFile(GENERATE_INTERFACE_WITH_BUILDER, this);
} catch (IOException e) {
- throw new TranslatorException("Failed to generate code for case node " + getName());
+ throw new TranslatorException("Failed to generate code for case node " +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + " " + e.getLocalizedMessage());
}
}
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaChoiceTranslator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaChoiceTranslator.java
index 2f51b65..1c253eb 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaChoiceTranslator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaChoiceTranslator.java
@@ -17,13 +17,13 @@
import java.io.IOException;
-import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
import org.onosproject.yangutils.datamodel.javadatamodel.YangJavaChoice;
-import org.onosproject.yangutils.utils.io.YangPluginConfig;
import org.onosproject.yangutils.translator.exception.TranslatorException;
import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator;
import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
+import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
+import org.onosproject.yangutils.utils.io.YangPluginConfig;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.INTERFACE_MASK;
import static org.onosproject.yangutils.translator.tojava.YangJavaModelUtils.generateCodeAndUpdateInParent;
@@ -60,7 +60,11 @@
@Override
public JavaFileInfoTranslator getJavaFileInfo() {
if (javaFileInfo == null) {
- throw new TranslatorException("Missing java info in java datamodel node");
+ throw new TranslatorException("Missing java info in java datamodel node" +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName());
}
return (JavaFileInfoTranslator) javaFileInfo;
}
@@ -108,7 +112,11 @@
generateCodeAndUpdateInParent(this, yangPlugin, false);
} catch (IOException e) {
throw new TranslatorException(
- "Failed to prepare generate code entry for choice node " + getName());
+ "Failed to prepare generate code entry for choice node " +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + " " + e.getLocalizedMessage());
}
}
@@ -120,7 +128,11 @@
try {
getTempJavaCodeFragmentFiles().generateJavaFile(INTERFACE_MASK, this);
} catch (IOException e) {
- throw new TranslatorException("Failed to generate code for choice node " + getName());
+ throw new TranslatorException("Failed to generate code for choice node " +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + " " + e.getLocalizedMessage());
}
}
}
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaContainerTranslator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaContainerTranslator.java
index a355b01..31e51c9 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaContainerTranslator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaContainerTranslator.java
@@ -17,13 +17,13 @@
import java.io.IOException;
-import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
import org.onosproject.yangutils.datamodel.javadatamodel.YangJavaContainer;
-import org.onosproject.yangutils.utils.io.YangPluginConfig;
import org.onosproject.yangutils.translator.exception.TranslatorException;
import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator;
import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
+import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
+import org.onosproject.yangutils.utils.io.YangPluginConfig;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER;
import static org.onosproject.yangutils.translator.tojava.YangJavaModelUtils.generateCodeAndUpdateInParent;
@@ -60,7 +60,11 @@
@Override
public JavaFileInfoTranslator getJavaFileInfo() {
if (javaFileInfo == null) {
- throw new TranslatorException("Missing java info in java datamodel node");
+ throw new TranslatorException("Missing java info in java datamodel node " +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName());
}
return (JavaFileInfoTranslator) javaFileInfo;
}
@@ -108,7 +112,11 @@
generateCodeAndUpdateInParent(this, yangPlugin, false);
} catch (IOException e) {
throw new TranslatorException(
- "Failed to prepare generate code entry for container node " + getName());
+ "Failed to prepare generate code entry for container node " +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + " " + e.getLocalizedMessage());
}
}
@@ -122,7 +130,11 @@
try {
getTempJavaCodeFragmentFiles().generateJavaFile(GENERATE_INTERFACE_WITH_BUILDER, this);
} catch (IOException e) {
- throw new TranslatorException("Failed to generate code for container node " + getName());
+ throw new TranslatorException("Failed to generate code for container node " +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + " " + e.getLocalizedMessage());
}
}
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaEnumerationTranslator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaEnumerationTranslator.java
index e2fad05..da4531f 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaEnumerationTranslator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaEnumerationTranslator.java
@@ -18,13 +18,13 @@
import java.io.IOException;
-import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
import org.onosproject.yangutils.datamodel.javadatamodel.YangJavaEnumeration;
-import org.onosproject.yangutils.utils.io.YangPluginConfig;
import org.onosproject.yangutils.translator.exception.TranslatorException;
import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator;
import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
+import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
+import org.onosproject.yangutils.utils.io.YangPluginConfig;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_ENUM_CLASS;
import static org.onosproject.yangutils.translator.tojava.YangJavaModelUtils.generateCodeOfNode;
@@ -62,7 +62,11 @@
public JavaFileInfoTranslator getJavaFileInfo() {
if (javaFileInfo == null) {
- throw new TranslatorException("Missing java info in java datamodel node");
+ throw new TranslatorException("Missing java info in java datamodel node " +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName());
}
return (JavaFileInfoTranslator) javaFileInfo;
}
@@ -110,7 +114,11 @@
generateCodeOfNode(this, yangPlugin);
} catch (IOException e) {
throw new TranslatorException(
- "Failed to prepare generate code entry for enumeration node " + getName());
+ "Failed to prepare generate code entry for enumeration node " +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + " " + e.getLocalizedMessage());
}
}
@@ -124,7 +132,11 @@
try {
getTempJavaCodeFragmentFiles().generateJavaFile(GENERATE_ENUM_CLASS, this);
} catch (IOException e) {
- throw new TranslatorException("Failed to generate code for enumeration node " + getName());
+ throw new TranslatorException("Failed to generate code for enumeration node " +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + " " + e.getLocalizedMessage());
}
}
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaGroupingTranslator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaGroupingTranslator.java
index e2f55de..bd54469 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaGroupingTranslator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaGroupingTranslator.java
@@ -15,14 +15,14 @@
*/
package org.onosproject.yangutils.translator.tojava.javamodel;
-import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
import org.onosproject.yangutils.datamodel.javadatamodel.YangJavaGrouping;
-import org.onosproject.yangutils.utils.io.YangPluginConfig;
import org.onosproject.yangutils.translator.exception.InvalidNodeForTranslatorException;
import org.onosproject.yangutils.translator.exception.TranslatorException;
-import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator;
+import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
+import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
+import org.onosproject.yangutils.utils.io.YangPluginConfig;
/**
* Represents grouping information extended to support java code generation.
@@ -55,7 +55,11 @@
@Override
public JavaFileInfoTranslator getJavaFileInfo() {
if (javaFileInfo == null) {
- throw new TranslatorException("Missing java info in java datamodel node");
+ throw new TranslatorException("Missing java info in java datamodel node " +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName());
}
return (JavaFileInfoTranslator) javaFileInfo;
}
@@ -94,7 +98,11 @@
@Override
public void generateCodeEntry(YangPluginConfig yangPlugin)
throws TranslatorException {
- throw new InvalidNodeForTranslatorException();
+ InvalidNodeForTranslatorException exception = new InvalidNodeForTranslatorException();
+ exception.setFileName(this.getFileName());
+ exception.setCharPosition(this.getCharPosition());
+ exception.setLine(this.getLineNumber());
+ throw exception;
}
@Override
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaIdentityTranslator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaIdentityTranslator.java
index 073eed3..a63bca0 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaIdentityTranslator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaIdentityTranslator.java
@@ -19,15 +19,15 @@
import java.io.IOException;
import java.util.List;
-import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
import org.onosproject.yangutils.datamodel.javadatamodel.YangJavaIdentity;
-import org.onosproject.yangutils.utils.io.YangPluginConfig;
import org.onosproject.yangutils.translator.exception.TranslatorException;
import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator;
import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
+import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
import org.onosproject.yangutils.translator.tojava.JavaImportData;
import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfoTranslator;
import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
+import org.onosproject.yangutils.utils.io.YangPluginConfig;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_IDENTITY_CLASS;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER;
@@ -37,6 +37,7 @@
import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.createPackage;
import static org.onosproject.yangutils.utils.io.impl.FileSystemUtil.closeFile;
import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
+import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.validateLineLength;
/**
* Represents input information extended to support java code generation.
@@ -73,7 +74,11 @@
@Override
public JavaFileInfoTranslator getJavaFileInfo() {
if (javaFileInfo == null) {
- throw new TranslatorException("Missing java info in java datamodel node");
+ throw new TranslatorException("Missing java info in java datamodel node " +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName());
}
return (JavaFileInfoTranslator) javaFileInfo;
}
@@ -129,7 +134,11 @@
if (getBaseNode() != null && getBaseNode().getReferredIdentity() != null) {
if (!(getBaseNode().getReferredIdentity() instanceof YangJavaIdentityTranslator)) {
- throw new TranslatorException("Failed to prepare generate code entry for base node");
+ throw new TranslatorException("Failed to prepare generate code entry for base node "
+ + getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName());
}
YangJavaIdentityTranslator baseIdentity = (YangJavaIdentityTranslator) getBaseNode()
.getReferredIdentity();
@@ -146,10 +155,15 @@
File file = getFileObject(path, className, JAVA_FILE_EXTENSION, getJavaFileInfo());
initiateJavaFileGeneration(file, GENERATE_IDENTITY_CLASS, imports, this, className);
+ file = validateLineLength(file);
closeFile(file, false);
} catch (IOException e) {
throw new TranslatorException(
- "Failed to prepare generate code entry for identity node " + this.getName());
+ "Failed to prepare generate code entry for identity node " +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName());
}
}
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaInputTranslator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaInputTranslator.java
index 2d7bf2c..878a591 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaInputTranslator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaInputTranslator.java
@@ -18,13 +18,13 @@
import java.io.IOException;
-import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
import org.onosproject.yangutils.datamodel.javadatamodel.YangJavaInput;
-import org.onosproject.yangutils.utils.io.YangPluginConfig;
import org.onosproject.yangutils.translator.exception.TranslatorException;
import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator;
import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
+import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
+import org.onosproject.yangutils.utils.io.YangPluginConfig;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER;
import static org.onosproject.yangutils.translator.tojava.YangJavaModelUtils.generateCodeOfAugmentableNode;
@@ -61,7 +61,11 @@
@Override
public JavaFileInfoTranslator getJavaFileInfo() {
if (javaFileInfo == null) {
- throw new TranslatorException("missing java info in java datamodel node");
+ throw new TranslatorException("missing java info in java datamodel node " +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName());
}
return (JavaFileInfoTranslator) javaFileInfo;
}
@@ -109,7 +113,11 @@
generateCodeOfAugmentableNode(this, yangPlugin);
} catch (IOException e) {
throw new TranslatorException(
- "Failed to prepare generate code entry for input node " + getName());
+ "Failed to prepare generate code entry for input node " +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + " " + e.getLocalizedMessage());
}
}
@@ -123,7 +131,11 @@
try {
getTempJavaCodeFragmentFiles().generateJavaFile(GENERATE_INTERFACE_WITH_BUILDER, this);
} catch (IOException e) {
- throw new TranslatorException("Failed to generate code for input node " + getName());
+ throw new TranslatorException("Failed to generate code for input node " +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + " " + e.getLocalizedMessage());
}
}
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaListTranslator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaListTranslator.java
index 0ec8198..6082963 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaListTranslator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaListTranslator.java
@@ -17,13 +17,13 @@
import java.io.IOException;
-import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
import org.onosproject.yangutils.datamodel.javadatamodel.YangJavaList;
-import org.onosproject.yangutils.utils.io.YangPluginConfig;
import org.onosproject.yangutils.translator.exception.TranslatorException;
import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator;
import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
+import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
+import org.onosproject.yangutils.utils.io.YangPluginConfig;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER;
import static org.onosproject.yangutils.translator.tojava.YangJavaModelUtils.generateCodeAndUpdateInParent;
@@ -60,7 +60,11 @@
@Override
public JavaFileInfoTranslator getJavaFileInfo() {
if (javaFileInfo == null) {
- throw new TranslatorException("Missing java info in java datamodel node");
+ throw new TranslatorException("Missing java info in java datamodel node " +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName());
}
return (JavaFileInfoTranslator) javaFileInfo;
}
@@ -108,7 +112,11 @@
generateCodeAndUpdateInParent(this, yangPlugin, true);
} catch (IOException e) {
throw new TranslatorException(
- "Failed to prepare generate code entry for list node " + getName());
+ "Failed to prepare generate code entry for list node " +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + " " + e.getLocalizedMessage());
}
}
@@ -122,7 +130,11 @@
try {
getTempJavaCodeFragmentFiles().generateJavaFile(GENERATE_INTERFACE_WITH_BUILDER, this);
} catch (IOException e) {
- throw new TranslatorException("Failed to generate code for list node " + getName());
+ throw new TranslatorException("Failed to generate code for list node " +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + " " + e.getLocalizedMessage());
}
}
}
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaModuleTranslator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaModuleTranslator.java
index 0f46f76..cf1f455 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaModuleTranslator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaModuleTranslator.java
@@ -76,7 +76,11 @@
@Override
public JavaFileInfoTranslator getJavaFileInfo() {
if (javaFileInfo == null) {
- throw new TranslatorException("Missing java info in java datamodel node");
+ throw new TranslatorException("Missing java info in java datamodel node " +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName());
}
return (JavaFileInfoTranslator) javaFileInfo;
}
@@ -130,7 +134,11 @@
generateCodeOfRootNode(this, yangPlugin, modulePkg);
} catch (IOException e) {
throw new TranslatorException(
- "Failed to prepare generate code entry for module node " + getName());
+ "Failed to prepare generate code entry for module node " +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + " " + e.getLocalizedMessage());
}
}
@@ -167,7 +175,11 @@
searchAndDeleteTempDir(getJavaFileInfo().getPluginConfig().getCodeGenDir() +
getJavaFileInfo().getPackageFilePath());
} catch (IOException e) {
- throw new TranslatorException("Failed to generate code for module node " + getName());
+ throw new TranslatorException("Failed to generate code for module node " +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + " " + e.getLocalizedMessage());
}
}
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaNotificationTranslator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaNotificationTranslator.java
index a44164f..ce7f8b0 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaNotificationTranslator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaNotificationTranslator.java
@@ -73,8 +73,11 @@
public JavaFileInfoTranslator getJavaFileInfo() {
if (javaFileInfo == null) {
- throw new TranslatorException("Missing java info in java " +
- "datamodel node");
+ throw new TranslatorException("Missing java info in java datamodel node " +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName());
}
return (JavaFileInfoTranslator) javaFileInfo;
}
@@ -117,14 +120,11 @@
* @throws TranslatorException translator operation fail
*/
@Override
- public void generateCodeEntry(YangPluginConfig yangPlugin)
- throws TranslatorException {
+ public void generateCodeEntry(YangPluginConfig yangPlugin) throws TranslatorException {
/*
- * As part of the notification support the following files needs to
- * be generated.
- * 1) Subject of the notification(event), this is simple interface with
- * builder class.
+ * As part of the notification support the following files needs to be generated.
+ * 1) Subject of the notification(event), this is simple interface with builder class.
* 2) Event class extending "AbstractEvent" and defining event type enum.
* 3) Event listener interface extending "EventListener".
*
@@ -138,8 +138,11 @@
addNotificationToExtendsList();
} catch (IOException e) {
throw new TranslatorException(
- "Failed to prepare generate code entry for notification " +
- "node " + getName());
+ "Failed to prepare generate code entry for notification node " +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + " " + e.getLocalizedMessage());
}
}
@@ -174,11 +177,12 @@
try {
getTempJavaCodeFragmentFiles().generateJavaFile(GENERATE_INTERFACE_WITH_BUILDER, this);
} catch (IOException e) {
- throw new TranslatorException("Failed to generate code for " +
- "notification node " +
- getName());
+ throw new TranslatorException("Failed to generate code for notification node " +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + " " + e.getLocalizedMessage());
}
-
}
@Override
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaOutputTranslator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaOutputTranslator.java
index 2411f27..fe640ea 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaOutputTranslator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaOutputTranslator.java
@@ -18,13 +18,13 @@
import java.io.IOException;
-import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
import org.onosproject.yangutils.datamodel.javadatamodel.YangJavaOutput;
-import org.onosproject.yangutils.utils.io.YangPluginConfig;
import org.onosproject.yangutils.translator.exception.TranslatorException;
import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator;
import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
+import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
+import org.onosproject.yangutils.utils.io.YangPluginConfig;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER;
import static org.onosproject.yangutils.translator.tojava.YangJavaModelUtils.generateCodeOfAugmentableNode;
@@ -61,7 +61,11 @@
@Override
public JavaFileInfoTranslator getJavaFileInfo() {
if (javaFileInfo == null) {
- throw new TranslatorException("missing java info in java datamodel node");
+ throw new TranslatorException("missing java info in java datamodel node " +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName());
}
return (JavaFileInfoTranslator) javaFileInfo;
}
@@ -109,7 +113,11 @@
generateCodeOfAugmentableNode(this, yangPlugin);
} catch (IOException e) {
throw new TranslatorException(
- "Failed to prepare generate code entry for output node " + getName());
+ "Failed to prepare generate code entry for output node " +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + " " + e.getLocalizedMessage());
}
}
@@ -125,7 +133,11 @@
getTempJavaCodeFragmentFiles().generateJavaFile(GENERATE_INTERFACE_WITH_BUILDER, this);
} catch (IOException e) {
throw new TranslatorException(
- "Failed to prepare generate code exit for output node " + getName());
+ "Failed to prepare generate code exit for output node " +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + " " + e.getLocalizedMessage());
}
}
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaRpcTranslator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaRpcTranslator.java
index e5c775e..6e6482b 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaRpcTranslator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaRpcTranslator.java
@@ -22,13 +22,13 @@
import org.onosproject.yangutils.datamodel.YangInput;
import org.onosproject.yangutils.datamodel.YangNode;
import org.onosproject.yangutils.datamodel.YangOutput;
-import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
import org.onosproject.yangutils.datamodel.javadatamodel.YangJavaRpc;
import org.onosproject.yangutils.translator.exception.TranslatorException;
import org.onosproject.yangutils.translator.tojava.JavaAttributeInfo;
import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator;
import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
import org.onosproject.yangutils.translator.tojava.JavaFileInfoContainer;
+import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfoTranslator;
import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFilesContainer;
@@ -73,7 +73,11 @@
public JavaFileInfoTranslator getJavaFileInfo() {
if (javaFileInfo == null) {
- throw new TranslatorException("missing java info in java datamodel node");
+ throw new TranslatorException("missing java info in java datamodel node " +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName());
}
return (JavaFileInfoTranslator) javaFileInfo;
}
@@ -113,7 +117,11 @@
try {
updatePackageInfo(this, yangPlugin);
} catch (IOException e) {
- throw new TranslatorException("Failed to prepare generate code entry for RPC node " + getName());
+ throw new TranslatorException("Failed to prepare generate code entry for RPC node " +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + " " + e.getLocalizedMessage());
}
}
@@ -130,7 +138,11 @@
// Parent should be holder of rpc or notification.
if (!(parent instanceof RpcNotificationContainer)) {
- throw new TranslatorException("parent node of rpc can only be module or sub-module");
+ throw new TranslatorException("parent node of rpc can only be module or sub-module " +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName());
}
/*
@@ -151,13 +163,22 @@
} else if (yangNode instanceof YangOutput) {
javaAttributeInfoOfOutput = getChildNodeAsAttributeInParentService(yangNode, this);
} else {
- throw new TranslatorException("RPC should contain only input/output child nodes.");
+ throw new TranslatorException("RPC should contain only input/output child nodes. " +
+ yangNode.getName() + " in " +
+ yangNode.getLineNumber() + " at " +
+ yangNode.getCharPosition()
+ + " in " + yangNode.getFileName());
+
}
yangNode = yangNode.getNextSibling();
}
if (!(parent instanceof TempJavaCodeFragmentFilesContainer)) {
- throw new TranslatorException("missing parent temp file handle");
+ throw new TranslatorException("missing parent temp file handle " +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName());
}
/*
@@ -170,7 +191,11 @@
((JavaFileInfoContainer) parent).getJavaFileInfo().getPluginConfig(), getName());
} catch (IOException e) {
- throw new TranslatorException("Failed to generate code for RPC node " + getName());
+ throw new TranslatorException("Failed to generate code for RPC node " +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + " " + e.getLocalizedMessage());
}
// No file will be generated during RPC exit.
}
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaSubModuleTranslator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaSubModuleTranslator.java
index 009a86f..4ab4be8 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaSubModuleTranslator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaSubModuleTranslator.java
@@ -23,11 +23,11 @@
import org.onosproject.yangutils.datamodel.YangModule;
import org.onosproject.yangutils.datamodel.YangNode;
import org.onosproject.yangutils.datamodel.YangNotification;
-import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
import org.onosproject.yangutils.datamodel.javadatamodel.YangJavaSubModule;
import org.onosproject.yangutils.translator.exception.TranslatorException;
import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator;
import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
+import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
import org.onosproject.yangutils.utils.io.YangPluginConfig;
@@ -80,7 +80,11 @@
@Override
public JavaFileInfoTranslator getJavaFileInfo() {
if (javaFileInfo == null) {
- throw new TranslatorException("Missing java info in java datamodel node");
+ throw new TranslatorException("Missing java info in java datamodel node " +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName());
}
return (JavaFileInfoTranslator) javaFileInfo;
}
@@ -144,7 +148,11 @@
generateCodeOfRootNode(this, yangPlugin, subModulePkg);
} catch (IOException e) {
throw new TranslatorException(
- "failed to prepare generate code entry for submodule node " + getName());
+ "failed to prepare generate code entry for submodule node " +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + " " + e.getLocalizedMessage());
}
}
@@ -181,7 +189,11 @@
searchAndDeleteTempDir(getJavaFileInfo().getPluginConfig().getCodeGenDir() +
getJavaFileInfo().getPackageFilePath());
} catch (IOException e) {
- throw new TranslatorException("Failed to generate code for submodule node " + getName());
+ throw new TranslatorException("Failed to generate code for submodule node " +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + " " + e.getLocalizedMessage());
}
}
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaTypeDefTranslator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaTypeDefTranslator.java
index 6475af3..1f043cf 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaTypeDefTranslator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaTypeDefTranslator.java
@@ -19,14 +19,14 @@
import org.onosproject.yangutils.datamodel.YangDerivedInfo;
import org.onosproject.yangutils.datamodel.YangType;
-import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
import org.onosproject.yangutils.datamodel.javadatamodel.YangJavaTypeDef;
-import org.onosproject.yangutils.utils.io.YangPluginConfig;
import org.onosproject.yangutils.translator.exception.InvalidNodeForTranslatorException;
import org.onosproject.yangutils.translator.exception.TranslatorException;
import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator;
import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
+import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
+import org.onosproject.yangutils.utils.io.YangPluginConfig;
import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.DERIVED;
import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.LEAFREF;
@@ -66,7 +66,11 @@
public JavaFileInfoTranslator getJavaFileInfo() {
if (javaFileInfo == null) {
- throw new TranslatorException("Missing java info in java datamodel node");
+ throw new TranslatorException("Missing java info in java datamodel node " +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName());
}
return (JavaFileInfoTranslator) javaFileInfo;
}
@@ -111,19 +115,25 @@
@Override
public void generateCodeEntry(YangPluginConfig yangPlugin) throws TranslatorException {
YangType typeInTypeDef = this.getTypeDefBaseType();
+ InvalidNodeForTranslatorException exception = new InvalidNodeForTranslatorException();
+ exception.setFileName(this.getFileName());
+ exception.setCharPosition(this.getCharPosition());
+ exception.setLine(this.getLineNumber());
if (typeInTypeDef.getDataType() == DERIVED) {
YangDerivedInfo derivedInfo = (YangDerivedInfo) typeInTypeDef.getDataTypeExtendedInfo();
if (derivedInfo.getEffectiveBuiltInType() == LEAFREF) {
- throw new InvalidNodeForTranslatorException();
+ throw exception;
}
} else if (typeInTypeDef.getDataType() == LEAFREF) {
- throw new InvalidNodeForTranslatorException();
+ throw exception;
}
try {
generateCodeOfNode(this, yangPlugin);
} catch (IOException e) {
throw new TranslatorException(
- "Failed to prepare generate code entry for typedef node " + getName());
+ "Failed to prepare generate code entry for typedef node " + getName()
+ + "in " + getLineNumber() + " at " + getCharPosition() + " in " + getFileName()
+ + " " + e.getLocalizedMessage());
}
}
@@ -138,7 +148,10 @@
try {
getTempJavaCodeFragmentFiles().generateJavaFile(GENERATE_TYPEDEF_CLASS, this);
} catch (IOException e) {
- throw new TranslatorException("Failed to generate code for typedef node " + getName());
+ throw new TranslatorException(
+ "Failed to prepare generate code for typedef node " + getName()
+ + "in " + getLineNumber() + " at " + getCharPosition() + " in " + getFileName()
+ + " " + e.getLocalizedMessage());
}
}
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaTypeTranslator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaTypeTranslator.java
index 911e0c4..93e4858 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaTypeTranslator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaTypeTranslator.java
@@ -56,7 +56,11 @@
String classPkg = getJavaImportPackage(this,
false, conflictResolver);
if (classPkg == null) {
- throw new TranslatorException("import package cannot be null when the class is used");
+ throw new TranslatorException("import package cannot be null when the class is used " +
+ getDataTypeName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName());
}
importInfo.setPkgInfo(classPkg);
} else {
@@ -66,7 +70,11 @@
*/
String dataTypeName = getJavaDataType(this);
if (dataTypeName == null) {
- throw new TranslatorException("not supported data type");
+ throw new TranslatorException("not supported data type " +
+ getDataTypeName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName());
}
importInfo.setClassInfo(dataTypeName);
}
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaUnionTranslator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaUnionTranslator.java
index ce701af..60f200f 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaUnionTranslator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaUnionTranslator.java
@@ -17,13 +17,13 @@
import java.io.IOException;
-import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
import org.onosproject.yangutils.datamodel.javadatamodel.YangJavaUnion;
-import org.onosproject.yangutils.utils.io.YangPluginConfig;
import org.onosproject.yangutils.translator.exception.TranslatorException;
import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator;
import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
+import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
+import org.onosproject.yangutils.utils.io.YangPluginConfig;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_UNION_CLASS;
import static org.onosproject.yangutils.translator.tojava.YangJavaModelUtils.generateCodeOfNode;
@@ -60,7 +60,10 @@
@Override
public JavaFileInfoTranslator getJavaFileInfo() {
if (javaFileInfo == null) {
- throw new RuntimeException("Missing java info in java datamodel node");
+ throw new RuntimeException("Missing java info in java datamodel node " + getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName());
}
return (JavaFileInfoTranslator) javaFileInfo;
}
@@ -108,7 +111,10 @@
generateCodeOfNode(this, yangPlugin);
} catch (IOException e) {
throw new TranslatorException(
- "Failed to prepare generate code entry for union node " + getName());
+ "Failed to prepare generate code entry for union node " + getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + " " + e.getLocalizedMessage());
}
}
@@ -123,7 +129,10 @@
try {
getTempJavaCodeFragmentFiles().generateJavaFile(GENERATE_UNION_CLASS, this);
} catch (IOException e) {
- throw new TranslatorException("Failed to generate code for union node " + getName());
+ throw new TranslatorException("Failed to generate code for union node " + getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + " " + e.getLocalizedMessage());
}
}
}
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaUsesTranslator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaUsesTranslator.java
index d1b8220..a213faf 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaUsesTranslator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaUsesTranslator.java
@@ -55,7 +55,10 @@
@Override
public JavaFileInfoTranslator getJavaFileInfo() {
if (javaFileInfo == null) {
- throw new TranslatorException("Missing java info in java datamodel node");
+ throw new TranslatorException("Missing java info in java datamodel node " + getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName());
}
return (JavaFileInfoTranslator) javaFileInfo;
}
@@ -93,7 +96,11 @@
@Override
public void generateCodeEntry(YangPluginConfig yangPlugin)
throws TranslatorException {
- throw new InvalidNodeForTranslatorException();
+ InvalidNodeForTranslatorException exception = new InvalidNodeForTranslatorException();
+ exception.setFileName(this.getFileName());
+ exception.setCharPosition(this.getCharPosition());
+ exception.setLine(this.getLineNumber());
+ throw exception;
}
@Override
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/ClassDefinitionGenerator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/ClassDefinitionGenerator.java
index 60191de..d65907d 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/ClassDefinitionGenerator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/ClassDefinitionGenerator.java
@@ -23,9 +23,9 @@
import org.onosproject.yangutils.datamodel.YangNode;
import org.onosproject.yangutils.datamodel.YangNotification;
import org.onosproject.yangutils.datamodel.YangSubModule;
-import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
import org.onosproject.yangutils.translator.exception.TranslatorException;
import org.onosproject.yangutils.translator.tojava.JavaFileInfoContainer;
+import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfoTranslator;
import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFilesContainer;
@@ -247,13 +247,21 @@
*/
private static String getIdentityClassDefinition(String yangName, YangNode curNode) {
if (!(curNode instanceof YangIdentity)) {
- throw new TranslatorException("Expected java identity instance node");
+ throw new TranslatorException("Expected java identity instance node " +
+ curNode.getName() + " in " +
+ curNode.getLineNumber() + " at " +
+ curNode.getCharPosition()
+ + " in " + curNode.getFileName());
}
YangIdentity identity = (YangIdentity) curNode;
if (identity.getBaseNode() != null) {
YangIdentity baseIdentity = identity.getBaseNode().getReferredIdentity();
if (baseIdentity == null) {
- throw new TranslatorException("Expected java identity instance node");
+ throw new TranslatorException("Expected java identity instance node " +
+ curNode.getName() + " in " +
+ curNode.getLineNumber() + " at " +
+ curNode.getCharPosition()
+ + " in " + curNode.getFileName());
}
JavaFileInfoTranslator fileInfo = ((JavaFileInfoContainer) baseIdentity).getJavaFileInfo();
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaCodeSnippetGen.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaCodeSnippetGen.java
index 5c7f463..f1f258b 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaCodeSnippetGen.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaCodeSnippetGen.java
@@ -412,4 +412,12 @@
return " this.onosYangNodeOperationType = builderObject.onosYangNodeOperationType();\n";
}
+ /**
+ * Returns attribute in constructor for yang augmented info map.
+ *
+ * @return attribute in constructor for yang augmented info map
+ */
+ static String getYangAugmentedMapObjectForConstruct() {
+ return " this.yangAugmentedInfoMap = builderObject.yangAugmentedInfoMap();\n";
+ }
}
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGenerator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGenerator.java
index ec671aa..ab37d7c 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGenerator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGenerator.java
@@ -281,7 +281,8 @@
import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.trimAtLast;
import static org.onosproject.yangutils.utils.io.impl.YangIoUtils
.validateLineLength;
-
+import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen
+ .getYangAugmentedMapObjectForConstruct;
import static java.util.Collections.sort;
/**
@@ -806,6 +807,9 @@
constructor =
constructor + getOperationAttributeForConstructor();
}
+ if (curNode instanceof YangAugmentableNode) {
+ constructor = constructor + getYangAugmentedMapObjectForConstruct();
+ }
methods.add(
constructor + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET +
NEW_LINE);
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGeneratorUtils.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGeneratorUtils.java
index a591435..09bb72b 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGeneratorUtils.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaFileGeneratorUtils.java
@@ -334,6 +334,12 @@
String pkg, YangPluginConfig pluginConfig)
throws IOException {
+ if (file.exists()) {
+ throw new IOException(" file " + file.getName() + " is already generated." +
+ "please check whether multiple yang files has same module/submodule \"name\" and \"namespace\"" +
+ "or You may have generated code of previous build present in your directory.");
+ }
+
boolean isFileCreated;
try {
isFileCreated = file.createNewFile();
@@ -360,6 +366,11 @@
YangNode curNode, String className)
throws IOException {
+ if (file.exists()) {
+ throw new IOException(" file " + file.getName() + " is already generated." +
+ "please check whether multiple yang files has same module/submodule \"name\" and \"namespace\"" +
+ "or You may have generated code of previous build present in your directory.");
+ }
boolean isFileCreated;
try {
isFileCreated = file.createNewFile();
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaIdentifierSyntax.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaIdentifierSyntax.java
index 9836c5c..8c14295 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaIdentifierSyntax.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/JavaIdentifierSyntax.java
@@ -26,10 +26,10 @@
import java.util.List;
import org.onosproject.yangutils.datamodel.YangNode;
-import org.onosproject.yangutils.utils.io.YangToJavaNamingConflictUtil;
import org.onosproject.yangutils.translator.exception.TranslatorException;
import org.onosproject.yangutils.translator.tojava.JavaFileInfoContainer;
import org.onosproject.yangutils.translator.tojava.JavaFileInfoTranslator;
+import org.onosproject.yangutils.utils.io.YangToJavaNamingConflictUtil;
import static org.onosproject.yangutils.datamodel.utils.DataModelUtils.getParentNodeInGenCode;
import static org.onosproject.yangutils.utils.UtilConstants.COLAN;
@@ -205,7 +205,11 @@
*/
public static void createPackage(YangNode yangNode) throws IOException {
if (!(yangNode instanceof JavaFileInfoContainer)) {
- throw new TranslatorException("current node must have java file info");
+ throw new TranslatorException("current node must have java file info " +
+ yangNode.getName() + " in " +
+ yangNode.getLineNumber() + " at " +
+ yangNode.getCharPosition()
+ + " in " + yangNode.getFileName());
}
String pkgInfo;
JavaFileInfoTranslator javaFileInfo = ((JavaFileInfoContainer) yangNode).getJavaFileInfo();
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGenerator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGenerator.java
index 0ab080e..d044456 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGenerator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/MethodsGenerator.java
@@ -1356,7 +1356,11 @@
case DERIVED:
return targetDataType + PERIOD + FROM_STRING_METHOD_NAME;
default:
- throw new TranslatorException("given data type is not supported.");
+ throw new TranslatorException("given data type is not supported. " +
+ yangType.getDataTypeName() + " in " +
+ yangType.getLineNumber() + " at " +
+ yangType.getCharPosition()
+ + " in " + yangType.getFileName());
}
}
@@ -1432,7 +1436,8 @@
} else {
method = method + EIGHT_SPACE_INDENTATION
+ RETURN + SPACE + VALUE + SPACE + DIAMOND_CLOSE_BRACKET + EQUAL + SPACE + MIN_RANGE + SPACE + AND +
- AND + SPACE + VALUE + DIAMOND_OPEN_BRACKET + EQUAL + SPACE + MAX_RANGE + SEMI_COLAN + NEW_LINE;
+ AND + SPACE + VALUE + SPACE + DIAMOND_OPEN_BRACKET + EQUAL + SPACE + MAX_RANGE + SEMI_COLAN +
+ NEW_LINE;
}
return method + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET + NEW_LINE;
}
diff --git a/plugin/src/main/java/org/onosproject/yangutils/utils/io/impl/YangIoUtils.java b/plugin/src/main/java/org/onosproject/yangutils/utils/io/impl/YangIoUtils.java
index 8a578c3..6ac0581 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/utils/io/impl/YangIoUtils.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/utils/io/impl/YangIoUtils.java
@@ -43,6 +43,7 @@
import static org.onosproject.yangutils.utils.UtilConstants.JAVA_KEY_WORDS;
import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
import static org.onosproject.yangutils.utils.UtilConstants.ONE;
+import static org.onosproject.yangutils.utils.UtilConstants.OPEN_CURLY_BRACKET;
import static org.onosproject.yangutils.utils.UtilConstants.OPEN_PARENTHESIS;
import static org.onosproject.yangutils.utils.UtilConstants.ORG;
import static org.onosproject.yangutils.utils.UtilConstants.PACKAGE;
@@ -77,8 +78,8 @@
*/
public final class YangIoUtils {
- private static final int LINE_SIZE = 116;
- private static final int SUB_LINE_SIZE = 114;
+ private static final int LINE_SIZE = 118;
+ private static final int SUB_LINE_SIZE = 116;
private static final int ZERO = 0;
/**
@@ -311,7 +312,7 @@
try {
appendFileContents(appendFile, srcFile);
} catch (IOException e) {
- throw new IOException("Failed to append " + appendFile + " in " + srcFile);
+ throw new IOException("Failed to merge " + appendFile + " in " + srcFile);
}
}
@@ -437,8 +438,31 @@
StringBuilder tempBuilder = new StringBuilder();
String append;
for (String str : strArray) {
- append = str + string;
- tempBuilder.append(append);
+ if (strArray[strArray.length - 1].contains(OPEN_CURLY_BRACKET)) {
+ if (str.equals(strArray[strArray.length - 2])
+ && !str.equals(strArray[0])
+ && tempBuilder.length() < SUB_LINE_SIZE) {
+ String tempString = stringBuilder.toString();
+ stringBuilder.delete(ZERO, stringBuilder.length());
+ tempString = trimAtLast(tempString, string);
+ stringBuilder.append(tempString);
+ if (string.equals(PERIOD)) {
+ append = NEW_LINE + TWELVE_SPACE_INDENTATION + PERIOD + str + string;
+ } else {
+ append = NEW_LINE + TWELVE_SPACE_INDENTATION + str + string;
+ }
+ stringBuilder.append(append);
+ append = EMPTY_STRING;
+ tempBuilder.delete(ZERO, tempBuilder.length());
+ tempBuilder.append(TWELVE_SPACE_INDENTATION);
+ } else {
+ append = str + string;
+ tempBuilder.append(append);
+ }
+ } else {
+ append = str + string;
+ tempBuilder.append(append);
+ }
if (tempBuilder.length() > lineSize) {
String tempString = stringBuilder.toString();
stringBuilder.delete(ZERO, stringBuilder.length());