Bharat saraswal
Committed by Patrick Liu

[ONOS-4799],[ONOS-4351] Augment inter file linker and Generated Code refactored.

Change-Id: Id1f3ac9c90a632373f51cc75d499c3110216be17
Showing 110 changed files with 2044 additions and 664 deletions
...@@ -49,5 +49,10 @@ public enum ResolvableType { ...@@ -49,5 +49,10 @@ public enum ResolvableType {
49 /** 49 /**
50 * Identifies the identityref. 50 * Identifies the identityref.
51 */ 51 */
52 - YANG_IDENTITYREF 52 + YANG_IDENTITYREF,
53 +
54 + /**
55 + * Identifies the augment.
56 + */
57 + YANG_AUGMENT
53 } 58 }
......
...@@ -20,6 +20,7 @@ import java.util.List; ...@@ -20,6 +20,7 @@ import java.util.List;
20 20
21 import org.onosproject.yangutils.datamodel.exceptions.DataModelException; 21 import org.onosproject.yangutils.datamodel.exceptions.DataModelException;
22 import org.onosproject.yangutils.datamodel.utils.Parsable; 22 import org.onosproject.yangutils.datamodel.utils.Parsable;
23 +import org.onosproject.yangutils.datamodel.utils.ResolvableStatus;
23 import org.onosproject.yangutils.datamodel.utils.YangConstructType; 24 import org.onosproject.yangutils.datamodel.utils.YangConstructType;
24 25
25 import static org.onosproject.yangutils.datamodel.utils.DataModelUtils.detectCollidingChildUtil; 26 import static org.onosproject.yangutils.datamodel.utils.DataModelUtils.detectCollidingChildUtil;
...@@ -81,7 +82,8 @@ import static org.onosproject.yangutils.datamodel.utils.DataModelUtils.detectCol ...@@ -81,7 +82,8 @@ import static org.onosproject.yangutils.datamodel.utils.DataModelUtils.detectCol
81 */ 82 */
82 public class YangAugment 83 public class YangAugment
83 extends YangNode 84 extends YangNode
84 - implements YangLeavesHolder, YangCommonInfo, Parsable, CollisionDetector, YangWhenHolder, YangIfFeatureHolder { 85 + implements YangLeavesHolder, YangCommonInfo, Parsable, CollisionDetector, YangAugmentedInfo, Resolvable,
86 + YangXPathResolver, YangWhenHolder, YangIfFeatureHolder {
85 87
86 private static final long serialVersionUID = 806201602L; 88 private static final long serialVersionUID = 806201602L;
87 89
...@@ -108,7 +110,7 @@ public class YangAugment ...@@ -108,7 +110,7 @@ public class YangAugment
108 /** 110 /**
109 * List of node identifiers. 111 * List of node identifiers.
110 */ 112 */
111 - private List<YangNodeIdentifier> targetNode; 113 + private List<YangAtomicPath> targetNode;
112 114
113 /** 115 /**
114 * Reference of the YANG augment. 116 * Reference of the YANG augment.
...@@ -121,6 +123,19 @@ public class YangAugment ...@@ -121,6 +123,19 @@ public class YangAugment
121 private YangStatusType status; 123 private YangStatusType status;
122 124
123 /** 125 /**
126 + * Resolved augmented node.
127 + */
128 + private YangNode augmentedNode;
129 +
130 + /**
131 + * Status of resolution. If completely resolved enum value is "RESOLVED",
132 + * if not enum value is "UNRESOLVED", in case reference of grouping/typedef
133 + * is added to uses/type but it's not resolved value of enum should be
134 + * "INTRA_FILE_RESOLVED".
135 + */
136 + private ResolvableStatus resolvableStatus;
137 +
138 + /**
124 * When data of the node. 139 * When data of the node.
125 */ 140 */
126 private YangWhen when; 141 private YangWhen when;
...@@ -135,6 +150,7 @@ public class YangAugment ...@@ -135,6 +150,7 @@ public class YangAugment
135 */ 150 */
136 public YangAugment() { 151 public YangAugment() {
137 super(YangNodeType.AUGMENT_NODE); 152 super(YangNodeType.AUGMENT_NODE);
153 + resolvableStatus = ResolvableStatus.UNRESOLVED;
138 } 154 }
139 155
140 /** 156 /**
...@@ -142,7 +158,7 @@ public class YangAugment ...@@ -142,7 +158,7 @@ public class YangAugment
142 * 158 *
143 * @return the augmented node 159 * @return the augmented node
144 */ 160 */
145 - public List<YangNodeIdentifier> getTargetNode() { 161 + public List<YangAtomicPath> getTargetNode() {
146 return targetNode; 162 return targetNode;
147 } 163 }
148 164
...@@ -151,7 +167,7 @@ public class YangAugment ...@@ -151,7 +167,7 @@ public class YangAugment
151 * 167 *
152 * @param nodeIdentifiers the augmented node 168 * @param nodeIdentifiers the augmented node
153 */ 169 */
154 - public void setTargetNode(List<YangNodeIdentifier> nodeIdentifiers) { 170 + public void setTargetNode(List<YangAtomicPath> nodeIdentifiers) {
155 targetNode = nodeIdentifiers; 171 targetNode = nodeIdentifiers;
156 } 172 }
157 173
...@@ -371,6 +387,24 @@ public class YangAugment ...@@ -371,6 +387,24 @@ public class YangAugment
371 this.name = name; 387 this.name = name;
372 } 388 }
373 389
390 + /**
391 + * Returns augmented node.
392 + *
393 + * @return augmented node
394 + */
395 + public YangNode getAugmentedNode() {
396 + return augmentedNode;
397 + }
398 +
399 + /**
400 + * Sets augmented node.
401 + *
402 + * @param augmentedNode augmented node
403 + */
404 + public void setAugmentedNode(YangNode augmentedNode) {
405 + this.augmentedNode = augmentedNode;
406 + }
407 +
374 @Override 408 @Override
375 public List<YangIfFeature> getIfFeatureList() { 409 public List<YangIfFeature> getIfFeatureList() {
376 return ifFeatureList; 410 return ifFeatureList;
...@@ -388,4 +422,20 @@ public class YangAugment ...@@ -388,4 +422,20 @@ public class YangAugment
388 public void setIfFeatureList(List<YangIfFeature> ifFeatureList) { 422 public void setIfFeatureList(List<YangIfFeature> ifFeatureList) {
389 this.ifFeatureList = ifFeatureList; 423 this.ifFeatureList = ifFeatureList;
390 } 424 }
425 +
426 + @Override
427 + public ResolvableStatus getResolvableStatus() {
428 + return resolvableStatus;
429 + }
430 +
431 + @Override
432 + public void setResolvableStatus(ResolvableStatus resolvableStatus) {
433 + this.resolvableStatus = resolvableStatus;
434 +
435 + }
436 +
437 + @Override
438 + public void resolve() throws DataModelException {
439 + // Resolving of target node is being done in XPathLinker.
440 + }
391 } 441 }
......
...@@ -14,31 +14,33 @@ ...@@ -14,31 +14,33 @@
14 * limitations under the License. 14 * limitations under the License.
15 */ 15 */
16 16
17 -package org.onosproject.yangutils.utils; 17 +package org.onosproject.yangutils.datamodel;
18 18
19 import java.util.List; 19 import java.util.List;
20 20
21 /** 21 /**
22 - * Abstraction of an entity which represents augmentation of a YANG node. 22 + * Represents YANG constructs which can be augmented.
23 */ 23 */
24 -public interface AugmentationHolder { 24 +public interface YangAugmentableNode {
25 25
26 /** 26 /**
27 * Adds augment info to the augment info list. 27 * Adds augment info to the augment info list.
28 * 28 *
29 * @param augmentInfo augment info of node 29 * @param augmentInfo augment info of node
30 */ 30 */
31 - void addAugmentation(AugmentedInfo augmentInfo); 31 + void addAugmentation(YangAugmentedInfo augmentInfo);
32 32
33 /** 33 /**
34 * Removes augment info from the node. 34 * Removes augment info from the node.
35 + *
36 + * @param augmentInfo augment info of node
35 */ 37 */
36 - void removeAugmentation(); 38 + void removeAugmentation(YangAugmentedInfo augmentInfo);
37 39
38 /** 40 /**
39 * Returns list of augment info. 41 * Returns list of augment info.
40 * 42 *
41 * @return list of augment info 43 * @return list of augment info
42 */ 44 */
43 - List<AugmentedInfo> getAugmentedInfoList(); 45 + List<YangAugmentedInfo> getAugmentedInfoList();
44 } 46 }
......
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
17 package org.onosproject.yangutils.datamodel; 17 package org.onosproject.yangutils.datamodel;
18 18
19 /** 19 /**
20 - * Represents YANG constructs which can be augmented. 20 + * Abstraction of an entity which represents YANG augmented info.
21 */ 21 */
22 -public interface YangAugmentationHolder { 22 +public interface YangAugmentedInfo {
23 } 23 }
......
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
15 */ 15 */
16 package org.onosproject.yangutils.datamodel; 16 package org.onosproject.yangutils.datamodel;
17 17
18 +import java.util.ArrayList;
18 import java.util.LinkedList; 19 import java.util.LinkedList;
19 import java.util.List; 20 import java.util.List;
20 21
...@@ -94,7 +95,7 @@ import static org.onosproject.yangutils.datamodel.utils.YangConstructType.CASE_D ...@@ -94,7 +95,7 @@ import static org.onosproject.yangutils.datamodel.utils.YangConstructType.CASE_D
94 */ 95 */
95 public class YangCase 96 public class YangCase
96 extends YangNode 97 extends YangNode
97 - implements YangLeavesHolder, YangCommonInfo, Parsable, CollisionDetector, YangAugmentationHolder, 98 + implements YangLeavesHolder, YangCommonInfo, Parsable, CollisionDetector, YangAugmentableNode,
98 YangWhenHolder, YangIfFeatureHolder { 99 YangWhenHolder, YangIfFeatureHolder {
99 100
100 private static final long serialVersionUID = 806201603L; 101 private static final long serialVersionUID = 806201603L;
...@@ -141,6 +142,8 @@ public class YangCase ...@@ -141,6 +142,8 @@ public class YangCase
141 */ 142 */
142 private List<YangIfFeature> ifFeatureList; 143 private List<YangIfFeature> ifFeatureList;
143 144
145 + private List<YangAugmentedInfo> yangAugmentedInfo = new ArrayList<>();
146 +
144 /** 147 /**
145 * Creates a choice node. 148 * Creates a choice node.
146 */ 149 */
...@@ -392,4 +395,19 @@ public class YangCase ...@@ -392,4 +395,19 @@ public class YangCase
392 public void setIfFeatureList(List<YangIfFeature> ifFeatureList) { 395 public void setIfFeatureList(List<YangIfFeature> ifFeatureList) {
393 this.ifFeatureList = ifFeatureList; 396 this.ifFeatureList = ifFeatureList;
394 } 397 }
398 +
399 + @Override
400 + public void addAugmentation(YangAugmentedInfo augmentInfo) {
401 + yangAugmentedInfo.add(augmentInfo);
402 + }
403 +
404 + @Override
405 + public void removeAugmentation(YangAugmentedInfo augmentInfo) {
406 + yangAugmentedInfo.remove(augmentInfo);
407 + }
408 +
409 + @Override
410 + public List<YangAugmentedInfo> getAugmentedInfoList() {
411 + return yangAugmentedInfo;
412 + }
395 } 413 }
......
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
15 */ 15 */
16 package org.onosproject.yangutils.datamodel; 16 package org.onosproject.yangutils.datamodel;
17 17
18 +import java.util.ArrayList;
18 import java.util.LinkedList; 19 import java.util.LinkedList;
19 import java.util.List; 20 import java.util.List;
20 import org.onosproject.yangutils.datamodel.exceptions.DataModelException; 21 import org.onosproject.yangutils.datamodel.exceptions.DataModelException;
...@@ -63,8 +64,8 @@ import static org.onosproject.yangutils.datamodel.utils.YangConstructType.CHOICE ...@@ -63,8 +64,8 @@ import static org.onosproject.yangutils.datamodel.utils.YangConstructType.CHOICE
63 * Represents data model node to maintain information defined in YANG choice. 64 * Represents data model node to maintain information defined in YANG choice.
64 */ 65 */
65 public class YangChoice extends YangNode 66 public class YangChoice extends YangNode
66 - implements YangCommonInfo, Parsable, CollisionDetector, YangAugmentationHolder, YangWhenHolder, 67 + implements YangCommonInfo, Parsable, CollisionDetector, YangAugmentableNode,
67 - YangIfFeatureHolder { 68 + YangWhenHolder, YangIfFeatureHolder {
68 69
69 private static final long serialVersionUID = 806201604L; 70 private static final long serialVersionUID = 806201604L;
70 71
...@@ -156,6 +157,8 @@ public class YangChoice extends YangNode ...@@ -156,6 +157,8 @@ public class YangChoice extends YangNode
156 */ 157 */
157 private List<YangIfFeature> ifFeatureList; 158 private List<YangIfFeature> ifFeatureList;
158 159
160 + private List<YangAugmentedInfo> yangAugmentedInfo = new ArrayList<>();
161 +
159 /** 162 /**
160 * Create a choice node. 163 * Create a choice node.
161 */ 164 */
...@@ -418,4 +421,18 @@ public class YangChoice extends YangNode ...@@ -418,4 +421,18 @@ public class YangChoice extends YangNode
418 this.ifFeatureList = ifFeatureList; 421 this.ifFeatureList = ifFeatureList;
419 } 422 }
420 423
424 + @Override
425 + public void addAugmentation(YangAugmentedInfo augmentInfo) {
426 + yangAugmentedInfo.add(augmentInfo);
427 + }
428 +
429 + @Override
430 + public void removeAugmentation(YangAugmentedInfo augmentInfo) {
431 + yangAugmentedInfo.remove(augmentInfo);
432 + }
433 +
434 + @Override
435 + public List<YangAugmentedInfo> getAugmentedInfoList() {
436 + return yangAugmentedInfo;
437 + }
421 } 438 }
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
16 16
17 package org.onosproject.yangutils.datamodel; 17 package org.onosproject.yangutils.datamodel;
18 18
19 +import java.util.ArrayList;
19 import java.util.LinkedList; 20 import java.util.LinkedList;
20 import java.util.List; 21 import java.util.List;
21 22
...@@ -89,8 +90,8 @@ import static org.onosproject.yangutils.datamodel.utils.DataModelUtils.detectCol ...@@ -89,8 +90,8 @@ import static org.onosproject.yangutils.datamodel.utils.DataModelUtils.detectCol
89 */ 90 */
90 public class YangContainer 91 public class YangContainer
91 extends YangNode 92 extends YangNode
92 - implements YangLeavesHolder, YangCommonInfo, Parsable, CollisionDetector, YangAugmentationHolder, 93 + implements YangLeavesHolder, YangCommonInfo, Parsable, CollisionDetector,
93 - YangMustHolder, YangWhenHolder, YangIfFeatureHolder { 94 + YangAugmentableNode, YangMustHolder, YangWhenHolder, YangIfFeatureHolder {
94 95
95 private static final long serialVersionUID = 806201605L; 96 private static final long serialVersionUID = 806201605L;
96 97
...@@ -130,6 +131,8 @@ public class YangContainer ...@@ -130,6 +131,8 @@ public class YangContainer
130 */ 131 */
131 private String reference; 132 private String reference;
132 133
134 + private List<YangAugmentedInfo> yangAugmentedInfo = new ArrayList<>();
135 +
133 /** 136 /**
134 * Status of the node. 137 * Status of the node.
135 */ 138 */
...@@ -518,4 +521,18 @@ public class YangContainer ...@@ -518,4 +521,18 @@ public class YangContainer
518 getListOfMust().add(must); 521 getListOfMust().add(must);
519 } 522 }
520 523
524 + @Override
525 + public void addAugmentation(YangAugmentedInfo augmentInfo) {
526 + yangAugmentedInfo.add(augmentInfo);
527 + }
528 +
529 + @Override
530 + public void removeAugmentation(YangAugmentedInfo augmentInfo) {
531 + yangAugmentedInfo.remove(augmentInfo);
532 + }
533 +
534 + @Override
535 + public List<YangAugmentedInfo> getAugmentedInfoList() {
536 + return yangAugmentedInfo;
537 + }
521 } 538 }
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
16 16
17 package org.onosproject.yangutils.datamodel; 17 package org.onosproject.yangutils.datamodel;
18 18
19 +import java.util.ArrayList;
19 import java.util.LinkedList; 20 import java.util.LinkedList;
20 import java.util.List; 21 import java.util.List;
21 22
...@@ -70,7 +71,7 @@ import static org.onosproject.yangutils.datamodel.utils.DataModelUtils.detectCol ...@@ -70,7 +71,7 @@ import static org.onosproject.yangutils.datamodel.utils.DataModelUtils.detectCol
70 */ 71 */
71 public class YangInput 72 public class YangInput
72 extends YangNode 73 extends YangNode
73 - implements YangLeavesHolder, Parsable, CollisionDetector, YangAugmentationHolder { 74 + implements YangLeavesHolder, Parsable, CollisionDetector, YangAugmentableNode {
74 75
75 private static final long serialVersionUID = 806201608L; 76 private static final long serialVersionUID = 806201608L;
76 77
...@@ -89,6 +90,8 @@ public class YangInput ...@@ -89,6 +90,8 @@ public class YangInput
89 */ 90 */
90 private List<YangLeafList> listOfLeafList; 91 private List<YangLeafList> listOfLeafList;
91 92
93 + private List<YangAugmentedInfo> yangAugmentedInfo = new ArrayList<>();
94 +
92 /** 95 /**
93 * Create a rpc input node. 96 * Create a rpc input node.
94 */ 97 */
...@@ -171,4 +174,19 @@ public class YangInput ...@@ -171,4 +174,19 @@ public class YangInput
171 public void setName(String name) { 174 public void setName(String name) {
172 this.name = name; 175 this.name = name;
173 } 176 }
177 +
178 + @Override
179 + public void addAugmentation(YangAugmentedInfo augmentInfo) {
180 + yangAugmentedInfo.add(augmentInfo);
181 + }
182 +
183 + @Override
184 + public void removeAugmentation(YangAugmentedInfo augmentInfo) {
185 + yangAugmentedInfo.remove(augmentInfo);
186 + }
187 +
188 + @Override
189 + public List<YangAugmentedInfo> getAugmentedInfoList() {
190 + return yangAugmentedInfo;
191 + }
174 } 192 }
......
...@@ -43,7 +43,8 @@ import static org.onosproject.yangutils.datamodel.utils.ResolvableStatus.RESOLVE ...@@ -43,7 +43,8 @@ import static org.onosproject.yangutils.datamodel.utils.ResolvableStatus.RESOLVE
43 * 43 *
44 * @param <T> YANG leafref info 44 * @param <T> YANG leafref info
45 */ 45 */
46 -public class YangLeafRef<T> implements Parsable, Resolvable, Serializable, YangIfFeatureHolder { 46 +public class YangLeafRef<T> implements Parsable, Resolvable, Serializable, YangIfFeatureHolder,
47 + YangXPathResolver {
47 48
48 private static final long serialVersionUID = 286201644L; 49 private static final long serialVersionUID = 286201644L;
49 50
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
16 16
17 package org.onosproject.yangutils.datamodel; 17 package org.onosproject.yangutils.datamodel;
18 18
19 +import java.util.ArrayList;
19 import java.util.LinkedList; 20 import java.util.LinkedList;
20 import java.util.List; 21 import java.util.List;
21 22
...@@ -70,8 +71,8 @@ import static org.onosproject.yangutils.datamodel.utils.DataModelUtils.detectCol ...@@ -70,8 +71,8 @@ import static org.onosproject.yangutils.datamodel.utils.DataModelUtils.detectCol
70 */ 71 */
71 public class YangList 72 public class YangList
72 extends YangNode 73 extends YangNode
73 - implements YangLeavesHolder, YangCommonInfo, Parsable, CollisionDetector, YangAugmentationHolder, 74 + implements YangLeavesHolder, YangCommonInfo, Parsable, CollisionDetector,
74 - YangMustHolder, YangIfFeatureHolder, YangDataNode { 75 + YangAugmentableNode, YangMustHolder, YangIfFeatureHolder, YangDataNode {
75 76
76 private static final long serialVersionUID = 806201609L; 77 private static final long serialVersionUID = 806201609L;
77 78
...@@ -127,6 +128,8 @@ public class YangList ...@@ -127,6 +128,8 @@ public class YangList
127 */ 128 */
128 private List<YangLeafList> listOfLeafList; 129 private List<YangLeafList> listOfLeafList;
129 130
131 + private List<YangAugmentedInfo> yangAugmentedInfo = new ArrayList<>();
132 +
130 /** 133 /**
131 * Reference RFC 6020. 134 * Reference RFC 6020.
132 * 135 *
...@@ -570,8 +573,7 @@ public class YangList ...@@ -570,8 +573,7 @@ public class YangList
570 * @throws DataModelException a violation of data model rules 573 * @throws DataModelException a violation of data model rules
571 */ 574 */
572 private void validateKey(List<YangLeaf> leaves, List<YangLeafList> leafLists, List<String> keys) 575 private void validateKey(List<YangLeaf> leaves, List<YangLeafList> leafLists, List<String> keys)
573 - throws 576 + throws DataModelException {
574 - DataModelException {
575 boolean leafFound = false; 577 boolean leafFound = false;
576 List<YangLeaf> keyLeaves = new LinkedList<>(); 578 List<YangLeaf> keyLeaves = new LinkedList<>();
577 List<YangLeafList> keyLeafLists = new LinkedList<>(); 579 List<YangLeafList> keyLeafLists = new LinkedList<>();
...@@ -713,4 +715,19 @@ public class YangList ...@@ -713,4 +715,19 @@ public class YangList
713 } 715 }
714 getListOfMust().add(must); 716 getListOfMust().add(must);
715 } 717 }
718 +
719 + @Override
720 + public void addAugmentation(YangAugmentedInfo augmentInfo) {
721 + yangAugmentedInfo.add(augmentInfo);
722 + }
723 +
724 + @Override
725 + public void removeAugmentation(YangAugmentedInfo augmentInfo) {
726 + yangAugmentedInfo.remove(augmentInfo);
727 + }
728 +
729 + @Override
730 + public List<YangAugmentedInfo> getAugmentedInfoList() {
731 + return yangAugmentedInfo;
732 + }
716 } 733 }
......
...@@ -201,30 +201,34 @@ public class YangModule ...@@ -201,30 +201,34 @@ public class YangModule
201 private List<YangResolutionInfo> derivedTypeResolutionList; 201 private List<YangResolutionInfo> derivedTypeResolutionList;
202 202
203 /** 203 /**
204 - * uses resolution list. 204 + * Uses resolution list.
205 */ 205 */
206 private List<YangResolutionInfo> usesResolutionList; 206 private List<YangResolutionInfo> usesResolutionList;
207 207
208 /** 208 /**
209 - * if-feature resolution list. 209 + * If-feature resolution list.
210 */ 210 */
211 private List<YangResolutionInfo> ifFeatureResolutionList; 211 private List<YangResolutionInfo> ifFeatureResolutionList;
212 212
213 /** 213 /**
214 - * leafref resolution list. 214 + * Leafref resolution list.
215 */ 215 */
216 private List<YangResolutionInfo> leafrefResolutionList; 216 private List<YangResolutionInfo> leafrefResolutionList;
217 217
218 /** 218 /**
219 - * base resolution list. 219 + * Base resolution list.
220 */ 220 */
221 private List<YangResolutionInfo> baseResolutionList; 221 private List<YangResolutionInfo> baseResolutionList;
222 222
223 /** 223 /**
224 - * identityref resolution list. 224 + * Identityref resolution list.
225 */ 225 */
226 private List<YangResolutionInfo> identityrefResolutionList; 226 private List<YangResolutionInfo> identityrefResolutionList;
227 227
228 + /**
229 + * Augment resolution list.
230 + */
231 + private List<YangResolutionInfo> augmentResolutionList;
228 232
229 /** 233 /**
230 * Creates a YANG node of module type. 234 * Creates a YANG node of module type.
...@@ -233,6 +237,7 @@ public class YangModule ...@@ -233,6 +237,7 @@ public class YangModule
233 237
234 super(YangNodeType.MODULE_NODE); 238 super(YangNodeType.MODULE_NODE);
235 derivedTypeResolutionList = new LinkedList<>(); 239 derivedTypeResolutionList = new LinkedList<>();
240 + augmentResolutionList = new LinkedList<>();
236 usesResolutionList = new LinkedList<>(); 241 usesResolutionList = new LinkedList<>();
237 ifFeatureResolutionList = new LinkedList<>(); 242 ifFeatureResolutionList = new LinkedList<>();
238 leafrefResolutionList = new LinkedList<>(); 243 leafrefResolutionList = new LinkedList<>();
...@@ -608,6 +613,8 @@ public class YangModule ...@@ -608,6 +613,8 @@ public class YangModule
608 return derivedTypeResolutionList; 613 return derivedTypeResolutionList;
609 } else if (type == ResolvableType.YANG_USES) { 614 } else if (type == ResolvableType.YANG_USES) {
610 return usesResolutionList; 615 return usesResolutionList;
616 + } else if (type == ResolvableType.YANG_AUGMENT) {
617 + return augmentResolutionList;
611 } else if (type == ResolvableType.YANG_IF_FEATURE) { 618 } else if (type == ResolvableType.YANG_IF_FEATURE) {
612 return ifFeatureResolutionList; 619 return ifFeatureResolutionList;
613 } else if (type == ResolvableType.YANG_LEAFREF) { 620 } else if (type == ResolvableType.YANG_LEAFREF) {
...@@ -632,6 +639,8 @@ public class YangModule ...@@ -632,6 +639,8 @@ public class YangModule
632 leafrefResolutionList.add(resolutionInfo); 639 leafrefResolutionList.add(resolutionInfo);
633 } else if (type == ResolvableType.YANG_BASE) { 640 } else if (type == ResolvableType.YANG_BASE) {
634 baseResolutionList.add(resolutionInfo); 641 baseResolutionList.add(resolutionInfo);
642 + } else if (type == ResolvableType.YANG_AUGMENT) {
643 + augmentResolutionList.add(resolutionInfo);
635 } else if (type == ResolvableType.YANG_IDENTITYREF) { 644 } else if (type == ResolvableType.YANG_IDENTITYREF) {
636 identityrefResolutionList.add(resolutionInfo); 645 identityrefResolutionList.add(resolutionInfo);
637 } 646 }
...@@ -650,6 +659,8 @@ public class YangModule ...@@ -650,6 +659,8 @@ public class YangModule
650 leafrefResolutionList = resolutionList; 659 leafrefResolutionList = resolutionList;
651 } else if (type == ResolvableType.YANG_BASE) { 660 } else if (type == ResolvableType.YANG_BASE) {
652 baseResolutionList = resolutionList; 661 baseResolutionList = resolutionList;
662 + } else if (type == ResolvableType.YANG_AUGMENT) {
663 + augmentResolutionList = resolutionList;
653 } else if (type == ResolvableType.YANG_IDENTITYREF) { 664 } else if (type == ResolvableType.YANG_IDENTITYREF) {
654 identityrefResolutionList = resolutionList; 665 identityrefResolutionList = resolutionList;
655 } 666 }
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
16 16
17 package org.onosproject.yangutils.datamodel; 17 package org.onosproject.yangutils.datamodel;
18 18
19 +import java.util.ArrayList;
19 import java.util.LinkedList; 20 import java.util.LinkedList;
20 import java.util.List; 21 import java.util.List;
21 22
...@@ -76,8 +77,8 @@ import static org.onosproject.yangutils.datamodel.utils.DataModelUtils.detectCol ...@@ -76,8 +77,8 @@ import static org.onosproject.yangutils.datamodel.utils.DataModelUtils.detectCol
76 */ 77 */
77 public class YangNotification 78 public class YangNotification
78 extends YangNode 79 extends YangNode
79 - implements YangLeavesHolder, YangCommonInfo, Parsable, CollisionDetector, YangAugmentationHolder, 80 + implements YangLeavesHolder, YangCommonInfo, Parsable, CollisionDetector,
80 - YangIfFeatureHolder { 81 + YangAugmentableNode, YangIfFeatureHolder {
81 82
82 private static final long serialVersionUID = 806201611L; 83 private static final long serialVersionUID = 806201611L;
83 84
...@@ -116,6 +117,8 @@ public class YangNotification ...@@ -116,6 +117,8 @@ public class YangNotification
116 */ 117 */
117 private List<YangIfFeature> ifFeatureList; 118 private List<YangIfFeature> ifFeatureList;
118 119
120 + private List<YangAugmentedInfo> yangAugmentedInfo = new ArrayList<>();
121 +
119 /** 122 /**
120 * Create a notification node. 123 * Create a notification node.
121 */ 124 */
...@@ -245,4 +248,19 @@ public class YangNotification ...@@ -245,4 +248,19 @@ public class YangNotification
245 public void setIfFeatureList(List<YangIfFeature> ifFeatureList) { 248 public void setIfFeatureList(List<YangIfFeature> ifFeatureList) {
246 this.ifFeatureList = ifFeatureList; 249 this.ifFeatureList = ifFeatureList;
247 } 250 }
251 +
252 + @Override
253 + public void addAugmentation(YangAugmentedInfo augmentInfo) {
254 + yangAugmentedInfo.add(augmentInfo);
255 + }
256 +
257 + @Override
258 + public void removeAugmentation(YangAugmentedInfo augmentInfo) {
259 + yangAugmentedInfo.remove(augmentInfo);
260 + }
261 +
262 + @Override
263 + public List<YangAugmentedInfo> getAugmentedInfoList() {
264 + return yangAugmentedInfo;
265 + }
248 } 266 }
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
16 16
17 package org.onosproject.yangutils.datamodel; 17 package org.onosproject.yangutils.datamodel;
18 18
19 +import java.util.ArrayList;
19 import java.util.LinkedList; 20 import java.util.LinkedList;
20 import java.util.List; 21 import java.util.List;
21 22
...@@ -69,7 +70,7 @@ import static org.onosproject.yangutils.datamodel.utils.DataModelUtils.detectCol ...@@ -69,7 +70,7 @@ import static org.onosproject.yangutils.datamodel.utils.DataModelUtils.detectCol
69 */ 70 */
70 public class YangOutput 71 public class YangOutput
71 extends YangNode 72 extends YangNode
72 - implements YangLeavesHolder, Parsable, CollisionDetector, YangAugmentationHolder { 73 + implements YangLeavesHolder, Parsable, CollisionDetector, YangAugmentableNode {
73 74
74 private static final long serialVersionUID = 806201612L; 75 private static final long serialVersionUID = 806201612L;
75 76
...@@ -88,6 +89,8 @@ public class YangOutput ...@@ -88,6 +89,8 @@ public class YangOutput
88 */ 89 */
89 private List<YangLeafList> listOfLeafList; 90 private List<YangLeafList> listOfLeafList;
90 91
92 + private List<YangAugmentedInfo> yangAugmentedInfo = new ArrayList<>();
93 +
91 /** 94 /**
92 * Create a rpc output node. 95 * Create a rpc output node.
93 */ 96 */
...@@ -170,4 +173,19 @@ public class YangOutput ...@@ -170,4 +173,19 @@ public class YangOutput
170 public void setName(String name) { 173 public void setName(String name) {
171 this.name = name; 174 this.name = name;
172 } 175 }
176 +
177 + @Override
178 + public void addAugmentation(YangAugmentedInfo augmentInfo) {
179 + yangAugmentedInfo.add(augmentInfo);
180 + }
181 +
182 + @Override
183 + public void removeAugmentation(YangAugmentedInfo augmentInfo) {
184 + yangAugmentedInfo.remove(augmentInfo);
185 + }
186 +
187 + @Override
188 + public List<YangAugmentedInfo> getAugmentedInfoList() {
189 + return yangAugmentedInfo;
190 + }
173 } 191 }
......
...@@ -20,10 +20,13 @@ package org.onosproject.yangutils.datamodel; ...@@ -20,10 +20,13 @@ package org.onosproject.yangutils.datamodel;
20 */ 20 */
21 public enum YangPathArgType { 21 public enum YangPathArgType {
22 22
23 - // Absolute path. 23 + /**
24 + * Absolute path.
25 + */
24 ABSOLUTE_PATH, 26 ABSOLUTE_PATH,
25 27
26 - // Relative path. 28 + /**
29 + * Relative path.
30 + */
27 RELATIVE_PATH 31 RELATIVE_PATH
28 -
29 } 32 }
......
...@@ -20,6 +20,8 @@ package org.onosproject.yangutils.datamodel; ...@@ -20,6 +20,8 @@ package org.onosproject.yangutils.datamodel;
20 */ 20 */
21 public enum YangPathOperator { 21 public enum YangPathOperator {
22 22
23 - // Path expression contains equal to. 23 + /**
24 + * Path expression contains equal-to.
25 + */
24 EQUALTO 26 EQUALTO
25 } 27 }
......
...@@ -199,36 +199,42 @@ public class YangSubModule ...@@ -199,36 +199,42 @@ public class YangSubModule
199 private List<YangResolutionInfo> derivedTypeResolutionList; 199 private List<YangResolutionInfo> derivedTypeResolutionList;
200 200
201 /** 201 /**
202 - * uses resolution list. 202 + * Uses resolution list.
203 */ 203 */
204 private List<YangResolutionInfo> usesResolutionList; 204 private List<YangResolutionInfo> usesResolutionList;
205 205
206 /** 206 /**
207 - * if-feature resolution list. 207 + * If-feature resolution list.
208 */ 208 */
209 private List<YangResolutionInfo> ifFeatureResolutionList; 209 private List<YangResolutionInfo> ifFeatureResolutionList;
210 210
211 /** 211 /**
212 - * leafref resolution list. 212 + * Leafref resolution list.
213 */ 213 */
214 private List<YangResolutionInfo> leafrefResolutionList; 214 private List<YangResolutionInfo> leafrefResolutionList;
215 215
216 /** 216 /**
217 - * base resolution list. 217 + * Base resolution list.
218 */ 218 */
219 private List<YangResolutionInfo> baseResolutionList; 219 private List<YangResolutionInfo> baseResolutionList;
220 220
221 /** 221 /**
222 - * identityref resolution list. 222 + * Identityref resolution list.
223 */ 223 */
224 private List<YangResolutionInfo> identityrefResolutionList; 224 private List<YangResolutionInfo> identityrefResolutionList;
225 225
226 /** 226 /**
227 + * Augment resolution list.
228 + */
229 + private List<YangResolutionInfo> augmentResolutionList;
230 +
231 + /**
227 * Creates a sub module node. 232 * Creates a sub module node.
228 */ 233 */
229 public YangSubModule() { 234 public YangSubModule() {
230 super(YangNodeType.SUB_MODULE_NODE); 235 super(YangNodeType.SUB_MODULE_NODE);
231 derivedTypeResolutionList = new LinkedList<>(); 236 derivedTypeResolutionList = new LinkedList<>();
237 + augmentResolutionList = new LinkedList<>();
232 usesResolutionList = new LinkedList<>(); 238 usesResolutionList = new LinkedList<>();
233 ifFeatureResolutionList = new LinkedList<>(); 239 ifFeatureResolutionList = new LinkedList<>();
234 leafrefResolutionList = new LinkedList<>(); 240 leafrefResolutionList = new LinkedList<>();
...@@ -569,6 +575,8 @@ public class YangSubModule ...@@ -569,6 +575,8 @@ public class YangSubModule
569 return derivedTypeResolutionList; 575 return derivedTypeResolutionList;
570 } else if (type == ResolvableType.YANG_USES) { 576 } else if (type == ResolvableType.YANG_USES) {
571 return usesResolutionList; 577 return usesResolutionList;
578 + } else if (type == ResolvableType.YANG_AUGMENT) {
579 + return augmentResolutionList;
572 } else if (type == ResolvableType.YANG_IF_FEATURE) { 580 } else if (type == ResolvableType.YANG_IF_FEATURE) {
573 return ifFeatureResolutionList; 581 return ifFeatureResolutionList;
574 } else if (type == ResolvableType.YANG_LEAFREF) { 582 } else if (type == ResolvableType.YANG_LEAFREF) {
...@@ -593,6 +601,8 @@ public class YangSubModule ...@@ -593,6 +601,8 @@ public class YangSubModule
593 leafrefResolutionList.add(resolutionInfo); 601 leafrefResolutionList.add(resolutionInfo);
594 } else if (type == ResolvableType.YANG_BASE) { 602 } else if (type == ResolvableType.YANG_BASE) {
595 baseResolutionList.add(resolutionInfo); 603 baseResolutionList.add(resolutionInfo);
604 + } else if (type == ResolvableType.YANG_AUGMENT) {
605 + augmentResolutionList.add(resolutionInfo);
596 } else if (type == ResolvableType.YANG_IDENTITYREF) { 606 } else if (type == ResolvableType.YANG_IDENTITYREF) {
597 identityrefResolutionList.add(resolutionInfo); 607 identityrefResolutionList.add(resolutionInfo);
598 } 608 }
...@@ -611,6 +621,8 @@ public class YangSubModule ...@@ -611,6 +621,8 @@ public class YangSubModule
611 leafrefResolutionList = resolutionList; 621 leafrefResolutionList = resolutionList;
612 } else if (type == ResolvableType.YANG_BASE) { 622 } else if (type == ResolvableType.YANG_BASE) {
613 baseResolutionList = resolutionList; 623 baseResolutionList = resolutionList;
624 + } else if (type == ResolvableType.YANG_AUGMENT) {
625 + augmentResolutionList = resolutionList;
614 } else if (type == ResolvableType.YANG_IDENTITYREF) { 626 } else if (type == ResolvableType.YANG_IDENTITYREF) {
615 identityrefResolutionList = resolutionList; 627 identityrefResolutionList = resolutionList;
616 } 628 }
......
...@@ -14,10 +14,10 @@ ...@@ -14,10 +14,10 @@
14 * limitations under the License. 14 * limitations under the License.
15 */ 15 */
16 16
17 -package org.onosproject.yangutils.utils; 17 +package org.onosproject.yangutils.datamodel;
18 18
19 /** 19 /**
20 - * Abstraction of an entity which represents augmented info. 20 + * Abstraction of an entity which can be resolved with x-path linker.
21 */ 21 */
22 -public interface AugmentedInfo { 22 +public interface YangXPathResolver {
23 } 23 }
......
...@@ -16,12 +16,17 @@ ...@@ -16,12 +16,17 @@
16 16
17 package org.onosproject.yangutils.datamodel.utils; 17 package org.onosproject.yangutils.datamodel.utils;
18 18
19 +import java.io.FileInputStream;
20 +import java.io.IOException;
21 +import java.io.ObjectInputStream;
22 +import java.util.ArrayList;
19 import java.util.List; 23 import java.util.List;
20 import java.util.Set; 24 import java.util.Set;
21 25
22 import org.onosproject.yangutils.datamodel.CollisionDetector; 26 import org.onosproject.yangutils.datamodel.CollisionDetector;
23 import org.onosproject.yangutils.datamodel.ResolvableType; 27 import org.onosproject.yangutils.datamodel.ResolvableType;
24 import org.onosproject.yangutils.datamodel.YangIfFeature; 28 import org.onosproject.yangutils.datamodel.YangIfFeature;
29 +import org.onosproject.yangutils.datamodel.YangAugment;
25 import org.onosproject.yangutils.datamodel.YangBase; 30 import org.onosproject.yangutils.datamodel.YangBase;
26 import org.onosproject.yangutils.datamodel.YangIdentityRef; 31 import org.onosproject.yangutils.datamodel.YangIdentityRef;
27 import org.onosproject.yangutils.datamodel.YangLeaf; 32 import org.onosproject.yangutils.datamodel.YangLeaf;
...@@ -171,6 +176,10 @@ public final class DataModelUtils { ...@@ -171,6 +176,10 @@ public final class DataModelUtils {
171 resolutionNode.addToResolutionList(resolutionInfo, 176 resolutionNode.addToResolutionList(resolutionInfo,
172 ResolvableType.YANG_USES); 177 ResolvableType.YANG_USES);
173 } else if (resolutionInfo.getEntityToResolveInfo() 178 } else if (resolutionInfo.getEntityToResolveInfo()
179 + .getEntityToResolve() instanceof YangAugment) {
180 + resolutionNode.addToResolutionList(resolutionInfo,
181 + ResolvableType.YANG_AUGMENT);
182 + } else if (resolutionInfo.getEntityToResolveInfo()
174 .getEntityToResolve() instanceof YangIfFeature) { 183 .getEntityToResolve() instanceof YangIfFeature) {
175 resolutionNode.addToResolutionList(resolutionInfo, 184 resolutionNode.addToResolutionList(resolutionInfo,
176 ResolvableType.YANG_IF_FEATURE); 185 ResolvableType.YANG_IF_FEATURE);
...@@ -272,4 +281,30 @@ public final class DataModelUtils { ...@@ -272,4 +281,30 @@ public final class DataModelUtils {
272 */ 281 */
273 return currentNode.getParent(); 282 return currentNode.getParent();
274 } 283 }
284 +
285 + /**
286 + * Returns de-serializes YANG data-model nodes.
287 + *
288 + * @param serializableInfoSet YANG file info set
289 + * @return de-serializes YANG data-model nodes
290 + * @throws IOException when fails do IO operations
291 + */
292 + public static List<YangNode> deSerializeDataModel(List<String> serializableInfoSet) throws IOException {
293 +
294 + List<YangNode> nodes = new ArrayList<>();
295 + for (String fileInfo : serializableInfoSet) {
296 + YangNode node = null;
297 + try {
298 + FileInputStream fileInputStream = new FileInputStream(fileInfo);
299 + ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
300 + node = (YangNode) objectInputStream.readObject();
301 + nodes.add(node);
302 + objectInputStream.close();
303 + fileInputStream.close();
304 + } catch (IOException | ClassNotFoundException e) {
305 + throw new IOException(fileInfo + " not found.");
306 + }
307 + }
308 + return nodes;
309 + }
275 } 310 }
......
...@@ -161,6 +161,8 @@ public class YangLinkerManager ...@@ -161,6 +161,8 @@ public class YangLinkerManager
161 ((YangReferenceResolver) yangNode) 161 ((YangReferenceResolver) yangNode)
162 .resolveInterFileLinking(ResolvableType.YANG_USES); 162 .resolveInterFileLinking(ResolvableType.YANG_USES);
163 ((YangReferenceResolver) yangNode) 163 ((YangReferenceResolver) yangNode)
164 + .resolveInterFileLinking(ResolvableType.YANG_AUGMENT);
165 + ((YangReferenceResolver) yangNode)
164 .resolveInterFileLinking(ResolvableType.YANG_DERIVED_DATA_TYPE); 166 .resolveInterFileLinking(ResolvableType.YANG_DERIVED_DATA_TYPE);
165 ((YangReferenceResolver) yangNode) 167 ((YangReferenceResolver) yangNode)
166 .resolveInterFileLinking(ResolvableType.YANG_LEAFREF); 168 .resolveInterFileLinking(ResolvableType.YANG_LEAFREF);
......
1 +/*
2 + * Copyright 2016-present Open Networking Laboratory
3 + *
4 + * Licensed under the Apache License, Version 2.0 (the "License");
5 + * you may not use this file except in compliance with the License.
6 + * You may obtain a copy of the License at
7 + *
8 + * http://www.apache.org/licenses/LICENSE-2.0
9 + *
10 + * Unless required by applicable law or agreed to in writing, software
11 + * distributed under the License is distributed on an "AS IS" BASIS,
12 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 + * See the License for the specific language governing permissions and
14 + * limitations under the License.
15 + */
16 +
17 +package org.onosproject.yangutils.linker.impl;
18 +
19 +import java.util.List;
20 +
21 +import org.onosproject.yangutils.datamodel.YangAugment;
22 +import org.onosproject.yangutils.datamodel.YangAugmentableNode;
23 +import org.onosproject.yangutils.datamodel.YangAugmentedInfo;
24 +import org.onosproject.yangutils.datamodel.YangLeaf;
25 +import org.onosproject.yangutils.datamodel.YangLeafList;
26 +import org.onosproject.yangutils.datamodel.YangLeavesHolder;
27 +import org.onosproject.yangutils.datamodel.YangNode;
28 +import org.onosproject.yangutils.linker.exceptions.LinkerException;
29 +
30 +/**
31 + * Represent utilities for YANG linker.
32 + */
33 +public final class YangLinkerUtils {
34 +
35 + private YangLinkerUtils() {
36 + }
37 +
38 + /**
39 + * Detects collision between target nodes leaf/leaf-list or child node with
40 + * augmented leaf/leaf-list or child node.
41 + *
42 + * @param targetNode target node
43 + * @param augment augment node
44 + */
45 + private static void detectCollision(YangNode targetNode, YangAugment augment) {
46 + YangNode targetNodesChild = targetNode.getChild();
47 + YangNode augmentsChild = augment.getChild();
48 + YangLeavesHolder augmentsLeavesHolder = augment;
49 + YangLeavesHolder targetNodesLeavesHolder = (YangLeavesHolder) targetNode;
50 +
51 + YangNode parent = targetNode;
52 + if (targetNode instanceof YangAugment) {
53 + parent = targetNode.getParent();
54 + } else {
55 + while (parent.getParent() != null) {
56 + parent = parent.getParent();
57 + }
58 + }
59 + if (augmentsLeavesHolder.getListOfLeaf() != null && augmentsLeavesHolder.getListOfLeaf().size() != 0
60 + && targetNodesLeavesHolder.getListOfLeaf() != null) {
61 + for (YangLeaf leaf : augmentsLeavesHolder.getListOfLeaf()) {
62 + for (YangLeaf targetLeaf : targetNodesLeavesHolder.getListOfLeaf()) {
63 + if (targetLeaf.getName().equals(leaf.getName())) {
64 + throw new LinkerException("target node " + targetNode.getName()
65 + + " contains augmented leaf " + leaf.getName() + " in module "
66 + + parent.getName());
67 + }
68 + }
69 + }
70 + } else if (augmentsLeavesHolder.getListOfLeafList() != null
71 + && augmentsLeavesHolder.getListOfLeafList().size() != 0
72 + && targetNodesLeavesHolder.getListOfLeafList() != null) {
73 + for (YangLeafList leafList : augmentsLeavesHolder.getListOfLeafList()) {
74 + for (YangLeafList targetLeafList : targetNodesLeavesHolder.getListOfLeafList()) {
75 + if (targetLeafList.getName().equals(leafList.getName())) {
76 + throw new LinkerException("target node " + targetNode.getName()
77 + + " contains augmented leaf-list" + leafList.getName() + " in module "
78 + + parent.getName());
79 + }
80 + }
81 + }
82 + } else {
83 + while (augmentsChild != null) {
84 + while (targetNodesChild != null) {
85 + if (targetNodesChild.getName().equals(augmentsChild.getName())) {
86 + throw new LinkerException("target node " + targetNode.getName()
87 + + " contains augmented child node" + augmentsChild.getName() + " in module "
88 + + parent.getName());
89 + }
90 + targetNodesChild = targetNodesChild.getNextSibling();
91 + }
92 + augmentsChild = augmentsChild.getNextSibling();
93 + }
94 + }
95 + }
96 +
97 + /**
98 + * Detects collision between target nodes and its all leaf/leaf-list or child node with
99 + * augmented leaf/leaf-list or child node.
100 + *
101 + * @param targetNode target node
102 + * @param augment augment node
103 + */
104 + public static void detectCollisionForAugmentedNode(YangNode targetNode, YangAugment augment) {
105 + // Detect collision for target node and augment node.
106 + detectCollision(targetNode, augment);
107 + List<YangAugmentedInfo> yangAugmentedInfo = ((YangAugmentableNode) targetNode).getAugmentedInfoList();
108 + // Detect collision for target augment node and current augment node.
109 + for (YangAugmentedInfo info : yangAugmentedInfo) {
110 + detectCollision((YangAugment) info, augment);
111 + }
112 + }
113 +}
...@@ -24,6 +24,8 @@ import java.util.Stack; ...@@ -24,6 +24,8 @@ import java.util.Stack;
24 import org.onosproject.yangutils.datamodel.Resolvable; 24 import org.onosproject.yangutils.datamodel.Resolvable;
25 import org.onosproject.yangutils.datamodel.ResolvableType; 25 import org.onosproject.yangutils.datamodel.ResolvableType;
26 import org.onosproject.yangutils.datamodel.YangAtomicPath; 26 import org.onosproject.yangutils.datamodel.YangAtomicPath;
27 +import org.onosproject.yangutils.datamodel.YangAugment;
28 +import org.onosproject.yangutils.datamodel.YangAugmentableNode;
27 import org.onosproject.yangutils.datamodel.YangBase; 29 import org.onosproject.yangutils.datamodel.YangBase;
28 import org.onosproject.yangutils.datamodel.YangDerivedInfo; 30 import org.onosproject.yangutils.datamodel.YangDerivedInfo;
29 import org.onosproject.yangutils.datamodel.YangEntityToResolveInfo; 31 import org.onosproject.yangutils.datamodel.YangEntityToResolveInfo;
...@@ -55,10 +57,12 @@ import org.onosproject.yangutils.datamodel.YangSubModule; ...@@ -55,10 +57,12 @@ import org.onosproject.yangutils.datamodel.YangSubModule;
55 import org.onosproject.yangutils.datamodel.YangType; 57 import org.onosproject.yangutils.datamodel.YangType;
56 import org.onosproject.yangutils.datamodel.YangTypeDef; 58 import org.onosproject.yangutils.datamodel.YangTypeDef;
57 import org.onosproject.yangutils.datamodel.YangUses; 59 import org.onosproject.yangutils.datamodel.YangUses;
60 +import org.onosproject.yangutils.datamodel.YangXPathResolver;
58 import org.onosproject.yangutils.datamodel.exceptions.DataModelException; 61 import org.onosproject.yangutils.datamodel.exceptions.DataModelException;
59 import org.onosproject.yangutils.datamodel.utils.ResolvableStatus; 62 import org.onosproject.yangutils.datamodel.utils.ResolvableStatus;
60 import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes; 63 import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes;
61 import org.onosproject.yangutils.linker.YangLinkingPhase; 64 import org.onosproject.yangutils.linker.YangLinkingPhase;
65 +import org.onosproject.yangutils.linker.exceptions.LinkerException;
62 66
63 import static org.onosproject.yangutils.datamodel.utils.ResolvableStatus.INTER_FILE_LINKED; 67 import static org.onosproject.yangutils.datamodel.utils.ResolvableStatus.INTER_FILE_LINKED;
64 import static org.onosproject.yangutils.datamodel.utils.ResolvableStatus.INTRA_FILE_RESOLVED; 68 import static org.onosproject.yangutils.datamodel.utils.ResolvableStatus.INTRA_FILE_RESOLVED;
...@@ -68,6 +72,7 @@ import static org.onosproject.yangutils.datamodel.utils.ResolvableStatus.UNDEFIN ...@@ -68,6 +72,7 @@ import static org.onosproject.yangutils.datamodel.utils.ResolvableStatus.UNDEFIN
68 import static org.onosproject.yangutils.datamodel.utils.ResolvableStatus.UNRESOLVED; 72 import static org.onosproject.yangutils.datamodel.utils.ResolvableStatus.UNRESOLVED;
69 import static org.onosproject.yangutils.linker.YangLinkingPhase.INTER_FILE; 73 import static org.onosproject.yangutils.linker.YangLinkingPhase.INTER_FILE;
70 import static org.onosproject.yangutils.linker.YangLinkingPhase.INTRA_FILE; 74 import static org.onosproject.yangutils.linker.YangLinkingPhase.INTRA_FILE;
75 +import static org.onosproject.yangutils.linker.impl.YangLinkerUtils.detectCollisionForAugmentedNode;
71 import static org.onosproject.yangutils.utils.UtilConstants.FEATURE_LINKER_ERROR; 76 import static org.onosproject.yangutils.utils.UtilConstants.FEATURE_LINKER_ERROR;
72 import static org.onosproject.yangutils.utils.UtilConstants.GROUPING_LINKER_ERROR; 77 import static org.onosproject.yangutils.utils.UtilConstants.GROUPING_LINKER_ERROR;
73 import static org.onosproject.yangutils.utils.UtilConstants.INPUT; 78 import static org.onosproject.yangutils.utils.UtilConstants.INPUT;
...@@ -1438,14 +1443,73 @@ public class YangResolutionInfoImpl<T> ...@@ -1438,14 +1443,73 @@ public class YangResolutionInfoImpl<T>
1438 throw new DataModelException("Data Model Exception: Entity to resolved is not Resolvable"); 1443 throw new DataModelException("Data Model Exception: Entity to resolved is not Resolvable");
1439 } 1444 }
1440 1445
1441 - // Push the initial entity to resolve in stack. 1446 + if (entityToResolve instanceof YangXPathResolver) {
1442 - addInPartialResolvedStack(getEntityToResolveInfo()); 1447 + //Process x-path linking.
1448 + processXPathLinking(getEntityToResolveInfo(), dataModelRootNode);
1449 +
1450 + } else {
1443 1451
1444 - // Inter file linking and resolution. 1452 + // Push the initial entity to resolve in stack.
1445 - linkInterFileAndResolve(); 1453 + addInPartialResolvedStack(getEntityToResolveInfo());
1446 1454
1447 - // Resolve the derived types having leafref. 1455 + // Inter file linking and resolution.
1448 - addDerivedRefTypeToRefTypeResolutionList(); 1456 + linkInterFileAndResolve();
1457 +
1458 + addDerivedRefTypeToRefTypeResolutionList();
1459 + }
1460 + }
1461 +
1462 + /**
1463 + * Process x-path linking for augment and leaf-ref.
1464 + *
1465 + * @param entityToResolveInfo entity to resolve
1466 + * @param root root node
1467 + */
1468 + private void processXPathLinking(YangEntityToResolveInfoImpl<T> entityToResolveInfo,
1469 + YangReferenceResolver root) {
1470 + YangXpathLinker<T> xPathLinker = new YangXpathLinker<T>();
1471 + T entityToResolve = entityToResolveInfo.getEntityToResolve();
1472 + if (entityToResolve instanceof YangAugment) {
1473 + YangNode targetNode = null;
1474 + YangAugment augment = (YangAugment) entityToResolve;
1475 + targetNode = xPathLinker.processAugmentXpathLinking(augment.getTargetNode(),
1476 + (YangNode) root);
1477 + if (targetNode != null) {
1478 + if (targetNode instanceof YangAugmentableNode) {
1479 + detectCollisionForAugmentedNode(targetNode, augment);
1480 + ((YangAugmentableNode) targetNode).addAugmentation(augment);
1481 + augment.setAugmentedNode(targetNode);
1482 + Resolvable resolvable = (Resolvable) entityToResolve;
1483 + resolvable.setResolvableStatus(RESOLVED);
1484 + } else {
1485 + throw new LinkerException("Invalid target node type " + targetNode.getNodeType() + " for "
1486 + + augment.getName());
1487 + }
1488 + } else {
1489 + throw new LinkerException("Failed to link " + augment.getName());
1490 + }
1491 + } else if (entityToResolve instanceof YangLeafRef) {
1492 + YangLeafRef leafRef = (YangLeafRef) entityToResolve;
1493 + Object target = xPathLinker.processLeafRefXpathLinking(leafRef.getAtomicPath(),
1494 + (YangNode) root);
1495 + if (target != null) {
1496 + YangLeaf leaf = null;
1497 + YangLeafList leafList = null;
1498 + leafRef.setReferredLeafOrLeafList(target);
1499 + if (target instanceof YangLeaf) {
1500 + leaf = (YangLeaf) target;
1501 + leafRef.setEffectiveDataType(leaf.getDataType());
1502 + } else {
1503 + leafList = (YangLeafList) target;
1504 + leafRef.setEffectiveDataType(leafList.getDataType());
1505 + }
1506 + leafRef.setResolvableStatus(RESOLVED);
1507 + //TODO: add logic for leaf-ref for path predicates.
1508 + } else {
1509 + throw new LinkerException("YANG file error: Unable to find base leaf/leaf-list for given leafref "
1510 + + leafRef.getPath());
1511 + }
1512 + }
1449 } 1513 }
1450 1514
1451 /** 1515 /**
......
...@@ -18,18 +18,20 @@ package org.onosproject.yangutils.parser.impl.listeners; ...@@ -18,18 +18,20 @@ package org.onosproject.yangutils.parser.impl.listeners;
18 18
19 import java.util.List; 19 import java.util.List;
20 20
21 +import org.onosproject.yangutils.datamodel.YangAtomicPath;
21 import org.onosproject.yangutils.datamodel.YangAugment; 22 import org.onosproject.yangutils.datamodel.YangAugment;
22 import org.onosproject.yangutils.datamodel.YangModule; 23 import org.onosproject.yangutils.datamodel.YangModule;
23 import org.onosproject.yangutils.datamodel.YangNode; 24 import org.onosproject.yangutils.datamodel.YangNode;
24 -import org.onosproject.yangutils.datamodel.YangNodeIdentifier;
25 import org.onosproject.yangutils.datamodel.YangSubModule; 25 import org.onosproject.yangutils.datamodel.YangSubModule;
26 import org.onosproject.yangutils.datamodel.YangUses; 26 import org.onosproject.yangutils.datamodel.YangUses;
27 import org.onosproject.yangutils.datamodel.exceptions.DataModelException; 27 import org.onosproject.yangutils.datamodel.exceptions.DataModelException;
28 import org.onosproject.yangutils.datamodel.utils.Parsable; 28 import org.onosproject.yangutils.datamodel.utils.Parsable;
29 +import org.onosproject.yangutils.linker.impl.YangResolutionInfoImpl;
29 import org.onosproject.yangutils.parser.antlrgencode.GeneratedYangParser; 30 import org.onosproject.yangutils.parser.antlrgencode.GeneratedYangParser;
30 import org.onosproject.yangutils.parser.exceptions.ParserException; 31 import org.onosproject.yangutils.parser.exceptions.ParserException;
31 import org.onosproject.yangutils.parser.impl.TreeWalkListener; 32 import org.onosproject.yangutils.parser.impl.TreeWalkListener;
32 33
34 +import static org.onosproject.yangutils.datamodel.utils.DataModelUtils.addResolutionInfo;
33 import static org.onosproject.yangutils.datamodel.utils.GeneratedLanguage.JAVA_GENERATION; 35 import static org.onosproject.yangutils.datamodel.utils.GeneratedLanguage.JAVA_GENERATION;
34 import static org.onosproject.yangutils.datamodel.utils.YangConstructType.AUGMENT_DATA; 36 import static org.onosproject.yangutils.datamodel.utils.YangConstructType.AUGMENT_DATA;
35 import static org.onosproject.yangutils.datamodel.utils.YangConstructType.CASE_DATA; 37 import static org.onosproject.yangutils.datamodel.utils.YangConstructType.CASE_DATA;
...@@ -38,22 +40,17 @@ import static org.onosproject.yangutils.datamodel.utils.YangConstructType.DESCRI ...@@ -38,22 +40,17 @@ import static org.onosproject.yangutils.datamodel.utils.YangConstructType.DESCRI
38 import static org.onosproject.yangutils.datamodel.utils.YangConstructType.REFERENCE_DATA; 40 import static org.onosproject.yangutils.datamodel.utils.YangConstructType.REFERENCE_DATA;
39 import static org.onosproject.yangutils.datamodel.utils.YangConstructType.STATUS_DATA; 41 import static org.onosproject.yangutils.datamodel.utils.YangConstructType.STATUS_DATA;
40 import static org.onosproject.yangutils.datamodel.utils.YangConstructType.WHEN_DATA; 42 import static org.onosproject.yangutils.datamodel.utils.YangConstructType.WHEN_DATA;
41 -import static org.onosproject.yangutils.parser.impl.parserutils.AugmentListenerUtil.generateNameForAugmentNode;
42 -import static org.onosproject.yangutils.parser.impl.parserutils.AugmentListenerUtil.getParentsPrefix;
43 -import static org.onosproject.yangutils.parser.impl.parserutils.AugmentListenerUtil.parserException;
44 -import static org.onosproject.yangutils.parser.impl.parserutils.AugmentListenerUtil.validateNodeInTargetPath;
45 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerCollisionDetector.detectCollidingChildUtil; 43 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerCollisionDetector.detectCollidingChildUtil;
46 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorLocation.ENTRY; 44 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorLocation.ENTRY;
47 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorLocation.EXIT; 45 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorLocation.EXIT;
48 -import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorMessageConstruction 46 +import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorMessageConstruction.constructExtendedListenerErrorMessage;
49 - .constructExtendedListenerErrorMessage; 47 +import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorMessageConstruction.constructListenerErrorMessage;
50 -import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorMessageConstruction
51 - .constructListenerErrorMessage;
52 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorType.INVALID_HOLDER; 48 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorType.INVALID_HOLDER;
53 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorType.MISSING_CURRENT_HOLDER; 49 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorType.MISSING_CURRENT_HOLDER;
54 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorType.MISSING_HOLDER; 50 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorType.MISSING_HOLDER;
55 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorType.UNHANDLED_PARSED_DATA; 51 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerErrorType.UNHANDLED_PARSED_DATA;
56 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerUtil.getValidAbsoluteSchemaNodeId; 52 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerUtil.getValidAbsoluteSchemaNodeId;
53 +import static org.onosproject.yangutils.parser.impl.parserutils.ListenerUtil.removeQuotesAndHandleConcat;
57 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerValidation.checkStackIsNotEmpty; 54 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerValidation.checkStackIsNotEmpty;
58 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerValidation.validateCardinalityMaxOne; 55 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerValidation.validateCardinalityMaxOne;
59 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerValidation.validateMutuallyExclusiveChilds; 56 import static org.onosproject.yangutils.parser.impl.parserutils.ListenerValidation.validateMutuallyExclusiveChilds;
...@@ -106,7 +103,7 @@ public final class AugmentListener { ...@@ -106,7 +103,7 @@ public final class AugmentListener {
106 checkStackIsNotEmpty(listener, MISSING_HOLDER, AUGMENT_DATA, ctx.augment().getText(), ENTRY); 103 checkStackIsNotEmpty(listener, MISSING_HOLDER, AUGMENT_DATA, ctx.augment().getText(), ENTRY);
107 104
108 // Validate augment argument string 105 // Validate augment argument string
109 - List<YangNodeIdentifier> targetNodes = getValidAbsoluteSchemaNodeId(ctx.augment().getText(), 106 + List<YangAtomicPath> targetNodes = getValidAbsoluteSchemaNodeId(ctx.augment().getText(),
110 AUGMENT_DATA, ctx); 107 AUGMENT_DATA, ctx);
111 108
112 // Validate sub statement cardinality. 109 // Validate sub statement cardinality.
...@@ -126,7 +123,7 @@ public final class AugmentListener { ...@@ -126,7 +123,7 @@ public final class AugmentListener {
126 // TODO: handle in linker. 123 // TODO: handle in linker.
127 124
128 yangAugment.setTargetNode(targetNodes); 125 yangAugment.setTargetNode(targetNodes);
129 - yangAugment.setName(generateNameForAugmentNode(curData, targetNodes, listener)); 126 + yangAugment.setName(removeQuotesAndHandleConcat(ctx.augment().getText()));
130 127
131 try { 128 try {
132 curNode.addChild(yangAugment); 129 curNode.addChild(yangAugment);
...@@ -135,6 +132,13 @@ public final class AugmentListener { ...@@ -135,6 +132,13 @@ public final class AugmentListener {
135 AUGMENT_DATA, ctx.augment().getText(), ENTRY, e.getMessage())); 132 AUGMENT_DATA, ctx.augment().getText(), ENTRY, e.getMessage()));
136 } 133 }
137 listener.getParsedDataStack().push(yangAugment); 134 listener.getParsedDataStack().push(yangAugment);
135 +
136 + // Add resolution information to the list
137 + YangResolutionInfoImpl resolutionInfo = new YangResolutionInfoImpl<YangAugment>(yangAugment,
138 + curNode, line,
139 + charPositionInLine);
140 + addToResolutionList(resolutionInfo, ctx);
141 +
138 } else { 142 } else {
139 throw new ParserException(constructListenerErrorMessage(INVALID_HOLDER, AUGMENT_DATA, 143 throw new ParserException(constructListenerErrorMessage(INVALID_HOLDER, AUGMENT_DATA,
140 ctx.augment().getText(), ENTRY)); 144 ctx.augment().getText(), ENTRY));
...@@ -177,35 +181,19 @@ public final class AugmentListener { ...@@ -177,35 +181,19 @@ public final class AugmentListener {
177 } 181 }
178 182
179 /** 183 /**
180 - * Validates whether the current target node path is correct or not. 184 + * Add to resolution list.
181 * 185 *
182 - * @param targetNodes list of target nodes 186 + * @param resolutionInfo resolution information.
183 - * @param curNode current Node 187 + * @param ctx context object of the grammar rule
184 - * @param ctx augment context
185 - * @param curNode current YANG node
186 */ 188 */
187 - private static void validateTargetNodePath(List<YangNodeIdentifier> targetNodes, YangNode curNode, 189 + private static void addToResolutionList(YangResolutionInfoImpl<YangAugment> resolutionInfo,
188 - GeneratedYangParser.AugmentStatementContext ctx) { 190 + GeneratedYangParser.AugmentStatementContext ctx) {
189 - 191 +
190 - YangNodeIdentifier moduleId = targetNodes.get(0); 192 + try {
191 - if (moduleId.getPrefix() == null) { 193 + addResolutionInfo(resolutionInfo);
192 - if (!moduleId.getName().equals(curNode.getName())) { 194 + } catch (DataModelException e) {
193 - throw parserException(ctx); 195 + throw new ParserException(constructExtendedListenerErrorMessage(UNHANDLED_PARSED_DATA,
194 - } else { 196 + AUGMENT_DATA, ctx.augment().getText(), EXIT, e.getMessage()));
195 - //validateNodeInTargetPath(curNode, targetNodes, ctx);
196 - // TODO: handle in linker.
197 - }
198 - } else {
199 - String parentPrefix = getParentsPrefix(curNode);
200 - if (parentPrefix != null) {
201 - if (!parentPrefix.equals(moduleId.getPrefix())) {
202 - // TODO: handle in linker.
203 - } else {
204 - validateNodeInTargetPath(curNode, targetNodes, ctx);
205 - }
206 - } else {
207 - // TODO: handle in linker.
208 - }
209 } 197 }
210 } 198 }
211 } 199 }
......
...@@ -709,10 +709,10 @@ public final class ListenerUtil { ...@@ -709,10 +709,10 @@ public final class ListenerUtil {
709 * @param ctx yang construct's context to get the line number and character position 709 * @param ctx yang construct's context to get the line number and character position
710 * @return target nodes list of absolute schema node id 710 * @return target nodes list of absolute schema node id
711 */ 711 */
712 - public static List<YangNodeIdentifier> getValidAbsoluteSchemaNodeId(String argumentString, 712 + public static List<YangAtomicPath> getValidAbsoluteSchemaNodeId(String argumentString,
713 YangConstructType yangConstructType, ParserRuleContext ctx) { 713 YangConstructType yangConstructType, ParserRuleContext ctx) {
714 714
715 - List<YangNodeIdentifier> targetNodes = new LinkedList<>(); 715 + List<YangAtomicPath> targetNodes = new ArrayList<>();
716 YangNodeIdentifier yangNodeIdentifier; 716 YangNodeIdentifier yangNodeIdentifier;
717 String tmpSchemaNodeId = removeQuotesAndHandleConcat(argumentString); 717 String tmpSchemaNodeId = removeQuotesAndHandleConcat(argumentString);
718 718
...@@ -728,7 +728,9 @@ public final class ListenerUtil { ...@@ -728,7 +728,9 @@ public final class ListenerUtil {
728 String[] tmpData = tmpSchemaNodeId.replaceFirst(CARET + SLASH, EMPTY_STRING).split(SLASH); 728 String[] tmpData = tmpSchemaNodeId.replaceFirst(CARET + SLASH, EMPTY_STRING).split(SLASH);
729 for (String nodeIdentifiers : tmpData) { 729 for (String nodeIdentifiers : tmpData) {
730 yangNodeIdentifier = getValidNodeIdentifier(nodeIdentifiers, yangConstructType, ctx); 730 yangNodeIdentifier = getValidNodeIdentifier(nodeIdentifiers, yangConstructType, ctx);
731 - targetNodes.add(yangNodeIdentifier); 731 + YangAtomicPath yangAbsPath = new YangAtomicPath();
732 + yangAbsPath.setNodeIdentifier(yangNodeIdentifier);
733 + targetNodes.add(yangAbsPath);
732 } 734 }
733 return targetNodes; 735 return targetNodes;
734 } 736 }
...@@ -780,4 +782,4 @@ public final class ListenerUtil { ...@@ -780,4 +782,4 @@ public final class ListenerUtil {
780 throw parserException; 782 throw parserException;
781 } 783 }
782 } 784 }
783 -}
...\ No newline at end of file ...\ No newline at end of file
785 +}
......
...@@ -17,11 +17,9 @@ ...@@ -17,11 +17,9 @@
17 package org.onosproject.yangutils.plugin.manager; 17 package org.onosproject.yangutils.plugin.manager;
18 18
19 import java.io.File; 19 import java.io.File;
20 -import java.io.FileInputStream;
21 import java.io.FileOutputStream; 20 import java.io.FileOutputStream;
22 import java.io.IOException; 21 import java.io.IOException;
23 import java.io.InputStream; 22 import java.io.InputStream;
24 -import java.io.ObjectInputStream;
25 import java.io.ObjectOutputStream; 23 import java.io.ObjectOutputStream;
26 import java.nio.file.Files; 24 import java.nio.file.Files;
27 import java.nio.file.StandardCopyOption; 25 import java.nio.file.StandardCopyOption;
...@@ -41,6 +39,7 @@ import org.onosproject.yangutils.datamodel.YangNode; ...@@ -41,6 +39,7 @@ import org.onosproject.yangutils.datamodel.YangNode;
41 import org.slf4j.Logger; 39 import org.slf4j.Logger;
42 import org.sonatype.plexus.build.incremental.BuildContext; 40 import org.sonatype.plexus.build.incremental.BuildContext;
43 41
42 +import static org.onosproject.yangutils.datamodel.utils.DataModelUtils.deSerializeDataModel;
44 import static org.onosproject.yangutils.utils.UtilConstants.HYPHEN; 43 import static org.onosproject.yangutils.utils.UtilConstants.HYPHEN;
45 import static org.onosproject.yangutils.utils.UtilConstants.JAR; 44 import static org.onosproject.yangutils.utils.UtilConstants.JAR;
46 import static org.onosproject.yangutils.utils.UtilConstants.PERIOD; 45 import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
...@@ -155,32 +154,6 @@ public final class YangPluginUtils { ...@@ -155,32 +154,6 @@ public final class YangPluginUtils {
155 } 154 }
156 155
157 /** 156 /**
158 - * Returns de-serializes YANG data-model nodes.
159 - *
160 - * @param serailizedfileInfoSet YANG file info set
161 - * @return de-serializes YANG data-model nodes
162 - * @throws IOException when fails do IO operations
163 - */
164 - public static List<YangNode> deSerializeDataModel(List<String> serailizedfileInfoSet) throws IOException {
165 -
166 - List<YangNode> nodes = new ArrayList<>();
167 - for (String fileInfo : serailizedfileInfoSet) {
168 - YangNode node = null;
169 - try {
170 - FileInputStream fileInputStream = new FileInputStream(fileInfo);
171 - ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
172 - node = (YangNode) objectInputStream.readObject();
173 - nodes.add(node);
174 - objectInputStream.close();
175 - fileInputStream.close();
176 - } catch (IOException | ClassNotFoundException e) {
177 - throw new IOException(fileInfo + " not found.");
178 - }
179 - }
180 - return nodes;
181 - }
182 -
183 - /**
184 * Returns list of jar path. 157 * Returns list of jar path.
185 * 158 *
186 * @param project maven project 159 * @param project maven project
...@@ -188,8 +161,8 @@ public final class YangPluginUtils { ...@@ -188,8 +161,8 @@ public final class YangPluginUtils {
188 * @param remoteRepos remote repository 161 * @param remoteRepos remote repository
189 * @return list of jar paths 162 * @return list of jar paths
190 */ 163 */
191 - private static List<String> resolveDependecyJarPath(MavenProject project, ArtifactRepository localRepository, 164 + private static List<String> resolveDependencyJarPath(MavenProject project, ArtifactRepository localRepository,
192 - List<ArtifactRepository> remoteRepos) { 165 + List<ArtifactRepository> remoteRepos) {
193 166
194 StringBuilder path = new StringBuilder(); 167 StringBuilder path = new StringBuilder();
195 List<String> jarPaths = new ArrayList<>(); 168 List<String> jarPaths = new ArrayList<>();
...@@ -232,7 +205,7 @@ public final class YangPluginUtils { ...@@ -232,7 +205,7 @@ public final class YangPluginUtils {
232 List<ArtifactRepository> remoteRepos, String directory) 205 List<ArtifactRepository> remoteRepos, String directory)
233 throws IOException { 206 throws IOException {
234 207
235 - List<String> dependeciesJarPaths = resolveDependecyJarPath(project, localRepository, remoteRepos); 208 + List<String> dependeciesJarPaths = resolveDependencyJarPath(project, localRepository, remoteRepos);
236 List<YangNode> resolvedDataModelNodes = new ArrayList<>(); 209 List<YangNode> resolvedDataModelNodes = new ArrayList<>();
237 for (String dependecy : dependeciesJarPaths) { 210 for (String dependecy : dependeciesJarPaths) {
238 resolvedDataModelNodes.addAll(deSerializeDataModel(parseJarFile(dependecy, directory))); 211 resolvedDataModelNodes.addAll(deSerializeDataModel(parseJarFile(dependecy, directory)));
......
...@@ -87,8 +87,14 @@ public class YangUtilManager ...@@ -87,8 +87,14 @@ public class YangUtilManager
87 /** 87 /**
88 * Source directory for generated files. 88 * Source directory for generated files.
89 */ 89 */
90 - @Parameter(property = "genFilesDir", defaultValue = "src/main/java") 90 + @Parameter(property = "classFileDir", defaultValue = "target/generated-sources")
91 - private String genFilesDir; 91 + private String classFileDir;
92 +
93 + /**
94 + * Source directory for manager's generated files.
95 + */
96 + @Parameter(property = "managerFileDir", defaultValue = "src/main/java")
97 + private String managerFileDir;
92 98
93 /** 99 /**
94 * Base directory for project. 100 * Base directory for project.
...@@ -153,11 +159,12 @@ public class YangUtilManager ...@@ -153,11 +159,12 @@ public class YangUtilManager
153 /* 159 /*
154 * For deleting the generated code in previous build. 160 * For deleting the generated code in previous build.
155 */ 161 */
156 - deleteDirectory(getDirectory(baseDir, genFilesDir) + DEFAULT_PKG); 162 + deleteDirectory(getDirectory(baseDir, classFileDir) + DEFAULT_PKG);
157 deleteDirectory(getDirectory(baseDir, outputDirectory)); 163 deleteDirectory(getDirectory(baseDir, outputDirectory));
158 164
159 String searchDir = getDirectory(baseDir, yangFilesDir); 165 String searchDir = getDirectory(baseDir, yangFilesDir);
160 - String codeGenDir = getDirectory(baseDir, genFilesDir) + SLASH; 166 + String codeGenDir = getDirectory(baseDir, classFileDir) + SLASH;
167 + String managerCodeGenDir = getDirectory(baseDir, managerFileDir) + SLASH;
161 168
162 // Creates conflict resolver and set values to it. 169 // Creates conflict resolver and set values to it.
163 YangToJavaNamingConflictUtil conflictResolver = new YangToJavaNamingConflictUtil(); 170 YangToJavaNamingConflictUtil conflictResolver = new YangToJavaNamingConflictUtil();
...@@ -167,6 +174,7 @@ public class YangUtilManager ...@@ -167,6 +174,7 @@ public class YangUtilManager
167 conflictResolver.setPrefixForIdentifier(prefixForIdentifier); 174 conflictResolver.setPrefixForIdentifier(prefixForIdentifier);
168 YangPluginConfig yangPlugin = new YangPluginConfig(); 175 YangPluginConfig yangPlugin = new YangPluginConfig();
169 yangPlugin.setCodeGenDir(codeGenDir); 176 yangPlugin.setCodeGenDir(codeGenDir);
177 + yangPlugin.setManagerCodeGenDir(managerCodeGenDir);
170 yangPlugin.setConflictResolver(conflictResolver); 178 yangPlugin.setConflictResolver(conflictResolver);
171 179
172 /* 180 /*
...@@ -195,18 +203,18 @@ public class YangUtilManager ...@@ -195,18 +203,18 @@ public class YangUtilManager
195 // Serialize data model. 203 // Serialize data model.
196 serializeDataModel(getDirectory(baseDir, outputDirectory), getYangFileInfoSet(), project, true); 204 serializeDataModel(getDirectory(baseDir, outputDirectory), getYangFileInfoSet(), project, true);
197 205
198 - addToCompilationRoot(getDirectory(baseDir, genFilesDir), project, context); 206 + addToCompilationRoot(codeGenDir, project, context);
207 + addToCompilationRoot(managerCodeGenDir, project, context);
199 208
200 copyYangFilesToTarget(getYangFileInfoSet(), getDirectory(baseDir, outputDirectory), project); 209 copyYangFilesToTarget(getYangFileInfoSet(), getDirectory(baseDir, outputDirectory), project);
201 } catch (IOException | ParserException e) { 210 } catch (IOException | ParserException e) {
202 - getLog().info(e);
203 String fileName = ""; 211 String fileName = "";
204 if (getCurYangFileInfo() != null) { 212 if (getCurYangFileInfo() != null) {
205 fileName = getCurYangFileInfo().getYangFileName(); 213 fileName = getCurYangFileInfo().getYangFileName();
206 } 214 }
207 try { 215 try {
208 translatorErrorHandler(getRootNode()); 216 translatorErrorHandler(getRootNode());
209 - deleteDirectory(getDirectory(baseDir, genFilesDir) + DEFAULT_PKG); 217 + deleteDirectory(getDirectory(baseDir, classFileDir) + DEFAULT_PKG);
210 } catch (IOException ex) { 218 } catch (IOException ex) {
211 throw new MojoExecutionException( 219 throw new MojoExecutionException(
212 "Error handler failed to delete files for data model node."); 220 "Error handler failed to delete files for data model node.");
...@@ -255,14 +263,12 @@ public class YangUtilManager ...@@ -255,14 +263,12 @@ public class YangUtilManager
255 public void resolveDependenciesUsingLinker() 263 public void resolveDependenciesUsingLinker()
256 throws MojoExecutionException { 264 throws MojoExecutionException {
257 createYangNodeSet(); 265 createYangNodeSet();
258 - for (YangFileInfo yangFileInfo : getYangFileInfoSet()) { 266 + try {
259 - setCurYangFileInfo(yangFileInfo); 267 + yangLinker.resolveDependencies(getYangNodeSet());
260 - try { 268 + } catch (LinkerException e) {
261 - yangLinker.resolveDependencies(getYangNodeSet()); 269 + throw new MojoExecutionException(e.getMessage());
262 - } catch (LinkerException e) {
263 - throw new MojoExecutionException(e.getMessage());
264 - }
265 } 270 }
271 +
266 } 272 }
267 273
268 /** 274 /**
......
...@@ -122,6 +122,11 @@ public final class GeneratedTempFileType { ...@@ -122,6 +122,11 @@ public final class GeneratedTempFileType {
122 public static final int EVENT_SUBJECT_SETTER_MASK = 524288; 122 public static final int EVENT_SUBJECT_SETTER_MASK = 524288;
123 123
124 /** 124 /**
125 + * Event subject setter implementation of class.
126 + */
127 + public static final int AUGMENTE_CLASS_CONSTRUCTOR_MASK = 1048576;
128 +
129 + /**
125 * Creates an instance of generated temp file type. 130 * Creates an instance of generated temp file type.
126 */ 131 */
127 private GeneratedTempFileType() { 132 private GeneratedTempFileType() {
......
...@@ -21,10 +21,6 @@ import java.util.SortedSet; ...@@ -21,10 +21,6 @@ import java.util.SortedSet;
21 import java.util.TreeSet; 21 import java.util.TreeSet;
22 22
23 import static org.onosproject.yangutils.utils.UtilConstants.ABSTRACT_EVENT; 23 import static org.onosproject.yangutils.utils.UtilConstants.ABSTRACT_EVENT;
24 -import static org.onosproject.yangutils.utils.UtilConstants.ARRAY_LIST;
25 -import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTATION_HOLDER_CLASS_IMPORT_CLASS;
26 -import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTED_INFO_CLASS_IMPORT_CLASS;
27 -import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTED_INFO_CLASS_IMPORT_PKG;
28 import static org.onosproject.yangutils.utils.UtilConstants.COLLECTION_IMPORTS; 24 import static org.onosproject.yangutils.utils.UtilConstants.COLLECTION_IMPORTS;
29 import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING; 25 import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
30 import static org.onosproject.yangutils.utils.UtilConstants.EVENT_LISTENER; 26 import static org.onosproject.yangutils.utils.UtilConstants.EVENT_LISTENER;
...@@ -40,9 +36,7 @@ import static org.onosproject.yangutils.utils.UtilConstants.LISTENER_SERVICE; ...@@ -40,9 +36,7 @@ import static org.onosproject.yangutils.utils.UtilConstants.LISTENER_SERVICE;
40 import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE; 36 import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
41 import static org.onosproject.yangutils.utils.UtilConstants.ONOS_EVENT_PKG; 37 import static org.onosproject.yangutils.utils.UtilConstants.ONOS_EVENT_PKG;
42 import static org.onosproject.yangutils.utils.UtilConstants.PERIOD; 38 import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
43 -import static org.onosproject.yangutils.utils.UtilConstants.PROVIDED_AUGMENTATION_CLASS_IMPORT_PKG;
44 import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLAN; 39 import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLAN;
45 -
46 import static java.util.Collections.sort; 40 import static java.util.Collections.sort;
47 41
48 /** 42 /**
...@@ -220,33 +214,6 @@ public class JavaImportData { ...@@ -220,33 +214,6 @@ public class JavaImportData {
220 } 214 }
221 215
222 /** 216 /**
223 - * Returns import for array list attribute.
224 - *
225 - * @return import for array list attribute
226 - */
227 - public String getImportForArrayList() {
228 - return IMPORT + COLLECTION_IMPORTS + PERIOD + ARRAY_LIST + SEMI_COLAN + NEW_LINE;
229 - }
230 -
231 - /**
232 - * Returns import string for AugmentationHolder class.
233 - *
234 - * @return import string for AugmentationHolder class
235 - */
236 - public String getAugmentationHolderImport() {
237 - return IMPORT + PROVIDED_AUGMENTATION_CLASS_IMPORT_PKG + PERIOD + AUGMENTATION_HOLDER_CLASS_IMPORT_CLASS;
238 - }
239 -
240 - /**
241 - * Returns import string for AugmentedInfo class.
242 - *
243 - * @return import string for AugmentedInfo class
244 - */
245 - public String getAugmentedInfoImport() {
246 - return IMPORT + AUGMENTED_INFO_CLASS_IMPORT_PKG + PERIOD + AUGMENTED_INFO_CLASS_IMPORT_CLASS;
247 - }
248 -
249 - /**
250 * Returns import string for ListenerService class. 217 * Returns import string for ListenerService class.
251 * 218 *
252 * @return import string for ListenerService class 219 * @return import string for ListenerService class
......
...@@ -23,7 +23,7 @@ import org.onosproject.yangutils.utils.io.impl.YangPluginConfig; ...@@ -23,7 +23,7 @@ import org.onosproject.yangutils.utils.io.impl.YangPluginConfig;
23 23
24 import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.CONSTRUCTOR_IMPL_MASK; 24 import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.CONSTRUCTOR_IMPL_MASK;
25 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getConstructor; 25 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getConstructor;
26 -import static org.onosproject.yangutils.translator.tojava.utils.TempJavaCodeFragmentFilesUtils.closeFile; 26 +import static org.onosproject.yangutils.utils.io.impl.FileSystemUtil.closeFile;
27 27
28 /** 28 /**
29 * Represents implementation of java bean code fragments temporary implementations. 29 * Represents implementation of java bean code fragments temporary implementations.
...@@ -88,7 +88,7 @@ public class TempJavaBeanFragmentFiles ...@@ -88,7 +88,7 @@ public class TempJavaBeanFragmentFiles
88 */ 88 */
89 private void addConstructor(JavaAttributeInfo attr, YangPluginConfig pluginConfig) 89 private void addConstructor(JavaAttributeInfo attr, YangPluginConfig pluginConfig)
90 throws IOException { 90 throws IOException {
91 - appendToFile(getConstructorImplTempFileHandle(), getConstructor(getGeneratedJavaClassName(), attr, 91 + appendToFile(getConstructorImplTempFileHandle(), getConstructor(attr,
92 getGeneratedJavaFiles(), pluginConfig)); 92 getGeneratedJavaFiles(), pluginConfig));
93 } 93 }
94 94
......
...@@ -36,7 +36,7 @@ import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetG ...@@ -36,7 +36,7 @@ import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetG
36 import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGenerator.generateEnumClassFile; 36 import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGenerator.generateEnumClassFile;
37 import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getEnumJavaAttribute; 37 import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getEnumJavaAttribute;
38 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getPrefixForIdentifier; 38 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getPrefixForIdentifier;
39 -import static org.onosproject.yangutils.translator.tojava.utils.TempJavaCodeFragmentFilesUtils.closeFile; 39 +import static org.onosproject.yangutils.utils.io.impl.FileSystemUtil.closeFile;
40 import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING; 40 import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
41 import static org.onosproject.yangutils.utils.UtilConstants.REGEX_FOR_FIRST_DIGIT; 41 import static org.onosproject.yangutils.utils.UtilConstants.REGEX_FOR_FIRST_DIGIT;
42 import static org.onosproject.yangutils.utils.UtilConstants.YANG_AUTO_PREFIX; 42 import static org.onosproject.yangutils.utils.UtilConstants.YANG_AUTO_PREFIX;
......
...@@ -27,7 +27,6 @@ import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaModule; ...@@ -27,7 +27,6 @@ import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaModule;
27 import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaSubModule; 27 import org.onosproject.yangutils.translator.tojava.javamodel.YangJavaSubModule;
28 import org.onosproject.yangutils.utils.io.impl.YangPluginConfig; 28 import org.onosproject.yangutils.utils.io.impl.YangPluginConfig;
29 29
30 -import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_CLASS;
31 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_LISTENER_INTERFACE; 30 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_LISTENER_INTERFACE;
32 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_SUBJECT_CLASS; 31 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_SUBJECT_CLASS;
33 import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.EVENT_ENUM_MASK; 32 import static org.onosproject.yangutils.translator.tojava.GeneratedTempFileType.EVENT_ENUM_MASK;
...@@ -54,9 +53,9 @@ import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator ...@@ -54,9 +53,9 @@ import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator
54 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getRpcManagerMethod; 53 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getRpcManagerMethod;
55 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getRpcServiceMethod; 54 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getRpcServiceMethod;
56 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getSetterForClass; 55 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getSetterForClass;
57 -import static org.onosproject.yangutils.translator.tojava.utils.TempJavaCodeFragmentFilesUtils.addAnnotationsImports; 56 +import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.addAnnotationsImports;
58 -import static org.onosproject.yangutils.translator.tojava.utils.TempJavaCodeFragmentFilesUtils.addListnersImport; 57 +import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.addListenersImport;
59 -import static org.onosproject.yangutils.translator.tojava.utils.TempJavaCodeFragmentFilesUtils.closeFile; 58 +import static org.onosproject.yangutils.utils.io.impl.FileSystemUtil.closeFile;
60 import static org.onosproject.yangutils.utils.UtilConstants.COMMA; 59 import static org.onosproject.yangutils.utils.UtilConstants.COMMA;
61 import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING; 60 import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
62 import static org.onosproject.yangutils.utils.UtilConstants.EVENT_STRING; 61 import static org.onosproject.yangutils.utils.UtilConstants.EVENT_STRING;
...@@ -390,7 +389,7 @@ public class TempJavaServiceFragmentFiles ...@@ -390,7 +389,7 @@ public class TempJavaServiceFragmentFiles
390 } 389 }
391 390
392 if (isNotification) { 391 if (isNotification) {
393 - addListnersImport(curNode, imports, true, LISTENER_SERVICE); 392 + addListenersImport(curNode, imports, true, LISTENER_SERVICE);
394 } 393 }
395 /** 394 /**
396 * Creates rpc interface file. 395 * Creates rpc interface file.
...@@ -399,8 +398,8 @@ public class TempJavaServiceFragmentFiles ...@@ -399,8 +398,8 @@ public class TempJavaServiceFragmentFiles
399 generateServiceInterfaceFile(getServiceInterfaceJavaFileHandle(), curNode, imports, isAttributePresent()); 398 generateServiceInterfaceFile(getServiceInterfaceJavaFileHandle(), curNode, imports, isAttributePresent());
400 399
401 if (isNotification) { 400 if (isNotification) {
402 - addListnersImport(curNode, imports, false, LISTENER_SERVICE); 401 + addListenersImport(curNode, imports, false, LISTENER_SERVICE);
403 - addListnersImport(curNode, imports, true, LISTENER_REG); 402 + addListenersImport(curNode, imports, true, LISTENER_REG);
404 } 403 }
405 addAnnotationsImports(imports, true); 404 addAnnotationsImports(imports, true);
406 /** 405 /**
...@@ -411,14 +410,14 @@ public class TempJavaServiceFragmentFiles ...@@ -411,14 +410,14 @@ public class TempJavaServiceFragmentFiles
411 410
412 insertDataIntoJavaFile(getManagerJavaFileHandle(), getJavaClassDefClose()); 411 insertDataIntoJavaFile(getManagerJavaFileHandle(), getJavaClassDefClose());
413 if (isNotification) { 412 if (isNotification) {
414 - addListnersImport(curNode, imports, false, LISTENER_REG); 413 + addListenersImport(curNode, imports, false, LISTENER_REG);
415 } 414 }
416 addAnnotationsImports(imports, false); 415 addAnnotationsImports(imports, false);
417 416
418 if (isNotification) { 417 if (isNotification) {
419 - generateEventJavaFile(GENERATE_EVENT_CLASS, curNode); 418 + generateEventJavaFile(curNode);
420 generateEventListenerJavaFile(GENERATE_EVENT_LISTENER_INTERFACE, curNode); 419 generateEventListenerJavaFile(GENERATE_EVENT_LISTENER_INTERFACE, curNode);
421 - generateEventSubjectJavaFile(GENERATE_EVENT_SUBJECT_CLASS, curNode); 420 + generateEventSubjectJavaFile(curNode);
422 } 421 }
423 422
424 /** 423 /**
...@@ -478,11 +477,10 @@ public class TempJavaServiceFragmentFiles ...@@ -478,11 +477,10 @@ public class TempJavaServiceFragmentFiles
478 /** 477 /**
479 * Constructs java code exit. 478 * Constructs java code exit.
480 * 479 *
481 - * @param fileType generated file type
482 * @param curNode current YANG node 480 * @param curNode current YANG node
483 * @throws IOException when fails to generate java files 481 * @throws IOException when fails to generate java files
484 */ 482 */
485 - public void generateEventJavaFile(int fileType, YangNode curNode) 483 + public void generateEventJavaFile(YangNode curNode)
486 throws IOException { 484 throws IOException {
487 485
488 List<String> imports = new ArrayList<>(); 486 List<String> imports = new ArrayList<>();
...@@ -536,11 +534,10 @@ public class TempJavaServiceFragmentFiles ...@@ -536,11 +534,10 @@ public class TempJavaServiceFragmentFiles
536 /** 534 /**
537 * Constructs java code exit. 535 * Constructs java code exit.
538 * 536 *
539 - * @param fileType generated file type
540 * @param curNode current YANG node 537 * @param curNode current YANG node
541 * @throws IOException when fails to generate java files 538 * @throws IOException when fails to generate java files
542 */ 539 */
543 - public void generateEventSubjectJavaFile(int fileType, YangNode curNode) 540 + public void generateEventSubjectJavaFile(YangNode curNode)
544 throws IOException { 541 throws IOException {
545 542
546 String curNodeInfo = getCapitalCase(((JavaFileInfoContainer) curNode) 543 String curNodeInfo = getCapitalCase(((JavaFileInfoContainer) curNode)
...@@ -778,7 +775,7 @@ public class TempJavaServiceFragmentFiles ...@@ -778,7 +775,7 @@ public class TempJavaServiceFragmentFiles
778 /** 775 /**
779 * Returns a temporary file handle for the event's file type. 776 * Returns a temporary file handle for the event's file type.
780 * 777 *
781 - * @param fileName file name 778 + * @param name file name
782 * @return temporary file handle 779 * @return temporary file handle
783 * @throws IOException when fails to create new file handle 780 * @throws IOException when fails to create new file handle
784 */ 781 */
...@@ -786,9 +783,10 @@ public class TempJavaServiceFragmentFiles ...@@ -786,9 +783,10 @@ public class TempJavaServiceFragmentFiles
786 throws IOException { 783 throws IOException {
787 784
788 JavaFileInfo parentInfo = ((JavaFileInfoContainer) curNode).getJavaFileInfo(); 785 JavaFileInfo parentInfo = ((JavaFileInfoContainer) curNode).getJavaFileInfo();
786 + JavaFileInfo childInfo = ((JavaFileInfoContainer) curNode.getChild()).getJavaFileInfo();
789 787
790 return getFileObject(getDirPath(parentInfo), name, JAVA_FILE_EXTENSION, 788 return getFileObject(getDirPath(parentInfo), name, JAVA_FILE_EXTENSION,
791 - parentInfo); 789 + childInfo);
792 } 790 }
793 791
794 /** 792 /**
......
...@@ -39,7 +39,7 @@ import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGenerato ...@@ -39,7 +39,7 @@ import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGenerato
39 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCamelCase; 39 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCamelCase;
40 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getOfMethodStringAndJavaDoc; 40 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getOfMethodStringAndJavaDoc;
41 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getTypeConstructorStringAndJavaDoc; 41 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getTypeConstructorStringAndJavaDoc;
42 -import static org.onosproject.yangutils.translator.tojava.utils.TempJavaCodeFragmentFilesUtils.closeFile; 42 +import static org.onosproject.yangutils.utils.io.impl.FileSystemUtil.closeFile;
43 import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING; 43 import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
44 import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE; 44 import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
45 import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.createPackage; 45 import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.createPackage;
......
...@@ -16,17 +16,22 @@ ...@@ -16,17 +16,22 @@
16 package org.onosproject.yangutils.translator.tojava.javamodel; 16 package org.onosproject.yangutils.translator.tojava.javamodel;
17 17
18 import java.io.IOException; 18 import java.io.IOException;
19 +import java.util.ArrayList;
20 +import java.util.List;
19 21
20 import org.onosproject.yangutils.datamodel.YangAugment; 22 import org.onosproject.yangutils.datamodel.YangAugment;
23 +import org.onosproject.yangutils.datamodel.YangNodeIdentifier;
21 import org.onosproject.yangutils.translator.exception.TranslatorException; 24 import org.onosproject.yangutils.translator.exception.TranslatorException;
22 import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator; 25 import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator;
23 import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo; 26 import org.onosproject.yangutils.translator.tojava.JavaCodeGeneratorInfo;
24 import org.onosproject.yangutils.translator.tojava.JavaFileInfo; 27 import org.onosproject.yangutils.translator.tojava.JavaFileInfo;
28 +import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfo;
25 import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles; 29 import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
26 import org.onosproject.yangutils.utils.io.impl.YangPluginConfig; 30 import org.onosproject.yangutils.utils.io.impl.YangPluginConfig;
27 31
28 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER; 32 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER;
29 import static org.onosproject.yangutils.translator.tojava.javamodel.YangJavaModelUtils.generateCodeOfAugmentableNode; 33 import static org.onosproject.yangutils.translator.tojava.javamodel.YangJavaModelUtils.generateCodeOfAugmentableNode;
34 +import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
30 35
31 /** 36 /**
32 * Represents augment information extended to support java code generation. 37 * Represents augment information extended to support java code generation.
...@@ -38,11 +43,21 @@ public class YangJavaAugment ...@@ -38,11 +43,21 @@ public class YangJavaAugment
38 private static final long serialVersionUID = 806201632L; 43 private static final long serialVersionUID = 806201632L;
39 44
40 /** 45 /**
46 + * Prefix to be added to generated java file for augment node.
47 + */
48 + private static final String AUGMENTED = "Augmented";
49 +
50 + /**
41 * Contains the information of the java file being generated. 51 * Contains the information of the java file being generated.
42 */ 52 */
43 private JavaFileInfo javaFileInfo; 53 private JavaFileInfo javaFileInfo;
44 54
45 /** 55 /**
56 + * TargetNodes java qualified info.
57 + */
58 + private List<JavaQualifiedTypeInfo> extendedClassInfo;
59 +
60 + /**
46 * File handle to maintain temporary java code fragments as per the code 61 * File handle to maintain temporary java code fragments as per the code
47 * snippet types. 62 * snippet types.
48 */ 63 */
...@@ -54,6 +69,7 @@ public class YangJavaAugment ...@@ -54,6 +69,7 @@ public class YangJavaAugment
54 public YangJavaAugment() { 69 public YangJavaAugment() {
55 super(); 70 super();
56 setJavaFileInfo(new JavaFileInfo()); 71 setJavaFileInfo(new JavaFileInfo());
72 + setExtendedClassInfo(new ArrayList<>());
57 getJavaFileInfo().setGeneratedFileTypes(GENERATE_INTERFACE_WITH_BUILDER); 73 getJavaFileInfo().setGeneratedFileTypes(GENERATE_INTERFACE_WITH_BUILDER);
58 } 74 }
59 75
...@@ -130,4 +146,46 @@ public class YangJavaAugment ...@@ -130,4 +146,46 @@ public class YangJavaAugment
130 throw new TranslatorException("Failed to generate code for augmentable node " + getName()); 146 throw new TranslatorException("Failed to generate code for augmentable node " + getName());
131 } 147 }
132 } 148 }
149 +
150 + /**
151 + * Returns augment class name.
152 + *
153 + * @return augment class name
154 + */
155 + public String getAugmentClassName() {
156 + YangNodeIdentifier nodeId = getTargetNode().get(getTargetNode().size() - 1).getNodeIdentifier();
157 + if (nodeId.getPrefix() != null) {
158 + return AUGMENTED + getCapitalCase(nodeId.getPrefix()) + getCapitalCase(nodeId.getName());
159 + } else {
160 + return AUGMENTED + getCapitalCase(nodeId.getName());
161 + }
162 + }
163 +
164 + /**
165 + * Returns extended class info.
166 + *
167 + * @return extended class info
168 + */
169 + public List<JavaQualifiedTypeInfo> getExtendedClassInfo() {
170 + return extendedClassInfo;
171 + }
172 +
173 + /**
174 + * Sets extended class info.
175 + *
176 + * @param augmentedInfo extended class info
177 + */
178 + private void setExtendedClassInfo(List<JavaQualifiedTypeInfo> augmentedInfo) {
179 + extendedClassInfo = augmentedInfo;
180 + }
181 +
182 + /**
183 + * Adds to extended class info list.
184 + *
185 + * @param augmentedInfo extended class info
186 + */
187 + public void addToExtendedClassInfo(JavaQualifiedTypeInfo augmentedInfo) {
188 + getExtendedClassInfo().add(augmentedInfo);
189 + }
190 +
133 } 191 }
......
...@@ -35,7 +35,7 @@ import static org.onosproject.yangutils.translator.tojava.javamodel.YangJavaMode ...@@ -35,7 +35,7 @@ import static org.onosproject.yangutils.translator.tojava.javamodel.YangJavaMode
35 import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getFileObject; 35 import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.getFileObject;
36 import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.initiateJavaFileGeneration; 36 import static org.onosproject.yangutils.translator.tojava.utils.JavaFileGeneratorUtils.initiateJavaFileGeneration;
37 import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.createPackage; 37 import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.createPackage;
38 -import static org.onosproject.yangutils.translator.tojava.utils.TempJavaCodeFragmentFilesUtils.closeFile; 38 +import static org.onosproject.yangutils.utils.io.impl.FileSystemUtil.closeFile;
39 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase; 39 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
40 40
41 /** 41 /**
......
...@@ -33,8 +33,10 @@ import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType. ...@@ -33,8 +33,10 @@ import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.
33 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_LISTENER_INTERFACE; 33 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_LISTENER_INTERFACE;
34 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_SUBJECT_CLASS; 34 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_SUBJECT_CLASS;
35 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER; 35 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER;
36 -import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getRootPackage;
37 import static org.onosproject.yangutils.translator.tojava.javamodel.YangJavaModelUtils.generateCodeOfRootNode; 36 import static org.onosproject.yangutils.translator.tojava.javamodel.YangJavaModelUtils.generateCodeOfRootNode;
37 +import static org.onosproject.yangutils.translator.tojava.javamodel.YangJavaModelUtils.isManagerCodeGenRequired;
38 +import static org.onosproject.yangutils.translator.tojava.javamodel.YangJavaModelUtils.isGenerationOfCodeReq;
39 +import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getRootPackage;
38 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.searchAndDeleteTempDir; 40 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.searchAndDeleteTempDir;
39 41
40 /** 42 /**
...@@ -60,7 +62,7 @@ public class YangJavaModule ...@@ -60,7 +62,7 @@ public class YangJavaModule
60 /** 62 /**
61 * List of notifications nodes. 63 * List of notifications nodes.
62 */ 64 */
63 - private List<YangNode> notificationNodes; 65 + private transient List<YangNode> notificationNodes;
64 66
65 /** 67 /**
66 * Creates a YANG node of module type. 68 * Creates a YANG node of module type.
...@@ -153,10 +155,15 @@ public class YangJavaModule ...@@ -153,10 +155,15 @@ public class YangJavaModule
153 * 155 *
154 * The manager class needs to extend the "ListenerRegistry". 156 * The manager class needs to extend the "ListenerRegistry".
155 */ 157 */
158 +
156 try { 159 try {
157 - getTempJavaCodeFragmentFiles().generateJavaFile(GENERATE_SERVICE_AND_MANAGER, this); 160 + if (isManagerCodeGenRequired(this) && isGenerationOfCodeReq(getJavaFileInfo())) {
161 + getTempJavaCodeFragmentFiles().generateJavaFile(GENERATE_SERVICE_AND_MANAGER, this);
162 + }
158 searchAndDeleteTempDir(getJavaFileInfo().getBaseCodeGenPath() + 163 searchAndDeleteTempDir(getJavaFileInfo().getBaseCodeGenPath() +
159 getJavaFileInfo().getPackageFilePath()); 164 getJavaFileInfo().getPackageFilePath());
165 + searchAndDeleteTempDir(getJavaFileInfo().getPluginConfig().getCodeGenDir() +
166 + getJavaFileInfo().getPackageFilePath());
160 } catch (IOException e) { 167 } catch (IOException e) {
161 throw new TranslatorException("Failed to generate code for module node " + getName()); 168 throw new TranslatorException("Failed to generate code for module node " + getName());
162 } 169 }
......
...@@ -35,8 +35,10 @@ import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType. ...@@ -35,8 +35,10 @@ import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.
35 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_LISTENER_INTERFACE; 35 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_LISTENER_INTERFACE;
36 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_SUBJECT_CLASS; 36 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_EVENT_SUBJECT_CLASS;
37 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER; 37 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER;
38 -import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getRootPackage;
39 import static org.onosproject.yangutils.translator.tojava.javamodel.YangJavaModelUtils.generateCodeOfRootNode; 38 import static org.onosproject.yangutils.translator.tojava.javamodel.YangJavaModelUtils.generateCodeOfRootNode;
39 +import static org.onosproject.yangutils.translator.tojava.javamodel.YangJavaModelUtils.isManagerCodeGenRequired;
40 +import static org.onosproject.yangutils.translator.tojava.javamodel.YangJavaModelUtils.isGenerationOfCodeReq;
41 +import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getRootPackage;
40 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.searchAndDeleteTempDir; 42 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.searchAndDeleteTempDir;
41 43
42 /** 44 /**
...@@ -62,7 +64,7 @@ public class YangJavaSubModule ...@@ -62,7 +64,7 @@ public class YangJavaSubModule
62 /** 64 /**
63 * List of notifications nodes. 65 * List of notifications nodes.
64 */ 66 */
65 - private List<YangNode> notificationNodes = new ArrayList<>(); 67 + private transient List<YangNode> notificationNodes = new ArrayList<>();
66 68
67 /** 69 /**
68 * Creates YANG java sub module object. 70 * Creates YANG java sub module object.
...@@ -167,9 +169,13 @@ public class YangJavaSubModule ...@@ -167,9 +169,13 @@ public class YangJavaSubModule
167 * The manager class needs to extend the "ListenerRegistry". 169 * The manager class needs to extend the "ListenerRegistry".
168 */ 170 */
169 try { 171 try {
170 - getTempJavaCodeFragmentFiles().generateJavaFile(GENERATE_SERVICE_AND_MANAGER, this); 172 + if (isManagerCodeGenRequired(this) && isGenerationOfCodeReq(getJavaFileInfo())) {
173 + getTempJavaCodeFragmentFiles().generateJavaFile(GENERATE_SERVICE_AND_MANAGER, this);
174 + }
171 searchAndDeleteTempDir(getJavaFileInfo().getBaseCodeGenPath() + 175 searchAndDeleteTempDir(getJavaFileInfo().getBaseCodeGenPath() +
172 getJavaFileInfo().getPackageFilePath()); 176 getJavaFileInfo().getPackageFilePath());
177 + searchAndDeleteTempDir(getJavaFileInfo().getPluginConfig().getCodeGenDir() +
178 + getJavaFileInfo().getPackageFilePath());
173 } catch (IOException e) { 179 } catch (IOException e) {
174 throw new TranslatorException("Failed to generate code for submodule node " + getName()); 180 throw new TranslatorException("Failed to generate code for submodule node " + getName());
175 } 181 }
......
...@@ -16,31 +16,51 @@ ...@@ -16,31 +16,51 @@
16 16
17 package org.onosproject.yangutils.translator.tojava.utils; 17 package org.onosproject.yangutils.translator.tojava.utils;
18 18
19 +import java.util.List;
20 +
21 +import org.onosproject.yangutils.datamodel.YangNode;
19 import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfo; 22 import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfo;
23 +import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
24 +import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFilesContainer;
25 +import org.onosproject.yangutils.translator.tojava.TempJavaFragmentFiles;
20 import org.onosproject.yangutils.utils.io.impl.YangPluginConfig; 26 import org.onosproject.yangutils.utils.io.impl.YangPluginConfig;
21 27
22 import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getEnumJavaAttribute; 28 import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getEnumJavaAttribute;
23 -import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getSmallCase; 29 +import static org.onosproject.yangutils.utils.UtilConstants.ACTIVATE_ANNOTATION_IMPORT;
24 -import static org.onosproject.yangutils.utils.UtilConstants.ARRAY_LIST;
25 -import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTED_INFO;
26 import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_CURLY_BRACKET; 30 import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_CURLY_BRACKET;
27 import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_PARENTHESIS; 31 import static org.onosproject.yangutils.utils.UtilConstants.CLOSE_PARENTHESIS;
28 import static org.onosproject.yangutils.utils.UtilConstants.COMMA; 32 import static org.onosproject.yangutils.utils.UtilConstants.COMMA;
33 +import static org.onosproject.yangutils.utils.UtilConstants.COMPONENT_ANNOTATION;
34 +import static org.onosproject.yangutils.utils.UtilConstants.COMPONENT_ANNOTATION_IMPORT;
35 +import static org.onosproject.yangutils.utils.UtilConstants.DEACTIVATE_ANNOTATION_IMPORT;
29 import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_CLOSE_BRACKET; 36 import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_CLOSE_BRACKET;
30 import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_OPEN_BRACKET; 37 import static org.onosproject.yangutils.utils.UtilConstants.DIAMOND_OPEN_BRACKET;
38 +import static org.onosproject.yangutils.utils.UtilConstants.ENUM;
31 import static org.onosproject.yangutils.utils.UtilConstants.EQUAL; 39 import static org.onosproject.yangutils.utils.UtilConstants.EQUAL;
32 import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION; 40 import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
41 +import static org.onosproject.yangutils.utils.UtilConstants.IMMEDIATE;
33 import static org.onosproject.yangutils.utils.UtilConstants.IMPORT; 42 import static org.onosproject.yangutils.utils.UtilConstants.IMPORT;
43 +import static org.onosproject.yangutils.utils.UtilConstants.INT;
34 import static org.onosproject.yangutils.utils.UtilConstants.LIST; 44 import static org.onosproject.yangutils.utils.UtilConstants.LIST;
35 -import static org.onosproject.yangutils.utils.UtilConstants.NEW; 45 +import static org.onosproject.yangutils.utils.UtilConstants.LISTENER_SERVICE;
46 +import static org.onosproject.yangutils.utils.UtilConstants.LOGGER_FACTORY_IMPORT;
47 +import static org.onosproject.yangutils.utils.UtilConstants.LOGGER_IMPORT;
36 import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE; 48 import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
49 +import static org.onosproject.yangutils.utils.UtilConstants.OPEN_CURLY_BRACKET;
37 import static org.onosproject.yangutils.utils.UtilConstants.OPEN_PARENTHESIS; 50 import static org.onosproject.yangutils.utils.UtilConstants.OPEN_PARENTHESIS;
38 import static org.onosproject.yangutils.utils.UtilConstants.PERIOD; 51 import static org.onosproject.yangutils.utils.UtilConstants.PERIOD;
39 import static org.onosproject.yangutils.utils.UtilConstants.PRIVATE; 52 import static org.onosproject.yangutils.utils.UtilConstants.PRIVATE;
53 +import static org.onosproject.yangutils.utils.UtilConstants.PUBLIC;
40 import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLAN; 54 import static org.onosproject.yangutils.utils.UtilConstants.SEMI_COLAN;
55 +import static org.onosproject.yangutils.utils.UtilConstants.SERVICE_ANNOTATION;
56 +import static org.onosproject.yangutils.utils.UtilConstants.SERVICE_ANNOTATION_IMPORT;
41 import static org.onosproject.yangutils.utils.UtilConstants.SPACE; 57 import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
42 -import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc; 58 +import static org.onosproject.yangutils.utils.UtilConstants.TRUE;
59 +import static org.onosproject.yangutils.utils.UtilConstants.TYPE;
43 import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.ENUM_ATTRIBUTE; 60 import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.JavaDocType.ENUM_ATTRIBUTE;
61 +import static org.onosproject.yangutils.utils.io.impl.JavaDocGen.getJavaDoc;
62 +import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getSmallCase;
63 +import static java.util.Collections.sort;
44 64
45 /** 65 /**
46 * Represents utility class to generate the java snippet. 66 * Represents utility class to generate the java snippet.
...@@ -71,7 +91,7 @@ public final class JavaCodeSnippetGen { ...@@ -71,7 +91,7 @@ public final class JavaCodeSnippetGen {
71 * 91 *
72 * @param importInfo import info 92 * @param importInfo import info
73 * @return the textual java code information corresponding to the import 93 * @return the textual java code information corresponding to the import
74 - * list 94 + * list
75 */ 95 */
76 public static String getImportText(JavaQualifiedTypeInfo importInfo) { 96 public static String getImportText(JavaQualifiedTypeInfo importInfo) {
77 return IMPORT + importInfo.getPkgInfo() + PERIOD + importInfo.getClassInfo() + SEMI_COLAN + NEW_LINE; 97 return IMPORT + importInfo.getPkgInfo() + PERIOD + importInfo.getClassInfo() + SEMI_COLAN + NEW_LINE;
...@@ -81,13 +101,13 @@ public final class JavaCodeSnippetGen { ...@@ -81,13 +101,13 @@ public final class JavaCodeSnippetGen {
81 * Returns the textual java code for attribute definition in class. 101 * Returns the textual java code for attribute definition in class.
82 * 102 *
83 * @param javaAttributeTypePkg Package of the attribute type 103 * @param javaAttributeTypePkg Package of the attribute type
84 - * @param javaAttributeType java attribute type 104 + * @param javaAttributeType java attribute type
85 - * @param javaAttributeName name of the attribute 105 + * @param javaAttributeName name of the attribute
86 - * @param isList is list attribute 106 + * @param isList is list attribute
87 * @return the textual java code for attribute definition in class 107 * @return the textual java code for attribute definition in class
88 */ 108 */
89 public static String getJavaAttributeDefination(String javaAttributeTypePkg, String javaAttributeType, 109 public static String getJavaAttributeDefination(String javaAttributeTypePkg, String javaAttributeType,
90 - String javaAttributeName, boolean isList) { 110 + String javaAttributeName, boolean isList) {
91 111
92 String attributeDefination = PRIVATE + SPACE; 112 String attributeDefination = PRIVATE + SPACE;
93 113
...@@ -121,17 +141,6 @@ public final class JavaCodeSnippetGen { ...@@ -121,17 +141,6 @@ public final class JavaCodeSnippetGen {
121 } 141 }
122 142
123 /** 143 /**
124 - * Returns attribute of augmented info for generated impl file.
125 - *
126 - * @return attribute of augmented info for generated impl file
127 - */
128 - public static String getAugmentedInfoAttribute() {
129 - return NEW_LINE + FOUR_SPACE_INDENTATION + PRIVATE + SPACE + getListAttribute(AUGMENTED_INFO) + SPACE
130 - + getSmallCase(AUGMENTED_INFO) + LIST + SPACE + EQUAL + SPACE + NEW + SPACE + ARRAY_LIST
131 - + DIAMOND_OPEN_BRACKET + DIAMOND_CLOSE_BRACKET + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN;
132 - }
133 -
134 - /**
135 * Returns based on the file type and the YANG name of the file, generate the class 144 * Returns based on the file type and the YANG name of the file, generate the class
136 * / interface definition close. 145 * / interface definition close.
137 * 146 *
...@@ -144,8 +153,8 @@ public final class JavaCodeSnippetGen { ...@@ -144,8 +153,8 @@ public final class JavaCodeSnippetGen {
144 /** 153 /**
145 * Returns string for enum's attribute. 154 * Returns string for enum's attribute.
146 * 155 *
147 - * @param name name of attribute 156 + * @param name name of attribute
148 - * @param value value of the enum 157 + * @param value value of the enum
149 * @param pluginConfig plugin configurations 158 * @param pluginConfig plugin configurations
150 * @return string for enum's attribute 159 * @return string for enum's attribute
151 */ 160 */
...@@ -155,4 +164,128 @@ public final class JavaCodeSnippetGen { ...@@ -155,4 +164,128 @@ public final class JavaCodeSnippetGen {
155 + value + CLOSE_PARENTHESIS + COMMA + NEW_LINE; 164 + value + CLOSE_PARENTHESIS + COMMA + NEW_LINE;
156 } 165 }
157 166
167 + /**
168 + * Adds annotations imports.
169 + *
170 + * @param imports list if imports
171 + * @param operation to add or to delete
172 + */
173 + public static void addAnnotationsImports(List<String> imports, boolean operation) {
174 + if (operation) {
175 + imports.add(ACTIVATE_ANNOTATION_IMPORT);
176 + imports.add(DEACTIVATE_ANNOTATION_IMPORT);
177 + imports.add(COMPONENT_ANNOTATION_IMPORT);
178 + imports.add(SERVICE_ANNOTATION_IMPORT);
179 + imports.add(LOGGER_FACTORY_IMPORT);
180 + imports.add(LOGGER_IMPORT);
181 + } else {
182 + imports.remove(ACTIVATE_ANNOTATION_IMPORT);
183 + imports.remove(DEACTIVATE_ANNOTATION_IMPORT);
184 + imports.remove(COMPONENT_ANNOTATION_IMPORT);
185 + imports.remove(SERVICE_ANNOTATION_IMPORT);
186 + imports.remove(LOGGER_FACTORY_IMPORT);
187 + imports.remove(LOGGER_IMPORT);
188 + }
189 + sortImports(imports);
190 + }
191 +
192 + /**
193 + * Returns sorted import list.
194 + *
195 + * @param imports import list
196 + * @return sorted import list
197 + */
198 + public static List<String> sortImports(List<String> imports) {
199 + sort(imports);
200 + return imports;
201 + }
202 +
203 + /**
204 + * Returns event enum start.
205 + *
206 + * @return event enum start
207 + */
208 + public static String getEventEnumTypeStart() {
209 + return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + ENUM + SPACE + TYPE + SPACE + OPEN_CURLY_BRACKET
210 + + NEW_LINE;
211 + }
212 +
213 + /**
214 + * Adds listener's imports.
215 + *
216 + * @param curNode currentYangNode.
217 + * @param imports import list
218 + * @param operation add or remove
219 + * @param classInfo class info to be added to import list
220 + */
221 + public static void addListenersImport(YangNode curNode, List<String> imports, boolean operation,
222 + String classInfo) {
223 + String thisImport = "";
224 + if (classInfo.equals(LISTENER_SERVICE)) {
225 + thisImport = getTempJavaFragment(curNode).getJavaImportData().getListenerServiceImport();
226 + performOperationOnImports(imports, thisImport, operation);
227 + } else {
228 + thisImport = getTempJavaFragment(curNode).getJavaImportData().getListenerRegistryImport();
229 + performOperationOnImports(imports, thisImport, operation);
230 + }
231 + }
232 +
233 + /**
234 + * Performs given operations on import list.
235 + *
236 + * @param imports list of imports
237 + * @param curImport current import
238 + * @param operation add or remove
239 + * @return import list
240 + */
241 + private static List<String> performOperationOnImports(List<String> imports, String curImport,
242 + boolean operation) {
243 + if (operation) {
244 + imports.add(curImport);
245 + } else {
246 + imports.remove(curImport);
247 + }
248 + sortImports(imports);
249 + return imports;
250 + }
251 +
252 + /**
253 + * Returns temp java fragment.
254 + *
255 + * @param curNode current YANG node
256 + * @return temp java fragments
257 + */
258 + public static TempJavaFragmentFiles getTempJavaFragment(YangNode curNode) {
259 + TempJavaCodeFragmentFiles container = ((TempJavaCodeFragmentFilesContainer) curNode)
260 + .getTempJavaCodeFragmentFiles();
261 + if (container.getBeanTempFiles() != null) {
262 + return container.getBeanTempFiles();
263 + }
264 + if (container.getServiceTempFiles() != null) {
265 + return container.getServiceTempFiles();
266 + }
267 +
268 + return null;
269 + }
270 +
271 + /**
272 + * Returns integer attribute for enum's class to get the values.
273 + *
274 + * @param className enum's class name
275 + * @return enum's attribute
276 + */
277 + public static String getEnumsValueAttribute(String className) {
278 + return NEW_LINE + FOUR_SPACE_INDENTATION + PRIVATE + SPACE + INT + SPACE + getSmallCase(className)
279 + + SEMI_COLAN + NEW_LINE;
280 + }
281 +
282 + /**
283 + * Returns component string.
284 + *
285 + * @return component string
286 + */
287 + public static String addComponentString() {
288 + return NEW_LINE + COMPONENT_ANNOTATION + SPACE + OPEN_PARENTHESIS + IMMEDIATE + SPACE
289 + + EQUAL + SPACE + TRUE + CLOSE_PARENTHESIS + NEW_LINE + SERVICE_ANNOTATION;
290 + }
158 } 291 }
......
...@@ -28,7 +28,7 @@ import org.onosproject.yangutils.translator.tojava.JavaImportData; ...@@ -28,7 +28,7 @@ import org.onosproject.yangutils.translator.tojava.JavaImportData;
28 import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfo; 28 import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfo;
29 29
30 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase; 30 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
31 -import static org.onosproject.yangutils.translator.tojava.utils.TempJavaCodeFragmentFilesUtils.getTempJavaFragement; 31 +import static org.onosproject.yangutils.translator.tojava.utils.JavaCodeSnippetGen.getTempJavaFragment;
32 32
33 /** 33 /**
34 * Represent the extends list for generated java classes. It holds the class details which needs 34 * Represent the extends list for generated java classes. It holds the class details which needs
...@@ -62,7 +62,7 @@ public class JavaExtendsListHolder { ...@@ -62,7 +62,7 @@ public class JavaExtendsListHolder {
62 * @param extendedClass map of classes need to be extended 62 * @param extendedClass map of classes need to be extended
63 */ 63 */
64 private void setExtendedClassStore(Map<JavaQualifiedTypeInfo, Boolean> extendedClass) { 64 private void setExtendedClassStore(Map<JavaQualifiedTypeInfo, Boolean> extendedClass) {
65 - this.extendedClassStore = extendedClass; 65 + extendedClassStore = extendedClass;
66 } 66 }
67 67
68 /** 68 /**
...@@ -74,7 +74,7 @@ public class JavaExtendsListHolder { ...@@ -74,7 +74,7 @@ public class JavaExtendsListHolder {
74 public void addToExtendsList(JavaQualifiedTypeInfo info, YangNode node) { 74 public void addToExtendsList(JavaQualifiedTypeInfo info, YangNode node) {
75 JavaFileInfo fileInfo = ((JavaFileInfoContainer) node).getJavaFileInfo(); 75 JavaFileInfo fileInfo = ((JavaFileInfoContainer) node).getJavaFileInfo();
76 76
77 - JavaImportData importData = getTempJavaFragement(node).getJavaImportData(); 77 + JavaImportData importData = getTempJavaFragment(node).getJavaImportData();
78 boolean qualified = importData.addImportInfo(info, 78 boolean qualified = importData.addImportInfo(info,
79 getCapitalCase(fileInfo.getJavaName()), fileInfo.getPackage()); 79 getCapitalCase(fileInfo.getJavaName()), fileInfo.getPackage());
80 80
...@@ -99,7 +99,7 @@ public class JavaExtendsListHolder { ...@@ -99,7 +99,7 @@ public class JavaExtendsListHolder {
99 * @param classInfoList the extends List to set 99 * @param classInfoList the extends List to set
100 */ 100 */
101 private void setExtendsList(List<JavaQualifiedTypeInfo> classInfoList) { 101 private void setExtendsList(List<JavaQualifiedTypeInfo> classInfoList) {
102 - this.extendsList = classInfoList; 102 + extendsList = classInfoList;
103 } 103 }
104 104
105 /** 105 /**
......
...@@ -54,11 +54,8 @@ import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getPackageDirP ...@@ -54,11 +54,8 @@ import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getPackageDirP
54 */ 54 */
55 public final class JavaIdentifierSyntax { 55 public final class JavaIdentifierSyntax {
56 56
57 - private static final int MAX_MONTHS = 12;
58 - private static final int MAX_DAYS = 31;
59 private static final int INDEX_ZERO = 0; 57 private static final int INDEX_ZERO = 0;
60 private static final int INDEX_ONE = 1; 58 private static final int INDEX_ONE = 1;
61 - private static final int INDEX_TWO = 2;
62 private static final int VALUE_CHECK = 10; 59 private static final int VALUE_CHECK = 10;
63 private static final String ZERO = "0"; 60 private static final String ZERO = "0";
64 private static final String DATE_FORMAT = "yyyy-MM-dd"; 61 private static final String DATE_FORMAT = "yyyy-MM-dd";
......
1 -/*
2 - * Copyright 2016-present Open Networking Laboratory
3 - *
4 - * Licensed under the Apache License, Version 2.0 (the "License");
5 - * you may not use this file except in compliance with the License.
6 - * You may obtain a copy of the License at
7 - *
8 - * http://www.apache.org/licenses/LICENSE-2.0
9 - *
10 - * Unless required by applicable law or agreed to in writing, software
11 - * distributed under the License is distributed on an "AS IS" BASIS,
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 - * See the License for the specific language governing permissions and
14 - * limitations under the License.
15 - */
16 -
17 -package org.onosproject.yangutils.translator.tojava.utils;
18 -
19 -import java.io.File;
20 -import java.io.IOException;
21 -import java.util.List;
22 -import org.onosproject.yangutils.datamodel.YangNode;
23 -import org.onosproject.yangutils.translator.tojava.JavaQualifiedTypeInfo;
24 -import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles;
25 -import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFilesContainer;
26 -import org.onosproject.yangutils.translator.tojava.TempJavaFragmentFiles;
27 -
28 -import static org.onosproject.yangutils.utils.UtilConstants.ACTIVATE_ANNOTATION_IMPORT;
29 -import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTATION_HOLDER;
30 -import static org.onosproject.yangutils.utils.UtilConstants.AUGMENTED_INFO;
31 -import static org.onosproject.yangutils.utils.UtilConstants.COMPONENT_ANNOTATION_IMPORT;
32 -import static org.onosproject.yangutils.utils.UtilConstants.DEACTIVATE_ANNOTATION_IMPORT;
33 -import static org.onosproject.yangutils.utils.UtilConstants.ENUM;
34 -import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
35 -import static org.onosproject.yangutils.utils.UtilConstants.LISTENER_SERVICE;
36 -import static org.onosproject.yangutils.utils.UtilConstants.LOGGER_FACTORY_IMPORT;
37 -import static org.onosproject.yangutils.utils.UtilConstants.LOGGER_IMPORT;
38 -import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
39 -import static org.onosproject.yangutils.utils.UtilConstants.OPEN_CURLY_BRACKET;
40 -import static org.onosproject.yangutils.utils.UtilConstants.PUBLIC;
41 -import static org.onosproject.yangutils.utils.UtilConstants.SERVICE_ANNOTATION_IMPORT;
42 -import static org.onosproject.yangutils.utils.UtilConstants.SPACE;
43 -import static org.onosproject.yangutils.utils.UtilConstants.TYPE;
44 -import static org.onosproject.yangutils.utils.io.impl.FileSystemUtil.updateFileHandle;
45 -import static java.util.Collections.sort;
46 -
47 -/**
48 - * Represents utilities for temporary java code fragments.
49 - */
50 -public final class TempJavaCodeFragmentFilesUtils {
51 -
52 - /**
53 - * Creates a private instance of temporary java code fragment utils.
54 - */
55 - private TempJavaCodeFragmentFilesUtils() {
56 - }
57 -
58 - /**
59 - * Adds import for AugmentationHolders class.
60 - *
61 - * @param curNode current YANG node
62 - * @param imports list of imports
63 - * @param operation add or delete import
64 - */
65 - public static void addAugmentationHoldersImport(YangNode curNode, List<String> imports, boolean operation) {
66 - String thisImport = getTempJavaFragement(curNode).getJavaImportData().getAugmentationHolderImport();
67 - performOperationOnImports(imports, thisImport, operation);
68 - }
69 -
70 - /**
71 - * Adds import for AugmentedInfo class.
72 - *
73 - * @param curNode current YANG node
74 - * @param imports list of imports
75 - * @param operation add or delete import
76 - */
77 - public static void addAugmentedInfoImport(YangNode curNode, List<String> imports, boolean operation) {
78 - String thisImport = getTempJavaFragement(curNode).getJavaImportData().getAugmentedInfoImport();
79 - performOperationOnImports(imports, thisImport, operation);
80 - }
81 -
82 - /**
83 - * Returns temp java fragment.
84 - *
85 - * @param curNode current YANG node
86 - * @return temp java fragments
87 - */
88 - public static TempJavaFragmentFiles getTempJavaFragement(YangNode curNode) {
89 - TempJavaCodeFragmentFiles container = ((TempJavaCodeFragmentFilesContainer) curNode)
90 - .getTempJavaCodeFragmentFiles();
91 - if (container.getBeanTempFiles() != null) {
92 - return container.getBeanTempFiles();
93 - }
94 - if (container.getServiceTempFiles() != null) {
95 - return container.getServiceTempFiles();
96 - }
97 -
98 - return null;
99 - }
100 -
101 - /**
102 - * Adds import for array list.
103 - *
104 - * @param curNode current YANG node
105 - * @param imports list of imports
106 - * @param operation add or delete import
107 - */
108 - public static void addArrayListImport(YangNode curNode, List<String> imports, boolean operation) {
109 - String arrayListImport = getTempJavaFragement(curNode).getJavaImportData().getImportForArrayList();
110 - String listImport = getTempJavaFragement(curNode).getJavaImportData().getImportForList();
111 - performOperationOnImports(imports, arrayListImport, operation);
112 - if (!imports.contains(listImport)) {
113 - /**
114 - * List can be there because of attribute also , so no need to remove it and operation will
115 - * always be add(true).
116 - */
117 - performOperationOnImports(imports, listImport, true);
118 - }
119 - }
120 -
121 - /**
122 - * Adds listener's imports.
123 - *
124 - * @param curNode currentYangNode.
125 - * @param imports import list
126 - * @param operation add or remove
127 - * @param classInfo class info to be added to import list
128 - */
129 - public static void addListnersImport(YangNode curNode, List<String> imports, boolean operation,
130 - String classInfo) {
131 - String thisImport = "";
132 - if (classInfo.equals(LISTENER_SERVICE)) {
133 - thisImport = getTempJavaFragement(curNode).getJavaImportData().getListenerServiceImport();
134 - performOperationOnImports(imports, thisImport, operation);
135 - } else {
136 - thisImport = getTempJavaFragement(curNode).getJavaImportData().getListenerRegistryImport();
137 - performOperationOnImports(imports, thisImport, operation);
138 - }
139 - }
140 -
141 - /**
142 - * Adds annotations imports.
143 - *
144 - * @param imports list if imports
145 - * @param operation to add or to delete
146 - */
147 - public static void addAnnotationsImports(List<String> imports, boolean operation) {
148 - if (operation) {
149 - imports.add(ACTIVATE_ANNOTATION_IMPORT);
150 - imports.add(DEACTIVATE_ANNOTATION_IMPORT);
151 - imports.add(COMPONENT_ANNOTATION_IMPORT);
152 - imports.add(SERVICE_ANNOTATION_IMPORT);
153 - imports.add(LOGGER_FACTORY_IMPORT);
154 - imports.add(LOGGER_IMPORT);
155 - } else {
156 - imports.remove(ACTIVATE_ANNOTATION_IMPORT);
157 - imports.remove(DEACTIVATE_ANNOTATION_IMPORT);
158 - imports.remove(COMPONENT_ANNOTATION_IMPORT);
159 - imports.remove(SERVICE_ANNOTATION_IMPORT);
160 - imports.remove(LOGGER_FACTORY_IMPORT);
161 - imports.remove(LOGGER_IMPORT);
162 - }
163 - sortImports(imports);
164 - }
165 -
166 - /**
167 - * Performs given operations on import list.
168 - *
169 - * @param imports list of imports
170 - * @param curImport current import
171 - * @param operation add or remove
172 - * @return import list
173 - */
174 - private static List<String> performOperationOnImports(List<String> imports, String curImport,
175 - boolean operation) {
176 - if (operation) {
177 - imports.add(curImport);
178 - } else {
179 - imports.remove(curImport);
180 - }
181 - sortImports(imports);
182 - return imports;
183 - }
184 -
185 - /**
186 - * Returns true if AugmentationHolder class needs to be extended.
187 - *
188 - * @param extendsList list of classes need to be extended
189 - * @return true or false
190 - */
191 - public static boolean isAugmentationHolderExtended(List<JavaQualifiedTypeInfo> extendsList) {
192 - for (JavaQualifiedTypeInfo info : extendsList) {
193 - return info.getClassInfo().equals(AUGMENTATION_HOLDER);
194 - }
195 - return false;
196 - }
197 -
198 - /**
199 - * Returns true if AugmentedInfo class needs to be extended.
200 - *
201 - * @param extendsList list of classes need to be extended
202 - * @return true or false
203 - */
204 - public static boolean isAugmentedInfoExtended(List<JavaQualifiedTypeInfo> extendsList) {
205 - for (JavaQualifiedTypeInfo info : extendsList) {
206 - return info.getClassInfo().equals(AUGMENTED_INFO);
207 - }
208 - return false;
209 - }
210 -
211 - /**
212 - * Closes the file handle for temporary file.
213 - *
214 - * @param file file to be closed
215 - * @param toBeDeleted flag to indicate if file needs to be deleted
216 - * @throws IOException when failed to close the file handle
217 - */
218 - public static void closeFile(File file, boolean toBeDeleted)
219 - throws IOException {
220 -
221 - if (file != null) {
222 - updateFileHandle(file, null, true);
223 - if (toBeDeleted) {
224 - file.delete();
225 - }
226 - }
227 - }
228 -
229 - /**
230 - * Returns sorted import list.
231 - *
232 - * @param imports import list
233 - * @return sorted import list
234 - */
235 - public static List<String> sortImports(List<String> imports) {
236 - sort(imports);
237 - return imports;
238 - }
239 -
240 - /**
241 - * Returns event enum start.
242 - *
243 - * @return event enum start
244 - */
245 - public static String getEventEnumTypeStart() {
246 - return FOUR_SPACE_INDENTATION + PUBLIC + SPACE + ENUM + SPACE + TYPE + SPACE + OPEN_CURLY_BRACKET
247 - + NEW_LINE;
248 - }
249 -}
...@@ -607,6 +607,11 @@ public final class UtilConstants { ...@@ -607,6 +607,11 @@ public final class UtilConstants {
607 public static final String CATCH = "catch"; 607 public static final String CATCH = "catch";
608 608
609 /** 609 /**
610 + * Static attribute for super syntax.
611 + */
612 + public static final String SUPER = "super";
613 +
614 + /**
610 * Static attribute for eight space indentation. 615 * Static attribute for eight space indentation.
611 */ 616 */
612 public static final String EIGHT_SPACE_INDENTATION = FOUR_SPACE_INDENTATION + FOUR_SPACE_INDENTATION; 617 public static final String EIGHT_SPACE_INDENTATION = FOUR_SPACE_INDENTATION + FOUR_SPACE_INDENTATION;
......
...@@ -123,4 +123,22 @@ public final class FileSystemUtil { ...@@ -123,4 +123,22 @@ public final class FileSystemUtil {
123 } 123 }
124 } 124 }
125 } 125 }
126 +
127 + /**
128 + * Closes the file handle for temporary file.
129 + *
130 + * @param file file to be closed
131 + * @param toBeDeleted flag to indicate if file needs to be deleted
132 + * @throws IOException when failed to close the file handle
133 + */
134 + public static void closeFile(File file, boolean toBeDeleted)
135 + throws IOException {
136 +
137 + if (file != null) {
138 + updateFileHandle(file, null, true);
139 + if (toBeDeleted) {
140 + file.delete();
141 + }
142 + }
143 + }
126 } 144 }
......
...@@ -590,7 +590,7 @@ public final class JavaDocGen { ...@@ -590,7 +590,7 @@ public final class JavaDocGen {
590 * @param attribute attribute string 590 * @param attribute attribute string
591 * @return javaDocs for type constructor 591 * @return javaDocs for type constructor
592 */ 592 */
593 - private static String generateForTypeConstructor(String attribute) { 593 + public static String generateForTypeConstructor(String attribute) {
594 return NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_CONSTRUCTOR 594 return NEW_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_FIRST_LINE + FOUR_SPACE_INDENTATION + JAVA_DOC_CONSTRUCTOR
595 + attribute + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK + FOUR_SPACE_INDENTATION 595 + attribute + PERIOD + NEW_LINE + FOUR_SPACE_INDENTATION + NEW_LINE_ASTERISK + FOUR_SPACE_INDENTATION
596 + JAVA_DOC_PARAM + VALUE + SPACE + VALUE + SPACE + OF + SPACE + attribute + NEW_LINE 596 + JAVA_DOC_PARAM + VALUE + SPACE + VALUE + SPACE + OF + SPACE + attribute + NEW_LINE
......
...@@ -28,11 +28,11 @@ import java.util.LinkedList; ...@@ -28,11 +28,11 @@ import java.util.LinkedList;
28 import java.util.List; 28 import java.util.List;
29 import java.util.Stack; 29 import java.util.Stack;
30 import java.util.regex.Pattern; 30 import java.util.regex.Pattern;
31 +
31 import org.apache.commons.io.FileUtils; 32 import org.apache.commons.io.FileUtils;
32 import org.onosproject.yangutils.translator.exception.TranslatorException; 33 import org.onosproject.yangutils.translator.exception.TranslatorException;
33 34
34 import static org.onosproject.yangutils.utils.UtilConstants.COLAN; 35 import static org.onosproject.yangutils.utils.UtilConstants.COLAN;
35 -import static org.onosproject.yangutils.utils.UtilConstants.COMMA;
36 import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING; 36 import static org.onosproject.yangutils.utils.UtilConstants.EMPTY_STRING;
37 import static org.onosproject.yangutils.utils.UtilConstants.HASH; 37 import static org.onosproject.yangutils.utils.UtilConstants.HASH;
38 import static org.onosproject.yangutils.utils.UtilConstants.HYPHEN; 38 import static org.onosproject.yangutils.utils.UtilConstants.HYPHEN;
...@@ -212,35 +212,17 @@ public final class YangIoUtils { ...@@ -212,35 +212,17 @@ public final class YangIoUtils {
212 /** 212 /**
213 * Removes extra char from the string. 213 * Removes extra char from the string.
214 * 214 *
215 - * @param valueString string to be trimmed 215 + * @param valueString string to be trimmed
216 - * @param removealStirng extra chars 216 + * @param removalStirng extra chars
217 * @return new string 217 * @return new string
218 */ 218 */
219 - public static String trimAtLast(String valueString, String removealStirng) { 219 + public static String trimAtLast(String valueString, String removalStirng) {
220 StringBuilder stringBuilder = new StringBuilder(valueString); 220 StringBuilder stringBuilder = new StringBuilder(valueString);
221 - int index = valueString.lastIndexOf(removealStirng); 221 + int index = valueString.lastIndexOf(removalStirng);
222 - stringBuilder.deleteCharAt(index); 222 + if (index != -1) {
223 - return stringBuilder.toString(); 223 + stringBuilder.deleteCharAt(index);
224 - }
225 -
226 - /**
227 - * Returns new parted string.
228 - *
229 - * @param partString string to be parted
230 - * @return parted string
231 - */
232 - public static String partString(String partString) {
233 - String[] strArray = partString.split(COMMA);
234 - String newString = EMPTY_STRING;
235 - for (int i = 0; i < strArray.length; i++) {
236 - if (i % 4 != 0 || i == 0) {
237 - newString = newString + strArray[i] + COMMA;
238 - } else {
239 - newString = newString + NEW_LINE + TWELVE_SPACE_INDENTATION
240 - + strArray[i] + COMMA;
241 - }
242 } 224 }
243 - return trimAtLast(newString, COMMA); 225 + return stringBuilder.toString();
244 } 226 }
245 227
246 /** 228 /**
......
...@@ -27,6 +27,11 @@ public final class YangPluginConfig { ...@@ -27,6 +27,11 @@ public final class YangPluginConfig {
27 private String codeGenDir; 27 private String codeGenDir;
28 28
29 /** 29 /**
30 + * Contains the code generation directory.
31 + */
32 + private String managerCodeGenDir;
33 +
34 + /**
30 * Contains information of naming conflicts that can be resolved. 35 * Contains information of naming conflicts that can be resolved.
31 */ 36 */
32 private YangToJavaNamingConflictUtil conflictResolver; 37 private YangToJavaNamingConflictUtil conflictResolver;
...@@ -72,4 +77,22 @@ public final class YangPluginConfig { ...@@ -72,4 +77,22 @@ public final class YangPluginConfig {
72 public YangToJavaNamingConflictUtil getConflictResolver() { 77 public YangToJavaNamingConflictUtil getConflictResolver() {
73 return conflictResolver; 78 return conflictResolver;
74 } 79 }
80 +
81 + /**
82 + * Returns manager's code generation directory.
83 + *
84 + * @return manager's code generation directory
85 + */
86 + public String getManagerCodeGenDir() {
87 + return managerCodeGenDir;
88 + }
89 +
90 + /**
91 + * Sets manager's code generation directory.
92 + *
93 + * @param moduleCodeGenDir manager's code generation directory
94 + */
95 + public void setManagerCodeGenDir(String moduleCodeGenDir) {
96 + this.managerCodeGenDir = moduleCodeGenDir;
97 + }
75 } 98 }
......
...@@ -16,16 +16,16 @@ ...@@ -16,16 +16,16 @@
16 16
17 package org.onosproject.yangutils.ietfyang; 17 package org.onosproject.yangutils.ietfyang;
18 18
19 +import java.io.IOException;
20 +
19 import org.apache.maven.plugin.MojoExecutionException; 21 import org.apache.maven.plugin.MojoExecutionException;
20 import org.junit.Test; 22 import org.junit.Test;
21 import org.onosproject.yangutils.linker.impl.YangLinkerManager; 23 import org.onosproject.yangutils.linker.impl.YangLinkerManager;
22 import org.onosproject.yangutils.parser.exceptions.ParserException; 24 import org.onosproject.yangutils.parser.exceptions.ParserException;
23 import org.onosproject.yangutils.parser.impl.YangUtilsParserManager; 25 import org.onosproject.yangutils.parser.impl.YangUtilsParserManager;
24 import org.onosproject.yangutils.plugin.manager.YangUtilManager; 26 import org.onosproject.yangutils.plugin.manager.YangUtilManager;
25 -import org.onosproject.yangutils.utils.io.impl.YangPluginConfig;
26 import org.onosproject.yangutils.utils.io.impl.YangFileScanner; 27 import org.onosproject.yangutils.utils.io.impl.YangFileScanner;
27 - 28 +import org.onosproject.yangutils.utils.io.impl.YangPluginConfig;
28 -import java.io.IOException;
29 29
30 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.deleteDirectory; 30 import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.deleteDirectory;
31 31
...@@ -54,6 +54,7 @@ public class IetfYangFileTest { ...@@ -54,6 +54,7 @@ public class IetfYangFileTest {
54 String userDir = System.getProperty("user.dir"); 54 String userDir = System.getProperty("user.dir");
55 YangPluginConfig yangPluginConfig = new YangPluginConfig(); 55 YangPluginConfig yangPluginConfig = new YangPluginConfig();
56 yangPluginConfig.setCodeGenDir("target/ietfyang/l3vpnservice/"); 56 yangPluginConfig.setCodeGenDir("target/ietfyang/l3vpnservice/");
57 + yangPluginConfig.setManagerCodeGenDir("target/ietfyang/l3vpnservice/");
57 58
58 utilManager.translateToJava(utilManager.getYangFileInfoSet(), yangPluginConfig); 59 utilManager.translateToJava(utilManager.getYangFileInfoSet(), yangPluginConfig);
59 60
......
...@@ -20,12 +20,12 @@ import java.io.IOException; ...@@ -20,12 +20,12 @@ import java.io.IOException;
20 import java.util.ListIterator; 20 import java.util.ListIterator;
21 21
22 import org.junit.Test; 22 import org.junit.Test;
23 -import org.onosproject.yangutils.datamodel.YangNode; 23 +import org.onosproject.yangutils.datamodel.YangAtomicPath;
24 -import org.onosproject.yangutils.datamodel.YangModule;
25 import org.onosproject.yangutils.datamodel.YangAugment; 24 import org.onosproject.yangutils.datamodel.YangAugment;
26 -import org.onosproject.yangutils.datamodel.YangLeaf;
27 -import org.onosproject.yangutils.datamodel.YangNodeIdentifier;
28 import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes; 25 import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes;
26 +import org.onosproject.yangutils.datamodel.YangLeaf;
27 +import org.onosproject.yangutils.datamodel.YangModule;
28 +import org.onosproject.yangutils.datamodel.YangNode;
29 import org.onosproject.yangutils.datamodel.YangNodeType; 29 import org.onosproject.yangutils.datamodel.YangNodeType;
30 import org.onosproject.yangutils.parser.exceptions.ParserException; 30 import org.onosproject.yangutils.parser.exceptions.ParserException;
31 import org.onosproject.yangutils.parser.impl.YangUtilsParserManager; 31 import org.onosproject.yangutils.parser.impl.YangUtilsParserManager;
...@@ -48,16 +48,16 @@ public class AugmentListenerTest { ...@@ -48,16 +48,16 @@ public class AugmentListenerTest {
48 48
49 YangNode node = manager.getDataModel("src/test/resources/ValidAugmentStatement.yang"); 49 YangNode node = manager.getDataModel("src/test/resources/ValidAugmentStatement.yang");
50 50
51 - assertThat((node instanceof YangModule), is(true)); 51 + assertThat(node instanceof YangModule, is(true));
52 assertThat(node.getNodeType(), is(YangNodeType.MODULE_NODE)); 52 assertThat(node.getNodeType(), is(YangNodeType.MODULE_NODE));
53 YangModule yangNode = (YangModule) node; 53 YangModule yangNode = (YangModule) node;
54 assertThat(yangNode.getName(), is("Test")); 54 assertThat(yangNode.getName(), is("Test"));
55 55
56 YangAugment yangAugment = (YangAugment) yangNode.getChild(); 56 YangAugment yangAugment = (YangAugment) yangNode.getChild();
57 - ListIterator<YangNodeIdentifier> nodeIdentifierIterator = yangAugment.getTargetNode().listIterator(); 57 + ListIterator<YangAtomicPath> absPathIterator = yangAugment.getTargetNode().listIterator();
58 - YangNodeIdentifier yangNodeIdentifier = nodeIdentifierIterator.next(); 58 + YangAtomicPath absPathIdentifier = absPathIterator.next();
59 - assertThat(yangNodeIdentifier.getPrefix(), is("if")); 59 + assertThat(absPathIdentifier.getNodeIdentifier().getPrefix(), is("if"));
60 - assertThat(yangNodeIdentifier.getName(), is("interfaces")); 60 + assertThat(absPathIdentifier.getNodeIdentifier().getName(), is("interfaces"));
61 61
62 ListIterator<YangLeaf> leafIterator = yangAugment.getListOfLeaf().listIterator(); 62 ListIterator<YangLeaf> leafIterator = yangAugment.getListOfLeaf().listIterator();
63 YangLeaf leafInfo = leafIterator.next(); 63 YangLeaf leafInfo = leafIterator.next();
......
1 +/*
2 + * Copyright 2016-present Open Networking Laboratory
3 + *
4 + * Licensed under the Apache License, Version 2.0 (the "License");
5 + * you may not use this file except in compliance with the License.
6 + * You may obtain a copy of the License at
7 + *
8 + * http://www.apache.org/licenses/LICENSE-2.0
9 + *
10 + * Unless required by applicable law or agreed to in writing, software
11 + * distributed under the License is distributed on an "AS IS" BASIS,
12 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 + * See the License for the specific language governing permissions and
14 + * limitations under the License.
15 + */
16 +
17 +package org.onosproject.yangutils.plugin.manager;
18 +
19 +import java.io.IOException;
20 +
21 +import org.apache.maven.plugin.MojoExecutionException;
22 +import org.junit.Test;
23 +import org.onosproject.yangutils.parser.exceptions.ParserException;
24 +import org.onosproject.yangutils.utils.io.impl.YangFileScanner;
25 +import org.onosproject.yangutils.utils.io.impl.YangPluginConfig;
26 +
27 +import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.deleteDirectory;
28 +
29 +/**
30 + * Unit test case for augment translator.
31 + */
32 +public class AugmentTranslatorTest {
33 +
34 + private final YangUtilManager utilManager = new YangUtilManager();
35 +
36 + /**
37 + * Checks augment translation should not result in any exception.
38 + *
39 + * @throws MojoExecutionException
40 + */
41 + @Test
42 + public void processAugmentTranslator() throws IOException, ParserException, MojoExecutionException {
43 +
44 + String searchDir = "src/test/resources/augmentTranslator";
45 + utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
46 + utilManager.parseYangFileInfoSet();
47 + utilManager.createYangNodeSet();
48 + utilManager.resolveDependenciesUsingLinker();
49 +
50 + YangPluginConfig yangPluginConfig = new YangPluginConfig();
51 + yangPluginConfig.setCodeGenDir("target/augmentTranslator/");
52 + yangPluginConfig.setManagerCodeGenDir("target/augmentTranslator/");
53 + utilManager.translateToJava(utilManager.getYangFileInfoSet(), yangPluginConfig);
54 +
55 + deleteDirectory("target/augmentTranslator/");
56 + }
57 +
58 +}
...@@ -44,6 +44,7 @@ public final class ChoiceCaseTranslatorTest { ...@@ -44,6 +44,7 @@ public final class ChoiceCaseTranslatorTest {
44 44
45 YangPluginConfig yangPluginConfig = new YangPluginConfig(); 45 YangPluginConfig yangPluginConfig = new YangPluginConfig();
46 yangPluginConfig.setCodeGenDir("target/ChoiceCaseTestGenFile/"); 46 yangPluginConfig.setCodeGenDir("target/ChoiceCaseTestGenFile/");
47 + yangPluginConfig.setManagerCodeGenDir("target/ChoiceCaseTestGenFile/");
47 48
48 generateJavaCode(node, yangPluginConfig); 49 generateJavaCode(node, yangPluginConfig);
49 50
......
...@@ -45,6 +45,7 @@ public final class EnumTranslatorTest { ...@@ -45,6 +45,7 @@ public final class EnumTranslatorTest {
45 45
46 YangPluginConfig yangPluginConfig = new YangPluginConfig(); 46 YangPluginConfig yangPluginConfig = new YangPluginConfig();
47 yangPluginConfig.setCodeGenDir("target/EnumTestGenFile/"); 47 yangPluginConfig.setCodeGenDir("target/EnumTestGenFile/");
48 + yangPluginConfig.setManagerCodeGenDir("target/EnumTestGenFile/");
48 49
49 generateJavaCode(node, yangPluginConfig); 50 generateJavaCode(node, yangPluginConfig);
50 51
......
...@@ -19,6 +19,7 @@ package org.onosproject.yangutils.plugin.manager; ...@@ -19,6 +19,7 @@ package org.onosproject.yangutils.plugin.manager;
19 import java.io.IOException; 19 import java.io.IOException;
20 import java.util.Iterator; 20 import java.util.Iterator;
21 import java.util.ListIterator; 21 import java.util.ListIterator;
22 +
22 import org.apache.maven.plugin.MojoExecutionException; 23 import org.apache.maven.plugin.MojoExecutionException;
23 import org.junit.Rule; 24 import org.junit.Rule;
24 import org.junit.Test; 25 import org.junit.Test;
...@@ -171,7 +172,7 @@ public class InterFileLinkingTest { ...@@ -171,7 +172,7 @@ public class InterFileLinkingTest {
171 } 172 }
172 173
173 // Check whether the data model tree returned is of type module. 174 // Check whether the data model tree returned is of type module.
174 - assertThat((selfNode instanceof YangModule), is(true)); 175 + assertThat(selfNode instanceof YangModule, is(true));
175 176
176 // Check whether the node type is set properly to module. 177 // Check whether the node type is set properly to module.
177 assertThat(selfNode.getNodeType(), is(YangNodeType.MODULE_NODE)); 178 assertThat(selfNode.getNodeType(), is(YangNodeType.MODULE_NODE));
...@@ -184,7 +185,7 @@ public class InterFileLinkingTest { ...@@ -184,7 +185,7 @@ public class InterFileLinkingTest {
184 YangLeaf leafInfo; 185 YangLeaf leafInfo;
185 186
186 // Check whether grouping is the sibling of module's child. 187 // Check whether grouping is the sibling of module's child.
187 - assertThat((refNode.getChild() instanceof YangGrouping), is(true)); 188 + assertThat(refNode.getChild() instanceof YangGrouping, is(true));
188 189
189 YangGrouping grouping = (YangGrouping) refNode.getChild(); 190 YangGrouping grouping = (YangGrouping) refNode.getChild();
190 leafIterator = grouping.getListOfLeaf().listIterator(); 191 leafIterator = grouping.getListOfLeaf().listIterator();
...@@ -196,7 +197,7 @@ public class InterFileLinkingTest { ...@@ -196,7 +197,7 @@ public class InterFileLinkingTest {
196 assertThat(leafInfo.getDataType().getDataType(), is(YangDataTypes.STRING)); 197 assertThat(leafInfo.getDataType().getDataType(), is(YangDataTypes.STRING));
197 198
198 // Check whether uses is module's child. 199 // Check whether uses is module's child.
199 - assertThat((yangNode.getChild() instanceof YangUses), is(true)); 200 + assertThat(yangNode.getChild() instanceof YangUses, is(true));
200 YangUses uses = (YangUses) yangNode.getChild(); 201 YangUses uses = (YangUses) yangNode.getChild();
201 202
202 // Check whether uses get resolved. 203 // Check whether uses get resolved.
...@@ -317,7 +318,7 @@ public class InterFileLinkingTest { ...@@ -317,7 +318,7 @@ public class InterFileLinkingTest {
317 } 318 }
318 319
319 // Check whether the data model tree returned is of type module. 320 // Check whether the data model tree returned is of type module.
320 - assertThat((selfNode instanceof YangModule), is(true)); 321 + assertThat(selfNode instanceof YangModule, is(true));
321 322
322 // Check whether the node type is set properly to module. 323 // Check whether the node type is set properly to module.
323 assertThat(selfNode.getNodeType(), is(YangNodeType.MODULE_NODE)); 324 assertThat(selfNode.getNodeType(), is(YangNodeType.MODULE_NODE));
...@@ -330,7 +331,7 @@ public class InterFileLinkingTest { ...@@ -330,7 +331,7 @@ public class InterFileLinkingTest {
330 YangLeaf leafInfo; 331 YangLeaf leafInfo;
331 332
332 // Check whether grouping is the sibling of module's child. 333 // Check whether grouping is the sibling of module's child.
333 - assertThat((refNode.getChild() instanceof YangGrouping), is(true)); 334 + assertThat(refNode.getChild() instanceof YangGrouping, is(true));
334 335
335 YangGrouping grouping = (YangGrouping) refNode.getChild(); 336 YangGrouping grouping = (YangGrouping) refNode.getChild();
336 leafIterator = grouping.getListOfLeaf().listIterator(); 337 leafIterator = grouping.getListOfLeaf().listIterator();
...@@ -342,7 +343,7 @@ public class InterFileLinkingTest { ...@@ -342,7 +343,7 @@ public class InterFileLinkingTest {
342 assertThat(leafInfo.getDataType().getDataType(), is(YangDataTypes.STRING)); 343 assertThat(leafInfo.getDataType().getDataType(), is(YangDataTypes.STRING));
343 344
344 // Check whether uses is module's child. 345 // Check whether uses is module's child.
345 - assertThat((yangNode.getChild() instanceof YangUses), is(true)); 346 + assertThat(yangNode.getChild() instanceof YangUses, is(true));
346 YangUses uses = (YangUses) yangNode.getChild(); 347 YangUses uses = (YangUses) yangNode.getChild();
347 348
348 // Check whether uses get resolved. 349 // Check whether uses get resolved.
...@@ -637,13 +638,13 @@ public class InterFileLinkingTest { ...@@ -637,13 +638,13 @@ public class InterFileLinkingTest {
637 utilManager.parseYangFileInfoSet(); 638 utilManager.parseYangFileInfoSet();
638 utilManager.resolveDependenciesUsingLinker(); 639 utilManager.resolveDependenciesUsingLinker();
639 640
640 - String userDir = System.getProperty("user.dir");
641 YangPluginConfig yangPluginConfig = new YangPluginConfig(); 641 YangPluginConfig yangPluginConfig = new YangPluginConfig();
642 yangPluginConfig.setCodeGenDir("target/interfilewithusesreferringtype/"); 642 yangPluginConfig.setCodeGenDir("target/interfilewithusesreferringtype/");
643 + yangPluginConfig.setManagerCodeGenDir("target/interfilewithusesreferringtype/");
643 644
644 utilManager.translateToJava(utilManager.getYangFileInfoSet(), yangPluginConfig); 645 utilManager.translateToJava(utilManager.getYangFileInfoSet(), yangPluginConfig);
645 646
646 - deleteDirectory(userDir + "/target/interfilewithusesreferringtype/"); 647 + deleteDirectory("target/interfilewithusesreferringtype/");
647 648
648 } 649 }
649 650
...@@ -659,17 +660,16 @@ public class InterFileLinkingTest { ...@@ -659,17 +660,16 @@ public class InterFileLinkingTest {
659 utilManager.parseYangFileInfoSet(); 660 utilManager.parseYangFileInfoSet();
660 utilManager.resolveDependenciesUsingLinker(); 661 utilManager.resolveDependenciesUsingLinker();
661 662
662 - String userDir = System.getProperty("user.dir");
663 YangPluginConfig yangPluginConfig = new YangPluginConfig(); 663 YangPluginConfig yangPluginConfig = new YangPluginConfig();
664 yangPluginConfig.setCodeGenDir("target/file1UsesFile2TypeDefFile3Type/"); 664 yangPluginConfig.setCodeGenDir("target/file1UsesFile2TypeDefFile3Type/");
665 + yangPluginConfig.setManagerCodeGenDir("target/file1UsesFile2TypeDefFile3Type/");
665 666
666 utilManager.translateToJava(utilManager.getYangFileInfoSet(), yangPluginConfig); 667 utilManager.translateToJava(utilManager.getYangFileInfoSet(), yangPluginConfig);
667 668
668 - deleteDirectory(userDir + "/target/file1UsesFile2TypeDefFile3Type/"); 669 + deleteDirectory("target/file1UsesFile2TypeDefFile3Type/");
669 670
670 } 671 }
671 672
672 -
673 /** 673 /**
674 * Checks hierarchical intra with inter file type linking. 674 * Checks hierarchical intra with inter file type linking.
675 */ 675 */
...@@ -682,17 +682,16 @@ public class InterFileLinkingTest { ...@@ -682,17 +682,16 @@ public class InterFileLinkingTest {
682 utilManager.parseYangFileInfoSet(); 682 utilManager.parseYangFileInfoSet();
683 utilManager.resolveDependenciesUsingLinker(); 683 utilManager.resolveDependenciesUsingLinker();
684 684
685 - String userDir = System.getProperty("user.dir");
686 YangPluginConfig yangPluginConfig = new YangPluginConfig(); 685 YangPluginConfig yangPluginConfig = new YangPluginConfig();
687 yangPluginConfig.setCodeGenDir("target/interfileietf/"); 686 yangPluginConfig.setCodeGenDir("target/interfileietf/");
687 + yangPluginConfig.setManagerCodeGenDir("target/interfileietf/");
688 688
689 utilManager.translateToJava(utilManager.getYangFileInfoSet(), yangPluginConfig); 689 utilManager.translateToJava(utilManager.getYangFileInfoSet(), yangPluginConfig);
690 690
691 - deleteDirectory(userDir + "/target/interfileietf/"); 691 + deleteDirectory("target/interfileietf/");
692 692
693 } 693 }
694 694
695 -
696 /** 695 /**
697 * Checks hierarchical intra with inter file type linking. 696 * Checks hierarchical intra with inter file type linking.
698 */ 697 */
...@@ -705,17 +704,16 @@ public class InterFileLinkingTest { ...@@ -705,17 +704,16 @@ public class InterFileLinkingTest {
705 utilManager.parseYangFileInfoSet(); 704 utilManager.parseYangFileInfoSet();
706 utilManager.resolveDependenciesUsingLinker(); 705 utilManager.resolveDependenciesUsingLinker();
707 706
708 - String userDir = System.getProperty("user.dir");
709 YangPluginConfig yangPluginConfig = new YangPluginConfig(); 707 YangPluginConfig yangPluginConfig = new YangPluginConfig();
710 yangPluginConfig.setCodeGenDir("target/usesInContainer/"); 708 yangPluginConfig.setCodeGenDir("target/usesInContainer/");
709 + yangPluginConfig.setManagerCodeGenDir("target/usesInContainer/");
711 710
712 utilManager.translateToJava(utilManager.getYangFileInfoSet(), yangPluginConfig); 711 utilManager.translateToJava(utilManager.getYangFileInfoSet(), yangPluginConfig);
713 712
714 - deleteDirectory(userDir + "/target/usesInContainer/"); 713 + deleteDirectory("target/usesInContainer/");
715 714
716 } 715 }
717 716
718 -
719 /** 717 /**
720 * Checks hierarchical intra with inter file type linking. 718 * Checks hierarchical intra with inter file type linking.
721 */ 719 */
...@@ -728,13 +726,13 @@ public class InterFileLinkingTest { ...@@ -728,13 +726,13 @@ public class InterFileLinkingTest {
728 utilManager.parseYangFileInfoSet(); 726 utilManager.parseYangFileInfoSet();
729 utilManager.resolveDependenciesUsingLinker(); 727 utilManager.resolveDependenciesUsingLinker();
730 728
731 - String userDir = System.getProperty("user.dir");
732 YangPluginConfig yangPluginConfig = new YangPluginConfig(); 729 YangPluginConfig yangPluginConfig = new YangPluginConfig();
733 yangPluginConfig.setCodeGenDir("target/groupingNodeSameAsModule/"); 730 yangPluginConfig.setCodeGenDir("target/groupingNodeSameAsModule/");
731 + yangPluginConfig.setManagerCodeGenDir("target/groupingNodeSameAsModule/");
734 732
735 utilManager.translateToJava(utilManager.getYangFileInfoSet(), yangPluginConfig); 733 utilManager.translateToJava(utilManager.getYangFileInfoSet(), yangPluginConfig);
736 734
737 - deleteDirectory(userDir + "/target/groupingNodeSameAsModule/"); 735 + deleteDirectory("target/groupingNodeSameAsModule/");
738 736
739 } 737 }
740 738
...@@ -846,7 +844,7 @@ public class InterFileLinkingTest { ...@@ -846,7 +844,7 @@ public class InterFileLinkingTest {
846 844
847 thrown.expect(LinkerException.class); 845 thrown.expect(LinkerException.class);
848 thrown.expectMessage( 846 thrown.expectMessage(
849 - "YANG file error: Unable to find base leaf/leaf-list for given leafref"); 847 + "YANG file error: Unable to find base leaf/leaf-list for given leafref networks");
850 String searchDir = "src/test/resources/interfileleafrefwithinvaliddestinationnode"; 848 String searchDir = "src/test/resources/interfileleafrefwithinvaliddestinationnode";
851 utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir)); 849 utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
852 utilManager.parseYangFileInfoSet(); 850 utilManager.parseYangFileInfoSet();
......
...@@ -44,7 +44,7 @@ import static org.hamcrest.core.Is.is; ...@@ -44,7 +44,7 @@ import static org.hamcrest.core.Is.is;
44 import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.DERIVED; 44 import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.DERIVED;
45 import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.STRING; 45 import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.STRING;
46 import static org.onosproject.yangutils.datamodel.utils.ResolvableStatus.RESOLVED; 46 import static org.onosproject.yangutils.datamodel.utils.ResolvableStatus.RESOLVED;
47 -import static org.onosproject.yangutils.plugin.manager.YangPluginUtils.deSerializeDataModel; 47 +import static org.onosproject.yangutils.datamodel.utils.DataModelUtils.deSerializeDataModel;
48 import static org.onosproject.yangutils.plugin.manager.YangPluginUtils.parseJarFile; 48 import static org.onosproject.yangutils.plugin.manager.YangPluginUtils.parseJarFile;
49 import static org.onosproject.yangutils.plugin.manager.YangPluginUtils.serializeDataModel; 49 import static org.onosproject.yangutils.plugin.manager.YangPluginUtils.serializeDataModel;
50 import static org.onosproject.yangutils.utils.UtilConstants.SLASH; 50 import static org.onosproject.yangutils.utils.UtilConstants.SLASH;
...@@ -189,6 +189,7 @@ public class InterJarLinkerTest { ...@@ -189,6 +189,7 @@ public class InterJarLinkerTest {
189 189
190 YangPluginConfig yangPluginConfig = new YangPluginConfig(); 190 YangPluginConfig yangPluginConfig = new YangPluginConfig();
191 yangPluginConfig.setCodeGenDir(TARGET); 191 yangPluginConfig.setCodeGenDir(TARGET);
192 + yangPluginConfig.setManagerCodeGenDir(TARGET);
192 193
193 utilManager.translateToJava(utilManager.getYangFileInfoSet(), yangPluginConfig); 194 utilManager.translateToJava(utilManager.getYangFileInfoSet(), yangPluginConfig);
194 195
...@@ -205,7 +206,7 @@ public class InterJarLinkerTest { ...@@ -205,7 +206,7 @@ public class InterJarLinkerTest {
205 File folder = new File(System.getProperty("user.dir") + SLASH + FLOW_CLASSIFIER_FOLDER); 206 File folder = new File(System.getProperty("user.dir") + SLASH + FLOW_CLASSIFIER_FOLDER);
206 File file = new File(System.getProperty("user.dir") + SLASH + FLOW_CLASSIFIER_MANAGER); 207 File file = new File(System.getProperty("user.dir") + SLASH + FLOW_CLASSIFIER_MANAGER);
207 assertThat(true, is(folder.exists())); 208 assertThat(true, is(folder.exists()));
208 - assertThat(true, is(file.exists())); 209 + assertThat(false, is(file.exists()));
209 } 210 }
210 211
211 /** 212 /**
......
...@@ -16,11 +16,17 @@ ...@@ -16,11 +16,17 @@
16 16
17 package org.onosproject.yangutils.plugin.manager; 17 package org.onosproject.yangutils.plugin.manager;
18 18
19 +import java.io.IOException;
20 +import java.util.Iterator;
21 +import java.util.List;
22 +import java.util.ListIterator;
23 +
19 import org.junit.Rule; 24 import org.junit.Rule;
20 import org.junit.Test; 25 import org.junit.Test;
21 import org.junit.rules.ExpectedException; 26 import org.junit.rules.ExpectedException;
22 import org.onosproject.yangutils.datamodel.YangAtomicPath; 27 import org.onosproject.yangutils.datamodel.YangAtomicPath;
23 import org.onosproject.yangutils.datamodel.YangContainer; 28 import org.onosproject.yangutils.datamodel.YangContainer;
29 +import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes;
24 import org.onosproject.yangutils.datamodel.YangInput; 30 import org.onosproject.yangutils.datamodel.YangInput;
25 import org.onosproject.yangutils.datamodel.YangLeaf; 31 import org.onosproject.yangutils.datamodel.YangLeaf;
26 import org.onosproject.yangutils.datamodel.YangLeafList; 32 import org.onosproject.yangutils.datamodel.YangLeafList;
...@@ -34,16 +40,10 @@ import org.onosproject.yangutils.datamodel.YangPathOperator; ...@@ -34,16 +40,10 @@ import org.onosproject.yangutils.datamodel.YangPathOperator;
34 import org.onosproject.yangutils.datamodel.YangPathPredicate; 40 import org.onosproject.yangutils.datamodel.YangPathPredicate;
35 import org.onosproject.yangutils.datamodel.YangRelativePath; 41 import org.onosproject.yangutils.datamodel.YangRelativePath;
36 import org.onosproject.yangutils.datamodel.utils.ResolvableStatus; 42 import org.onosproject.yangutils.datamodel.utils.ResolvableStatus;
37 -import org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes;
38 import org.onosproject.yangutils.linker.exceptions.LinkerException; 43 import org.onosproject.yangutils.linker.exceptions.LinkerException;
39 import org.onosproject.yangutils.parser.exceptions.ParserException; 44 import org.onosproject.yangutils.parser.exceptions.ParserException;
40 import org.onosproject.yangutils.parser.impl.YangUtilsParserManager; 45 import org.onosproject.yangutils.parser.impl.YangUtilsParserManager;
41 46
42 -import java.io.IOException;
43 -import java.util.Iterator;
44 -import java.util.List;
45 -import java.util.ListIterator;
46 -
47 import static org.hamcrest.MatcherAssert.assertThat; 47 import static org.hamcrest.MatcherAssert.assertThat;
48 import static org.hamcrest.core.Is.is; 48 import static org.hamcrest.core.Is.is;
49 import static org.hamcrest.core.IsNull.nullValue; 49 import static org.hamcrest.core.IsNull.nullValue;
......
1 +/*
2 + * Copyright 2016-present Open Networking Laboratory
3 + *
4 + * Licensed under the Apache License, Version 2.0 (the "License");
5 + * you may not use this file except in compliance with the License.
6 + * You may obtain a copy of the License at
7 + *
8 + * http://www.apache.org/licenses/LICENSE-2.0
9 + *
10 + * Unless required by applicable law or agreed to in writing, software
11 + * distributed under the License is distributed on an "AS IS" BASIS,
12 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 + * See the License for the specific language governing permissions and
14 + * limitations under the License.
15 + */
16 +
17 +package org.onosproject.yangutils.plugin.manager;
18 +
19 +import java.io.File;
20 +import java.io.IOException;
21 +
22 +import org.apache.maven.plugin.MojoExecutionException;
23 +import org.junit.Test;
24 +import org.onosproject.yangutils.parser.exceptions.ParserException;
25 +import org.onosproject.yangutils.utils.io.impl.YangFileScanner;
26 +import org.onosproject.yangutils.utils.io.impl.YangPluginConfig;
27 +
28 +import static org.hamcrest.core.Is.is;
29 +import static org.junit.Assert.assertThat;
30 +import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.deleteDirectory;
31 +
32 +/**
33 + * Unit test case to test code generation for root nodes.
34 + */
35 +public class ManagerCodeGeneratorTest {
36 +
37 + private final YangUtilManager utilManager = new YangUtilManager();
38 +
39 + /**
40 + * Checks manager translation should not result in any exception.
41 + *
42 + * @throws MojoExecutionException
43 + */
44 + @Test
45 + public void processManagerTranslator() throws IOException, ParserException, MojoExecutionException {
46 +
47 + String searchDir = "src/test/resources/manager";
48 + utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
49 + utilManager.parseYangFileInfoSet();
50 + utilManager.createYangNodeSet();
51 + utilManager.resolveDependenciesUsingLinker();
52 +
53 + YangPluginConfig yangPluginConfig = new YangPluginConfig();
54 + yangPluginConfig.setCodeGenDir("target/manager/");
55 + yangPluginConfig.setManagerCodeGenDir("target/manager/");
56 +
57 + utilManager.translateToJava(utilManager.getYangFileInfoSet(), yangPluginConfig);
58 + String file1 = "target/manager/org/onosproject/yang/gen/v1/test5/test/rev20160704/Test5Manager.java";
59 + String file2 = "target/manager/org/onosproject/yang/gen/v1/test5/test/rev20160704/Test6Manager.java";
60 + String file3 = "target/manager/org/onosproject/yang/gen/v1/test5/test/rev20160704/Test7Manager.java";
61 + File manager = new File(file1);
62 + assertThat(false, is(manager.exists()));
63 +
64 + File manager2 = new File(file2);
65 + assertThat(false, is(manager2.exists()));
66 +
67 + File manager3 = new File(file3);
68 + assertThat(true, is(manager3.exists()));
69 +
70 + deleteDirectory("target/manager/");
71 + }
72 +
73 + /**
74 + * Checks manager translation in different package should not result in any exception.
75 + *
76 + * @throws MojoExecutionException
77 + */
78 + @Test
79 + public void processManagerInDifferentPackageTranslator() throws IOException, ParserException,
80 + MojoExecutionException {
81 +
82 + String searchDir = "src/test/resources/manager";
83 + utilManager.createYangFileInfoSet(YangFileScanner.getYangFiles(searchDir));
84 + utilManager.parseYangFileInfoSet();
85 + utilManager.createYangNodeSet();
86 + utilManager.resolveDependenciesUsingLinker();
87 +
88 + YangPluginConfig yangPluginConfig = new YangPluginConfig();
89 + yangPluginConfig.setCodeGenDir("target/manager/");
90 + yangPluginConfig.setManagerCodeGenDir("target/manager1/");
91 +
92 + utilManager.translateToJava(utilManager.getYangFileInfoSet(), yangPluginConfig);
93 + String file3 = "target/manager1/org/onosproject/yang/gen/v1/test5/test/rev20160704/Test7Manager.java";
94 +
95 + File manager3 = new File(file3);
96 + assertThat(true, is(manager3.exists()));
97 +
98 + deleteDirectory("target/manager/");
99 + deleteDirectory("target/manager1/");
100 + }
101 +}
...@@ -38,13 +38,14 @@ public final class NotificationTranslatorTest { ...@@ -38,13 +38,14 @@ public final class NotificationTranslatorTest {
38 * Checks union translation should not result in any exception. 38 * Checks union translation should not result in any exception.
39 */ 39 */
40 @Test 40 @Test
41 - public void processUnionTranslator() 41 + public void processNotificationTranslator()
42 throws IOException, ParserException { 42 throws IOException, ParserException {
43 43
44 YangNode node = manager.getDataModel("src/test/resources/NotificationTest.yang"); 44 YangNode node = manager.getDataModel("src/test/resources/NotificationTest.yang");
45 45
46 YangPluginConfig yangPluginConfig = new YangPluginConfig(); 46 YangPluginConfig yangPluginConfig = new YangPluginConfig();
47 yangPluginConfig.setCodeGenDir("target/NotificationTest/"); 47 yangPluginConfig.setCodeGenDir("target/NotificationTest/");
48 + yangPluginConfig.setManagerCodeGenDir("target/NotificationTest1/");
48 49
49 generateJavaCode(node, yangPluginConfig); 50 generateJavaCode(node, yangPluginConfig);
50 51
......
...@@ -45,6 +45,7 @@ public final class RpcTranslatorTest { ...@@ -45,6 +45,7 @@ public final class RpcTranslatorTest {
45 45
46 YangPluginConfig yangPluginConfig = new YangPluginConfig(); 46 YangPluginConfig yangPluginConfig = new YangPluginConfig();
47 yangPluginConfig.setCodeGenDir("target/RpcTestGenFile/"); 47 yangPluginConfig.setCodeGenDir("target/RpcTestGenFile/");
48 + yangPluginConfig.setManagerCodeGenDir("target/RpcTestGenFile/");
48 49
49 generateJavaCode(node, yangPluginConfig); 50 generateJavaCode(node, yangPluginConfig);
50 51
......
...@@ -45,6 +45,7 @@ public final class UnionTranslatorTest { ...@@ -45,6 +45,7 @@ public final class UnionTranslatorTest {
45 45
46 YangPluginConfig yangPluginConfig = new YangPluginConfig(); 46 YangPluginConfig yangPluginConfig = new YangPluginConfig();
47 yangPluginConfig.setCodeGenDir("target/UnionTestGenFile/"); 47 yangPluginConfig.setCodeGenDir("target/UnionTestGenFile/");
48 + yangPluginConfig.setManagerCodeGenDir("target/UnionTestGenFile/");
48 49
49 generateJavaCode(node, yangPluginConfig); 50 generateJavaCode(node, yangPluginConfig);
50 51
......
1 +/*
2 + * Copyright 2016-present Open Networking Laboratory
3 + *
4 + * Licensed under the Apache License, Version 2.0 (the "License");
5 + * you may not use this file except in compliance with the License.
6 + * You may obtain a copy of the License at
7 + *
8 + * http://www.apache.org/licenses/LICENSE-2.0
9 + *
10 + * Unless required by applicable law or agreed to in writing, software
11 + * distributed under the License is distributed on an "AS IS" BASIS,
12 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 + * See the License for the specific language governing permissions and
14 + * limitations under the License.
15 + */
16 +
1 package org.onosproject.yangutils.plugin.manager; 17 package org.onosproject.yangutils.plugin.manager;
2 18
3 import java.io.File; 19 import java.io.File;
...@@ -11,7 +27,7 @@ import org.sonatype.plexus.build.incremental.DefaultBuildContext; ...@@ -11,7 +27,7 @@ import org.sonatype.plexus.build.incremental.DefaultBuildContext;
11 import static org.onosproject.yangutils.plugin.manager.YangPluginUtils.addToCompilationRoot; 27 import static org.onosproject.yangutils.plugin.manager.YangPluginUtils.addToCompilationRoot;
12 28
13 /** 29 /**
14 - * Created by root1 on 16/6/16. 30 + * Unit test case for YANG plugin utils.
15 */ 31 */
16 public class YangPluginUtilsTest { 32 public class YangPluginUtilsTest {
17 33
......
1 -/*
2 - * Copyright 2016-present Open Networking Laboratory
3 - *
4 - * Licensed under the Apache License, Version 2.0 (the "License");
5 - * you may not use this file except in compliance with the License.
6 - * You may obtain a copy of the License at
7 - *
8 - * http://www.apache.org/licenses/LICENSE-2.0
9 - *
10 - * Unless required by applicable law or agreed to in writing, software
11 - * distributed under the License is distributed on an "AS IS" BASIS,
12 - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 - * See the License for the specific language governing permissions and
14 - * limitations under the License.
15 - */
16 -
17 -package org.onosproject.yangutils.translator.tojava.utils;
18 -
19 -import java.lang.reflect.Constructor;
20 -import java.lang.reflect.InvocationTargetException;
21 -
22 -import org.junit.Test;
23 -
24 -import static org.hamcrest.core.Is.is;
25 -import static org.hamcrest.core.IsNot.not;
26 -import static org.junit.Assert.assertThat;
27 -import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.BUILDER_CLASS_MASK;
28 -import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.BUILDER_INTERFACE_MASK;
29 -import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_TYPEDEF_CLASS;
30 -import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.IMPL_CLASS_MASK;
31 -import static org.onosproject.yangutils.translator.tojava.utils.ClassDefinitionGenerator.generateClassDefinition;
32 -
33 -/**
34 - * Unit tests for class definition generator for generated files.
35 - */
36 -public final class ClassDefinitionGeneratorTest {
37 -
38 - private static final String CLASS_NAME = "TestClass";
39 - private static final String INTERFACE_CLASS_DEF = "public interface TestClass {\n";
40 - private static final String BULDER_INTERFACE_CLASS_DEF = "interface TestClassBuilder {\n\n";
41 - private static final String BUILDER_CLASS_DEF = "public class TestClassBuilder implements "
42 - + "TestClass.TestClassBuilder {\n";
43 - private static final String IMPL_CLASS_DEF = "public final class TestClassImpl implements TestClass {\n";
44 - private static final String TYPE_DEF_CLASS_DEF = "public final class TestClass {\n";
45 -
46 - /**
47 - * Unit test for private constructor.
48 - *
49 - * @throws SecurityException if any security violation is observed
50 - * @throws NoSuchMethodException if when the method is not found
51 - * @throws IllegalArgumentException if there is illegal argument found
52 - * @throws InstantiationException if instantiation is provoked for the private constructor
53 - * @throws IllegalAccessException if instance is provoked or a method is provoked
54 - * @throws InvocationTargetException when an exception occurs by the method or constructor
55 - */
56 - @Test
57 - public void callPrivateConstructors()
58 - throws SecurityException, NoSuchMethodException, IllegalArgumentException,
59 - InstantiationException, IllegalAccessException, InvocationTargetException {
60 -
61 - Class<?>[] classesToConstruct = {ClassDefinitionGenerator.class };
62 - for (Class<?> clazz : classesToConstruct) {
63 - Constructor<?> constructor = clazz.getDeclaredConstructor();
64 - constructor.setAccessible(true);
65 - assertThat(null, not(constructor.newInstance()));
66 - }
67 - }
68 -
69 - /**
70 - * Unit test for builder class definition.
71 - */
72 - @Test
73 - public void generateBuilderClassDefinitionTest() {
74 - String builderClassDefinition = generateClassDefinition(BUILDER_CLASS_MASK, CLASS_NAME);
75 - assertThat(true, is(builderClassDefinition.equals(BUILDER_CLASS_DEF)));
76 - }
77 -
78 - /**
79 - * Unit test for builder interface definition.
80 - */
81 - @Test
82 - public void generateBuilderInterfaceDefinitionTest() {
83 - String builderInterfaceDefinition = generateClassDefinition(BUILDER_INTERFACE_MASK, CLASS_NAME);
84 - assertThat(true, is(builderInterfaceDefinition.equals(BULDER_INTERFACE_CLASS_DEF)));
85 - }
86 -
87 - /**
88 - * Unit test for impl class definition.
89 - */
90 - @Test
91 - public void generateImplDefinitionTest() {
92 - String implDefinition = generateClassDefinition(IMPL_CLASS_MASK, CLASS_NAME);
93 - assertThat(true, is(implDefinition.equals(IMPL_CLASS_DEF)));
94 - }
95 -
96 - /**
97 - * Unit test for interface definition.
98 - */
99 - @Test
100 - public void generateinterfaceDefinitionTest() {
101 - // TODO: need to add this test case.
102 - }
103 -
104 - /**
105 - * Unit test for typedef generated type.
106 - */
107 - @Test
108 - public void generateTypeDefTest() {
109 - String typeDef = generateClassDefinition(GENERATE_TYPEDEF_CLASS, CLASS_NAME);
110 - assertThat(true, is(typeDef.equals(TYPE_DEF_CLASS_DEF)));
111 - }
112 -}
...@@ -30,7 +30,6 @@ import static org.hamcrest.core.IsNot.not; ...@@ -30,7 +30,6 @@ import static org.hamcrest.core.IsNot.not;
30 import static org.junit.Assert.assertThat; 30 import static org.junit.Assert.assertThat;
31 import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.STRING; 31 import static org.onosproject.yangutils.datamodel.utils.builtindatatype.YangDataTypes.STRING;
32 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER; 32 import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_SERVICE_AND_MANAGER;
33 -import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
34 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getBuild; 33 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getBuild;
35 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getBuildForInterface; 34 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getBuildForInterface;
36 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getCheckNotNull; 35 import static org.onosproject.yangutils.translator.tojava.utils.MethodsGenerator.getCheckNotNull;
...@@ -58,7 +57,6 @@ import static org.onosproject.yangutils.utils.UtilConstants.EQUAL; ...@@ -58,7 +57,6 @@ import static org.onosproject.yangutils.utils.UtilConstants.EQUAL;
58 import static org.onosproject.yangutils.utils.UtilConstants.EQUALS_STRING; 57 import static org.onosproject.yangutils.utils.UtilConstants.EQUALS_STRING;
59 import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION; 58 import static org.onosproject.yangutils.utils.UtilConstants.FOUR_SPACE_INDENTATION;
60 import static org.onosproject.yangutils.utils.UtilConstants.GET_METHOD_PREFIX; 59 import static org.onosproject.yangutils.utils.UtilConstants.GET_METHOD_PREFIX;
61 -import static org.onosproject.yangutils.utils.UtilConstants.IMPL;
62 import static org.onosproject.yangutils.utils.UtilConstants.JAVA_LANG; 60 import static org.onosproject.yangutils.utils.UtilConstants.JAVA_LANG;
63 import static org.onosproject.yangutils.utils.UtilConstants.NEW; 61 import static org.onosproject.yangutils.utils.UtilConstants.NEW;
64 import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE; 62 import static org.onosproject.yangutils.utils.UtilConstants.NEW_LINE;
...@@ -83,6 +81,7 @@ import static org.onosproject.yangutils.utils.UtilConstants.THIS; ...@@ -83,6 +81,7 @@ import static org.onosproject.yangutils.utils.UtilConstants.THIS;
83 import static org.onosproject.yangutils.utils.UtilConstants.TWELVE_SPACE_INDENTATION; 81 import static org.onosproject.yangutils.utils.UtilConstants.TWELVE_SPACE_INDENTATION;
84 import static org.onosproject.yangutils.utils.UtilConstants.VALUE; 82 import static org.onosproject.yangutils.utils.UtilConstants.VALUE;
85 import static org.onosproject.yangutils.utils.UtilConstants.VOID; 83 import static org.onosproject.yangutils.utils.UtilConstants.VOID;
84 +import static org.onosproject.yangutils.utils.io.impl.YangIoUtils.getCapitalCase;
86 85
87 /** 86 /**
88 * Unit tests for generated methods from the file type. 87 * Unit tests for generated methods from the file type.
...@@ -107,7 +106,7 @@ public final class MethodsGeneratorTest { ...@@ -107,7 +106,7 @@ public final class MethodsGeneratorTest {
107 throws SecurityException, NoSuchMethodException, IllegalArgumentException, 106 throws SecurityException, NoSuchMethodException, IllegalArgumentException,
108 InstantiationException, IllegalAccessException, InvocationTargetException { 107 InstantiationException, IllegalAccessException, InvocationTargetException {
109 108
110 - Class<?>[] classesToConstruct = {MethodsGenerator.class }; 109 + Class<?>[] classesToConstruct = {MethodsGenerator.class};
111 for (Class<?> clazz : classesToConstruct) { 110 for (Class<?> clazz : classesToConstruct) {
112 Constructor<?> constructor = clazz.getDeclaredConstructor(); 111 Constructor<?> constructor = clazz.getDeclaredConstructor();
113 constructor.setAccessible(true); 112 constructor.setAccessible(true);
...@@ -135,7 +134,7 @@ public final class MethodsGeneratorTest { ...@@ -135,7 +134,7 @@ public final class MethodsGeneratorTest {
135 String method = getBuild(CLASS_NAME); 134 String method = getBuild(CLASS_NAME);
136 assertThat(true, is(method.equals(FOUR_SPACE_INDENTATION + PUBLIC + SPACE + CLASS_NAME + SPACE + BUILD 135 assertThat(true, is(method.equals(FOUR_SPACE_INDENTATION + PUBLIC + SPACE + CLASS_NAME + SPACE + BUILD
137 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION 136 + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SPACE + OPEN_CURLY_BRACKET + NEW_LINE + EIGHT_SPACE_INDENTATION
138 - + RETURN + SPACE + NEW + SPACE + CLASS_NAME + IMPL + OPEN_PARENTHESIS + THIS + CLOSE_PARENTHESIS 137 + + RETURN + SPACE + NEW + SPACE + "Default" + CLASS_NAME + OPEN_PARENTHESIS + THIS + CLOSE_PARENTHESIS
139 + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET))); 138 + SEMI_COLAN + NEW_LINE + FOUR_SPACE_INDENTATION + CLOSE_CURLY_BRACKET)));
140 139
141 } 140 }
...@@ -167,7 +166,7 @@ public final class MethodsGeneratorTest { ...@@ -167,7 +166,7 @@ public final class MethodsGeneratorTest {
167 public void getConstructorTest() { 166 public void getConstructorTest() {
168 JavaAttributeInfo testAttr = getTestAttribute(); 167 JavaAttributeInfo testAttr = getTestAttribute();
169 YangPluginConfig pluginConfig = new YangPluginConfig(); 168 YangPluginConfig pluginConfig = new YangPluginConfig();
170 - String method = getConstructor(CLASS_NAME, testAttr, GENERATE_SERVICE_AND_MANAGER, pluginConfig); 169 + String method = getConstructor(testAttr, GENERATE_SERVICE_AND_MANAGER, pluginConfig);
171 assertThat(true, is(method.contains(THIS + PERIOD + CLASS_NAME + SPACE + EQUAL + SPACE + "builder" + OBJECT 170 assertThat(true, is(method.contains(THIS + PERIOD + CLASS_NAME + SPACE + EQUAL + SPACE + "builder" + OBJECT
172 + PERIOD + GET_METHOD_PREFIX + "Testname" + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN))); 171 + PERIOD + GET_METHOD_PREFIX + "Testname" + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN)));
173 } 172 }
...@@ -179,7 +178,7 @@ public final class MethodsGeneratorTest { ...@@ -179,7 +178,7 @@ public final class MethodsGeneratorTest {
179 public void getConstructorStartTest() { 178 public void getConstructorStartTest() {
180 YangPluginConfig pluginConfig = new YangPluginConfig(); 179 YangPluginConfig pluginConfig = new YangPluginConfig();
181 String method = getConstructorStart(CLASS_NAME, pluginConfig); 180 String method = getConstructorStart(CLASS_NAME, pluginConfig);
182 - assertThat(true, is(method.contains(PUBLIC + SPACE + CLASS_NAME + IMPL + OPEN_PARENTHESIS + CLASS_NAME 181 + assertThat(true, is(method.contains(PUBLIC + SPACE + "Default" + CLASS_NAME + OPEN_PARENTHESIS + CLASS_NAME
183 + BUILDER + SPACE + BUILDER.toLowerCase() + OBJECT + CLOSE_PARENTHESIS + SPACE 182 + BUILDER + SPACE + BUILDER.toLowerCase() + OBJECT + CLOSE_PARENTHESIS + SPACE
184 + OPEN_CURLY_BRACKET + NEW_LINE))); 183 + OPEN_CURLY_BRACKET + NEW_LINE)));
185 } 184 }
......
1 +module test {
2 + namespace "test:test";
3 + prefix test ;
4 +
5 +
6 + import test1{
7 + prefix test1;
8 + }
9 +
10 + import test2{
11 + prefix test2;
12 + }
13 +
14 + include acme-types;
15 +
16 + organization "";
17 + contact "";
18 +
19 + description
20 + "Defines basic service types for L3VPN service.";
21 +
22 + revision "2015-12-16" {
23 + reference "";
24 + }
25 +
26 + container cont1 {
27 + container cont2 {
28 + leaf leaf {
29 + type int32;
30 + }
31 + }
32 + }
33 +
34 +
35 + augment /cont3 {
36 + leaf leaf1 {
37 + type int32;
38 + }
39 + }
40 +
41 + augment /cont1/cont2 {
42 + leaf leaf2 {
43 + type int32;
44 + }
45 + }
46 +
47 + augment /test1:cont1/test1:cont2 {
48 + leaf a {
49 + type int32;
50 + }
51 + }
52 +
53 + augment /test1:cont1/test1:cont2/test1:cont1s/test1:cont1s {
54 + leaf a {
55 + type int32;
56 + }
57 + }
58 +
59 + augment /test1:cont1/test1:cont2/test1:cont1s/test1:cont1s/test2:aa {
60 + leaf a {
61 + type int32;
62 + }
63 + container aa {
64 + }
65 + }
66 +
67 +}
68 +
1 +module test1 {
2 + namespace "test1:test1";
3 + prefix test1 ;
4 +
5 + organization "";
6 + contact "";
7 +
8 + description
9 + "Defines basic service types for L3VPN service.";
10 +
11 + revision "2015-12-16" {
12 + reference "";
13 + }
14 +
15 + container cont1 {
16 + container cont2 {
17 + }
18 + }
19 +
20 + augment /cont1/cont2 {
21 + leaf leaf4 {
22 + type int32;
23 + }
24 + container cont1s {
25 + container cont1s {
26 + }
27 + }
28 + }
29 +}
30 +
1 +module test2 {
2 + namespace "test2:test2";
3 + prefix test2 ;
4 +
5 + import test1{
6 + prefix test1;
7 + }
8 + organization "";
9 + contact "";
10 +
11 + description
12 + "Defines basic service types for L3VPN service.";
13 +
14 + revision "2015-12-16" {
15 + reference "";
16 + }
17 +
18 +
19 + augment /test1:cont1/test1:cont2/test1:cont1s/test1:cont1s {
20 + leaf leaf5 {
21 + type int32;
22 + }
23 + container aa {
24 + }
25 + }
26 +}
1 +submodule acme-types {
2 +
3 + belongs-to "test" {
4 + prefix "test";
5 + }
6 + import test1{
7 + prefix test1;
8 + }
9 + organization "";
10 + contact "";
11 +
12 + description
13 + "Defines basic service types for L3VPN service.";
14 +
15 + revision "2015-12-16" {
16 + reference "";
17 + }
18 +
19 + container cont3 {
20 + }
21 +}
...@@ -1723,8 +1723,9 @@ ...@@ -1723,8 +1723,9 @@
1723 uses tet:te-link-state-derived; 1723 uses tet:te-link-state-derived;
1724 } 1724 }
1725 1725
1726 + /*
1726 augment "/te-link-event/te-link-attributes/underlay" { 1727 augment "/te-link-event/te-link-attributes/underlay" {
1727 description "Add state attributes to te-link underlay."; 1728 description "Add state attributes to te-link underlay.";
1728 uses te-link-state-underlay-attributes; 1729 uses te-link-state-underlay-attributes;
1729 - } 1730 + } */
1730 } 1731 }
......
1 +module test5 {
2 + namespace "test5:test";
3 + prefix test ;
4 +
5 + revision "2016-07-04" {
6 + description "Initial revision.";
7 + }
8 + typedef abc {
9 + type int32;
10 + }
11 +
12 +}
1 +submodule test6 {
2 +
3 + belongs-to "test5" {
4 + prefix "test";
5 + }
6 +
7 + revision "2016-07-04" {
8 + description "Initial revision.";
9 + }
10 + grouping abc {
11 + leaf leaf1 {
12 + type int32;
13 + }
14 + }
15 +}
1 +module test7 {
2 + namespace "test5:test";
3 + prefix test ;
4 +
5 + revision "2016-07-04" {
6 + description "Initial revision.";
7 + }
8 +
9 + leaf abc {
10 + type int32;
11 + }
12 +
13 +}
1 +module test {
2 + namespace "xpath:inter:single";
3 + prefix test ;
4 +
5 + import test1{
6 + prefix test1;
7 + }
8 +
9 + organization "";
10 + contact "";
11 +
12 + description
13 + "Defines basic service types for L3VPN service.";
14 +
15 + revision "2015-12-16" {
16 + reference "";
17 + }
18 +
19 + augment /test1:cont1/test1:cont2 {
20 + leaf a {
21 + type int32;
22 + }
23 + }
24 +}
25 +
1 +module test1 {
2 + namespace "xpath:inter:single";
3 + prefix test1 ;
4 +
5 + organization "";
6 + contact "";
7 +
8 + description
9 + "Defines basic service types for L3VPN service.";
10 +
11 + revision "2015-12-16" {
12 + reference "";
13 + }
14 +
15 + container cont1 {
16 + leaf leaf1 {
17 + type int32;
18 + }
19 + container cont2 {
20 + leaf leaf1 {
21 + type int32;
22 + }
23 + }
24 + }
25 +}
26 +
1 +module test {
2 + namespace "xpath:inter:single";
3 + prefix test ;
4 +
5 + import test1{
6 + prefix test1;
7 + }
8 +
9 + organization "";
10 + contact "";
11 +
12 + description
13 + "Defines basic service types for L3VPN service.";
14 +
15 + revision "2015-12-16" {
16 + reference "";
17 + }
18 +
19 + augment /test1:cont1/test1:cont2/test1:cont2 {
20 + leaf a {
21 + type int32;
22 + }
23 + }
24 +}
25 +
1 +module test1 {
2 + namespace "xpath:inter:single";
3 + prefix test1 ;
4 +
5 + organization "";
6 + contact "";
7 +
8 + description
9 + "Defines basic service types for L3VPN service.";
10 +
11 + revision "2015-12-16" {
12 + reference "";
13 + }
14 +
15 + container cont1 {
16 + leaf leaf1 {
17 + type int32;
18 + }
19 + }
20 +
21 + augment /cont1 {
22 + container cont2 {
23 + leaf leaf1 {
24 + type int32;
25 + }
26 + container cont2 {
27 + leaf leaf1 {
28 + type int32;
29 + }
30 + }
31 + }
32 + }
33 +}
34 +
1 +module test {
2 + namespace "xpath:inter:single";
3 + prefix test ;
4 +
5 + import test1{
6 + prefix test1;
7 + }
8 +
9 + import test2{
10 + prefix test2;
11 + }
12 +
13 + organization "";
14 + contact "";
15 +
16 + description
17 + "Defines basic service types for L3VPN service.";
18 +
19 + revision "2015-12-16" {
20 + reference "";
21 + }
22 +
23 + augment /test2:cont1/test2:cont2/test1:cont2 {
24 + leaf a {
25 + type int32;
26 + }
27 + }
28 +}
29 +
1 +module test1 {
2 + namespace "xpath:inter:single";
3 + prefix test1 ;
4 +
5 + import test2{
6 + prefix test2;
7 + }
8 +
9 + organization "";
10 + contact "";
11 +
12 + description
13 + "Defines basic service types for L3VPN service.";
14 +
15 + revision "2015-12-16" {
16 + reference "";
17 + }
18 +
19 +
20 + container cont1 {
21 + leaf leaf1 {
22 + type int32;
23 + }
24 + }
25 +
26 + augment /cont1 {
27 + container cont2 {
28 + leaf leaf1 {
29 + type int32;
30 + }
31 + container cont2 {
32 + leaf leaf1 {
33 + type int32;
34 + }
35 + }
36 + }
37 + }
38 +
39 + augment /test2:cont1/test2:cont2 {
40 + leaf a {
41 + type int32;
42 + }
43 +
44 + container cont2 {
45 + leaf leaf1 {
46 + type int32;
47 + }
48 + }
49 + }
50 +}
51 +
1 +module test2 {
2 + namespace "xpath:inter:multi";
3 + prefix test2 ;
4 +
5 + organization "";
6 + contact "";
7 +
8 + description
9 + "Defines basic service types for L3VPN service.";
10 +
11 + revision "2015-12-16" {
12 + reference "";
13 + }
14 +
15 + container cont1 {
16 + leaf leaf1 {
17 + type int32;
18 + }
19 + container cont2 {
20 + leaf leaf1 {
21 + type int32;
22 + }
23 + }
24 + }
25 +}
26 +
1 +module test {
2 + namespace "xpath:inter:single";
3 + prefix test ;
4 +
5 + import test1{
6 + prefix test1;
7 + }
8 +
9 + import test2{
10 + prefix test2;
11 + }
12 +
13 + organization "";
14 + contact "";
15 +
16 + description
17 + "Defines basic service types for L3VPN service.";
18 +
19 + revision "2015-12-16" {
20 + reference "";
21 + }
22 +
23 + augment /test2:cont1/test2:cont2/test2:cont3/test1:cont2 {
24 + leaf a {
25 + type int32;
26 + }
27 + }
28 +}
29 +
1 +module test1 {
2 + namespace "xpath:inter:single";
3 + prefix test1 ;
4 +
5 + import test2{
6 + prefix test2;
7 + }
8 +
9 + organization "";
10 + contact "";
11 +
12 + description
13 + "Defines basic service types for L3VPN service.";
14 +
15 + revision "2015-12-16" {
16 + reference "";
17 + }
18 +
19 +
20 + container cont1 {
21 + leaf leaf1 {
22 + type int32;
23 + }
24 + }
25 +
26 + augment /cont1 {
27 + container cont2 {
28 + leaf leaf1 {
29 + type int32;
30 + }
31 + container cont2 {
32 + leaf leaf1 {
33 + type int32;
34 + }
35 + }
36 + }
37 + }
38 +
39 + augment /test2:cont1/test2:cont2/test2:cont3 {
40 + leaf a {
41 + type int32;
42 + }
43 +
44 + container cont2 {
45 + leaf leaf1 {
46 + type int32;
47 + }
48 + }
49 + }
50 +}
51 +
1 +module test2 {
2 + namespace "xpath:inter:multi";
3 + prefix test2 ;
4 +
5 + organization "";
6 + contact "";
7 +
8 + description
9 + "Defines basic service types for L3VPN service.";
10 +
11 + revision "2015-12-16" {
12 + reference "";
13 + }
14 +
15 + container cont1 {
16 + leaf leaf1 {
17 + type int32;
18 + }
19 + container cont2 {
20 + leaf leaf1 {
21 + type int32;
22 + }
23 + }
24 + }
25 +
26 + augment /cont1/cont2 {
27 + container cont3 {
28 + leaf a {
29 + type string;
30 + }
31 + }
32 + }
33 +}
34 +
1 +module test {
2 + namespace "xpath:intra:single";
3 + prefix test ;
4 +
5 + import test2 {
6 + prefix test2;
7 + }
8 +
9 + include test1;
10 +
11 + organization "";
12 + contact "";
13 +
14 + description
15 + "Defines basic service types for L3VPN service.";
16 +
17 + revision "2015-12-16" {
18 + reference "";
19 + }
20 +
21 + augment /test2:cont1/test2:cont2/cont2 {
22 + leaf a {
23 + type int32;
24 + }
25 + }
26 +
27 + augment /cont2/cont3/cont4 {
28 + leaf a {
29 + type int32;
30 + }
31 + }
32 +}
33 +
1 +submodule test1 {
2 +
3 + belongs-to test {
4 + prefix test;
5 + }
6 +
7 + import test2 {
8 + prefix test2;
9 + }
10 + organization "";
11 + contact "";
12 +
13 + description
14 + "Defines basic service types for L3VPN service.";
15 +
16 + revision "2015-12-16" {
17 + reference "";
18 + }
19 +
20 + container cont2 {
21 + leaf leaf1 {
22 + type int32;
23 + }
24 + container cont3 {
25 + leaf leaf1 {
26 + type int32;
27 + }
28 + }
29 + }
30 +
31 + augment /cont2/cont3 {
32 + container cont4 {
33 + leaf leaf1 {
34 + type int32;
35 + }
36 + }
37 + }
38 +
39 + augment /test2:cont1/test2:cont2 {
40 + leaf a {
41 + type int32;
42 + }
43 + container cont2 {
44 + leaf leaf1 {
45 + type int32;
46 + }
47 + }
48 + }
49 +}
50 +
1 +module test2 {
2 + namespace "xpath:inter:multi";
3 + prefix test2 ;
4 +
5 + organization "";
6 + contact "";
7 +
8 + description
9 + "Defines basic service types for L3VPN service.";
10 +
11 + revision "2015-12-16" {
12 + reference "";
13 + }
14 +
15 + container cont1 {
16 + leaf leaf1 {
17 + type int32;
18 + }
19 + container cont2 {
20 + leaf leaf1 {
21 + type int32;
22 + }
23 + }
24 + }
25 +}
26 +
1 +module test {
2 + namespace "xpath:intra:single";
3 + prefix test ;
4 +
5 + import test2 {
6 + prefix test2;
7 + }
8 +
9 + organization "";
10 + contact "";
11 +
12 + description
13 + "Defines basic service types for L3VPN service.";
14 +
15 + revision "2015-12-16" {
16 + reference "";
17 + }
18 +
19 + container cont2 {
20 + leaf a {
21 + type int32;
22 + }
23 + uses test2:group1;
24 + }
25 +
26 + augment /cont2/group1/cont1/cont2 {
27 + leaf a {
28 + type int32;
29 + }
30 + }
31 +}
32 +
1 +module test2 {
2 + namespace "xpath:inter:multi";
3 + prefix test2 ;
4 +
5 + organization "";
6 + contact "";
7 +
8 + description
9 + "Defines basic service types for L3VPN service.";
10 +
11 + revision "2015-12-16" {
12 + reference "";
13 + }
14 +
15 + grouping group1 {
16 + container cont1 {
17 + leaf leaf1 {
18 + type int32;
19 + }
20 + container cont2 {
21 + leaf leaf1 {
22 + type int32;
23 + }
24 + }
25 + }
26 + }
27 +}
28 +
1 +module test {
2 + namespace "xpath:inter:single";
3 + prefix test ;
4 +
5 + import test1{
6 + prefix test1;
7 + }
8 +
9 + organization "";
10 + contact "";
11 +
12 + description
13 + "Defines basic service types for L3VPN service.";
14 +
15 + revision "2015-12-16" {
16 + reference "";
17 + }
18 +
19 + augment /test1:cont1 {
20 + leaf a {
21 + type int32;
22 + }
23 + }
24 +}
25 +
1 +module test1 {
2 + namespace "xpath:inter:single";
3 + prefix test1 ;
4 +
5 + organization "";
6 + contact "";
7 +
8 + description
9 + "Defines basic service types for L3VPN service.";
10 +
11 + revision "2015-12-16" {
12 + reference "";
13 + }
14 +
15 + container cont1 {
16 + leaf leaf1 {
17 + type int32;
18 + }
19 + }
20 +}
21 +
1 +module test {
2 + namespace "xpath:inter:single";
3 + prefix test ;
4 +
5 + import test1{
6 + prefix test1;
7 + }
8 +
9 + organization "";
10 + contact "";
11 +
12 + description
13 + "Defines basic service types for L3VPN service.";
14 +
15 + revision "2015-12-16" {
16 + reference "";
17 + }
18 +
19 + augment /test1:cont1/test1:cont2 {
20 + leaf a {
21 + type int32;
22 + }
23 + }
24 +}
25 +
1 +module test1 {
2 + namespace "xpath:inter:single";
3 + prefix test1 ;
4 +
5 + organization "";
6 + contact "";
7 +
8 + description
9 + "Defines basic service types for L3VPN service.";
10 +
11 + revision "2015-12-16" {
12 + reference "";
13 + }
14 +
15 + container cont1 {
16 + leaf leaf1 {
17 + type int32;
18 + }
19 + }
20 +
21 + augment /cont1 {
22 + container cont2 {
23 + leaf leaf1 {
24 + type int32;
25 + }
26 + }
27 + }
28 +}
29 +
1 +module test {
2 + namespace "xpath:intra:single";
3 + prefix test ;
4 +
5 + import test2 {
6 + prefix test2;
7 + }
8 +
9 + include test1;
10 +
11 + organization "";
12 + contact "";
13 +
14 + description
15 + "Defines basic service types for L3VPN service.";
16 +
17 + revision "2015-12-16" {
18 + reference "";
19 + }
20 +
21 + augment /test2:cont1/test2:cont2/cont2 {
22 + leaf a {
23 + type int32;
24 + }
25 + }
26 +}
27 +
1 +submodule test1 {
2 +
3 + belongs-to test {
4 + prefix test;
5 + }
6 +
7 + import test2 {
8 + prefix test2;
9 + }
10 + organization "";
11 + contact "";
12 +
13 + description
14 + "Defines basic service types for L3VPN service.";
15 +
16 + revision "2015-12-16" {
17 + reference "";
18 + }
19 +
20 + augment /test2:cont1/test2:cont2 {
21 + leaf a {
22 + type int32;
23 + }
24 + container cont2 {
25 + leaf leaf1 {
26 + type int32;
27 + }
28 + }
29 + }
30 +}
31 +
1 +module test2 {
2 + namespace "xpath:inter:multi";
3 + prefix test2 ;
4 +
5 + organization "";
6 + contact "";
7 +
8 + description
9 + "Defines basic service types for L3VPN service.";
10 +
11 + revision "2015-12-16" {
12 + reference "";
13 + }
14 +
15 + container cont1 {
16 + leaf leaf1 {
17 + type int32;
18 + }
19 + container cont2 {
20 + leaf leaf1 {
21 + type int32;
22 + }
23 + }
24 + }
25 +}
26 +
1 +module test {
2 + namespace "xpath:intra:single";
3 + prefix test ;
4 +
5 + import test2 {
6 + prefix test2;
7 + }
8 +
9 + include test1;
10 +
11 + organization "";
12 + contact "";
13 +
14 + description
15 + "Defines basic service types for L3VPN service.";
16 +
17 + revision "2015-12-16" {
18 + reference "";
19 + }
20 +
21 + augment /test2:cont1/test2:cont2/cont2 {
22 + leaf a {
23 + type int32;
24 + }
25 + uses group1;
26 + }
27 +
28 + augment /test2:cont1/test2:cont2/cont2/group1/cont1/cont2 {
29 + leaf a {
30 + type int32;
31 + }
32 + }
33 +}
34 +
1 +submodule test1 {
2 +
3 + belongs-to test {
4 + prefix test;
5 + }
6 +
7 + import test2 {
8 + prefix test2;
9 + }
10 + organization "";
11 + contact "";
12 +
13 + description
14 + "Defines basic service types for L3VPN service.";
15 +
16 + revision "2015-12-16" {
17 + reference "";
18 + }
19 +
20 +
21 + grouping group1 {
22 + container cont1 {
23 + container cont2 {
24 + leaf a {
25 + type string;
26 + }
27 + }
28 + }
29 + }
30 +
31 + augment /test2:cont1/test2:cont2 {
32 + leaf a {
33 + type int32;
34 + }
35 + container cont2 {
36 + leaf leaf1 {
37 + type int32;
38 + }
39 + }
40 + }
41 +}
42 +
1 +module test2 {
2 + namespace "xpath:inter:multi";
3 + prefix test2 ;
4 +
5 + organization "";
6 + contact "";
7 +
8 + description
9 + "Defines basic service types for L3VPN service.";
10 +
11 + revision "2015-12-16" {
12 + reference "";
13 + }
14 +
15 + container cont1 {
16 + leaf leaf1 {
17 + type int32;
18 + }
19 + container cont2 {
20 + leaf leaf1 {
21 + type int32;
22 + }
23 + }
24 + }
25 +}
26 +