Class JavaAnnotationsMojoDescriptorExtractor

java.lang.Object
org.codehaus.plexus.logging.AbstractLogEnabled
org.apache.maven.tools.plugin.extractor.annotations.JavaAnnotationsMojoDescriptorExtractor
All Implemented Interfaces:
MojoDescriptorExtractor, org.codehaus.plexus.logging.LogEnabled

@Named("java-annotations") @Singleton public class JavaAnnotationsMojoDescriptorExtractor extends org.codehaus.plexus.logging.AbstractLogEnabled implements MojoDescriptorExtractor
JavaMojoDescriptorExtractor, a MojoDescriptor extractor to read descriptors from java classes with annotations. Notice that source files are also parsed to get description, since and deprecation information.
Since:
3.0
  • Field Details

    • NAME

      public static final String NAME
      See Also:
    • GROUP_KEY

      private static final GroupKey GROUP_KEY
    • CLASS_VERSION_TO_JAVA_STRING

      private static final Map<Integer,String> CLASS_VERSION_TO_JAVA_STRING
      See Also:
    • mojoAnnotationsScanner

      @Inject MojoAnnotationsScanner mojoAnnotationsScanner
    • repositorySystem

      @Inject private org.eclipse.aether.RepositorySystem repositorySystem
    • archiverManager

      @Inject private org.codehaus.plexus.archiver.manager.ArchiverManager archiverManager
    • javadocInlineTagsToHtmlConverter

      @Inject private JavadocInlineTagsToXhtmlConverter javadocInlineTagsToHtmlConverter
    • javadocBlockTagsToHtmlConverter

      @Inject private JavadocBlockTagsToXhtmlConverter javadocBlockTagsToHtmlConverter
  • Constructor Details

    • JavaAnnotationsMojoDescriptorExtractor

      public JavaAnnotationsMojoDescriptorExtractor()
  • Method Details

    • getName

      public String getName()
      Description copied from interface: MojoDescriptorExtractor
      Returns the "name" (id) of the extractor.
      Specified by:
      getName in interface MojoDescriptorExtractor
    • isDeprecated

      public boolean isDeprecated()
      Description copied from interface: MojoDescriptorExtractor
      Returns true if extractor is deprecated.
      Specified by:
      isDeprecated in interface MojoDescriptorExtractor
    • getGroupKey

      public GroupKey getGroupKey()
      Description copied from interface: MojoDescriptorExtractor
      Returns the GroupKey of extractor, as MojoScanner will execute them grouped, and ordered within groups. Must never return null.
      Specified by:
      getGroupKey in interface MojoDescriptorExtractor
    • execute

      public List<org.apache.maven.plugin.descriptor.MojoDescriptor> execute(PluginToolsRequest request) throws ExtractionException, org.apache.maven.plugin.descriptor.InvalidPluginDescriptorException
      Description copied from interface: MojoDescriptorExtractor
      Execute the mojo extraction.
      Specified by:
      execute in interface MojoDescriptorExtractor
      Parameters:
      request - The PluginToolsRequest containing information for the extraction process.
      Returns:
      a list of mojo descriptors. These may return HTML values for some fields.
      Throws:
      ExtractionException - if any
      org.apache.maven.plugin.descriptor.InvalidPluginDescriptorException - if any
    • scanAnnotations

      private Map<String,MojoAnnotatedClass> scanAnnotations(PluginToolsRequest request) throws ExtractionException
      Throws:
      ExtractionException
    • scanJavadoc

      private com.thoughtworks.qdox.JavaProjectBuilder scanJavadoc(PluginToolsRequest request, Collection<MojoAnnotatedClass> mojoAnnotatedClasses) throws ExtractionException
      Throws:
      ExtractionException
    • isMojoAnnnotatedClassCandidate

      private boolean isMojoAnnnotatedClassCandidate(MojoAnnotatedClass mojoAnnotatedClass)
    • populateDataFromJavadoc

      protected void populateDataFromJavadoc(com.thoughtworks.qdox.JavaProjectBuilder javaProjectBuilder, Map<String,MojoAnnotatedClass> mojoAnnotatedClasses, Map<String,com.thoughtworks.qdox.model.JavaClass> javaClassesMap, JavadocLinkGenerator linkGenerator)
      from sources scan to get @since and @deprecated and description of classes and fields.
    • getDescriptionFromElement

      String getDescriptionFromElement(com.thoughtworks.qdox.model.JavaAnnotatedElement element, JavaClassConverterContext context)
      Returns the XHTML description from the given element. This may refer to either goal, parameter or component.
      Parameters:
      element - the element for which to generate the description
      context - the context with which to call the converter
      Returns:
      the generated description
    • getRawValueFromTaglet

      String getRawValueFromTaglet(com.thoughtworks.qdox.model.DocletTag docletTag, ConverterContext context)
    • findInClassHierarchy

      private com.thoughtworks.qdox.model.DocletTag findInClassHierarchy(com.thoughtworks.qdox.model.JavaClass javaClass, String tagName)
      Parameters:
      javaClass - not null
      tagName - not null
      Returns:
      docletTag instance
    • extractFieldsAnnotations

      private Map<String,com.thoughtworks.qdox.model.JavaAnnotatedElement> extractFieldsAnnotations(com.thoughtworks.qdox.model.JavaClass javaClass, Map<String,com.thoughtworks.qdox.model.JavaClass> javaClassesMap)
      extract fields that are either parameters or components.
      Parameters:
      javaClass - not null
      Returns:
      map with Mojo parameters names as keys
    • extractMethodsAnnotations

      private Map<String,com.thoughtworks.qdox.model.JavaAnnotatedElement> extractMethodsAnnotations(com.thoughtworks.qdox.model.JavaClass javaClass, Map<String,com.thoughtworks.qdox.model.JavaClass> javaClassesMap)
      extract methods that are parameters.
      Parameters:
      javaClass - not null
      Returns:
      map with Mojo parameters names as keys
    • isPublicSetterMethod

      private boolean isPublicSetterMethod(com.thoughtworks.qdox.model.JavaMethod method)
    • discoverClasses

      protected Map<String,com.thoughtworks.qdox.model.JavaClass> discoverClasses(com.thoughtworks.qdox.JavaProjectBuilder builder)
    • extendJavaProjectBuilderWithSourcesJar

      protected void extendJavaProjectBuilderWithSourcesJar(com.thoughtworks.qdox.JavaProjectBuilder builder, org.apache.maven.artifact.Artifact artifact, PluginToolsRequest request, String classifier) throws ExtractionException
      Throws:
      ExtractionException
    • extendJavaProjectBuilder

      private void extendJavaProjectBuilder(com.thoughtworks.qdox.JavaProjectBuilder builder, org.apache.maven.project.MavenProject project)
    • extendJavaProjectBuilder

      private void extendJavaProjectBuilder(com.thoughtworks.qdox.JavaProjectBuilder builder, List<File> sourceDirectories, Set<org.apache.maven.artifact.Artifact> artifacts)
    • toMojoDescriptors

      private List<org.apache.maven.plugin.descriptor.MojoDescriptor> toMojoDescriptors(Map<String,MojoAnnotatedClass> mojoAnnotatedClasses, org.apache.maven.plugin.descriptor.PluginDescriptor pluginDescriptor) throws org.apache.maven.plugin.descriptor.InvalidPluginDescriptorException
      Throws:
      org.apache.maven.plugin.descriptor.InvalidPluginDescriptorException
    • findClassWithExecuteAnnotationInParentHierarchy

      protected MojoAnnotatedClass findClassWithExecuteAnnotationInParentHierarchy(MojoAnnotatedClass mojoAnnotatedClass, Map<String,MojoAnnotatedClass> mojoAnnotatedClasses)
    • getParametersParentHierarchy

      protected Map<String,ParameterAnnotationContent> getParametersParentHierarchy(MojoAnnotatedClass mojoAnnotatedClass, Map<String,MojoAnnotatedClass> mojoAnnotatedClasses)
    • getParametersParent

      protected List<ParameterAnnotationContent> getParametersParent(MojoAnnotatedClass mojoAnnotatedClass, List<ParameterAnnotationContent> parameterAnnotationContents, Map<String,MojoAnnotatedClass> mojoAnnotatedClasses)
    • getComponentsParentHierarchy

      protected Map<String,ComponentAnnotationContent> getComponentsParentHierarchy(MojoAnnotatedClass mojoAnnotatedClass, Map<String,MojoAnnotatedClass> mojoAnnotatedClasses)
    • getComponentParent

      protected List<ComponentAnnotationContent> getComponentParent(MojoAnnotatedClass mojoAnnotatedClass, List<ComponentAnnotationContent> componentAnnotationContents, Map<String,MojoAnnotatedClass> mojoAnnotatedClasses)
    • getFromProjectReferences

      protected org.apache.maven.project.MavenProject getFromProjectReferences(org.apache.maven.artifact.Artifact artifact, org.apache.maven.project.MavenProject project)