Author: hboutemy
Date: Sun Apr 20 13:37:25 2008
New Revision: 649973

URL: http://svn.apache.org/viewvc?rev=649973&view=rev
Log:
[MPIR-80] added Java requirements to the Dependency Report
Submitted by: Niall Pemberton
Reviewed by: Hervé Boutemy

Modified:
    
maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/DependenciesReport.java
    
maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/dependencies/renderer/DependenciesRenderer.java
    
maven/plugins/trunk/maven-project-info-reports-plugin/src/main/resources/project-info-report.properties
    
maven/plugins/trunk/maven-project-info-reports-plugin/src/test/java/org/apache/maven/report/projectinfo/DependenciesReportTest.java

Modified: 
maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/DependenciesReport.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/DependenciesReport.java?rev=649973&r1=649972&r2=649973&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/DependenciesReport.java
 (original)
+++ 
maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/DependenciesReport.java
 Sun Apr 20 13:37:25 2008
@@ -151,7 +151,7 @@
             new DependenciesReportConfiguration( dependencyDetailsEnabled, 
dependencyLocationsEnabled );
 
         DependenciesRenderer r =
-            new DependenciesRenderer( getSink(), locale, i18n, dependencies, 
dependencyTree, config, repoUtils );
+            new DependenciesRenderer( getSink(), locale, i18n, dependencies, 
dependencyTree, config, repoUtils, project );
 
         repoUtils.setLog( getLog() );
         r.setLog( getLog() );

Modified: 
maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/dependencies/renderer/DependenciesRenderer.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/dependencies/renderer/DependenciesRenderer.java?rev=649973&r1=649972&r2=649973&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/dependencies/renderer/DependenciesRenderer.java
 (original)
+++ 
maven/plugins/trunk/maven-project-info-reports-plugin/src/main/java/org/apache/maven/report/projectinfo/dependencies/renderer/DependenciesRenderer.java
 Sun Apr 20 13:37:25 2008
@@ -40,6 +40,7 @@
 import org.apache.maven.wagon.Wagon;
 import org.codehaus.plexus.i18n.I18N;
 import org.codehaus.plexus.util.StringUtils;
+import org.codehaus.plexus.util.xml.Xpp3Dom;
 
 import java.io.File;
 import java.io.IOException;
@@ -88,6 +89,8 @@
 
     private RepositoryUtils repoUtils;
 
+    private MavenProject project;
+
     /**
      * Will be filled with license name / list of projects.
      */
@@ -109,7 +112,7 @@
 
     public DependenciesRenderer( Sink sink, Locale locale, I18N i18n, 
Dependencies dependencies,
                                  DependencyTree depTree, 
DependenciesReportConfiguration config,
-                                 RepositoryUtils repoUtils )
+                                 RepositoryUtils repoUtils, MavenProject 
project )
     {
         super( sink );
 
@@ -124,6 +127,8 @@
         this.i18n = i18n;
 
         this.configuration = config;
+
+        this.project = project;
     }
 
     // ----------------------------------------------------------------------
@@ -158,6 +163,9 @@
             return;
         }
 
+        // === Section: Project Java Version.
+        renderSectionJavaVersion();
+
         // === Section: Project Dependencies.
         renderSectionProjectDependencies();
 
@@ -211,6 +219,86 @@
         String type = getReportString( "report.dependencies.column.type" );
         String optional = getReportString( 
"report.dependencies.column.optional" );
         return new String[]{groupId, artifactId, version, classifier, type, 
optional};
+    }
+
+    private void renderSectionJavaVersion()
+    {
+        Xpp3Dom pluginConfig = project.getGoalConfiguration( 
"org.apache.maven.plugins", "maven-compiler-plugin", null, null );
+        String source = null;
+        String target = null;
+        String compilerVersion = null;
+
+        if ( pluginConfig != null )
+        {
+            source = getChildValue( pluginConfig, "source" );
+            target = getChildValue( pluginConfig, "target" );
+            String fork = getChildValue( pluginConfig, "fork" );
+            if ( "true".equalsIgnoreCase( fork ) )
+            {
+                compilerVersion = getChildValue( pluginConfig, 
"compilerVersion" );
+            }
+        }
+
+        if ( compilerVersion == null )
+        {
+            compilerVersion = System.getProperty( "java.specification.version" 
);
+        }
+
+        String javaOptionsText = null;
+        String minimumJavaVersion = compilerVersion;
+
+        if ( source == null && target == null )
+        {
+            javaOptionsText = i18n.format( "project-info-report", locale, 
"report.dependencies.java.options.notset", compilerVersion );
+        }
+        else if ( source != null && target != null )
+        {
+            minimumJavaVersion = target;
+            if ( source.equals( target ) )
+            {
+                javaOptionsText = i18n.format( "project-info-report", locale, 
"report.dependencies.java.options.same", compilerVersion, source );
+            }
+            else
+            {
+                Object[] args = new Object[] { compilerVersion, source, target 
};
+                javaOptionsText = i18n.format( "project-info-report", locale, 
"report.dependencies.java.options.different", args );
+            }
+        }
+        else if ( target != null )
+        {
+            minimumJavaVersion = target;
+            javaOptionsText = i18n.format( "project-info-report", locale, 
"report.dependencies.java.options.target", compilerVersion, target );
+        }
+        else
+        {
+            javaOptionsText = i18n.format( "project-info-report", locale, 
"report.dependencies.java.options.source", compilerVersion, source );
+        }
+        String minimumJavaText = i18n.format( "project-info-report", locale, 
"report.dependencies.java.minimum", minimumJavaVersion);
+
+        // Output the section text
+        startSection( getReportString( 
"report.dependencies.java.section.title" ) );
+        paragraph( minimumJavaText );
+        paragraph( javaOptionsText );
+        endSection();
+    }
+
+    private String getChildValue(Xpp3Dom parent, String childName)
+    {
+        if (parent == null)
+        {
+            return null;
+        }
+        Xpp3Dom child = parent.getChild(childName);
+        if (child == null)
+        {
+            return null;
+        }
+        String value = child.getValue();
+        if (child == null || value.trim().length() == 0)
+        {
+            return null;
+        }
+        return value.trim();
     }
 
     private void renderSectionProjectDependencies()

