You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by hb...@apache.org on 2015/12/17 19:33:15 UTC

svn commit: r1720625 - in /maven/doxia/doxia-sitetools/trunk/doxia-integration-tools/src: main/java/org/apache/maven/doxia/tools/ test/java/org/apache/maven/doxia/tools/

Author: hboutemy
Date: Thu Dec 17 18:33:15 2015
New Revision: 1720625

URL: http://svn.apache.org/viewvc?rev=1720625&view=rev
Log:
[DOXIASITETOOLS-125] fixed site directory propagation from project to parent

Modified:
    maven/doxia/doxia-sitetools/trunk/doxia-integration-tools/src/main/java/org/apache/maven/doxia/tools/DefaultSiteTool.java
    maven/doxia/doxia-sitetools/trunk/doxia-integration-tools/src/main/java/org/apache/maven/doxia/tools/SiteTool.java
    maven/doxia/doxia-sitetools/trunk/doxia-integration-tools/src/test/java/org/apache/maven/doxia/tools/SiteToolTest.java

Modified: maven/doxia/doxia-sitetools/trunk/doxia-integration-tools/src/main/java/org/apache/maven/doxia/tools/DefaultSiteTool.java
URL: http://svn.apache.org/viewvc/maven/doxia/doxia-sitetools/trunk/doxia-integration-tools/src/main/java/org/apache/maven/doxia/tools/DefaultSiteTool.java?rev=1720625&r1=1720624&r2=1720625&view=diff
==============================================================================
--- maven/doxia/doxia-sitetools/trunk/doxia-integration-tools/src/main/java/org/apache/maven/doxia/tools/DefaultSiteTool.java (original)
+++ maven/doxia/doxia-sitetools/trunk/doxia-integration-tools/src/main/java/org/apache/maven/doxia/tools/DefaultSiteTool.java Thu Dec 17 18:33:15 2015
@@ -325,6 +325,7 @@ public class DefaultSiteTool
     /** {@inheritDoc} */
     public File getSiteDescriptor( File siteDirectory, Locale locale )
     {
+        checkNotNull( "siteDirectory", siteDirectory );
         final Locale llocale = ( locale == null ) ? new Locale( "" ) : locale;
 
         File siteDescriptor = new File( siteDirectory, "site_" + llocale.getLanguage() + ".xml" );
@@ -391,6 +392,8 @@ public class DefaultSiteTool
 
         final Locale llocale = ( locale == null ) ? Locale.getDefault() : locale;
 
+        getLogger().debug( "Computing decoration model for locale " + llocale );
+
         Map<String, String> props = new HashMap<String, String>( 2 );
 
         // This is to support the deprecated ${reports} and ${modules} tags.
@@ -404,6 +407,8 @@ public class DefaultSiteTool
 
         if ( decorationModel == null )
         {
+            getLogger().debug( "Using default site descriptor" );
+
             String siteDescriptorContent;
 
             InputStream in = null;
@@ -442,6 +447,11 @@ public class DefaultSiteTool
             decorationModel.setBannerLeft( banner );
         }
 
+        if ( decorationModel != null && decorationModel.getSkin() != null )
+        {
+            getLogger().debug( "Skin used: " + decorationModel.getSkin() );
+        }
+
         return decorationModel;
     }
 
