Author: brett
Date: Mon Jun  6 21:41:54 2005
New Revision: 188690

URL: http://svn.apache.org/viewcvs?rev=188690&view=rev
Log:
PR: MNG-366
reverse the reference. DoxiaMojo depends on maven-core instead of maven-core 
depending on the reporting api + doxia

This is not a great solution, but it gets us closer. It is currently not 
possible, as before, to get the correct set of reports as they are all loaded 
into the one container and then everything found is returned.

Modified:
    maven/components/trunk/maven-core/pom.xml
    
maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
    
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
    
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java
    
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterExpressionEvaluator.java
    maven/components/trunk/maven-plugins/maven-site-plugin/pom.xml
    
maven/components/trunk/maven-plugins/maven-site-plugin/src/main/java/org/apache/maven/doxia/DoxiaMojo.java

Modified: maven/components/trunk/maven-core/pom.xml
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/pom.xml?rev=188690&r1=188689&r2=188690&view=diff
==============================================================================
--- maven/components/trunk/maven-core/pom.xml (original)
+++ maven/components/trunk/maven-core/pom.xml Mon Jun  6 21:41:54 2005
@@ -54,23 +54,18 @@
       <artifactId>maven-plugin-descriptor</artifactId>
       <version>2.0-SNAPSHOT</version>
     </dependency>
+<!-- TODO: remove
     <dependency>
       <groupId>org.apache.maven.reporting</groupId>
       <artifactId>maven-reporting-api</artifactId>
       <version>2.0-SNAPSHOT</version>
     </dependency>
+-->
     <dependency>
       <groupId>commons-cli</groupId>
       <artifactId>commons-cli</artifactId>
       <version>1.0-beta-2</version>
     </dependency>
-    <!-- TODO: only here for classloader issues. It used to work when the 
script classes were inside the component factory...
-    <dependency>
-      <groupId>org.apache.maven</groupId>
-      <artifactId>maven-script-beanshell</artifactId>
-      <version>2.0-SNAPSHOT</version>
-      <scope>runtime</scope>
-    </dependency> -->
     <dependency>
       <groupId>plexus</groupId>
       <artifactId>plexus-container-default</artifactId>

Modified: 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java?rev=188690&r1=188689&r2=188690&view=diff
==============================================================================
--- 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
 (original)
+++ 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
 Mon Jun  6 21:41:54 2005
