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/20 01:38:35 UTC

svn commit: r1720982 - in /maven/plugins/trunk/maven-site-plugin: ./ src/main/java/org/apache/maven/plugins/site/run/

Author: hboutemy
Date: Sun Dec 20 00:38:35 2015
New Revision: 1720982

URL: http://svn.apache.org/viewvc?rev=1720982&view=rev
Log:
[MSITE-754] fixed ConcurrentModificationException when using site:run by using separate stable contexts for src/site and target/generated-site

Modified:
    maven/plugins/trunk/maven-site-plugin/pom.xml
    maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/run/DoxiaBean.java
    maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/run/DoxiaFilter.java
    maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/run/SiteRunMojo.java

Modified: maven/plugins/trunk/maven-site-plugin/pom.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-site-plugin/pom.xml?rev=1720982&r1=1720981&r2=1720982&view=diff
==============================================================================
--- maven/plugins/trunk/maven-site-plugin/pom.xml (original)
+++ maven/plugins/trunk/maven-site-plugin/pom.xml Sun Dec 20 00:38:35 2015
@@ -30,7 +30,7 @@ under the License.
   </parent>
 
   <artifactId>maven-site-plugin</artifactId>
-  <version>3.4.1-SNAPSHOT</version>
+  <version>3.5-SNAPSHOT</version>
   <packaging>maven-plugin</packaging>
 
   <name>Apache Maven Site Plugin</name>

Modified: maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/run/DoxiaBean.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/run/DoxiaBean.java?rev=1720982&r1=1720981&r2=1720982&view=diff
==============================================================================
--- maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/run/DoxiaBean.java (original)
+++ maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/run/DoxiaBean.java Sun Dec 20 00:38:35 2015
@@ -19,7 +19,6 @@ package org.apache.maven.plugins.site.ru
  * under the License.
  */
 
-import java.io.File;
 import java.util.Map;
 
 import org.apache.maven.doxia.siterenderer.DocumentRenderer;
@@ -37,7 +36,7 @@ public class DoxiaBean
 
     private Map<String, DocumentRenderer> documents;
 
-    private File generatedSiteDirectory;
+    private SiteRenderingContext generatedSiteContext;
 
     /**
      * @param context
@@ -45,11 +44,11 @@ public class DoxiaBean
      * @param generatedSiteDirectory
      */
     public DoxiaBean( SiteRenderingContext context, Map<String, DocumentRenderer> documents,
-                                 File generatedSiteDirectory )
+                      SiteRenderingContext generatedSiteContext )
     {
         this.context = context;
         this.documents = documents;
-        this.generatedSiteDirectory = generatedSiteDirectory;
+        this.generatedSiteContext = generatedSiteContext;
     }
 
     public SiteRenderingContext getContext()
@@ -72,13 +71,13 @@ public class DoxiaBean
         this.documents = documents;
     }
 
-    public File getGeneratedSiteDirectory()
+    public SiteRenderingContext getGeneratedSiteContext()
     {
-        return generatedSiteDirectory;
+        return generatedSiteContext;
     }
 
-    public void setGeneratedSiteDirectory( File generatedSiteDirectory )
+    public void setGeneratedSiteContext( SiteRenderingContext generatedSiteContext )
     {
-        this.generatedSiteDirectory = generatedSiteDirectory;
+        this.generatedSiteContext = generatedSiteContext;
     }
 }

Modified: maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/run/DoxiaFilter.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/run/DoxiaFilter.java?rev=1720982&r1=1720981&r2=1720982&view=diff
==============================================================================
--- maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/run/DoxiaFilter.java (original)
+++ maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/run/DoxiaFilter.java Sun Dec 20 00:38:35 2015
@@ -34,9 +34,7 @@ import javax.servlet.ServletRequest;
 import javax.servlet.ServletResponse;
 import javax.servlet.http.HttpServletRequest;
 
-import java.io.File;
 import java.io.IOException;
-import java.util.ArrayList;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
@@ -100,7 +98,7 @@ public class DoxiaFilter
         // Handle locale request
         SiteRenderingContext context;
         Map<String, DocumentRenderer> documents;
-        File generatedSiteDirectory;
+        SiteRenderingContext generatedSiteContext;
 
         String localeWanted = null;
         for ( Locale locale : localesList )