@@ -1015,12 +1025,12 @@ public class DefaultSiteTool
     }
 
     /**
+     * @param siteDirectory, can be null if project.basedir is null, ie POM from repository
+     * @param locale not null
      * @param project not null
      * @param reactorProjects not null
      * @param localRepository not null
      * @param repositories not null
-     * @param siteDirectory may be null
-     * @param locale not null
      * @param origProps not null
      * @return the decoration model depending the locale
      * @throws SiteToolException if any
@@ -1064,6 +1074,10 @@ public class DefaultSiteTool
                 siteDescriptorContent = IOUtil.toString( siteDescriptorReader );
                 siteDescriptorLastModified = siteDescriptor.lastModified();
             }
+            else
+            {
+                getLogger().debug( "No site descriptor found for " + project.getId() );
+            }
         }
         catch ( IOException e )
         {
@@ -1085,12 +1099,25 @@ public class DefaultSiteTool
 
         if ( parentProject != null && ( decoration == null || decoration.isMergeParent() ) )
         {
-            getLogger().debug( "Loading parent project site descriptor..." );
+            getLogger().debug( "Looking for parent project site descriptor: " + parentProject.getId() );
 
             MavenProject parentParentProject = getParentProject( parentProject, reactorProjects, localRepository );
 
-            DecorationModel parent = getDecorationModel( null, locale, parentProject, parentParentProject,
-                                                         reactorProjects, localRepository, repositories, props );
+            File parentSiteDirectory = null;
+
+            if ( parentProject.getBasedir() != null )
+            {
+                String siteRelativePath = getRelativeFilePath( project.getBasedir().getAbsolutePath(),
+                                                               siteDescriptor.getParentFile().getAbsolutePath() );
+
+                parentSiteDirectory = new File( parentProject.getBasedir(), siteRelativePath );
+                // notice: using same siteRelativePath for parent as current project; may be wrong if site plugin
+                // has different configuration. But this is a rare case (this only has impact if parent if from reactor)
+            }
+
+            DecorationModel parent =
+                getDecorationModel( parentSiteDirectory, locale, parentProject, parentParentProject, reactorProjects,
+                                    localRepository, repositories, props );
 
             // MSHARED-116 requires an empty decoration model (instead of a null one)
             // MSHARED-145 requires us to do this only if there is a parent to merge it with
@@ -1111,18 +1138,13 @@ public class DefaultSiteTool
             String parentDistMgmnt = getDistMgmntSiteUrl( parentProject );
             if ( getLogger().isDebugEnabled() )
             {
-                getLogger().debug( "model inheritance distributionManagement.site.url child = " + projectDistMgmnt
-                    + ", parent = " + parentDistMgmnt );
+                getLogger().debug( "assembling decoration model inheritance: distributionManagement.site.url child = " + projectDistMgmnt
+                    + " and parent = " + parentDistMgmnt );
             }
             assembler.assembleModelInheritance( name, decoration, parent, projectDistMgmnt,
                                                 parentDistMgmnt == null ? projectDistMgmnt : parentDistMgmnt );
         }
 
-        if ( decoration != null && decoration.getSkin() != null )
-        {
-            getLogger().debug( "Skin used: " + decoration.getSkin() );
-        }
-
         return decoration;
     }
 

Modified: maven/doxia/doxia-sitetools/trunk/doxia-integration-tools/src/main/java/org/apache/maven/doxia/tools/SiteTool.java
URL: http://svn.apache.org/viewvc/maven/doxia/doxia-sitetools/trunk/doxia-integration-tools/src/main/java/org/apache/maven/doxia/tools/SiteTool.java?rev=1720625&r1=1720624&r2=1720625&view=diff
==============================================================================
--- maven/doxia/doxia-sitetools/trunk/doxia-integration-tools/src/main/java/org/apache/maven/doxia/tools/SiteTool.java (original)
+++ maven/doxia/doxia-sitetools/trunk/doxia-integration-tools/src/main/java/org/apache/maven/doxia/tools/SiteTool.java Thu Dec 17 18:33:15 2015
@@ -80,7 +80,7 @@ public interface SiteTool
     /**
      * Get a site descriptor from the project's site directory.
      *
-     * @param siteDirectory the site directory
+     * @param siteDirectory the site directory, not null
      * @param locale the locale wanted for the site descriptor. If not null, searching for
      * <code>site_<i>localeLanguage</i>.xml</code>, otherwise searching for <code>site.xml</code>.
      * @return the site descriptor file
@@ -124,7 +124,7 @@ public interface SiteTool
     /**
      * Get a decoration model for a project.
      *
-     * @param siteDirectory the site directory, may be <code>null</code>
+     * @param siteDirectory the site directory, may be null if project from repository
      * @param locale the locale used for the i18n in DecorationModel. If null, using the default locale in the jvm.
      * @param project the Maven project, not null.
      * @param reactorProjects the Maven reactor projects, not null.

Modified: maven/doxia/doxia-sitetools/trunk/doxia-integration-tools/src/test/java/org/apache/maven/doxia/tools/SiteToolTest.java
URL: http://svn.apache.org/viewvc/maven/doxia/doxia-sitetools/trunk/doxia-integration-tools/src/test/java/org/apache/maven/doxia/tools/SiteToolTest.java?rev=1720625&r1=1720624&r2=1720625&view=diff
==============================================================================
--- maven/doxia/doxia-sitetools/trunk/doxia-integration-tools/src/test/java/org/apache/maven/doxia/tools/SiteToolTest.java (original)
+++ maven/doxia/doxia-sitetools/trunk/doxia-integration-tools/src/test/java/org/apache/maven/doxia/tools/SiteToolTest.java Thu Dec 17 18:33:15 2015
@@ -258,19 +258,34 @@ public class SiteToolTest
         project.setVersion( "1.0" );
         List<MavenProject> reactorProjects = new ArrayList<MavenProject>();
 
-        project.setBasedir( null ); // get it from repo
-
-        DecorationModel model = tool.getDecorationModel( null, Locale.getDefault(), project, reactorProjects,
-                                                         getLocalRepo(), project.getRemoteArtifactRepositories() );
+        // model from current local build
+        DecorationModel model =
+            tool.getDecorationModel( new File( project.getBasedir(), "src/site" ), Locale.getDefault(), project,
+                                     reactorProjects, getLocalRepo(), project.getRemoteArtifactRepositories() );
         assertNotNull( model );
         assertNotNull( model.getBannerLeft() );
-        assertEquals( "Maven", model.getBannerLeft().getName() );
-        assertEquals( "images/apache-maven-project-2.png", model.getBannerLeft().getSrc() );
+        assertEquals( "Maven Site", model.getBannerLeft().getName() );
+        assertEquals( "http://maven.apache.org/images/apache-maven-project.png", model.getBannerLeft().getSrc() );
         assertEquals( "http://maven.apache.org/", model.getBannerLeft().getHref() );
         assertNotNull( model.getBannerRight() );
         assertNull( model.getBannerRight().getName() );
-        assertEquals( "images/maven-logo-2.gif", model.getBannerRight().getSrc() );
+        assertEquals( "http://maven.apache.org/images/maven-small.gif", model.getBannerRight().getSrc() );
         assertNull( model.getBannerRight().getHref() );
+
+        // model from repo: http://repo1.maven.org/maven2/org/apache/maven/maven-site/1.0/maven-site-1.0-site.xml
+        project.setBasedir( null );
+        DecorationModel modelFromRepo =
+            tool.getDecorationModel( null, Locale.getDefault(), project, reactorProjects, getLocalRepo(),
+                                     project.getRemoteArtifactRepositories() );
+        assertNotNull( modelFromRepo );
+        assertNotNull( modelFromRepo.getBannerLeft() );
+        assertEquals( "Maven", modelFromRepo.getBannerLeft().getName() );
+        assertEquals( "images/apache-maven-project-2.png", modelFromRepo.getBannerLeft().getSrc() );
+        assertEquals( "http://maven.apache.org/", modelFromRepo.getBannerLeft().getHref() );
+        assertNotNull( modelFromRepo.getBannerRight() );
+        assertNull( modelFromRepo.getBannerRight().getName() );
+        assertEquals( "images/maven-logo-2.gif", modelFromRepo.getBannerRight().getSrc() );
+        assertNull( modelFromRepo.getBannerRight().getHref() );
     }
 
     /**