@@ -234,14 +234,15 @@
         PluginDescriptor pluginDescriptor;
         try
         {
-            pluginDescriptor = pluginManager.verifyPlugin( groupId, 
artifactId, version, session );
+            pluginDescriptor = pluginManager.verifyPlugin( groupId, 
artifactId, version, session.getProject(),
+                                                           
session.getLocalRepository() );
         }
         catch ( PluginManagerException e )
         {
             throw new LifecycleExecutionException( "Internal error in the 
plugin manager", e );
         }
-        
-        if( plugin.isInheritanceApplied() || 
pluginDescriptor.isInheritedByDefault() )
+
+        if ( plugin.isInheritanceApplied() || 
pluginDescriptor.isInheritedByDefault() )
         {
             // 
----------------------------------------------------------------------
             // Look to see if the plugin configuration specifies particular 
mojos
@@ -250,7 +251,7 @@
             // 
----------------------------------------------------------------------
 
             Map goalMap = plugin.getGoalsAsMap();
-            
+
             if ( pluginDescriptor.getMojos() != null )
             {
                 for ( Iterator j = pluginDescriptor.getMojos().iterator(); 
j.hasNext(); )
@@ -263,17 +264,17 @@
                         throw new LifecycleExecutionException(
                             "The plugin " + artifactId + " was built with an 
older version of Maven" );
                     }
-                
+
                     Goal goal = (Goal) goalMap.get( mojoDescriptor.getGoal() );
 
-                    if( goalMap.isEmpty() )
+                    if ( goalMap.isEmpty() )
                     {
                         configureMojoPhaseBinding( mojoDescriptor, phaseMap, 
session.getSettings() );
                     }
                     else if ( goal != null )
                     {
                         // We have to check to see that the inheritance rules 
have been applied before binding this mojo.
-                        if( goal.isInheritanceApplied() || 
mojoDescriptor.isInheritedByDefault() )
+                        if ( goal.isInheritanceApplied() || 
mojoDescriptor.isInheritedByDefault() )
                         {
                             configureMojoPhaseBinding( mojoDescriptor, 
phaseMap, session.getSettings() );
                         }
@@ -405,7 +406,9 @@
             {
                 injectHandlerPluginConfiguration( session.getProject(), 
groupId, artifactId, version );
 
-                pluginDescriptor = pluginManager.verifyPlugin( groupId, 
artifactId, version, session );
+                pluginDescriptor =
+                    pluginManager.verifyPlugin( groupId, artifactId, version, 
session.getProject(),
+                                                session.getLocalRepository() );
             }
             catch ( PluginManagerException e )
             {
@@ -434,7 +437,7 @@
         }
         else
         {
-            throw new LifecycleExecutionException( "The plugin " + 
pluginDescriptor.getGroupId() + ":" + 
+            throw new LifecycleExecutionException( "The plugin " + 
pluginDescriptor.getGroupId() + ":" +
                                                    
pluginDescriptor.getArtifactId() + ":" +
                                                    
pluginDescriptor.getVersion() +
                                                    " doesn't contain any mojo. 
Check if it isn't corrupted." );

Modified: 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java?rev=188690&r1=188689&r2=188690&view=diff
==============================================================================
--- 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
 (original)
+++ 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
 Mon Jun  6 21:41:54 2005
@@ -18,6 +18,7 @@
 
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.factory.ArtifactFactory;
+import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.artifact.resolver.ArtifactResolutionException;
 import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
 import org.apache.maven.artifact.resolver.ArtifactResolver;
@@ -26,6 +27,7 @@
 import org.apache.maven.artifact.resolver.filter.ScopeArtifactFilter;
 import org.apache.maven.artifact.transform.ReleaseArtifactTransformation;
 import org.apache.maven.execution.MavenSession;
+import org.apache.maven.model.Plugin;
 import org.apache.maven.monitor.event.EventDispatcher;
 import org.apache.maven.monitor.event.MavenEvents;
 import org.apache.maven.monitor.logging.DefaultLog;
@@ -173,22 +175,22 @@
         return getPluginDescriptor( prefix );
     }
 
-    public PluginDescriptor verifyPlugin( String groupId, String artifactId, 
String version, MavenSession session )
+    public PluginDescriptor verifyPlugin( String groupId, String artifactId, 
String version, MavenProject project,
+                                          ArtifactRepository localRepository )
         throws ArtifactResolutionException, PluginManagerException
     {
 
         String pluginKey = groupId + ":" + artifactId;
-        
+
         // TODO: this should be possibly outside
         if ( version == null )
         {
-            MavenProject project = session.getProject();
 
-            org.apache.maven.model.Plugin pluginConfig = null;
+            Plugin pluginConfig = null;
 
             for ( Iterator it = project.getBuildPlugins().iterator(); 
it.hasNext(); )
             {
-                org.apache.maven.model.Plugin plugin = 
(org.apache.maven.model.Plugin) it.next();
+                Plugin plugin = (Plugin) it.next();
 
                 if ( groupId.equals( plugin.getGroupId() ) && 
artifactId.equals( plugin.getArtifactId() ) )
                 {
@@ -202,7 +204,7 @@
             {
                 for ( Iterator it = 
project.getReports().getPlugins().iterator(); it.hasNext(); )
                 {
-                    org.apache.maven.model.Plugin plugin = 
(org.apache.maven.model.Plugin) it.next();
+                    Plugin plugin = (Plugin) it.next();
 
                     if ( groupId.equals( plugin.getGroupId() ) && 
artifactId.equals( plugin.getArtifactId() ) )
                     {
@@ -235,7 +237,7 @@
                                                                           
Artifact.SCOPE_RUNTIME,
                                                                           
MojoDescriptor.MAVEN_PLUGIN, null );
 
-                addPlugin( pluginKey, pluginArtifact, session );
+                addPlugin( pluginKey, pluginArtifact, project, localRepository 
);
 
                 version = pluginArtifact.getBaseVersion();
             }
@@ -265,7 +267,8 @@
         return getPluginDescriptor( groupId, artifactId, version );
     }
 
-    protected void addPlugin( String pluginKey, Artifact pluginArtifact, 
MavenSession session )
+    protected void addPlugin( String pluginKey, Artifact pluginArtifact, 
MavenProject project,
+                              ArtifactRepository localRepository )
         throws ArtifactResolutionException, ComponentLookupException, 
PlexusContainerException
     {
         ArtifactResolver artifactResolver = null;
@@ -280,7 +283,7 @@
             MavenMetadataSource metadataSource = new MavenMetadataSource( 
artifactResolver, mavenProjectBuilder );
 
             ArtifactResolutionResult result = 
artifactResolver.resolveTransitively(
-                Collections.singleton( pluginArtifact ), 
session.getRemoteRepositories(), session.getLocalRepository(),
+                Collections.singleton( pluginArtifact ), 
project.getRemoteArtifactRepositories(), localRepository,
                 metadataSource, artifactFilter );
 
             Map resolved = result.getArtifacts();
@@ -771,13 +774,12 @@
     public void initialize()
     {
         // TODO: configure this from bootstrap or scan lib
-        artifactFilter = new ExclusionSetFilter( new String[]{/*"bsh",*/ 
"classworlds", "doxia-core", "maven-artifact",
+        artifactFilter = new ExclusionSetFilter( new String[]{"classworlds", 
/*"doxia-core",*/ "maven-artifact",
                                                               "maven-core", 
"maven-model", "maven-monitor",
                                                               
"maven-plugin-api", "maven-plugin-descriptor",
-                                                              "maven-project", 
"maven-reporting-api",
-                                                              
/*"maven-script-beanshell", */"maven-settings",
-                                                              
/*"plexus-bsh-factory", */"plexus-container-default",
-                                                              "plexus-utils", 
"wagon-provider-api"} );
+                                                              "maven-project", 
/*"maven-reporting-api",*/ "maven-settings",
+                                                              
"plexus-container-default", "plexus-utils",
+                                                              
"wagon-provider-api"} );
     }
 
     // ----------------------------------------------------------------------

Modified: 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java?rev=188690&r1=188689&r2=188690&view=diff
==============================================================================
--- 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java
 (original)
+++ 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java
 Mon Jun  6 21:41:54 2005
@@ -16,10 +16,12 @@
  * limitations under the License.
  */
 
+import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.artifact.resolver.ArtifactResolutionException;
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.plugin.descriptor.MojoDescriptor;
 import org.apache.maven.plugin.descriptor.PluginDescriptor;
+import org.apache.maven.project.MavenProject;
 
 /**
  * @author <a href="mailto:[EMAIL PROTECTED]">Jason van Zyl </a>
@@ -34,6 +36,7 @@
 
     PluginDescriptor verifyPlugin( String prefix );
 
-    PluginDescriptor verifyPlugin( String groupId, String artifactId, String 
version, MavenSession session )
+    PluginDescriptor verifyPlugin( String groupId, String artifactId, String 
version, MavenProject project,
+                                   ArtifactRepository localRepository )
         throws ArtifactResolutionException, PluginManagerException;
 }

Modified: 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterExpressionEvaluator.java
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterExpressionEvaluator.java?rev=188690&r1=188689&r2=188690&view=diff
==============================================================================
--- 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterExpressionEvaluator.java
 (original)
+++ 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterExpressionEvaluator.java
 Mon Jun  6 21:41:54 2005
@@ -16,20 +16,14 @@
  * limitations under the License.
  */
 
-import org.apache.maven.artifact.resolver.ArtifactResolutionException;
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.project.path.PathTranslator;
-import org.apache.maven.reporting.MavenReport;
 import 
org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
 import 
org.codehaus.plexus.component.configurator.expression.ExpressionEvaluator;
-import 
org.codehaus.plexus.component.repository.exception.ComponentLookupException;
 import org.codehaus.plexus.logging.Logger;
 import org.codehaus.plexus.util.introspection.ReflectionValueExtractor;
 
 import java.io.File;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
 
 /**
  * @author <a href="mailto:[EMAIL PROTECTED]">Jason van Zyl</a>
@@ -82,52 +76,7 @@
             return expression;
         }
 
-        if ( expression.equals( "reports" ) )
-        {
-            String role = PluginManager.ROLE;
-            try
-            {
-                PluginManager pluginManager = (PluginManager) context.lookup( 
role );
-                List reportPlugins = context.getProject().getReportPlugins();
-                if ( reportPlugins != null )
-                {
-                    for ( Iterator it = reportPlugins.iterator(); 
it.hasNext(); )
-                    {
-                        org.apache.maven.model.Plugin plugin = 
(org.apache.maven.model.Plugin) it.next();
-                        pluginManager.verifyPlugin( plugin.getGroupId(), 
plugin.getArtifactId(), plugin.getVersion(),
-                                                    context );
-                    }
-                }
-            }
-            catch ( ComponentLookupException cle )
-            {
-                throw new ExpressionEvaluationException( "Cannot lookup 
component: " + role + ".", cle );
-            }
-            catch ( ArtifactResolutionException are )
-            {
-                throw new ExpressionEvaluationException( "Cannot resolve 
component: " + role + ".", are );
-            }
-            catch ( PluginManagerException pme )
-            {
-                throw new ExpressionEvaluationException( "Cannot verify 
component: " + role + ".", pme );
-            }
-
-            role = MavenReport.ROLE;
-            try
-            {
-                value = context.lookupMap( role );
-                for ( Iterator i = ( (Map) value ).keySet().iterator(); 
i.hasNext(); )
-                {
-                    String key = (String) i.next();
-                    logger.debug( key + " report is found." );
-                }
-            }
-            catch ( ComponentLookupException cle )
-            {
-                throw new ExpressionEvaluationException( "Cannot lookup 
component: " + role + ".", cle );
-            }
-        }
-        else if ( expression.equals( "localRepository" ) )
+        if ( expression.equals( "localRepository" ) )
         {
             value = context.getLocalRepository();
         }

Modified: maven/components/trunk/maven-plugins/maven-site-plugin/pom.xml
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugins/maven-site-plugin/pom.xml?rev=188690&r1=188689&r2=188690&view=diff
==============================================================================
--- maven/components/trunk/maven-plugins/maven-site-plugin/pom.xml (original)
+++ maven/components/trunk/maven-plugins/maven-site-plugin/pom.xml Mon Jun  6 
21:41:54 2005
@@ -11,6 +11,11 @@
   <name>Maven Site plugin</name>
   <dependencies>
     <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-core</artifactId>
+      <version>2.0-SNAPSHOT</version>
+    </dependency>
+    <dependency>
       <groupId>org.apache.maven.reporting</groupId>
       <artifactId>maven-reporting-api</artifactId>
       <version>2.0-SNAPSHOT</version>

Modified: 
maven/components/trunk/maven-plugins/maven-site-plugin/src/main/java/org/apache/maven/doxia/DoxiaMojo.java
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugins/maven-site-plugin/src/main/java/org/apache/maven/doxia/DoxiaMojo.java?rev=188690&r1=188689&r2=188690&view=diff
==============================================================================
--- 
maven/components/trunk/maven-plugins/maven-site-plugin/src/main/java/org/apache/maven/doxia/DoxiaMojo.java
 (original)
+++ 
maven/components/trunk/maven-plugins/maven-site-plugin/src/main/java/org/apache/maven/doxia/DoxiaMojo.java
 Mon Jun  6 21:41:54 2005
@@ -17,8 +17,11 @@
  */
 
 import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.resolver.ArtifactResolutionException;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.PluginManager;
+import org.apache.maven.plugin.PluginManagerException;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.reporting.MavenReport;
 import org.apache.maven.reporting.MavenReportConfiguration;
@@ -32,6 +35,13 @@
 import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.StringInputStream;
 import org.codehaus.plexus.util.StringUtils;
+import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
+import 
org.codehaus.plexus.personality.plexus.lifecycle.phase.PlexusContainerLocator;
+import org.codehaus.plexus.context.Context;
+import org.codehaus.plexus.context.ContextException;
+import org.codehaus.plexus.PlexusConstants;
+import org.codehaus.plexus.PlexusContainer;
+import 
org.codehaus.plexus.component.repository.exception.ComponentLookupException;
 
 import java.io.File;
 import java.io.FileOutputStream;
@@ -53,15 +63,16 @@
 import java.util.StringTokenizer;
 
 /**
- * @goal site
- * @description Doxia plugin
- * @requiresDependencyResolution test
+ * Generate the project site.
  *
  * @author <a href="mailto:[EMAIL PROTECTED]">Emmanuel Venisse</a>
  * @version $Id$
+ * @goal site
+ * @requiresDependencyResolution test
  */
 public class DoxiaMojo
     extends AbstractMojo
+    implements Contextualizable
 {
     private static final String RESOURCE_DIR = "org/apache/maven/doxia";
 
@@ -133,11 +144,11 @@
     private MavenProject project;
 
     /**
-     * @parameter expression="${reports}"
+     * @parameter 
expression="${component.org.apache.maven.plugin.PluginManager}"
      * @required
      * @readonly
      */
-    private Map reports;
+    private PluginManager pluginManager;
 
     /**
      * @parameter expression="${localRepository}"
@@ -161,6 +172,8 @@
 
     private List localesList = new ArrayList();
 
+    private PlexusContainer container;
+
     public void execute()
         throws MojoExecutionException
     {
@@ -174,7 +187,7 @@
             {
                 URL templateDirectoryUrl = new URL( templateDirectory );
 
-                URL[] urls = { templateDirectoryUrl };
+                URL[] urls = {templateDirectoryUrl};
 
                 URLClassLoader urlClassloader = new URLClassLoader( urls );
 
@@ -186,9 +199,11 @@
             }
         }
 
+        Map reports = getReports();
+
         try
         {
-            categorizeReports();
+            categorizeReports( reports );
 
             if ( locales == null )
             {
@@ -232,7 +247,7 @@
                         String outputFileName = report.getOutputName() + 
".html";
 
                         SiteRendererSink sink = siteRenderer.createSink( new 
File( siteDirectory ), outputFileName,
-                                                                         
getSiteDescriptor( locale ) );
+                                                                         
getSiteDescriptor( reports, locale ) );
 
                         report.generate( sink, locale );
 
@@ -243,8 +258,8 @@
                             outputFile.getParentFile().mkdirs();
                         }
 
-                        siteRenderer
-                            .generateDocument( new FileWriter( outputFile ), 
template, attributes, sink, locale );
+                        siteRenderer.generateDocument( new FileWriter( 
outputFile ), template, attributes, sink,
+                                                       locale );
                     }
                 }
 
@@ -253,7 +268,7 @@
                 {
                     try
                     {
-                        generateProjectInfoPage( getSiteDescriptor( locale ), 
locale );
+                        generateProjectInfoPage( getSiteDescriptor( reports, 
locale ), locale );
                     }
                     catch ( Exception e )
                     {
@@ -265,19 +280,20 @@
                 {
                     try
                     {
-                        generateProjectReportsPage( getSiteDescriptor( locale 
), locale );
+                        generateProjectReportsPage( getSiteDescriptor( 
reports, locale ), locale );
                     }
                     catch ( Exception e )
                     {
-                        throw new MojoExecutionException( "An error is 
occurred in project reports page generation.", e );
+                        throw new MojoExecutionException( "An error is 
occurred in project reports page generation.",
+                                                          e );
                     }
                 }
 
                 // Generate static site
-                siteRenderer.render( new File( siteDirectory ), 
localeOutputDirectory, getSiteDescriptor( locale ),
-                                     template, attributes );
+                siteRenderer.render( new File( siteDirectory ), 
localeOutputDirectory,
+                                     getSiteDescriptor( reports, locale ), 
template, attributes );
                 siteRenderer.render( new File( generatedSiteDirectory ), 
localeOutputDirectory,
-                                     getSiteDescriptor( locale ), template, 
attributes );
+                                     getSiteDescriptor( reports, locale ), 
template, attributes );
 
                 File cssDirectory = new File( siteDirectory, "css" );
                 File imagesDirectory = new File( siteDirectory, "images" );
@@ -315,7 +331,7 @@
         }
     }
 
-    private void categorizeReports()
+    private void categorizeReports( Map reports )
         throws MojoExecutionException
     {
         for ( Iterator i = reports.values().iterator(); i.hasNext(); )
@@ -331,29 +347,30 @@
             }
             else
             {
-                throw new MojoExecutionException( "'" + 
report.getCategoryName() + "' category define for "
-                                                  + report.getName( 
defaultLocale ) + " mojo isn't valid." );
+                throw new MojoExecutionException( "'" + 
report.getCategoryName() + "' category define for " +
+                                                  report.getName( 
defaultLocale ) + " mojo isn't valid." );
             }
         }
     }
 
     private String getReportsMenu( Locale locale )
-        throws MojoExecutionException
     {
         StringBuffer buffer = new StringBuffer();
         buffer.append( "<menu name=\"Project Documentation\">\n" );
-        buffer.append( "    <item name=\"" + i18n.getString( "site-plugin", 
locale, "report.menu.about") + " " + project.getName() + "\" 
href=\"/index.html\"/>\n" );
+        buffer.append( "    <item name=\"" + i18n.getString( "site-plugin", 
locale, "report.menu.about" ) + " " +
+                       project.getName() + "\" href=\"/index.html\"/>\n" );
 
         if ( projectInfos.size() > 0 )
         {
-            buffer.append( "    <item name=\"" + i18n.getString( 
"site-plugin", locale, "report.menu.projectinformation")
-                           + "\" href=\"/project-info.html\" 
collapse=\"true\">\n" );
+            buffer.append( "    <item name=\"" +
+                           i18n.getString( "site-plugin", locale, 
"report.menu.projectinformation" ) +
+                           "\" href=\"/project-info.html\" 
collapse=\"true\">\n" );
 
             for ( Iterator i = projectInfos.iterator(); i.hasNext(); )
             {
                 MavenReport report = (MavenReport) i.next();
-                buffer.append( "        <item name=\"" + report.getName( 
locale ) + "\" href=\"/"
-                               + report.getOutputName() + ".html\"/>\n" );
+                buffer.append( "        <item name=\"" + report.getName( 
locale ) + "\" href=\"/" +
+                               report.getOutputName() + ".html\"/>\n" );
             }
 
             buffer.append( "    </item>\n" );
@@ -361,14 +378,14 @@
 
         if ( projectReports.size() > 0 )
         {
-            buffer.append( "    <item name=\"" + i18n.getString( 
"site-plugin", locale, "report.menu.projectreports")
-                           + "\" href=\"/maven-reports.html\" 
collapse=\"true\">\n" );
+            buffer.append( "    <item name=\"" + i18n.getString( 
"site-plugin", locale, "report.menu.projectreports" ) +
+                           "\" href=\"/maven-reports.html\" 
collapse=\"true\">\n" );
 
             for ( Iterator i = projectReports.iterator(); i.hasNext(); )
             {
                 MavenReport report = (MavenReport) i.next();
-                buffer.append( "        <item name=\"" + report.getName( 
locale ) + "\" href=\"/"
-                               + report.getOutputName() + ".html\"/>\n" );
+                buffer.append( "        <item name=\"" + report.getName( 
locale ) + "\" href=\"/" +
+                               report.getOutputName() + ".html\"/>\n" );
             }
 
             buffer.append( "    </item>\n" );
@@ -379,7 +396,10 @@
         return buffer.toString();
     }
 
-    private InputStream getSiteDescriptor( Locale locale )
+    /**
+     * @todo should only be needed once
+     */
+    private InputStream getSiteDescriptor( Map reports, Locale locale )
         throws MojoExecutionException
     {
         File siteDescriptor = new File( siteDirectory, "site.xml" );
@@ -439,10 +459,9 @@
     {
         String outputFileName = "project-info.html";
 
-        SiteRendererSink sink = siteRenderer.createSink( new File( 
siteDirectory ), outputFileName,
-                                                         getSiteDescriptor( 
locale ) );
+        SiteRendererSink sink = siteRenderer.createSink( new File( 
siteDirectory ), outputFileName, siteDescriptor );
 
-        String title = i18n.getString( "site-plugin", locale, 
"report.information.title");
+        String title = i18n.getString( "site-plugin", locale, 
"report.information.title" );
 
         sink.head();
         sink.title();
@@ -457,27 +476,27 @@
         sink.sectionTitle1_();
 
         sink.paragraph();
-        sink.text( i18n.getString( "site-plugin", locale, 
"report.information.description1") + " " );
+        sink.text( i18n.getString( "site-plugin", locale, 
"report.information.description1" ) + " " );
         sink.link( "http://maven.apache.org"; );
         sink.text( "Maven" );
         sink.link_();
-        sink.text( " " + i18n.getString( "site-plugin", locale, 
"report.information.description2") );
+        sink.text( " " + i18n.getString( "site-plugin", locale, 
"report.information.description2" ) );
         sink.paragraph_();
 
         sink.section2();
 
         sink.sectionTitle2();
-        sink.text( i18n.getString( "site-plugin", locale, 
"report.information.sectionTitle") );
+        sink.text( i18n.getString( "site-plugin", locale, 
"report.information.sectionTitle" ) );
         sink.sectionTitle2_();
 
         sink.table();
 
         sink.tableRow();
         sink.tableHeaderCell();
-        sink.text( i18n.getString( "site-plugin", locale, 
"report.information.column.document") );
+        sink.text( i18n.getString( "site-plugin", locale, 
"report.information.column.document" ) );
         sink.tableHeaderCell_();
         sink.tableHeaderCell();
-        sink.text( i18n.getString( "site-plugin", locale, 
"report.information.column.description") );
+        sink.text( i18n.getString( "site-plugin", locale, 
"report.information.column.description" ) );
         sink.tableHeaderCell_();
         sink.tableRow_();
 
@@ -518,10 +537,9 @@
     {
         String outputFileName = "maven-reports.html";
 
-        SiteRendererSink sink = siteRenderer.createSink( new File( 
siteDirectory ), outputFileName,
-                                                         getSiteDescriptor( 
locale ) );
+        SiteRendererSink sink = siteRenderer.createSink( new File( 
siteDirectory ), outputFileName, siteDescriptor );
 
-        String title = i18n.getString( "site-plugin", locale, 
"report.project.title");
+        String title = i18n.getString( "site-plugin", locale, 
"report.project.title" );
 
         sink.head();
         sink.title();
@@ -536,27 +554,27 @@
         sink.sectionTitle1_();
 
         sink.paragraph();
-        sink.text( i18n.getString( "site-plugin", locale, 
"report.project.description1") + " " );
+        sink.text( i18n.getString( "site-plugin", locale, 
"report.project.description1" ) + " " );
         sink.link( "http://maven.apache.org"; );
         sink.text( "Maven" );
         sink.link_();
-        sink.text( ". " + i18n.getString( "site-plugin", locale, 
"report.project.description2") );
+        sink.text( ". " + i18n.getString( "site-plugin", locale, 
"report.project.description2" ) );
         sink.paragraph_();
 
         sink.section2();
 
         sink.sectionTitle2();
-        sink.text( i18n.getString( "site-plugin", locale, 
"report.project.sectionTitle") );
+        sink.text( i18n.getString( "site-plugin", locale, 
"report.project.sectionTitle" ) );
         sink.sectionTitle2_();
 
         sink.table();
 
         sink.tableRow();
         sink.tableHeaderCell();
-        sink.text( i18n.getString( "site-plugin", locale, 
"report.project.column.document") );
+        sink.text( i18n.getString( "site-plugin", locale, 
"report.project.column.document" ) );
         sink.tableHeaderCell_();
         sink.tableHeaderCell();
-        sink.text( i18n.getString( "site-plugin", locale, 
"report.project.column.description") );
+        sink.text( i18n.getString( "site-plugin", locale, 
"report.project.column.description" ) );
         sink.tableHeaderCell_();
         sink.tableRow_();
 
@@ -605,8 +623,8 @@
 
                 if ( is == null )
                 {
-                    throw new IOException( "The resource " + line + " doesn't 
exists in " + DEFAULT_TEMPLATE
-                                           + " template." );
+                    throw new IOException( "The resource " + line + " doesn't 
exists in " + DEFAULT_TEMPLATE +
+                                           " template." );
                 }
 
                 File outputFile = new File( outputDirectory, line );
@@ -640,7 +658,7 @@
         {
             DirectoryScanner scanner = new DirectoryScanner();
 
-            String[] includedResources = { "**/**" };
+            String[] includedResources = {"**/**"};
 
             scanner.setIncludes( includedResources );
 
@@ -657,9 +675,9 @@
                 String name = (String) j.next();
 
                 File sourceFile = new File( source, name );
-    
+
                 File destinationFile = new File( destination, name );
-    
+
                 FileUtils.copyFile( sourceFile, destinationFile );
             }
         }
@@ -683,5 +701,53 @@
                 return new File( outputDirectory, locale.getLanguage() );
             }
         }
+    }
+
+    private Map getReports()
+        throws MojoExecutionException
+    {
+        // TODO: not the best solution. Perhaps a mojo tag that causes the 
plugin manager to populate project reports instead?
+
+        List reportPlugins = project.getReportPlugins();
+        if ( reportPlugins != null )
+        {
+            for ( Iterator it = reportPlugins.iterator(); it.hasNext(); )
+            {
+                org.apache.maven.model.Plugin plugin = 
(org.apache.maven.model.Plugin) it.next();
+                try
+                {
+                    pluginManager.verifyPlugin( plugin.getGroupId(), 
plugin.getArtifactId(), plugin.getVersion(),
+                                                project, localRepository );
+                }
+                catch ( ArtifactResolutionException e )
+                {
+                    throw new MojoExecutionException( "Cannot find report 
plugin", e );
+                }
+                catch ( PluginManagerException e )
+                {
+                    throw new MojoExecutionException( "Cannot find report 
plugin", e );
+                }
+            }
+        }
+
+        // TODO: this is not good (using the container), also because it will 
import every report ever loaded
+        //   What we need is to be able to select individual reports and know 
what reports are inside a plugin
+        //   It may be better to push the report section in the pom back to 
"plugins", then just have a reports list
+        //   again which are role hints to look up
+
+        try
+        {
+            return container.lookupMap( MavenReport.ROLE );
+        }
+        catch ( ComponentLookupException e )
+        {
+            throw new MojoExecutionException( "Unable to find reports", e );
+        }
+    }
+
+    public void contextualize( Context context )
+        throws ContextException
+    {
+        container = (PlexusContainer) context.get( PlexusConstants.PLEXUS_KEY 
);
     }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to