From e37c9d413ccfc5b048af7b5582612d0986c792a9 Mon Sep 17 00:00:00 2001 From: Olivier Lamy Date: Mon, 28 May 2012 08:15:25 +0000 Subject: [PATCH] [MPLUGIN-206] Annotations in superclasses are not found if an intermediate class is not annotated. git-svn-id: https://svn.apache.org/repos/asf/maven/plugin-tools/trunk@1343159 13f79535-47bb-0310-9956-ffa450edef68 --- .../invoker.properties | 1 + .../plugin/coreit/AbstractFirstMojo.java | 1 - ...avaAnnotationsMojoDescriptorExtractor.java | 24 +++++++++++++++---- .../DefaultMojoAnnotationsScanner.java | 22 ++++++++++------- 4 files changed, 34 insertions(+), 14 deletions(-) diff --git a/maven-plugin-plugin/src/it/annotation-with-inheritance/invoker.properties b/maven-plugin-plugin/src/it/annotation-with-inheritance/invoker.properties index 773daef..114b8cf 100644 --- a/maven-plugin-plugin/src/it/annotation-with-inheritance/invoker.properties +++ b/maven-plugin-plugin/src/it/annotation-with-inheritance/invoker.properties @@ -2,3 +2,4 @@ invoker.goals.1 = clean install -DskipTests invoker.goals.2 = org.apache.maven.its.annotation-with-inheritance:annotation-with-inheritance:1.0-SNAPSHOT:it0014 invoker.goals.3 = org.apache.maven.its.annotation-with-inheritance:annotation-with-inheritance:1.0-SNAPSHOT:first invoker.goals.4 = org.apache.maven.its.annotation-with-inheritance:annotation-with-inheritance:1.0-SNAPSHOT:help +invoker.goals.5 = org.apache.maven.its.annotation-with-inheritance:annotation-with-inheritance:1.0-SNAPSHOT:third \ No newline at end of file diff --git a/maven-plugin-plugin/src/it/annotation-with-inheritance/src/main/java/org/apache/maven/plugin/coreit/AbstractFirstMojo.java b/maven-plugin-plugin/src/it/annotation-with-inheritance/src/main/java/org/apache/maven/plugin/coreit/AbstractFirstMojo.java index e65430e..c0eee7c 100644 --- a/maven-plugin-plugin/src/it/annotation-with-inheritance/src/main/java/org/apache/maven/plugin/coreit/AbstractFirstMojo.java +++ b/maven-plugin-plugin/src/it/annotation-with-inheritance/src/main/java/org/apache/maven/plugin/coreit/AbstractFirstMojo.java @@ -32,7 +32,6 @@ import org.apache.maven.artifact.metadata.ArtifactMetadataSource; import java.io.File; /** - * Touches a test file. * */ public abstract class AbstractFirstMojo diff --git a/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/annotations/JavaAnnotationsMojoDescriptorExtractor.java b/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/annotations/JavaAnnotationsMojoDescriptorExtractor.java index 2b612d7..019594d 100644 --- a/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/annotations/JavaAnnotationsMojoDescriptorExtractor.java +++ b/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/annotations/JavaAnnotationsMojoDescriptorExtractor.java @@ -144,6 +144,12 @@ public class JavaAnnotationsMojoDescriptorExtractor continue; } + if ( !isMojoAnnnotatedClassCandidate( mojoAnnotatedClass ) ) + { + + continue; + } + MavenProject mavenProject = getFromProjectReferences( mojoAnnotatedClass.getArtifact(), request.getProject() ); @@ -184,6 +190,17 @@ public class JavaAnnotationsMojoDescriptorExtractor return javaClassesMap; } + private boolean isMojoAnnnotatedClassCandidate( MojoAnnotatedClass mojoAnnotatedClass ) + { + if ( mojoAnnotatedClass == null ) + { + return false; + } + return ( !mojoAnnotatedClass.getComponents().isEmpty() || !mojoAnnotatedClass.getParameters().isEmpty() + || mojoAnnotatedClass.getExecute() != null || mojoAnnotatedClass.getMojo() != null ); + + } + protected Map discoverClassesFromSourcesJar( Artifact artifact, PluginToolsRequest request, String classifier ) throws ExtractionException @@ -205,9 +222,8 @@ public class JavaAnnotationsMojoDescriptorExtractor // extract sources to target/maven-plugin-plugin-sources/${groupId}/${artifact}/sources File extractDirectory = new File( request.getProject().getBuild().getDirectory(), "maven-plugin-plugin-sources/" + sourcesArtifact.getGroupId() + "/" - + sourcesArtifact.getArtifactId() + "/" - + sourcesArtifact.getVersion() + "/" - + sourcesArtifact.getClassifier() ); + + sourcesArtifact.getArtifactId() + "/" + sourcesArtifact.getVersion() + + "/" + sourcesArtifact.getClassifier() ); extractDirectory.mkdirs(); UnArchiver unArchiver = archiverManager.getUnArchiver( "jar" ); @@ -280,7 +296,7 @@ public class JavaAnnotationsMojoDescriptorExtractor getParametersParentHierarchy( entry.getValue(), new HashMap(), mojoAnnotatedClasses ); for ( Map.Entry parameter : new TreeMap( - parameters ).entrySet() ) + parameters ).entrySet() ) { JavaField javaField = fieldsMap.get( parameter.getKey() ); if ( javaField == null ) diff --git a/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/annotations/scanner/DefaultMojoAnnotationsScanner.java b/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/annotations/scanner/DefaultMojoAnnotationsScanner.java index 67d737f..1c932fe 100644 --- a/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/annotations/scanner/DefaultMojoAnnotationsScanner.java +++ b/maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/annotations/scanner/DefaultMojoAnnotationsScanner.java @@ -143,7 +143,7 @@ public class DefaultMojoAnnotationsScanner { mojoClassVisitor.getMojoAnnotatedClass().setMojo( null ); } - if ( isMojoAnnnotatedClassCandidate( mojoClassVisitor.getMojoAnnotatedClass() ) != null ) + if ( isStoreClass( mojoClassVisitor.getMojoAnnotatedClass() ) != null ) { getLogger().debug( "found MojoAnnotatedClass:" + mojoClassVisitor.getMojoAnnotatedClass().getClassName() + ":" @@ -207,7 +207,7 @@ public class DefaultMojoAnnotationsScanner { mojoClassVisitor.getMojoAnnotatedClass().setMojo( null ); } - if ( isMojoAnnnotatedClassCandidate( mojoClassVisitor.getMojoAnnotatedClass() ) != null ) + if ( isStoreClass( mojoClassVisitor.getMojoAnnotatedClass() ) != null ) { getLogger().debug( "found MojoAnnotatedClass:" + mojoClassVisitor.getMojoAnnotatedClass().getClassName() + ":" @@ -228,20 +228,24 @@ public class DefaultMojoAnnotationsScanner return mojoAnnotatedClasses; } - private MojoAnnotatedClass isMojoAnnnotatedClassCandidate( MojoAnnotatedClass mojoAnnotatedClass ) + private MojoAnnotatedClass isStoreClass( MojoAnnotatedClass mojoAnnotatedClass ) { if ( mojoAnnotatedClass == null ) { return null; } - if ( !mojoAnnotatedClass.getComponents().isEmpty() || !mojoAnnotatedClass.getParameters().isEmpty() - || mojoAnnotatedClass.getExecute() != null || mojoAnnotatedClass.getMojo() != null ) - { - return mojoAnnotatedClass; - } - return null; + return mojoAnnotatedClass; + /** + if ( !mojoAnnotatedClass.getComponents().isEmpty() || !mojoAnnotatedClass.getParameters().isEmpty() + || mojoAnnotatedClass.getExecute() != null || mojoAnnotatedClass.getMojo() != null ) + { + return mojoAnnotatedClass; + } + return null; + **/ } + protected void analyzeVisitors( MojoClassVisitor mojoClassVisitor ) throws ExtractionException {