You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by kr...@apache.org on 2010/05/27 22:50:53 UTC
svn commit: r948982 - in /maven/plugins/trunk/maven-war-plugin/src:
main/java/org/apache/maven/plugin/war/
main/java/org/apache/maven/plugin/war/overlay/
main/java/org/apache/maven/plugin/war/packaging/
test/java/org/apache/maven/plugin/war/ test/java/...
Author: krosenvold
Date: Thu May 27 20:50:53 2010
New Revision: 948982
URL: http://svn.apache.org/viewvc?rev=948982&view=rev
Log:
[MWAR-226] Made war plugin @threadSafe
This included a series of refactorings to bring current project overlay construction from static factory method to outer mojo
Modified:
maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/AbstractWarMojo.java
maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/Overlay.java
maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/overlay/OverlayManager.java
maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/ArtifactsPackagingTask.java
maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/ClassesPackagingTask.java
maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/OverlayPackagingTask.java
maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/WarProjectPackagingTask.java
maven/plugins/trunk/maven-war-plugin/src/test/java/org/apache/maven/plugin/war/WarOverlaysTest.java
maven/plugins/trunk/maven-war-plugin/src/test/java/org/apache/maven/plugin/war/overlay/OverlayManagerTest.java
Modified: maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/AbstractWarMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/AbstractWarMojo.java?rev=948982&r1=948981&r2=948982&view=diff
==============================================================================
--- maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/AbstractWarMojo.java (original)
+++ maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/AbstractWarMojo.java Thu May 27 20:50:53 2010
@@ -313,6 +313,14 @@ public abstract class AbstractWarMojo
private final WebappStructureSerializer webappStructureSerialier = new WebappStructureSerializer();
+ private final Overlay currentProjectOverlay = Overlay.createInstance();
+
+
+ public Overlay getCurrentProjectOverlay()
+ {
+ return currentProjectOverlay;
+ }
+
/**
* Returns a string array of the excludes to be used
* when copying the content of the war source directory.
@@ -431,7 +439,7 @@ public abstract class AbstractWarMojo
getLog().info( "Assembling webapp[" + project.getArtifactId() + "] in [" + webappDirectory + "]" );
final OverlayManager overlayManager =
- new OverlayManager( overlays, project, dependentWarIncludes, dependentWarExcludes );
+ new OverlayManager( overlays, project, dependentWarIncludes, dependentWarExcludes, currentProjectOverlay );
final List packagingTasks = getPackagingTasks( overlayManager );
List defaultFilterWrappers = null;
try
@@ -499,11 +507,12 @@ public abstract class AbstractWarMojo
Overlay overlay = (Overlay) it.next();
if ( overlay.isCurrentProject() )
{
- packagingTasks.add( new WarProjectPackagingTask( webResources, webXml, containerConfigXML ) );
+ packagingTasks.add( new WarProjectPackagingTask( webResources, webXml, containerConfigXML,
+ currentProjectOverlay ) );
}
else
{
- packagingTasks.add( new OverlayPackagingTask( overlay ) );
+ packagingTasks.add( new OverlayPackagingTask( overlay, currentProjectOverlay ) );
}
}
return packagingTasks;
Modified: maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/Overlay.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/Overlay.java?rev=948982&r1=948981&r2=948982&view=diff
==============================================================================
--- maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/Overlay.java (original)
+++ maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/Overlay.java Thu May 27 20:50:53 2010
@@ -47,8 +47,6 @@ public class Overlay
public static final String[] DEFAULT_EXCLUDES = new String[]{"META-INF/MANIFEST.MF"};
- private static Overlay currentProjectInstance;
-
private String id;
private String groupId;
@@ -95,19 +93,11 @@ public class Overlay
return ( groupId == null && artifactId == null );
}
- /**
- * Creates an overlay of the current project.
- *
- * @return the current project as an overlay
- */
- public static Overlay currentProjectInstance()
+ public static Overlay createInstance()
{
- if ( currentProjectInstance == null )
- {
- currentProjectInstance = new Overlay();
- currentProjectInstance.setId( "currentBuild" );
- }
- return currentProjectInstance;
+ Overlay overlay = new Overlay();
+ overlay.setId( "currentBuild" );
+ return overlay;
}
// Getters and Setters
Modified: maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/overlay/OverlayManager.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/overlay/OverlayManager.java?rev=948982&r1=948981&r2=948982&view=diff
==============================================================================
--- maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/overlay/OverlayManager.java (original)
+++ maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/overlay/OverlayManager.java Thu May 27 20:50:53 2010
@@ -57,10 +57,12 @@ public class OverlayManager
* @param project the maven project
* @param defaultIncludes the default includes to use
* @param defaultExcludes the default excludes to use
+ * @param currentProjectOverlay the overlay for the current project
* @throws InvalidOverlayConfigurationException
* if the config is invalid
*/
- public OverlayManager( List overlays, MavenProject project, String defaultIncludes, String defaultExcludes )
+ public OverlayManager( List overlays, MavenProject project, String defaultIncludes, String defaultExcludes,
+ Overlay currentProjectOverlay )
throws InvalidOverlayConfigurationException
{
this.overlays = new ArrayList();
@@ -73,7 +75,7 @@ public class OverlayManager
this.artifactsOverlays = getOverlaysAsArtifacts();
// Initialize
- initialize( defaultIncludes, defaultExcludes );
+ initialize( defaultIncludes, defaultExcludes, currentProjectOverlay );
}
@@ -111,10 +113,11 @@ public class OverlayManager
*
* @param defaultIncludes the default includes to use
* @param defaultExcludes the default excludes to use
+ * @param currentProjectOverlay the overlay for the current project
* @throws InvalidOverlayConfigurationException
* if the configuration is invalid
*/
- void initialize( String defaultIncludes, String defaultExcludes )
+ void initialize( String defaultIncludes, String defaultExcludes, Overlay currentProjectOverlay )
throws InvalidOverlayConfigurationException
{
@@ -132,7 +135,7 @@ public class OverlayManager
// If it's the current project, return the project instance
if ( overlay.isCurrentProject() )
{
- overlay = Overlay.currentProjectInstance();
+ overlay = currentProjectOverlay;
it.set( overlay );
}
// default includes/excludes - only if the overlay uses the default settings
@@ -169,12 +172,12 @@ public class OverlayManager
while ( it3.hasNext() )
{
Overlay overlay = (Overlay) it3.next();
- if ( overlay.equals( Overlay.currentProjectInstance() ) )
+ if ( overlay.equals( currentProjectOverlay ) )
{
return;
}
}
- overlays.add( 0, Overlay.currentProjectInstance() );
+ overlays.add( 0, currentProjectOverlay );
}
/**
Modified: maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/ArtifactsPackagingTask.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/ArtifactsPackagingTask.java?rev=948982&r1=948981&r2=948982&view=diff
==============================================================================
--- maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/ArtifactsPackagingTask.java (original)
+++ maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/ArtifactsPackagingTask.java Thu May 27 20:50:53 2010
@@ -51,10 +51,10 @@ public class ArtifactsPackagingTask
private final String id;
- public ArtifactsPackagingTask( Set artifacts )
+ public ArtifactsPackagingTask( Set artifacts, Overlay currentProjectOverlay )
{
this.artifacts = artifacts;
- this.id = Overlay.currentProjectInstance().getId();
+ this.id = currentProjectOverlay.getId();
}
Modified: maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/ClassesPackagingTask.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/ClassesPackagingTask.java?rev=948982&r1=948981&r2=948982&view=diff
==============================================================================
--- maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/ClassesPackagingTask.java (original)
+++ maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/ClassesPackagingTask.java Thu May 27 20:50:53 2010
@@ -45,6 +45,12 @@ import java.io.IOException;
public class ClassesPackagingTask
extends AbstractWarPackagingTask
{
+ private final Overlay currentProjectOverlay;
+
+ public ClassesPackagingTask( Overlay currentProjectOverlay )
+ {
+ this.currentProjectOverlay = currentProjectOverlay;
+ }
public void performPackaging( WarPackagingContext context )
throws MojoExecutionException
@@ -66,7 +72,7 @@ public class ClassesPackagingTask
final PathSet sources = getFilesToIncludes( context.getClassesDirectory(), null, null );
try
{
- copyFiles( Overlay.currentProjectInstance().getId(), context, context.getClassesDirectory(),
+ copyFiles( currentProjectOverlay.getId(), context, context.getClassesDirectory(),
sources, CLASSES_PATH, false );
}
catch ( IOException e )
@@ -98,7 +104,7 @@ public class ClassesPackagingTask
}
final String targetFilename = LIB_PATH + archiveName;
- if ( context.getWebappStructure().registerFile( Overlay.currentProjectInstance().getId(), targetFilename ) )
+ if ( context.getWebappStructure().registerFile( currentProjectOverlay.getId(), targetFilename ) )
{
final File libDirectory = new File( context.getWebappDirectory(), LIB_PATH );
final File jarFile = new File( libDirectory, archiveName );
Modified: maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/OverlayPackagingTask.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/OverlayPackagingTask.java?rev=948982&r1=948981&r2=948982&view=diff
==============================================================================
--- maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/OverlayPackagingTask.java (original)
+++ maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/OverlayPackagingTask.java Thu May 27 20:50:53 2010
@@ -40,13 +40,13 @@ public class OverlayPackagingTask
private final Overlay overlay;
- public OverlayPackagingTask( Overlay overlay )
+ public OverlayPackagingTask( Overlay overlay, Overlay currentProjectOverlay )
{
if ( overlay == null )
{
throw new NullPointerException( "overlay could not be null." );
}
- if ( overlay.equals( Overlay.currentProjectInstance() ) )
+ if ( overlay.equals( currentProjectOverlay ) )
{
throw new IllegalStateException( "Could not handle the current project with this task." );
}
Modified: maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/WarProjectPackagingTask.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/WarProjectPackagingTask.java?rev=948982&r1=948981&r2=948982&view=diff
==============================================================================
--- maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/WarProjectPackagingTask.java (original)
+++ maven/plugins/trunk/maven-war-plugin/src/main/java/org/apache/maven/plugin/war/packaging/WarProjectPackagingTask.java Thu May 27 20:50:53 2010
@@ -57,8 +57,11 @@ public class WarProjectPackagingTask
private final String id;
+ private Overlay currentProjectOverlay;
- public WarProjectPackagingTask( Resource[] webResources, File webXml, File containerConfigXml )
+
+ public WarProjectPackagingTask( Resource[] webResources, File webXml, File containerConfigXml,
+ Overlay currentProjectOverlay )
{
if ( webResources != null )
{
@@ -70,7 +73,8 @@ public class WarProjectPackagingTask
}
this.webXml = webXml;
this.containerConfigXML = containerConfigXml;
- this.id = Overlay.currentProjectInstance().getId();
+ this.currentProjectOverlay = currentProjectOverlay;
+ this.id = currentProjectOverlay.getId();
}
public void performPackaging( WarPackagingContext context )
@@ -180,7 +184,8 @@ public class WarProjectPackagingTask
protected void handleArtifacts( WarPackagingContext context )
throws MojoExecutionException
{
- ArtifactsPackagingTask task = new ArtifactsPackagingTask( context.getProject().getArtifacts() );
+ ArtifactsPackagingTask task = new ArtifactsPackagingTask( context.getProject().getArtifacts(),
+ currentProjectOverlay );
task.performPackaging( context );
}
@@ -193,7 +198,7 @@ public class WarProjectPackagingTask
protected void handleClassesDirectory( WarPackagingContext context )
throws MojoExecutionException
{
- ClassesPackagingTask task = new ClassesPackagingTask();
+ ClassesPackagingTask task = new ClassesPackagingTask( currentProjectOverlay);
task.performPackaging( context );
}
Modified: maven/plugins/trunk/maven-war-plugin/src/test/java/org/apache/maven/plugin/war/WarOverlaysTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-war-plugin/src/test/java/org/apache/maven/plugin/war/WarOverlaysTest.java?rev=948982&r1=948981&r2=948982&view=diff
==============================================================================
--- maven/plugins/trunk/maven-war-plugin/src/test/java/org/apache/maven/plugin/war/WarOverlaysTest.java (original)
+++ maven/plugins/trunk/maven-war-plugin/src/test/java/org/apache/maven/plugin/war/WarOverlaysTest.java Thu May 27 20:50:53 2010
@@ -249,7 +249,7 @@ public class WarOverlaysTest
final List overlays = new ArrayList();
// Add the default project explicitely
- overlays.add( Overlay.currentProjectInstance() );
+ overlays.add( mojo.getCurrentProjectOverlay() );
// Other overlays
overlays.add( new DefaultOverlay( overlay1 ) );
@@ -341,7 +341,7 @@ public class WarOverlaysTest
mojo.addOverlay( over1 );
mojo.addOverlay( over2 );
mojo.addOverlay( over3 );
- mojo.addOverlay( Overlay.currentProjectInstance() );
+ mojo.addOverlay( mojo.getCurrentProjectOverlay());
mojo.addOverlay( over4 );
final List assertedFiles = new ArrayList();
@@ -411,7 +411,7 @@ public class WarOverlaysTest
mojo.addOverlay( over1 );
mojo.addOverlay( over2 );
mojo.addOverlay( over3 );
- mojo.addOverlay( Overlay.currentProjectInstance() );
+ mojo.addOverlay( mojo.getCurrentProjectOverlay() );
mojo.addOverlay( over4 );
final List assertedFiles = new ArrayList();
Modified: maven/plugins/trunk/maven-war-plugin/src/test/java/org/apache/maven/plugin/war/overlay/OverlayManagerTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-war-plugin/src/test/java/org/apache/maven/plugin/war/overlay/OverlayManagerTest.java?rev=948982&r1=948981&r2=948982&view=diff
==============================================================================
--- maven/plugins/trunk/maven-war-plugin/src/test/java/org/apache/maven/plugin/war/overlay/OverlayManagerTest.java (original)
+++ maven/plugins/trunk/maven-war-plugin/src/test/java/org/apache/maven/plugin/war/overlay/OverlayManagerTest.java Thu May 27 20:50:53 2010
@@ -48,10 +48,12 @@ public class OverlayManagerTest
final List overlays = new ArrayList();
try
{
- OverlayManager manager = new OverlayManager( overlays, project, DEFAULT_INCLUDES, DEFAULT_EXCLUDES );
+ final Overlay currentProjectOVerlay = Overlay.createInstance();
+ OverlayManager manager = new OverlayManager( overlays, project, DEFAULT_INCLUDES, DEFAULT_EXCLUDES,
+ currentProjectOVerlay );
assertNotNull( manager.getOverlays() );
assertEquals( 1, manager.getOverlays().size() );
- assertEquals( Overlay.currentProjectInstance(), manager.getOverlays().get( 0 ) );
+ assertEquals( currentProjectOVerlay, manager.getOverlays().get( 0 ) );
}
catch ( InvalidOverlayConfigurationException e )
{
@@ -60,7 +62,7 @@ public class OverlayManagerTest
}
}
- public void testAutodetectSimpleOverlay()
+ public void testAutodetectSimpleOverlay( Overlay currentProjectOverlay )
throws Exception
{
@@ -72,10 +74,12 @@ public class OverlayManagerTest
try
{
- OverlayManager manager = new OverlayManager( overlays, project, DEFAULT_INCLUDES, DEFAULT_EXCLUDES );
+ final Overlay overlay = currentProjectOverlay;
+ OverlayManager manager = new OverlayManager( overlays, project, DEFAULT_INCLUDES, DEFAULT_EXCLUDES,
+ overlay );
assertNotNull( manager.getOverlays() );
assertEquals( 2, manager.getOverlays().size() );
- assertEquals( Overlay.currentProjectInstance(), manager.getOverlays().get( 0 ) );
+ assertEquals( overlay, manager.getOverlays().get( 0 ) );
assertEquals( new DefaultOverlay( first ), manager.getOverlays().get( 1 ) );
}
catch ( InvalidOverlayConfigurationException e )
@@ -98,10 +102,12 @@ public class OverlayManagerTest
try
{
- OverlayManager manager = new OverlayManager( overlays, project, DEFAULT_INCLUDES, DEFAULT_EXCLUDES );
+ final Overlay currentProjectOverlay = Overlay.createInstance();
+ OverlayManager manager = new OverlayManager( overlays, project, DEFAULT_INCLUDES, DEFAULT_EXCLUDES,
+ currentProjectOverlay );
assertNotNull( manager.getOverlays() );
assertEquals( 2, manager.getOverlays().size() );
- assertEquals( Overlay.currentProjectInstance(), manager.getOverlays().get( 0 ) );
+ assertEquals( Overlay.createInstance(), manager.getOverlays().get( 0 ) );
assertEquals( overlays.get( 0 ), manager.getOverlays().get( 1 ) );
}
catch ( InvalidOverlayConfigurationException e )
@@ -124,7 +130,8 @@ public class OverlayManagerTest
try
{
- new OverlayManager( overlays, project, DEFAULT_INCLUDES, DEFAULT_EXCLUDES );
+ final Overlay currentProjectOVerlay = Overlay.createInstance();
+ new OverlayManager( overlays, project, DEFAULT_INCLUDES, DEFAULT_EXCLUDES, currentProjectOVerlay );
fail( "Should have failed to validate an unknown overlay" );
}
catch ( InvalidOverlayConfigurationException e )
@@ -145,15 +152,17 @@ public class OverlayManagerTest
final List overlays = new ArrayList();
overlays.add( new DefaultOverlay( first ) );
- overlays.add( Overlay.currentProjectInstance() );
+ final Overlay currentProjectOverlay = Overlay.createInstance();
+ overlays.add( currentProjectOverlay );
try
{
- OverlayManager manager = new OverlayManager( overlays, project, DEFAULT_INCLUDES, DEFAULT_EXCLUDES );
+ OverlayManager manager = new OverlayManager( overlays, project, DEFAULT_INCLUDES, DEFAULT_EXCLUDES,
+ currentProjectOverlay );
assertNotNull( manager.getOverlays() );
assertEquals( 3, manager.getOverlays().size() );
assertEquals( overlays.get( 0 ), manager.getOverlays().get( 0 ) );
- assertEquals( Overlay.currentProjectInstance(), manager.getOverlays().get( 1 ) );
+ assertEquals( currentProjectOverlay, manager.getOverlays().get( 1 ) );
assertEquals( new DefaultOverlay( second ), manager.getOverlays().get( 2 ) );
}
@@ -181,10 +190,12 @@ public class OverlayManagerTest
try
{
- OverlayManager manager = new OverlayManager( overlays, project, DEFAULT_INCLUDES, DEFAULT_EXCLUDES );
+ final Overlay currentProjectOverlay = Overlay.createInstance();
+ OverlayManager manager = new OverlayManager( overlays, project, DEFAULT_INCLUDES, DEFAULT_EXCLUDES,
+ currentProjectOverlay );
assertNotNull( manager.getOverlays() );
assertEquals( 3, manager.getOverlays().size() );
- assertEquals( Overlay.currentProjectInstance(), manager.getOverlays().get( 0 ) );
+ assertEquals( currentProjectOverlay, manager.getOverlays().get( 0 ) );
assertEquals( overlays.get( 0 ), manager.getOverlays().get( 1 ) );
assertEquals( overlays.get( 1 ), manager.getOverlays().get( 2 ) );