Modified: 
maven/plugins/trunk/maven-project-info-reports-plugin/src/main/resources/project-info-report.properties
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-project-info-reports-plugin/src/main/resources/project-info-report.properties?rev=649973&r1=649972&r2=649973&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-project-info-reports-plugin/src/main/resources/project-info-report.properties
 (original)
+++ 
maven/plugins/trunk/maven-project-info-reports-plugin/src/main/resources/project-info-report.properties
 Sun Apr 20 13:37:25 2008
@@ -77,6 +77,13 @@
 report.dependencies.repo.locations.column.snapshot                 = Snapshot
 report.dependencies.repo.locations.column.url                      = URL
 report.dependencies.repo.locations.title                           = 
Dependency Repository Locations
+report.dependencies.java.section.title                             = Java 
Version
+report.dependencies.java.minimum                                   = This 
project requires a minimum of Java {0}.
+report.dependencies.java.options.notset                            = It has 
been built using Java {0} (the compiler -source and -target options were not 
set).
+report.dependencies.java.options.same                              = It has 
been built using Java {0} with the compiler -source and -target options set to 
Java {1}.
+report.dependencies.java.options.different                         = It has 
been built using Java {0} with the compiler -source option set to Java {1} and 
the -target option set to Java {2}.
+report.dependencies.java.options.source                            = It has 
been built using Java {0} with the compiler -source option set to Java {1} 
(-target option not set).
+report.dependencies.java.options.target                            = It has 
been built using Java {0} with the compiler -target option set to Java {1} 
(-source option not set).
 report.dependencies.title                                          = Project 
Dependencies
 report.dependencies.unamed                                         = Unamed
 report.dependency-convergence.convergence.caption                  = 
Dependencies used in sub-projects

Modified: 
maven/plugins/trunk/maven-project-info-reports-plugin/src/test/java/org/apache/maven/report/projectinfo/DependenciesReportTest.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-project-info-reports-plugin/src/test/java/org/apache/maven/report/projectinfo/DependenciesReportTest.java?rev=649973&r1=649972&r2=649973&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-project-info-reports-plugin/src/test/java/org/apache/maven/report/projectinfo/DependenciesReportTest.java
 (original)
+++ 
maven/plugins/trunk/maven-project-info-reports-plugin/src/test/java/org/apache/maven/report/projectinfo/DependenciesReportTest.java
 Sun Apr 20 13:37:25 2008
@@ -78,15 +78,16 @@
 
         // Test the texts
         TextBlock[] textBlocks = response.getTextBlocks();
-        assertEquals( textBlocks[0].getText(), getString( 
"report.dependencies.title" ) );
-        assertEquals( textBlocks[1].getText(), "test" );
-        assertEquals( textBlocks[2].getText(), getString( 
"report.dependencies.intro.test" ) );
-        assertEquals( textBlocks[3].getText(), getString( 
"report.transitivedependencies.title" ) );
-        assertEquals( textBlocks[4].getText(), getString( 
"report.transitivedependencies.intro" ) );
-        assertEquals( textBlocks[5].getText(), "test" );
-        assertEquals( textBlocks[6].getText(), getString( 
"report.dependencies.intro.test" ) );
-        assertEquals( textBlocks[7].getText(), getString( 
"report.dependencies.graph.title" ) );
-        assertEquals( textBlocks[8].getText(), getString( 
"report.dependencies.graph.tree.title" ) );
-        assertEquals( textBlocks[12].getText(), getString( 
"report.dependencies.graph.tables.title" ) );
+        assertEquals( textBlocks[0].getText(), getString( 
"report.dependencies.java.section.title" ) );
+        assertEquals( textBlocks[3].getText(), getString( 
"report.dependencies.title" ) );
+        assertEquals( textBlocks[4].getText(), "test" );
+        assertEquals( textBlocks[5].getText(), getString( 
"report.dependencies.intro.test" ) );
+        assertEquals( textBlocks[6].getText(), getString( 
"report.transitivedependencies.title" ) );
+        assertEquals( textBlocks[7].getText(), getString( 
"report.transitivedependencies.intro" ) );
+        assertEquals( textBlocks[8].getText(), "test" );
+        assertEquals( textBlocks[9].getText(), getString( 
"report.dependencies.intro.test" ) );
+        assertEquals( textBlocks[10].getText(), getString( 
"report.dependencies.graph.title" ) );
+        assertEquals( textBlocks[11].getText(), getString( 
"report.dependencies.graph.tree.title" ) );
+        assertEquals( textBlocks[15].getText(), getString( 
"report.dependencies.graph.tables.title" ) );
     }
 }


Reply via email to