Committed by
Gerrit Code Review
[4266],[4267],[4268] Defect fix of special characters support for attributes
Change-Id: Ibf79749eb667627a592fcc7325021a32e73e11b4
Showing
31 changed files
with
477 additions
and
97 deletions
... | @@ -32,6 +32,8 @@ import org.onosproject.yangutils.datamodel.exceptions.DataModelException; | ... | @@ -32,6 +32,8 @@ import org.onosproject.yangutils.datamodel.exceptions.DataModelException; |
32 | import org.onosproject.yangutils.parser.YangUtilsParser; | 32 | import org.onosproject.yangutils.parser.YangUtilsParser; |
33 | import org.onosproject.yangutils.parser.exceptions.ParserException; | 33 | import org.onosproject.yangutils.parser.exceptions.ParserException; |
34 | import org.onosproject.yangutils.parser.impl.YangUtilsParserManager; | 34 | import org.onosproject.yangutils.parser.impl.YangUtilsParserManager; |
35 | +import org.onosproject.yangutils.translator.tojava.utils.YangPluginConfig; | ||
36 | +import org.onosproject.yangutils.translator.tojava.utils.YangToJavaNamingConflictUtil; | ||
35 | import org.onosproject.yangutils.utils.io.impl.YangFileScanner; | 37 | import org.onosproject.yangutils.utils.io.impl.YangFileScanner; |
36 | import org.sonatype.plexus.build.incremental.BuildContext; | 38 | import org.sonatype.plexus.build.incremental.BuildContext; |
37 | 39 | ||
... | @@ -87,6 +89,24 @@ public class YangUtilManager extends AbstractMojo { | ... | @@ -87,6 +89,24 @@ public class YangUtilManager extends AbstractMojo { |
87 | private MavenProject project; | 89 | private MavenProject project; |
88 | 90 | ||
89 | /** | 91 | /** |
92 | + * Replacement required for period special character in the identifier. | ||
93 | + */ | ||
94 | + @Parameter(property = "replacementForPeriod") | ||
95 | + private String replacementForPeriod; | ||
96 | + | ||
97 | + /** | ||
98 | + * Replacement required for underscore special character in the identifier. | ||
99 | + */ | ||
100 | + @Parameter(property = "replacementForUnderscore") | ||
101 | + private String replacementForUnderscore; | ||
102 | + | ||
103 | + /** | ||
104 | + * Replacement required for hyphen special character in the identifier. | ||
105 | + */ | ||
106 | + @Parameter(property = "replacementForHyphen") | ||
107 | + private String replacementForHyphen; | ||
108 | + | ||
109 | + /** | ||
90 | * Build context. | 110 | * Build context. |
91 | */ | 111 | */ |
92 | @Component | 112 | @Component |
... | @@ -112,15 +132,21 @@ public class YangUtilManager extends AbstractMojo { | ... | @@ -112,15 +132,21 @@ public class YangUtilManager extends AbstractMojo { |
112 | 132 | ||
113 | searchDir = getDirectory(baseDir, yangFilesDir); | 133 | searchDir = getDirectory(baseDir, yangFilesDir); |
114 | codeGenDir = getDirectory(baseDir, genFilesDir) + SLASH; | 134 | codeGenDir = getDirectory(baseDir, genFilesDir) + SLASH; |
115 | - | 135 | + YangToJavaNamingConflictUtil conflictResolver = new YangToJavaNamingConflictUtil(); |
136 | + conflictResolver.setReplacementForPeriod(replacementForPeriod); | ||
137 | + conflictResolver.setReplacementForHyphen(replacementForHyphen); | ||
138 | + conflictResolver.setReplacementForUnderscore(replacementForHyphen); | ||
116 | List<String> yangFiles = YangFileScanner.getYangFiles(searchDir); | 139 | List<String> yangFiles = YangFileScanner.getYangFiles(searchDir); |
140 | + YangPluginConfig yangPlugin = new YangPluginConfig(); | ||
141 | + yangPlugin.setCodeGenDir(codeGenDir); | ||
142 | + yangPlugin.setConflictResolver(conflictResolver); | ||
117 | Iterator<String> yangFileIterator = yangFiles.iterator(); | 143 | Iterator<String> yangFileIterator = yangFiles.iterator(); |
118 | while (yangFileIterator.hasNext()) { | 144 | while (yangFileIterator.hasNext()) { |
119 | String yangFile = yangFileIterator.next(); | 145 | String yangFile = yangFileIterator.next(); |
120 | try { | 146 | try { |
121 | YangNode yangNode = yangUtilsParser.getDataModel(yangFile); | 147 | YangNode yangNode = yangUtilsParser.getDataModel(yangFile); |
122 | setRootNode(yangNode); | 148 | setRootNode(yangNode); |
123 | - generateJavaCode(yangNode, codeGenDir); | 149 | + generateJavaCode(yangNode, yangPlugin); |
124 | } catch (ParserException e) { | 150 | } catch (ParserException e) { |
125 | String logInfo = "Error in file: " + e.getFileName(); | 151 | String logInfo = "Error in file: " + e.getFileName(); |
126 | if (e.getLineNumber() != 0) { | 152 | if (e.getLineNumber() != 0) { |
... | @@ -181,7 +207,6 @@ public class YangUtilManager extends AbstractMojo { | ... | @@ -181,7 +207,6 @@ public class YangUtilManager extends AbstractMojo { |
181 | * | 207 | * |
182 | * @param rootNode current root YANG node of data-model tree | 208 | * @param rootNode current root YANG node of data-model tree |
183 | */ | 209 | */ |
184 | - | ||
185 | public void setRootNode(YangNode rootNode) { | 210 | public void setRootNode(YangNode rootNode) { |
186 | this.rootNode = rootNode; | 211 | this.rootNode = rootNode; |
187 | } | 212 | } | ... | ... |
... | @@ -276,7 +276,7 @@ public final class JavaAttributeInfo { | ... | @@ -276,7 +276,7 @@ public final class JavaAttributeInfo { |
276 | JavaAttributeInfo newAttr = new JavaAttributeInfo(); | 276 | JavaAttributeInfo newAttr = new JavaAttributeInfo(); |
277 | newAttr.setImportInfo(importInfo); | 277 | newAttr.setImportInfo(importInfo); |
278 | newAttr.setIsQualifiedAccess(getIsQualifiedAccessOrAddToImportList(curNode, importInfo)); | 278 | newAttr.setIsQualifiedAccess(getIsQualifiedAccessOrAddToImportList(curNode, importInfo)); |
279 | - newAttr.setAttributeName(getCamelCase(attributeName)); | 279 | + newAttr.setAttributeName(getCamelCase(attributeName, null)); |
280 | newAttr.setListAttr(isListAttribute); | 280 | newAttr.setListAttr(isListAttribute); |
281 | newAttr.setImportInfo(importInfo); | 281 | newAttr.setImportInfo(importInfo); |
282 | newAttr.setAttributeType(attributeType); | 282 | newAttr.setAttributeType(attributeType); | ... | ... |
... | @@ -18,6 +18,8 @@ package org.onosproject.yangutils.translator.tojava; | ... | @@ -18,6 +18,8 @@ package org.onosproject.yangutils.translator.tojava; |
18 | 18 | ||
19 | import java.io.IOException; | 19 | import java.io.IOException; |
20 | 20 | ||
21 | +import org.onosproject.yangutils.translator.tojava.utils.YangPluginConfig; | ||
22 | + | ||
21 | /** | 23 | /** |
22 | * Abstraction of an entity which provides Code generator functionalities. | 24 | * Abstraction of an entity which provides Code generator functionalities. |
23 | */ | 25 | */ |
... | @@ -26,10 +28,10 @@ public interface JavaCodeGenerator { | ... | @@ -26,10 +28,10 @@ public interface JavaCodeGenerator { |
26 | /** | 28 | /** |
27 | * Traverse the schema of application and generate corresponding code. | 29 | * Traverse the schema of application and generate corresponding code. |
28 | * | 30 | * |
29 | - * @param codeGenDir code generation directory | 31 | + * @param yangPlugin YANG plugin config |
30 | * @throws IOException when fails to translate the data model tree | 32 | * @throws IOException when fails to translate the data model tree |
31 | */ | 33 | */ |
32 | - void generateCodeEntry(String codeGenDir) throws IOException; | 34 | + void generateCodeEntry(YangPluginConfig yangPlugin) throws IOException; |
33 | 35 | ||
34 | /** | 36 | /** |
35 | * Traverse the schema of application and generate corresponding code. | 37 | * Traverse the schema of application and generate corresponding code. | ... | ... |
utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/JavaCodeGeneratorUtil.java
... | @@ -21,6 +21,7 @@ import java.io.IOException; | ... | @@ -21,6 +21,7 @@ import java.io.IOException; |
21 | import org.onosproject.yangutils.datamodel.YangNode; | 21 | import org.onosproject.yangutils.datamodel.YangNode; |
22 | import org.onosproject.yangutils.datamodel.exceptions.DataModelException; | 22 | import org.onosproject.yangutils.datamodel.exceptions.DataModelException; |
23 | import org.onosproject.yangutils.translator.exception.TranslatorException; | 23 | import org.onosproject.yangutils.translator.exception.TranslatorException; |
24 | +import org.onosproject.yangutils.translator.tojava.utils.YangPluginConfig; | ||
24 | 25 | ||
25 | import static org.onosproject.yangutils.translator.tojava.TraversalType.CHILD; | 26 | import static org.onosproject.yangutils.translator.tojava.TraversalType.CHILD; |
26 | import static org.onosproject.yangutils.translator.tojava.TraversalType.PARENT; | 27 | import static org.onosproject.yangutils.translator.tojava.TraversalType.PARENT; |
... | @@ -65,11 +66,11 @@ public final class JavaCodeGeneratorUtil { | ... | @@ -65,11 +66,11 @@ public final class JavaCodeGeneratorUtil { |
65 | * Generates Java code files corresponding to the YANG schema. | 66 | * Generates Java code files corresponding to the YANG schema. |
66 | * | 67 | * |
67 | * @param rootNode root node of the data model tree | 68 | * @param rootNode root node of the data model tree |
68 | - * @param codeGenDir code generation directory | 69 | + * @param yangPlugin YANG plugin config |
69 | * @throws IOException when fails to generate java code file the current | 70 | * @throws IOException when fails to generate java code file the current |
70 | * node | 71 | * node |
71 | */ | 72 | */ |
72 | - public static void generateJavaCode(YangNode rootNode, String codeGenDir) throws IOException { | 73 | + public static void generateJavaCode(YangNode rootNode, YangPluginConfig yangPlugin) throws IOException { |
73 | 74 | ||
74 | YangNode curNode = rootNode; | 75 | YangNode curNode = rootNode; |
75 | TraversalType curTraversal = ROOT; | 76 | TraversalType curTraversal = ROOT; |
... | @@ -77,7 +78,7 @@ public final class JavaCodeGeneratorUtil { | ... | @@ -77,7 +78,7 @@ public final class JavaCodeGeneratorUtil { |
77 | while (!(curNode == null)) { | 78 | while (!(curNode == null)) { |
78 | if (curTraversal != PARENT) { | 79 | if (curTraversal != PARENT) { |
79 | setCurNode(curNode); | 80 | setCurNode(curNode); |
80 | - generateCodeEntry(curNode, codeGenDir); | 81 | + generateCodeEntry(curNode, yangPlugin); |
81 | } | 82 | } |
82 | if (curTraversal != PARENT && curNode.getChild() != null) { | 83 | if (curTraversal != PARENT && curNode.getChild() != null) { |
83 | curTraversal = CHILD; | 84 | curTraversal = CHILD; |
... | @@ -99,14 +100,13 @@ public final class JavaCodeGeneratorUtil { | ... | @@ -99,14 +100,13 @@ public final class JavaCodeGeneratorUtil { |
99 | * | 100 | * |
100 | * @param curNode current data model node for which the code needs to be | 101 | * @param curNode current data model node for which the code needs to be |
101 | * generated | 102 | * generated |
102 | - * @param codeGenDir the base directory where the code needs to be generated | 103 | + * @param yangPlugin YANG plugin config |
103 | * @throws IOException IO operation exception | 104 | * @throws IOException IO operation exception |
104 | */ | 105 | */ |
105 | - private static void generateCodeEntry(YangNode curNode, | 106 | + private static void generateCodeEntry(YangNode curNode, YangPluginConfig yangPlugin) throws IOException { |
106 | - String codeGenDir) throws IOException { | ||
107 | 107 | ||
108 | if (curNode instanceof JavaCodeGenerator) { | 108 | if (curNode instanceof JavaCodeGenerator) { |
109 | - ((JavaCodeGenerator) curNode).generateCodeEntry(codeGenDir); | 109 | + ((JavaCodeGenerator) curNode).generateCodeEntry(yangPlugin); |
110 | } else { | 110 | } else { |
111 | throw new TranslatorException( | 111 | throw new TranslatorException( |
112 | "Generated data model node cannot be translated to target language code"); | 112 | "Generated data model node cannot be translated to target language code"); | ... | ... |
... | @@ -923,7 +923,7 @@ public class TempJavaCodeFragmentFiles { | ... | @@ -923,7 +923,7 @@ public class TempJavaCodeFragmentFiles { |
923 | /* | 923 | /* |
924 | * TODO: check if this utility needs to be called or move to the caller | 924 | * TODO: check if this utility needs to be called or move to the caller |
925 | */ | 925 | */ |
926 | - String attributeName = getCamelCase(getSmallCase(attr.getAttributeName())); | 926 | + String attributeName = getCamelCase(getSmallCase(attr.getAttributeName()), null); |
927 | if (attr.isQualifiedName()) { | 927 | if (attr.isQualifiedName()) { |
928 | return getJavaAttributeDefination(attr.getImportInfo().getPkgInfo(), attr.getImportInfo().getClassInfo(), | 928 | return getJavaAttributeDefination(attr.getImportInfo().getPkgInfo(), attr.getImportInfo().getClassInfo(), |
929 | attributeName, attr.isListAttr()); | 929 | attributeName, attr.isListAttr()); | ... | ... |
... | @@ -22,6 +22,7 @@ import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator; | ... | @@ -22,6 +22,7 @@ import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator; |
22 | import org.onosproject.yangutils.translator.tojava.JavaFileInfo; | 22 | import org.onosproject.yangutils.translator.tojava.JavaFileInfo; |
23 | import org.onosproject.yangutils.translator.tojava.JavaImportData; | 23 | import org.onosproject.yangutils.translator.tojava.JavaImportData; |
24 | import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles; | 24 | import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles; |
25 | +import org.onosproject.yangutils.translator.tojava.utils.YangPluginConfig; | ||
25 | 26 | ||
26 | import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER; | 27 | import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER; |
27 | import static org.onosproject.yangutils.translator.tojava.utils.YangJavaModelUtils.generateCodeOfNode; | 28 | import static org.onosproject.yangutils.translator.tojava.utils.YangJavaModelUtils.generateCodeOfNode; |
... | @@ -127,12 +128,12 @@ public class YangJavaAugment extends YangAugment implements JavaCodeGeneratorInf | ... | @@ -127,12 +128,12 @@ public class YangJavaAugment extends YangAugment implements JavaCodeGeneratorInf |
127 | * Prepare the information for java code generation corresponding to YANG | 128 | * Prepare the information for java code generation corresponding to YANG |
128 | * augment info. | 129 | * augment info. |
129 | * | 130 | * |
130 | - * @param codeGenDir code generation directory | 131 | + * @param yangPlugin YANG plugin config |
131 | * @throws IOException IO operation fail | 132 | * @throws IOException IO operation fail |
132 | */ | 133 | */ |
133 | @Override | 134 | @Override |
134 | - public void generateCodeEntry(String codeGenDir) throws IOException { | 135 | + public void generateCodeEntry(YangPluginConfig yangPlugin) throws IOException { |
135 | - generateCodeOfNode(this, codeGenDir, false); | 136 | + generateCodeOfNode(this, yangPlugin, false); |
136 | } | 137 | } |
137 | 138 | ||
138 | /** | 139 | /** | ... | ... |
... | @@ -22,6 +22,7 @@ import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator; | ... | @@ -22,6 +22,7 @@ import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator; |
22 | import org.onosproject.yangutils.translator.tojava.JavaFileInfo; | 22 | import org.onosproject.yangutils.translator.tojava.JavaFileInfo; |
23 | import org.onosproject.yangutils.translator.tojava.JavaImportData; | 23 | import org.onosproject.yangutils.translator.tojava.JavaImportData; |
24 | import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles; | 24 | import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles; |
25 | +import org.onosproject.yangutils.translator.tojava.utils.YangPluginConfig; | ||
25 | 26 | ||
26 | import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER; | 27 | import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER; |
27 | import static org.onosproject.yangutils.translator.tojava.utils.YangJavaModelUtils.generateCodeOfNode; | 28 | import static org.onosproject.yangutils.translator.tojava.utils.YangJavaModelUtils.generateCodeOfNode; |
... | @@ -126,12 +127,12 @@ public class YangJavaCase extends YangCase implements JavaCodeGeneratorInfo, Jav | ... | @@ -126,12 +127,12 @@ public class YangJavaCase extends YangCase implements JavaCodeGeneratorInfo, Jav |
126 | * Prepare the information for java code generation corresponding to YANG | 127 | * Prepare the information for java code generation corresponding to YANG |
127 | * case info. | 128 | * case info. |
128 | * | 129 | * |
129 | - * @param codeGenDir code generation directory | 130 | + * @param yangPlugin YANG plugin config |
130 | * @throws IOException IO operation fail | 131 | * @throws IOException IO operation fail |
131 | */ | 132 | */ |
132 | @Override | 133 | @Override |
133 | - public void generateCodeEntry(String codeGenDir) throws IOException { | 134 | + public void generateCodeEntry(YangPluginConfig yangPlugin) throws IOException { |
134 | - generateCodeOfNode(this, codeGenDir, false); | 135 | + generateCodeOfNode(this, yangPlugin, false); |
135 | } | 136 | } |
136 | 137 | ||
137 | /** | 138 | /** | ... | ... |
... | @@ -22,6 +22,7 @@ import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator; | ... | @@ -22,6 +22,7 @@ import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator; |
22 | import org.onosproject.yangutils.translator.tojava.JavaFileInfo; | 22 | import org.onosproject.yangutils.translator.tojava.JavaFileInfo; |
23 | import org.onosproject.yangutils.translator.tojava.JavaImportData; | 23 | import org.onosproject.yangutils.translator.tojava.JavaImportData; |
24 | import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles; | 24 | import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles; |
25 | +import org.onosproject.yangutils.translator.tojava.utils.YangPluginConfig; | ||
25 | 26 | ||
26 | import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER; | 27 | import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER; |
27 | import static org.onosproject.yangutils.translator.tojava.utils.YangJavaModelUtils.generateCodeOfNode; | 28 | import static org.onosproject.yangutils.translator.tojava.utils.YangJavaModelUtils.generateCodeOfNode; |
... | @@ -126,12 +127,12 @@ public class YangJavaChoice extends YangChoice implements JavaCodeGeneratorInfo, | ... | @@ -126,12 +127,12 @@ public class YangJavaChoice extends YangChoice implements JavaCodeGeneratorInfo, |
126 | * Prepare the information for java code generation corresponding to YANG | 127 | * Prepare the information for java code generation corresponding to YANG |
127 | * case info. | 128 | * case info. |
128 | * | 129 | * |
129 | - * @param codeGenDir code generation directory | 130 | + * @param yangPlugin YANG plugin config |
130 | * @throws IOException IO operation fail | 131 | * @throws IOException IO operation fail |
131 | */ | 132 | */ |
132 | @Override | 133 | @Override |
133 | - public void generateCodeEntry(String codeGenDir) throws IOException { | 134 | + public void generateCodeEntry(YangPluginConfig yangPlugin) throws IOException { |
134 | - generateCodeOfNode(this, codeGenDir, false); | 135 | + generateCodeOfNode(this, yangPlugin, false); |
135 | // TODO:getTempJavaCodeFragmentFiles().addCurNodeLeavesInfoToTempFiles(this); | 136 | // TODO:getTempJavaCodeFragmentFiles().addCurNodeLeavesInfoToTempFiles(this); |
136 | } | 137 | } |
137 | 138 | ... | ... |
... | @@ -22,6 +22,7 @@ import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator; | ... | @@ -22,6 +22,7 @@ import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator; |
22 | import org.onosproject.yangutils.translator.tojava.JavaFileInfo; | 22 | import org.onosproject.yangutils.translator.tojava.JavaFileInfo; |
23 | import org.onosproject.yangutils.translator.tojava.JavaImportData; | 23 | import org.onosproject.yangutils.translator.tojava.JavaImportData; |
24 | import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles; | 24 | import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles; |
25 | +import org.onosproject.yangutils.translator.tojava.utils.YangPluginConfig; | ||
25 | 26 | ||
26 | import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER; | 27 | import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER; |
27 | import static org.onosproject.yangutils.translator.tojava.utils.YangJavaModelUtils.generateCodeOfNode; | 28 | import static org.onosproject.yangutils.translator.tojava.utils.YangJavaModelUtils.generateCodeOfNode; |
... | @@ -126,12 +127,12 @@ public class YangJavaContainer extends YangContainer implements JavaCodeGenerato | ... | @@ -126,12 +127,12 @@ public class YangJavaContainer extends YangContainer implements JavaCodeGenerato |
126 | * Prepare the information for java code generation corresponding to YANG | 127 | * Prepare the information for java code generation corresponding to YANG |
127 | * container info. | 128 | * container info. |
128 | * | 129 | * |
129 | - * @param codeGenDir code generation directory | 130 | + * @param yangPlugin YANG plugin config |
130 | * @throws IOException IO operation fail | 131 | * @throws IOException IO operation fail |
131 | */ | 132 | */ |
132 | @Override | 133 | @Override |
133 | - public void generateCodeEntry(String codeGenDir) throws IOException { | 134 | + public void generateCodeEntry(YangPluginConfig yangPlugin) throws IOException { |
134 | - generateCodeOfNode(this, codeGenDir, false); | 135 | + generateCodeOfNode(this, yangPlugin, false); |
135 | } | 136 | } |
136 | 137 | ||
137 | /** | 138 | /** | ... | ... |
... | @@ -22,6 +22,7 @@ import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator; | ... | @@ -22,6 +22,7 @@ import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator; |
22 | import org.onosproject.yangutils.translator.tojava.JavaFileInfo; | 22 | import org.onosproject.yangutils.translator.tojava.JavaFileInfo; |
23 | import org.onosproject.yangutils.translator.tojava.JavaImportData; | 23 | import org.onosproject.yangutils.translator.tojava.JavaImportData; |
24 | import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles; | 24 | import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles; |
25 | +import org.onosproject.yangutils.translator.tojava.utils.YangPluginConfig; | ||
25 | 26 | ||
26 | import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER; | 27 | import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER; |
27 | import static org.onosproject.yangutils.translator.tojava.utils.YangJavaModelUtils.generateCodeOfNode; | 28 | import static org.onosproject.yangutils.translator.tojava.utils.YangJavaModelUtils.generateCodeOfNode; |
... | @@ -126,12 +127,12 @@ public class YangJavaGrouping extends YangGrouping implements JavaCodeGeneratorI | ... | @@ -126,12 +127,12 @@ public class YangJavaGrouping extends YangGrouping implements JavaCodeGeneratorI |
126 | * Prepare the information for java code generation corresponding to YANG | 127 | * Prepare the information for java code generation corresponding to YANG |
127 | * container info. | 128 | * container info. |
128 | * | 129 | * |
129 | - * @param codeGenDir code generation directory | 130 | + * @param yangPlugin YANG plugin config |
130 | * @throws IOException IO operation fail | 131 | * @throws IOException IO operation fail |
131 | */ | 132 | */ |
132 | @Override | 133 | @Override |
133 | - public void generateCodeEntry(String codeGenDir) throws IOException { | 134 | + public void generateCodeEntry(YangPluginConfig yangPlugin) throws IOException { |
134 | - generateCodeOfNode(this, codeGenDir, false); | 135 | + generateCodeOfNode(this, yangPlugin, false); |
135 | } | 136 | } |
136 | 137 | ||
137 | /** | 138 | /** | ... | ... |
... | @@ -23,6 +23,7 @@ import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator; | ... | @@ -23,6 +23,7 @@ import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator; |
23 | import org.onosproject.yangutils.translator.tojava.JavaFileInfo; | 23 | import org.onosproject.yangutils.translator.tojava.JavaFileInfo; |
24 | import org.onosproject.yangutils.translator.tojava.JavaImportData; | 24 | import org.onosproject.yangutils.translator.tojava.JavaImportData; |
25 | import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles; | 25 | import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles; |
26 | +import org.onosproject.yangutils.translator.tojava.utils.YangPluginConfig; | ||
26 | 27 | ||
27 | import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER; | 28 | import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER; |
28 | import static org.onosproject.yangutils.translator.tojava.utils.YangJavaModelUtils.generateCodeOfNode; | 29 | import static org.onosproject.yangutils.translator.tojava.utils.YangJavaModelUtils.generateCodeOfNode; |
... | @@ -127,12 +128,12 @@ public class YangJavaInput extends YangInput implements JavaCodeGeneratorInfo, J | ... | @@ -127,12 +128,12 @@ public class YangJavaInput extends YangInput implements JavaCodeGeneratorInfo, J |
127 | * Prepare the information for java code generation corresponding to YANG | 128 | * Prepare the information for java code generation corresponding to YANG |
128 | * container info. | 129 | * container info. |
129 | * | 130 | * |
130 | - * @param codeGenDir code generation directory | 131 | + * @param yangPlugin YANG plugin config |
131 | * @throws IOException IO operation fail | 132 | * @throws IOException IO operation fail |
132 | */ | 133 | */ |
133 | @Override | 134 | @Override |
134 | - public void generateCodeEntry(String codeGenDir) throws IOException { | 135 | + public void generateCodeEntry(YangPluginConfig yangPlugin) throws IOException { |
135 | - generateCodeOfNode(this, codeGenDir, false); | 136 | + generateCodeOfNode(this, yangPlugin, false); |
136 | } | 137 | } |
137 | 138 | ||
138 | /** | 139 | /** | ... | ... |
... | @@ -22,6 +22,7 @@ import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator; | ... | @@ -22,6 +22,7 @@ import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator; |
22 | import org.onosproject.yangutils.translator.tojava.JavaFileInfo; | 22 | import org.onosproject.yangutils.translator.tojava.JavaFileInfo; |
23 | import org.onosproject.yangutils.translator.tojava.JavaImportData; | 23 | import org.onosproject.yangutils.translator.tojava.JavaImportData; |
24 | import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles; | 24 | import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles; |
25 | +import org.onosproject.yangutils.translator.tojava.utils.YangPluginConfig; | ||
25 | 26 | ||
26 | import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER; | 27 | import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER; |
27 | import static org.onosproject.yangutils.translator.tojava.utils.YangJavaModelUtils.generateCodeOfNode; | 28 | import static org.onosproject.yangutils.translator.tojava.utils.YangJavaModelUtils.generateCodeOfNode; |
... | @@ -126,12 +127,12 @@ public class YangJavaList extends YangList implements JavaCodeGeneratorInfo, Jav | ... | @@ -126,12 +127,12 @@ public class YangJavaList extends YangList implements JavaCodeGeneratorInfo, Jav |
126 | * Prepare the information for java code generation corresponding to YANG | 127 | * Prepare the information for java code generation corresponding to YANG |
127 | * container info. | 128 | * container info. |
128 | * | 129 | * |
129 | - * @param codeGenDir code generation directory | 130 | + * @param yangPlugin YANG plugin config |
130 | * @throws IOException IO operation fail | 131 | * @throws IOException IO operation fail |
131 | */ | 132 | */ |
132 | @Override | 133 | @Override |
133 | - public void generateCodeEntry(String codeGenDir) throws IOException { | 134 | + public void generateCodeEntry(YangPluginConfig yangPlugin) throws IOException { |
134 | - generateCodeOfNode(this, codeGenDir, true); | 135 | + generateCodeOfNode(this, yangPlugin, true); |
135 | } | 136 | } |
136 | 137 | ||
137 | /** | 138 | /** | ... | ... |
... | @@ -23,6 +23,7 @@ import org.onosproject.yangutils.translator.tojava.JavaFileInfo; | ... | @@ -23,6 +23,7 @@ import org.onosproject.yangutils.translator.tojava.JavaFileInfo; |
23 | import org.onosproject.yangutils.translator.tojava.JavaImportData; | 23 | import org.onosproject.yangutils.translator.tojava.JavaImportData; |
24 | import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles; | 24 | import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles; |
25 | import org.onosproject.yangutils.translator.tojava.utils.YangJavaModelUtils; | 25 | import org.onosproject.yangutils.translator.tojava.utils.YangJavaModelUtils; |
26 | +import org.onosproject.yangutils.translator.tojava.utils.YangPluginConfig; | ||
26 | 27 | ||
27 | import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER; | 28 | import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER; |
28 | import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getRootPackage; | 29 | import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getRootPackage; |
... | @@ -126,13 +127,13 @@ public class YangJavaModule extends YangModule implements JavaCodeGeneratorInfo, | ... | @@ -126,13 +127,13 @@ public class YangJavaModule extends YangModule implements JavaCodeGeneratorInfo, |
126 | /** | 127 | /** |
127 | * Generates java code for module. | 128 | * Generates java code for module. |
128 | * | 129 | * |
129 | - * @param baseCodeGenDir code generation directory | 130 | + * @param yangPlugin YANG plugin config |
130 | * @throws IOException when fails to generate the source files | 131 | * @throws IOException when fails to generate the source files |
131 | */ | 132 | */ |
132 | @Override | 133 | @Override |
133 | - public void generateCodeEntry(String baseCodeGenDir) throws IOException { | 134 | + public void generateCodeEntry(YangPluginConfig yangPlugin) throws IOException { |
134 | String modulePkg = getRootPackage(getVersion(), getNameSpace().getUri(), getRevision().getRevDate()); | 135 | String modulePkg = getRootPackage(getVersion(), getNameSpace().getUri(), getRevision().getRevDate()); |
135 | - YangJavaModelUtils.generateCodeOfRootNode(this, baseCodeGenDir, modulePkg); | 136 | + YangJavaModelUtils.generateCodeOfRootNode(this, yangPlugin, modulePkg); |
136 | } | 137 | } |
137 | 138 | ||
138 | @Override | 139 | @Override | ... | ... |
... | @@ -27,6 +27,7 @@ import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator; | ... | @@ -27,6 +27,7 @@ import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator; |
27 | import org.onosproject.yangutils.translator.tojava.JavaFileInfo; | 27 | import org.onosproject.yangutils.translator.tojava.JavaFileInfo; |
28 | import org.onosproject.yangutils.translator.tojava.JavaImportData; | 28 | import org.onosproject.yangutils.translator.tojava.JavaImportData; |
29 | import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles; | 29 | import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles; |
30 | +import org.onosproject.yangutils.translator.tojava.utils.YangPluginConfig; | ||
30 | 31 | ||
31 | 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; |
32 | import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCamelCase; | 33 | import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCamelCase; |
... | @@ -138,17 +139,17 @@ public class YangJavaNotification extends YangNotification | ... | @@ -138,17 +139,17 @@ public class YangJavaNotification extends YangNotification |
138 | * Prepare the information for java code generation corresponding to YANG | 139 | * Prepare the information for java code generation corresponding to YANG |
139 | * notification info. | 140 | * notification info. |
140 | * | 141 | * |
141 | - * @param codeGenDir code generation directory | 142 | + * @param yangPlugin YANG plugin config |
142 | * @throws IOException IO operation fail | 143 | * @throws IOException IO operation fail |
143 | */ | 144 | */ |
144 | @Override | 145 | @Override |
145 | - public void generateCodeEntry(String codeGenDir) throws IOException { | 146 | + public void generateCodeEntry(YangPluginConfig yangPlugin) throws IOException { |
146 | 147 | ||
147 | - getJavaFileInfo().setJavaName(getCaptialCase(getCamelCase(getName()))); | 148 | + getJavaFileInfo().setJavaName(getCaptialCase(getCamelCase(getName(), yangPlugin.getConflictResolver()))); |
148 | getJavaFileInfo().setPackage(getCurNodePackage(this)); | 149 | getJavaFileInfo().setPackage(getCurNodePackage(this)); |
149 | getJavaFileInfo().setPackageFilePath( | 150 | getJavaFileInfo().setPackageFilePath( |
150 | getPackageDirPathFromJavaJPackage(getJavaFileInfo().getPackage())); | 151 | getPackageDirPathFromJavaJPackage(getJavaFileInfo().getPackage())); |
151 | - getJavaFileInfo().setBaseCodeGenPath(codeGenDir); | 152 | + getJavaFileInfo().setBaseCodeGenPath(yangPlugin.getCodeGenDir()); |
152 | 153 | ||
153 | String absolutePath = getAbsolutePackagePath( | 154 | String absolutePath = getAbsolutePackagePath( |
154 | getJavaFileInfo().getBaseCodeGenPath(), | 155 | getJavaFileInfo().getBaseCodeGenPath(), | ... | ... |
... | @@ -23,6 +23,7 @@ import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator; | ... | @@ -23,6 +23,7 @@ import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator; |
23 | import org.onosproject.yangutils.translator.tojava.JavaFileInfo; | 23 | import org.onosproject.yangutils.translator.tojava.JavaFileInfo; |
24 | import org.onosproject.yangutils.translator.tojava.JavaImportData; | 24 | import org.onosproject.yangutils.translator.tojava.JavaImportData; |
25 | import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles; | 25 | import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles; |
26 | +import org.onosproject.yangutils.translator.tojava.utils.YangPluginConfig; | ||
26 | 27 | ||
27 | import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER; | 28 | import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER; |
28 | import static org.onosproject.yangutils.translator.tojava.utils.YangJavaModelUtils.generateCodeOfNode; | 29 | import static org.onosproject.yangutils.translator.tojava.utils.YangJavaModelUtils.generateCodeOfNode; |
... | @@ -127,12 +128,12 @@ public class YangJavaOutput extends YangOutput implements JavaCodeGeneratorInfo, | ... | @@ -127,12 +128,12 @@ public class YangJavaOutput extends YangOutput implements JavaCodeGeneratorInfo, |
127 | * Prepare the information for java code generation corresponding to YANG | 128 | * Prepare the information for java code generation corresponding to YANG |
128 | * container info. | 129 | * container info. |
129 | * | 130 | * |
130 | - * @param codeGenDir code generation directory | 131 | + * @param yangPlugin YANG plugin config |
131 | * @throws IOException IO operation fail | 132 | * @throws IOException IO operation fail |
132 | */ | 133 | */ |
133 | @Override | 134 | @Override |
134 | - public void generateCodeEntry(String codeGenDir) throws IOException { | 135 | + public void generateCodeEntry(YangPluginConfig yangPlugin) throws IOException { |
135 | - generateCodeOfNode(this, codeGenDir, false); | 136 | + generateCodeOfNode(this, yangPlugin, false); |
136 | } | 137 | } |
137 | 138 | ||
138 | /** | 139 | /** | ... | ... |
utils/yangutils/src/main/java/org/onosproject/yangutils/translator/tojava/javamodel/YangJavaRpc.java
... | @@ -19,6 +19,7 @@ package org.onosproject.yangutils.translator.tojava.javamodel; | ... | @@ -19,6 +19,7 @@ package org.onosproject.yangutils.translator.tojava.javamodel; |
19 | import java.io.IOException; | 19 | import java.io.IOException; |
20 | import org.onosproject.yangutils.datamodel.YangRpc; | 20 | import org.onosproject.yangutils.datamodel.YangRpc; |
21 | import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator; | 21 | import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator; |
22 | +import org.onosproject.yangutils.translator.tojava.utils.YangPluginConfig; | ||
22 | 23 | ||
23 | /** | 24 | /** |
24 | * Represents rpc information extended to support java code generation. | 25 | * Represents rpc information extended to support java code generation. |
... | @@ -35,11 +36,11 @@ public class YangJavaRpc extends YangRpc implements JavaCodeGenerator { | ... | @@ -35,11 +36,11 @@ public class YangJavaRpc extends YangRpc implements JavaCodeGenerator { |
35 | * Prepares the information for java code generation corresponding to YANG | 36 | * Prepares the information for java code generation corresponding to YANG |
36 | * rpc info. | 37 | * rpc info. |
37 | * | 38 | * |
38 | - * @param codeGenDir code generation directory | 39 | + * @param yangPlugin YANG plugin config |
39 | * @throws IOException IO operation fail | 40 | * @throws IOException IO operation fail |
40 | */ | 41 | */ |
41 | @Override | 42 | @Override |
42 | - public void generateCodeEntry(String codeGenDir) throws IOException { | 43 | + public void generateCodeEntry(YangPluginConfig yangPlugin) throws IOException { |
43 | // TODO | 44 | // TODO |
44 | } | 45 | } |
45 | 46 | ... | ... |
... | @@ -24,6 +24,7 @@ import org.onosproject.yangutils.translator.tojava.JavaFileInfo; | ... | @@ -24,6 +24,7 @@ import org.onosproject.yangutils.translator.tojava.JavaFileInfo; |
24 | import org.onosproject.yangutils.translator.tojava.JavaImportData; | 24 | import org.onosproject.yangutils.translator.tojava.JavaImportData; |
25 | import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles; | 25 | import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles; |
26 | import org.onosproject.yangutils.translator.tojava.utils.YangJavaModelUtils; | 26 | import org.onosproject.yangutils.translator.tojava.utils.YangJavaModelUtils; |
27 | +import org.onosproject.yangutils.translator.tojava.utils.YangPluginConfig; | ||
27 | 28 | ||
28 | import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER; | 29 | import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER; |
29 | import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getRootPackage; | 30 | import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getRootPackage; |
... | @@ -140,14 +141,14 @@ public class YangJavaSubModule extends YangSubModule implements JavaCodeGenerato | ... | @@ -140,14 +141,14 @@ public class YangJavaSubModule extends YangSubModule implements JavaCodeGenerato |
140 | * Prepare the information for java code generation corresponding to YANG | 141 | * Prepare the information for java code generation corresponding to YANG |
141 | * container info. | 142 | * container info. |
142 | * | 143 | * |
143 | - * @param baseCodeGenDir code generation directory | 144 | + * @param yangPlugin YANG plugin config |
144 | * @throws IOException IO operation fail | 145 | * @throws IOException IO operation fail |
145 | */ | 146 | */ |
146 | @Override | 147 | @Override |
147 | - public void generateCodeEntry(String baseCodeGenDir) throws IOException { | 148 | + public void generateCodeEntry(YangPluginConfig yangPlugin) throws IOException { |
148 | String subModulePkg = getRootPackage(getVersion(), getNameSpaceFromModule(getBelongsTo()), | 149 | String subModulePkg = getRootPackage(getVersion(), getNameSpaceFromModule(getBelongsTo()), |
149 | getRevision().getRevDate()); | 150 | getRevision().getRevDate()); |
150 | - YangJavaModelUtils.generateCodeOfRootNode(this, baseCodeGenDir, subModulePkg); | 151 | + YangJavaModelUtils.generateCodeOfRootNode(this, yangPlugin, subModulePkg); |
151 | } | 152 | } |
152 | 153 | ||
153 | /** | 154 | /** | ... | ... |
... | @@ -26,6 +26,7 @@ import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator; | ... | @@ -26,6 +26,7 @@ import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator; |
26 | import org.onosproject.yangutils.translator.tojava.JavaFileInfo; | 26 | import org.onosproject.yangutils.translator.tojava.JavaFileInfo; |
27 | import org.onosproject.yangutils.translator.tojava.JavaImportData; | 27 | import org.onosproject.yangutils.translator.tojava.JavaImportData; |
28 | import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles; | 28 | import org.onosproject.yangutils.translator.tojava.TempJavaCodeFragmentFiles; |
29 | +import org.onosproject.yangutils.translator.tojava.utils.YangPluginConfig; | ||
29 | 30 | ||
30 | import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_TYPEDEF_CLASS; | 31 | import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_TYPEDEF_CLASS; |
31 | import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCamelCase; | 32 | import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCamelCase; |
... | @@ -136,18 +137,18 @@ public class YangJavaTypeDef extends YangTypeDef | ... | @@ -136,18 +137,18 @@ public class YangJavaTypeDef extends YangTypeDef |
136 | * Prepare the information for java code generation corresponding to YANG | 137 | * Prepare the information for java code generation corresponding to YANG |
137 | * container info. | 138 | * container info. |
138 | * | 139 | * |
139 | - * @param codeGenDir code generation directory | 140 | + * @param yangPlugin YANG plugin config |
140 | * @throws IOException IO operations fails | 141 | * @throws IOException IO operations fails |
141 | */ | 142 | */ |
142 | @Override | 143 | @Override |
143 | - public void generateCodeEntry(String codeGenDir) throws IOException { | 144 | + public void generateCodeEntry(YangPluginConfig yangPlugin) throws IOException { |
144 | 145 | ||
145 | - getJavaFileInfo().setJavaName(getCaptialCase(getCamelCase(getName()))); | 146 | + getJavaFileInfo().setJavaName(getCaptialCase(getCamelCase(getName(), yangPlugin.getConflictResolver()))); |
146 | getJavaFileInfo().setPackage(getCurNodePackage(this)); | 147 | getJavaFileInfo().setPackage(getCurNodePackage(this)); |
147 | 148 | ||
148 | getJavaFileInfo().setPackageFilePath( | 149 | getJavaFileInfo().setPackageFilePath( |
149 | getPackageDirPathFromJavaJPackage(getJavaFileInfo().getPackage())); | 150 | getPackageDirPathFromJavaJPackage(getJavaFileInfo().getPackage())); |
150 | - getJavaFileInfo().setBaseCodeGenPath(codeGenDir); | 151 | + getJavaFileInfo().setBaseCodeGenPath(yangPlugin.getCodeGenDir()); |
151 | String absloutePath = getAbsolutePackagePath( | 152 | String absloutePath = getAbsolutePackagePath( |
152 | getJavaFileInfo().getBaseCodeGenPath(), | 153 | getJavaFileInfo().getBaseCodeGenPath(), |
153 | getJavaFileInfo().getPackageFilePath()); | 154 | getJavaFileInfo().getPackageFilePath()); | ... | ... |
... | @@ -22,6 +22,7 @@ import org.onosproject.yangutils.translator.tojava.HasJavaImportData; | ... | @@ -22,6 +22,7 @@ import org.onosproject.yangutils.translator.tojava.HasJavaImportData; |
22 | import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator; | 22 | import org.onosproject.yangutils.translator.tojava.JavaCodeGenerator; |
23 | import org.onosproject.yangutils.translator.tojava.JavaFileInfo; | 23 | import org.onosproject.yangutils.translator.tojava.JavaFileInfo; |
24 | import org.onosproject.yangutils.translator.tojava.JavaImportData; | 24 | import org.onosproject.yangutils.translator.tojava.JavaImportData; |
25 | +import org.onosproject.yangutils.translator.tojava.utils.YangPluginConfig; | ||
25 | 26 | ||
26 | import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER; | 27 | import static org.onosproject.yangutils.translator.tojava.GeneratedJavaFileType.GENERATE_INTERFACE_WITH_BUILDER; |
27 | import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCamelCase; | 28 | import static org.onosproject.yangutils.translator.tojava.utils.JavaIdentifierSyntax.getCamelCase; |
... | @@ -104,16 +105,16 @@ public class YangJavaUses extends YangUses implements JavaCodeGenerator, HasJava | ... | @@ -104,16 +105,16 @@ public class YangJavaUses extends YangUses implements JavaCodeGenerator, HasJava |
104 | * Prepare the information for java code generation corresponding to YANG | 105 | * Prepare the information for java code generation corresponding to YANG |
105 | * container info. | 106 | * container info. |
106 | * | 107 | * |
107 | - * @param codeGenDir code generation directory | 108 | + * @param yangPlugin YANG plugin config |
108 | */ | 109 | */ |
109 | @Override | 110 | @Override |
110 | - public void generateCodeEntry(String codeGenDir) { | 111 | + public void generateCodeEntry(YangPluginConfig yangPlugin) { |
111 | 112 | ||
112 | - getJavaFileInfo().setJavaName(getCaptialCase(getCamelCase(getName()))); | 113 | + getJavaFileInfo().setJavaName(getCaptialCase(getCamelCase(getName(), yangPlugin.getConflictResolver()))); |
113 | getJavaFileInfo().setPackage(getCurNodePackage(this)); | 114 | getJavaFileInfo().setPackage(getCurNodePackage(this)); |
114 | getJavaFileInfo().setPackageFilePath( | 115 | getJavaFileInfo().setPackageFilePath( |
115 | getPackageDirPathFromJavaJPackage(getJavaFileInfo().getPackage())); | 116 | getPackageDirPathFromJavaJPackage(getJavaFileInfo().getPackage())); |
116 | - getJavaFileInfo().setBaseCodeGenPath(codeGenDir); | 117 | + getJavaFileInfo().setBaseCodeGenPath(yangPlugin.getCodeGenDir()); |
117 | //TODO:addCurNodeLeavesInfoToTempFiles(this); | 118 | //TODO:addCurNodeLeavesInfoToTempFiles(this); |
118 | //TODO:addCurNodeInfoInParentTempFile(this, false); | 119 | //TODO:addCurNodeInfoInParentTempFile(this, false); |
119 | } | 120 | } | ... | ... |
... | @@ -196,7 +196,7 @@ public final class AttributesJavaDataType { | ... | @@ -196,7 +196,7 @@ public final class AttributesJavaDataType { |
196 | } else if (type.equals(INSTANCE_IDENTIFIER)) { | 196 | } else if (type.equals(INSTANCE_IDENTIFIER)) { |
197 | //TODO:INSTANCE_IDENTIFIER | 197 | //TODO:INSTANCE_IDENTIFIER |
198 | } else if (type.equals(DERIVED)) { | 198 | } else if (type.equals(DERIVED)) { |
199 | - return getCaptialCase(getCamelCase(yangType.getDataTypeName())); | 199 | + return getCaptialCase(getCamelCase(yangType.getDataTypeName(), null)); |
200 | } | 200 | } |
201 | } else { | 201 | } else { |
202 | if (type.equals(UINT64)) { | 202 | if (type.equals(UINT64)) { |
... | @@ -222,7 +222,7 @@ public final class AttributesJavaDataType { | ... | @@ -222,7 +222,7 @@ public final class AttributesJavaDataType { |
222 | } else if (type.equals(INSTANCE_IDENTIFIER)) { | 222 | } else if (type.equals(INSTANCE_IDENTIFIER)) { |
223 | //TODO:INSTANCE_IDENTIFIER | 223 | //TODO:INSTANCE_IDENTIFIER |
224 | } else if (type.equals(DERIVED)) { | 224 | } else if (type.equals(DERIVED)) { |
225 | - return getCaptialCase(getCamelCase(yangType.getDataTypeName())); | 225 | + return getCaptialCase(getCamelCase(yangType.getDataTypeName(), null)); |
226 | } | 226 | } |
227 | } | 227 | } |
228 | return null; | 228 | return null; | ... | ... |
... | @@ -79,7 +79,7 @@ public final class JavaCodeSnippetGen { | ... | @@ -79,7 +79,7 @@ public final class JavaCodeSnippetGen { |
79 | /* | 79 | /* |
80 | * get the camel case name for java class / interface. | 80 | * get the camel case name for java class / interface. |
81 | */ | 81 | */ |
82 | - yangName = getCamelCase(yangName); | 82 | + yangName = getCamelCase(yangName, null); |
83 | return generateClassDefinition(genFileTypes, yangName); | 83 | return generateClassDefinition(genFileTypes, yangName); |
84 | } | 84 | } |
85 | 85 | ... | ... |
... | @@ -17,6 +17,7 @@ | ... | @@ -17,6 +17,7 @@ |
17 | package org.onosproject.yangutils.translator.tojava.utils; | 17 | package org.onosproject.yangutils.translator.tojava.utils; |
18 | 18 | ||
19 | import java.util.ArrayList; | 19 | import java.util.ArrayList; |
20 | +import java.util.List; | ||
20 | 21 | ||
21 | import org.onosproject.yangutils.datamodel.YangNode; | 22 | import org.onosproject.yangutils.datamodel.YangNode; |
22 | import org.onosproject.yangutils.translator.exception.TranslatorException; | 23 | import org.onosproject.yangutils.translator.exception.TranslatorException; |
... | @@ -30,12 +31,19 @@ import static org.onosproject.yangutils.utils.UtilConstants.HYPHEN; | ... | @@ -30,12 +31,19 @@ import static org.onosproject.yangutils.utils.UtilConstants.HYPHEN; |
30 | import static org.onosproject.yangutils.utils.UtilConstants.JAVA_KEY_WORDS; | 31 | import static org.onosproject.yangutils.utils.UtilConstants.JAVA_KEY_WORDS; |
31 | import static org.onosproject.yangutils.utils.UtilConstants.PERIOD; | 32 | import static org.onosproject.yangutils.utils.UtilConstants.PERIOD; |
32 | import static org.onosproject.yangutils.utils.UtilConstants.QUOTES; | 33 | import static org.onosproject.yangutils.utils.UtilConstants.QUOTES; |
34 | +import static org.onosproject.yangutils.utils.UtilConstants.REGEX_FOR_DIGITS_WITH_SINGLE_LETTER; | ||
33 | import static org.onosproject.yangutils.utils.UtilConstants.REGEX_FOR_FIRST_DIGIT; | 35 | import static org.onosproject.yangutils.utils.UtilConstants.REGEX_FOR_FIRST_DIGIT; |
34 | -import static org.onosproject.yangutils.utils.UtilConstants.REGEX_WITH_SPECIAL_CHAR; | 36 | +import static org.onosproject.yangutils.utils.UtilConstants.REGEX_FOR_HYPHEN; |
37 | +import static org.onosproject.yangutils.utils.UtilConstants.REGEX_FOR_IDENTIFIER_SPECIAL_CHAR; | ||
38 | +import static org.onosproject.yangutils.utils.UtilConstants.REGEX_FOR_PERIOD; | ||
39 | +import static org.onosproject.yangutils.utils.UtilConstants.REGEX_FOR_SINGLE_LETTER; | ||
40 | +import static org.onosproject.yangutils.utils.UtilConstants.REGEX_FOR_UNDERSCORE; | ||
41 | +import static org.onosproject.yangutils.utils.UtilConstants.REGEX_WITH_ALL_SPECIAL_CHAR; | ||
35 | import static org.onosproject.yangutils.utils.UtilConstants.REVISION_PREFIX; | 42 | import static org.onosproject.yangutils.utils.UtilConstants.REVISION_PREFIX; |
36 | import static org.onosproject.yangutils.utils.UtilConstants.SLASH; | 43 | import static org.onosproject.yangutils.utils.UtilConstants.SLASH; |
37 | import static org.onosproject.yangutils.utils.UtilConstants.UNDER_SCORE; | 44 | import static org.onosproject.yangutils.utils.UtilConstants.UNDER_SCORE; |
38 | import static org.onosproject.yangutils.utils.UtilConstants.VERSION_PREFIX; | 45 | import static org.onosproject.yangutils.utils.UtilConstants.VERSION_PREFIX; |
46 | +import static org.onosproject.yangutils.utils.UtilConstants.YANG_AUTO_PREFIX; | ||
39 | 47 | ||
40 | /** | 48 | /** |
41 | * Represents an utility Class for translating the name from YANG to java convention. | 49 | * Represents an utility Class for translating the name from YANG to java convention. |
... | @@ -137,7 +145,7 @@ public final class JavaIdentifierSyntax { | ... | @@ -137,7 +145,7 @@ public final class JavaIdentifierSyntax { |
137 | 145 | ||
138 | ArrayList<String> pkgArr = new ArrayList<String>(); | 146 | ArrayList<String> pkgArr = new ArrayList<String>(); |
139 | nameSpace = nameSpace.replace(QUOTES, EMPTY_STRING); | 147 | nameSpace = nameSpace.replace(QUOTES, EMPTY_STRING); |
140 | - String properNameSpace = nameSpace.replaceAll(REGEX_WITH_SPECIAL_CHAR, COLAN); | 148 | + String properNameSpace = nameSpace.replaceAll(REGEX_WITH_ALL_SPECIAL_CHAR, COLAN); |
141 | String[] nameSpaceArr = properNameSpace.split(COLAN); | 149 | String[] nameSpaceArr = properNameSpace.split(COLAN); |
142 | 150 | ||
143 | for (String nameSpaceString : nameSpaceArr) { | 151 | for (String nameSpaceString : nameSpaceArr) { |
... | @@ -191,7 +199,7 @@ public final class JavaIdentifierSyntax { | ... | @@ -191,7 +199,7 @@ public final class JavaIdentifierSyntax { |
191 | for (String member : pkgArr) { | 199 | for (String member : pkgArr) { |
192 | boolean presenceOfKeyword = JAVA_KEY_WORDS.contains(member); | 200 | boolean presenceOfKeyword = JAVA_KEY_WORDS.contains(member); |
193 | if (presenceOfKeyword || member.matches(REGEX_FOR_FIRST_DIGIT)) { | 201 | if (presenceOfKeyword || member.matches(REGEX_FOR_FIRST_DIGIT)) { |
194 | - member = UNDER_SCORE + member; | 202 | + member = YANG_AUTO_PREFIX + member; |
195 | } | 203 | } |
196 | pkg = pkg + member; | 204 | pkg = pkg + member; |
197 | if (i != size - 1) { | 205 | if (i != size - 1) { |
... | @@ -223,16 +231,121 @@ public final class JavaIdentifierSyntax { | ... | @@ -223,16 +231,121 @@ public final class JavaIdentifierSyntax { |
223 | * Returns the YANG identifier name as java identifier. | 231 | * Returns the YANG identifier name as java identifier. |
224 | * | 232 | * |
225 | * @param yangIdentifier identifier in YANG file | 233 | * @param yangIdentifier identifier in YANG file |
234 | + * @param conflictResolver object of YANG to java naming confilct util | ||
226 | * @return corresponding java identifier | 235 | * @return corresponding java identifier |
227 | */ | 236 | */ |
228 | - public static String getCamelCase(String yangIdentifier) { | 237 | + public static String getCamelCase(String yangIdentifier, YangToJavaNamingConflictUtil conflictResolver) { |
238 | + | ||
239 | + if (conflictResolver != null) { | ||
240 | + String replacementForHyphen = conflictResolver.getReplacementForHyphen(); | ||
241 | + String replacementForPeriod = conflictResolver.getReplacementForPeriod(); | ||
242 | + String replacementForUnderscore = conflictResolver.getReplacementForUnderscore(); | ||
243 | + if (replacementForPeriod != null) { | ||
244 | + yangIdentifier = yangIdentifier.replaceAll(REGEX_FOR_PERIOD, | ||
245 | + PERIOD + replacementForPeriod.toLowerCase() + PERIOD); | ||
246 | + } | ||
247 | + if (replacementForUnderscore != null) { | ||
248 | + yangIdentifier = yangIdentifier.replaceAll(REGEX_FOR_UNDERSCORE, | ||
249 | + UNDER_SCORE + replacementForUnderscore.toLowerCase() + UNDER_SCORE); | ||
250 | + } | ||
251 | + if (replacementForHyphen != null) { | ||
252 | + yangIdentifier = yangIdentifier.replaceAll(REGEX_FOR_HYPHEN, | ||
253 | + HYPHEN + replacementForHyphen.toLowerCase() + HYPHEN); | ||
254 | + } | ||
255 | + } | ||
256 | + yangIdentifier = yangIdentifier.replaceAll(REGEX_FOR_IDENTIFIER_SPECIAL_CHAR, COLAN); | ||
257 | + String[] strArray = yangIdentifier.split(COLAN); | ||
258 | + if (strArray[0].isEmpty()) { | ||
259 | + List<String> stringArrangement = new ArrayList<String>(); | ||
260 | + for (int i = 1; i < strArray.length; i++) { | ||
261 | + stringArrangement.add(strArray[i]); | ||
262 | + } | ||
263 | + strArray = stringArrangement.toArray(new String[stringArrangement.size()]); | ||
264 | + } | ||
265 | + return applyCamelCaseRule(strArray); | ||
266 | + } | ||
229 | 267 | ||
230 | - String[] strArray = yangIdentifier.split(HYPHEN); | 268 | + /** |
231 | - String camelCase = strArray[0]; | 269 | + * Applies the rule that a string does not end with a capitalized letter and capitalizes |
232 | - for (int i = 1; i < strArray.length; i++) { | 270 | + * the letter next to a number in an array. |
233 | - camelCase = camelCase + strArray[i].substring(0, 1).toUpperCase() + strArray[i].substring(1); | 271 | + * |
272 | + * @param stringArray containing strings for camel case separation | ||
273 | + * @return camel cased string | ||
274 | + */ | ||
275 | + public static String applyCamelCaseRule(String[] stringArray) { | ||
276 | + | ||
277 | + String ruleChecker = stringArray[0]; | ||
278 | + int i; | ||
279 | + if (ruleChecker.matches(REGEX_FOR_FIRST_DIGIT)) { | ||
280 | + i = 0; | ||
281 | + ruleChecker = EMPTY_STRING; | ||
282 | + } else { | ||
283 | + i = 1; | ||
284 | + } | ||
285 | + for (; i < stringArray.length; i++) { | ||
286 | + if ((i + 1) == stringArray.length) { | ||
287 | + if (stringArray[i].matches(REGEX_FOR_SINGLE_LETTER) | ||
288 | + || stringArray[i].matches(REGEX_FOR_DIGITS_WITH_SINGLE_LETTER)) { | ||
289 | + ruleChecker = ruleChecker + stringArray[i]; | ||
290 | + break; | ||
291 | + } | ||
292 | + } | ||
293 | + if (stringArray[i].matches(REGEX_FOR_FIRST_DIGIT)) { | ||
294 | + for (int j = 0; j < stringArray[i].length(); j++) { | ||
295 | + char letterCheck = stringArray[i].charAt(j); | ||
296 | + if (Character.isLetter(letterCheck)) { | ||
297 | + stringArray[i] = stringArray[i].substring(0, j) | ||
298 | + + stringArray[i].substring(j, j + 1).toUpperCase() + stringArray[i].substring(j + 1); | ||
299 | + break; | ||
300 | + } | ||
301 | + } | ||
302 | + ruleChecker = ruleChecker + stringArray[i]; | ||
303 | + } else { | ||
304 | + ruleChecker = ruleChecker + stringArray[i].substring(0, 1).toUpperCase() + stringArray[i].substring(1); | ||
305 | + } | ||
306 | + } | ||
307 | + String ruleCheckerWithPrefix = addPrefix(ruleChecker); | ||
308 | + return restrictConsecutiveCapitalCase(ruleCheckerWithPrefix); | ||
309 | + } | ||
310 | + | ||
311 | + /** | ||
312 | + * Adds prefix YANG auto prefix if the string begins with digit or is a java key word. | ||
313 | + * | ||
314 | + * @param camelCasePrefixer string for adding prefix | ||
315 | + * @return prefixed camel case string | ||
316 | + */ | ||
317 | + public static String addPrefix(String camelCasePrefixer) { | ||
318 | + | ||
319 | + if (camelCasePrefixer.matches(REGEX_FOR_FIRST_DIGIT)) { | ||
320 | + camelCasePrefixer = YANG_AUTO_PREFIX + camelCasePrefixer; | ||
321 | + } | ||
322 | + if (JAVA_KEY_WORDS.contains(camelCasePrefixer)) { | ||
323 | + camelCasePrefixer = YANG_AUTO_PREFIX + camelCasePrefixer.substring(0, 1).toUpperCase() | ||
324 | + + camelCasePrefixer.substring(1); | ||
325 | + } | ||
326 | + return camelCasePrefixer; | ||
327 | + } | ||
328 | + | ||
329 | + /** | ||
330 | + * Restricts consecutive capital cased string as a rule in camel case. | ||
331 | + * | ||
332 | + * @param consecCapitalCaseRemover which requires the restriction of consecutive capital case | ||
333 | + * @return string without consecutive capital case | ||
334 | + */ | ||
335 | + public static String restrictConsecutiveCapitalCase(String consecCapitalCaseRemover) { | ||
336 | + | ||
337 | + for (int k = 0; k < consecCapitalCaseRemover.length(); k++) { | ||
338 | + if (k + 1 < consecCapitalCaseRemover.length()) { | ||
339 | + if (Character.isUpperCase(consecCapitalCaseRemover.charAt(k))) { | ||
340 | + if (Character.isUpperCase(consecCapitalCaseRemover.charAt(k + 1))) { | ||
341 | + consecCapitalCaseRemover = consecCapitalCaseRemover.substring(0, k + 1) | ||
342 | + + consecCapitalCaseRemover.substring(k + 1, k + 2).toLowerCase() | ||
343 | + + consecCapitalCaseRemover.substring(k + 2); | ||
344 | + } | ||
345 | + } | ||
346 | + } | ||
234 | } | 347 | } |
235 | - return camelCase; | 348 | + return consecCapitalCaseRemover; |
236 | } | 349 | } |
237 | 350 | ||
238 | /** | 351 | /** | ... | ... |
... | @@ -447,9 +447,9 @@ public final class MethodsGenerator { | ... | @@ -447,9 +447,9 @@ public final class MethodsGenerator { |
447 | 447 | ||
448 | String attributeName = getSmallCase(attr.getAttributeName()); | 448 | String attributeName = getSmallCase(attr.getAttributeName()); |
449 | 449 | ||
450 | - String constructor = EIGHT_SPACE_INDENTATION + THIS + PERIOD + getCamelCase(attributeName) + SPACE + EQUAL | 450 | + String constructor = EIGHT_SPACE_INDENTATION + THIS + PERIOD + getCamelCase(attributeName, null) + SPACE + EQUAL |
451 | + SPACE + BUILDER.toLowerCase() + OBJECT + PERIOD + GET_METHOD_PREFIX | 451 | + SPACE + BUILDER.toLowerCase() + OBJECT + PERIOD + GET_METHOD_PREFIX |
452 | - + getCaptialCase(getCamelCase(attributeName)) + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN | 452 | + + getCaptialCase(getCamelCase(attributeName, null)) + OPEN_PARENTHESIS + CLOSE_PARENTHESIS + SEMI_COLAN |
453 | + NEW_LINE; | 453 | + NEW_LINE; |
454 | 454 | ||
455 | return constructor; | 455 | return constructor; | ... | ... |
... | @@ -43,34 +43,37 @@ public final class YangJavaModelUtils { | ... | @@ -43,34 +43,37 @@ public final class YangJavaModelUtils { |
43 | * Updates YANG java file package information. | 43 | * Updates YANG java file package information. |
44 | * | 44 | * |
45 | * @param javaCodeGeneratorInfo YANG java file info node | 45 | * @param javaCodeGeneratorInfo YANG java file info node |
46 | - * @param codeGenDir code generation directory | 46 | + * @param yangPlugin YANG plugin config |
47 | * @throws IOException IO operations fails | 47 | * @throws IOException IO operations fails |
48 | */ | 48 | */ |
49 | - private static void updatePackageInfo(JavaCodeGeneratorInfo javaCodeGeneratorInfo, String codeGenDir) | 49 | + private static void updatePackageInfo(JavaCodeGeneratorInfo javaCodeGeneratorInfo, YangPluginConfig yangPlugin) |
50 | throws IOException { | 50 | throws IOException { |
51 | javaCodeGeneratorInfo.getJavaFileInfo() | 51 | javaCodeGeneratorInfo.getJavaFileInfo() |
52 | - .setJavaName(getCaptialCase(getCamelCase(((YangNode) javaCodeGeneratorInfo).getName()))); | 52 | + .setJavaName(getCaptialCase( |
53 | + getCamelCase(((YangNode) javaCodeGeneratorInfo).getName(), yangPlugin.getConflictResolver()))); | ||
53 | javaCodeGeneratorInfo.getJavaFileInfo().setPackage(getCurNodePackage((YangNode) javaCodeGeneratorInfo)); | 54 | javaCodeGeneratorInfo.getJavaFileInfo().setPackage(getCurNodePackage((YangNode) javaCodeGeneratorInfo)); |
54 | javaCodeGeneratorInfo.getJavaFileInfo().setPackageFilePath( | 55 | javaCodeGeneratorInfo.getJavaFileInfo().setPackageFilePath( |
55 | getPackageDirPathFromJavaJPackage(javaCodeGeneratorInfo.getJavaFileInfo().getPackage())); | 56 | getPackageDirPathFromJavaJPackage(javaCodeGeneratorInfo.getJavaFileInfo().getPackage())); |
56 | - javaCodeGeneratorInfo.getJavaFileInfo().setBaseCodeGenPath(codeGenDir); | 57 | + javaCodeGeneratorInfo.getJavaFileInfo().setBaseCodeGenPath(yangPlugin.getCodeGenDir()); |
57 | } | 58 | } |
58 | 59 | ||
59 | /** | 60 | /** |
60 | * Updates YANG java file package information for specified package. | 61 | * Updates YANG java file package information for specified package. |
61 | * | 62 | * |
62 | * @param javaCodeGeneratorInfo YANG java file info node | 63 | * @param javaCodeGeneratorInfo YANG java file info node |
63 | - * @param codeGenDir code generation directory | 64 | + * @param yangPlugin YANG plugin config |
64 | * @throws IOException IO operations fails | 65 | * @throws IOException IO operations fails |
65 | */ | 66 | */ |
66 | - private static void updatePackageInfo(JavaCodeGeneratorInfo javaCodeGeneratorInfo, String codeGenDir, String pkg) | 67 | + private static void updatePackageInfo(JavaCodeGeneratorInfo javaCodeGeneratorInfo, YangPluginConfig yangPlugin, |
68 | + String pkg) | ||
67 | throws IOException { | 69 | throws IOException { |
68 | javaCodeGeneratorInfo.getJavaFileInfo() | 70 | javaCodeGeneratorInfo.getJavaFileInfo() |
69 | - .setJavaName(getCaptialCase(getCamelCase(((YangNode) javaCodeGeneratorInfo).getName()))); | 71 | + .setJavaName(getCaptialCase( |
72 | + getCamelCase(((YangNode) javaCodeGeneratorInfo).getName(), yangPlugin.getConflictResolver()))); | ||
70 | javaCodeGeneratorInfo.getJavaFileInfo().setPackage(pkg); | 73 | javaCodeGeneratorInfo.getJavaFileInfo().setPackage(pkg); |
71 | javaCodeGeneratorInfo.getJavaFileInfo().setPackageFilePath( | 74 | javaCodeGeneratorInfo.getJavaFileInfo().setPackageFilePath( |
72 | getPackageDirPathFromJavaJPackage(javaCodeGeneratorInfo.getJavaFileInfo().getPackage())); | 75 | getPackageDirPathFromJavaJPackage(javaCodeGeneratorInfo.getJavaFileInfo().getPackage())); |
73 | - javaCodeGeneratorInfo.getJavaFileInfo().setBaseCodeGenPath(codeGenDir); | 76 | + javaCodeGeneratorInfo.getJavaFileInfo().setBaseCodeGenPath(yangPlugin.getCodeGenDir()); |
74 | } | 77 | } |
75 | 78 | ||
76 | /** | 79 | /** |
... | @@ -96,7 +99,6 @@ public final class YangJavaModelUtils { | ... | @@ -96,7 +99,6 @@ public final class YangJavaModelUtils { |
96 | */ | 99 | */ |
97 | private static void updateLeafInfoInTempFragmentFiles(JavaCodeGeneratorInfo javaCodeGeneratorInfo) | 100 | private static void updateLeafInfoInTempFragmentFiles(JavaCodeGeneratorInfo javaCodeGeneratorInfo) |
98 | throws IOException { | 101 | throws IOException { |
99 | - | ||
100 | if (javaCodeGeneratorInfo instanceof YangLeavesHolder) { | 102 | if (javaCodeGeneratorInfo instanceof YangLeavesHolder) { |
101 | javaCodeGeneratorInfo.getTempJavaCodeFragmentFiles() | 103 | javaCodeGeneratorInfo.getTempJavaCodeFragmentFiles() |
102 | .addCurNodeLeavesInfoToTempFiles((YangNode) javaCodeGeneratorInfo); | 104 | .addCurNodeLeavesInfoToTempFiles((YangNode) javaCodeGeneratorInfo); |
... | @@ -127,17 +129,17 @@ public final class YangJavaModelUtils { | ... | @@ -127,17 +129,17 @@ public final class YangJavaModelUtils { |
127 | * Process generate code entry of YANG node. | 129 | * Process generate code entry of YANG node. |
128 | * | 130 | * |
129 | * @param javaCodeGeneratorInfo YANG java file info node | 131 | * @param javaCodeGeneratorInfo YANG java file info node |
130 | - * @param codeGenDir code generation directory | 132 | + * @param yangPlugin YANG plugin config |
131 | * @param isMultiInstance flag to indicate whether it's a list | 133 | * @param isMultiInstance flag to indicate whether it's a list |
132 | * @throws IOException IO operations fails | 134 | * @throws IOException IO operations fails |
133 | */ | 135 | */ |
134 | - public static void generateCodeOfNode(JavaCodeGeneratorInfo javaCodeGeneratorInfo, String codeGenDir, | 136 | + public static void generateCodeOfNode(JavaCodeGeneratorInfo javaCodeGeneratorInfo, YangPluginConfig yangPlugin, |
135 | boolean isMultiInstance) throws IOException { | 137 | boolean isMultiInstance) throws IOException { |
136 | if (!(javaCodeGeneratorInfo instanceof YangNode)) { | 138 | if (!(javaCodeGeneratorInfo instanceof YangNode)) { |
137 | // TODO:throw exception | 139 | // TODO:throw exception |
138 | } | 140 | } |
139 | - updatePackageInfo(javaCodeGeneratorInfo, codeGenDir); | 141 | + updatePackageInfo(javaCodeGeneratorInfo, yangPlugin); |
140 | - generateTempFiles(javaCodeGeneratorInfo, codeGenDir); | 142 | + generateTempFiles(javaCodeGeneratorInfo, yangPlugin.getCodeGenDir()); |
141 | 143 | ||
142 | javaCodeGeneratorInfo.getTempJavaCodeFragmentFiles() | 144 | javaCodeGeneratorInfo.getTempJavaCodeFragmentFiles() |
143 | .addCurNodeInfoInParentTempFile((YangNode) javaCodeGeneratorInfo, isMultiInstance); | 145 | .addCurNodeInfoInParentTempFile((YangNode) javaCodeGeneratorInfo, isMultiInstance); |
... | @@ -147,16 +149,16 @@ public final class YangJavaModelUtils { | ... | @@ -147,16 +149,16 @@ public final class YangJavaModelUtils { |
147 | * Process generate code entry of root node. | 149 | * Process generate code entry of root node. |
148 | * | 150 | * |
149 | * @param javaCodeGeneratorInfo YANG java file info node | 151 | * @param javaCodeGeneratorInfo YANG java file info node |
150 | - * @param codeGenDir code generation directory | 152 | + * @param yangPlugin YANG plugin config |
151 | * @param rootPkg package of the root node | 153 | * @param rootPkg package of the root node |
152 | * @throws IOException IO operations fails | 154 | * @throws IOException IO operations fails |
153 | */ | 155 | */ |
154 | - public static void generateCodeOfRootNode(JavaCodeGeneratorInfo javaCodeGeneratorInfo, String codeGenDir, | 156 | + public static void generateCodeOfRootNode(JavaCodeGeneratorInfo javaCodeGeneratorInfo, YangPluginConfig yangPlugin, |
155 | String rootPkg) throws IOException { | 157 | String rootPkg) throws IOException { |
156 | if (!(javaCodeGeneratorInfo instanceof YangNode)) { | 158 | if (!(javaCodeGeneratorInfo instanceof YangNode)) { |
157 | // TODO:throw exception | 159 | // TODO:throw exception |
158 | } | 160 | } |
159 | - updatePackageInfo(javaCodeGeneratorInfo, codeGenDir, rootPkg); | 161 | + updatePackageInfo(javaCodeGeneratorInfo, yangPlugin, rootPkg); |
160 | - generateTempFiles(javaCodeGeneratorInfo, codeGenDir); | 162 | + generateTempFiles(javaCodeGeneratorInfo, yangPlugin.getCodeGenDir()); |
161 | } | 163 | } |
162 | } | 164 | } | ... | ... |
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 | +/** | ||
20 | + * Representation of plugin configurations required for YANG utils. | ||
21 | + */ | ||
22 | +public final class YangPluginConfig { | ||
23 | + | ||
24 | + /** | ||
25 | + * Creates an object for YANG plugin config. | ||
26 | + */ | ||
27 | + public YangPluginConfig() { | ||
28 | + } | ||
29 | + | ||
30 | + /** | ||
31 | + * Contains the code generation directory. | ||
32 | + */ | ||
33 | + private String codeGenDir; | ||
34 | + | ||
35 | + /** | ||
36 | + * Contains information of naming conflicts that can be resolved. | ||
37 | + */ | ||
38 | + private YangToJavaNamingConflictUtil conflictResolver; | ||
39 | + | ||
40 | + /** | ||
41 | + * Sets the path of the java code where it has to be generated. | ||
42 | + * | ||
43 | + * @param codeGenDir path of the directory | ||
44 | + */ | ||
45 | + public void setCodeGenDir(String codeGenDir) { | ||
46 | + this.codeGenDir = codeGenDir; | ||
47 | + } | ||
48 | + | ||
49 | + /** | ||
50 | + * Returns the code generation directory path. | ||
51 | + * | ||
52 | + * @return code generation directory | ||
53 | + */ | ||
54 | + public String getCodeGenDir() { | ||
55 | + return codeGenDir; | ||
56 | + } | ||
57 | + | ||
58 | + /** | ||
59 | + * Sets the object. | ||
60 | + * | ||
61 | + * @param conflictResolver object of the class | ||
62 | + */ | ||
63 | + public void setConflictResolver(YangToJavaNamingConflictUtil conflictResolver) { | ||
64 | + this.conflictResolver = conflictResolver; | ||
65 | + } | ||
66 | + | ||
67 | + /** | ||
68 | + * Returns the object. | ||
69 | + * | ||
70 | + * @return object of the class | ||
71 | + */ | ||
72 | + public YangToJavaNamingConflictUtil getConflictResolver() { | ||
73 | + return conflictResolver; | ||
74 | + } | ||
75 | +} |
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 | +/** | ||
20 | + * Representation of YANG to java naming conflict resolver util. | ||
21 | + */ | ||
22 | +public final class YangToJavaNamingConflictUtil { | ||
23 | + | ||
24 | + /** | ||
25 | + * Contains the replacement value for a period. | ||
26 | + */ | ||
27 | + private static String replacementForPeriodInIdentifier; | ||
28 | + | ||
29 | + /** | ||
30 | + * Contains the replacement value for an underscore. | ||
31 | + */ | ||
32 | + private static String replacementForUnderscoreInIdentifier; | ||
33 | + | ||
34 | + /** | ||
35 | + * Contains the replacement value for a hyphen. | ||
36 | + */ | ||
37 | + private static String replacementForHyphenInIdentifier; | ||
38 | + | ||
39 | + /** | ||
40 | + * Creates an object for YANG to java naming conflict util. | ||
41 | + */ | ||
42 | + public YangToJavaNamingConflictUtil() { | ||
43 | + } | ||
44 | + | ||
45 | + /** | ||
46 | + * Sets the replacement value for a period. | ||
47 | + * | ||
48 | + * @param periodReplacement replacement value for period | ||
49 | + */ | ||
50 | + public void setReplacementForPeriod(String periodReplacement) { | ||
51 | + replacementForPeriodInIdentifier = periodReplacement; | ||
52 | + } | ||
53 | + | ||
54 | + /** | ||
55 | + * Returns the replaced period value. | ||
56 | + * | ||
57 | + * @return replaced period | ||
58 | + */ | ||
59 | + public String getReplacementForPeriod() { | ||
60 | + return replacementForPeriodInIdentifier; | ||
61 | + } | ||
62 | + | ||
63 | + /** | ||
64 | + * Sets the replacement value for a hyphen. | ||
65 | + * | ||
66 | + * @param hyphenReplacement replacement value for hyphen | ||
67 | + */ | ||
68 | + public void setReplacementForHyphen(String hyphenReplacement) { | ||
69 | + replacementForHyphenInIdentifier = hyphenReplacement; | ||
70 | + } | ||
71 | + | ||
72 | + /** | ||
73 | + * Returns the replaced hyphen value. | ||
74 | + * | ||
75 | + * @return replaced hyphen | ||
76 | + */ | ||
77 | + public String getReplacementForHyphen() { | ||
78 | + return replacementForHyphenInIdentifier; | ||
79 | + } | ||
80 | + | ||
81 | + /** | ||
82 | + * Sets the replacement value for an underscore. | ||
83 | + * | ||
84 | + * @param underscoreReplacement replacement value for underscore | ||
85 | + */ | ||
86 | + public void setReplacementForUnderscore(String underscoreReplacement) { | ||
87 | + replacementForUnderscoreInIdentifier = underscoreReplacement; | ||
88 | + } | ||
89 | + | ||
90 | + /** | ||
91 | + * Returns the replaced underscore value. | ||
92 | + * | ||
93 | + * @return replaced underscore | ||
94 | + */ | ||
95 | + public String getReplacementForUnderscore() { | ||
96 | + return replacementForUnderscoreInIdentifier; | ||
97 | + } | ||
98 | +} |
... | @@ -408,6 +408,11 @@ public final class UtilConstants { | ... | @@ -408,6 +408,11 @@ public final class UtilConstants { |
408 | public static final String REVISION_PREFIX = "rev"; | 408 | public static final String REVISION_PREFIX = "rev"; |
409 | 409 | ||
410 | /** | 410 | /** |
411 | + * Static attribute for YANG automatic prefix for identifiers with keywords and beginning with digits. | ||
412 | + */ | ||
413 | + public static final String YANG_AUTO_PREFIX = "yangAutoPrefix"; | ||
414 | + | ||
415 | + /** | ||
411 | * Static attribute for YANG version perifx. | 416 | * Static attribute for YANG version perifx. |
412 | */ | 417 | */ |
413 | public static final String VERSION_PREFIX = "v"; | 418 | public static final String VERSION_PREFIX = "v"; |
... | @@ -522,9 +527,29 @@ public final class UtilConstants { | ... | @@ -522,9 +527,29 @@ public final class UtilConstants { |
522 | "synchronized", "this", "throw", "throws", "transient", "true", "try", "void", "volatile", "while"); | 527 | "synchronized", "this", "throw", "throws", "transient", "true", "try", "void", "volatile", "while"); |
523 | 528 | ||
524 | /** | 529 | /** |
525 | - * Static attribute for regex for special char. | 530 | + * Static attribute for regex for all the special characters. |
531 | + */ | ||
532 | + public static final String REGEX_WITH_ALL_SPECIAL_CHAR = "\\p{Punct}+"; | ||
533 | + | ||
534 | + /** | ||
535 | + * Static attribute for regex for three special characters used in identifier. | ||
526 | */ | 536 | */ |
527 | - public static final String REGEX_WITH_SPECIAL_CHAR = "[ : / - @ $ # ' * + , ; = ]+"; | 537 | + public static final String REGEX_FOR_IDENTIFIER_SPECIAL_CHAR = "[. _ -]+"; |
538 | + | ||
539 | + /** | ||
540 | + * Static attribute for regex for period. | ||
541 | + */ | ||
542 | + public static final String REGEX_FOR_PERIOD = "[.]"; | ||
543 | + | ||
544 | + /** | ||
545 | + * Static attribute for regex for underscore. | ||
546 | + */ | ||
547 | + public static final String REGEX_FOR_UNDERSCORE = "[_]"; | ||
548 | + | ||
549 | + /** | ||
550 | + * Static attribute for regex for hyphen. | ||
551 | + */ | ||
552 | + public static final String REGEX_FOR_HYPHEN = "[-]"; | ||
528 | 553 | ||
529 | /** | 554 | /** |
530 | * Static attribute for regex for digits. | 555 | * Static attribute for regex for digits. |
... | @@ -532,6 +557,16 @@ public final class UtilConstants { | ... | @@ -532,6 +557,16 @@ public final class UtilConstants { |
532 | public static final String REGEX_FOR_FIRST_DIGIT = "\\d.*"; | 557 | public static final String REGEX_FOR_FIRST_DIGIT = "\\d.*"; |
533 | 558 | ||
534 | /** | 559 | /** |
560 | + * Static attribute for regex for single letter. | ||
561 | + */ | ||
562 | + public static final String REGEX_FOR_SINGLE_LETTER = "[a-zA-Z]"; | ||
563 | + | ||
564 | + /** | ||
565 | + * Static attribute for regex for digits with single letter. | ||
566 | + */ | ||
567 | + public static final String REGEX_FOR_DIGITS_WITH_SINGLE_LETTER = "[0-9]+[a-zA-Z]"; | ||
568 | + | ||
569 | + /** | ||
535 | * Static attribute for class syntax. | 570 | * Static attribute for class syntax. |
536 | */ | 571 | */ |
537 | public static final String CLASS = "class"; | 572 | public static final String CLASS = "class"; | ... | ... |
... | @@ -140,7 +140,7 @@ public final class JavaDocGen { | ... | @@ -140,7 +140,7 @@ public final class JavaDocGen { |
140 | */ | 140 | */ |
141 | public static String getJavaDoc(JavaDocType type, String name, boolean isList) { | 141 | public static String getJavaDoc(JavaDocType type, String name, boolean isList) { |
142 | 142 | ||
143 | - name = JavaIdentifierSyntax.getSmallCase(JavaIdentifierSyntax.getCamelCase(name)); | 143 | + name = JavaIdentifierSyntax.getSmallCase(JavaIdentifierSyntax.getCamelCase(name, null)); |
144 | String javaDoc = UtilConstants.EMPTY_STRING; | 144 | String javaDoc = UtilConstants.EMPTY_STRING; |
145 | if (type.equals(JavaDocType.IMPL_CLASS)) { | 145 | if (type.equals(JavaDocType.IMPL_CLASS)) { |
146 | javaDoc = generateForImplClass(name); | 146 | javaDoc = generateForImplClass(name); | ... | ... |
... | @@ -73,6 +73,6 @@ public class RevisionListenerTest { | ... | @@ -73,6 +73,6 @@ public class RevisionListenerTest { |
73 | public void processWithoutRevision() throws IOException, ParserException { | 73 | public void processWithoutRevision() throws IOException, ParserException { |
74 | 74 | ||
75 | YangNode node = manager.getDataModel("src/test/resources/RevisionAbsence.yang"); | 75 | YangNode node = manager.getDataModel("src/test/resources/RevisionAbsence.yang"); |
76 | - assertThat(((YangModule) node).getRevision().getRevDate(), notNullValue()); | 76 | + assertThat(((YangModule) node).getRevision().getRevDate(), notNullValue()); |
77 | } | 77 | } |
78 | } | 78 | } |
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
... | @@ -109,7 +109,7 @@ public class SubModuleListenerTest { | ... | @@ -109,7 +109,7 @@ public class SubModuleListenerTest { |
109 | // Checks for the version value in data model tree. | 109 | // Checks for the version value in data model tree. |
110 | assertThat(yangNode.getBelongsTo().getPrefix(), is("On1")); | 110 | assertThat(yangNode.getBelongsTo().getPrefix(), is("On1")); |
111 | //Checks the revision with current date is created for empty revision statement. | 111 | //Checks the revision with current date is created for empty revision statement. |
112 | - assertThat(((YangSubModule) node).getRevision().getRevDate(), notNullValue()); | 112 | + assertThat(((YangSubModule) node).getRevision().getRevDate(), notNullValue()); |
113 | } | 113 | } |
114 | 114 | ||
115 | /** | 115 | /** | ... | ... |
... | @@ -49,10 +49,18 @@ public final class JavaIdentifierSyntaxTest { | ... | @@ -49,10 +49,18 @@ public final class JavaIdentifierSyntaxTest { |
49 | private static final String VERSION_NUMBER = "v1"; | 49 | private static final String VERSION_NUMBER = "v1"; |
50 | private static final String INVALID_NAME_SPACE1 = "byte:#test2:9test3"; | 50 | private static final String INVALID_NAME_SPACE1 = "byte:#test2:9test3"; |
51 | private static final String INVALID_NAME_SPACE2 = "const:#test2://9test3"; | 51 | private static final String INVALID_NAME_SPACE2 = "const:#test2://9test3"; |
52 | - private static final String VALID_NAME_SPACE1 = "_byte.test2._9test3"; | 52 | + private static final String VALID_NAME_SPACE1 = "yangautoprefixbyte.test2.yangautoprefix9test3"; |
53 | - private static final String VALID_NAME_SPACE2 = "_const.test2._9test3"; | 53 | + private static final String VALID_NAME_SPACE2 = "yangautoprefixconst.test2.yangautoprefix9test3"; |
54 | private static final String WITHOUT_CAMEL_CASE = "test-camel-case-identifier"; | 54 | private static final String WITHOUT_CAMEL_CASE = "test-camel-case-identifier"; |
55 | private static final String WITH_CAMEL_CASE = "testCamelCaseIdentifier"; | 55 | private static final String WITH_CAMEL_CASE = "testCamelCaseIdentifier"; |
56 | + private static final String WITHOUT_CAMEL_CASE1 = ".-_try-._-.123"; | ||
57 | + private static final String WITH_CAMEL_CASE1 = "try123"; | ||
58 | + private static final String WITHOUT_CAMEL_CASE2 = "_try"; | ||
59 | + private static final String WITH_CAMEL_CASE2 = "yangAutoPrefixTry"; | ||
60 | + private static final String WITHOUT_CAMEL_CASE3 = "-1-123g-123ga-a"; | ||
61 | + private static final String WITH_CAMEL_CASE3 = "yangAutoPrefix1123G123Gaa"; | ||
62 | + private static final String WITHOUT_CAMEL_CASE4 = "a-b-c-d-e-f-g-h"; | ||
63 | + private static final String WITH_CAMEL_CASE4 = "aBcDeFgh"; | ||
56 | private static final String WITHOUT_CAPITAL = "test_this"; | 64 | private static final String WITHOUT_CAPITAL = "test_this"; |
57 | private static final String WITH_CAPITAL = "Test_this"; | 65 | private static final String WITH_CAPITAL = "Test_this"; |
58 | private static final String WITH_SMALL = "test_this"; | 66 | private static final String WITH_SMALL = "test_this"; |
... | @@ -130,8 +138,16 @@ public final class JavaIdentifierSyntaxTest { | ... | @@ -130,8 +138,16 @@ public final class JavaIdentifierSyntaxTest { |
130 | */ | 138 | */ |
131 | @Test | 139 | @Test |
132 | public void getCamelCaseTest() { | 140 | public void getCamelCaseTest() { |
133 | - String camelCase = getCamelCase(WITHOUT_CAMEL_CASE); | 141 | + String camelCase = getCamelCase(WITHOUT_CAMEL_CASE, null); |
134 | assertThat(camelCase.equals(WITH_CAMEL_CASE), is(true)); | 142 | assertThat(camelCase.equals(WITH_CAMEL_CASE), is(true)); |
143 | + String camelCase1 = getCamelCase(WITHOUT_CAMEL_CASE1, null); | ||
144 | + assertThat(camelCase1.equals(WITH_CAMEL_CASE1), is(true)); | ||
145 | + String camelCase2 = getCamelCase(WITHOUT_CAMEL_CASE2, null); | ||
146 | + assertThat(camelCase2.equals(WITH_CAMEL_CASE2), is(true)); | ||
147 | + String camelCase3 = getCamelCase(WITHOUT_CAMEL_CASE3, null); | ||
148 | + assertThat(camelCase3.equals(WITH_CAMEL_CASE3), is(true)); | ||
149 | + String camelCase4 = getCamelCase(WITHOUT_CAMEL_CASE4, null); | ||
150 | + assertThat(camelCase4.equals(WITH_CAMEL_CASE4), is(true)); | ||
135 | } | 151 | } |
136 | 152 | ||
137 | /** | 153 | /** | ... | ... |
-
Please register or login to post a comment