[ONOS-5141],[ONOS-5142],[ONOS-5165],[ONOS-4881],[ONOS-4889],[ONOS-5104],[ONOS-5138] defect fixes
Change-Id: I435dc0cf9afae7230fc98b57f33af104e0e38e67
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/DefaultLocationInfo.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/DefaultLocationInfo.java
new file mode 100644
index 0000000..727aeec
--- /dev/null
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/DefaultLocationInfo.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright 2016-present Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.onosproject.yangutils.datamodel;
+
+/**
+ * Represents the implementation of location info.
+ */
+public class DefaultLocationInfo implements LocationInfo {
+
+ private transient int lineNumber;
+ private transient int charPosition;
+ private transient String fileName;
+
+ public DefaultLocationInfo() {
+ }
+
+ @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;
+ }
+
+ @Override
+ public String getFileName() {
+ return fileName;
+ }
+
+ @Override
+ public void setFileName(String name) {
+ this.fileName = name;
+ }
+}
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/LocationInfo.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/LocationInfo.java
index edd8849..d5dbbde 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/LocationInfo.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/LocationInfo.java
@@ -50,4 +50,18 @@
* @param charPositionInLine character position of YANG construct in file
*/
void setCharPosition(int charPositionInLine);
+
+ /**
+ * Returns YANG file name.
+ *
+ * @return YANG file name
+ */
+ String getFileName();
+
+ /**
+ * Sets YANG file name
+ *
+ * @param name YANG file name
+ */
+ void setFileName(String name);
}
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangAppDataStructure.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangAppDataStructure.java
index d987ad4..9514a50 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangAppDataStructure.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangAppDataStructure.java
@@ -26,7 +26,7 @@
/**
* Represents data model node to maintain information defined in YANG app-data-structure.
*/
-public class YangAppDataStructure
+public class YangAppDataStructure extends DefaultLocationInfo
implements Parsable, Serializable {
private static final long serialVersionUID = 806201602L;
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangAppErrorInfo.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangAppErrorInfo.java
index 213dccf..3b72e37 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangAppErrorInfo.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangAppErrorInfo.java
@@ -21,7 +21,7 @@
/**
* Represents data model to maintain yang app error information.
*/
-public class YangAppErrorInfo implements Serializable {
+public class YangAppErrorInfo extends DefaultLocationInfo implements Serializable {
private static final long serialVersionUID = 807201693L;
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangAppExtended.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangAppExtended.java
index 5423361..df5057b 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangAppExtended.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangAppExtended.java
@@ -25,7 +25,7 @@
/**
* Represents data model node to maintain information defined in YANG extended name.
*/
-public class YangAppExtended
+public class YangAppExtended extends DefaultLocationInfo
implements Parsable, Serializable {
private static final long serialVersionUID = 806201602L;
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangAtomicPath.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangAtomicPath.java
index f0bb617..14ff001 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangAtomicPath.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangAtomicPath.java
@@ -21,7 +21,7 @@
/**
* Representation of data model node to maintain absolute path defined in YANG path-arg.
*/
-public class YangAtomicPath implements Serializable {
+public class YangAtomicPath extends DefaultLocationInfo implements Serializable {
private static final long serialVersionUID = 806201688L;
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangAugment.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangAugment.java
index 1d4f2e9..d381fd4 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangAugment.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangAugment.java
@@ -260,8 +260,11 @@
public void detectSelfCollision(String identifierName, YangConstructType dataType)
throws DataModelException {
if (getName().equals(identifierName)) {
- throw new DataModelException("YANG file error: Duplicate input identifier detected, same as input \""
- + getName() + "\"");
+ throw new DataModelException("YANG file error: Duplicate input identifier detected, same as input \"" +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition() +
+ " in " + getFileName() + "\"");
}
}
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangBase.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangBase.java
index 8d118d2..0d71d32 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangBase.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangBase.java
@@ -15,11 +15,11 @@
*/
package org.onosproject.yangutils.datamodel;
+import java.io.Serializable;
+
import org.onosproject.yangutils.datamodel.exceptions.DataModelException;
import org.onosproject.yangutils.datamodel.utils.ResolvableStatus;
-import java.io.Serializable;
-
/**
* Reference RFC 6020.
*
@@ -39,7 +39,7 @@
/**
* Represents data model node to maintain information defined in YANG base.
*/
- public class YangBase implements Resolvable, Serializable {
+public class YangBase extends DefaultLocationInfo implements Resolvable, Serializable {
private static final long serialVersionUID = 806201693L;
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangBelongsTo.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangBelongsTo.java
index 9cb8dde..85d7652 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangBelongsTo.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangBelongsTo.java
@@ -51,7 +51,7 @@
/**
* Represents the belongs-to data type information.
*/
-public class YangBelongsTo implements Parsable, LocationInfo, Serializable {
+public class YangBelongsTo extends DefaultLocationInfo implements Parsable, Serializable {
private static final long serialVersionUID = 806201639L;
@@ -77,12 +77,6 @@
*/
private String prefix;
- // Error Line number.
- private transient int lineNumber;
-
- // Error character position.
- private transient int charPosition;
-
/**
* Create a belongs to object.
*/
@@ -174,26 +168,6 @@
// TODO auto-generated method stub, to be implemented by parser
}
- @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) {
- charPosition = charPositionInLine;
- }
-
/**
* Links the belongs to with a module.
*
@@ -211,7 +185,10 @@
}
}
DataModelException exception = new DataModelException("YANG file error : Module " + belongsToModuleName +
- "to which sub-module belongs to is not found.");
+ "to which sub-module belongs to is not found. " + " in " +
+ getLineNumber() + " at " +
+ getCharPosition() +
+ " in " + getFileName());
exception.setLine(getLineNumber());
exception.setCharPosition(getCharPosition());
throw exception;
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangBinary.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangBinary.java
index a752a80..47b47d0 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangBinary.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangBinary.java
@@ -28,7 +28,8 @@
* The binary built-in type represents any binary data,
* i.e., a sequence of octets.
*/
-public class YangBinary implements YangBuiltInDataTypeInfo<YangBinary>, Serializable, Comparable<YangBinary> {
+public class YangBinary extends DefaultLocationInfo implements YangBuiltInDataTypeInfo<YangBinary>,
+ Serializable, Comparable<YangBinary> {
private static final long serialVersionUID = 2106201608L;
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangBit.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangBit.java
index 5db6b54..1384fbe 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangBit.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangBit.java
@@ -47,7 +47,7 @@
/**
* Represents the bit data type information.
*/
-public class YangBit implements YangCommonInfo, Parsable, Serializable {
+public class YangBit extends DefaultLocationInfo implements YangCommonInfo, Parsable, Serializable {
private static final long serialVersionUID = 806201640L;
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangBits.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangBits.java
index d383890..89562d1 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangBits.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangBits.java
@@ -37,7 +37,7 @@
/**
* Represents the bits data type information.
*/
-public class YangBits implements Parsable, Serializable {
+public class YangBits extends DefaultLocationInfo implements Parsable, Serializable {
private static final long serialVersionUID = 806201641L;
private static final String SPACE = " ";
@@ -105,7 +105,11 @@
bit = bitNameMap.get(bitName);
if (bit == null) {
throw new DataModelException("YANG file error: Unable to find " +
- "corresponding bit position for bit name: " + bitName);
+ "corresponding bit position for bit name: " + bitName +
+ " in " +
+ getLineNumber() + " at " +
+ getCharPosition() +
+ " in " + getFileName());
}
bitDataSet.set(bit.getPosition());
}
@@ -176,11 +180,17 @@
public void addBitInfo(YangBit bitInfo) throws DataModelException {
if (bitNameMap.put(bitInfo.getBitName(), bitInfo) != null) {
throw new DataModelException("YANG file error: Duplicate bit name detected, same as bit name \""
- + bitInfo.getBitName() + "\"");
+ + bitInfo.getBitName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition() +
+ " in " + getFileName() + "\"");
}
if (bitPositionMap.put(bitInfo.getPosition(), bitInfo) != null) {
throw new DataModelException("YANG file error: Duplicate bit position detected, same as bit position \""
- + bitInfo.getPosition() + "\"");
+ + bitInfo.getPosition() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition() +
+ " in " + getFileName() + "\"");
}
}
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangCase.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangCase.java
index 38f4e01..7e6d875 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangCase.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangCase.java
@@ -368,7 +368,10 @@
throws DataModelException {
if (!(getParent() instanceof YangChoice || getParent() instanceof YangAugment)) {
throw new DataModelException("Internal Data Model Tree Error: Invalid/Missing holder in case " +
- getName());
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition() +
+ " in " + getFileName());
}
// Traverse up in tree to ask parent choice start collision detection.
((CollisionDetector) getParent()).detectCollidingChild(identifierName, dataType);
@@ -381,7 +384,10 @@
if (dataType == CASE_DATA) {
if (getName().equals(identifierName)) {
throw new DataModelException("YANG File Error: Identifier collision detected in case \"" +
- getName() + "\"");
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition() +
+ " in " + getFileName() + "\"");
}
return;
}
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangCompilerAnnotation.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangCompilerAnnotation.java
index 1aa2dfa..3719a98 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangCompilerAnnotation.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangCompilerAnnotation.java
@@ -28,7 +28,7 @@
/**
* Represents data model node to maintain information defined in YANG compiler-annotation.
*/
-public class YangCompilerAnnotation
+public class YangCompilerAnnotation extends DefaultLocationInfo
implements Parsable, YangXPathResolver, Resolvable, Serializable {
private static final long serialVersionUID = 806201602L;
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangContainer.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangContainer.java
index 606c7f7..16f826a 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangContainer.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangContainer.java
@@ -16,15 +16,15 @@
package org.onosproject.yangutils.datamodel;
+import org.onosproject.yangutils.datamodel.exceptions.DataModelException;
+import org.onosproject.yangutils.datamodel.utils.Parsable;
+import org.onosproject.yangutils.datamodel.utils.YangConstructType;
+
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
-import org.onosproject.yangutils.datamodel.exceptions.DataModelException;
-import org.onosproject.yangutils.datamodel.utils.Parsable;
-import org.onosproject.yangutils.datamodel.utils.YangConstructType;
-
import static org.onosproject.yangutils.datamodel.utils.DataModelUtils.detectCollidingChildUtil;
/*-
@@ -415,7 +415,10 @@
for (YangLeaf leaf : leaves) {
if (leaf.isConfig()) {
throw new DataModelException("If a container has \"config\" set to \"false\", no node underneath " +
- "it can have \"config\" set to \"true\".");
+ "it can have \"config\" set to \"true\"." + getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition() +
+ " in " + getFileName() + "\"");
}
}
}
@@ -424,7 +427,11 @@
for (YangLeafList leafList : leafLists) {
if (leafList.isConfig()) {
throw new DataModelException("If a container has \"config\" set to \"false\", no node underneath " +
- "it can have \"config\" set to \"true\".");
+ "it can have \"config\" set to \"true\"." +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition() +
+ " in " + getFileName() + "\"");
}
}
}
@@ -441,8 +448,11 @@
public void detectSelfCollision(String identifierName, YangConstructType dataType)
throws DataModelException {
if (getName().equals(identifierName)) {
- throw new DataModelException("YANG file error: Duplicate input identifier detected, same as container \""
- + getName() + "\"");
+ throw new DataModelException("YANG file error: Duplicate input identifier detected, same as container \"" +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition() +
+ " in " + getFileName() + "\"");
}
}
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangDecimal64.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangDecimal64.java
index a4c40b1..2c8fa80 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangDecimal64.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangDecimal64.java
@@ -31,7 +31,7 @@
/**
* Represents YANG decimal 64.
*/
-public class YangDecimal64<T>
+public class YangDecimal64<T> extends DefaultLocationInfo
implements YangBuiltInDataTypeInfo<YangDecimal64>, Parsable, Serializable, Comparable<YangDecimal64> {
private static final long serialVersionUID = 8006201668L;
@@ -247,12 +247,21 @@
}
// If range is not matched then throw error
if (!isMatched) {
- throw new DataModelException("YANG file error : decimal64 validation failed.");
+ throw new DataModelException("YANG file error : decimal64 validation failed. " +
+ " in " +
+ getLineNumber() + " at " +
+ getCharPosition() +
+ " in " + getFileName() + "\"");
}
} else {
// Check value is in fraction-digits decimal64 value range
if (!FractionDigits.isValueInDecimal64Range(this.value, getFractionDigit())) {
- throw new DataModelException("YANG file error : decimal64 validation failed.");
+ throw new DataModelException("YANG file error : decimal64 validation failed. " +
+ " in " +
+ getLineNumber() + " at " +
+ getCharPosition() +
+ " in " + getFileName() + "\"");
+
}
}
}
@@ -274,13 +283,21 @@
while (rangeListIterator.hasNext()) {
YangRangeInterval rangeInterval = rangeListIterator.next();
if (!(FractionDigits.isValueInDecimal64Range(((YangDecimal64) rangeInterval.getStartValue()).getValue(),
- getFractionDigit()))) {
- throw new DataModelException("YANG file error : range validation failed.");
+ getFractionDigit()))) {
+ throw new DataModelException("YANG file error : range validation failed. " +
+ " in " +
+ getLineNumber() + " at " +
+ getCharPosition() +
+ " in " + getFileName() + "\"");
}
if (!(FractionDigits.isValueInDecimal64Range(((YangDecimal64) rangeInterval.getEndValue()).getValue(),
- getFractionDigit()))) {
- throw new DataModelException("YANG file error : range validation failed.");
+ getFractionDigit()))) {
+ throw new DataModelException("YANG file error : range validation failed. " +
+ " in " +
+ getLineNumber() + " at " +
+ getCharPosition() +
+ " in " + getFileName() + "\"");
}
}
}
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangDerivedInfo.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangDerivedInfo.java
index f7d53cc..f766271 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangDerivedInfo.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangDerivedInfo.java
@@ -46,8 +46,8 @@
*
* @param <T> extended information.
*/
-public class YangDerivedInfo<T>
- implements LocationInfo, Cloneable, Serializable {
+public class YangDerivedInfo<T> extends DefaultLocationInfo
+ implements Cloneable, Serializable {
private static final long serialVersionUID = 806201641L;
@@ -64,16 +64,6 @@
private T resolvedExtendedInfo;
/**
- * Line number of pattern restriction in YANG file.
- */
- private transient int lineNumber;
-
- /**
- * Position of pattern restriction in line.
- */
- private transient int charPositionInLine;
-
- /**
* Effective built-in type, requried in case type of typedef is again a
* derived type. This information is to be added during linking.
*/
@@ -133,26 +123,6 @@
this.resolvedExtendedInfo = resolvedExtendedInfo;
}
- @Override
- public int getLineNumber() {
- return lineNumber;
- }
-
- @Override
- public int getCharPosition() {
- return charPositionInLine;
- }
-
- @Override
- public void setLineNumber(int lineNumber) {
- this.lineNumber = lineNumber;
- }
-
- @Override
- public void setCharPosition(int charPositionInLine) {
- this.charPositionInLine = charPositionInLine;
- }
-
/**
* Returns the length restriction string.
*
@@ -268,7 +238,10 @@
} else {
if (!(baseType.getDataTypeExtendedInfo() instanceof YangRangeRestriction)) {
throw new DataModelException("Linker error: Referred typedef restriction info is of invalid " +
- "type.");
+ "type." + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + "\"");
}
resolveRangeRestriction((YangRangeRestriction) baseType.getDataTypeExtendedInfo());
/*
@@ -294,7 +267,10 @@
} else {
if (!(baseType.getDataTypeExtendedInfo() instanceof YangStringRestriction)) {
throw new DataModelException("Linker error: Referred typedef restriction info is of invalid " +
- "type.");
+ "type." + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + "\"");
}
resolveStringRestriction((YangStringRestriction) baseType.getDataTypeExtendedInfo());
/*
@@ -316,7 +292,10 @@
} else {
if (!(baseType.getDataTypeExtendedInfo() instanceof YangRangeRestriction)) {
throw new DataModelException("Linker error: Referred typedef restriction info is of invalid " +
- "type.");
+ "type." + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + "\"");
}
resolveBinaryRestriction((YangRangeRestriction) baseType.getDataTypeExtendedInfo());
/*
@@ -340,7 +319,10 @@
if (!(((YangDecimal64) baseType.getDataTypeExtendedInfo())
.getRangeRestrictedExtendedInfo() instanceof YangRangeRestriction)) {
throw new DataModelException("Linker error: Referred typedef restriction info is" +
- " of invalid type.");
+ " of invalid type." + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + "\"");
}
resolveRangeRestriction((YangRangeRestriction) ((YangDecimal64) baseType
.getDataTypeExtendedInfo()).getRangeRestrictedExtendedInfo());
@@ -353,7 +335,11 @@
}
} else {
- throw new DataModelException("Linker error: Unable to find type extended info for decimal64.");
+ throw new DataModelException("Linker error: Unable to find type extended info for decimal64." +
+ "" + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + "\"");
}
}
}
@@ -368,12 +354,20 @@
&& getPatternRestriction() == null) {
return RESOLVED;
} else {
- throw new DataModelException("YANG file error: Restrictions can't be applied to a given type");
+ throw new DataModelException("YANG file error: Restrictions can't be applied to a given type "
+ + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + "\"");
}
}
// Throw exception for unsupported types
- throw new DataModelException("Linker error: Unable to process the derived type.");
+ throw new DataModelException("Linker error: Unable to process the derived type. "
+ + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + "\"");
}
/**
@@ -389,7 +383,11 @@
//Check whether the referred typedef is resolved.
if (baseType.getResolvableStatus() != INTRA_FILE_RESOLVED && baseType.getResolvableStatus() != RESOLVED) {
- throw new DataModelException("Linker Error: Referred typedef is not resolved for type.");
+ throw new DataModelException("Linker Error: Referred typedef is not resolved for type."
+ + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + "\"");
}
/*
@@ -418,7 +416,10 @@
} else {
if (!(refDerivedInfo.getResolvedExtendedInfo() instanceof YangRangeRestriction)) {
throw new DataModelException("Linker error: Referred typedef restriction info is of invalid " +
- "type.");
+ "type." + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + "\"");
}
resolveRangeRestriction((YangRangeRestriction) refDerivedInfo.getResolvedExtendedInfo());
/*
@@ -444,7 +445,10 @@
} else {
if (!(refDerivedInfo.getResolvedExtendedInfo() instanceof YangStringRestriction)) {
throw new DataModelException("Linker error: Referred typedef restriction info is of invalid " +
- "type.");
+ "type." + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + "\"");
}
resolveStringRestriction((YangStringRestriction) refDerivedInfo.getResolvedExtendedInfo());
/*
@@ -466,7 +470,10 @@
} else {
if (!(refDerivedInfo.getResolvedExtendedInfo() instanceof YangRangeRestriction)) {
throw new DataModelException("Linker error: Referred typedef restriction info is of invalid " +
- "type.");
+ "type." + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + "\"");
}
resolveBinaryRestriction((YangRangeRestriction) refDerivedInfo.getResolvedExtendedInfo());
/*
@@ -488,7 +495,10 @@
} else {
if (!(refDerivedInfo.getResolvedExtendedInfo() instanceof YangRangeRestriction)) {
throw new DataModelException("Linker error: Referred typedef restriction info is of invalid " +
- "type.");
+ "type." + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + "\"");
}
resolveRangeRestriction((YangRangeRestriction) refDerivedInfo
.getResolvedExtendedInfo());
@@ -523,8 +533,9 @@
if (!Strings.isNullOrEmpty(getRangeRestrictionString())) {
DataModelException dataModelException = new DataModelException("YANG file error: Range restriction " +
"should't be present for string data type.");
- dataModelException.setLine(lineNumber);
- dataModelException.setCharPosition(charPositionInLine);
+ dataModelException.setLine(getLineNumber());
+ dataModelException.setCharPosition(getCharPosition());
+ dataModelException.setFileName(getFileName());
throw dataModelException;
}
@@ -574,8 +585,9 @@
DataModelException dataModelException =
new DataModelException("YANG file error: for binary " +
"range restriction or pattern restriction is not allowed.");
- dataModelException.setLine(lineNumber);
- dataModelException.setCharPosition(charPositionInLine);
+ dataModelException.setLine(getLineNumber());
+ dataModelException.setCharPosition(getCharPosition());
+ dataModelException.setFileName(getFileName());
throw dataModelException;
}
@@ -657,8 +669,8 @@
* carry out self resolution.
*/
if (refLengthRestriction == null) {
- YangRangeRestriction curLengthRestriction = processLengthRestriction(null, lineNumber,
- charPositionInLine, false, getLengthRestrictionString());
+ YangRangeRestriction curLengthRestriction = processLengthRestriction(null, getLineNumber(),
+ getCharPosition(), false, getLengthRestrictionString());
return curLengthRestriction;
}
@@ -666,8 +678,8 @@
* Carry out self resolution based with obtained effective built-in type
* and MIN/MAX values as per the referred typedef's values.
*/
- YangRangeRestriction curLengthRestriction = processLengthRestriction(refLengthRestriction, lineNumber,
- charPositionInLine, true, getLengthRestrictionString());
+ YangRangeRestriction curLengthRestriction = processLengthRestriction(refLengthRestriction, getLineNumber(),
+ getCharPosition(), true, getLengthRestrictionString());
// Resolve the range with referred typedef's restriction.
resolveLengthAndRangeRestriction(refLengthRestriction, curLengthRestriction);
@@ -687,14 +699,19 @@
throws DataModelException {
for (Object curInterval : curRestriction.getAscendingRangeIntervals()) {
if (!(curInterval instanceof YangRangeInterval)) {
- throw new DataModelException("Linker error: Current range intervals not processed correctly.");
+ throw new DataModelException("Linker error: Current range intervals not processed correctly."
+ + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + "\"");
}
try {
refRestriction.isValidInterval((YangRangeInterval) curInterval);
} catch (DataModelException e) {
DataModelException dataModelException = new DataModelException(e);
- dataModelException.setLine(lineNumber);
- dataModelException.setCharPosition(charPositionInLine);
+ dataModelException.setLine(getLineNumber());
+ dataModelException.setCharPosition(getCharPosition());
+ dataModelException.setFileName(getFileName());
throw dataModelException;
}
}
@@ -716,8 +733,9 @@
if (!Strings.isNullOrEmpty(getLengthRestrictionString()) || getPatternRestriction() != null) {
DataModelException dataModelException = new DataModelException("YANG file error: Length/Pattern " +
"restriction should't be present for int/uint/decimal data type.");
- dataModelException.setLine(lineNumber);
- dataModelException.setCharPosition(charPositionInLine);
+ dataModelException.setLine(getLineNumber());
+ dataModelException.setCharPosition(getCharPosition());
+ dataModelException.setFileName(getFileName());
throw dataModelException;
}
@@ -743,8 +761,8 @@
* carry out self resolution.
*/
if (refRangeRestriction == null) {
- YangRangeRestriction curRangeRestriction = processRangeRestriction(null, lineNumber,
- charPositionInLine, false, getRangeRestrictionString(), getEffectiveBuiltInType());
+ YangRangeRestriction curRangeRestriction = processRangeRestriction(null, getLineNumber(),
+ getCharPosition(), false, getRangeRestrictionString(), getEffectiveBuiltInType());
setResolvedExtendedInfo((T) curRangeRestriction);
return;
}
@@ -753,8 +771,8 @@
* Carry out self resolution based with obtained effective built-in type
* and MIN/MAX values as per the referred typedef's values.
*/
- YangRangeRestriction curRangeRestriction = processRangeRestriction(refRangeRestriction, lineNumber,
- charPositionInLine, true, getRangeRestrictionString(), getEffectiveBuiltInType());
+ YangRangeRestriction curRangeRestriction = processRangeRestriction(refRangeRestriction, getLineNumber(),
+ getCharPosition(), true, getRangeRestrictionString(), getEffectiveBuiltInType());
// Resolve the range with referred typedef's restriction.
resolveLengthAndRangeRestriction(refRangeRestriction, curRangeRestriction);
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangEntityToResolveInfoImpl.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangEntityToResolveInfoImpl.java
index 8fe6b22..eac5d0c 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangEntityToResolveInfoImpl.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangEntityToResolveInfoImpl.java
@@ -22,7 +22,8 @@
*
* @param <T> type of entity being resolved, uses / grouping
*/
-public class YangEntityToResolveInfoImpl<T> implements YangEntityToResolveInfo<T>, Serializable, LocationInfo {
+public class YangEntityToResolveInfoImpl<T> extends DefaultLocationInfo
+ implements YangEntityToResolveInfo<T>, Serializable {
private static final long serialVersionUID = 806201659L;
@@ -36,16 +37,6 @@
*/
private YangNode holderOfEntityToResolve;
- /**
- * Error line number.
- */
- private transient int lineNumber;
-
- /**
- * Error character position in number.
- */
- private transient int charPositionInLine;
-
@Override
public T getEntityToResolve() {
return entityToResolve;
@@ -66,23 +57,4 @@
this.holderOfEntityToResolve = holderOfEntityToResolve;
}
- @Override
- public int getLineNumber() {
- return lineNumber;
- }
-
- @Override
- public int getCharPosition() {
- return charPositionInLine;
- }
-
- @Override
- public void setLineNumber(int lineNumber) {
- this.lineNumber = lineNumber;
- }
-
- @Override
- public void setCharPosition(int charPositionInLine) {
- this.charPositionInLine = charPositionInLine;
- }
}
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangEnum.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangEnum.java
index 04ea232..47b9381 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangEnum.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangEnum.java
@@ -51,7 +51,8 @@
/**
* Represents the ENUM data type information.
*/
-public class YangEnum implements YangCommonInfo, Parsable, Comparable<YangEnum>, Serializable {
+public class YangEnum extends DefaultLocationInfo implements YangCommonInfo, Parsable, Comparable<YangEnum>,
+ Serializable {
private static final long serialVersionUID = 806201643L;
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangEnumeration.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangEnumeration.java
index a7c6510..f0bb31e 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangEnumeration.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangEnumeration.java
@@ -97,7 +97,11 @@
public void addEnumInfo(YangEnum enumInfo)
throws DataModelException {
if (!getEnumSet().add(enumInfo)) {
- throw new DataModelException("YANG ENUM already exists");
+ throw new DataModelException("YANG ENUM already exists " +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition() +
+ " in " + getFileName() + "\"");
}
}
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangExtension.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangExtension.java
index 05894fb..294de47 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangExtension.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangExtension.java
@@ -60,7 +60,7 @@
/**
* Represents data model node to maintain information defined in YANG extension.
*/
-public class YangExtension
+public class YangExtension extends DefaultLocationInfo
implements YangCommonInfo, Serializable, Parsable {
private static final long serialVersionUID = 806201605L;
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangFeature.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangFeature.java
index 3a7557c..5fcaadf 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangFeature.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangFeature.java
@@ -55,7 +55,8 @@
/**
* Represents data model node to maintain information defined in YANG feature.
*/
-public class YangFeature implements YangCommonInfo, Parsable, YangIfFeatureHolder, Serializable {
+public class YangFeature extends DefaultLocationInfo
+ implements YangCommonInfo, Parsable, YangIfFeatureHolder, Serializable {
private static final long serialVersionUID = 806201635L;
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangGrouping.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangGrouping.java
index 9bd7720..03a24a4 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangGrouping.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangGrouping.java
@@ -319,7 +319,10 @@
throws DataModelException {
if (getName().equals(identifierName)) {
throw new DataModelException("YANG file error: Duplicate input identifier detected, same as grouping \"" +
- getName() + "\"");
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition() +
+ " in " + getFileName() + "\"");
}
}
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangIdentityRef.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangIdentityRef.java
index dd0caf7..db0b9f2 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangIdentityRef.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangIdentityRef.java
@@ -46,7 +46,7 @@
*/
public class YangIdentityRef
extends YangNode
- implements Cloneable, Parsable, Resolvable, Serializable, LocationInfo {
+ implements Cloneable, Parsable, Resolvable, Serializable {
private static final long serialVersionUID = 806201692L;
@@ -69,12 +69,6 @@
*/
private boolean isIdentityForInterFileGroupingResolution;
- // Error line number.
- private transient int lineNumber;
-
- // Error character position in number.
- private transient int charPositionInLine;
-
// Creates a specific identityref of node.
public YangIdentityRef() {
super(YangNodeType.IDENTITYREF_NODE, null);
@@ -122,7 +116,11 @@
YangIdentity identity = getReferredIdentity();
if (identity == null) {
- throw new DataModelException("Linker Error: Identity information is missing.");
+ throw new DataModelException("Linker Error: Identity information is missing. " +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition() +
+ " in " + getFileName() + "\"");
}
while (identity.getBaseNode() != null) {
@@ -233,26 +231,6 @@
this.referredIdentity = referredIdentity;
}
- @Override
- public int getLineNumber() {
- return lineNumber;
- }
-
- @Override
- public int getCharPosition() {
- return charPositionInLine;
- }
-
- @Override
- public void setLineNumber(int lineNumber) {
- this.lineNumber = lineNumber;
- }
-
- @Override
- public void setCharPosition(int charPositionInLine) {
- this.charPositionInLine = charPositionInLine;
- }
-
public boolean isIdentityForInterFileGroupingResolution() {
return isIdentityForInterFileGroupingResolution;
}
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangIfFeature.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangIfFeature.java
index 151477d..5134356 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangIfFeature.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangIfFeature.java
@@ -46,7 +46,8 @@
/**
* Represents data model node to maintain information defined in YANG if-feature.
*/
-public class YangIfFeature implements Parsable, Resolvable, Serializable {
+public class YangIfFeature extends DefaultLocationInfo
+ implements Parsable, Resolvable, Serializable {
private static final long serialVersionUID = 806201635L;
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangImport.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangImport.java
index f6405e1..b60f742 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangImport.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangImport.java
@@ -69,8 +69,8 @@
/**
* Represents the information about the imported modules.
*/
-public class YangImport
- implements Parsable, LocationInfo, Serializable {
+public class YangImport extends DefaultLocationInfo
+ implements Parsable, Serializable {
private static final long serialVersionUID = 806201642L;
@@ -99,12 +99,6 @@
*/
private YangNode importedNode;
- // Error Line number.
- private transient int lineNumber;
-
- // Error character position.
- private transient int charPosition;
-
/**
* Creates a YANG import.
*/
@@ -218,26 +212,6 @@
this.importedNode = importedNode;
}
- @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) {
- charPosition = charPositionInLine;
- }
-
/**
* Adds reference to an import.
*
@@ -284,6 +258,7 @@
+ importedModuleName + " with revision " + importedModuleRevision + " is not found.");
exception.setLine(getLineNumber());
exception.setCharPosition(getCharPosition());
+ exception.setFileName(getFileName());
throw exception;
}
}
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangInclude.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangInclude.java
index 48b796f..68c093c 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangInclude.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangInclude.java
@@ -43,8 +43,8 @@
/**
* Represents the information about the included sub-modules.
*/
-public class YangInclude
- implements Parsable, LocationInfo, Serializable {
+public class YangInclude extends DefaultLocationInfo
+ implements Parsable, Serializable {
private static final long serialVersionUID = 806201644L;
@@ -64,12 +64,6 @@
*/
private YangNode includedNode;
- // Error Line number.
- private transient int lineNumber;
-
- // Error character position.
- private transient int charPosition;
-
/**
* Creates a YANG include.
*/
@@ -154,26 +148,6 @@
this.includedNode = includedNode;
}
- @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) {
- charPosition = charPositionInLine;
- }
-
/**
* Adds reference to an include.
*
@@ -221,6 +195,7 @@
includedSubModuleName + "with a given revision is not found.");
exception.setLine(getLineNumber());
exception.setCharPosition(getCharPosition());
+ exception.setFileName(getFileName());
throw exception;
}
@@ -238,6 +213,7 @@
"to sub-module belonging to the same parent module.");
exception.setLine(getLineNumber());
exception.setCharPosition(getCharPosition());
+ exception.setFileName(getFileName());
throw exception;
}
}
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangInput.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangInput.java
index bf8f4ab..eff6acf 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangInput.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangInput.java
@@ -151,8 +151,11 @@
public void detectSelfCollision(String identifierName, YangConstructType dataType)
throws DataModelException {
if (getName().equals(identifierName)) {
- throw new DataModelException("YANG file error: Duplicate input identifier detected, same as input \""
- + getName() + "\"");
+ throw new DataModelException("YANG file error: Duplicate input identifier detected, same as input \"" +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition() +
+ " in " + getFileName() + "\"");
}
}
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangLeaf.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangLeaf.java
index 847b98b..7eb9fe0 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangLeaf.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangLeaf.java
@@ -61,7 +61,7 @@
/**
* Represents leaf data represented in YANG.
*/
-public abstract class YangLeaf
+public abstract class YangLeaf extends DefaultLocationInfo
implements YangCommonInfo, Parsable, Cloneable, Serializable,
YangMustHolder, YangIfFeatureHolder, YangWhenHolder, YangSchemaNode,
YangConfig {
@@ -413,7 +413,11 @@
@Override
public YangSchemaNodeContextInfo getChildSchema(YangSchemaNodeIdentifier dataNodeIdentifier)
throws DataModelException {
- throw new DataModelException("leaf cannot have any child schema nodes");
+ throw new DataModelException("leaf cannot have any child schema nodes " +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition() +
+ " in " + getFileName() + "\"");
}
@Override
@@ -425,7 +429,11 @@
@Override
public int getMandatoryChildCount()
throws DataModelException {
- throw new DataModelException("Leaf can't have child.");
+ throw new DataModelException("Leaf can't have child. " +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition() +
+ " in " + getFileName() + "\"");
}
@Override
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangLeafList.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangLeafList.java
index 75af697..b2c003a 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangLeafList.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangLeafList.java
@@ -57,7 +57,7 @@
/**
* Represents leaf-list data represented in YANG.
*/
-public abstract class YangLeafList
+public abstract class YangLeafList extends DefaultLocationInfo
implements YangCommonInfo, Parsable, Cloneable, Serializable,
YangMustHolder, YangWhenHolder, YangIfFeatureHolder, YangSchemaNode,
YangConfig {
@@ -430,7 +430,11 @@
@Override
public YangSchemaNodeContextInfo getChildSchema(YangSchemaNodeIdentifier dataNodeIdentifier)
throws DataModelException {
- throw new DataModelException("leaf cannot have any child schema nodes");
+ throw new DataModelException("leaf cannot have any child schema nodes" +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition() +
+ " in " + getFileName() + "\"");
}
@Override
@@ -442,7 +446,10 @@
@Override
public int getMandatoryChildCount()
throws DataModelException {
- throw new DataModelException("TODO");
+ throw new DataModelException("leaf list can't have child " + getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition() +
+ " in " + getFileName() + "\"");
}
@Override
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangLeafRef.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangLeafRef.java
index 764e37c..fb0bee7 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangLeafRef.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangLeafRef.java
@@ -47,9 +47,9 @@
*
* @param <T> YANG leafref info
*/
-public class YangLeafRef<T>
+public class YangLeafRef<T> extends DefaultLocationInfo
implements Cloneable, Parsable, Resolvable, Serializable, YangIfFeatureHolder,
- YangXPathResolver, YangAppErrorHolder, LocationInfo {
+ YangXPathResolver, YangAppErrorHolder {
private static final long serialVersionUID = 286201644L;
@@ -107,16 +107,6 @@
private YangNode parentNodeOfLeafref;
/**
- * Error line number.
- */
- private transient int lineNumber;
-
- /**
- * Error character position in number.
- */
- private transient int charPositionInLine;
-
- /**
* Prefix in the nodes of the leafref path and its imported node name.
*/
private Map<String, String> prefixAndItsImportedModule;
@@ -358,7 +348,11 @@
throws DataModelException {
if (getReferredLeafOrLeafList() == null) {
- throw new DataModelException("Linker Error: The leafref does not refer to any leaf/leaf-list.");
+ throw new DataModelException("Linker Error: The leafref does not refer to any leaf/leaf-list." +
+ " in " +
+ getLineNumber() + " at " +
+ getCharPosition() +
+ " in " + getFileName() + "\"");
}
// Initiate the resolution
@@ -389,7 +383,11 @@
//Check whether the referred typedef is resolved.
if (referredLeafRefInfo.getResolvableStatus() != INTRA_FILE_RESOLVED
&& referredLeafRefInfo.getResolvableStatus() != RESOLVED) {
- throw new DataModelException("Linker Error: Referred typedef is not resolved for type.");
+ throw new DataModelException("Linker Error: Referred typedef is not resolved for type." +
+ " in " +
+ getLineNumber() + " at " +
+ getCharPosition() +
+ " in " + getFileName() + "\"");
}
/*
@@ -415,7 +413,11 @@
// Check whether the referred typedef is resolved.
if (baseType.getResolvableStatus() != INTRA_FILE_RESOLVED
&& baseType.getResolvableStatus() != RESOLVED) {
- throw new DataModelException("Linker Error: Referred typedef is not resolved for type.");
+ throw new DataModelException("Linker Error: Referred typedef is not resolved for type." +
+ " in " +
+ getLineNumber() + " at " +
+ getCharPosition() +
+ " in " + getFileName() + "\"");
}
/*
* Check if the referred typedef is intra file resolved, if yes
@@ -449,7 +451,11 @@
//Check whether the referred typedef is resolved.
if (referredLeafRefInfo.getResolvableStatus() != INTRA_FILE_RESOLVED
&& referredLeafRefInfo.getResolvableStatus() != RESOLVED) {
- throw new DataModelException("Linker Error: Referred typedef is not resolved for type.");
+ throw new DataModelException("Linker Error: Referred typedef is not resolved for type." +
+ " in " +
+ getLineNumber() + " at " +
+ getCharPosition() +
+ " in " + getFileName() + "\"");
}
/*
* Check if the referred typedef is intra file resolved, if yes
@@ -475,7 +481,11 @@
//Check whether the referred typedef is resolved.
if (baseType.getResolvableStatus() != INTRA_FILE_RESOLVED
&& baseType.getResolvableStatus() != RESOLVED) {
- throw new DataModelException("Linker Error: Referred typedef is not resolved for type.");
+ throw new DataModelException("Linker Error: Referred typedef is not resolved for type." +
+ " in " +
+ getLineNumber() + " at " +
+ getCharPosition() +
+ " in " + getFileName() + "\"");
}
/*
* Check if the referred typedef is intra file resolved, if yes
@@ -499,31 +509,15 @@
}
return RESOLVED;
} else {
- throw new DataModelException("Linker Error: The leafref must refer only to leaf/leaf-list.");
+ throw new DataModelException("Linker Error: The leafref must refer only to leaf/leaf-list." +
+ " in " +
+ getLineNumber() + " at " +
+ getCharPosition() +
+ " in " + getFileName() + "\"");
}
}
@Override
- public int getLineNumber() {
- return lineNumber;
- }
-
- @Override
- public int getCharPosition() {
- return charPositionInLine;
- }
-
- @Override
- public void setLineNumber(int lineNumber) {
- this.lineNumber = lineNumber;
- }
-
- @Override
- public void setCharPosition(int charPositionInLine) {
- this.charPositionInLine = charPositionInLine;
- }
-
- @Override
public YangLeafRef<T> clone()
throws CloneNotSupportedException {
YangLeafRef<T> clonedLeafRef = (YangLeafRef<T>) super.clone();
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangLeavesHolder.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangLeavesHolder.java
index 79f1cae..9d5aa82 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangLeavesHolder.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangLeavesHolder.java
@@ -23,7 +23,7 @@
* data holders of leaf or leaf list. Used in leaves parsing or attribute code
* generation.
*/
-public interface YangLeavesHolder {
+public interface YangLeavesHolder extends LocationInfo {
/**
* Returns the list of leaves from data holder like container / list.
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangLengthRestriction.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangLengthRestriction.java
index e3ea833..5df0f8f 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangLengthRestriction.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangLengthRestriction.java
@@ -33,7 +33,8 @@
/**
* Represents the restriction for length data type.
*/
-public class YangLengthRestriction implements YangDesc, YangReference, Parsable, Serializable, YangAppErrorHolder {
+public class YangLengthRestriction extends DefaultLocationInfo
+ implements YangDesc, YangReference, Parsable, Serializable, YangAppErrorHolder {
/*-
* Reference RFC 6020.
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangList.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangList.java
index 63d1790..f0d5c99 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangList.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangList.java
@@ -373,7 +373,11 @@
if (getKeyList().contains(key)) {
throw new DataModelException("A leaf identifier must not appear more than once in the\n" +
- " key");
+ " key" +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition() +
+ " in " + getFileName() + "\"");
}
getKeyList().add(key);
@@ -392,7 +396,11 @@
}
if (getUniqueList().contains(unique)) {
throw new DataModelException("A leaf identifier must not appear more than once in the\n" +
- " unique");
+ " unique" +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition() +
+ " in " + getFileName() + "\"");
}
getUniqueList().add(unique);
}
@@ -571,7 +579,11 @@
//A list must have atleast one key leaf if config is true
if (isConfig && (keys.isEmpty() || leaves.isEmpty()) && !isUsesPresentInList()
&& !isListPresentInGrouping()) {
- throw new DataModelException("A list must have atleast one key leaf if config is true;");
+ throw new DataModelException("A list must have atleast one key leaf if config is true; " +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition() +
+ " in " + getFileName() + "\"");
} else if (keys != null) {
validateKey(leaves, keys);
}
@@ -595,7 +607,11 @@
for (YangLeaf leaf : leaves) {
if (leaf.isConfig()) {
throw new DataModelException("If a list has \"config\" set to \"false\", no node underneath " +
- "it can have \"config\" set to \"true\".");
+ "it can have \"config\" set to \"true\"." +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition() +
+ " in " + getFileName() + "\"");
}
}
}
@@ -604,7 +620,10 @@
for (YangLeafList leafList : leafLists) {
if (leafList.isConfig()) {
throw new DataModelException("If a list has \"config\" set to \"false\", no node underneath " +
- "it can have \"config\" set to \"true\".");
+ "it can have \"config\" set to \"true\"." + getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition() +
+ " in " + getFileName() + "\"");
}
}
}
@@ -632,7 +651,11 @@
if (key.equals(leaf.getName())) {
if (leaf.getDataType().getDataType() == YangDataTypes.EMPTY) {
throw new DataModelException(" A leaf that is part of the key must not be the built-in " +
- "type \"empty\".");
+ "type \"empty\"." +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition() +
+ " in " + getFileName() + "\"");
}
leafFound = true;
keyLeaves.add(leaf);
@@ -642,7 +665,11 @@
}
if (!leafFound && !isUsesPresentInList() && !isListPresentInGrouping()) {
- throw new DataModelException("An identifier, in key, must refer to a child leaf of the list");
+ throw new DataModelException("An identifier, in key, must refer to a child leaf of the list" +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition() +
+ " in " + getFileName() + "\"");
}
leafFound = false;
}
@@ -654,7 +681,11 @@
for (YangLeaf keyLeaf : keyLeaves) {
if (isConfig != keyLeaf.isConfig()) {
throw new DataModelException("All key leafs in a list must have the same value for their" +
- " \"config\" as the list itself.");
+ " \"config\" as the list itself." +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition() +
+ " in " + getFileName() + "\"");
}
}
}
@@ -671,7 +702,10 @@
throws DataModelException {
if (getName().equals(identifierName)) {
throw new DataModelException("YANG file error: Duplicate input identifier detected, same as list \"" +
- getName() + "\"");
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition() +
+ " in " + getFileName() + "\"");
}
}
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangMaxElement.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangMaxElement.java
index 6ec7f47..c6ebdd7 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangMaxElement.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangMaxElement.java
@@ -24,7 +24,8 @@
/**
* Represents max element data represented in YANG.
*/
-public class YangMaxElement implements YangAppErrorHolder, Serializable {
+public class YangMaxElement extends DefaultLocationInfo
+ implements YangAppErrorHolder, Serializable {
private static final long serialVersionUID = 807201694L;
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangMinElement.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangMinElement.java
index 4eab3a8..8af5849 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangMinElement.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangMinElement.java
@@ -24,7 +24,8 @@
/**
* Represents minimum element data represented in YANG.
*/
-public class YangMinElement implements YangAppErrorHolder, Serializable {
+public class YangMinElement extends DefaultLocationInfo
+ implements YangAppErrorHolder, Serializable {
private static final long serialVersionUID = 807201695L;
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangMust.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangMust.java
index 62f6c9e..5e0346b 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangMust.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangMust.java
@@ -50,7 +50,8 @@
/**
* Represents information defined in YANG must.
*/
-public class YangMust implements YangDesc, YangReference, Parsable, Serializable, YangAppErrorHolder {
+public class YangMust extends DefaultLocationInfo
+ implements YangDesc, YangReference, Parsable, Serializable, YangAppErrorHolder {
private static final long serialVersionUID = 806201646L;
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangNameSpace.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangNameSpace.java
index 60f327f..72da0fa 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangNameSpace.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangNameSpace.java
@@ -34,7 +34,8 @@
/**
* Represents name space to be used for the XML data tree.
*/
-public class YangNameSpace implements Parsable, Serializable {
+public class YangNameSpace extends DefaultLocationInfo
+ implements Parsable, Serializable {
private static final long serialVersionUID = 806201647L;
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangNode.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangNode.java
index c65af25..cd6cc7c 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangNode.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangNode.java
@@ -29,7 +29,7 @@
/**
* Represents base class of a node in data model tree.
*/
-public abstract class YangNode
+public abstract class YangNode extends DefaultLocationInfo
implements Cloneable, Serializable, YangSchemaNode,
Comparable<YangNode> {
@@ -86,6 +86,11 @@
private int mandatoryChildCount;
/**
+ * Yang revision.
+ */
+ private YangRevision revision;
+
+ /**
* Map of default schema nodes.
*/
private Map<YangSchemaNodeIdentifier, YangSchemaNode> defaultChildMap;
@@ -227,31 +232,45 @@
public void addChild(YangNode newChild)
throws DataModelException {
if (newChild.getNodeType() == null) {
- throw new DataModelException("Abstract node cannot be inserted " +
- "into a tree");
+ throw new DataModelException("Abstract node cannot be inserted into a tree " +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition() +
+ " in " + getFileName() + "\"");
}
if (newChild.getParent() == null) {
newChild.setParent(this);
} else if (newChild.getParent() != this) {
- throw new DataModelException("Node is already part of a tree");
+ throw new DataModelException("Node is already part of a tree " +
+ getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition() +
+ " in " + getFileName() + "\"");
}
if (newChild.getChild() != null) {
- throw new DataModelException("Child to be added is not atomic, " +
- "it already has a child");
+ throw new DataModelException("Child to be added is not atomic, it already has a child "
+ + getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + "\"");
}
if (newChild.getNextSibling() != null) {
- throw new DataModelException("Child to be added is not atomic, " +
- "it already has a next " +
- "sibling");
+ throw new DataModelException("Child to be added is not atomic, it already has a next sibling "
+ + getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + "\"");
}
if (newChild.getPreviousSibling() != null) {
- throw new DataModelException("Child to be added is not atomic, " +
- "it already has a previous " +
- "sibling");
+ throw new DataModelException("Child to be added is not atomic, it already has a previous sibling "
+ + getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + "\"");
}
/* First child to be added */
@@ -398,9 +417,11 @@
try {
while (nextNodeToClone != srcRootNode) {
if (nextNodeToClone == null) {
- throw new DataModelException("Internal error: Cloning " +
- "failed, source tree " +
- "null pointer reached");
+ throw new DataModelException("Internal error: Cloning failed, source tree null pointer reached "
+ + nextNodeToClone.getName() + " in " +
+ nextNodeToClone.getLineNumber() + " at " +
+ nextNodeToClone.getCharPosition()
+ + " in " + nextNodeToClone.getFileName() + "\"");
}
if (curTraversal != PARENT) {
newNode = nextNodeToClone.clone(yangUses);
@@ -450,7 +471,10 @@
}
}
} catch (CloneNotSupportedException e) {
- throw new DataModelException("Failed to clone the tree");
+ throw new DataModelException("Failed to clone the tree " + nextNodeToClone.getName() + " in " +
+ nextNodeToClone.getLineNumber() + " at " +
+ nextNodeToClone.getCharPosition()
+ + " in " + nextNodeToClone.getFileName() + "\"");
}
}
@@ -469,8 +493,11 @@
throws DataModelException {
if (!(currentNode instanceof CollisionDetector)
|| !(newNode instanceof Parsable)) {
- throw new DataModelException("Node in data model tree does not " +
- "support collision detection");
+ throw new DataModelException("Node in data model tree does not support collision detection " +
+ newNode.getName() + " in " +
+ newNode.getLineNumber() + " at " +
+ newNode.getCharPosition()
+ + " in " + newNode.getFileName() + "\"");
}
CollisionDetector collisionDetector = (CollisionDetector) currentNode;
@@ -481,15 +508,20 @@
} else if (addAs == TraversalType.SIBILING) {
currentNode = currentNode.getParent();
if (!(currentNode instanceof CollisionDetector)) {
- throw new DataModelException("Node in data model tree does " +
- "not support collision " +
- "detection");
+ throw new DataModelException("Node in data model tree does not support collision detection"
+ + currentNode.getName() + " in " +
+ currentNode.getLineNumber() + " at " +
+ currentNode.getCharPosition()
+ + " in " + currentNode.getFileName() + "\"");
}
collisionDetector = (CollisionDetector) currentNode;
collisionDetector.detectCollidingChild(newNode.getName(),
parsable.getYangConstructType());
} else {
- throw new DataModelException("Errored tree cloning");
+ throw new DataModelException("Error tree cloning " + currentNode.getName() + " in " +
+ currentNode.getLineNumber() + " at " +
+ currentNode.getCharPosition()
+ + " in " + currentNode.getFileName() + "\"");
}
}
@@ -522,8 +554,11 @@
throws DataModelException {
if (newSibling.getNodeType() == null) {
- throw new DataModelException("Cloned abstract node cannot be " +
- "inserted into a tree");
+ throw new DataModelException("Cloned abstract node cannot be inserted into a tree "
+ + getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + "\"");
}
if (newSibling.getParent() == null) {
@@ -534,28 +569,38 @@
newSibling.setParent(getParent());
} else {
- throw new DataModelException("Node is already part of a tree, " +
- "and cannot be added as a " +
- "sibling");
+ throw new DataModelException("Node is already part of a tree, and cannot be added as a sibling "
+ + getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + "\"");
}
if (newSibling.getPreviousSibling() == null) {
newSibling.setPreviousSibling(this);
setNextSibling(newSibling);
} else {
- throw new DataModelException("New sibling to be added is not " +
- "atomic, it already has a " +
- "previous sibling");
+ throw new DataModelException("New sibling to be added is not atomic, it already has a previous sibling "
+ + getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + "\"");
}
if (newSibling.getChild() != null) {
- throw new DataModelException("Sibling to be added is not atomic, " +
- "it already has a child");
+ throw new DataModelException("Sibling to be added is not atomic, it already has a child "
+ + getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + "\"");
}
if (newSibling.getNextSibling() != null) {
- throw new DataModelException("Sibling to be added is not atomic, " +
- "it already has a next sibling");
+ throw new DataModelException("Sibling to be added is not atomic, it already has a next sibling "
+ + getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + "\"");
}
}
@@ -565,10 +610,11 @@
YangSchemaNodeContextInfo childSchemaContext =
ysnContextInfoMap.get(dataNodeIdentifier);
if (childSchemaContext == null) {
- throw new DataModelException("Requested " +
- dataNodeIdentifier.getName() +
- "is not child in "
- + getName());
+ throw new DataModelException("Requested " + dataNodeIdentifier.getName() + "is not child in "
+ + getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + "\"");
}
return childSchemaContext;
}
@@ -691,7 +737,11 @@
@Override
public void isValueValid(String value)
throws DataModelException {
- throw new DataModelException("Value validation asked for YANG node.");
+ throw new DataModelException("Value validation asked for YANG node. "
+ + getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + "\"");
}
@Override
@@ -745,6 +795,24 @@
yangSchemaNodeIdentifier.setNameSpace(namespace);
}
+ /**
+ * Returns YANG revision.
+ *
+ * @return YANG revision
+ */
+ public YangRevision getRevision() {
+ return revision;
+ }
+
+ /**
+ * Sets YANG revision.
+ *
+ * @param revision YANG revision
+ */
+ public void setRevision(YangRevision revision) {
+ this.revision = revision;
+ }
+
@Override
public YangSchemaNode getNotificationSchemaNode(String notificationNameInEnum)
throws DataModelException {
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangNodeIdentifier.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangNodeIdentifier.java
index 8c0ff9f..42f0aa9 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangNodeIdentifier.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangNodeIdentifier.java
@@ -21,7 +21,8 @@
/**
* Represents YANG node identifier which is a combination of prefix and name.
*/
-public class YangNodeIdentifier implements Serializable {
+public class YangNodeIdentifier extends DefaultLocationInfo
+ implements Serializable {
private static final long serialVersionUID = 806201648L;
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangNotification.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangNotification.java
index 4cd8b42..0802366 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangNotification.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangNotification.java
@@ -161,7 +161,10 @@
throws DataModelException {
if (getName().equals(identifierName)) {
throw new DataModelException("YANG file error: Duplicate input identifier detected, same as notification \""
- + getName() + "\"");
+ + getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + "\"");
}
}
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangOutput.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangOutput.java
index 7f429f6..52044df 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangOutput.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangOutput.java
@@ -151,7 +151,10 @@
throws DataModelException {
if (getName().equals(identifierName)) {
throw new DataModelException("YANG file error: Duplicate identifier detected, same as output \""
- + getName() + "\"");
+ + getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + "\"");
}
}
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangPathPredicate.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangPathPredicate.java
index cf45349..2af0e65 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangPathPredicate.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangPathPredicate.java
@@ -20,7 +20,8 @@
/**
* Representation of data model node to maintain path predicate in YANG absolute-path or relative-path.
*/
-public class YangPathPredicate<T> implements Serializable {
+public class YangPathPredicate<T> extends DefaultLocationInfo
+ implements Serializable {
private static final long serialVersionUID = 806201689L;
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangPatternRestriction.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangPatternRestriction.java
index 9e5d8ef..048d8c4 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangPatternRestriction.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangPatternRestriction.java
@@ -52,7 +52,8 @@
* Represents pattern restriction information. The regular expression restriction on string
* data type.
*/
-public class YangPatternRestriction implements Serializable, YangAppErrorHolder {
+public class YangPatternRestriction extends DefaultLocationInfo
+ implements Serializable, YangAppErrorHolder {
private static final long serialVersionUID = 806201649L;
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangRangeInterval.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangRangeInterval.java
index 4ee9787..58f893a 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangRangeInterval.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangRangeInterval.java
@@ -22,7 +22,8 @@
*
* @param <T> range type based on the data type
*/
-public class YangRangeInterval<T extends YangBuiltInDataTypeInfo<T>> implements Serializable {
+public class YangRangeInterval<T extends YangBuiltInDataTypeInfo<T>> extends DefaultLocationInfo
+ implements Serializable {
private static final long serialVersionUID = 806201650L;
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangRangeRestriction.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangRangeRestriction.java
index b1aaf2f..e664a64 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangRangeRestriction.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangRangeRestriction.java
@@ -59,7 +59,7 @@
*
* @param <T> range type (data type)
*/
-public class YangRangeRestriction<T extends YangBuiltInDataTypeInfo<T>>
+public class YangRangeRestriction<T extends YangBuiltInDataTypeInfo<T>> extends DefaultLocationInfo
implements YangDesc, YangReference, Parsable, Serializable, YangAppErrorHolder {
private static final long serialVersionUID = 8062016051L;
@@ -117,10 +117,18 @@
*/
public T getMinRestrictedvalue() throws DataModelException {
if (getAscendingRangeIntervals() == null) {
- throw new DataModelException("No range restriction info");
+ throw new DataModelException("No range restriction info "
+ + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + "\"");
}
if (getAscendingRangeIntervals().isEmpty()) {
- throw new DataModelException("No range interval info");
+ throw new DataModelException("No range interval info "
+ + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + "\"");
}
return getAscendingRangeIntervals().get(0).getStartValue();
}
@@ -133,10 +141,18 @@
*/
public T getMaxRestrictedvalue() throws DataModelException {
if (getAscendingRangeIntervals() == null) {
- throw new DataModelException("No range restriction info");
+ throw new DataModelException("No range restriction info "
+ + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + "\"");
}
if (getAscendingRangeIntervals().isEmpty()) {
- throw new DataModelException("No range interval info");
+ throw new DataModelException("No range interval info "
+ + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + "\"");
}
return getAscendingRangeIntervals()
.get(getAscendingRangeIntervals().size() - 1).getEndValue();
@@ -168,7 +184,11 @@
if (newInterval.getStartValue().compareTo(curMaxvalue) < 1) {
throw new DataModelException(
- "New added range interval is lesser than the old interval(s)");
+ "New added range interval is lesser than the old interval(s) "
+ + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + "\"");
}
getAscendingRangeIntervals()
@@ -188,7 +208,11 @@
|| getAscendingRangeIntervals().isEmpty()) {
// Throw exception, At least one default range needs to be set in
// constructor or in linker.
- throw new DataModelException("Range interval missing in range restriction.");
+ throw new DataModelException("Range interval missing in range restriction. "
+ + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + "\"");
}
@@ -219,7 +243,11 @@
|| getAscendingRangeIntervals().isEmpty()) {
// Throw exception, At least one default range needs to be set in
// constructor or in linker.
- throw new DataModelException("Range interval missing in range restriction.");
+ throw new DataModelException("Range interval missing in range restriction. "
+ + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + "\"");
}
for (YangRangeInterval<T> interval : getAscendingRangeIntervals()) {
@@ -230,7 +258,11 @@
return true;
}
}
- throw new DataModelException("Range interval doesn't fall within the referred restriction ranges");
+ throw new DataModelException("Range interval doesn't fall within the referred restriction ranges "
+ + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + "\"");
}
/**
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangRelativePath.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangRelativePath.java
index a7af2a2..0dee381 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangRelativePath.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangRelativePath.java
@@ -21,7 +21,8 @@
/**
* Representation of data model node to maintain relative path defined in YANG path-arg.
*/
-public class YangRelativePath implements Serializable {
+public class YangRelativePath extends DefaultLocationInfo
+ implements Serializable {
private static final long serialVersionUID = 806201690L;
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangResolutionInfo.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangResolutionInfo.java
index c63e832..9876815 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangResolutionInfo.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangResolutionInfo.java
@@ -23,7 +23,7 @@
*
* @param <T> type of resolution entity uses / type
*/
-public interface YangResolutionInfo<T> extends LocationInfo {
+public interface YangResolutionInfo<T> {
/**
* Resolves linking with all the ancestors node for a resolution info.
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangRevision.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangRevision.java
index 6f59cf5..8736083 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangRevision.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangRevision.java
@@ -46,7 +46,8 @@
/**
* Represents the information about the revision.
*/
-public class YangRevision implements YangDesc, YangReference, Parsable, Serializable {
+public class YangRevision extends DefaultLocationInfo
+ implements YangDesc, YangReference, Parsable, Serializable {
private static final long serialVersionUID = 8062016052L;
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangRpc.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangRpc.java
index f467053..68197ce 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangRpc.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangRpc.java
@@ -142,7 +142,10 @@
throws DataModelException {
if (getName().equals(identifierName)) {
throw new DataModelException("YANG file error: Duplicate input identifier detected, same as rpc \""
- + getName() + "\"");
+ + getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + "\"");
}
}
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangSchemaNodeContextInfo.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangSchemaNodeContextInfo.java
index 9f851f0..2397c41 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangSchemaNodeContextInfo.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangSchemaNodeContextInfo.java
@@ -22,7 +22,8 @@
* Abstraction of YANG data node context information, used by YMS to abstractly
* refer the YANG data nodes schema context information.
*/
-public class YangSchemaNodeContextInfo implements Serializable {
+public class YangSchemaNodeContextInfo extends DefaultLocationInfo
+ implements Serializable {
private static final long serialVersionUID = 806201613L;
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangSchemaNodeIdentifier.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangSchemaNodeIdentifier.java
index 68e9f52..62cd275 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangSchemaNodeIdentifier.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangSchemaNodeIdentifier.java
@@ -23,7 +23,8 @@
* Represents YANG data node identifier which is a combination of name and namespace.
* Namespace will be present only if node is module/sub-module or augmented node.
*/
-public class YangSchemaNodeIdentifier implements Serializable {
+public class YangSchemaNodeIdentifier extends DefaultLocationInfo
+ implements Serializable {
private static final long serialVersionUID = 806201648L;
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangStringRestriction.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangStringRestriction.java
index dcd0f1d..cfa8088 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangStringRestriction.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangStringRestriction.java
@@ -35,7 +35,8 @@
/**
* Represents the restriction for string data type.
*/
-public class YangStringRestriction implements YangDesc, YangReference, Parsable, Serializable {
+public class YangStringRestriction extends DefaultLocationInfo
+ implements YangDesc, YangReference, Parsable, Serializable {
/*-
* Reference RFC 6020.
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangType.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangType.java
index ecc9184..5fc6075 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangType.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangType.java
@@ -63,8 +63,8 @@
*
* @param <T> YANG data type info
*/
-public class YangType<T>
- implements Cloneable, Parsable, Resolvable, Serializable, LocationInfo {
+public class YangType<T> extends DefaultLocationInfo
+ implements Cloneable, Parsable, Resolvable, Serializable {
private static final long serialVersionUID = 8062016054L;
@@ -104,18 +104,6 @@
*/
private boolean isTypeNotResolvedTillRootNode;
-
- /**
- * Error line number.
- */
- private transient int lineNumber;
-
- /**
- * Error character position in number.
- */
- private transient int charPositionInLine;
-
-
/**
* Creates a YANG type object.
*/
@@ -274,13 +262,21 @@
* Check whether the data type is derived.
*/
if (getDataType() != DERIVED) {
- throw new DataModelException("Linker Error: Resolve should only be called for derived data types.");
+ throw new DataModelException("Linker Error: Resolve should only be called for derived data types. "
+ + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + "\"");
}
// Check if the derived info is present.
YangDerivedInfo<?> derivedInfo = (YangDerivedInfo<?>) getDataTypeExtendedInfo();
if (derivedInfo == null) {
- throw new DataModelException("Linker Error: Derived information is missing.");
+ throw new DataModelException("Linker Error: Derived information is missing. " + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + "\"");
+
}
// Initiate the resolution
@@ -526,26 +522,6 @@
return isMatched;
}
- @Override
- public int getLineNumber() {
- return lineNumber;
- }
-
- @Override
- public int getCharPosition() {
- return charPositionInLine;
- }
-
- @Override
- public void setLineNumber(int lineNumber) {
- this.lineNumber = lineNumber;
- }
-
- @Override
- public void setCharPosition(int charPositionInLine) {
- this.charPositionInLine = charPositionInLine;
- }
-
public boolean isTypeForInterFileGroupingResolution() {
return isTypeForInterFileGroupingResolution;
}
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangTypeDef.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangTypeDef.java
index 6e2db7f..5e77f7a 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangTypeDef.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangTypeDef.java
@@ -296,7 +296,10 @@
throws DataModelException {
if (getName().equals(identifierName)) {
throw new DataModelException("YANG file error: Duplicate input identifier detected, same as typedef \""
- + getName() + "\"");
+ + getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + "\"");
}
}
}
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangUnion.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangUnion.java
index efebd5d..a0ea239 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangUnion.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangUnion.java
@@ -137,7 +137,10 @@
throws DataModelException {
if (yangType.getDataType() == YangDataTypes.EMPTY || yangType.getDataType() == YangDataTypes.LEAFREF) {
throw new DataModelException("Union member type must not be one of the built-in types \"empty\" or " +
- "\"leafref\"");
+ "\"leafref\"" + getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + "\"");
}
getTypeList().add(yangType);
}
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangUses.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangUses.java
index 28a31e5..ae05a20 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangUses.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangUses.java
@@ -385,7 +385,11 @@
YangGrouping referredGrouping = getRefGroup();
if (referredGrouping == null) {
- throw new DataModelException("YANG uses linker error, cannot resolve uses");
+ throw new DataModelException("YANG uses linker error, cannot resolve uses " + getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + "\"");
+
} else {
/*
* if referredGrouping has uses which is not resolved then set the status
@@ -399,7 +403,11 @@
YangNode usesParentNode = getParentNodeInGenCode(this);
if (!(usesParentNode instanceof YangLeavesHolder)
|| !(usesParentNode instanceof CollisionDetector)) {
- throw new DataModelException("YANG uses holder construct is wrong");
+ throw new DataModelException("YANG uses holder construct is wrong "
+ + getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + "\"");
}
YangLeavesHolder usesParentLeavesHolder = (YangLeavesHolder) usesParentNode;
@@ -536,7 +544,11 @@
YangLeavesHolder usesParentNode)
throws DataModelException {
if (listOfLeaves == null || listOfLeaves.size() == 0) {
- throw new DataModelException("No leaves to clone");
+ throw new DataModelException("No leaves to clone "
+ + getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + "\"");
}
List<YangLeaf> newLeavesList = new LinkedList<YangLeaf>();
@@ -568,7 +580,11 @@
YangLeavesHolder usesParentNode)
throws DataModelException {
if (listOfLeafList == null || listOfLeafList.size() == 0) {
- throw new DataModelException("No leaf lists to clone");
+ throw new DataModelException("No leaf lists to clone "
+ + getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + "\"");
}
List<YangLeafList> newListOfLeafList = new LinkedList<YangLeafList>();
@@ -611,7 +627,10 @@
if (getName().equals(identifierName)) {
throw new DataModelException("YANG file error: Duplicate input identifier detected, same as uses \""
- + getName() + "\"");
+ + getName() + " in " +
+ getLineNumber() + " at " +
+ getCharPosition()
+ + " in " + getFileName() + "\"");
}
}
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangWhen.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangWhen.java
index 5cfb050..1982d5a 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangWhen.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangWhen.java
@@ -47,7 +47,8 @@
/**
* Represents information defined in YANG when.
*/
-public class YangWhen implements YangDesc, YangReference, Parsable, Serializable {
+public class YangWhen extends DefaultLocationInfo
+ implements YangDesc, YangReference, Parsable, Serializable {
private static final long serialVersionUID = 806201646L;
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/exceptions/DataModelException.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/exceptions/DataModelException.java
index ca2dd6b..5728b30 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/exceptions/DataModelException.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/exceptions/DataModelException.java
@@ -23,6 +23,7 @@
private static final long serialVersionUID = 201601270658L;
private transient int lineNumber;
private transient int charPositionInLine;
+ private transient String fileName;
/**
* Creates a data model exception with message.
@@ -87,4 +88,22 @@
public void setCharPosition(int charPosition) {
this.charPositionInLine = charPosition;
}
+
+ /**
+ * Returns YANG file name of the exception.
+ *
+ * @return YANG file name of the exception
+ */
+ public String getFileName() {
+ return this.fileName;
+ }
+
+ /**
+ * Sets file name in datamodel exception.
+ *
+ * @param fileName YANG file name
+ */
+ public void setFileName(String fileName) {
+ this.fileName = fileName;
+ }
}
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/utils/DataModelUtils.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/utils/DataModelUtils.java
index 9480198..e52f234 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/utils/DataModelUtils.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/utils/DataModelUtils.java
@@ -140,8 +140,11 @@
}
for (YangLeaf leaf : listOfLeaf) {
if (leaf.getName().equals(identifierName)) {
- throw new DataModelException("YANG file error: Duplicate input identifier detected, same as leaf \""
- + leaf.getName() + "\"");
+ throw new DataModelException("YANG file error: Duplicate input identifier detected, same as leaf \"" +
+ leaf.getName() + " in " +
+ leaf.getLineNumber() + " at " +
+ leaf.getCharPosition() +
+ " in " + leaf.getFileName() + "\"");
}
}
}
@@ -162,7 +165,10 @@
for (YangLeafList leafList : listOfLeafList) {
if (leafList.getName().equals(identifierName)) {
throw new DataModelException("YANG file error: Duplicate input identifier detected, same as leaf " +
- "list \"" + leafList.getName() + "\"");
+ "list \"" + leafList.getName() + " in " +
+ leafList.getLineNumber() + " at " +
+ leafList.getCharPosition() +
+ " in " + leafList.getFileName() + "\"");
}
}
}
@@ -595,7 +601,11 @@
throw e;
} catch (CloneNotSupportedException e) {
e.printStackTrace();
- throw new DataModelException("Could not clone Type node");
+ throw new DataModelException("Could not clone Type node " +
+ leaf.getDataType().getDataTypeName() + " in " +
+ leaf.getDataType().getLineNumber() + " at " +
+ leaf.getDataType().getCharPosition() +
+ " in " + leaf.getDataType().getFileName() + "\"");
}
}
}
@@ -615,7 +625,11 @@
throw e;
} catch (CloneNotSupportedException e) {
e.printStackTrace();
- throw new DataModelException("Could not clone Type node");
+ throw new DataModelException("Could not clone Type node " +
+ leafList.getDataType().getDataTypeName() + " in " +
+ leafList.getDataType().getLineNumber() + " at " +
+ leafList.getDataType().getCharPosition() +
+ " in " + leafList.getDataType().getFileName() + "\"");
}
}
}
@@ -631,7 +645,11 @@
private static void updateClonedTypeRef(YangType dataType, YangLeavesHolder leavesHolder)
throws DataModelException {
if (!(leavesHolder instanceof YangNode)) {
- throw new DataModelException("Data model error: cloned leaves holder is not a node");
+ throw new DataModelException("Data model error: cloned leaves holder is not a node " +
+ " in " +
+ leavesHolder.getLineNumber() + " at " +
+ leavesHolder.getCharPosition() +
+ " in " + leavesHolder.getFileName() + "\"");
}
YangNode potentialTypeNode = ((YangNode) leavesHolder).getChild();
while (potentialTypeNode != null) {
@@ -650,7 +668,12 @@
potentialTypeNode = potentialTypeNode.getNextSibling();
}
- throw new DataModelException("Data model error: cloned leaves type is not found");
+ throw new DataModelException("Data model error: cloned leaves type is not found " +
+ dataType.getDataTypeName() + " in " +
+ dataType.getLineNumber() + " at " +
+ dataType.getCharPosition() +
+ " in " + dataType.getFileName() + "\"");
+
}
/**
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/utils/FractionDigits.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/utils/FractionDigits.java
index f5c644a..536ca10 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/utils/FractionDigits.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/utils/FractionDigits.java
@@ -16,11 +16,12 @@
package org.onosproject.yangutils.datamodel.utils;
-import org.onosproject.yangutils.datamodel.exceptions.DataModelException;
-
import java.math.BigDecimal;
import java.util.ArrayList;
+import org.onosproject.yangutils.datamodel.DefaultLocationInfo;
+import org.onosproject.yangutils.datamodel.exceptions.DataModelException;
+
/**
* The "fraction-digits" statement, which is a substatement to the
* "type" statement, MUST be present if the type is "decimal64". It
@@ -56,7 +57,7 @@
/**
* Represents the decimal64 value range based on fraction-digits.
*/
-public final class FractionDigits {
+public final class FractionDigits extends DefaultLocationInfo {
public static class Range {
private double min;
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/utils/builtindatatype/YangInt16.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/utils/builtindatatype/YangInt16.java
index 9124356..978463b 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/utils/builtindatatype/YangInt16.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/utils/builtindatatype/YangInt16.java
@@ -18,12 +18,15 @@
import java.io.Serializable;
+import org.onosproject.yangutils.datamodel.DefaultLocationInfo;
+
/**
* Handles the YANG's int16 data type processing.
*
* int16 represents integer values between -32768 and 32767, inclusively.
*/
-public class YangInt16 implements YangBuiltInDataTypeInfo<YangInt16>, Serializable {
+public class YangInt16 extends DefaultLocationInfo
+ implements YangBuiltInDataTypeInfo<YangInt16>, Serializable {
private static final long serialVersionUID = 8006201667L;
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/utils/builtindatatype/YangInt32.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/utils/builtindatatype/YangInt32.java
index f8a3275..f344ebe 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/utils/builtindatatype/YangInt32.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/utils/builtindatatype/YangInt32.java
@@ -18,12 +18,15 @@
import java.io.Serializable;
+import org.onosproject.yangutils.datamodel.DefaultLocationInfo;
+
/**
* Handles the YANG's int32 data type processing.
*
* int32 represents integer values between -2147483648 and 2147483647, inclusively.
*/
-public class YangInt32 implements YangBuiltInDataTypeInfo<YangInt32>, Serializable {
+public class YangInt32 extends DefaultLocationInfo
+ implements YangBuiltInDataTypeInfo<YangInt32>, Serializable {
private static final long serialVersionUID = 8006201666L;
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/utils/builtindatatype/YangInt64.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/utils/builtindatatype/YangInt64.java
index 26e9237..779ce8f 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/utils/builtindatatype/YangInt64.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/utils/builtindatatype/YangInt64.java
@@ -18,12 +18,15 @@
import java.io.Serializable;
+import org.onosproject.yangutils.datamodel.DefaultLocationInfo;
+
/**
* Handles the YANG's int8 data type processing.
*
* int8 represents integer values between -9223372036854775808 and 9223372036854775807, inclusively.
*/
-public class YangInt64 implements YangBuiltInDataTypeInfo<YangInt64>, Serializable {
+public class YangInt64 extends DefaultLocationInfo
+ implements YangBuiltInDataTypeInfo<YangInt64>, Serializable {
private static final long serialVersionUID = 8006201665L;
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/utils/builtindatatype/YangInt8.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/utils/builtindatatype/YangInt8.java
index 455e343..cdf94ed 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/utils/builtindatatype/YangInt8.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/utils/builtindatatype/YangInt8.java
@@ -18,12 +18,15 @@
import java.io.Serializable;
+import org.onosproject.yangutils.datamodel.DefaultLocationInfo;
+
/**
* Handles the YANG's int8 data type processing.
*
* int8 represents integer values between -128 and 127, inclusively.
*/
-public class YangInt8 implements YangBuiltInDataTypeInfo<YangInt8>, Serializable {
+public class YangInt8 extends DefaultLocationInfo
+ implements YangBuiltInDataTypeInfo<YangInt8>, Serializable {
private static final long serialVersionUID = 8006201664L;
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/utils/builtindatatype/YangUint16.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/utils/builtindatatype/YangUint16.java
index 310f9d6..4930414 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/utils/builtindatatype/YangUint16.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/utils/builtindatatype/YangUint16.java
@@ -18,12 +18,14 @@
import java.io.Serializable;
+import org.onosproject.yangutils.datamodel.DefaultLocationInfo;
/**
* Handles the YANG's Uint16 data type processing.
*
* Uint16 represents integer values between 0 and 65535, inclusively.
*/
-public class YangUint16 implements YangBuiltInDataTypeInfo<YangUint16>, Serializable {
+public class YangUint16 extends DefaultLocationInfo
+ implements YangBuiltInDataTypeInfo<YangUint16>, Serializable {
private static final long serialVersionUID = 8006201663L;
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/utils/builtindatatype/YangUint32.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/utils/builtindatatype/YangUint32.java
index 287d284..0e35027 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/utils/builtindatatype/YangUint32.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/utils/builtindatatype/YangUint32.java
@@ -18,12 +18,15 @@
import java.io.Serializable;
+import org.onosproject.yangutils.datamodel.DefaultLocationInfo;
+
/**
* Handles the YANG's Uint32 data type processing.
*
* Uint32 represents integer values between 0 and 4294967295, inclusively.
*/
-public class YangUint32 implements YangBuiltInDataTypeInfo<YangUint32>, Serializable {
+public class YangUint32 extends DefaultLocationInfo
+ implements YangBuiltInDataTypeInfo<YangUint32>, Serializable {
private static final long serialVersionUID = 8006201662L;
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/utils/builtindatatype/YangUint64.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/utils/builtindatatype/YangUint64.java
index 16576c9..ca6a112 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/utils/builtindatatype/YangUint64.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/utils/builtindatatype/YangUint64.java
@@ -19,12 +19,15 @@
import java.io.Serializable;
import java.math.BigInteger;
+import org.onosproject.yangutils.datamodel.DefaultLocationInfo;
+
/**
* Handles the YANG's Uint16 data type processing.
*
* Uint64 represents integer values between 0 and 18446744073709551615, inclusively.
*/
-public class YangUint64 implements YangBuiltInDataTypeInfo<YangUint64>, Serializable {
+public class YangUint64 extends DefaultLocationInfo
+ implements YangBuiltInDataTypeInfo<YangUint64>, Serializable {
private static final long serialVersionUID = 8006201661L;
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/utils/builtindatatype/YangUint8.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/utils/builtindatatype/YangUint8.java
index f2f4604..3c65d8c 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/utils/builtindatatype/YangUint8.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/utils/builtindatatype/YangUint8.java
@@ -18,12 +18,15 @@
import java.io.Serializable;
+import org.onosproject.yangutils.datamodel.DefaultLocationInfo;
+
/**
* Handles the YANG's Uint8 data type processing.
*
* Uint8 represents integer values between 0 and 255, inclusively.
*/
-public class YangUint8 implements YangBuiltInDataTypeInfo<YangUint8>, Serializable {
+public class YangUint8 extends DefaultLocationInfo
+ implements YangBuiltInDataTypeInfo<YangUint8>, Serializable {
private static final long serialVersionUID = 8006201660L;
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());
diff --git a/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/IntraFileUsesLinkingTest.java b/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/IntraFileUsesLinkingTest.java
index 716e21c..6d81c09 100644
--- a/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/IntraFileUsesLinkingTest.java
+++ b/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/IntraFileUsesLinkingTest.java
@@ -262,7 +262,8 @@
thrown.expect(LinkerException.class);
thrown.expectMessage(
- "YANG file error: Duplicate input identifier detected, same as leaf \"zip-code\"");
+ "YANG file error: Duplicate input identifier detected, same as leaf \"zip-code in 7 at 13 in " +
+ "src/test/resources/SelfResolutionGroupingReferencingItselfFailureScenerio.yang\"");
YangNode node = manager
.getDataModel("src/test/resources/SelfResolutionGroupingReferencingItselfFailureScenerio.yang");
@@ -372,7 +373,8 @@
thrown.expect(ParserException.class);
thrown.expectMessage(
- "YANG file error: Duplicate input identifier detected, same as uses \"failure\"");
+ "YANG file error: Duplicate input identifier detected, same as uses \"failure in 10 at 13 in" +
+ " src/test/resources/SelfResolutionGroupingHavingSameUsesManyTimes.yang\"");
YangNode node = manager
.getDataModel("src/test/resources/SelfResolutionGroupingHavingSameUsesManyTimes.yang");
}
diff --git a/plugin/src/test/resources/augmentTranslator/test5.yang b/plugin/src/test/resources/augmentTranslator/test5.yang
new file mode 100644
index 0000000..b7cf234
--- /dev/null
+++ b/plugin/src/test/resources/augmentTranslator/test5.yang
@@ -0,0 +1,25 @@
+module test5 {
+ namespace "test:test";
+ prefix test5 ;
+
+ import test{
+ prefix test;
+ }
+ organization "";
+ contact "";
+
+ description
+ "Defines basic service types for L3VPN service.";
+
+ revision "2015-12-16" {
+ reference "";
+ }
+
+ augment /test:cont1 {
+ leaf leaf1 {
+ type int32;
+ }
+ }
+
+}
+