org.jomc.mojo
Class AbstractJomcMojo

Package class diagram package AbstractJomcMojo
java.lang.Object
  extended by org.apache.maven.plugin.AbstractMojo
      extended by org.jomc.mojo.AbstractJomcMojo
All Implemented Interfaces:
ContextEnabled, Mojo
Direct Known Subclasses:
AbstractClassesCommitMojo, AbstractClassesValidateMojo, AbstractClasspathValidateMojo, AbstractModelShowMojo, AbstractResourcesWriteMojo, AbstractSourcesManageMojo, MainModelValidateMojo, TestModelValidateMojo

public abstract class AbstractJomcMojo
extends AbstractMojo

Base class for executing JomcTools.

Version:
$JOMC: AbstractJomcMojo.java 4200 2012-01-25 09:46:13Z schulte2005 $
Author:
Christian Schulte

Field Summary
 
Fields inherited from interface org.apache.maven.plugin.Mojo
ROLE
 
Constructor Summary
AbstractJomcMojo()
          Creates a new AbstractJomcMojo instance.
 
Method Summary
protected  void assertValidParameters()
          Validates the parameters of the goal.
protected  void assertValidResources(Collection<? extends ResourceType> resources)
          Validates a given resource collection.
protected  ClassFileProcessor createClassFileProcessor(ModelContext context)
          Creates a new tool instance for processing class files.
protected
<T extends JomcTool>
T
createJomcTool(ModelContext context, String className, Class<T> type)
          Creates a new JomcTool object for a given class name and type.
protected  ModelContext createModelContext(ClassLoader classLoader)
          Creates a new model context instance for a given class loader.
protected
<T> T
createObject(String className, Class<T> type)
          Creates a new object for a given class name and type.
protected  ResourceFileProcessor createResourceFileProcessor(ModelContext context)
          Creates a new tool instance for processing resource files.
protected  SourceFileProcessor createSourceFileProcessor(ModelContext context)
          Creates a new tool instance for processing source files.
 void execute()
          
protected abstract  void executeTool()
          Executes this tool.
protected  File getAbsoluteFile(String name)
          Gets an absolute File instance for a given name.
protected  URL getDirectory(String location)
          Creates an URL for a given directory location.
protected abstract  String getExecutionStrategy()
          Gets the execution strategy of the instance.
protected abstract  String getGoal()
          Gets the goal of the instance.
protected  ClassLoader getMainClassLoader()
          Gets the project's runtime class loader of the instance.
protected  Set<String> getMainClasspathElements()
          Gets the project's runtime class path elements.
protected  MavenProject getMavenProject()
          Gets the Maven project of the instance.
protected  MavenSession getMavenSession()
          Gets the Maven session of the instance.
protected  String getModel()
          Gets the identifier of the model to process.
protected  Model getModel(ModelContext context)
          Gets the model to process.
protected  String getModuleName()
          Gets the name of the module to process.
protected  File getOutputDirectory()
          Gets the directory holding the compiled class files of the project.
protected  Properties getProperties(PropertiesResourceType propertiesResourceType)
          Creates a new Properties instance from a PropertiesResourceType.
protected  File getReportOutputDirectory()
          Gets the directory holding the reports of the project.
protected  URL getResource(String location)
          Creates an URL for a given resource location.
protected  File getSessionDirectory()
          Gets the directory holding the session related files of the project.
protected  File getSourceDirectory()
          Gets the directory holding the source files of the project.
protected  ClassLoader getTestClassLoader()
          Gets the project's test class loader of the instance.
protected  Set<String> getTestClasspathElements()
          Gets the project's test class path elements.
protected  String getTestModuleName()
          Gets the name of the test module to process.
protected  File getTestOutputDirectory()
          Gets the directory holding the compiled test class files of the project.
protected  File getTestSourceDirectory()
          Gets the directory holding the test source files of the project.
protected  Transformer getTransformer(TransformerResourceType resource)
          Creates a new Transformer from a given TransformerResourceType.
protected  boolean isClassProcessingEnabled()
          Gets a flag indicating the processing of classes is enabled.
protected  boolean isExecutionPermitted()
          Gets a flag indicating the current execution is permitted.
protected  boolean isLoggable(Level level)
          Tests if messages at a given level are logged.
