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 );