Class AbstractIDLJMojo

  • All Implemented Interfaces:
    org.apache.maven.plugin.ContextEnabled, org.apache.maven.plugin.Mojo
    Direct Known Subclasses:
    IDLJMojo, TestIDLJMojo

    public abstract class AbstractIDLJMojo
    extends org.apache.maven.plugin.AbstractMojo
    This is abstract class used to decrease the code needed to the creation of the compiler MOJO.
    Version:
    $Id$
    • Field Detail

      • sources

        @Parameter
        private java.util.List<Source> sources
        A List of Source configurations to compile.
      • debug

        @Parameter
        private boolean debug
        Activate more detailed debug messages.
      • failOnError

        @Parameter(defaultValue="true")
        private boolean failOnError
        Should the plugin fail the build if there's an error while generating sources from IDLs.
      • project

        @Parameter(property="project",
                   required=true,
                   readonly=true)
        private org.apache.maven.project.MavenProject project
      • staleMillis

        @Parameter(property="lastModGranularityMs",
                   defaultValue="0")
        private int staleMillis
        The granularity in milliseconds of the last modification date for testing whether a source needs recompilation.
      • projectHelper

        @Component(role=org.apache.maven.project.MavenProjectHelper.class)
        private org.apache.maven.project.MavenProjectHelper projectHelper
        The maven project helper class for adding resources.
      • timestampDirectory

        @Parameter(defaultValue="${project.build.directory}/idlj-timestamp")
        private java.io.File timestampDirectory
        The directory to store the processed grammars. Used so that grammars are not constantly regenerated.
      • compiler

        @Parameter
        private java.lang.String compiler
        The compiler to use. Current options are the JDK idlj compiler, Glassfish and JacORB. Should be either "idlj", "glassfish", or "jacorb". If not specified, will select idlj or glassfish, based on Java version
      • dependencies

        private AbstractIDLJMojo.DependenciesFacade dependencies
        The interface between this class and the rest of the world - unit tests replace the default implementation.
    • Constructor Detail

      • AbstractIDLJMojo

        protected AbstractIDLJMojo()
        Creates the abstract class using a production implementation of the dependencies.
    • Method Detail

      • getSourceDirectory

        protected abstract java.io.File getSourceDirectory()
        Returns:
        the source directory that contains the IDL files
      • getIncludeDirs

        protected abstract java.io.File[] getIncludeDirs()
        Returns:
        the File[] of the directories to use as include directories for the compilation
      • getOutputDirectory

        protected abstract java.io.File getOutputDirectory()
        Returns:
        the path of the directory that will contains the results of the compilation
      • execute

        public void execute()
                     throws org.apache.maven.plugin.MojoExecutionException
        Execute the goal of the MOJO that is: compiling the IDL files
        Throws:
        org.apache.maven.plugin.MojoExecutionException - if the compilation fails or the compiler crashes
      • prepareGeneratedSourceDirectory

        private void prepareGeneratedSourceDirectory​(java.io.File directory)
                                              throws org.apache.maven.plugin.MojoExecutionException
        Throws:
        org.apache.maven.plugin.MojoExecutionException
      • isSourceSpecified

        private boolean isSourceSpecified()
      • translateInferredSource

        private void translateInferredSource​(CompilerTranslator translator)
                                      throws org.apache.maven.plugin.MojoExecutionException
        Throws:
        org.apache.maven.plugin.MojoExecutionException
      • translateSources

        private void translateSources​(CompilerTranslator translator,
                                      java.util.List<Source> sourceList)
                               throws org.apache.maven.plugin.MojoExecutionException
        Throws:
        org.apache.maven.plugin.MojoExecutionException
      • createTranslator

        private CompilerTranslator createTranslator()
                                             throws org.apache.maven.plugin.MojoExecutionException
        Throws:
        org.apache.maven.plugin.MojoExecutionException
      • failIfNotWriteable

        private void failIfNotWriteable​(java.io.File directory)
                                 throws org.apache.maven.plugin.MojoExecutionException
        Throws:
        org.apache.maven.plugin.MojoExecutionException
      • createIfAbsent

        private void createIfAbsent​(java.io.File directory)
      • processSource

        private void processSource​(Source source,
                                   CompilerTranslator translator)
                            throws org.apache.maven.plugin.MojoExecutionException
        Compile the IDL files located in the given source path.
        Parameters:
        source - the Source that specify which file compile with arguments to use for the source
        translator - the CompilerTranslator that raprresents idl compiler backend that will be used
        Throws:
        org.apache.maven.plugin.MojoExecutionException - if the compilation fails or the compiler crashes
      • processIdlFile

        private void processIdlFile​(Source source,
                                    CompilerTranslator translator,
                                    java.io.File idlFile)
                             throws org.apache.maven.plugin.MojoExecutionException
        Throws:
        org.apache.maven.plugin.MojoExecutionException
      • translateIdlFile

        private void translateIdlFile​(java.io.File idlFile,
                                      Source source,
                                      CompilerTranslator translator)
                               throws org.apache.maven.plugin.MojoExecutionException
        Throws:
        org.apache.maven.plugin.MojoExecutionException
      • copyToTimestampDirectory

        private void copyToTimestampDirectory​(java.io.File idlFile)
                                       throws org.apache.maven.plugin.MojoExecutionException,
                                              java.io.IOException
        Throws:
        org.apache.maven.plugin.MojoExecutionException
        java.io.IOException
      • reportProcessingNeeded

        private void reportProcessingNeeded​(java.util.Set<java.io.File> staleGrammars)
                                     throws org.apache.maven.plugin.MojoExecutionException
        Throws:
        org.apache.maven.plugin.MojoExecutionException
      • computeStaleGrammars

        private java.util.Set<java.io.File> computeStaleGrammars​(Source source)
                                                          throws org.apache.maven.plugin.MojoExecutionException
        Determine which idl files need to be compiled.
        Parameters:
        source - the Source that represents which files to compile
        Returns:
        a set of files that need to be compiled
        Throws:
        org.apache.maven.plugin.MojoExecutionException - if the selection of the files to compile fails
      • getStaleSources

        private java.util.Set<java.io.File> getStaleSources​(org.codehaus.plexus.compiler.util.scan.SourceInclusionScanner scanner,
                                                            java.io.File sourceDir)
                                                     throws org.apache.maven.plugin.MojoExecutionException
        Throws:
        org.apache.maven.plugin.MojoExecutionException
      • tryToGetStaleSources

        private java.util.Set<java.io.File> tryToGetStaleSources​(org.codehaus.plexus.compiler.util.scan.SourceInclusionScanner scanner,
                                                                 java.io.File sourceDir)
                                                          throws org.codehaus.plexus.compiler.util.scan.InclusionScanException
        Throws:
        org.codehaus.plexus.compiler.util.scan.InclusionScanException
      • isExistingDirectory

        private boolean isExistingDirectory​(java.io.File sourceDir)
      • createIdlScanner

        private org.codehaus.plexus.compiler.util.scan.SourceInclusionScanner createIdlScanner​(Source source)
      • getNonNullSet

        private java.util.Set<java.lang.String> getNonNullSet​(java.lang.String comment,
                                                              java.util.Set<java.lang.String> set,
                                                              java.lang.String... defaultValues)
      • addCompileSourceRoot

        protected abstract void addCompileSourceRoot​(java.io.File directory)
        Add generated sources in compile source root
        Parameters:
        directory - a directory containing generated java files to be compiled.
      • getProject

        protected org.apache.maven.project.MavenProject getProject()
        Returns:
        the current MavenProject instance
      • getProjectHelper

        protected org.apache.maven.project.MavenProjectHelper getProjectHelper()
        Returns:
        the current MavenProjectHelper instance