protected  boolean isModelObjectClasspathResolutionEnabled()
          Gets a flag indicating model object class path resolution is enabled.
protected  boolean isModelProcessingEnabled()
          Gets a flag indicating the processing of models is enabled.
protected  boolean isResourceProcessingEnabled()
          Gets a flag indicating the processing of resources is enabled.
protected  boolean isSourceProcessingEnabled()
          Gets a flag indicating the processing of sources is enabled.
protected  boolean isVerbose()
          Gets a flag indicating verbose output is enabled.
protected  void log(Level level, String message, Throwable throwable)
          Logs a message and throwable at a given level.
protected  void log(ModelContext context, Level level, ModelValidationReport report)
          Logs a ModelValidationReport.
protected  void logMissingModule(String module)
          Logs a message stating that a module has not been found.
protected  void logProcessingModel(String toolName, String model)
          Logs a message stating a tool is starting to process a model.
protected  void logProcessingModule(String toolName, String module)
          Logs a message stating a tool is starting to process a module.
protected  void logSeparator()
          Logs a separator.
protected  void logSeparator(Level level)
          Deprecated. As of JOMC 1.1, please use method logSeparator(). This method will be removed in version 2.0.
protected  void logToolSuccess(String toolName)
          Logs a message stating that a tool successfully completed execution.
protected  void setClassProcessingEnabled(boolean value)
          Sets the flag indicating the processing of classes is enabled.
protected  void setModelObjectClasspathResolutionEnabled(boolean value)
          Sets the flag indicating model object class path resolution is enabled.
protected  void setModelProcessingEnabled(boolean value)
          Sets the flag indicating the processing of models is enabled.
protected  void setResourceProcessingEnabled(boolean value)
          Sets the flag indicating the processing of resources is enabled.
protected  void setSourceProcessingEnabled(boolean value)
          Sets the flag indicating the processing of sources is enabled.
protected  void setupJomcTool(ModelContext context, JomcTool tool)
          Configures a JomcTool instance.
protected  void setupModelContext(ModelContext context)
          Configures a ModelContext instance.
protected  void setVerbose(boolean value)
          Sets the flag indicating verbose output is enabled.
 
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
 

Constructor Detail

AbstractJomcMojo

public AbstractJomcMojo()
Creates a new AbstractJomcMojo instance.

Method Detail

execute

public void execute()
             throws MojoExecutionException,
                    MojoFailureException

Throws:
MojoExecutionException
MojoFailureException
See Also:
assertValidParameters(), isExecutionPermitted(), executeTool()

assertValidParameters

protected void assertValidParameters()
                              throws MojoFailureException
Validates the parameters of the goal.

Throws:
MojoFailureException - if illegal parameter values are detected.
Since:
1.2
See Also:
assertValidResources(java.util.Collection)

assertValidResources

protected final void assertValidResources(Collection<? extends ResourceType> resources)
                                   throws MojoFailureException
Validates a given resource collection.

Parameters:
resources - The resource collection to validate or null.
Throws:
MojoFailureException - if a location property of a given resource holds a null value or a given PropertiesResourceType holds an illegal format.
Since:
1.2
See Also:
assertValidParameters(), PropertiesResourceType.isFormatSupported(java.lang.String)

executeTool

protected abstract void executeTool()
                             throws Exception
Executes this tool.

Throws:
Exception - if execution of this tool fails.

getGoal

protected abstract String getGoal()
                           throws MojoExecutionException
Gets the goal of the instance.

Returns:
The goal of the instance.
Throws:
MojoExecutionException - if getting the goal of the instance fails.
Since:
1.1

getExecutionStrategy

protected abstract String getExecutionStrategy()
                                        throws MojoExecutionException
Gets the execution strategy of the instance.

Returns:
The execution strategy of the instance.
Throws:
MojoExecutionException - if getting the execution strategy of the instance fails.
Since:
1.1

isExecutionPermitted

protected boolean isExecutionPermitted()
                                throws MojoExecutionException
Gets a flag indicating the current execution is permitted.

Returns:
true, if the current execution is permitted; false, if the current execution is suppressed.
Throws:
MojoExecutionException - if getting the flag fails.
Since:
1.1
See Also:
getGoal(), getExecutionStrategy()

getMavenProject

protected MavenProject getMavenProject()
                                throws MojoExecutionException
