Class AbstractMetaschemaMojo

java.lang.Object
org.apache.maven.plugin.AbstractMojo
gov.nist.secauto.metaschema.maven.plugin.AbstractMetaschemaMojo
All Implemented Interfaces:
org.apache.maven.plugin.ContextEnabled, org.apache.maven.plugin.Mojo
Direct Known Subclasses:
GenerateSchemaMojo, GenerateSourcesMojo

public abstract class AbstractMetaschemaMojo extends org.apache.maven.plugin.AbstractMojo
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected String[]
    A set of exclusion patterns used to prevent certain files from being processed.
    protected String[]
    A set of inclusion patterns used to select which Metaschema modules are to be processed.
    protected File
    The directory where the staleFile is found.

    Fields inherited from interface org.apache.maven.plugin.Mojo

    ROLE
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    protected final org.sonatype.plexus.build.incremental.BuildContext
    The BuildContext is used to identify which files or directories were modified since last build.
    protected List<IConstraintSet>
    Get the configured collection of constraints.
    protected final String
    Gets the file encoding to use for generated classes.
    protected final org.apache.maven.project.MavenProject
    Retrieve the Maven project context.
    protected Stream<File>
    Retrieve a stream of Module file sources.
    org.apache.maven.plugin.MojoExecution
    Retrieve the mojo execution context.
    protected File
    Retrieve the directory where generated classes will be stored.
    protected final File
    Gets the staleFile for this execution.
    protected abstract String
    Get the name of the file that is used to detect staleness.
    protected boolean
    Determine if code generation is required.
    Construct a new module loader based on the provided mojo configuration.
    protected void
    setOutputDirectory(File outputDirectory)
    Set the directory where generated classes will be stored.
    protected boolean
    Determine if the execution of this mojo should be skipped.

    Methods inherited from class org.apache.maven.plugin.AbstractMojo

    getLog, getPluginContext, setLog, setPluginContext

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface org.apache.maven.plugin.Mojo

    execute
  • Field Details

    • staleFileDirectory

      @Parameter(defaultValue="${project.build.directory}/metaschema", readonly=true, required=true) protected File staleFileDirectory

      The directory where the staleFile is found. The staleFile is used to determine if re-generation of generated Java classes is needed, by recording when the last build occurred.

      This directory is expected to be located within the ${project.build.directory}, to ensure that code (re)generation occurs after cleaning the project.

    • includes

      @Parameter protected String[] includes
      A set of inclusion patterns used to select which Metaschema modules are to be processed. By default, all files are processed.
    • excludes

      @Parameter protected String[] excludes
      A set of exclusion patterns used to prevent certain files from being processed. By default, this set is empty such that no files are excluded.
  • Constructor Details

  • Method Details

    • getBuildContext

      protected final org.sonatype.plexus.build.incremental.BuildContext getBuildContext()
      The BuildContext is used to identify which files or directories were modified since last build. This is used to determine if Module-based generation must be performed again.
      Returns:
      the active Plexus BuildContext.
    • getMavenProject

      protected final org.apache.maven.project.MavenProject getMavenProject()
      Retrieve the Maven project context.
      Returns:
      The active MavenProject.
    • getMojoExecution

      public org.apache.maven.plugin.MojoExecution getMojoExecution()
      Retrieve the mojo execution context.
      Returns:
      The active MojoExecution.
    • getOutputDirectory

      protected File getOutputDirectory()
      Retrieve the directory where generated classes will be stored.
      Returns:
      the directory
    • setOutputDirectory

      protected void setOutputDirectory(File outputDirectory)
      Set the directory where generated classes will be stored.
      Parameters:
      outputDirectory - the directory to use
    • getEncoding

      protected final String getEncoding()
      Gets the file encoding to use for generated classes.

      The algorithm for finding the encoding to use is as follows (where the first non-null value found is used for encoding):

      1. If the configuration property is explicitly given within the plugin's configuration, use that value.
      2. If the Maven property project.build.sourceEncoding is defined, use its value.
      3. Otherwise use the value from the system property file.encoding.
      Returns:
      The encoding to be used by this AbstractJaxbMojo and its tools.
    • getModuleSources

      Retrieve a stream of Module file sources.
      Returns:
      the stream
    • getConstraints

      protected List<IConstraintSet> getConstraints(@NonNull IBindingContext bindingContext) throws MetaschemaException, IOException
      Get the configured collection of constraints.
      Parameters:
      bindingContext - the Metaschema binding context to use when loading the constraints
      Returns:
      the loaded constraints
      Throws:
      MetaschemaException - if a binding exception occurred while loading the constraints
      IOException - if an error occurred while reading the constraints
    • shouldExecutionBeSkipped

      protected boolean shouldExecutionBeSkipped()
      Determine if the execution of this mojo should be skipped.
      Returns:
      true if the mojo execution should be skipped, or false otherwise
    • getStaleFileName

      protected abstract String getStaleFileName()
      Get the name of the file that is used to detect staleness.
      Returns:
      the name
    • getStaleFile

      protected final File getStaleFile()
      Gets the staleFile for this execution.
      Returns:
      the staleFile
    • isGenerationRequired

      protected boolean isGenerationRequired()
      Determine if code generation is required. This is done by comparing the last modified time of each Module source file against the stale file managed by this plugin.
      Returns:
      true if the code generation is needed, or false otherwise
    • newModuleLoader

      @NonNull protected BindingModuleLoader newModuleLoader() throws org.apache.maven.plugin.MojoExecutionException
      Construct a new module loader based on the provided mojo configuration.
      Returns:
      the module loader
      Throws:
      org.apache.maven.plugin.MojoExecutionException - if an error occurred while loading the configured constraints