@@ -121,7 +119,7 @@ public class DoxiaFilter
             }
             context = defaultDoxiaBean.getContext();
             documents = defaultDoxiaBean.getDocuments();
-            generatedSiteDirectory = defaultDoxiaBean.getGeneratedSiteDirectory();
+            generatedSiteContext = defaultDoxiaBean.getGeneratedSiteContext();
         }
         else
         {
@@ -132,7 +130,7 @@ public class DoxiaFilter
             }
             context = i18nDoxiaBean.getContext();
             documents = i18nDoxiaBean.getDocuments();
-            generatedSiteDirectory = i18nDoxiaBean.getGeneratedSiteDirectory();
+            generatedSiteContext = i18nDoxiaBean.getGeneratedSiteContext();
         }
 
         // ----------------------------------------------------------------------
@@ -160,41 +158,36 @@ public class DoxiaFilter
                         }
                     }
                 }
+
+                return;
             }
             catch ( RendererException e )
             {
                 throw new ServletException( e );
             }
         }
-        else if ( generatedSiteDirectory != null && generatedSiteDirectory.exists() )
+        else if ( generatedSiteContext != null )
         {
-            context.getSiteDirectories().clear();
-            context.addSiteDirectory( generatedSiteDirectory );
             try
             {
-                Map<String, DocumentRenderer> locateDocuments = siteRenderer.locateDocumentFiles( context );
+                Map<String, DocumentRenderer> locateDocuments =
+                    siteRenderer.locateDocumentFiles( generatedSiteContext );
 
                 if ( locateDocuments.containsKey( path ) )
                 {
                     DocumentRenderer renderer = locateDocuments.get( path );
-                    renderer.renderDocument( servletResponse.getWriter(), siteRenderer, context );
+                    renderer.renderDocument( servletResponse.getWriter(), siteRenderer, generatedSiteContext );
+
+                    return;
                 }
             }
             catch ( RendererException e )
             {
                 throw new ServletException( e );
             }
-
-            List<File> originalSiteDirectories = new ArrayList<File>( context.getSiteDirectories() );
-            for ( File dir : originalSiteDirectories )
-            {
-                context.addSiteDirectory( dir );
-            }
-        }
-        else
-        {
-            filterChain.doFilter( servletRequest, servletResponse );
         }
+
+        filterChain.doFilter( servletRequest, servletResponse );
     }
 
     /**

Modified: maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/run/SiteRunMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/run/SiteRunMojo.java?rev=1720982&r1=1720981&r2=1720982&view=diff
==============================================================================
--- maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/run/SiteRunMojo.java (original)
+++ maven/plugins/trunk/maven-site-plugin/src/main/java/org/apache/maven/plugins/site/run/SiteRunMojo.java Sun Dec 20 00:38:35 2015
@@ -174,17 +174,23 @@ public class SiteRunMojo
                 i18nContext.setInputEncoding( getInputEncoding() );
                 i18nContext.setOutputEncoding( getOutputEncoding() );
 
+                SiteRenderingContext i18nGeneratedSiteContext = createSiteRenderingContext( locale );
+                i18nGeneratedSiteContext.setInputEncoding( getInputEncoding() );
+                i18nGeneratedSiteContext.setOutputEncoding( getOutputEncoding() );
+                i18nGeneratedSiteContext.getSiteDirectories().clear();
+
                 Map<String, DocumentRenderer> i18nDocuments = locateDocuments( i18nContext, reports, locale );
                 DoxiaBean doxiaBean;
                 if ( defaultLocale.equals( locale ) )
                 {
-                    doxiaBean = new DoxiaBean( i18nContext, i18nDocuments, generatedSiteDirectory );
+                    i18nGeneratedSiteContext.addSiteDirectory( generatedSiteDirectory );
+                    doxiaBean = new DoxiaBean( i18nContext, i18nDocuments, i18nGeneratedSiteContext );
                 }
                 else
                 {
-                    doxiaBean =
-                        new DoxiaBean( i18nContext, i18nDocuments, new File( generatedSiteDirectory,
-                                                                             locale.getLanguage() ) );
+                    i18nGeneratedSiteContext.addSiteDirectory( new File( generatedSiteDirectory,
+                                                                         locale.getLanguage() ) );
+                    doxiaBean = new DoxiaBean( i18nContext, i18nDocuments, i18nGeneratedSiteContext );
                 }
 
                 i18nDoxiaContexts.put( locale.getLanguage(), doxiaBean );