Gets the Maven project of the instance.

Returns:
The Maven project of the instance.
Throws:
MojoExecutionException - if getting the Maven project of the instance fails.

getMavenSession

protected MavenSession getMavenSession()
                                throws MojoExecutionException
Gets the Maven session of the instance.

Returns:
The Maven session of the instance.
Throws:
MojoExecutionException - if getting the Maven session of the instance fails.
Since:
1.1

getAbsoluteFile

protected File getAbsoluteFile(String name)
                        throws MojoExecutionException
Gets an absolute File instance for a given name.

This method constructs a new File instance using the given name. If the resulting file is not absolute, the value of the basedir property of the current Maven project is prepended.

Parameters:
name - The name to get an absolute File instance for.
Returns:
An absolute File instance constructed from name.
Throws:
MojoExecutionException - if getting an absolute File instance for name fails.
NullPointerException - if name is null.
Since:
1.1

getOutputDirectory

protected File getOutputDirectory()
                           throws MojoExecutionException
Gets the directory holding the compiled class files of the project.

Returns:
The directory holding the compiled class files of the project.
Throws:
MojoExecutionException - if getting the directory fails.
Since:
1.1

getTestOutputDirectory

protected File getTestOutputDirectory()
                               throws MojoExecutionException
Gets the directory holding the compiled test class files of the project.

Returns:
The directory holding the compiled test class files of the project.
Throws:
MojoExecutionException - if getting the directory fails.
Since:
1.1

getSourceDirectory

protected File getSourceDirectory()
                           throws MojoExecutionException
Gets the directory holding the source files of the project.

Returns:
The directory holding the source files of the project.
Throws:
MojoExecutionException - if getting the directory fails.
Since:
1.1

getTestSourceDirectory

protected File getTestSourceDirectory()
                               throws MojoExecutionException
Gets the directory holding the test source files of the project.

Returns:
The directory holding the test source files of the project.
Throws:
MojoExecutionException - if getting the directory fails.
Since:
1.1

getSessionDirectory

protected File getSessionDirectory()
                            throws MojoExecutionException
Gets the directory holding the session related files of the project.

Returns:
The directory holding the session related files of the project.
Throws:
MojoExecutionException - if getting the directory fails.
Since:
1.1

getReportOutputDirectory

protected File getReportOutputDirectory()
                                 throws MojoExecutionException
Gets the directory holding the reports of the project.

Returns:
The directory holding the reports of the project.
Throws:
MojoExecutionException - if getting the directory fails.
Since:
1.1

getMainClassLoader

protected ClassLoader getMainClassLoader()
                                  throws MojoExecutionException
Gets the project's runtime class loader of the instance.

Returns:
The project's runtime class loader of the instance.
Throws:
MojoExecutionException - if getting the class loader fails.

getTestClassLoader

protected ClassLoader getTestClassLoader()
                                  throws MojoExecutionException
Gets the project's test class loader of the instance.

Returns:
The project's test class loader of the instance.
Throws:
MojoExecutionException - if getting the class loader fails.

getMainClasspathElements

protected Set<String> getMainClasspathElements()
                                        throws MojoExecutionException
Gets the project's runtime class path elements.

Returns:
A set of class path element strings.
Throws:
MojoExecutionException - if getting the class path elements fails.

getTestClasspathElements

protected Set<String> getTestClasspathElements()
                                        throws MojoExecutionException
Gets the project's test class path elements.

Returns:
A set of class path element strings.
Throws:
MojoExecutionException - if getting the class path elements fails.

isVerbose

protected final boolean isVerbose()
                           throws MojoExecutionException
Gets a flag indicating verbose output is enabled.

Returns:
true, if verbose output is enabled; false, if information messages are suppressed.
Throws:
MojoExecutionException - if getting the flag fails.
Since:
1.1

setVerbose

protected final void setVerbose(boolean value)
                         throws MojoExecutionException
Sets the flag indicating verbose output is enabled.

Parameters:
value - true, to enable verbose output; false, to suppress information messages.
Throws:
MojoExecutionException - if setting the flag fails.
Since:
1.1

isSourceProcessingEnabled

protected final boolean isSourceProcessingEnabled()
                                           throws MojoExecutionException
Gets a flag indicating the processing of sources is enabled.

