[ONOS-5142] [ONOS-5137] defect fixes
Change-Id: I2856a7a41b242b16c981915dd97986aa9c6ab676
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 041ee58..1d4f2e9 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangAugment.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangAugment.java
@@ -83,8 +83,8 @@
*/
public abstract class YangAugment
extends YangNode
- implements YangLeavesHolder, YangCommonInfo, Parsable, CollisionDetector, YangAugmentedInfo, Resolvable,
- YangXPathResolver, YangWhenHolder, YangIfFeatureHolder, YangTranslatorOperatorNode {
+ implements YangLeavesHolder, YangCommonInfo, Parsable, CollisionDetector, Resolvable,
+ YangXPathResolver, YangWhenHolder, YangIfFeatureHolder {
private static final long serialVersionUID = 806201602L;
@@ -144,15 +144,17 @@
* Create a YANG augment node.
*/
public YangAugment() {
- super(YangNodeType.AUGMENT_NODE, new HashMap<YangSchemaNodeIdentifier, YangSchemaNodeContextInfo>());
+ super(YangNodeType.AUGMENT_NODE, new HashMap<>());
listOfLeaf = new LinkedList<>();
listOfLeafList = new LinkedList<>();
+ targetNode = new LinkedList<>();
+ ifFeatureList = new LinkedList<>();
resolvableStatus = ResolvableStatus.UNRESOLVED;
}
@Override
public void addToChildSchemaMap(YangSchemaNodeIdentifier schemaNodeIdentifier,
- YangSchemaNodeContextInfo yangSchemaNodeContextInfo)
+ YangSchemaNodeContextInfo yangSchemaNodeContextInfo)
throws DataModelException {
getYsnContextInfoMap().put(schemaNodeIdentifier, yangSchemaNodeContextInfo);
YangSchemaNodeContextInfo yangSchemaNodeContextInfo1 = new YangSchemaNodeContextInfo();
@@ -164,7 +166,7 @@
@Override
public void setNameSpaceAndAddToParentSchemaMap() {
// Get parent namespace.
- String nameSpace = this.getParent().getNameSpace();
+ String nameSpace = this.getParent().getNameSpace();
// Set namespace for self node.
setNameSpace(nameSpace);
/*
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangAugmentableNode.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangAugmentableNode.java
index 7aa4b0c..5fb0653 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangAugmentableNode.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangAugmentableNode.java
@@ -28,21 +28,21 @@
*
* @param augmentInfo augment info of node
*/
- void addAugmentation(YangAugmentedInfo augmentInfo);
+ void addAugmentation(YangAugment augmentInfo);
/**
* Removes augment info from the node.
*
* @param augmentInfo augment info of node
*/
- void removeAugmentation(YangAugmentedInfo augmentInfo);
+ void removeAugmentation(YangAugment augmentInfo);
/**
* Returns list of augment info.
*
* @return list of augment info
*/
- List<YangAugmentedInfo> getAugmentedInfoList();
+ List<YangAugment> getAugmentedInfoList();
/**
* Sets the isAugmented flag.
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangAugmentedInfo.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangAugmentedInfo.java
deleted file mode 100644
index b6e55e6..0000000
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangAugmentedInfo.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * 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;
-
-/**
- * Abstraction of an entity which represents YANG augmented info.
- */
-public interface YangAugmentedInfo {
-}
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangAugmentedOpParamInfo.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangAugmentedOpParamInfo.java
deleted file mode 100644
index b9c1a3a..0000000
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangAugmentedOpParamInfo.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * 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;
-
-/**
- * Abstraction of an entity which represent operation parameter info for augmentable node.
- */
-public interface YangAugmentedOpParamInfo extends YangAugmentedInfo {
-
- /**
- * Returns class object of base class.
- *
- * @return class object of base class
- */
- Class<?> getBaseClass();
-
- /**
- * Returns if augmented info's contents matches.
- *
- * @param augmentedInfo augmented info
- * @return true or false
- */
- boolean isFilterContentMatch(Object augmentedInfo);
-}
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 b849257..38f4e01 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangCase.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangCase.java
@@ -19,6 +19,7 @@
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;
@@ -135,7 +136,7 @@
*/
private List<YangIfFeature> ifFeatureList;
- private List<YangAugmentedInfo> yangAugmentedInfo = new ArrayList<>();
+ private List<YangAugment> yangAugmentedInfo = new ArrayList<>();
private boolean isAugmented;
@@ -143,9 +144,10 @@
* Creates a choice node.
*/
public YangCase() {
- super(YangNodeType.CASE_NODE, new HashMap<YangSchemaNodeIdentifier, YangSchemaNodeContextInfo>());
+ super(YangNodeType.CASE_NODE, new HashMap<>());
listOfLeaf = new LinkedList<>();
listOfLeafList = new LinkedList<>();
+ ifFeatureList = new LinkedList<>();
}
@Override
@@ -407,17 +409,17 @@
}
@Override
- public void addAugmentation(YangAugmentedInfo augmentInfo) {
+ public void addAugmentation(YangAugment augmentInfo) {
yangAugmentedInfo.add(augmentInfo);
}
@Override
- public void removeAugmentation(YangAugmentedInfo augmentInfo) {
+ public void removeAugmentation(YangAugment augmentInfo) {
yangAugmentedInfo.remove(augmentInfo);
}
@Override
- public List<YangAugmentedInfo> getAugmentedInfoList() {
+ public List<YangAugment> getAugmentedInfoList() {
return yangAugmentedInfo;
}
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangChoice.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangChoice.java
index 7647e0d..8aaeeaa 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangChoice.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangChoice.java
@@ -19,6 +19,7 @@
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;
@@ -151,7 +152,7 @@
*/
private List<YangIfFeature> ifFeatureList;
- private List<YangAugmentedInfo> yangAugmentedInfo = new ArrayList<>();
+ private List<YangAugment> yangAugmentedInfo = new ArrayList<>();
/**
* YANG application error information.
@@ -164,8 +165,9 @@
* Create a choice node.
*/
public YangChoice() {
- super(YangNodeType.CHOICE_NODE, new HashMap<YangSchemaNodeIdentifier, YangSchemaNodeContextInfo>());
+ super(YangNodeType.CHOICE_NODE, new HashMap<>());
yangAppErrorInfo = new YangAppErrorInfo();
+ ifFeatureList = new LinkedList<>();
yangAppErrorInfo.setErrorTag(DATA_MISSING_ERROR_TAG);
yangAppErrorInfo.setErrorAppTag(MISSING_CHOICE_ERROR_APP_TAG);
yangAppErrorInfo.setErrorAppPath(ERROR_PATH_MISSING_CHOICE);
@@ -449,17 +451,17 @@
}
@Override
- public void addAugmentation(YangAugmentedInfo augmentInfo) {
+ public void addAugmentation(YangAugment augmentInfo) {
yangAugmentedInfo.add(augmentInfo);
}
@Override
- public void removeAugmentation(YangAugmentedInfo augmentInfo) {
+ public void removeAugmentation(YangAugment augmentInfo) {
yangAugmentedInfo.remove(augmentInfo);
}
@Override
- public List<YangAugmentedInfo> getAugmentedInfoList() {
+ public List<YangAugment> getAugmentedInfoList() {
return yangAugmentedInfo;
}
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 4099f47..c7f5605 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangCompilerAnnotation.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangCompilerAnnotation.java
@@ -55,7 +55,7 @@
/**
* Path of compiler-annotation.
*/
- List<YangAtomicPath> atomicPathList = new LinkedList<>();
+ private List<YangAtomicPath> atomicPathList = new LinkedList<>();
/**
* Resolution status.
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 a0275eb..606c7f7 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangContainer.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangContainer.java
@@ -128,7 +128,7 @@
*/
private String reference;
- private List<YangAugmentedInfo> yangAugmentedInfo = new ArrayList<>();
+ private List<YangAugment> yangAugmentedInfo = new ArrayList<>();
private boolean isAugmented;
@@ -156,14 +156,16 @@
* Create a container node.
*/
public YangContainer() {
- super(YangNodeType.CONTAINER_NODE, new HashMap<YangSchemaNodeIdentifier, YangSchemaNodeContextInfo>());
+ super(YangNodeType.CONTAINER_NODE, new HashMap<>());
listOfLeaf = new LinkedList<>();
listOfLeafList = new LinkedList<>();
+ mustConstraintList = new LinkedList<>();
+ ifFeatureList = new LinkedList<>();
}
@Override
public void addToChildSchemaMap(YangSchemaNodeIdentifier schemaNodeIdentifier,
- YangSchemaNodeContextInfo yangSchemaNodeContextInfo) {
+ YangSchemaNodeContextInfo yangSchemaNodeContextInfo) {
getYsnContextInfoMap().put(schemaNodeIdentifier, yangSchemaNodeContextInfo);
}
@@ -481,17 +483,17 @@
}
@Override
- public void addAugmentation(YangAugmentedInfo augmentInfo) {
+ public void addAugmentation(YangAugment augmentInfo) {
yangAugmentedInfo.add(augmentInfo);
}
@Override
- public void removeAugmentation(YangAugmentedInfo augmentInfo) {
+ public void removeAugmentation(YangAugment augmentInfo) {
yangAugmentedInfo.remove(augmentInfo);
}
@Override
- public List<YangAugmentedInfo> getAugmentedInfoList() {
+ public List<YangAugment> getAugmentedInfoList() {
return yangAugmentedInfo;
}
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 863d03c..f7d53cc 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangDerivedInfo.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangDerivedInfo.java
@@ -66,12 +66,12 @@
/**
* Line number of pattern restriction in YANG file.
*/
- private int lineNumber;
+ private transient int lineNumber;
/**
* Position of pattern restriction in line.
*/
- private int charPositionInLine;
+ private transient int charPositionInLine;
/**
* Effective built-in type, requried in case type of typedef is again a
@@ -326,7 +326,7 @@
*/
return RESOLVED;
}
- } else if (getEffectiveBuiltInType() == DECIMAL64) {
+ } else if (getEffectiveBuiltInType() == DECIMAL64) {
if (baseType.getDataTypeExtendedInfo() != null) {
if (((YangDecimal64) baseType.getDataTypeExtendedInfo()).getRangeRestrictedExtendedInfo() == null) {
resolveRangeRestriction(null);
@@ -340,7 +340,7 @@
if (!(((YangDecimal64) baseType.getDataTypeExtendedInfo())
.getRangeRestrictedExtendedInfo() instanceof YangRangeRestriction)) {
throw new DataModelException("Linker error: Referred typedef restriction info is" +
- " of invalid type.");
+ " of invalid type.");
}
resolveRangeRestriction((YangRangeRestriction) ((YangDecimal64) baseType
.getDataTypeExtendedInfo()).getRangeRestrictedExtendedInfo());
@@ -400,7 +400,7 @@
return INTRA_FILE_RESOLVED;
}
setEffectiveBuiltInType(((YangDerivedInfo<?>) baseType.getDataTypeExtendedInfo())
- .getEffectiveBuiltInType());
+ .getEffectiveBuiltInType());
YangDerivedInfo refDerivedInfo = (YangDerivedInfo<?>) baseType.getDataTypeExtendedInfo();
/*
* Check whether the effective built-in type can have range
@@ -418,7 +418,7 @@
} else {
if (!(refDerivedInfo.getResolvedExtendedInfo() instanceof YangRangeRestriction)) {
throw new DataModelException("Linker error: Referred typedef restriction info is of invalid " +
- "type.");
+ "type.");
}
resolveRangeRestriction((YangRangeRestriction) refDerivedInfo.getResolvedExtendedInfo());
/*
@@ -444,7 +444,7 @@
} else {
if (!(refDerivedInfo.getResolvedExtendedInfo() instanceof YangStringRestriction)) {
throw new DataModelException("Linker error: Referred typedef restriction info is of invalid " +
- "type.");
+ "type.");
}
resolveStringRestriction((YangStringRestriction) refDerivedInfo.getResolvedExtendedInfo());
/*
@@ -466,7 +466,7 @@
} else {
if (!(refDerivedInfo.getResolvedExtendedInfo() instanceof YangRangeRestriction)) {
throw new DataModelException("Linker error: Referred typedef restriction info is of invalid " +
- "type.");
+ "type.");
}
resolveBinaryRestriction((YangRangeRestriction) refDerivedInfo.getResolvedExtendedInfo());
/*
@@ -488,7 +488,7 @@
} else {
if (!(refDerivedInfo.getResolvedExtendedInfo() instanceof YangRangeRestriction)) {
throw new DataModelException("Linker error: Referred typedef restriction info is of invalid " +
- "type.");
+ "type.");
}
resolveRangeRestriction((YangRangeRestriction) refDerivedInfo
.getResolvedExtendedInfo());
@@ -573,7 +573,7 @@
if (rangeRestrictionString != null || patternRestriction != null) {
DataModelException dataModelException =
new DataModelException("YANG file error: for binary " +
- "range restriction or pattern restriction is not allowed.");
+ "range restriction or pattern restriction is not allowed.");
dataModelException.setLine(lineNumber);
dataModelException.setCharPosition(charPositionInLine);
throw dataModelException;
@@ -683,7 +683,7 @@
* @param curRestriction self restriction
*/
private void resolveLengthAndRangeRestriction(YangRangeRestriction refRestriction,
- YangRangeRestriction curRestriction)
+ YangRangeRestriction curRestriction)
throws DataModelException {
for (Object curInterval : curRestriction.getAscendingRangeIntervals()) {
if (!(curInterval instanceof YangRangeInterval)) {
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 c793399..42ffaa6 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangEnumeration.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangEnumeration.java
@@ -45,7 +45,7 @@
*/
public YangEnumeration() {
super(YangNodeType.ENUMERATION_NODE, null);
- setEnumSet(new TreeSet<YangEnum>());
+ setEnumSet(new TreeSet<>());
}
@Override
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 6f9d9b0..e71432f 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangGrouping.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangGrouping.java
@@ -109,12 +109,17 @@
private YangStatusType status;
/**
+ * Grouping depth.
+ */
+ private int groupingDepth;
+
+ /**
* Creates the grouping node.
*/
public YangGrouping() {
super(YangNodeType.GROUPING_NODE, null);
- listOfLeaf = new LinkedList<YangLeaf>();
- listOfLeafList = new LinkedList<YangLeafList>();
+ listOfLeaf = new LinkedList<>();
+ listOfLeafList = new LinkedList<>();
}
@Override
@@ -330,4 +335,22 @@
}
}
// TODO A grouping MUST NOT reference itself, neither directly nor indirectly through a chain of other groupings.
+
+ /**
+ * Returns grouping depth.
+ *
+ * @return grouping depth
+ */
+ public int getGroupingDepth() {
+ return groupingDepth;
+ }
+
+ /**
+ * Sets grouping depth.
+ *
+ * @param groupingDepth grouping depth
+ */
+ public void setGroupingDepth(int groupingDepth) {
+ this.groupingDepth = groupingDepth;
+ }
}
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 c2c8709..151477d 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangIfFeature.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangIfFeature.java
@@ -19,6 +19,7 @@
import java.io.Serializable;
import java.util.Iterator;
import java.util.List;
+
import org.onosproject.yangutils.datamodel.exceptions.DataModelException;
import org.onosproject.yangutils.datamodel.utils.Parsable;
import org.onosproject.yangutils.datamodel.utils.ResolvableStatus;
@@ -52,17 +53,17 @@
/**
* if-feature argument.
*/
- YangNodeIdentifier name;
+ private YangNodeIdentifier name;
/**
* Referred feature information.
*/
- YangFeature referredFeature;
+ private YangFeature referredFeature;
/**
* Referred feature parent information.
*/
- YangNode referredFeatureHolder;
+ private YangNode referredFeatureHolder;
/**
* Status of resolution. If completely resolved enum value is "RESOLVED",
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 6a52f8f..bf8f4ab 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangInput.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangInput.java
@@ -20,6 +20,7 @@
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;
@@ -85,7 +86,7 @@
*/
private List<YangLeafList> listOfLeafList;
- private List<YangAugmentedInfo> yangAugmentedInfo = new ArrayList<>();
+ private List<YangAugment> yangAugmentedInfo = new ArrayList<>();
private boolean isAugmented;
@@ -93,7 +94,7 @@
* Create a rpc input node.
*/
public YangInput() {
- super(YangNodeType.INPUT_NODE, new HashMap<YangSchemaNodeIdentifier, YangSchemaNodeContextInfo>());
+ super(YangNodeType.INPUT_NODE, new HashMap<>());
listOfLeaf = new LinkedList<>();
listOfLeafList = new LinkedList<>();
}
@@ -203,17 +204,17 @@
}
@Override
- public void addAugmentation(YangAugmentedInfo augmentInfo) {
+ public void addAugmentation(YangAugment augmentInfo) {
yangAugmentedInfo.add(augmentInfo);
}
@Override
- public void removeAugmentation(YangAugmentedInfo augmentInfo) {
+ public void removeAugmentation(YangAugment augmentInfo) {
yangAugmentedInfo.remove(augmentInfo);
}
@Override
- public List<YangAugmentedInfo> getAugmentedInfoList() {
+ public List<YangAugment> getAugmentedInfoList() {
return yangAugmentedInfo;
}
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 36d39bf..11132ff 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangLeaf.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangLeaf.java
@@ -137,6 +137,8 @@
* Creates a YANG leaf.
*/
public YangLeaf() {
+ mustConstraintList = new LinkedList<>();
+ ifFeatureList = new LinkedList<>();
}
/**
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 8a296ea..a743716 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangLeafList.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangLeafList.java
@@ -20,6 +20,7 @@
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
+
import org.onosproject.yangutils.datamodel.exceptions.DataModelException;
import org.onosproject.yangutils.datamodel.utils.Parsable;
import org.onosproject.yangutils.datamodel.utils.YangConstructType;
@@ -133,7 +134,7 @@
/**
* YANG Node in which the leaf is contained.
*/
- private transient YangLeavesHolder containedIn;
+ private YangLeavesHolder containedIn;
/**
* List of must statement constraints.
@@ -154,6 +155,8 @@
* Creates a YANG leaf-list.
*/
public YangLeafList() {
+ mustConstraintList = new LinkedList<>();
+ ifFeatureList = new LinkedList<>();
setMinElements(new YangMinElement());
setMaxElements(new YangMaxElement());
}
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 e06d5d5..7001539 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangList.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangList.java
@@ -90,7 +90,7 @@
/**
* Reference RFC 6020.
- *
+ * <p>
* The "key" statement, which MUST be present if the list represents
* configuration, and MAY be present otherwise, takes as an argument a
* string that specifies a space-separated list of leaf identifiers of this
@@ -98,39 +98,39 @@
* such leaf identifier MUST refer to a child leaf of the list. The leafs
* can be defined directly in sub-statements to the list, or in groupings
* used in the list.
- *
+ * <p>
* The combined values of all the leafs specified in the key are used to
* uniquely identify a list entry. All key leafs MUST be given values when a
* list entry is created. Thus, any default values in the key leafs or their
* types are ignored. It also implies that any mandatory statement in the
* key leafs are ignored.
- *
+ * <p>
* A leaf that is part of the key can be of any built-in or derived type,
* except it MUST NOT be the built-in type "empty".
- *
+ * <p>
* All key leafs in a list MUST have the same value for their "config" as
* the list itself.
- *
+ * <p>
* List of key leaf names.
*/
private List<String> keyList;
/**
* Reference RFC 6020.
- *
+ * <p>
* The "unique" statement is used to put constraints on valid list
* entries. It takes as an argument a string that contains a space-
* separated list of schema node identifiers, which MUST be given in the
* descendant form. Each such schema node identifier MUST refer to a leaf.
- *
+ * <p>
* If one of the referenced leafs represents configuration data, then
* all of the referenced leafs MUST represent configuration data.
- *
+ * <p>
* The "unique" constraint specifies that the combined values of all the
* leaf instances specified in the argument string, including leafs with
* default values, MUST be unique within all list entry instances in
* which all referenced leafs exist.
- *
+ * <p>
* List of unique leaf/leaf-list names
*/
private List<String> uniqueList;
@@ -145,36 +145,36 @@
*/
private List<YangLeafList> listOfLeafList;
- private List<YangAugmentedInfo> yangAugmentedInfo = new ArrayList<>();
+ private List<YangAugment> yangAugmentedInfo = new ArrayList<>();
/**
* Reference RFC 6020.
- *
+ * <p>
* The "max-elements" statement, which is optional, takes as an argument a
* positive integer or the string "unbounded", which puts a constraint on
* valid list entries. A valid leaf-list or list always has at most
* max-elements entries.
- *
+ * <p>
* If no "max-elements" statement is present, it defaults to "unbounded".
*/
private YangMaxElement maxElements;
/**
* Reference RFC 6020.
- *
+ * <p>
* The "min-elements" statement, which is optional, takes as an argument a
* non-negative integer that puts a constraint on valid list entries. A
* valid leaf-list or list MUST have at least min-elements entries.
- *
+ * <p>
* If no "min-elements" statement is present, it defaults to zero.
- *
+ * <p>
* The behavior of the constraint depends on the type of the leaf-list's or
* list's closest ancestor node in the schema tree that is not a non-
* presence container:
- *
+ * <p>
* o If this ancestor is a case node, the constraint is enforced if any
* other node from the case exists.
- *
+ * <p>
* o Otherwise, it is enforced if the ancestor node exists.
*/
private YangMinElement minElements;
@@ -215,14 +215,18 @@
* Creates a YANG list object.
*/
public YangList() {
- super(YangNodeType.LIST_NODE, new HashMap<YangSchemaNodeIdentifier, YangSchemaNodeContextInfo>());
+ super(YangNodeType.LIST_NODE, new HashMap<>());
listOfLeaf = new LinkedList<>();
listOfLeafList = new LinkedList<>();
+ mustConstraintList = new LinkedList<>();
+ ifFeatureList = new LinkedList<>();
+ uniqueList = new LinkedList<>();
+ keyList = new LinkedList<>();
}
@Override
public void addToChildSchemaMap(YangSchemaNodeIdentifier schemaNodeIdentifier,
- YangSchemaNodeContextInfo yangSchemaNodeContextInfo) {
+ YangSchemaNodeContextInfo yangSchemaNodeContextInfo) {
getYsnContextInfoMap().put(schemaNodeIdentifier, yangSchemaNodeContextInfo);
}
@@ -364,7 +368,7 @@
public void addKey(String key)
throws DataModelException {
if (getKeyList() == null) {
- setKeyList(new LinkedList<String>());
+ setKeyList(new LinkedList<>());
}
if (getKeyList().contains(key)) {
@@ -565,7 +569,7 @@
validateConfig(leaves, leafLists);
//A list must have atleast one key leaf if config is true
- if (isConfig && (keys == null || leaves == null) && !isUsesPresentInList()
+ if (isConfig && (keys.isEmpty() || leaves.isEmpty()) && !isUsesPresentInList()
&& !isListPresentInGrouping()) {
throw new DataModelException("A list must have atleast one key leaf if config is true;");
} else if (keys != null) {
@@ -732,17 +736,17 @@
}
@Override
- public void addAugmentation(YangAugmentedInfo augmentInfo) {
+ public void addAugmentation(YangAugment augmentInfo) {
yangAugmentedInfo.add(augmentInfo);
}
@Override
- public void removeAugmentation(YangAugmentedInfo augmentInfo) {
+ public void removeAugmentation(YangAugment augmentInfo) {
yangAugmentedInfo.remove(augmentInfo);
}
@Override
- public List<YangAugmentedInfo> getAugmentedInfoList() {
+ public List<YangAugment> getAugmentedInfoList() {
return yangAugmentedInfo;
}
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangModule.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangModule.java
index b6e27b7..78f3710 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangModule.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangModule.java
@@ -236,7 +236,7 @@
*/
public YangModule() {
- super(YangNodeType.MODULE_NODE, new HashMap<YangSchemaNodeIdentifier, YangSchemaNodeContextInfo>());
+ super(YangNodeType.MODULE_NODE, new HashMap<>());
derivedTypeResolutionList = new LinkedList<>();
augmentResolutionList = new LinkedList<>();
usesResolutionList = new LinkedList<>();
@@ -250,11 +250,12 @@
listOfLeaf = new LinkedList<>();
listOfLeafList = new LinkedList<>();
extensionList = new LinkedList<>();
+ listOfFeature = new LinkedList<>();
}
@Override
public void addToChildSchemaMap(YangSchemaNodeIdentifier schemaNodeIdentifier,
- YangSchemaNodeContextInfo yangSchemaNodeContextInfo) {
+ YangSchemaNodeContextInfo yangSchemaNodeContextInfo) {
getYsnContextInfoMap().put(schemaNodeIdentifier, yangSchemaNodeContextInfo);
}
@@ -565,11 +566,23 @@
*
* @param extensionList the list of extension
*/
- public void setExtensionList(List<YangExtension> extensionList) {
+ protected void setExtensionList(List<YangExtension> extensionList) {
this.extensionList = extensionList;
}
/**
+ * Adds to extension list.
+ *
+ * @param extension YANG extension
+ */
+ public void addToExtensionList(YangExtension extension) {
+ if (getExtensionList() == null) {
+ setExtensionList(new LinkedList<>());
+ }
+ getExtensionList().add(extension);
+ }
+
+ /**
* Returns the type of the parsed data.
*
* @return returns MODULE_DATA
@@ -643,7 +656,7 @@
@Override
public void addToResolutionList(YangResolutionInfo resolutionInfo,
- ResolvableType type) {
+ ResolvableType type) {
if (type == ResolvableType.YANG_DERIVED_DATA_TYPE) {
derivedTypeResolutionList.add(resolutionInfo);
} else if (type == ResolvableType.YANG_USES) {
@@ -665,7 +678,7 @@
@Override
public void setResolutionList(List<YangResolutionInfo> resolutionList,
- ResolvableType type) {
+ ResolvableType type) {
if (type == ResolvableType.YANG_DERIVED_DATA_TYPE) {
derivedTypeResolutionList = resolutionList;
} else if (type == ResolvableType.YANG_USES) {
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 81f0a28..92b192a 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangNode.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangNode.java
@@ -17,6 +17,7 @@
import java.io.Serializable;
import java.util.Map;
+
import org.onosproject.yangutils.datamodel.exceptions.DataModelException;
import org.onosproject.yangutils.datamodel.utils.Parsable;
@@ -112,7 +113,6 @@
*/
@SuppressWarnings("unused")
private YangNode() {
-
}
/**
@@ -373,13 +373,13 @@
if (nextNodeToClone == null) {
return;
} else {
- /**
+ /*
* Root level cloning is taken care in the caller.
*/
curTraversal = CHILD;
}
- /**
+ /*
* Caller ensures the cloning of the root nodes
*/
try {
@@ -394,12 +394,12 @@
if (curTraversal == CHILD) {
- /**
+ /*
* add the new node to the cloned tree.
*/
clonedTreeCurNode.addChild(newNode);
- /**
+ /*
* update the cloned tree's traversal current node as the
* new node.
*/
@@ -408,7 +408,7 @@
clonedTreeCurNode.addNextSibling(newNode);
clonedTreeCurNode = newNode;
- } else if (curTraversal == PARENT) {
+ } else {
if (clonedTreeCurNode instanceof YangLeavesHolder) {
updateClonedLeavesUnionEnumRef((YangLeavesHolder) clonedTreeCurNode);
}
@@ -418,7 +418,7 @@
if (curTraversal != PARENT && nextNodeToClone.getChild() != null) {
curTraversal = CHILD;
- /**
+ /*
* update the traversal's current node.
*/
nextNodeToClone = nextNodeToClone.getChild();
@@ -627,6 +627,26 @@
}
}
+ /**
+ * Sets YSN context info map.
+ *
+ * @param ysnContextInfoMap YSN context info map
+ */
+ public void setYsnContextInfoMap(Map<YangSchemaNodeIdentifier, YangSchemaNodeContextInfo> ysnContextInfoMap) {
+ this.ysnContextInfoMap = ysnContextInfoMap;
+ }
+
+ /**
+ * Adds to YSN context info map.
+ *
+ * @param yangSchemaNodeIdentifier YANG schema node identifier
+ * @param yangSchemaNodeContextInfo YANG schema node context info
+ */
+ public void addToYsnContextInfoMap(YangSchemaNodeIdentifier yangSchemaNodeIdentifier, YangSchemaNodeContextInfo
+ yangSchemaNodeContextInfo) {
+ getYsnContextInfoMap().put(yangSchemaNodeIdentifier, yangSchemaNodeContextInfo);
+ }
+
@Override
public void isValueValid(String value)
throws DataModelException {
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 f0f6f5c..4cd8b42 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangNotification.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangNotification.java
@@ -20,6 +20,7 @@
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;
@@ -112,7 +113,7 @@
*/
private List<YangIfFeature> ifFeatureList;
- private List<YangAugmentedInfo> yangAugmentedInfo = new ArrayList<>();
+ private List<YangAugment> yangAugmentedInfo = new ArrayList<>();
private boolean isAugmented;
@@ -120,9 +121,10 @@
* Create a notification node.
*/
public YangNotification() {
- super(YangNodeType.NOTIFICATION_NODE, new HashMap<YangSchemaNodeIdentifier, YangSchemaNodeContextInfo>());
+ super(YangNodeType.NOTIFICATION_NODE, new HashMap<>());
listOfLeaf = new LinkedList<>();
listOfLeafList = new LinkedList<>();
+ ifFeatureList = new LinkedList<>();
}
@Override
@@ -259,17 +261,17 @@
}
@Override
- public void addAugmentation(YangAugmentedInfo augmentInfo) {
+ public void addAugmentation(YangAugment augmentInfo) {
yangAugmentedInfo.add(augmentInfo);
}
@Override
- public void removeAugmentation(YangAugmentedInfo augmentInfo) {
+ public void removeAugmentation(YangAugment augmentInfo) {
yangAugmentedInfo.remove(augmentInfo);
}
@Override
- public List<YangAugmentedInfo> getAugmentedInfoList() {
+ public List<YangAugment> getAugmentedInfoList() {
return yangAugmentedInfo;
}
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 327146e..7f429f6 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangOutput.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangOutput.java
@@ -20,6 +20,7 @@
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;
@@ -84,7 +85,7 @@
*/
private List<YangLeafList> listOfLeafList;
- private List<YangAugmentedInfo> yangAugmentedInfo = new ArrayList<>();
+ private List<YangAugment> yangAugmentedInfo = new ArrayList<>();
private boolean isAugmented;
@@ -92,7 +93,7 @@
* Create a rpc output node.
*/
public YangOutput() {
- super(YangNodeType.OUTPUT_NODE, new HashMap<YangSchemaNodeIdentifier, YangSchemaNodeContextInfo>());
+ super(YangNodeType.OUTPUT_NODE, new HashMap<>());
listOfLeaf = new LinkedList<>();
listOfLeafList = new LinkedList<>();
}
@@ -202,17 +203,17 @@
}
@Override
- public void addAugmentation(YangAugmentedInfo augmentInfo) {
+ public void addAugmentation(YangAugment augmentInfo) {
yangAugmentedInfo.add(augmentInfo);
}
@Override
- public void removeAugmentation(YangAugmentedInfo augmentInfo) {
+ public void removeAugmentation(YangAugment augmentInfo) {
yangAugmentedInfo.remove(augmentInfo);
}
@Override
- public List<YangAugmentedInfo> getAugmentedInfoList() {
+ public List<YangAugment> getAugmentedInfoList() {
return yangAugmentedInfo;
}
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 b904da6..3216b30 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangRpc.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangRpc.java
@@ -88,10 +88,11 @@
private List<YangIfFeature> ifFeatureList;
/**
- * Create a rpc node.
+ * Creates a rpc node.
*/
public YangRpc() {
- super(YangNodeType.RPC_NODE, new HashMap<YangSchemaNodeIdentifier, YangSchemaNodeContextInfo>());
+ super(YangNodeType.RPC_NODE, new HashMap<>());
+ ifFeatureList = new LinkedList<>();
}
@Override
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 bbec4b7..9f851f0 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangSchemaNodeContextInfo.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangSchemaNodeContextInfo.java
@@ -27,17 +27,17 @@
private static final long serialVersionUID = 806201613L;
// Current schema node
- YangSchemaNode schemaNode;
+ private YangSchemaNode schemaNode;
/*
* Context switched schema node, it will be non null only for the scenarios
* in which context switch is there like augment, choice etc, in this case
* this node will point to context switched node like YangAugmentInfo.
*/
- YangSchemaNode contextSwitchedNode;
+ private YangSchemaNode contextSwitchedNode;
// Default instance of YangSchemaNodeContextInfo.
- YangSchemaNodeContextInfo() {
+ public YangSchemaNodeContextInfo() {
}
/**
@@ -54,7 +54,7 @@
*
* @param schemaNode YANG schema node
*/
- public void setSchemaNode(YangSchemaNode schemaNode) {
+ void setSchemaNode(YangSchemaNode schemaNode) {
this.schemaNode = schemaNode;
}
@@ -72,7 +72,7 @@
*
* @param contextSwitchedNode context switched node
*/
- public void setContextSwitchedNode(YangSchemaNode contextSwitchedNode) {
+ void setContextSwitchedNode(YangSchemaNode contextSwitchedNode) {
this.contextSwitchedNode = contextSwitchedNode;
}
}
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 8c96630..68e9f52 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangSchemaNodeIdentifier.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangSchemaNodeIdentifier.java
@@ -28,10 +28,10 @@
private static final long serialVersionUID = 806201648L;
// Name of YANG data node.
- String name;
+ private String name;
// Namespace of YANG data node.
- String namespace;
+ private String namespace;
/**
* Creates an instance of YANG data node identifier.
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangSubModule.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangSubModule.java
index 115aaa7..b5e1d42 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangSubModule.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangSubModule.java
@@ -238,7 +238,7 @@
* Creates a sub module node.
*/
public YangSubModule() {
- super(YangNodeType.SUB_MODULE_NODE, new HashMap<YangSchemaNodeIdentifier, YangSchemaNodeContextInfo>());
+ super(YangNodeType.SUB_MODULE_NODE, new HashMap<>());
derivedTypeResolutionList = new LinkedList<>();
augmentResolutionList = new LinkedList<>();
usesResolutionList = new LinkedList<>();
@@ -253,11 +253,12 @@
listOfLeafList = new LinkedList<>();
extensionList = new LinkedList<>();
compilerAnnotationList = new LinkedList<>();
+ listOfFeature = new LinkedList<>();
}
@Override
public void addToChildSchemaMap(YangSchemaNodeIdentifier schemaNodeIdentifier,
- YangSchemaNodeContextInfo yangSchemaNodeContextInfo) {
+ YangSchemaNodeContextInfo yangSchemaNodeContextInfo) {
getYsnContextInfoMap().put(schemaNodeIdentifier, yangSchemaNodeContextInfo);
}
@@ -602,7 +603,7 @@
@Override
public void addToResolutionList(YangResolutionInfo resolutionInfo,
- ResolvableType type) {
+ ResolvableType type) {
if (type == ResolvableType.YANG_DERIVED_DATA_TYPE) {
derivedTypeResolutionList.add(resolutionInfo);
} else if (type == ResolvableType.YANG_USES) {
@@ -624,7 +625,7 @@
@Override
public void setResolutionList(List<YangResolutionInfo> resolutionList,
- ResolvableType type) {
+ ResolvableType type) {
if (type == ResolvableType.YANG_DERIVED_DATA_TYPE) {
derivedTypeResolutionList = resolutionList;
} else if (type == ResolvableType.YANG_USES) {
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 fccf76f..71be734 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangUses.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/YangUses.java
@@ -148,9 +148,11 @@
super(YangNodeType.USES_NODE, null);
nodeIdentifier = new YangNodeIdentifier();
resolvableStatus = ResolvableStatus.UNRESOLVED;
- resolvedGroupingNodes = new LinkedList<YangNode>();
- resolvedGroupingLeaves = new LinkedList<List<YangLeaf>>();
- resolvedGroupingLeafLists = new LinkedList<List<YangLeafList>>();
+ resolvedGroupingNodes = new LinkedList<>();
+ resolvedGroupingLeaves = new LinkedList<>();
+ resolvedGroupingLeafLists = new LinkedList<>();
+ ifFeatureList = new LinkedList<>();
+ entityToResolveInfoList = new LinkedList<>();
}
@Override
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 b1375a7..ca2dd6b 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
@@ -21,8 +21,8 @@
public class DataModelException extends Exception {
private static final long serialVersionUID = 201601270658L;
- private int lineNumber;
- private int charPositionInLine;
+ private transient int lineNumber;
+ private transient int charPositionInLine;
/**
* Creates a data model exception with message.
@@ -37,7 +37,7 @@
* Creates exception from message and cause.
*
* @param message the detail of exception in string
- * @param cause underlying cause of the error
+ * @param cause underlying cause of the error
*/
public DataModelException(final String message, final Throwable cause) {
super(message, cause);
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/javadatamodel/HasJavaQualifiedTypeInfo.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/javadatamodel/HasJavaQualifiedTypeInfo.java
deleted file mode 100644
index 1eec1e2..0000000
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/javadatamodel/HasJavaQualifiedTypeInfo.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * 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.javadatamodel;
-
-/**
- * Represents the entity which contains the qualified type info of leaf / leaf-list.
- */
-public interface HasJavaQualifiedTypeInfo {
- /**
- * Returns java qualified type info.
- *
- * @return java qualified type info
- */
- JavaQualifiedTypeInfo getJavaQualifiedTypeInfo();
-}
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/javadatamodel/JavaQualifiedTypeInfo.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/javadatamodel/JavaQualifiedTypeInfo.java
index 49208bc..e3d7952 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/javadatamodel/JavaQualifiedTypeInfo.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/javadatamodel/JavaQualifiedTypeInfo.java
@@ -37,21 +37,39 @@
protected String classInfo;
/**
- * Returns class info.
+ * Returns the imported package info.
*
- * @return class info
+ * @return the imported package info
+ */
+ public String getPkgInfo() {
+ return pkgInfo;
+ }
+
+ /**
+ * Sets the imported package info.
+ *
+ * @param pkgInfo the imported package info
+ */
+ public void setPkgInfo(String pkgInfo) {
+ this.pkgInfo = pkgInfo;
+ }
+
+ /**
+ * Returns the imported class/interface info.
+ *
+ * @return the imported class/interface info
*/
public String getClassInfo() {
return classInfo;
}
/**
- * Returns package info.
+ * Sets the imported class/interface info.
*
- * @return package info
+ * @param classInfo the imported class/interface info
*/
- public String getPkgInfo() {
- return pkgInfo;
+ public void setClassInfo(String classInfo) {
+ this.classInfo = classInfo;
}
}
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaQualifiedTypeInfoContainer.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/javadatamodel/JavaQualifiedTypeInfoContainer.java
similarity index 83%
rename from plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaQualifiedTypeInfoContainer.java
rename to datamodel/src/main/java/org/onosproject/yangutils/datamodel/javadatamodel/JavaQualifiedTypeInfoContainer.java
index 7791773..db85d1a 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaQualifiedTypeInfoContainer.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/javadatamodel/JavaQualifiedTypeInfoContainer.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.onosproject.yangutils.translator.tojava;
+package org.onosproject.yangutils.datamodel.javadatamodel;
/**
* Maintain the java qualified access details for an attribute or a class.
@@ -25,12 +25,12 @@
*
* @return java qualified type details
*/
- JavaQualifiedTypeInfoTranslator getJavaQualifiedInfo();
+ JavaQualifiedTypeInfo getJavaQualifiedInfo();
/**
* Assign the qualified type info.
*
* @param typeInfo qualified type information
*/
- void setJavaQualifiedInfo(JavaQualifiedTypeInfoTranslator typeInfo);
+ void setJavaQualifiedInfo(JavaQualifiedTypeInfo typeInfo);
}
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/javadatamodel/YangJavaAugment.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/javadatamodel/YangJavaAugment.java
index 75274ae..fa11c6e 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/javadatamodel/YangJavaAugment.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/javadatamodel/YangJavaAugment.java
@@ -37,7 +37,6 @@
return javaFileInfo;
}
-
@Override
public String getJavaPackage() {
return getJavaFileInfo().getPackage();
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/javadatamodel/YangJavaLeaf.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/javadatamodel/YangJavaLeaf.java
index 689358e..20a9517 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/javadatamodel/YangJavaLeaf.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/javadatamodel/YangJavaLeaf.java
@@ -21,32 +21,37 @@
/**
* Represent YANG java leaf.
*/
-public class YangJavaLeaf
- extends YangLeaf
- implements HasJavaQualifiedTypeInfo {
+public class YangJavaLeaf extends YangLeaf implements JavaQualifiedTypeInfoContainer {
private static final long serialVersionUID = 208201617L;
protected JavaQualifiedTypeInfo javaQualifiedTypeInfo;
/**
+ * Sets java qualified type info.
+ *
+ * @param javaQualifiedTypeInfo java qualified type info
+ */
+ public void setJavaQualifiedInfo(JavaQualifiedTypeInfo javaQualifiedTypeInfo) {
+ this.javaQualifiedTypeInfo = javaQualifiedTypeInfo;
+ }
+
+ /**
* Returns java qualified type info.
*
* @return java qualified type info
*/
- @Override
- public JavaQualifiedTypeInfo getJavaQualifiedTypeInfo() {
+ public JavaQualifiedTypeInfo getJavaQualifiedInfo() {
return javaQualifiedTypeInfo;
}
-
@Override
public String getJavaPackage() {
- return getJavaQualifiedTypeInfo().getPkgInfo();
+ return getJavaQualifiedInfo().getPkgInfo();
}
@Override
public String getJavaClassNameOrBuiltInType() {
- return getJavaQualifiedTypeInfo().getClassInfo();
+ return getJavaQualifiedInfo().getClassInfo();
}
}
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/javadatamodel/YangJavaLeafList.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/javadatamodel/YangJavaLeafList.java
index c229b1f..1389f8a 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/javadatamodel/YangJavaLeafList.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/javadatamodel/YangJavaLeafList.java
@@ -21,9 +21,7 @@
/**
* Represents YANG java leaf list.
*/
-public class YangJavaLeafList
- extends YangLeafList
- implements HasJavaQualifiedTypeInfo {
+public class YangJavaLeafList extends YangLeafList implements JavaQualifiedTypeInfoContainer {
private static final long serialVersionUID = 208201618L;
@@ -34,18 +32,26 @@
*
* @return java qualified type info
*/
- @Override
- public JavaQualifiedTypeInfo getJavaQualifiedTypeInfo() {
+ public JavaQualifiedTypeInfo getJavaQualifiedInfo() {
return javaQualifiedTypeInfo;
}
+ /**
+ * Sets java qualified type info.
+ *
+ * @param javaQualifiedTypeInfo java qualified type info
+ */
+ public void setJavaQualifiedInfo(JavaQualifiedTypeInfo javaQualifiedTypeInfo) {
+ this.javaQualifiedTypeInfo = javaQualifiedTypeInfo;
+ }
+
@Override
public String getJavaPackage() {
- return getJavaQualifiedTypeInfo().getPkgInfo();
+ return getJavaQualifiedInfo().getPkgInfo();
}
@Override
public String getJavaClassNameOrBuiltInType() {
- return getJavaQualifiedTypeInfo().getClassInfo();
+ return getJavaQualifiedInfo().getClassInfo();
}
}
diff --git a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/javadatamodel/YangJavaType.java b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/javadatamodel/YangJavaType.java
index 3fd2fb6..bbd2933 100644
--- a/datamodel/src/main/java/org/onosproject/yangutils/datamodel/javadatamodel/YangJavaType.java
+++ b/datamodel/src/main/java/org/onosproject/yangutils/datamodel/javadatamodel/YangJavaType.java
@@ -21,8 +21,9 @@
/**
* Represents YANG java type.
*/
-public class YangJavaType extends YangType {
+public class YangJavaType extends YangType implements JavaQualifiedTypeInfoContainer {
+ private static final long serialVersionUID = 19082016001L;
protected JavaQualifiedTypeInfo javaQualifiedTypeInfo;
/**
@@ -30,7 +31,14 @@
*
* @return java qualified type info
*/
- public JavaQualifiedTypeInfo getJavaQualifiedTypeInfo() {
+
+ @Override
+ public JavaQualifiedTypeInfo getJavaQualifiedInfo() {
return javaQualifiedTypeInfo;
}
+
+ @Override
+ public void setJavaQualifiedInfo(JavaQualifiedTypeInfo typeInfo) {
+ this.javaQualifiedTypeInfo = typeInfo;
+ }
}
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 fd38fa5..9480198 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
@@ -226,7 +226,7 @@
* @throws DataModelException a violation of data model rules
*/
public static void resolveLinkingForResolutionList(List<YangResolutionInfo> resolutionList,
- YangReferenceResolver dataModelRootNode)
+ YangReferenceResolver dataModelRootNode)
throws DataModelException {
for (YangResolutionInfo resolutionInfo : resolutionList) {
@@ -242,14 +242,16 @@
* @throws DataModelException a violation of data model rules
*/
public static void linkInterFileReferences(List<YangResolutionInfo> resolutionList,
- YangReferenceResolver dataModelRootNode)
+ YangReferenceResolver dataModelRootNode)
throws DataModelException {
/*
* Run through the resolution list, find type/uses referring to inter
* file typedef/grouping, ask for linking.
*/
- for (YangResolutionInfo resolutionInfo : resolutionList) {
- resolutionInfo.linkInterFile(dataModelRootNode);
+ if (resolutionList != null) {
+ for (YangResolutionInfo resolutionInfo : resolutionList) {
+ resolutionInfo.linkInterFile(dataModelRootNode);
+ }
}
}
@@ -313,21 +315,19 @@
* @return de-serializes YANG data-model nodes
* @throws IOException when fails do IO operations
*/
- public static YangNode deSerializeDataModel(String serializedFileInfo)
- throws IOException {
+ private static Set<YangNode> deSerializeDataModel(String serializedFileInfo) throws IOException {
- YangNode node;
+ Set<YangNode> nodes;
try {
FileInputStream fileInputStream = new FileInputStream(serializedFileInfo);
ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
- node = (YangNode) objectInputStream.readObject();
+ nodes = (Set<YangNode>) objectInputStream.readObject();
objectInputStream.close();
fileInputStream.close();
} catch (IOException | ClassNotFoundException e) {
throw new IOException(serializedFileInfo + " not found.");
}
-
- return node;
+ return nodes;
}
/**
@@ -345,7 +345,7 @@
List<YangLeaf> clonedLeavesList = new LinkedList<>();
for (YangLeaf leaf : currentListOfLeaves) {
YangLeaf clonedLeaf = leaf.clone();
- if (yangUses.getCurrentGroupingDepth() == 0) {
+ if (yangUses != null && yangUses.getCurrentGroupingDepth() == 0) {
YangEntityToResolveInfoImpl resolveInfo =
resolveYangConstructsUnderGroupingForLeaf(clonedLeaf, leavesHolder, yangUses);
if (resolveInfo != null) {
@@ -363,7 +363,7 @@
List<YangLeafList> clonedListOfLeafList = new LinkedList<>();
for (YangLeafList leafList : currentListOfLeafList) {
YangLeafList clonedLeafList = leafList.clone();
- if (yangUses.getCurrentGroupingDepth() == 0) {
+ if (yangUses != null && yangUses.getCurrentGroupingDepth() == 0) {
YangEntityToResolveInfoImpl resolveInfo =
resolveYangConstructsUnderGroupingForLeafList(clonedLeafList, leavesHolder,
yangUses);
@@ -388,7 +388,7 @@
* @throws DataModelException data model error
*/
public static YangEntityToResolveInfoImpl resolveLeafrefUnderGroupingForLeaf(YangLeaf clonedLeaf,
- YangLeavesHolder leafParentHolder, YangUses yangUses)
+ YangLeavesHolder leafParentHolder, YangUses yangUses)
throws
DataModelException {
if (clonedLeaf.getDataType().getDataTypeExtendedInfo() instanceof YangLeafRef) {
@@ -417,7 +417,7 @@
* @throws DataModelException data model error
*/
public static YangEntityToResolveInfoImpl resolveYangConstructsUnderGroupingForLeaf(YangLeaf clonedLeaf,
- YangLeavesHolder leafParentHolder, YangUses yangUses)
+ YangLeavesHolder leafParentHolder, YangUses yangUses)
throws DataModelException {
int lineNumber;
int charPosition;
@@ -551,7 +551,7 @@
* @throws DataModelException data model error
*/
private static void assignCurrentLeafedWithNewPrefixes(String importedNodeName, YangAtomicPath atomicPath,
- YangNode node)
+ YangNode node)
throws DataModelException {
while (!(node instanceof YangReferenceResolver)) {
node = node.getParent();
@@ -694,7 +694,7 @@
}
fileOutputStream.close();
inputStream.close();
- nodes.add(deSerializeDataModel(serializedFile.toString()));
+ nodes.addAll(deSerializeDataModel(serializedFile.toString()));
}
}
jar.close();
diff --git a/plugin/src/main/java/org/onosproject/yangutils/linker/exceptions/LinkerException.java b/plugin/src/main/java/org/onosproject/yangutils/linker/exceptions/LinkerException.java
index 755b5b4..1a36c74 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/linker/exceptions/LinkerException.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/linker/exceptions/LinkerException.java
@@ -22,9 +22,9 @@
public class LinkerException extends RuntimeException {
private static final long serialVersionUID = 20160211L;
- private int lineNumber;
- private int charPositionInLine;
- private String fileName;
+ private transient int lineNumber;
+ private transient int charPositionInLine;
+ private transient String fileName;
/**
* Creates a new linker exception.
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 334a92d..c1b6726 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
@@ -43,7 +43,7 @@
* Set of all the YANG nodes, corresponding to the YANG files parsed by
* parser.
*/
- Set<YangNode> yangNodeSet = new HashSet<>();
+ private Set<YangNode> yangNodeSet = new HashSet<>();
/**
* Returns set of YANG node.
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 fb80076..37a04df 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
@@ -26,7 +26,6 @@
import org.onosproject.yangutils.datamodel.YangAtomicPath;
import org.onosproject.yangutils.datamodel.YangAugment;
import org.onosproject.yangutils.datamodel.YangAugmentableNode;
-import org.onosproject.yangutils.datamodel.YangAugmentedInfo;
import org.onosproject.yangutils.datamodel.YangCase;
import org.onosproject.yangutils.datamodel.YangChoice;
import org.onosproject.yangutils.datamodel.YangGrouping;
@@ -47,14 +46,17 @@
import org.onosproject.yangutils.datamodel.utils.ResolvableStatus;
import org.onosproject.yangutils.datamodel.utils.YangConstructType;
import org.onosproject.yangutils.linker.exceptions.LinkerException;
+import org.onosproject.yangutils.translator.exception.TranslatorException;
import static org.onosproject.yangutils.datamodel.TraversalType.CHILD;
import static org.onosproject.yangutils.datamodel.TraversalType.PARENT;
import static org.onosproject.yangutils.datamodel.TraversalType.ROOT;
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.builtindatatype.YangDataTypes.DERIVED;
import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.IDENTITYREF;
+import static org.onosproject.yangutils.translator.tojava.YangDataModelFactory.getYangCaseNode;
import static org.onosproject.yangutils.utils.UtilConstants.COLON;
import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
@@ -88,7 +90,7 @@
}
}
if (targetNode instanceof YangChoice) {
- //Do nothing
+ addCaseNodeToChoiceTarget(augment);
} else {
detectCollisionInLeaveHolders(targetNode, augment);
while (augmentsChild != null) {
@@ -152,6 +154,79 @@
}
/**
+ * Adds a case node in augment when augmenting a choice node.
+ *
+ * @param augment augment node
+ */
+ private static void addCaseNodeToChoiceTarget(YangAugment augment) {
+ try {
+ YangNode child = augment.getChild();
+ List<YangNode> childNodes = new ArrayList<>();
+ while (child != null) {
+ childNodes.add(child);
+ child = child.getNextSibling();
+ }
+ augment.setChild(null);
+
+ for (YangNode node : childNodes) {
+ YangCase javaCase = getYangCaseNode(JAVA_GENERATION);
+ javaCase.setName(node.getName());
+ augment.addChild(javaCase);
+ node.setParent(javaCase);
+ node.setNextSibling(null);
+ node.setPreviousSibling(null);
+ javaCase.addChild(node);
+ }
+ if (augment.getListOfLeaf() != null) {
+ for (YangLeaf leaf : augment.getListOfLeaf()) {
+ YangCase javaCase = getYangCaseNode(JAVA_GENERATION);
+ javaCase.setName(leaf.getName());
+ javaCase.addLeaf(leaf);
+ augment.addChild(javaCase);
+
+ }
+ augment.getListOfLeaf().clear();
+ }
+ if (augment.getListOfLeafList() != null) {
+ for (YangLeafList leafList : augment.getListOfLeafList()) {
+ YangCase javaCase = getYangCaseNode(JAVA_GENERATION);
+ javaCase.setName(leafList.getName());
+ javaCase.addLeafList(leafList);
+ augment.addChild(javaCase);
+ }
+ augment.getListOfLeafList().clear();
+ }
+
+ } catch (DataModelException e) {
+ throw new TranslatorException("Failed to add child nodes to case node of augment " + augment.getName());
+ }
+ }
+
+ //Detect collision between augment and choice children.
+ private void detectCollisionForChoiceNode(YangNode choice, YangNode augment) {
+ YangNode choiceChild = choice.getChild();
+ YangNode augmentChild = augment.getChild();
+
+ List<YangNode> choiceChildren = new ArrayList<>();
+ List<YangNode> augmentChildren = new ArrayList<>();
+ while (choiceChild != null) {
+ choiceChildren.add(choiceChild);
+ }
+ while (augmentChild != null) {
+ augmentChildren.add(augmentChild);
+ }
+
+ for (YangNode cChild : choiceChildren) {
+ for (YangNode aChild : augmentChildren) {
+ if (cChild.getName().equals(aChild.getName())) {
+ throw new LinkerException("case node " + aChild.getName() + "already present in choice " +
+ choice.getName());
+ }
+ }
+ }
+ }
+
+ /**
* Detects collision between target nodes and its all leaf/leaf-list or child node with augmented leaf/leaf-list or
* child node.
*
@@ -161,10 +236,10 @@
static void detectCollisionForAugmentedNode(YangNode targetNode, YangAugment augment) {
// Detect collision for target node and augment node.
detectCollision(targetNode, augment);
- List<YangAugmentedInfo> yangAugmentedInfo = ((YangAugmentableNode) targetNode).getAugmentedInfoList();
+ List<YangAugment> yangAugmentedInfo = ((YangAugmentableNode) targetNode).getAugmentedInfoList();
// Detect collision for target augment node and current augment node.
- for (YangAugmentedInfo info : yangAugmentedInfo) {
- detectCollision((YangAugment) info, augment);
+ for (YangAugment info : yangAugmentedInfo) {
+ detectCollision(info, augment);
}
}
@@ -222,7 +297,7 @@
* @return valid node identifier
*/
static YangNodeIdentifier getValidNodeIdentifier(String nodeIdentifierString,
- YangConstructType yangConstruct) {
+ YangConstructType yangConstruct) {
String[] tmpData = nodeIdentifierString.split(Pattern.quote(COLON));
if (tmpData.length == 1) {
YangNodeIdentifier nodeIdentifier = new YangNodeIdentifier();
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 31e4c3e..0c21bc9 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
@@ -127,7 +127,7 @@
* Current module/sub-module reference, will be used in inter-file/
* inter-jar scenario to get the import/include list.
*/
- private transient YangReferenceResolver curReferenceResolver;
+ private YangReferenceResolver curReferenceResolver;
/**
* Stack for type/uses is maintained for hierarchical references, this is
@@ -165,7 +165,7 @@
throws DataModelException {
setCurReferenceResolver(dataModelRootNode);
- /**
+ /*
* Current node to resolve, it can be a YANG type, YANG uses or YANG if-feature or
* YANG leafref or YANG base or YANG identityref.
*/
@@ -175,7 +175,7 @@
if (entityToResolve instanceof Resolvable) {
Resolvable resolvable = (Resolvable) entityToResolve;
if (resolvable.getResolvableStatus() == RESOLVED) {
- /**
+ /*
* entity is already resolved, so nothing to do
*/
return;
@@ -201,7 +201,7 @@
throws DataModelException {
while (getPartialResolvedStack().size() != 0) {
- /**
+ /*
* Current node to resolve, it can be a YANG type or YANG uses or
* YANG if-feature or YANG leafref or YANG base or YANG identityref.
*/
@@ -737,7 +737,7 @@
* @throws DataModelException data model errors
*/
private YangNode isReferredNodeInSiblingProcessedForIdentity(YangNode potentialReferredNode,
- String referredNodeName)
+ String referredNodeName)
throws DataModelException {
while (potentialReferredNode != null) {
@@ -1229,7 +1229,7 @@
* @param root root node
*/
private void processXPathLinking(T entityToResolve,
- YangReferenceResolver root) {
+ YangReferenceResolver root) {
YangXpathLinker<T> xPathLinker = new YangXpathLinker<T>();
@@ -1525,7 +1525,7 @@
* @throws DataModelException a violation of data model rules
*/
private void fillAbsolutePathValuesInLeafref(YangLeafRef leafref, String pathNameToBePrefixed,
- List<YangAtomicPath> atomicPathsInRelative)
+ List<YangAtomicPath> atomicPathsInRelative)
throws DataModelException {
leafref.setPathType(YangPathArgType.ABSOLUTE_PATH);
@@ -1819,4 +1819,5 @@
}
return null;
}
+
}
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 89d2dbe..d77fe7d 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
@@ -313,7 +313,7 @@
*/
private YangLeaf searchReferredLeaf(YangNode targetNode, String leafName) {
if (!(targetNode instanceof YangLeavesHolder)) {
- throw new LinkerException("Refered node " + targetNode.getName() +
+ throw new LinkerException("Referred node " + targetNode.getName() +
"should be of type leaves holder ");
}
YangLeavesHolder holder = (YangLeavesHolder) targetNode;
@@ -337,7 +337,7 @@
*/
private YangLeafList searchReferredLeafList(YangNode targetNode, String leafListName) {
if (!(targetNode instanceof YangLeavesHolder)) {
- throw new LinkerException("Refered node " + targetNode.getName() +
+ throw new LinkerException("Referred node " + targetNode.getName() +
"should be of type leaves holder ");
}
YangLeavesHolder holder = (YangLeavesHolder) targetNode;
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/exceptions/ParserException.java b/plugin/src/main/java/org/onosproject/yangutils/parser/exceptions/ParserException.java
index a11bcb8..8edff52 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/exceptions/ParserException.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/parser/exceptions/ParserException.java
@@ -22,9 +22,9 @@
public class ParserException extends RuntimeException {
private static final long serialVersionUID = 20160211L;
- private int lineNumber;
- private int charPositionInLine;
- private String fileName;
+ private transient int lineNumber;
+ private transient int charPositionInLine;
+ private transient String fileName;
/**
* Creates a new parser exception.
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 fd2ac3d..d644345 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
@@ -121,7 +121,7 @@
YangGrouping groupingNode = getYangGroupingNode(JAVA_GENERATION);
groupingNode.setName(identifier);
-
+ groupingNode.setGroupingDepth(listener.getGroupingDepth());
YangNode curNode = (YangNode) curData;
try {
curNode.addChild(groupingNode);
diff --git a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/parserutils/AugmentListenerUtil.java b/plugin/src/main/java/org/onosproject/yangutils/parser/impl/parserutils/AugmentListenerUtil.java
deleted file mode 100644
index 341cbf9..0000000
--- a/plugin/src/main/java/org/onosproject/yangutils/parser/impl/parserutils/AugmentListenerUtil.java
+++ /dev/null
@@ -1,309 +0,0 @@
-/*
- * 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.parser.impl.parserutils;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.onosproject.yangutils.datamodel.CollisionDetector;
-import org.onosproject.yangutils.datamodel.YangModule;
-import org.onosproject.yangutils.datamodel.YangNode;
-import org.onosproject.yangutils.datamodel.YangNodeIdentifier;
-import org.onosproject.yangutils.datamodel.YangSubModule;
-import org.onosproject.yangutils.datamodel.exceptions.DataModelException;
-import org.onosproject.yangutils.datamodel.utils.Parsable;
-import org.onosproject.yangutils.parser.antlrgencode.GeneratedYangParser;
-import org.onosproject.yangutils.parser.exceptions.ParserException;
-import org.onosproject.yangutils.parser.impl.TreeWalkListener;
-
-import static org.onosproject.yangutils.datamodel.utils.YangConstructType.AUGMENT_DATA;
-import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
-
-/**
- * Represents a utility which provides listener utilities augment node.
- */
-public final class AugmentListenerUtil {
-
- /**
- * Prefix to be added to generated java file for augment node.
- */
- private static final String AUGMENTED = "Augmented";
-
- /**
- * The number of time augment has updated the same target node in same module/submodule.
- */
- private static int occurrenceCount = 1;
-
- /**
- * List of names for augment's generated java file.
- */
- private static List<String> augmentJavaFileNameList = new ArrayList<>();
-
- private static final int ONE = 1;
- private static final int TWO = 2;
- private static final int ZERO = 0;
-
- /**
- * Creates an instance of augment java file name generator utility.
- */
- private AugmentListenerUtil() {
- }
-
- /**
- * Sets the augment java file name list.
- *
- * @param nameList name list
- */
- private static void setAugmentJavaFileNameList(List<String> nameList) {
- augmentJavaFileNameList = nameList;
- }
-
- /**
- * Returns augment java file name list.
- *
- * @return augment java file name list
- */
- public static List<String> getAugmentJavaFileNameList() {
- return augmentJavaFileNameList;
- }
-
- /**
- * Sets occurrence count.
- *
- * @param occurrence occurrence count
- */
- private static void setOccurrenceCount(int occurrence) {
- occurrenceCount = occurrence;
- }
-
- /**
- * Returns occurrence count.
- *
- * @return occurrence count
- */
- private static int getOccurrenceCount() {
- return occurrenceCount;
- }
-
- /**
- * Generates name for augment node also detects collision for java file generation of augment node when
- * augment is updating the same target node in same parent multiple times.
- *
- * @param curData parsable data
- * @param targetNodes list of target nodes
- * @param listener tree walk listener
- * @return name for augment node
- */
- public static String generateNameForAugmentNode(Parsable curData, List<YangNodeIdentifier> targetNodes,
- TreeWalkListener listener) {
-
- String curPrefix = getParentsPrefix((YangNode) curData);
- YangNodeIdentifier nodeId = targetNodes.get(targetNodes.size() - 1);
- boolean isPrefix = isPrefixPresent(nodeId, curPrefix);
- String generateName = createValidNameForAugment(nodeId, isPrefix);
-
- if (listener.getParsedDataStack().peek() instanceof CollisionDetector) {
- try {
- ((CollisionDetector) listener.getParsedDataStack().peek()).detectCollidingChild(generateName,
- AUGMENT_DATA);
- } catch (DataModelException e) {
- return updateNameWhenHasMultipleOuccrrence(nodeId, isPrefix);
- }
- }
-
- clearOccurrenceCount();
- return generateName;
- }
-
- /**
- * Creates a name identifier for augment.
- *
- * @param nodeId node identifier
- * @param isPrefix if prefix is present or it is not equals to parent's prefix
- * @return valid name for augment
- */
- public static String createValidNameForAugment(YangNodeIdentifier nodeId, boolean isPrefix) {
- getAugmentJavaFileNameList().add(createName(nodeId, isPrefix));
- setAugmentJavaFileNameList(getAugmentJavaFileNameList());
- return getAugmentJavaFileNameList().get(getAugmentJavaFileNameList().size() - 1);
- }
-
- /**
- * Creates name for the current augment file.
- *
- * @param nodeId node identifier
- * @param isPrefix if prefix is present or it is not equals to parent's prefix
- */
- private static String createName(YangNodeIdentifier nodeId, boolean isPrefix) {
- if (isPrefix) {
- return AUGMENTED + getCapitalCase(nodeId.getPrefix()) + getCapitalCase(nodeId.getName());
- } else {
- return AUGMENTED + getCapitalCase(nodeId.getName());
- }
- }
-
- /**
- * Updates occurrence count of augment.
- */
- private static void updateOccurenceCount() {
- int count = getOccurrenceCount();
- count++;
- setOccurrenceCount(count);
- }
-
- /**
- * Updates the list of name when augment has occurred multiple times to update the same target node
- * and returns a valid name for augment node's generated java file.
- *
- * @param nodeId YANG node identifier
- * @param isPrefix true if a prefix is present and it is not equals to parents prefix
- * @return valid name for augment node
- */
- public static String updateNameWhenHasMultipleOuccrrence(YangNodeIdentifier nodeId, boolean isPrefix) {
- String name = "";
- updateOccurenceCount();
-
- if (getOccurrenceCount() == TWO) {
- String previousAugmentsName = getAugmentJavaFileNameList().get(getAugmentJavaFileNameList().size() - ONE);
- getAugmentJavaFileNameList().remove(ZERO);
- getAugmentJavaFileNameList().add(previousAugmentsName + ONE);
- //TODO: update when already contains the name.
- name = createName(nodeId, isPrefix) + TWO;
- } else {
- name = createName(nodeId, isPrefix) + getOccurrenceCount();
- }
- getAugmentJavaFileNameList().add(name);
- return name;
- }
-
- /**
- * Resets occurrence count to one.
- */
- public static void clearOccurrenceCount() {
- setOccurrenceCount(ONE);
- }
-
- /**
- * Returns true if a prefix is present and it is not equals to parents prefix.
- *
- * @param nodeId YANG node identifier
- * @param parentsPrefix parent's prefix
- * @return true if a prefix is present and it is not equals to parents prefix
- */
- private static boolean isPrefixPresent(YangNodeIdentifier nodeId, String parentsPrefix) {
- return nodeId.getPrefix() != null && nodeId.getPrefix() != parentsPrefix;
- }
-
- /**
- * Validates whether current node in target path is valid or not.
- *
- * @param curNode current YANG node
- * @param targetNodes list of target nodes
- * @param ctx augment statement context
- */
- public static void validateNodeInTargetPath(YangNode curNode, List<YangNodeIdentifier> targetNodes,
- GeneratedYangParser.AugmentStatementContext ctx) {
-
- curNode = curNode.getChild();
- YangNode tempNode = validateCurrentTargetNode(targetNodes, curNode);
- if (tempNode != null) {
- switch (tempNode.getNodeType()) {
- case CONTAINER_NODE:
- break;
- case LIST_NODE:
- break;
- case CHOICE_NODE:
- break;
- case CASE_NODE:
- break;
- case INPUT_NODE:
- break;
- case OUTPUT_NODE:
- break;
- case NOTIFICATION_NODE:
- break;
- default:
- throw parserException(ctx);
- }
- } else {
- throw parserException(ctx);
- }
- }
-
- /**
- * Validates whether nodes in target node list are valid or not.
- *
- * @param targetNodes target node
- * @param curNode YANG node
- * @return true or false
- */
- private static YangNode validateCurrentTargetNode(List<YangNodeIdentifier> targetNodes, YangNode curNode) {
- YangNode tempNode = null;
- while (curNode != null) {
- tempNode = curNode;
- for (int i = 1; i < targetNodes.size(); i++) {
- if (curNode.getName().equals(targetNodes.get(i).getName())) {
- if (curNode.getChild() != null && targetNodes.size() - 1 != i) {
- curNode = curNode.getChild();
- } else if (curNode.getChild() != null && targetNodes.size() - 1 == i) {
- return curNode;
- } else if (curNode.getChild() == null && targetNodes.size() - 1 == i) {
- return curNode;
- } else {
- break;
- }
- } else {
- curNode = tempNode;
- break;
- }
- }
- curNode = curNode.getNextSibling();
- }
- return null;
- }
-
- /**
- * Builds parser exception.
- *
- * @param ctx augment statement context
- * @return parser exception
- */
- public static ParserException parserException(GeneratedYangParser.AugmentStatementContext ctx) {
- int line = ctx.getStart().getLine();
- int charPositionInLine = ctx.getStart().getCharPositionInLine();
- ParserException exception = new ParserException("invalid target node path.");
- exception.setLine(line);
- exception.setCharPosition(charPositionInLine);
- return exception;
- }
-
- /**
- * Returns parent nodes prefix.
- *
- * @param curNode current YANG node
- * @return parent nodes prefix
- */
- public static String getParentsPrefix(YangNode curNode) {
- String curPrefix = null;
- if (curNode instanceof YangModule) {
- curPrefix = ((YangModule) curNode).getPrefix();
- } else if (curNode instanceof YangSubModule) {
- curPrefix = ((YangSubModule) curNode).getPrefix();
- }
- return curPrefix;
- }
-}
diff --git a/plugin/src/main/java/org/onosproject/yangutils/plugin/manager/YangFileInfo.java b/plugin/src/main/java/org/onosproject/yangutils/plugin/manager/YangFileInfo.java
index 4eb22e5..a0f1b1d 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/plugin/manager/YangFileInfo.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/plugin/manager/YangFileInfo.java
@@ -19,12 +19,11 @@
import java.util.Objects;
import org.onosproject.yangutils.datamodel.YangNode;
-import org.onosproject.yangutils.datamodel.utils.ResolvableStatus;
/**
* Represents YANG file information.
*/
-class YangFileInfo {
+public class YangFileInfo {
/**
* YANG file name.
@@ -32,26 +31,11 @@
private String yangFileName;
/**
- * YANG file revision.
- */
- private String revision;
-
- /**
* Data model node after parsing YANG file.
*/
private YangNode rootNode;
/**
- * Resolution status of YANG file.
- */
- private ResolvableStatus resolvableStatus;
-
- /**
- * Location for serialized files in case of inter-jar dependencies.
- */
- private String serializedFile;
-
- /**
* Flag to know if the root node require to be translated.
*/
private boolean isForTranslator = true;
@@ -79,7 +63,7 @@
*
* @return yangFileName YANG file name
*/
- String getYangFileName() {
+ public String getYangFileName() {
return yangFileName;
}
@@ -88,70 +72,16 @@
*
* @param yangFileName YANG file name
*/
- void setYangFileName(String yangFileName) {
+ public void setYangFileName(String yangFileName) {
this.yangFileName = yangFileName;
}
/**
- * Returns the revision of YANG file.
- *
- * @return revision of YANG file
- */
- public String getRevision() {
- return revision;
- }
-
- /**
- * Sets the revision of YANG file.
- *
- * @param revision revision of YANG file
- */
- public void setRevision(String revision) {
- this.revision = revision;
- }
-
- /**
- * Returns the resolution status of YANG file.
- *
- * @return resolution status of YANG file
- */
- public ResolvableStatus getResolvableStatus() {
- return resolvableStatus;
- }
-
- /**
- * Sets the resolution status of YANG file.
- *
- * @param resolvableStatus resolution status of YANG file
- */
- public void setResolvableStatus(ResolvableStatus resolvableStatus) {
- this.resolvableStatus = resolvableStatus;
- }
-
- /**
- * Returns serialized file of datamodel.
- *
- * @return the serialized file of datamodel
- */
- public String getSerializedFile() {
- return serializedFile;
- }
-
- /**
- * Sets serialized file of datamodel.
- *
- * @param serializedFile serialized file of datamodel
- */
- public void setSerializedFile(String serializedFile) {
- this.serializedFile = serializedFile;
- }
-
- /**
* Returns true if node need to be translated.
*
* @return isForTranslator true if node need to be translated
*/
- boolean isForTranslator() {
+ public boolean isForTranslator() {
return isForTranslator;
}
@@ -160,7 +90,7 @@
*
* @param isForTranslator true if node need to be translated
*/
- void setForTranslator(boolean isForTranslator) {
+ public void setForTranslator(boolean isForTranslator) {
this.isForTranslator = isForTranslator;
}
diff --git a/plugin/src/main/java/org/onosproject/yangutils/plugin/manager/YangPluginUtils.java b/plugin/src/main/java/org/onosproject/yangutils/plugin/manager/YangPluginUtils.java
index e27468b..28e77c5 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/plugin/manager/YangPluginUtils.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/plugin/manager/YangPluginUtils.java
@@ -23,6 +23,7 @@
import java.nio.file.Files;
import java.nio.file.StandardCopyOption;
import java.util.ArrayList;
+import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
@@ -32,10 +33,10 @@
import org.apache.maven.model.Resource;
import org.apache.maven.project.MavenProject;
import org.onosproject.yangutils.datamodel.YangNode;
-import org.onosproject.yangutils.datamodel.utils.DataModelUtils;
import org.slf4j.Logger;
import org.sonatype.plexus.build.incremental.BuildContext;
+import static org.onosproject.yangutils.datamodel.utils.DataModelUtils.parseJarFile;
import static org.onosproject.yangutils.utils.UtilConstants.HYPHEN;
import static org.onosproject.yangutils.utils.UtilConstants.JAR;
import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
@@ -48,13 +49,14 @@
/**
* Represents YANG plugin utilities.
*/
-final class YangPluginUtils {
+public final class YangPluginUtils {
private static final Logger log = getLogger(YangPluginUtils.class);
private static final String TARGET_RESOURCE_PATH = SLASH + TEMP + SLASH + YANG_RESOURCES + SLASH;
private static final String SERIALIZED_FILE_EXTENSION = ".ser";
+ private static final String YANG_META_DATA = "YangMetaData";
private YangPluginUtils() {
}
@@ -124,8 +126,8 @@
* @param operation true if need to add to resource
* @throws IOException when fails to do IO operations
*/
- static void serializeDataModel(String directory, Set<YangFileInfo> fileInfoSet,
- MavenProject project, boolean operation) throws IOException {
+ public static void serializeDataModel(String directory, Set<YangFileInfo> fileInfoSet,
+ MavenProject project, boolean operation) throws IOException {
String serFileDirPath = directory + TARGET_RESOURCE_PATH;
File dir = new File(serFileDirPath);
@@ -135,17 +137,17 @@
addToProjectResource(directory + SLASH + TEMP + SLASH, project);
}
+ Set<YangNode> nodes = new HashSet<>();
for (YangFileInfo fileInfo : fileInfoSet) {
-
- String serFileName = serFileDirPath + fileInfo.getRootNode().getName()
- + SERIALIZED_FILE_EXTENSION;
- fileInfo.setSerializedFile(serFileName);
- FileOutputStream fileOutputStream = new FileOutputStream(serFileName);
- ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);
- objectOutputStream.writeObject(fileInfo.getRootNode());
- objectOutputStream.close();
- fileOutputStream.close();
+ nodes.add(fileInfo.getRootNode());
}
+
+ String serFileName = serFileDirPath + YANG_META_DATA + SERIALIZED_FILE_EXTENSION;
+ FileOutputStream fileOutputStream = new FileOutputStream(serFileName);
+ ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);
+ objectOutputStream.writeObject(nodes);
+ objectOutputStream.close();
+ fileOutputStream.close();
}
/**
@@ -203,7 +205,7 @@
List<String> dependenciesJarPaths = resolveDependencyJarPath(project, localRepository, remoteRepos);
List<YangNode> resolvedDataModelNodes = new ArrayList<>();
for (String dependency : dependenciesJarPaths) {
- resolvedDataModelNodes.addAll(DataModelUtils.parseJarFile(dependency, directory));
+ resolvedDataModelNodes.addAll(parseJarFile(dependency, directory));
}
return resolvedDataModelNodes;
}
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 1422d27..ab3c6e1 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
@@ -285,7 +285,7 @@
/**
* Creates YANG nodes set.
*/
- void createYangNodeSet() {
+ public void createYangNodeSet() {
for (YangFileInfo yangFileInfo : getYangFileInfoSet()) {
getYangNodeSet().add(yangFileInfo.getRootNode());
}
@@ -383,7 +383,7 @@
*
* @return the YANG file info set
*/
- Set<YangFileInfo> getYangFileInfoSet() {
+ public Set<YangFileInfo> getYangFileInfoSet() {
return yangFileInfoSet;
}
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 03b0382..c737175 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
@@ -22,10 +22,10 @@
public class InvalidNodeForTranslatorException extends RuntimeException {
private static final long serialVersionUID = 20160311L;
- private String fileName;
+ private transient String fileName;
/**
- * Create a new exception.
+ * Creates a new exception.
*/
public InvalidNodeForTranslatorException() {
super();
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 cf2c07d..a033a00 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
@@ -22,7 +22,7 @@
public class TranslatorException extends RuntimeException {
private static final long serialVersionUID = 20160311L;
- private String fileName;
+ private transient String fileName;
/**
* Create a new translator exception.
@@ -44,7 +44,7 @@
* Creates a new translator exception from given message and cause.
*
* @param message the detail of exception in string
- * @param cause underlying cause of the error
+ * @param cause underlying cause of the error
*/
public TranslatorException(final String message, final Throwable cause) {
super(message, cause);
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaAttributeInfo.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaAttributeInfo.java
index ffa7b21..a5a644a 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaAttributeInfo.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/JavaAttributeInfo.java
@@ -18,6 +18,7 @@
import org.onosproject.yangutils.datamodel.YangCompilerAnnotation;
import org.onosproject.yangutils.datamodel.YangType;
+import org.onosproject.yangutils.datamodel.javadatamodel.JavaQualifiedTypeInfo;
import org.onosproject.yangutils.translator.exception.TranslatorException;
import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.isTypeLeafref;
@@ -70,6 +71,11 @@
private boolean isLongConflict;
/**
+ * If conflict occurs.
+ */
+ private boolean isShortConflict;
+
+ /**
* Creates a java attribute info object.
*/
private JavaAttributeInfo() {
@@ -244,6 +250,24 @@
}
/**
+ * Returns true if conflict between short and uint8.
+ *
+ * @return true if conflict between short and uint8
+ */
+ public boolean isShortConflict() {
+ return isShortConflict;
+ }
+
+ /**
+ * Sets true if conflict between short and uint8.
+ *
+ * @param shortConflict true if conflict between short and uint8
+ */
+ public void setShortConflict(boolean shortConflict) {
+ isShortConflict = shortConflict;
+ }
+
+ /**
* Returns java attribute info.
*
* @param importInfo java qualified type info
@@ -253,7 +277,7 @@
* @param isListAttribute is list attribute
* @return java attribute info.
*/
- public static JavaAttributeInfo getAttributeInfoForTheData(JavaQualifiedTypeInfoTranslator importInfo,
+ public static JavaAttributeInfo getAttributeInfoForTheData(JavaQualifiedTypeInfo importInfo,
String attributeName,
YangType<?> attributeType, boolean isQualifiedAccess,
boolean isListAttribute) {
@@ -263,7 +287,7 @@
}
attributeName = isTypeNameLeafref(attributeName, attributeType);
JavaAttributeInfo newAttr = new JavaAttributeInfo();
- newAttr.setImportInfo(importInfo);
+ newAttr.setImportInfo((JavaQualifiedTypeInfoTranslator) importInfo);
newAttr.setAttributeName(attributeName);
newAttr.setAttributeType(attributeType);
newAttr.setIsQualifiedAccess(isQualifiedAccess);
@@ -275,11 +299,11 @@
/**
* Returns java attribute info.
*
- * @param importInfo java qualified type info
- * @param attributeName attribute name
- * @param attributeType attribute type
- * @param isQualifiedAccess is the attribute a qualified access
- * @param isListAttribute is list attribute
+ * @param importInfo java qualified type info
+ * @param attributeName attribute name
+ * @param attributeType attribute type
+ * @param isQualifiedAccess is the attribute a qualified access
+ * @param isListAttribute is list attribute
* @param compilerAnnotation compiler annotation
* @return java attribute info.
*/
@@ -288,7 +312,7 @@
boolean isQualifiedAccess, boolean isListAttribute,
YangCompilerAnnotation compilerAnnotation) {
JavaAttributeInfo newAttr = getAttributeInfoForTheData(importInfo, attributeName, attributeType,
- isQualifiedAccess, isListAttribute);
+ isQualifiedAccess, isListAttribute);
newAttr.setCompilerAnnotation(compilerAnnotation);
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 671635e..089a1b3 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
@@ -17,22 +17,12 @@
package org.onosproject.yangutils.translator.tojava;
import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
import org.onosproject.yangutils.datamodel.TraversalType;
-import org.onosproject.yangutils.datamodel.YangAugment;
-import org.onosproject.yangutils.datamodel.YangCase;
-import org.onosproject.yangutils.datamodel.YangChoice;
import org.onosproject.yangutils.datamodel.YangInput;
-import org.onosproject.yangutils.datamodel.YangLeaf;
-import org.onosproject.yangutils.datamodel.YangLeafList;
import org.onosproject.yangutils.datamodel.YangNode;
import org.onosproject.yangutils.datamodel.YangNodeType;
import org.onosproject.yangutils.datamodel.YangOutput;
-import org.onosproject.yangutils.datamodel.exceptions.DataModelException;
import org.onosproject.yangutils.translator.exception.InvalidNodeForTranslatorException;
import org.onosproject.yangutils.translator.exception.TranslatorException;
import org.onosproject.yangutils.utils.io.YangPluginConfig;
@@ -41,11 +31,6 @@
import static org.onosproject.yangutils.datamodel.TraversalType.PARENT;
import static org.onosproject.yangutils.datamodel.TraversalType.ROOT;
import static org.onosproject.yangutils.datamodel.TraversalType.SIBILING;
-import static org.onosproject.yangutils.datamodel.utils.GeneratedLanguage.JAVA_GENERATION;
-import static org.onosproject.yangutils.translator.tojava.YangDataModelFactory.getYangCaseNode;
-import static org.onosproject.yangutils.translator.tojava.YangJavaModelUtils.getAugmentClassName;
-import static org.onosproject.yangutils.utils.UtilConstants.CASE;
-import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.searchAndDeleteTempDir;
/**
@@ -53,7 +38,6 @@
*/
public final class JavaCodeGeneratorUtil {
- private static final Log log = LogFactory.getLog(JavaCodeGeneratorUtil.class);
/**
* Current YANG node.
*/
@@ -64,8 +48,6 @@
*/
private static YangNode rootNode;
- private static int calls = 0;
-
/**
* Creates a java code generator utility object.
*/
@@ -106,11 +88,6 @@
TraversalType curTraversal = ROOT;
while (codeGenNode != null) {
- if (codeGenNode instanceof YangAugment) {
- if (((YangAugment) codeGenNode).getAugmentedNode() instanceof YangChoice) {
- addCaseNodeToChoiceTarget((YangAugment) codeGenNode);
- }
- }
if (curTraversal != PARENT) {
if (!(codeGenNode instanceof JavaCodeGenerator)) {
throw new TranslatorException("Unsupported node to generate code");
@@ -129,9 +106,7 @@
}
continue;
} catch (Exception e) {
- if (log.isDebugEnabled()) {
- e.printStackTrace();
- }
+ e.printStackTrace();
close(codeGenNode, yangPlugin);
throw new TranslatorException(e.getMessage());
}
@@ -144,9 +119,7 @@
try {
generateCodeExit(codeGenNode, yangPlugin);
} catch (Exception e) {
- if (log.isDebugEnabled()) {
- e.printStackTrace();
- }
+ e.printStackTrace();
close(codeGenNode, yangPlugin);
throw new TranslatorException(e.getMessage());
}
@@ -156,9 +129,7 @@
try {
generateCodeExit(codeGenNode, yangPlugin);
} catch (Exception e) {
- if (log.isDebugEnabled()) {
- e.printStackTrace();
- }
+ e.printStackTrace();
close(codeGenNode, yangPlugin);
throw new TranslatorException(e.getMessage());
}
@@ -381,49 +352,4 @@
return null;
}
- /**
- * Adds a case node in augment when augmenting a choice node.
- *
- * @param augment augment node
- */
- private static void addCaseNodeToChoiceTarget(YangAugment augment) {
- calls++;
- if (calls == 1) {
- YangCase javaCase = getYangCaseNode(JAVA_GENERATION);
-
- YangPluginConfig pluginConfig = new YangPluginConfig();
- javaCase.setName(getAugmentClassName(augment, pluginConfig) + getCapitalCase(CASE));
-
- if (augment.getListOfLeaf() != null) {
- for (YangLeaf leaf : augment.getListOfLeaf()) {
- javaCase.addLeaf(leaf);
- }
- augment.getListOfLeaf().clear();
- }
- if (augment.getListOfLeafList() != null) {
- for (YangLeafList leafList : augment.getListOfLeafList()) {
- javaCase.addLeafList(leafList);
- }
- augment.getListOfLeafList().clear();
- }
- YangNode child = augment.getChild();
- List<YangNode> childNodes = new ArrayList<>();
- while (child != null) {
- child.setParent(javaCase);
- childNodes.add(child);
- child = child.getNextSibling();
- }
- augment.setChild(null);
- try {
- augment.addChild(javaCase);
- for (YangNode node : childNodes) {
- node.setNextSibling(null);
- node.setPreviousSibling(null);
- javaCase.addChild(node);
- }
- } catch (DataModelException e) {
- throw new TranslatorException("Failed to add child nodes to case node of augment " + augment.getName());
- }
- }
- }
}
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 63aa535..420dc27 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
@@ -21,10 +21,10 @@
import org.onosproject.yangutils.datamodel.YangNode;
import org.onosproject.yangutils.datamodel.javadatamodel.JavaQualifiedTypeInfo;
-import org.onosproject.yangutils.utils.io.YangToJavaNamingConflictUtil;
import org.onosproject.yangutils.translator.exception.TranslatorException;
import org.onosproject.yangutils.translator.tojava.javamodel.AttributesJavaDataType;
import org.onosproject.yangutils.translator.tojava.javamodel.JavaLeafInfoContainer;
+import org.onosproject.yangutils.utils.io.YangToJavaNamingConflictUtil;
import com.google.common.base.MoreObjects;
@@ -42,6 +42,7 @@
* Creates a java qualified type info object.
*/
public JavaQualifiedTypeInfoTranslator() {
+ super();
}
/**
@@ -87,7 +88,7 @@
*/
public static void updateLeavesJavaQualifiedInfo(JavaLeafInfoContainer leaf) {
- JavaQualifiedTypeInfoTranslator importInfo = leaf.getJavaQualifiedInfo();
+ JavaQualifiedTypeInfoTranslator importInfo = (JavaQualifiedTypeInfoTranslator) leaf.getJavaQualifiedInfo();
if (leaf.getDataType() == null) {
throw new TranslatorException("missing data type of leaf " + leaf.getName());
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 d17c081..5068458 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
@@ -25,9 +25,9 @@
import org.onosproject.yangutils.datamodel.YangEnum;
import org.onosproject.yangutils.datamodel.YangEnumeration;
import org.onosproject.yangutils.datamodel.YangNode;
-import org.onosproject.yangutils.utils.io.YangPluginConfig;
import org.onosproject.yangutils.translator.exception.TranslatorException;
import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaTypeTranslator;
+import org.onosproject.yangutils.utils.io.YangPluginConfig;
import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.INT32;
import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.ENUM_IMPL_MASK;
@@ -229,7 +229,7 @@
* @return java attribute
*/
public JavaAttributeInfo getJavaAttributeForEnum(YangPluginConfig pluginConfig) {
- YangJavaTypeTranslator<?> javaType = new YangJavaTypeTranslator<>();
+ YangJavaTypeTranslator javaType = new YangJavaTypeTranslator();
javaType.setDataType(INT32);
javaType.setDataTypeName(INT);
javaType.updateJavaQualifiedInfo(pluginConfig.getConflictResolver());
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 1988e5a..37ce7ee 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
@@ -30,6 +30,7 @@
import org.onosproject.yangutils.datamodel.YangModule;
import org.onosproject.yangutils.datamodel.YangNode;
import org.onosproject.yangutils.datamodel.YangSubModule;
+import org.onosproject.yangutils.datamodel.javadatamodel.JavaQualifiedTypeInfo;
import org.onosproject.yangutils.translator.exception.TranslatorException;
import org.onosproject.yangutils.translator.tojava.javamodel.JavaLeafInfoContainer;
import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaGroupingTranslator;
@@ -1584,7 +1585,7 @@
addLeafIdAttributes(newAttrInfo, leafCount, pluginConfig);
}
if (!newAttrInfo.isIntConflict() &&
- !newAttrInfo.isLongConflict()) {
+ !newAttrInfo.isLongConflict() && !newAttrInfo.isShortConflict()) {
if ((getGeneratedTempFiles() & GETTER_FOR_CLASS_MASK) != 0) {
addGetterImpl(newAttrInfo, pluginConfig);
}
@@ -1863,8 +1864,9 @@
* @return status of the qualified access to the attribute
*/
boolean getIsQualifiedAccessOrAddToImportList(
- JavaQualifiedTypeInfoTranslator importInfo) {
- return getJavaImportData().addImportInfo(importInfo, getGeneratedJavaClassName(),
+ JavaQualifiedTypeInfo importInfo) {
+ return getJavaImportData().addImportInfo((JavaQualifiedTypeInfoTranslator) importInfo,
+ getGeneratedJavaClassName(),
getJavaFileInfo().getPackage());
}
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 b8f12e6..62c6390 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
@@ -29,10 +29,12 @@
import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaTypeTranslator;
import org.onosproject.yangutils.utils.io.YangPluginConfig;
+import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.INT16;
import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.INT32;
import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.INT64;
import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.UINT16;
import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.UINT32;
+import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.UINT8;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_TYPEDEF_CLASS;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_UNION_CLASS;
import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.CONSTRUCTOR_FOR_TYPE_MASK;
@@ -47,6 +49,7 @@
import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getTypeConstructorStringAndJavaDoc;
import static org.onosproject.yangutils.translator.tojava.utils.ValidatorTypeForUnionTypes.INT_TYPE_CONFLICT;
import static org.onosproject.yangutils.translator.tojava.utils.ValidatorTypeForUnionTypes.LONG_TYPE_CONFLICT;
+import static org.onosproject.yangutils.translator.tojava.utils.ValidatorTypeForUnionTypes.SHORT_TYPE_CONFLICT;
import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
import static org.onosproject.yangutils.utils.io.impl.FileSystemUtil.closeFile;
@@ -100,6 +103,16 @@
private int uLongIndex = 0;
/**
+ * short index in type list.
+ */
+ private int shortIndex = 0;
+
+ /**
+ * Uint8 index in type list.
+ */
+ private int uInt8Index = 0;
+
+ /**
* Temporary file handle for of string method of class.
*/
private File ofStringImplTempFileHandle;
@@ -130,6 +143,16 @@
private JavaAttributeInfo longAttribute;
/**
+ * Java attribute for short.
+ */
+ private JavaAttributeInfo shortAttribute;
+
+ /**
+ * Java attribute for uint8.
+ */
+ private JavaAttributeInfo uInt8Attribute;
+
+ /**
* Java attribute for uInt.
*/
private JavaAttributeInfo uIntAttribute;
@@ -270,7 +293,7 @@
* @return java attribute
*/
private JavaAttributeInfo getAttributeForType(YangType yangType, YangPluginConfig pluginConfig) {
- YangJavaTypeTranslator<?> javaType = (YangJavaTypeTranslator<?>) yangType;
+ YangJavaTypeTranslator javaType = (YangJavaTypeTranslator) yangType;
javaType.updateJavaQualifiedInfo(pluginConfig.getConflictResolver());
String typeName = javaType.getDataTypeName();
typeName = getCamelCase(typeName, pluginConfig.getConflictResolver());
@@ -290,12 +313,19 @@
* @throws IOException IO operation fail
*/
private void addJavaSnippetInfoToApplicableTempFiles(JavaAttributeInfo javaAttributeInfo,
- YangPluginConfig pluginConfig, List<YangType<?>> typeList)
+ YangPluginConfig pluginConfig, List<YangType<?>> typeList)
throws IOException {
YangDataTypes attrType = javaAttributeInfo.getAttributeType().getDataType();
- if (attrType == INT32 || attrType == UINT16) {
+ if (attrType == INT16 || attrType == UINT8) {
+ boolean isShortConflict = validateForConflictingShortTypes(typeList);
+ javaAttributeInfo.setShortConflict(isShortConflict);
+ updateAttributeCondition(javaAttributeInfo);
+ if (!isShortConflict) {
+ addMethodsWhenNoConflictingTypes(javaAttributeInfo, pluginConfig);
+ }
+ } else if (attrType == INT32 || attrType == UINT16) {
boolean isIntConflict = validateForConflictingIntTypes(typeList);
javaAttributeInfo.setIntConflict(isIntConflict);
updateAttributeCondition(javaAttributeInfo);
@@ -324,7 +354,7 @@
* @throws IOException when fails to do IO operations
*/
private void addMethodsWhenNoConflictingTypes(JavaAttributeInfo javaAttributeInfo,
- YangPluginConfig pluginConfig)
+ YangPluginConfig pluginConfig)
throws IOException {
if ((getGeneratedTempFiles() & OF_STRING_IMPL_MASK) != 0) {
addOfStringMethod(javaAttributeInfo, pluginConfig);
@@ -385,6 +415,28 @@
}
}
}
+
+ attr = getShortAttribute();
+ if (attr != null) {
+ attr = getUInt8Attribute();
+ }
+ if (attr != null) {
+ if (attr.isShortConflict()) {
+ if (getShortIndex() < getUInt8Index()) {
+ appendToFile(getOfStringImplTempFileHandle(), getOfMethodStringAndJavaDoc(getShortAttribute(),
+ getGeneratedJavaClassName(), pluginConfig)
+ + NEW_LINE);
+ addGetterImpl(getShortAttribute(), pluginConfig);
+ addFromStringMethod(getShortAttribute(), pluginConfig);
+ } else {
+ appendToFile(getOfStringImplTempFileHandle(), getOfMethodStringAndJavaDoc(getUInt8Attribute(),
+ getGeneratedJavaClassName(), pluginConfig)
+ + NEW_LINE);
+ addGetterImpl(getUInt8Attribute(), pluginConfig);
+ addFromStringMethod(getUInt8Attribute(), pluginConfig);
+ }
+ }
+ }
}
/**
@@ -458,6 +510,19 @@
< getULongIndex()) + NEW_LINE);
}
}
+ attr = getShortAttribute();
+ if (attr != null) {
+ attr = getUInt8Attribute();
+ }
+ if (attr != null) {
+ if (attr.isShortConflict()) {
+ appendToFile(getConstructorForTypeTempFileHandle(), getTypeConstructorStringAndJavaDoc(
+ getShortAttribute(),
+ getUInt8Attribute(), getGeneratedJavaClassName(), pluginConfig, SHORT_TYPE_CONFLICT,
+ getShortIndex()
+ < getUInt8Index()) + NEW_LINE);
+ }
+ }
}
/**
@@ -555,6 +620,42 @@
}
/**
+ * Returns short type index from type list.
+ *
+ * @return short type index from type list
+ */
+ public int getShortIndex() {
+ return shortIndex;
+ }
+
+ /**
+ * Sets short type index from type list.
+ *
+ * @param shortIndex short type index from type list.
+ */
+ private void setShortIndex(int shortIndex) {
+ this.shortIndex = shortIndex;
+ }
+
+ /**
+ * Returns uInt type index from type list.
+ *
+ * @return uInt type index from type list
+ */
+ public int getUInt8Index() {
+ return uInt8Index;
+ }
+
+ /**
+ * Sets uInt8 type index from type list.
+ *
+ * @param uInt8Index uInt8 type index from type list.
+ */
+ private void setUInt8Index(int uInt8Index) {
+ this.uInt8Index = uInt8Index;
+ }
+
+ /**
* Returns int type index from type list.
*
* @return int type index from type list
@@ -650,6 +751,29 @@
}
/**
+ * Validates conflict for int and uInt.
+ *
+ * @param typeList type list
+ * @return true if conflict is there
+ */
+ private boolean validateForConflictingShortTypes(List<YangType<?>> typeList) {
+ boolean isShortPresent = false;
+ boolean isUInt8Present = false;
+ for (YangType type : typeList) {
+ if (type.getDataType().equals(INT16)) {
+ setShortIndex(typeList.indexOf(type));
+ isShortPresent = true;
+ }
+ if (type.getDataType().equals(UINT8)) {
+ setUInt8Index(typeList.indexOf(type));
+ isUInt8Present = true;
+ }
+ }
+
+ return isShortPresent && isUInt8Present;
+ }
+
+ /**
* Validates conflict for long and uLong.
*
* @param typeList type list
@@ -695,6 +819,14 @@
}
}
+ if (javaAttributeInfo.isShortConflict()) {
+ if (javaAttributeInfo.getAttributeType().getDataType() == UINT8) {
+ setUInt8Attribute(javaAttributeInfo);
+ } else if (javaAttributeInfo.getAttributeType().getDataType() == INT16) {
+ setShortAttribute(javaAttributeInfo);
+ }
+
+ }
}
/**
@@ -768,4 +900,41 @@
private void setULongAttribute(JavaAttributeInfo uLongAttribute) {
this.uLongAttribute = uLongAttribute;
}
+
+ /**
+ * Returns attribute for uInt8.
+ *
+ * @return attribute for uInt8
+ */
+ public JavaAttributeInfo getUInt8Attribute() {
+ return uInt8Attribute;
+ }
+
+ /**
+ * Sets attribute for uInt8.
+ *
+ * @param uInt8Attribute attribute for uInt8
+ */
+ private void setUInt8Attribute(JavaAttributeInfo uInt8Attribute) {
+ this.uInt8Attribute = uInt8Attribute;
+ }
+
+ /**
+ * Returns attribute for short.
+ *
+ * @return attribute for short
+ */
+ public JavaAttributeInfo getShortAttribute() {
+ return shortAttribute;
+ }
+
+ /**
+ * Sets attribute for short.
+ *
+ * @param shortAttribute attribute for short
+ */
+ private void setShortAttribute(JavaAttributeInfo shortAttribute) {
+ this.shortAttribute = shortAttribute;
+ }
+
}
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TraversalType.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TraversalType.java
deleted file mode 100644
index 35f529a..0000000
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/TraversalType.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * 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.translator.tojava;
-
-/**
- * Represents data model tree traversal types.
- */
-public enum TraversalType {
-
- /**
- * Start of traversal at the tree root.
- */
- ROOT,
-
- /**
- * Child node traversal.
- */
- CHILD,
-
- /**
- * Sibling node traversal.
- */
- SIBLING,
-
- /**
- * Parent node traversal.
- */
- PARENT
-}
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 eb02fd7..1ea7f48 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
@@ -19,6 +19,7 @@
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
+
import org.onosproject.yangutils.datamodel.RpcNotificationContainer;
import org.onosproject.yangutils.datamodel.YangAtomicPath;
import org.onosproject.yangutils.datamodel.YangAugment;
@@ -31,13 +32,13 @@
import org.onosproject.yangutils.datamodel.YangSubModule;
import org.onosproject.yangutils.datamodel.YangTranslatorOperatorNode;
import org.onosproject.yangutils.datamodel.YangTypeHolder;
+import org.onosproject.yangutils.utils.io.YangPluginConfig;
import org.onosproject.yangutils.datamodel.utils.DataModelUtils;
import org.onosproject.yangutils.translator.exception.TranslatorException;
import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaAugmentTranslator;
import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaEnumerationTranslator;
import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaModuleTranslator;
import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaSubModuleTranslator;
-import org.onosproject.yangutils.utils.io.YangPluginConfig;
import static org.onosproject.yangutils.datamodel.utils.DataModelUtils.isRpcChildNodePresent;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER;
@@ -508,7 +509,8 @@
String name = getCapitalCase(getCamelCase(yangNodeIdentifier.getName(), yangPluginConfig
.getConflictResolver()));
if (yangNodeIdentifier.getPrefix() != null) {
- return AUGMENTED + getCapitalCase(yangNodeIdentifier.getPrefix()) + name;
+ return AUGMENTED + getCapitalCase(getCamelCase(yangNodeIdentifier.getPrefix(), yangPluginConfig
+ .getConflictResolver())) + name;
} else {
return AUGMENTED + name;
}
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 d07aaac..49f2f41 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
@@ -17,7 +17,7 @@
import org.onosproject.yangutils.datamodel.YangType;
import org.onosproject.yangutils.utils.io.YangToJavaNamingConflictUtil;
-import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfoContainer;
+import org.onosproject.yangutils.datamodel.javadatamodel.JavaQualifiedTypeInfoContainer;
/**
* Represent java based identification of the YANG leaves.
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/JavaQualifiedTypeResolver.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/JavaQualifiedTypeResolver.java
index ad3de56..909c6f4 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/JavaQualifiedTypeResolver.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/JavaQualifiedTypeResolver.java
@@ -16,13 +16,11 @@
package org.onosproject.yangutils.translator.tojava.javamodel;
import org.onosproject.yangutils.utils.io.YangToJavaNamingConflictUtil;
-import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfoContainer;
/**
* Represent java based identification of the YANG leaves.
*/
-interface JavaQualifiedTypeResolver
- extends JavaQualifiedTypeInfoContainer {
+interface JavaQualifiedTypeResolver {
/**
* updates the qualified access details of the type.
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaLeafListTranslator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaLeafListTranslator.java
index 08c4fb3..c79d86b 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaLeafListTranslator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaLeafListTranslator.java
@@ -16,8 +16,8 @@
package org.onosproject.yangutils.translator.tojava.javamodel;
import org.onosproject.yangutils.datamodel.javadatamodel.YangJavaLeafList;
-import org.onosproject.yangutils.utils.io.YangToJavaNamingConflictUtil;
import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfoTranslator;
+import org.onosproject.yangutils.utils.io.YangToJavaNamingConflictUtil;
import static org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfoTranslator.updateLeavesJavaQualifiedInfo;
import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCamelCase;
@@ -56,16 +56,6 @@
updateLeavesJavaQualifiedInfo(this);
}
- @Override
- public JavaQualifiedTypeInfoTranslator getJavaQualifiedInfo() {
- return (JavaQualifiedTypeInfoTranslator) javaQualifiedTypeInfo;
- }
-
- @Override
- public void setJavaQualifiedInfo(JavaQualifiedTypeInfoTranslator typeInfo) {
- javaQualifiedTypeInfo = typeInfo;
- }
-
/**
* Returns java naming conflict resolve configurations.
*
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaLeafTranslator.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaLeafTranslator.java
index d7dfb9b..a846e59 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaLeafTranslator.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaLeafTranslator.java
@@ -16,8 +16,8 @@
package org.onosproject.yangutils.translator.tojava.javamodel;
import org.onosproject.yangutils.datamodel.javadatamodel.YangJavaLeaf;
-import org.onosproject.yangutils.utils.io.YangToJavaNamingConflictUtil;
import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfoTranslator;
+import org.onosproject.yangutils.utils.io.YangToJavaNamingConflictUtil;
import static org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfoTranslator.updateLeavesJavaQualifiedInfo;
import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCamelCase;
@@ -42,17 +42,6 @@
}
@Override
- public JavaQualifiedTypeInfoTranslator getJavaQualifiedInfo() {
- return (JavaQualifiedTypeInfoTranslator) javaQualifiedTypeInfo;
- }
-
- @Override
- public void setJavaQualifiedInfo(JavaQualifiedTypeInfoTranslator typeInfo) {
- javaQualifiedTypeInfo = typeInfo;
-
- }
-
- @Override
public String getJavaName(YangToJavaNamingConflictUtil conflictResolveConfig) {
return getCamelCase(getName(), conflictResolveConfig);
}
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 774e422..0f46f76 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
@@ -18,6 +18,7 @@
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
+
import org.onosproject.yangutils.datamodel.YangNode;
import org.onosproject.yangutils.datamodel.YangNotification;
import org.onosproject.yangutils.datamodel.javadatamodel.YangJavaModule;
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 4f403c9..009a86f 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
@@ -18,15 +18,16 @@
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
+
import org.onosproject.yangutils.datamodel.YangBelongsTo;
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;
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 cb8d3ba..911e0c4 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
@@ -15,7 +15,7 @@
*/
package org.onosproject.yangutils.translator.tojava.javamodel;
-import org.onosproject.yangutils.datamodel.YangType;
+import org.onosproject.yangutils.datamodel.javadatamodel.YangJavaType;
import org.onosproject.yangutils.translator.exception.TranslatorException;
import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfoTranslator;
import org.onosproject.yangutils.utils.io.YangToJavaNamingConflictUtil;
@@ -26,15 +26,11 @@
/**
* Represents java information corresponding to the YANG type.
- *
- * @param <T> generic parameter for YANG java type
*/
-public class YangJavaTypeTranslator<T>
- extends YangType<T>
+public class YangJavaTypeTranslator
+ extends YangJavaType
implements JavaQualifiedTypeResolver {
- private JavaQualifiedTypeInfoTranslator javaQualifiedAccess;
-
/**
* Create a YANG leaf object with java qualified access details.
*/
@@ -45,7 +41,7 @@
@Override
public void updateJavaQualifiedInfo(YangToJavaNamingConflictUtil conflictResolver) {
- JavaQualifiedTypeInfoTranslator importInfo = getJavaQualifiedInfo();
+ JavaQualifiedTypeInfoTranslator importInfo = (JavaQualifiedTypeInfoTranslator) getJavaQualifiedInfo();
/*
* Type is added as an attribute in the class.
@@ -58,7 +54,7 @@
*/
importInfo.setClassInfo(className);
String classPkg = getJavaImportPackage(this,
- false, conflictResolver);
+ false, conflictResolver);
if (classPkg == null) {
throw new TranslatorException("import package cannot be null when the class is used");
}
@@ -77,13 +73,4 @@
setJavaQualifiedInfo(importInfo);
}
- @Override
- public JavaQualifiedTypeInfoTranslator getJavaQualifiedInfo() {
- return javaQualifiedAccess;
- }
-
- @Override
- public void setJavaQualifiedInfo(JavaQualifiedTypeInfoTranslator typeInfo) {
- javaQualifiedAccess = typeInfo;
- }
}
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 da23e83..60191de 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;
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 6b4da44..ca0dd02 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
@@ -60,8 +60,12 @@
import static org.onosproject.yangutils.utils.UtilConstants.QUEUE;
import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLAN;
import static org.onosproject.yangutils.utils.UtilConstants.SET;
+import static org.onosproject.yangutils.utils.UtilConstants.SHORT_MAX_RANGE_ATTR;
+import static org.onosproject.yangutils.utils.UtilConstants.SHORT_MIN_RANGE_ATTR;
import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
import static org.onosproject.yangutils.utils.UtilConstants.TYPE;
+import static org.onosproject.yangutils.utils.UtilConstants.UINT8_MAX_RANGE_ATTR;
+import static org.onosproject.yangutils.utils.UtilConstants.UINT8_MIN_RANGE_ATTR;
import static org.onosproject.yangutils.utils.UtilConstants.UINT_MAX_RANGE_ATTR;
import static org.onosproject.yangutils.utils.UtilConstants.UINT_MIN_RANGE_ATTR;
import static org.onosproject.yangutils.utils.UtilConstants.ULONG_MAX_RANGE_ATTR;
@@ -114,7 +118,7 @@
* @param javaAttributeName name of the attribute
* @param isList is list attribute
* @param attributeAccessType attribute access type
- * @param compilerAnnotation compiler annotation
+ * @param compilerAnnotation compiler annotation
* @return the textual java code for attribute definition in class
*/
public static String getJavaAttributeDefinition(String javaAttributeTypePkg, String javaAttributeType,
@@ -318,6 +322,24 @@
}
/**
+ * Adds attribute for long ranges.
+ *
+ * @param modifier modifier for attribute
+ * @param addFirst if need to be added first
+ * @return attribute for long ranges
+ */
+ static String addStaticAttributeShortRange(String modifier, boolean addFirst) {
+ if (addFirst) {
+ return NEW_LINE + FOUR_SPACE_INDENTATION + modifier + SPACE + SHORT_MIN_RANGE_ATTR +
+ FOUR_SPACE_INDENTATION +
+ modifier + SPACE + SHORT_MAX_RANGE_ATTR;
+ } else {
+ return NEW_LINE + FOUR_SPACE_INDENTATION + modifier + SPACE + UINT8_MIN_RANGE_ATTR +
+ FOUR_SPACE_INDENTATION + modifier + SPACE + UINT8_MAX_RANGE_ATTR;
+ }
+ }
+
+ /**
* Returns operation type enum.
*
* @return operation type enum
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 dcca748..43946f7 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
@@ -206,7 +206,7 @@
* @throws IOException when fails to write in file
*/
public static File generateInterfaceFile(File file, List<String> imports, YangNode curNode,
- boolean isAttrPresent)
+ boolean isAttrPresent)
throws IOException {
JavaFileInfoTranslator javaFileInfo = ((JavaFileInfoContainer) curNode).getJavaFileInfo();
@@ -376,7 +376,7 @@
*/
public static File generateBuilderClassFile(File file, YangNode curNode,
- boolean isAttrPresent)
+ boolean isAttrPresent)
throws IOException {
JavaFileInfoTranslator javaFileInfo = ((JavaFileInfoContainer) curNode).getJavaFileInfo();
@@ -490,7 +490,7 @@
* @throws IOException when fails to write in file
*/
public static File generateDefaultClassFile(File file, YangNode curNode, boolean isAttrPresent,
- List<String> imports)
+ List<String> imports)
throws IOException {
JavaFileInfoTranslator javaFileInfo = ((JavaFileInfoContainer) curNode).getJavaFileInfo();
@@ -806,6 +806,7 @@
boolean isIntConflict = false;
boolean isLongConflict = false;
+ boolean isShortConflict = false;
JavaAttributeInfo intAttr = tempJavaTypeFragmentFiles.getIntAttribute();
if (intAttr == null) {
intAttr = tempJavaTypeFragmentFiles.getUIntAttribute();
@@ -816,13 +817,20 @@
longAttr = tempJavaTypeFragmentFiles.getULongAttribute();
}
+ JavaAttributeInfo shortAttr = tempJavaTypeFragmentFiles.getShortAttribute();
+ if (shortAttr == null) {
+ shortAttr = tempJavaTypeFragmentFiles.getUInt8Attribute();
+ }
+
if (intAttr != null) {
isIntConflict = intAttr.isIntConflict();
}
if (longAttr != null) {
isLongConflict = longAttr.isLongConflict();
}
-
+ if (shortAttr != null) {
+ isShortConflict = shortAttr.isShortConflict();
+ }
if (isLongConflict) {
imports.add(tempJavaTypeFragmentFiles.getJavaImportData().getBigIntegerImport());
sort(imports);
@@ -845,6 +853,11 @@
tempJavaTypeFragmentFiles.getLongIndex() < tempJavaTypeFragmentFiles.getULongIndex()));
}
+ if (isShortConflict) {
+ insertDataIntoJavaFile(file, JavaCodeSnippetGen.addStaticAttributeShortRange(PRIVATE,
+ tempJavaTypeFragmentFiles.getShortIndex() < tempJavaTypeFragmentFiles.getUInt8Index()));
+ }
+
insertDataIntoJavaFile(file,
NEW_LINE + FOUR_SPACE_INDENTATION + getDataFromTempFileHandle(ATTRIBUTES_MASK,
((TempJavaCodeFragmentFilesContainer) curNode).getTempJavaCodeFragmentFiles()
@@ -914,6 +927,9 @@
if (isLongConflict) {
methods.add(getRangeValidatorMethodForUnion(BIG_INTEGER));
}
+ if (isShortConflict) {
+ methods.add(getRangeValidatorMethodForUnion(INT));
+ }
} catch (IOException e) {
throw new IOException("No data found in temporary java code fragment files for " + className
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 a816234..82cff15 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
@@ -45,11 +45,11 @@
import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.UINT8;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_SUBJECT_CLASS;
import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER;
-import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils
- .getAugmentedClassNameForDataMethods;
+import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getAugmentedClassNameForDataMethods;
import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getParentNodeNameForDataMethods;
import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getSetOfNodeIdentifiers;
import static org.onosproject.yangutils.translator.tojava.utils.ValidatorTypeForUnionTypes.INT_TYPE_CONFLICT;
+import static org.onosproject.yangutils.translator.tojava.utils.ValidatorTypeForUnionTypes.SHORT_TYPE_CONFLICT;
import static org.onosproject.yangutils.utils.UtilConstants.ADD;
import static org.onosproject.yangutils.utils.UtilConstants.ADD_STRING;
import static org.onosproject.yangutils.utils.UtilConstants.AND;
@@ -148,6 +148,8 @@
import static org.onosproject.yangutils.utils.UtilConstants.SET_METHOD_PREFIX;
import static org.onosproject.yangutils.utils.UtilConstants.SET_SELECT_LEAF;
import static org.onosproject.yangutils.utils.UtilConstants.SHORT;
+import static org.onosproject.yangutils.utils.UtilConstants.SHORT_MAX_RANGE;
+import static org.onosproject.yangutils.utils.UtilConstants.SHORT_MIN_RANGE;
import static org.onosproject.yangutils.utils.UtilConstants.SHORT_WRAPPER;
import static org.onosproject.yangutils.utils.UtilConstants.SINGLE_QUOTE;
import static org.onosproject.yangutils.utils.UtilConstants.SIXTEEN_SPACE_INDENTATION;
@@ -165,6 +167,8 @@
import static org.onosproject.yangutils.utils.UtilConstants.TRUE;
import static org.onosproject.yangutils.utils.UtilConstants.TRY;
import static org.onosproject.yangutils.utils.UtilConstants.TWELVE_SPACE_INDENTATION;
+import static org.onosproject.yangutils.utils.UtilConstants.UINT8_MAX_RANGE;
+import static org.onosproject.yangutils.utils.UtilConstants.UINT8_MIN_RANGE;
import static org.onosproject.yangutils.utils.UtilConstants.UINT_MAX_RANGE;
import static org.onosproject.yangutils.utils.UtilConstants.UINT_MIN_RANGE;
import static org.onosproject.yangutils.utils.UtilConstants.ULONG_MAX_RANGE;
@@ -229,7 +233,7 @@
* @return getter string
*/
public static String getGetterString(JavaAttributeInfo attr, int generatedJavaFiles,
- YangPluginConfig pluginConfig) {
+ YangPluginConfig pluginConfig) {
String returnType = getReturnType(attr);
String attributeName = attr.getAttributeName();
@@ -258,7 +262,7 @@
* @return setter string
*/
public static String getSetterString(JavaAttributeInfo attr, String className, int generatedJavaFiles,
- YangPluginConfig pluginConfig) {
+ YangPluginConfig pluginConfig) {
String attrType = getReturnType(attr);
String attributeName = attr.getAttributeName();
@@ -298,7 +302,7 @@
* @return default constructor string
*/
public static String getDefaultConstructorString(String name, String modifierType,
- YangPluginConfig pluginConfig) {
+ YangPluginConfig pluginConfig) {
return getJavaDoc(DEFAULT_CONSTRUCTOR, name, false, pluginConfig, null)
+ getDefaultConstructor(name, modifierType) + NEW_LINE;
}
@@ -419,7 +423,7 @@
* @return setter for attribute
*/
private static String getSetter(String className, String name, String type, int generatedJavaFiles,
- boolean isTypeNull, boolean isList) {
+ boolean isTypeNull, boolean isList) {
if (generatedJavaFiles == GENERATE_SERVICE_AND_MANAGER) {
return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + VOID + SPACE + SET_METHOD_PREFIX
+ getCapitalCase(name) + OPEN_PARENTHESIS + type + SPACE + name + CLOSE_PARENTHESIS + SPACE +
@@ -499,7 +503,7 @@
* @return getter method for interface
*/
static String getGetterForInterface(String yangName, String returnType, boolean isList,
- int generatedJavaFiles, YangCompilerAnnotation compilerAnnotation) {
+ int generatedJavaFiles, YangCompilerAnnotation compilerAnnotation) {
if (!isList) {
return getGetterInterfaceString(returnType, yangName, generatedJavaFiles);
}
@@ -515,7 +519,7 @@
* @return getter for interface
*/
private static String getGetterInterfaceString(String returnType, String yangName,
- int generatedJavaFiles) {
+ int generatedJavaFiles) {
if (generatedJavaFiles == GENERATE_SERVICE_AND_MANAGER) {
return getGetMethodWithArgument(returnType, yangName);
} else {
@@ -536,8 +540,8 @@
* @return setter method for interface
*/
static String getSetterForInterface(String attrName, String attrType, String className,
- boolean isList, int generatedJavaFiles,
- YangCompilerAnnotation compilerAnnotation) {
+ boolean isList, int generatedJavaFiles,
+ YangCompilerAnnotation compilerAnnotation) {
if (!isList) {
return getSetterInterfaceString(className, attrName, attrType, generatedJavaFiles);
}
@@ -555,10 +559,10 @@
* @return setter string
*/
private static String getSetterInterfaceString(String className, String attrName, String attrType,
- int generatedJavaFiles) {
+ int generatedJavaFiles) {
if (generatedJavaFiles == GENERATE_SERVICE_AND_MANAGER) {
return FOUR_SPACE_INDENTATION + VOID + SPACE + SET_METHOD_PREFIX + getCapitalCase(attrName)
- + OPEN_PARENTHESIS + attrType + SPACE + attrName + CLOSE_PARENTHESIS + SEMI_COLAN;
+ + OPEN_PARENTHESIS + attrType + OP_PARAM + SPACE + attrName + CLOSE_PARENTHESIS + SEMI_COLAN;
} else {
return FOUR_SPACE_INDENTATION + className + BUILDER + SPACE + attrName
+ OPEN_PARENTHESIS + attrType + SPACE + attrName + CLOSE_PARENTHESIS + SEMI_COLAN;
@@ -630,7 +634,7 @@
* @return constructor for class
*/
public static String getConstructor(JavaAttributeInfo attr, int generatedJavaFiles,
- YangPluginConfig pluginConfig) {
+ YangPluginConfig pluginConfig) {
String attributeName = attr.getAttributeName();
String constructor;
@@ -661,7 +665,7 @@
* @return rpc method string
*/
public static String getRpcServiceMethod(String rpcName, String inputName, String outputName,
- YangPluginConfig pluginConfig) {
+ YangPluginConfig pluginConfig) {
rpcName = getCamelCase(rpcName, pluginConfig.getConflictResolver());
if (!inputName.equals(EMPTY_STRING)) {
@@ -681,7 +685,7 @@
* @return rpc method string
*/
public static String getRpcManagerMethod(String rpcName, String inputName, String outputName,
- YangPluginConfig pluginConfig) {
+ YangPluginConfig pluginConfig) {
rpcName = getCamelCase(rpcName, pluginConfig.getConflictResolver());
if (!inputName.equals(EMPTY_STRING)) {
@@ -846,7 +850,7 @@
* @return from string method's body string
*/
public static String getFromStringMethod(JavaAttributeInfo attr,
- JavaAttributeInfo fromStringAttributeInfo) {
+ JavaAttributeInfo fromStringAttributeInfo) {
return EIGHT_SPACE_INDENTATION + getTrySubString() + NEW_LINE + TWELVE_SPACE_INDENTATION
+ getParsedSubString(attr, fromStringAttributeInfo) + NEW_LINE + TWELVE_SPACE_INDENTATION
@@ -889,7 +893,7 @@
* @return sub string with parsed statement for union's from string method
*/
private static String getParsedSubString(JavaAttributeInfo attr,
- JavaAttributeInfo fromStringAttributeInfo) {
+ JavaAttributeInfo fromStringAttributeInfo) {
String targetDataType = getReturnType(attr);
if (fromStringAttributeInfo.getAttributeType().getDataType() == BITS) {
@@ -1055,7 +1059,7 @@
* @return of method's string and java doc for special type
*/
public static String getOfMethodStringAndJavaDoc(JavaAttributeInfo attr, String generatedJavaClassName,
- YangPluginConfig pluginConfig) {
+ YangPluginConfig pluginConfig) {
String attrType = getReturnType(attr);
String attrName = attr.getAttributeName();
@@ -1087,8 +1091,8 @@
* @return string and java doc for constructor of type class
*/
public static String getTypeConstructorStringAndJavaDoc(JavaAttributeInfo attr,
- String generatedJavaClassName,
- YangPluginConfig pluginConfig) {
+ String generatedJavaClassName,
+ YangPluginConfig pluginConfig) {
String attrType = getReturnType(attr);
String attrName = attr.getAttributeName();
@@ -1109,7 +1113,7 @@
*/
public static String getTypeConstructorStringAndJavaDoc(JavaAttributeInfo attr1, JavaAttributeInfo
attr2, String generatedJavaClassName, YangPluginConfig pluginConfig, ValidatorTypeForUnionTypes type,
- boolean addFirst) {
+ boolean addFirst) {
String attrType = getReturnType(attr1);
String attrName1 = "";
@@ -1122,7 +1126,7 @@
}
String appDataStructure = null;
- if (attr1.getCompilerAnnotation() != null) {
+ if (attr1 != null && attr1.getCompilerAnnotation() != null) {
appDataStructure = attr1.getCompilerAnnotation().getYangAppDataStructure().getDataStructure().name();
}
return getJavaDoc(TYPE_CONSTRUCTOR, generatedJavaClassName + " for type " + attrName1, false, pluginConfig,
@@ -1154,7 +1158,7 @@
* @return type constructor string
*/
private static String getTypeConstructorString(String type, String attr1, String attr2, String className,
- ValidatorTypeForUnionTypes validatorType, boolean addInt) {
+ ValidatorTypeForUnionTypes validatorType, boolean addInt) {
String constructor;
constructor = FOUR_SPACE_INDENTATION + PUBLIC + SPACE + className + OPEN_PARENTHESIS + type + SPACE + VALUE
@@ -1285,8 +1289,8 @@
* @return of method
*/
static String getEnumsOfMethod(String className, JavaAttributeInfo attr,
- Map<String, Integer> enumMap, List<String> enumList,
- YangPluginConfig pluginConfig) {
+ Map<String, Integer> enumMap, List<String> enumList,
+ YangPluginConfig pluginConfig) {
String attrType = getReturnType(attr);
String attrName = attr.getAttributeName();
@@ -1449,6 +1453,12 @@
} else {
condition = condition + UINT_MIN_RANGE + COMMA + SPACE + UINT_MAX_RANGE + COMMA + SPACE + VALUE;
}
+ } else if (type == SHORT_TYPE_CONFLICT) {
+ if (addFirst) {
+ condition = condition + SHORT_MIN_RANGE + COMMA + SPACE + SHORT_MAX_RANGE + COMMA + SPACE + VALUE;
+ } else {
+ condition = condition + UINT8_MIN_RANGE + COMMA + SPACE + UINT8_MAX_RANGE + COMMA + SPACE + VALUE;
+ }
} else {
if (addFirst) {
condition = condition + LONG_MIN_RANGE + COMMA + SPACE + LONG_MAX_RANGE + COMMA + SPACE + VALUE;
diff --git a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/ValidatorTypeForUnionTypes.java b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/ValidatorTypeForUnionTypes.java
index a9890bd..9ccceb1 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/ValidatorTypeForUnionTypes.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/translator/tojava/utils/ValidatorTypeForUnionTypes.java
@@ -27,6 +27,11 @@
INT_TYPE_CONFLICT,
/**
+ * When conflict is there for int16 and uInt8.
+ */
+ SHORT_TYPE_CONFLICT,
+
+ /**
* When conflict is there for int64 and uInt32.
*/
LONG_TYPE_CONFLICT
diff --git a/plugin/src/main/java/org/onosproject/yangutils/utils/UtilConstants.java b/plugin/src/main/java/org/onosproject/yangutils/utils/UtilConstants.java
index a0c66b0..8b323bc 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/utils/UtilConstants.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/utils/UtilConstants.java
@@ -319,6 +319,48 @@
/**
* Static attribute for minRange.
*/
+ public static final String SHORT_MIN_RANGE_ATTR = "static final int INT16_MIN_RANGE = -32768;\n";
+
+ /**
+ * Static attribute for minRange.
+ */
+ public static final String SHORT_MIN_RANGE = "INT16_MIN_RANGE";
+
+ /**
+ * Static attribute for minRange.
+ */
+ public static final String SHORT_MAX_RANGE = "INT16_MAX_RANGE";
+
+ /**
+ * Static attribute for maxRange.
+ */
+ public static final String SHORT_MAX_RANGE_ATTR = "static final int INT16_MAX_RANGE = 32767;";
+
+
+ /**
+ * Static attribute for minRange.
+ */
+ public static final String UINT8_MIN_RANGE_ATTR = "static final int UINT8_MIN_RANGE = 0;\n";
+
+ /**
+ * Static attribute for maxRange.
+ */
+ public static final String UINT8_MAX_RANGE_ATTR = "static final int UINT8_MAX_RANGE = 32767;";
+
+
+ /**
+ * Static attribute for minRange.
+ */
+ public static final String UINT8_MIN_RANGE = "UINT8_MIN_RANGE";
+
+ /**
+ * Static attribute for maxRange.
+ */
+ public static final String UINT8_MAX_RANGE = "UINT8_MAX_RANGE";
+
+ /**
+ * Static attribute for minRange.
+ */
public static final String INT_MIN_RANGE_ATTR = "static final int INT32_MIN_RANGE = -2147483648;\n";
/**
diff --git a/plugin/src/main/java/org/onosproject/yangutils/utils/io/impl/JavaDocGen.java b/plugin/src/main/java/org/onosproject/yangutils/utils/io/impl/JavaDocGen.java
index 251523b..3fa8b18 100644
--- a/plugin/src/main/java/org/onosproject/yangutils/utils/io/impl/JavaDocGen.java
+++ b/plugin/src/main/java/org/onosproject/yangutils/utils/io/impl/JavaDocGen.java
@@ -96,7 +96,7 @@
* @param isList is list attribute
* @param pluginConfig plugin configurations
* @param compilerAnnotation compiler annotations for user defined data type
- * @return javadocs.
+ * @return javaDocs.
*/
public static String getJavaDoc(JavaDocType type, String name, boolean isList, YangPluginConfig pluginConfig,
String compilerAnnotation) {
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 fe2d382..8a578c3 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
@@ -403,7 +403,7 @@
}
/* When spaces are present in the given line. */
- public static String whenSpaceIsPresent(String line, int lineSize) {
+ private static String whenSpaceIsPresent(String line, int lineSize) {
StringBuilder stringBuilder = new StringBuilder();
String append;
if (line.length() > lineSize) {
diff --git a/plugin/src/test/java/org/onosproject/yangutils/parser/impl/parseutils/AugmentListnerUtilTest.java b/plugin/src/test/java/org/onosproject/yangutils/parser/impl/parseutils/AugmentListnerUtilTest.java
deleted file mode 100644
index 3cf6eaa..0000000
--- a/plugin/src/test/java/org/onosproject/yangutils/parser/impl/parseutils/AugmentListnerUtilTest.java
+++ /dev/null
@@ -1,320 +0,0 @@
-/*
- * 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.parser.impl.parseutils;
-
-import org.junit.Test;
-import org.onosproject.yangutils.datamodel.YangNodeIdentifier;
-
-import static org.hamcrest.core.Is.is;
-import static org.junit.Assert.assertThat;
-import static org.onosproject.yangutils.parser.impl.parserutils.AugmentListenerUtil.clearOccurrenceCount;
-import static org.onosproject.yangutils.parser.impl.parserutils.AugmentListenerUtil.createValidNameForAugment;
-import static org.onosproject.yangutils.parser.impl.parserutils.AugmentListenerUtil.getAugmentJavaFileNameList;
-import static org.onosproject.yangutils.parser.impl.parserutils.AugmentListenerUtil.updateNameWhenHasMultipleOuccrrence;
-
-/**
- * Unit test case for augment listener utility.
- */
-public class AugmentListnerUtilTest {
-
- private static final String TEST1 = "test1Node";
- private static final String PARENT_PREFIX = "if";
- private static final String NODE_PREFIX = "rf";
-
- private static final String TEST1_AUGMENTED_NAME_WITHOUT_PREFIX = "AugmentedTest1Node";
- private static final String TEST1_AUGMENTED_NAME_WITHOUT_PREFIX_MULTI1 = "AugmentedTest1Node1";
- private static final String TEST1_AUGMENTED_NAME_WITHOUT_PREFIX_MULTI2 = "AugmentedTest1Node2";
- private static final String TEST1_AUGMENTED_NAME_WITHOUT_PREFIX_MULTI3 = "AugmentedTest1Node3";
-
- private static final String TEST1_AUGMENTED_NAME_WITH_PREFIX = "AugmentedRfTest1Node";
- private static final String TEST1_AUGMENTED_NAME_WITH_PREFIX_MULTI1 = "AugmentedRfTest1Node1";
- private static final String TEST1_AUGMENTED_NAME_WITH_PREFIX_MULTI2 = "AugmentedRfTest1Node2";
- private static final String TEST1_AUGMENTED_NAME_WITH_PREFIX_MULTI3 = "AugmentedRfTest1Node3";
-
- private static String testString = "";
-
- /**
- * Unit test case when parent's prefix is present and one occurrence of augment node to update same target node.
- */
- @Test
- public void testForAugmentNameWhenOneOuccrrenceWithParentPrefix() {
- clearData();
- testString = createValidNameForAugment(getStubNodeIdetifierWithParentPrefix(),
- isPrefixPresent(getStubNodeIdetifierWithParentPrefix()));
- assertThat(true, is(testString.equals(TEST1_AUGMENTED_NAME_WITHOUT_PREFIX)));
- }
-
- /**
- * Unit test case when no prefix and one occurrence of augment node to update same target node.
- */
- @Test
- public void testForAugmentNameWhenOneOuccrrenceWithNoPrefix() {
- clearData();
- testString = createValidNameForAugment(getStubNodeIdetifierWithNoPrefix(),
- isPrefixPresent(getStubNodeIdetifierWithNoPrefix()));
- assertThat(true, is(testString.equals(TEST1_AUGMENTED_NAME_WITHOUT_PREFIX)));
- }
-
- /**
- * Unit test case when different prefix then parent is present and
- * one occurrence of augment node to update same target node.
- */
- @Test
- public void testForAugmentNameWhenOneOuccrrenceWithDiffPrefix() {
- clearData();
- testString = createValidNameForAugment(getStubNodeIdetifierWithDiffPrefix(),
- isPrefixPresent(getStubNodeIdetifierWithDiffPrefix()));
- assertThat(true, is(testString.equals(TEST1_AUGMENTED_NAME_WITH_PREFIX)));
- }
-
- /**
- * Unit test case when parent's prefix is present and two occurrence of augment node to update
- * same target node is present.
- */
- @Test
- public void testForAugmentNameWhenTwoOuccrrenceWithParentPrefix() {
- clearData();
-
- createValidNameForAugment(getStubNodeIdetifierWithParentPrefix(),
- isPrefixPresent(getStubNodeIdetifierWithParentPrefix()));
- testString = updateNameWhenHasMultipleOuccrrence(getStubNodeIdetifierWithParentPrefix(),
- isPrefixPresent(getStubNodeIdetifierWithParentPrefix()));
-
- assertThat(true, is(testString.equals(TEST1_AUGMENTED_NAME_WITHOUT_PREFIX_MULTI2)));
- }
-
- /**
- * Unit test case when no prefix and two occurrence of augment node to update
- * same target node is present.
- */
- @Test
- public void testForAugmentNameWhenTwoOuccrrenceWithNoPrefix() {
- clearData();
-
- createValidNameForAugment(getStubNodeIdetifierWithNoPrefix(),
- isPrefixPresent(getStubNodeIdetifierWithNoPrefix()));
- testString = updateNameWhenHasMultipleOuccrrence(getStubNodeIdetifierWithNoPrefix(),
- isPrefixPresent(getStubNodeIdetifierWithNoPrefix()));
- assertThat(true, is(testString.equals(TEST1_AUGMENTED_NAME_WITHOUT_PREFIX_MULTI2)));
- }
-
- /**
- * Unit test case when different prefix then parent is present and
- * two occurrence of augment node to update same target node is present.
- */
- @Test
- public void testForAugmentNameWhenTwoOuccrrenceWithDiffPrefix() {
- clearData();
-
- createValidNameForAugment(getStubNodeIdetifierWithDiffPrefix(),
- isPrefixPresent(getStubNodeIdetifierWithDiffPrefix()));
- testString = updateNameWhenHasMultipleOuccrrence(getStubNodeIdetifierWithDiffPrefix(),
- isPrefixPresent(getStubNodeIdetifierWithDiffPrefix()));
- assertThat(true, is(testString.equals(TEST1_AUGMENTED_NAME_WITH_PREFIX_MULTI2)));
- }
-
- /**
- * Unit test case when parent prefix and three occurrence of augment node to update
- * same target node is present.
- */
- @Test
- public void testForAugmentNameWhenThreeOuccrrenceWithParentPrefix() {
- clearData();
-
- createValidNameForAugment(getStubNodeIdetifierWithParentPrefix(),
- isPrefixPresent(getStubNodeIdetifierWithParentPrefix()));
- updateNameWhenHasMultipleOuccrrence(getStubNodeIdetifierWithParentPrefix(),
- isPrefixPresent(getStubNodeIdetifierWithParentPrefix()));
-
- testString = updateNameWhenHasMultipleOuccrrence(getStubNodeIdetifierWithParentPrefix(),
- isPrefixPresent(getStubNodeIdetifierWithParentPrefix()));
- assertThat(true, is(testString.equals(TEST1_AUGMENTED_NAME_WITHOUT_PREFIX_MULTI3)));
- }
-
- /**
- * Unit test case when no prefix and three occurrence of augment node to update
- * same target node is present.
- */
- @Test
- public void testForAugmentNameWhenThreeOuccrrenceNoPrefix() {
- clearData();
-
- createValidNameForAugment(getStubNodeIdetifierWithNoPrefix(),
- isPrefixPresent(getStubNodeIdetifierWithNoPrefix()));
- updateNameWhenHasMultipleOuccrrence(getStubNodeIdetifierWithNoPrefix(),
- isPrefixPresent(getStubNodeIdetifierWithNoPrefix()));
-
- testString = updateNameWhenHasMultipleOuccrrence(getStubNodeIdetifierWithNoPrefix(),
- isPrefixPresent(getStubNodeIdetifierWithNoPrefix()));
- assertThat(true, is(testString.equals(TEST1_AUGMENTED_NAME_WITHOUT_PREFIX_MULTI3)));
- }
-
- /**
- * Unit test case when different prefix and three occurrence of augment node to update
- * same target node is present.
- */
- @Test
- public void testForAugmentNameWhenThreeOuccrrenceWithDiffPrefix() {
- clearData();
-
- createValidNameForAugment(getStubNodeIdetifierWithDiffPrefix(),
- isPrefixPresent(getStubNodeIdetifierWithDiffPrefix()));
- updateNameWhenHasMultipleOuccrrence(getStubNodeIdetifierWithDiffPrefix(),
- isPrefixPresent(getStubNodeIdetifierWithDiffPrefix()));
-
- testString = updateNameWhenHasMultipleOuccrrence(getStubNodeIdetifierWithDiffPrefix(),
- isPrefixPresent(getStubNodeIdetifierWithDiffPrefix()));
- assertThat(true, is(testString.equals(TEST1_AUGMENTED_NAME_WITH_PREFIX_MULTI3)));
- }
-
- /**
- * Unit test case for when three occurrence is there and parent prefix is present,
- * all the names need to be updated in list.
- */
- @Test
- public void testForPreviousNamesGotUpdatedWhenParentPrefix() {
- clearData();
-
- createValidNameForAugment(getStubNodeIdetifierWithParentPrefix(),
- isPrefixPresent(getStubNodeIdetifierWithParentPrefix()));
- updateNameWhenHasMultipleOuccrrence(getStubNodeIdetifierWithParentPrefix(),
- isPrefixPresent(getStubNodeIdetifierWithParentPrefix()));
- updateNameWhenHasMultipleOuccrrence(getStubNodeIdetifierWithParentPrefix(),
- isPrefixPresent(getStubNodeIdetifierWithParentPrefix()));
-
- testString = getAugmentJavaFileNameList().get(0);
- assertThat(true, is(testString.equals(TEST1_AUGMENTED_NAME_WITHOUT_PREFIX_MULTI1)));
-
- testString = getAugmentJavaFileNameList().get(1);
- assertThat(true, is(testString.equals(TEST1_AUGMENTED_NAME_WITHOUT_PREFIX_MULTI2)));
-
- testString = getAugmentJavaFileNameList().get(2);
- assertThat(true, is(testString.equals(TEST1_AUGMENTED_NAME_WITHOUT_PREFIX_MULTI3)));
- }
-
- /**
- * Unit test case for when three occurrence is there and no prefix is present,
- * all the names need to be updated in list.
- */
- @Test
- public void testForPreviousNamesGotUpdatedWhenNoPrefix() {
- clearData();
-
- createValidNameForAugment(getStubNodeIdetifierWithNoPrefix(),
- isPrefixPresent(getStubNodeIdetifierWithNoPrefix()));
- updateNameWhenHasMultipleOuccrrence(getStubNodeIdetifierWithNoPrefix(),
- isPrefixPresent(getStubNodeIdetifierWithNoPrefix()));
- updateNameWhenHasMultipleOuccrrence(getStubNodeIdetifierWithNoPrefix(),
- isPrefixPresent(getStubNodeIdetifierWithNoPrefix()));
-
- testString = getAugmentJavaFileNameList().get(0);
- assertThat(true, is(testString.equals(TEST1_AUGMENTED_NAME_WITHOUT_PREFIX_MULTI1)));
-
- testString = getAugmentJavaFileNameList().get(1);
- assertThat(true, is(testString.equals(TEST1_AUGMENTED_NAME_WITHOUT_PREFIX_MULTI2)));
-
- testString = getAugmentJavaFileNameList().get(2);
- assertThat(true, is(testString.equals(TEST1_AUGMENTED_NAME_WITHOUT_PREFIX_MULTI3)));
- }
-
- /**
- * Unit test case for when three occurrence is there and different prefix is present,
- * all the names need to be updated in list.
- */
- @Test
- public void testForPreviousNamesGotUpdatedWhenDifferentPrefix() {
- clearData();
-
- createValidNameForAugment(getStubNodeIdetifierWithDiffPrefix(),
- isPrefixPresent(getStubNodeIdetifierWithDiffPrefix()));
- updateNameWhenHasMultipleOuccrrence(getStubNodeIdetifierWithDiffPrefix(),
- isPrefixPresent(getStubNodeIdetifierWithDiffPrefix()));
- updateNameWhenHasMultipleOuccrrence(getStubNodeIdetifierWithDiffPrefix(),
- isPrefixPresent(getStubNodeIdetifierWithDiffPrefix()));
-
- testString = getAugmentJavaFileNameList().get(0);
- assertThat(true, is(testString.equals(TEST1_AUGMENTED_NAME_WITH_PREFIX_MULTI1)));
-
- testString = getAugmentJavaFileNameList().get(1);
- assertThat(true, is(testString.equals(TEST1_AUGMENTED_NAME_WITH_PREFIX_MULTI2)));
-
- testString = getAugmentJavaFileNameList().get(2);
- assertThat(true, is(testString.equals(TEST1_AUGMENTED_NAME_WITH_PREFIX_MULTI3)));
- }
-
- /**
- * Returns stub node identifier when parent prefix is used.
- *
- * @param name name of node
- * @param prefix prefix of node
- * @return node identifier for node
- */
- private YangNodeIdentifier getStubNodeIdetifierWithParentPrefix() {
- YangNodeIdentifier nodeId = new YangNodeIdentifier();
- nodeId.setName(TEST1);
- nodeId.setPrefix(PARENT_PREFIX);
- return nodeId;
- }
-
- /**
- * Returns stub node identifier when no prefix is used.
- *
- * @param name name of node
- * @param prefix prefix of node
- * @return node identifier for node
- */
- private YangNodeIdentifier getStubNodeIdetifierWithNoPrefix() {
- YangNodeIdentifier nodeId = new YangNodeIdentifier();
- nodeId.setName(TEST1);
- nodeId.setPrefix(null);
- return nodeId;
- }
-
- /**
- * Returns stub node identifier when different prefix is used.
- *
- * @param name name of node
- * @param prefix prefix of node
- * @return node identifier for node
- */
- private YangNodeIdentifier getStubNodeIdetifierWithDiffPrefix() {
- YangNodeIdentifier nodeId = new YangNodeIdentifier();
- nodeId.setName(TEST1);
- nodeId.setPrefix(NODE_PREFIX);
- return nodeId;
- }
-
- /**
- * Returns true if a prefix is present and it is not equals to parents prefix.
- *
- * @param nodeId YANG node identifier
- * @param parentsPrefix parent's prefix
- * @return true if a prefix is present and it is not equals to parents prefix
- */
- private static boolean isPrefixPresent(YangNodeIdentifier nodeId) {
- return nodeId.getPrefix() != null && nodeId.getPrefix() != PARENT_PREFIX;
- }
-
- /**
- * Clears list of names and occurrence count after each test case.
- */
- private void clearData() {
- getAugmentJavaFileNameList().clear();
- clearOccurrenceCount();
- }
-
-}
diff --git a/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/InterJarLinkerTest.java b/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/InterJarLinkerTest.java
index 9889490..85f22ac 100644
--- a/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/InterJarLinkerTest.java
+++ b/plugin/src/test/java/org/onosproject/yangutils/plugin/manager/InterJarLinkerTest.java
@@ -36,15 +36,15 @@
import org.onosproject.yangutils.datamodel.YangGrouping;
import org.onosproject.yangutils.datamodel.YangLeaf;
import org.onosproject.yangutils.datamodel.YangNode;
-import org.onosproject.yangutils.utils.io.impl.YangFileScanner;
import org.onosproject.yangutils.utils.io.YangPluginConfig;
+import org.onosproject.yangutils.utils.io.impl.YangFileScanner;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.core.Is.is;
+import static org.onosproject.yangutils.datamodel.utils.DataModelUtils.parseJarFile;
import static org.onosproject.yangutils.datamodel.utils.ResolvableStatus.RESOLVED;
import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.DERIVED;
import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.STRING;
-import static org.onosproject.yangutils.datamodel.utils.DataModelUtils.parseJarFile;
import static org.onosproject.yangutils.plugin.manager.YangPluginUtils.serializeDataModel;
import static org.onosproject.yangutils.utils.UtilConstants.SLASH;
import static org.onosproject.yangutils.utils.UtilConstants.TEMP;
@@ -60,9 +60,6 @@
private static final String TARGET = "target/interJarFileLinking/";
private static final String YANG_FILES_DIR = "src/test/resources/interJarFileLinking/yangFiles/";
- private static final String TARGET_RESOURCE_PATH = SLASH + TEMP + SLASH + YANG_RESOURCES + SLASH;
- private static final String JAR_FILE_NAME = "onlab-test-1.7.0-SNAPSHOT.jar";
- private static final String SER_FILE_NAME = "portPair.ser";
private static final String FLOW_CLASSIFIER_FOLDER = "target/interJarFileLinking/org/onosproject"
+ "/yang/gen/v1/sfc/flowclassifier/rev20160524";
@@ -70,10 +67,12 @@
+ "/yang/gen/v1/sfc/portpair/rev20160524";
private static final String FLOW_CLASSIFIER_MANAGER = FLOW_CLASSIFIER_FOLDER + SLASH + "FlowClassifierManager.java";
+ private MockJarFileProvider mockJarFileProvider = new MockJarFileProvider();
+
/**
* Unit test case for a single jar dependency.
*
- * @throws IOException when fails to do IO operations
+ * @throws IOException when fails to do IO operations
* @throws MojoExecutionException when fails to do mojo operations
*/
@Test
@@ -84,13 +83,8 @@
int size1 = utilManager.getYangFileInfoSet().size();
utilManager.parseYangFileInfoSet();
- provideTestJarFile();
+ mockJarFileProvider.provideTestJarFile(utilManager);
utilManager.setYangFileInfoSet(removeFileInfoFromSet(utilManager.getYangFileInfoSet()));
-
- for (String file : getListOfTestJar(TARGET)) {
- addInterJarRootNodes(file);
- }
-
utilManager.resolveDependenciesUsingLinker();
int size2 = utilManager.getYangFileInfoSet().size();
@@ -98,13 +92,13 @@
assertThat(true, is(parseFileInfoSet(utilManager.getYangFileInfoSet().iterator())));
deleteDirectory(TARGET);
- deleteTestSerFile();
+ mockJarFileProvider.deleteTestSerFile(YANG_FILES_DIR);
}
/**
* Unit test case for a multiple jar dependency.
*
- * @throws IOException when fails to do IO operations
+ * @throws IOException when fails to do IO operations
* @throws MojoExecutionException when fails to do mojo operations
*/
@Test
@@ -115,11 +109,8 @@
int size1 = utilManager.getYangFileInfoSet().size();
utilManager.parseYangFileInfoSet();
- provideTestJarFile();
+ mockJarFileProvider.provideTestJarFile(utilManager);
utilManager.setYangFileInfoSet(removeFileInfoFromSet(utilManager.getYangFileInfoSet()));
- for (String file : getListOfTestJar(TARGET)) {
- addInterJarRootNodes(file);
- }
utilManager.resolveDependenciesUsingLinker();
int size2 = utilManager.getYangFileInfoSet().size();
@@ -194,7 +185,7 @@
testIfFlowClassifierFilesExists();
testIfPortPairFileDoesNotExist();
deleteDirectory(TARGET);
- deleteTestSerFile();
+ mockJarFileProvider.deleteTestSerFile(YANG_FILES_DIR);
}
/**
@@ -234,26 +225,6 @@
}
/**
- * Provides test jar files for linker.
- *
- * @throws IOException when fails to do IO operations
- */
- private void provideTestJarFile() throws IOException {
-
- MavenProject project = new MavenProject();
- serializeDataModel(TARGET, utilManager.getYangFileInfoSet(), project, false);
- createTestJar();
- }
-
- /**
- * Deletes serialized file.
- */
- private void deleteTestSerFile() {
- File ser = new File(System.getProperty("user.dir") + SLASH + YANG_FILES_DIR + SER_FILE_NAME);
- ser.delete();
- }
-
- /**
* Parses file info list and returns true if file info list contains the serialized file info.
*
* @param yangFileInfoIterator file info list iterator
@@ -274,79 +245,121 @@
}
/**
- * Returns list of test jar files.
- *
- * @param searchdir search directory
- * @return list of test jar files
+ * Represents jar file provider for testing.
*/
- private List<String> getListOfTestJar(String searchdir) {
- List<String> jarFiles = new ArrayList<>();
+ private static class MockJarFileProvider {
- File directory = new File(searchdir + "/");
- File[] files = directory.listFiles();
+ private static final String TARGET = "target/interJarFileLinking/";
+ private static final String TARGET_RESOURCE_PATH = SLASH + TEMP + SLASH + YANG_RESOURCES + SLASH;
+ private static final String JAR_FILE_NAME = "onlab-test-1.7.0-SNAPSHOT.jar";
+ private static final String SER_FILE_NAME = "portPair.ser";
- for (File file : files) {
- if (!file.isDirectory()) {
- jarFiles.add(file.toString());
+ /**
+ * Creates an instance of jar file provider.
+ */
+ MockJarFileProvider() {
+
+ }
+
+ /**
+ * Provides test jar files for linker.
+ *
+ * @throws IOException when fails to do IO operations
+ */
+ void provideTestJarFile(YangUtilManager utilManager) throws IOException {
+
+ MavenProject project = new MavenProject();
+ serializeDataModel(TARGET, utilManager.getYangFileInfoSet(), project, false);
+ createTestJar();
+
+ for (String file : getListOfTestJar(TARGET)) {
+ addInterJarRootNodes(file, utilManager);
}
}
- return jarFiles;
- }
-
- /**
- * Adds data model nodes of jar to file info set.
- *
- * @param jarFile jar file name
- * @throws IOException when fails to do IO operations
- */
- private void addInterJarRootNodes(String jarFile) throws IOException {
- try {
- List<YangNode> interJarResolvedNodes = parseJarFile(jarFile, TARGET);
-
- for (YangNode node : interJarResolvedNodes) {
- YangFileInfo dependentFileInfo = new YangFileInfo();
- node.setToTranslate(false);
- dependentFileInfo.setRootNode(node);
- dependentFileInfo.setForTranslator(false);
- dependentFileInfo.setYangFileName(node.getName());
- utilManager.getYangFileInfoSet().add(dependentFileInfo);
- }
- } catch (IOException e) {
- throw new IOException("failed to resolve in interjar scenario.");
+ /**
+ * Deletes serialized file.
+ */
+ void deleteTestSerFile(String yangFileDir) {
+ File ser = new File(System.getProperty("user.dir") + SLASH + yangFileDir + SLASH + SER_FILE_NAME);
+ ser.delete();
}
- }
- /**
- * Creates a temporary test jar files.
- */
- private void createTestJar() {
+ /**
+ * Returns list of test jar files.
+ *
+ * @param searchDir search directory
+ * @return list of test jar files
+ */
+ private List<String> getListOfTestJar(String searchDir) {
+ List<String> jarFiles = new ArrayList<>();
- File file = new File(TARGET + TARGET_RESOURCE_PATH);
- File[] files = file.listFiles();
- String[] source = new String[files.length];
+ File directory = new File(searchDir + "/");
+ File[] files = directory.listFiles();
- for (int i = 0; i < files.length; i++) {
- source[i] = files[i].toString();
- }
- byte[] buf = new byte[1024];
-
- try {
- String target = TARGET + JAR_FILE_NAME;
- JarOutputStream out = new JarOutputStream(new FileOutputStream(target));
- for (String element : source) {
- FileInputStream in = new FileInputStream(element);
- out.putNextEntry(new JarEntry(element));
- int len;
- while ((len = in.read(buf)) > 0) {
- out.write(buf, 0, len);
+ for (File file : files) {
+ if (!file.isDirectory()) {
+ jarFiles.add(file.toString());
}
- out.closeEntry();
- in.close();
}
- out.close();
- } catch (IOException e) {
+
+ return jarFiles;
+ }
+
+ /**
+ * Adds data model nodes of jar to file info set.
+ *
+ * @param jarFile jar file name
+ * @param utilManager
+ * @throws IOException when fails to do IO operations
+ */
+ private void addInterJarRootNodes(String jarFile, YangUtilManager utilManager) throws IOException {
+ try {
+ List<YangNode> interJarResolvedNodes = parseJarFile(jarFile, TARGET);
+
+ for (YangNode node : interJarResolvedNodes) {
+ YangFileInfo dependentFileInfo = new YangFileInfo();
+ node.setToTranslate(false);
+ dependentFileInfo.setRootNode(node);
+ dependentFileInfo.setForTranslator(false);
+ dependentFileInfo.setYangFileName(node.getName());
+ utilManager.getYangFileInfoSet().add(dependentFileInfo);
+ }
+ } catch (IOException e) {
+ throw new IOException("failed to resolve in interjar scenario.");
+ }
+ }
+
+ /**
+ * Creates a temporary test jar files.
+ */
+ private void createTestJar() {
+
+ File file = new File(TARGET + TARGET_RESOURCE_PATH);
+ File[] files = file.listFiles();
+ String[] source = new String[files.length];
+
+ for (int i = 0; i < files.length; i++) {
+ source[i] = files[i].toString();
+ }
+ byte[] buf = new byte[1024];
+
+ try {
+ String target = TARGET + JAR_FILE_NAME;
+ JarOutputStream out = new JarOutputStream(new FileOutputStream(target));
+ for (String element : source) {
+ FileInputStream in = new FileInputStream(element);
+ out.putNextEntry(new JarEntry(element));
+ int len;
+ while ((len = in.read(buf)) > 0) {
+ out.write(buf, 0, len);
+ }
+ out.closeEntry();
+ in.close();
+ }
+ out.close();
+ } catch (IOException e) {
+ }
}
}
-
}