[ONOS-3875] Implementation of maven plugin.
Change-Id: Id2930fec97037dc238a35fea0b118e6a00300f8e
diff --git a/src/main/java/org/onosproject/yangutils/parser/YangUtilsParser.java b/src/main/java/org/onosproject/yangutils/parser/YangUtilsParser.java
index 3385e2d..19d9f3b 100644
--- a/src/main/java/org/onosproject/yangutils/parser/YangUtilsParser.java
+++ b/src/main/java/org/onosproject/yangutils/parser/YangUtilsParser.java
@@ -17,6 +17,9 @@
package org.onosproject.yangutils.parser;
import org.onosproject.yangutils.datamodel.YangNode;
+import org.onosproject.yangutils.parser.exceptions.ParserException;
+
+import java.io.IOException;
/**
* Abstraction of entity which provides parser service of YANG files for yangutils-maven-plugin.
@@ -28,6 +31,7 @@
*
* @param file input YANG file
* @return YangNode root node of the data model tree
+ * @throws ParserException when fails to get the data model
*/
- YangNode getDataModel(String file);
+ YangNode getDataModel(String file) throws IOException, ParserException;
}
diff --git a/src/main/java/org/onosproject/yangutils/plugin/manager/YangUtilManager.java b/src/main/java/org/onosproject/yangutils/plugin/manager/YangUtilManager.java
index cc0c225..b8c9f35 100644
--- a/src/main/java/org/onosproject/yangutils/plugin/manager/YangUtilManager.java
+++ b/src/main/java/org/onosproject/yangutils/plugin/manager/YangUtilManager.java
@@ -16,25 +16,94 @@
package org.onosproject.yangutils.plugin.manager;
+import java.io.File;
+import java.io.IOException;
+import java.util.Iterator;
+import java.util.List;
+
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.plugins.annotations.LifecyclePhase;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.ResolutionScope;
+import org.apache.maven.project.MavenProject;
+import org.apache.maven.plugins.annotations.Parameter;
+import org.apache.maven.plugins.annotations.Component;
+import org.sonatype.plexus.build.incremental.BuildContext;
+
+import org.onosproject.yangutils.datamodel.YangNode;
+import org.onosproject.yangutils.parser.YangUtilsParser;
+import org.onosproject.yangutils.parser.exceptions.ParserException;
+import org.onosproject.yangutils.utils.io.impl.YangFileScanner;
/**
-* ONOS YANG utility maven plugin.
-* Goal of plugin is yang2java
-* Execution phase in generate-sources
-* requiresDependencyResolution at compile time
-*/
+ * ONOS YANG utility maven plugin.
+ * Goal of plugin is yang2java
+ * Execution phase in generate-sources
+ * requiresDependencyResolution at compile time
+ */
@Mojo(name = "yang2java", defaultPhase = LifecyclePhase.GENERATE_SOURCES,
- requiresDependencyResolution = ResolutionScope.COMPILE, requiresProject = true)
+requiresDependencyResolution = ResolutionScope.COMPILE, requiresProject = true)
public class YangUtilManager extends AbstractMojo {
+ /**
+ * Source directory for YANG files.
+ */
+ @Parameter(property = "yangFilesDir", defaultValue = "src/main/yang")
+ private String yangFilesDir;
+
+ /**
+ * Output directory.
+ */
+ @Parameter(property = "project.build.outputDirectory", required = true, defaultValue = "target/classes")
+ private File outputDirectory;
+
+ /**
+ * Current maven project.
+ */
+ @Parameter(property = "project", required = true, readonly = true, defaultValue = "${project}")
+ private MavenProject project;
+
+ /**
+ * Build context.
+ */
+ @Component
+ private BuildContext context;
+
+ private YangUtilsParser yangUtilsParser;
+ private String baseDir;
+ private String searchDir;
+
+ /**
+ * Set current project.
+ *
+ * @param project maven project.
+ */
+ public void setCurrentProject(final MavenProject project) {
+ this.project = project;
+ }
+
@Override
public void execute() throws MojoExecutionException, MojoFailureException {
- //TODO: implement the MOJO plugin
+
+ try {
+ baseDir = project.getBasedir().toString();
+ searchDir = baseDir + File.separator + yangFilesDir;
+
+ List<String> yangFiles = YangFileScanner.getYangFiles(searchDir);
+ Iterator<String> yangFileIterator = yangFiles.iterator();
+ while (yangFileIterator.hasNext()) {
+ String yangFile = yangFileIterator.next();
+ try {
+ YangNode yangNode = yangUtilsParser.getDataModel(yangFile);
+ //TODO: send this data model to translator and create the corresponding java files.
+ } catch (ParserException e) {
+ getLog().info("Invalid yang file.");
+ }
+ }
+ } catch (final IOException e) {
+ getLog().info("Exception occured");
+ }
}
-}
+}
\ No newline at end of file