Returns:
true, if processing of sources is enabled; false, else.
Throws:
MojoExecutionException - if getting the flag fails.

setSourceProcessingEnabled

protected final void setSourceProcessingEnabled(boolean value)
                                         throws MojoExecutionException
Sets the flag indicating the processing of sources is enabled.

Parameters:
value - true, to enable processing of sources; false, to disable processing of sources.
Throws:
MojoExecutionException - if setting the flag fails.
Since:
1.1

isResourceProcessingEnabled

protected final boolean isResourceProcessingEnabled()
                                             throws MojoExecutionException
Gets a flag indicating the processing of resources is enabled.

Returns:
true, if processing of resources is enabled; false, else.
Throws:
MojoExecutionException - if getting the flag fails.

setResourceProcessingEnabled

protected final void setResourceProcessingEnabled(boolean value)
                                           throws MojoExecutionException
Sets the flag indicating the processing of resources is enabled.

Parameters:
value - true, to enable processing of resources; false, to disable processing of resources.
Throws:
MojoExecutionException - if setting the flag fails.
Since:
1.1

isClassProcessingEnabled

protected final boolean isClassProcessingEnabled()
                                          throws MojoExecutionException
Gets a flag indicating the processing of classes is enabled.

Returns:
true, if processing of classes is enabled; false, else.
Throws:
MojoExecutionException - if getting the flag fails.

setClassProcessingEnabled

protected final void setClassProcessingEnabled(boolean value)
                                        throws MojoExecutionException
Sets the flag indicating the processing of classes is enabled.

Parameters:
value - true, to enable processing of classes; false, to disable processing of classes.
Throws:
MojoExecutionException - if setting the flag fails.
Since:
1.1

isModelProcessingEnabled

protected final boolean isModelProcessingEnabled()
                                          throws MojoExecutionException
Gets a flag indicating the processing of models is enabled.

Returns:
true, if processing of models is enabled; false, else.
Throws:
MojoExecutionException - if getting the flag fails.

setModelProcessingEnabled

protected final void setModelProcessingEnabled(boolean value)
                                        throws MojoExecutionException
Sets the flag indicating the processing of models is enabled.

Parameters:
value - true, to enable processing of models; false, to disable processing of models.
Throws:
MojoExecutionException - if setting the flag fails.
Since:
1.1

isModelObjectClasspathResolutionEnabled

protected final boolean isModelObjectClasspathResolutionEnabled()
                                                         throws MojoExecutionException
Gets a flag indicating model object class path resolution is enabled.

Returns:
true, if model object class path resolution is enabled; false, else.
Throws:
MojoExecutionException - if getting the flag fails.

setModelObjectClasspathResolutionEnabled

protected final void setModelObjectClasspathResolutionEnabled(boolean value)
                                                       throws MojoExecutionException
Sets the flag indicating model object class path resolution is enabled.

Parameters:
value - true, to enable model object class path resolution; false, to disable model object class path resolution.
Throws:
MojoExecutionException - if setting the flag fails.
Since:
1.1

getModel

protected String getModel()
                   throws MojoExecutionException
Gets the identifier of the model to process.

Returns:
The identifier of the model to process.
Throws:
MojoExecutionException - if getting the identifier fails.

getModuleName

protected String getModuleName()
                        throws MojoExecutionException
Gets the name of the module to process.

Returns:
The name of the module to process.
Throws:
MojoExecutionException - if getting the name of the module fails.

getTestModuleName

protected String getTestModuleName()
                            throws MojoExecutionException
Gets the name of the test module to process.

Returns:
The name of the test module to process.
Throws:
MojoExecutionException - if getting the name of the test module fails.

getModel

protected Model getModel(ModelContext context)
                  throws MojoExecutionException
Gets the model to process.

Parameters:
context - The model context to get the model to process with.
Returns:
The model to process.
Throws:
NullPointerException - if context is null.
MojoExecutionException - if getting the model fails.

createModelContext

protected ModelContext createModelContext(ClassLoader classLoader)
                                   throws MojoExecutionException
Creates a new model context instance for a given class loader.

Parameters:
classLoader - The class loader to use for creating the context.
Returns:
A new model context instance for classLoader.
Throws:
MojoExecutionException - if creating the model context fails.
See Also:
setupModelContext(org.jomc.modlet.ModelContext)

