code simplification

git-svn-id: https://svn.apache.org/repos/asf/maven/plugin-tools/trunk@1340702 13f79535-47bb-0310-9956-ffa450edef68
master
Herve Boutemy 2012-05-20 12:56:23 +00:00
parent 745441f7aa
commit e647661af9
1 changed files with 116 additions and 98 deletions

View File

@ -137,26 +137,28 @@ public class JavaAnnotationsMojoDescriptorExtractor
for ( MojoAnnotatedClass mojoAnnotatedClass : mojoAnnotatedClasses )
{
if ( !StringUtils.equals( mojoAnnotatedClass.getArtifact().getArtifactId(),
request.getProject().getArtifact().getArtifactId() ) )
if ( StringUtils.equals( mojoAnnotatedClass.getArtifact().getArtifactId(),
request.getProject().getArtifact().getArtifactId() ) )
{
MavenProject mavenProject =
getFromProjectReferences( mojoAnnotatedClass.getArtifact(), request.getProject() );
if ( mavenProject != null )
{
mavenProjects.add( mavenProject );
}
else
{
externalArtifacts.add( mojoAnnotatedClass.getArtifact() );
}
continue;
}
MavenProject mavenProject =
getFromProjectReferences( mojoAnnotatedClass.getArtifact(), request.getProject() );
if ( mavenProject != null )
{
mavenProjects.add( mavenProject );
}
else
{
externalArtifacts.add( mojoAnnotatedClass.getArtifact() );
}
}
Map<String, JavaClass> javaClassesMap = new HashMap<String, JavaClass>();
// try to get artifact with classifier sources
// extract somewhere then scan doclet for @since, @deprecated
// try to get artifact with sources classifier, extract somewhere then scan for @since, @deprecated
for ( Artifact artifact : externalArtifacts )
{
// parameter for test-sources too ?? olamy I need that for it test only
@ -192,26 +194,27 @@ public class JavaAnnotationsMojoDescriptorExtractor
artifact.getVersion(), artifact.getType(), classifier );
artifactResolver.resolve( sourcesArtifact, request.getRemoteRepos(), request.getLocal() );
if ( sourcesArtifact.getFile() != null && sourcesArtifact.getFile().exists() )
{
File extractDirectory = new File( request.getProject().getBuild().getDirectory(),
"maven-plugin-plugin-sources/" + sourcesArtifact.getGroupId() + "/"
+ sourcesArtifact.getArtifactId() + "/"
+ sourcesArtifact.getVersion() + "/"
+ sourcesArtifact.getClassifier() );
if ( !extractDirectory.exists() )
{
extractDirectory.mkdirs();
}
// extract sources in a directory
//target/maven-plugin-plugin/${groupId}/${artifact}/sources
UnArchiver unArchiver = archiverManager.getUnArchiver( "jar" );
unArchiver.setSourceFile( sourcesArtifact.getFile() );
unArchiver.setDestDirectory( extractDirectory );
unArchiver.extract();
return discoverClasses( request.getEncoding(), Arrays.asList( extractDirectory ) );
if ( sourcesArtifact.getFile() == null || !sourcesArtifact.getFile().exists() )
{
// could not get artifact sources
return Collections.emptyMap();
}
// 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() );
extractDirectory.mkdirs();
UnArchiver unArchiver = archiverManager.getUnArchiver( "jar" );
unArchiver.setSourceFile( sourcesArtifact.getFile() );
unArchiver.setDestDirectory( extractDirectory );
unArchiver.extract();
return discoverClasses( request.getEncoding(), Arrays.asList( extractDirectory ) );
}
catch ( ArtifactResolutionException e )
{
@ -222,14 +225,14 @@ public class JavaAnnotationsMojoDescriptorExtractor
//throw new ExtractionException( e.getMessage(), e );
getLogger().debug( "skip ArtifactNotFoundException:" + e.getMessage() );
getLogger().warn(
"Impossible to get sources artifact for " + artifact.getGroupId() + ":" + artifact.getArtifactId() + ":"
"Unable to get sources artifact for " + artifact.getGroupId() + ":" + artifact.getArtifactId() + ":"
+ artifact.getVersion() + ". Some javadoc tags (@since, @deprecated and comments) won't be used" );
return Collections.emptyMap();
}
catch ( NoSuchArchiverException e )
{
throw new ExtractionException( e.getMessage(), e );
}
return Collections.emptyMap();
}
/**
@ -245,71 +248,87 @@ public class JavaAnnotationsMojoDescriptorExtractor
for ( Map.Entry<String, MojoAnnotatedClass> entry : mojoAnnotatedClasses.entrySet() )
{
JavaClass javaClass = javaClassesMap.get( entry.getKey() );
if ( javaClass != null )
if ( javaClass == null )
{
MojoAnnotationContent mojoAnnotationContent = entry.getValue().getMojo();
if ( mojoAnnotationContent != null )
{
mojoAnnotationContent.setDescription( javaClass.getComment() );
DocletTag since = findInClassHierarchy( javaClass, "since" );
if ( since != null )
{
mojoAnnotationContent.setSince( since.getValue() );
}
DocletTag deprecated = findInClassHierarchy( javaClass, "deprecated" );
if ( deprecated != null )
{
mojoAnnotationContent.setDeprecated( deprecated.getValue() );
}
}
Map<String, JavaField> fieldsMap =
extractFieldParameterTags( javaClass, javaClassesMap, mojoAnnotatedClasses );
Map<String, ParameterAnnotationContent> parameters =
getParametersParentHierarchy( entry.getValue(), new HashMap<String, ParameterAnnotationContent>(),
mojoAnnotatedClasses );
for ( Map.Entry<String, ParameterAnnotationContent> parameter : new TreeMap<String, ParameterAnnotationContent>(
parameters ).entrySet() )
{
JavaField javaField = fieldsMap.get( parameter.getKey() );
if ( javaField != null )
{
ParameterAnnotationContent parameterAnnotationContent = parameter.getValue();
DocletTag deprecated = javaField.getTagByName( "deprecated" );
if ( deprecated != null )
{
parameterAnnotationContent.setDeprecated( deprecated.getValue() );
}
DocletTag since = javaField.getTagByName( "since" );
if ( since != null )
{
parameterAnnotationContent.setSince( since.getValue() );
}
parameterAnnotationContent.setDescription( javaField.getComment() );
}
}
for ( Map.Entry<String, ComponentAnnotationContent> component : entry.getValue().getComponents().entrySet() )
{
JavaField javaField = fieldsMap.get( component.getKey() );
if ( javaField != null )
{
ComponentAnnotationContent componentAnnotationContent = component.getValue();
DocletTag deprecated = javaField.getTagByName( "deprecated" );
if ( deprecated != null )
{
componentAnnotationContent.setDeprecated( deprecated.getValue() );
}
DocletTag since = javaField.getTagByName( "since" );
if ( since != null )
{
componentAnnotationContent.setSince( since.getValue() );
}
componentAnnotationContent.setDescription( javaField.getComment() );
}
}
continue;
}
// populate class-level content
MojoAnnotationContent mojoAnnotationContent = entry.getValue().getMojo();
if ( mojoAnnotationContent != null )
{
mojoAnnotationContent.setDescription( javaClass.getComment() );
DocletTag since = findInClassHierarchy( javaClass, "since" );
if ( since != null )
{
mojoAnnotationContent.setSince( since.getValue() );
}
DocletTag deprecated = findInClassHierarchy( javaClass, "deprecated" );
if ( deprecated != null )
{
mojoAnnotationContent.setDeprecated( deprecated.getValue() );
}
}
Map<String, JavaField> fieldsMap =
extractFieldParameterTags( javaClass, javaClassesMap, mojoAnnotatedClasses );
// populate parameters
Map<String, ParameterAnnotationContent> parameters =
getParametersParentHierarchy( entry.getValue(), new HashMap<String, ParameterAnnotationContent>(),
mojoAnnotatedClasses );
for ( Map.Entry<String, ParameterAnnotationContent> parameter : new TreeMap<String, ParameterAnnotationContent>(
parameters ).entrySet() )
{
JavaField javaField = fieldsMap.get( parameter.getKey() );
if ( javaField == null )
{
continue;
}
ParameterAnnotationContent parameterAnnotationContent = parameter.getValue();
parameterAnnotationContent.setDescription( javaField.getComment() );
DocletTag deprecated = javaField.getTagByName( "deprecated" );
if ( deprecated != null )
{
parameterAnnotationContent.setDeprecated( deprecated.getValue() );
}
DocletTag since = javaField.getTagByName( "since" );
if ( since != null )
{
parameterAnnotationContent.setSince( since.getValue() );
}
}
// populate components
for ( Map.Entry<String, ComponentAnnotationContent> component : entry.getValue().getComponents().entrySet() )
{
JavaField javaField = fieldsMap.get( component.getKey() );
if ( javaField == null )
{
continue;
}
ComponentAnnotationContent componentAnnotationContent = component.getValue();
componentAnnotationContent.setDescription( javaField.getComment() );
DocletTag deprecated = javaField.getTagByName( "deprecated" );
if ( deprecated != null )
{
componentAnnotationContent.setDeprecated( deprecated.getValue() );
}
DocletTag since = javaField.getTagByName( "since" );
if ( since != null )
{
componentAnnotationContent.setSince( since.getValue() );
}
}
}
}
@ -607,7 +626,6 @@ public class JavaAnnotationsMojoDescriptorExtractor
return parameterAnnotationContents;
}
protected Map<String, ComponentAnnotationContent> getComponentsParentHierarchy(
MojoAnnotatedClass mojoAnnotatedClass, Map<String, ComponentAnnotationContent> components,
Map<String, MojoAnnotatedClass> mojoAnnotatedClasses )