createSourceFileProcessor

protected SourceFileProcessor createSourceFileProcessor(ModelContext context)
                                                 throws MojoExecutionException
Creates a new tool instance for processing source files.

Parameters:
context - The context of the tool.
Returns:
A new tool instance for processing source files.
Throws:
NullPointerException - if context is null.
MojoExecutionException - if creating a new tool instance fails.
See Also:
createJomcTool(org.jomc.modlet.ModelContext, java.lang.String, java.lang.Class)

createResourceFileProcessor

protected ResourceFileProcessor createResourceFileProcessor(ModelContext context)
                                                     throws MojoExecutionException
Creates a new tool instance for processing resource files.

Parameters:
context - The context of the tool.
Returns:
A new tool instance for processing resource files.
Throws:
NullPointerException - if context is null.
MojoExecutionException - if creating a new tool instance fails.
See Also:
createJomcTool(org.jomc.modlet.ModelContext, java.lang.String, java.lang.Class)

createClassFileProcessor

protected ClassFileProcessor createClassFileProcessor(ModelContext context)
                                               throws MojoExecutionException
Creates a new tool instance for processing class files.

Parameters:
context - The context of the tool.
Returns:
A new tool instance for processing class files.
Throws:
NullPointerException - if context is null.
MojoExecutionException - if creating a new tool instance fails.
See Also:
createJomcTool(org.jomc.modlet.ModelContext, java.lang.String, java.lang.Class)

createJomcTool

protected <T extends JomcTool> T createJomcTool(ModelContext context,
                                                String className,
                                                Class<T> type)
                                     throws MojoExecutionException
Creates a new JomcTool object for a given class name and type.

Type Parameters:
T - The type of the object to create.
Parameters:
context - The context of the tool.
className - The name of the class to create an object of.
type - The class of the type of object to create.
Returns:
A new instance of the class with name className.
Throws:
NullPointerException - if context, className or type is null.
MojoExecutionException - if creating a new JomcTool object fails.
Since:
1.2
See Also:
createObject(java.lang.String, java.lang.Class), setupJomcTool(org.jomc.modlet.ModelContext, org.jomc.tools.JomcTool)

createObject

protected <T> T createObject(String className,
                             Class<T> type)
                  throws MojoExecutionException
Creates a new object for a given class name and type.

Type Parameters:
T - The type of the object to create.
Parameters:
className - The name of the class to create an object of.
type - The class of the type of object to create.
Returns:
A new instance of the class with name className.
Throws:
NullPointerException - if className or type is null.
MojoExecutionException - if creating a new object fails.
Since:
1.2

getResource

protected URL getResource(String location)
                   throws MojoExecutionException
Creates an URL for a given resource location.

This method first searches the class path of the plugin for a single resource matching location. If such a resource is found, the URL of that resource is returned. If no such resource is found, an attempt is made to parse the given location to an URL. On successful parsing, that URL is returned. Failing that, the given location is interpreted as a file name relative to the project's base directory. If that file is found, the URL of that file is returned. Otherwise null is returned.

Parameters:
location - The location to create an URL from.
Returns:
An URL for location or null, if parsing location to an URL fails and location points to a non-existent resource.
Throws:
NullPointerException - if location is null.
MojoExecutionException - if creating an URL fails.
Since:
1.2

getDirectory

protected URL getDirectory(String location)
                    throws MojoExecutionException
Creates an URL for a given directory location.

This method first attempts to parse the given location to an URL. On successful parsing, that URL is returned. Failing that, the given location is interpreted as a directory name relative to the project's base directory. If that directory is found, the URL of that directory is returned. Otherwise null is returned.

Parameters:
location - The directory location to create an URL from.
Returns:
An URL for location or null, if parsing location to an URL fails and location points to a non-existent directory.
Throws:
NullPointerException - if location is null.
MojoExecutionException - if creating an URL fails.
Since:
1.2

getTransformer

protected Transformer getTransformer(TransformerResourceType resource)
                              throws MojoExecutionException
Creates a new Transformer from a given TransformerResourceType.

Parameters:
resource - The resource to initialize the transformer with.
Returns:
A Transformer for resource or null, if resource is not found and flagged optional.
Throws:
NullPointerException - if resource is null.
MojoExecutionException - if creating a transformer fails.
Since:
1.2
See Also:
getResource(java.lang.String)

getProperties

protected Properties getProperties(PropertiesResourceType propertiesResourceType)
                            throws MojoExecutionException
Creates a new Properties instance from a PropertiesResourceType.

Parameters:
propertiesResourceType - The PropertiesResourceType specifying the properties to create.
Returns:
The properties for propertiesResourceType.
Throws:
NullPointerException - if propertiesResourceType is null.
MojoExecutionException - if loading properties fails.
Since:
1.2
See Also:
getResource(java.lang.String)

isLoggable

protected boolean isLoggable(Level level)
                      throws MojoExecutionException
Tests if messages at a given level are logged.

Parameters:
level - The level to test.
Returns:
true, if messages at level are logged; false, if messages at level are suppressed.
Throws:
NullPointerException - if level is null.
MojoExecutionException - if testing the level fails.
Since:
1.2
See Also:
isVerbose()

logSeparator

@Deprecated
protected void logSeparator(Level level)
                     throws MojoExecutionException
Deprecated. As of JOMC 1.1, please use method logSeparator(). This method will be removed in version 2.0.

Logs a separator at a given level.

Parameters:
level - The level to log a separator at.
Throws:
MojoExecutionException - if logging fails.

logSeparator

protected void logSeparator()
                     throws MojoExecutionException
Logs a separator.

Throws:
MojoExecutionException - if logging fails.
Since:
1.1

logProcessingModule

protected void logProcessingModule(String toolName,
                                   String module)
                            throws MojoExecutionException
Logs a message stating a tool is starting to process a module.

Parameters:
toolName - The tool starting execution.
module - The module getting processed.
Throws:
MojoExecutionException - if logging fails.

logProcessingModel

protected void logProcessingModel(String toolName,
                                  String model)
                           throws MojoExecutionException
Logs a message stating a tool is starting to process a model.

Parameters:
toolName - The tool starting execution.
model - The model getting processed.
Throws:
MojoExecutionException - if logging fails.
Since:
1.1

logMissingModule

protected void logMissingModule(String module)
                         throws MojoExecutionException
Logs a message stating that a module has not been found.

Parameters:
module - The module not having been found.
Throws:
MojoExecutionException - if logging fails.

logToolSuccess

protected void logToolSuccess(String toolName)
                       throws MojoExecutionException
Logs a message stating that a tool successfully completed execution.

Parameters:
toolName - The name of the tool.
Throws:
MojoExecutionException - if logging fails.

log

protected void log(ModelContext context,
                   Level level,
                   ModelValidationReport report)
            throws MojoExecutionException
Logs a ModelValidationReport.

Parameters:
context - The context to use when marshalling detail elements of the report.
level - The level to log at.
report - The report to log.
Throws:
MojoExecutionException - if logging report fails.

log

protected void log(Level level,
                   String message,
                   Throwable throwable)
            throws MojoExecutionException
Logs a message and throwable at a given level.

Parameters:
level - The level to log at.
message - The message to log or null.
throwable - The throwable to log or null.
Throws:
MojoExecutionException - if logging fails.

setupModelContext

protected void setupModelContext(ModelContext context)
                          throws MojoExecutionException
Configures a ModelContext instance.

Parameters:
context - The model context to configure.
Throws:
NullPointerException - if context is null.
MojoExecutionException - if configuring context fails.

setupJomcTool

protected void setupJomcTool(ModelContext context,
                             JomcTool tool)
                      throws MojoExecutionException
Configures a JomcTool instance.

Parameters:
context - The model context to use for configuring tool.
tool - The tool to configure.
Throws:
NullPointerException - if context of tool is null.
MojoExecutionException - if configuring tool fails.


Copyright © 2005-2012 The JOMC Project. All Rights Reserved.Get JOMC at SourceForge.net. Fast, secure and Free Open Source software downloads
Please note that this documentation is maintained by non-native english speaking authors. As such, you may encounter phrases or wordings which seem imprecise or may even have a totally different meaning to native english speaking readers than what the individual author was trying to express. If you are a native english speaking reader and find any such phrases or wordings we kindly ask you to send an email to the corresponding author and help us improve this documentation in order to avoid misunderstandings. You will find the authors' email addresses at the top of each class. Please accept our apologies for any inconvenience caused.