mirror of https://github.com/apache/maven.git
reverting that commit, meant for my branch
git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@688584 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
2a94051f54
commit
b07c8d2e36
|
@ -22,6 +22,7 @@ package org.apache.maven.execution;
|
||||||
import org.apache.maven.artifact.repository.ArtifactRepository;
|
import org.apache.maven.artifact.repository.ArtifactRepository;
|
||||||
import org.apache.maven.errors.CoreErrorReporter;
|
import org.apache.maven.errors.CoreErrorReporter;
|
||||||
import org.apache.maven.monitor.event.EventMonitor;
|
import org.apache.maven.monitor.event.EventMonitor;
|
||||||
|
import org.apache.maven.monitor.event.MavenWorkspaceMonitor;
|
||||||
import org.apache.maven.profiles.ProfileManager;
|
import org.apache.maven.profiles.ProfileManager;
|
||||||
import org.apache.maven.profiles.activation.ProfileActivationContext;
|
import org.apache.maven.profiles.activation.ProfileActivationContext;
|
||||||
import org.apache.maven.project.DefaultProjectBuilderConfiguration;
|
import org.apache.maven.project.DefaultProjectBuilderConfiguration;
|
||||||
|
@ -101,6 +102,8 @@ public class DefaultMavenExecutionRequest
|
||||||
|
|
||||||
private List eventMonitors;
|
private List eventMonitors;
|
||||||
|
|
||||||
|
private MavenWorkspaceMonitor workspaceMonitor;
|
||||||
|
|
||||||
private List activeProfiles;
|
private List activeProfiles;
|
||||||
|
|
||||||
private List inactiveProfiles;
|
private List inactiveProfiles;
|
||||||
|
@ -709,6 +712,17 @@ public class DefaultMavenExecutionRequest
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public MavenWorkspaceMonitor getWorkspaceMonitor()
|
||||||
|
{
|
||||||
|
return workspaceMonitor;
|
||||||
|
}
|
||||||
|
|
||||||
|
public MavenExecutionRequest setWorkspaceMonitor( MavenWorkspaceMonitor workspaceMonitor )
|
||||||
|
{
|
||||||
|
this.workspaceMonitor = workspaceMonitor;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public Properties getUserProperties()
|
public Properties getUserProperties()
|
||||||
{
|
{
|
||||||
return userProperties;
|
return userProperties;
|
||||||
|
|
|
@ -23,6 +23,7 @@ import org.apache.maven.artifact.repository.ArtifactRepository;
|
||||||
import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
|
import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
|
||||||
import org.apache.maven.errors.CoreErrorReporter;
|
import org.apache.maven.errors.CoreErrorReporter;
|
||||||
import org.apache.maven.monitor.event.EventMonitor;
|
import org.apache.maven.monitor.event.EventMonitor;
|
||||||
|
import org.apache.maven.monitor.event.MavenWorkspaceMonitor;
|
||||||
import org.apache.maven.profiles.ProfileManager;
|
import org.apache.maven.profiles.ProfileManager;
|
||||||
import org.apache.maven.profiles.activation.ProfileActivationContext;
|
import org.apache.maven.profiles.activation.ProfileActivationContext;
|
||||||
import org.apache.maven.project.ProjectBuilderConfiguration;
|
import org.apache.maven.project.ProjectBuilderConfiguration;
|
||||||
|
@ -221,5 +222,8 @@ public interface MavenExecutionRequest
|
||||||
MavenExecutionRequest setErrorReporter( CoreErrorReporter reporter );
|
MavenExecutionRequest setErrorReporter( CoreErrorReporter reporter );
|
||||||
CoreErrorReporter getErrorReporter();
|
CoreErrorReporter getErrorReporter();
|
||||||
|
|
||||||
|
MavenExecutionRequest setWorkspaceMonitor( MavenWorkspaceMonitor workspaceMonitor );
|
||||||
|
MavenWorkspaceMonitor getWorkspaceMonitor();
|
||||||
|
|
||||||
ProjectBuilderConfiguration getProjectBuildingConfiguration();
|
ProjectBuilderConfiguration getProjectBuildingConfiguration();
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
package org.apache.maven.monitor.event;
|
||||||
|
|
||||||
|
import org.apache.maven.workspace.MavenWorkspaceStore;
|
||||||
|
|
||||||
|
public abstract class AbstractWorkspaceMonitor
|
||||||
|
extends AbstractEmbedderLifecycleMonitor
|
||||||
|
implements MavenWorkspaceMonitor
|
||||||
|
{
|
||||||
|
|
||||||
|
private MavenWorkspaceStore workspaceManager;
|
||||||
|
|
||||||
|
public void setWorkspaceStore( MavenWorkspaceStore workspaceManager )
|
||||||
|
{
|
||||||
|
this.workspaceManager = workspaceManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.apache.maven.embedder.lifecycle.MavenWorkspaceMonitor#clearCache()
|
||||||
|
*/
|
||||||
|
public void clearCache()
|
||||||
|
{
|
||||||
|
workspaceManager.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,13 @@
|
||||||
|
package org.apache.maven.monitor.event;
|
||||||
|
|
||||||
|
import org.apache.maven.workspace.MavenWorkspaceStore;
|
||||||
|
|
||||||
|
public interface MavenWorkspaceMonitor
|
||||||
|
extends EventMonitor
|
||||||
|
{
|
||||||
|
|
||||||
|
void setWorkspaceStore( MavenWorkspaceStore workspaceStore );
|
||||||
|
|
||||||
|
void clearCache();
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,12 @@
|
||||||
|
package org.apache.maven.monitor.event;
|
||||||
|
|
||||||
|
public class OnStopWorkspaceMonitor
|
||||||
|
extends AbstractWorkspaceMonitor
|
||||||
|
{
|
||||||
|
|
||||||
|
public void embedderStopped( long timestamp )
|
||||||
|
{
|
||||||
|
clearCache();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,23 @@
|
||||||
|
package org.apache.maven.monitor.event;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public class PerCallWorkspaceMonitor
|
||||||
|
extends AbstractWorkspaceMonitor
|
||||||
|
{
|
||||||
|
|
||||||
|
public void embedderMethodEnded( String method,
|
||||||
|
long timestamp )
|
||||||
|
{
|
||||||
|
clearCache();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Be double-sure that the cache is cleared when the embedder stops.
|
||||||
|
public void embedderStopped( long timestamp )
|
||||||
|
{
|
||||||
|
clearCache();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -20,6 +20,7 @@ package org.apache.maven.embedder;
|
||||||
|
|
||||||
import org.apache.maven.errors.CoreErrorReporter;
|
import org.apache.maven.errors.CoreErrorReporter;
|
||||||
import org.apache.maven.monitor.event.EventMonitor;
|
import org.apache.maven.monitor.event.EventMonitor;
|
||||||
|
import org.apache.maven.monitor.event.MavenWorkspaceMonitor;
|
||||||
import org.apache.maven.realm.MavenRealmManager;
|
import org.apache.maven.realm.MavenRealmManager;
|
||||||
import org.codehaus.plexus.PlexusContainer;
|
import org.codehaus.plexus.PlexusContainer;
|
||||||
import org.codehaus.plexus.classworlds.ClassWorld;
|
import org.codehaus.plexus.classworlds.ClassWorld;
|
||||||
|
@ -151,4 +152,8 @@ public interface Configuration
|
||||||
Configuration setEventMonitors( List eventMonitors );
|
Configuration setEventMonitors( List eventMonitors );
|
||||||
|
|
||||||
List getEventMonitors();
|
List getEventMonitors();
|
||||||
|
|
||||||
|
Configuration setWorkspaceMonitor( MavenWorkspaceMonitor workspaceMonitor );
|
||||||
|
|
||||||
|
MavenWorkspaceMonitor getWorkspaceMonitor();
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,6 +20,7 @@ package org.apache.maven.embedder;
|
||||||
|
|
||||||
import org.apache.maven.errors.CoreErrorReporter;
|
import org.apache.maven.errors.CoreErrorReporter;
|
||||||
import org.apache.maven.monitor.event.EventMonitor;
|
import org.apache.maven.monitor.event.EventMonitor;
|
||||||
|
import org.apache.maven.monitor.event.MavenWorkspaceMonitor;
|
||||||
import org.apache.maven.realm.MavenRealmManager;
|
import org.apache.maven.realm.MavenRealmManager;
|
||||||
import org.codehaus.plexus.PlexusContainer;
|
import org.codehaus.plexus.PlexusContainer;
|
||||||
import org.codehaus.plexus.classworlds.ClassWorld;
|
import org.codehaus.plexus.classworlds.ClassWorld;
|
||||||
|
@ -68,6 +69,8 @@ public class DefaultConfiguration
|
||||||
/** List<EventMonitor>. */
|
/** List<EventMonitor>. */
|
||||||
private List eventMonitors;
|
private List eventMonitors;
|
||||||
|
|
||||||
|
private MavenWorkspaceMonitor workspaceMonitor;
|
||||||
|
|
||||||
/** Creates a new instance of DefaultConfiguration */
|
/** Creates a new instance of DefaultConfiguration */
|
||||||
public DefaultConfiguration()
|
public DefaultConfiguration()
|
||||||
{
|
{
|
||||||
|
@ -273,4 +276,15 @@ public class DefaultConfiguration
|
||||||
this.eventMonitors = eventMonitors;
|
this.eventMonitors = eventMonitors;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public MavenWorkspaceMonitor getWorkspaceMonitor()
|
||||||
|
{
|
||||||
|
return workspaceMonitor;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Configuration setWorkspaceMonitor( MavenWorkspaceMonitor workspaceMonitor )
|
||||||
|
{
|
||||||
|
this.workspaceMonitor = workspaceMonitor;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -167,6 +167,9 @@ public class MavenEmbedder
|
||||||
|
|
||||||
private BuildPlanner buildPlanner;
|
private BuildPlanner buildPlanner;
|
||||||
|
|
||||||
|
// TODO: Remove this once we have better control over cache-cleaning.
|
||||||
|
private MavenWorkspaceStore workspaceStore;
|
||||||
|
|
||||||
// ----------------------------------------------------------------------
|
// ----------------------------------------------------------------------
|
||||||
// Configuration
|
// Configuration
|
||||||
// ----------------------------------------------------------------------
|
// ----------------------------------------------------------------------
|
||||||
|
@ -200,6 +203,11 @@ public class MavenEmbedder
|
||||||
return request;
|
return request;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected MavenWorkspaceStore getWorkspaceStore()
|
||||||
|
{
|
||||||
|
return workspaceStore;
|
||||||
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------
|
// ----------------------------------------------------------------------
|
||||||
// Accessors
|
// Accessors
|
||||||
// ----------------------------------------------------------------------
|
// ----------------------------------------------------------------------
|
||||||
|
@ -702,6 +710,8 @@ public class MavenEmbedder
|
||||||
|
|
||||||
buildPlanner = (BuildPlanner) container.lookup( BuildPlanner.class );
|
buildPlanner = (BuildPlanner) container.lookup( BuildPlanner.class );
|
||||||
|
|
||||||
|
workspaceStore = (MavenWorkspaceStore) container.lookup( MavenWorkspaceStore.class );
|
||||||
|
|
||||||
artifactHandlerManager = (ArtifactHandlerManager) container.lookup( ArtifactHandlerManager.ROLE );
|
artifactHandlerManager = (ArtifactHandlerManager) container.lookup( ArtifactHandlerManager.ROLE );
|
||||||
|
|
||||||
// This is temporary as we can probably cache a single request and use it for default values and
|
// This is temporary as we can probably cache a single request and use it for default values and
|
||||||
|
|
|
@ -34,6 +34,8 @@ import org.apache.maven.model.Profile;
|
||||||
import org.apache.maven.model.Repository;
|
import org.apache.maven.model.Repository;
|
||||||
import org.apache.maven.monitor.event.DefaultEventMonitor;
|
import org.apache.maven.monitor.event.DefaultEventMonitor;
|
||||||
import org.apache.maven.monitor.event.EventMonitor;
|
import org.apache.maven.monitor.event.EventMonitor;
|
||||||
|
import org.apache.maven.monitor.event.MavenWorkspaceMonitor;
|
||||||
|
import org.apache.maven.monitor.event.PerCallWorkspaceMonitor;
|
||||||
import org.apache.maven.plugin.Mojo;
|
import org.apache.maven.plugin.Mojo;
|
||||||
import org.apache.maven.profiles.DefaultProfileManager;
|
import org.apache.maven.profiles.DefaultProfileManager;
|
||||||
import org.apache.maven.profiles.ProfileManager;
|
import org.apache.maven.profiles.ProfileManager;
|
||||||
|
@ -94,6 +96,8 @@ public class DefaultMavenExecutionRequestPopulator
|
||||||
|
|
||||||
private WagonManager wagonManager;
|
private WagonManager wagonManager;
|
||||||
|
|
||||||
|
private MavenWorkspaceStore workspaceManager;
|
||||||
|
|
||||||
private MavenSettingsBuilder settingsBuilder;
|
private MavenSettingsBuilder settingsBuilder;
|
||||||
|
|
||||||
public MavenExecutionRequest populateDefaults( MavenExecutionRequest request,
|
public MavenExecutionRequest populateDefaults( MavenExecutionRequest request,
|
||||||
|
@ -102,6 +106,8 @@ public class DefaultMavenExecutionRequestPopulator
|
||||||
{
|
{
|
||||||
eventing( request, configuration );
|
eventing( request, configuration );
|
||||||
|
|
||||||
|
workspaceMonitor( request, configuration );
|
||||||
|
|
||||||
reporter( request, configuration );
|
reporter( request, configuration );
|
||||||
|
|
||||||
executionProperties( request, configuration );
|
executionProperties( request, configuration );
|
||||||
|
@ -130,6 +136,44 @@ public class DefaultMavenExecutionRequestPopulator
|
||||||
return request;
|
return request;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void workspaceMonitor( MavenExecutionRequest request,
|
||||||
|
Configuration configuration )
|
||||||
|
{
|
||||||
|
MavenWorkspaceMonitor workspaceMonitor = request.getWorkspaceMonitor();
|
||||||
|
|
||||||
|
if ( workspaceMonitor == null )
|
||||||
|
{
|
||||||
|
workspaceMonitor = configuration.getWorkspaceMonitor();
|
||||||
|
}
|
||||||
|
|
||||||
|
List requestEventMonitors = request.getEventMonitors();
|
||||||
|
if ( ( requestEventMonitors != null ) && !requestEventMonitors.isEmpty() )
|
||||||
|
{
|
||||||
|
for ( Iterator it = requestEventMonitors.iterator(); it.hasNext(); )
|
||||||
|
{
|
||||||
|
Object monitor = it.next();
|
||||||
|
if ( monitor instanceof MavenWorkspaceMonitor )
|
||||||
|
{
|
||||||
|
if ( workspaceMonitor == null )
|
||||||
|
{
|
||||||
|
workspaceMonitor = (MavenWorkspaceMonitor) monitor;
|
||||||
|
}
|
||||||
|
it.remove();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( workspaceMonitor == null )
|
||||||
|
{
|
||||||
|
workspaceMonitor = new PerCallWorkspaceMonitor();
|
||||||
|
}
|
||||||
|
|
||||||
|
workspaceMonitor.setWorkspaceStore( workspaceManager );
|
||||||
|
|
||||||
|
request.addEventMonitor( workspaceMonitor );
|
||||||
|
}
|
||||||
|
|
||||||
private void reporter( MavenExecutionRequest request,
|
private void reporter( MavenExecutionRequest request,
|
||||||
Configuration configuration )
|
Configuration configuration )
|
||||||
{
|
{
|
||||||
|
|
|
@ -23,6 +23,9 @@ under the License.
|
||||||
<role>org.apache.maven.embedder.execution.MavenExecutionRequestPopulator</role>
|
<role>org.apache.maven.embedder.execution.MavenExecutionRequestPopulator</role>
|
||||||
<implementation>org.apache.maven.embedder.execution.DefaultMavenExecutionRequestPopulator</implementation>
|
<implementation>org.apache.maven.embedder.execution.DefaultMavenExecutionRequestPopulator</implementation>
|
||||||
<requirements>
|
<requirements>
|
||||||
|
<requirement>
|
||||||
|
<role>org.apache.maven.workspace.MavenWorkspaceStore</role>
|
||||||
|
</requirement>
|
||||||
<requirement>
|
<requirement>
|
||||||
<role>org.apache.maven.artifact.manager.WagonManager</role>
|
<role>org.apache.maven.artifact.manager.WagonManager</role>
|
||||||
<role-hint>default</role-hint>
|
<role-hint>default</role-hint>
|
||||||
|
@ -72,5 +75,6 @@ under the License.
|
||||||
</httpHeaders>
|
</httpHeaders>
|
||||||
</configuration>
|
</configuration>
|
||||||
</component>
|
</component>
|
||||||
|
|
||||||
</components>
|
</components>
|
||||||
</component-set>
|
</component-set>
|
||||||
|
|
|
@ -0,0 +1,261 @@
|
||||||
|
package org.apache.maven.embedder;
|
||||||
|
|
||||||
|
import org.apache.maven.execution.DefaultMavenExecutionRequest;
|
||||||
|
import org.apache.maven.execution.MavenExecutionRequest;
|
||||||
|
import org.apache.maven.extension.ExtensionScanningException;
|
||||||
|
import org.apache.maven.monitor.event.AbstractWorkspaceMonitor;
|
||||||
|
import org.apache.maven.project.ProjectBuildingException;
|
||||||
|
import org.apache.maven.reactor.MavenExecutionException;
|
||||||
|
import org.apache.maven.workspace.MavenWorkspaceStore;
|
||||||
|
import org.codehaus.plexus.util.FileUtils;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.Collections;
|
||||||
|
|
||||||
|
import junit.framework.TestCase;
|
||||||
|
|
||||||
|
public class MavenEmbedderEventingTest
|
||||||
|
extends TestCase
|
||||||
|
{
|
||||||
|
|
||||||
|
protected String basedir;
|
||||||
|
|
||||||
|
protected void setUp()
|
||||||
|
throws Exception
|
||||||
|
{
|
||||||
|
super.setUp();
|
||||||
|
|
||||||
|
basedir = System.getProperty( "basedir" );
|
||||||
|
|
||||||
|
if ( basedir == null )
|
||||||
|
{
|
||||||
|
basedir = new File( "." ).getCanonicalPath();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testEmbedderInitializeAndStopEventsFired()
|
||||||
|
throws MavenEmbedderException
|
||||||
|
{
|
||||||
|
TestWorkspaceMonitor testWSMonitor = new TestWorkspaceMonitor();
|
||||||
|
|
||||||
|
Configuration config = new DefaultConfiguration();
|
||||||
|
config.setWorkspaceMonitor( testWSMonitor );
|
||||||
|
|
||||||
|
assertEquals( 0, testWSMonitor.initializeCaught );
|
||||||
|
assertEquals( 0, testWSMonitor.setManagerCaught );
|
||||||
|
|
||||||
|
MavenEmbedder embedder = new MavenEmbedder( config );
|
||||||
|
|
||||||
|
assertEquals( 1, testWSMonitor.initializeCaught );
|
||||||
|
assertEquals( 1, testWSMonitor.setManagerCaught );
|
||||||
|
|
||||||
|
assertEquals( 0, testWSMonitor.stopCaught );
|
||||||
|
assertEquals( 0, testWSMonitor.clearCaught );
|
||||||
|
|
||||||
|
assertSame( embedder.getWorkspaceStore(), testWSMonitor.workspaceManager );
|
||||||
|
|
||||||
|
embedder.stop();
|
||||||
|
|
||||||
|
assertEquals( 1, testWSMonitor.stopCaught );
|
||||||
|
assertEquals( 1, testWSMonitor.clearCaught );
|
||||||
|
|
||||||
|
assertEquals( 0, testWSMonitor.startMethodCaught );
|
||||||
|
assertEquals( 0, testWSMonitor.endMethodCaught );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testStartAndEndMethodEventsFiredOnSimpleReadProject()
|
||||||
|
throws IOException, MavenEmbedderException, ProjectBuildingException,
|
||||||
|
ExtensionScanningException, MavenExecutionException
|
||||||
|
{
|
||||||
|
EmbedderAndMonitor em = newEmbedder();
|
||||||
|
|
||||||
|
assertEquals( 0, em.monitor.startMethodCaught );
|
||||||
|
assertEquals( 0, em.monitor.endMethodCaught );
|
||||||
|
|
||||||
|
File dir = getFile( "simple-read-project" );
|
||||||
|
File pomFile = new File( dir, "pom.xml" );
|
||||||
|
|
||||||
|
em.embedder.readProject( pomFile );
|
||||||
|
|
||||||
|
assertEquals( 1, em.monitor.startMethodCaught );
|
||||||
|
assertEquals( 1, em.monitor.endMethodCaught );
|
||||||
|
assertEquals( 1, em.monitor.clearCaught );
|
||||||
|
|
||||||
|
assertSame( em.embedder.getWorkspaceStore(), em.monitor.workspaceManager );
|
||||||
|
|
||||||
|
em.embedder.stop();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testStartAndEndMethodEventsFiredOnReadWithDeps()
|
||||||
|
throws IOException, MavenEmbedderException, ProjectBuildingException,
|
||||||
|
ExtensionScanningException, MavenExecutionException
|
||||||
|
{
|
||||||
|
File dir = getFile( "read-with-deps" );
|
||||||
|
File pomFile = new File( dir, "pom.xml" );
|
||||||
|
File localRepoDir = new File( dir, "repo" );
|
||||||
|
|
||||||
|
EmbedderAndMonitor em = newEmbedder( localRepoDir );
|
||||||
|
|
||||||
|
assertEquals( 0, em.monitor.startMethodCaught );
|
||||||
|
assertEquals( 0, em.monitor.endMethodCaught );
|
||||||
|
|
||||||
|
em.embedder.readProject( pomFile );
|
||||||
|
|
||||||
|
assertEquals( 1, em.monitor.startMethodCaught );
|
||||||
|
assertEquals( 1, em.monitor.endMethodCaught );
|
||||||
|
assertEquals( 1, em.monitor.clearCaught );
|
||||||
|
|
||||||
|
assertSame( em.embedder.getWorkspaceStore(), em.monitor.workspaceManager );
|
||||||
|
|
||||||
|
em.embedder.stop();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testStartAndEndMethodEventsFiredOnExecute()
|
||||||
|
throws IOException, MavenEmbedderException, ProjectBuildingException,
|
||||||
|
ExtensionScanningException, MavenExecutionException
|
||||||
|
{
|
||||||
|
EmbedderAndMonitor em = newEmbedder();
|
||||||
|
|
||||||
|
assertEquals( 0, em.monitor.startMethodCaught );
|
||||||
|
assertEquals( 0, em.monitor.endMethodCaught );
|
||||||
|
|
||||||
|
File dir = getFile( "simple-read-project" );
|
||||||
|
|
||||||
|
MavenExecutionRequest request = new DefaultMavenExecutionRequest();
|
||||||
|
request.setGoals( Collections.singletonList( "clean" ) );
|
||||||
|
request.setBaseDirectory( dir );
|
||||||
|
|
||||||
|
em.embedder.execute( request );
|
||||||
|
|
||||||
|
assertEquals( 1, em.monitor.startMethodCaught );
|
||||||
|
assertEquals( 1, em.monitor.endMethodCaught );
|
||||||
|
assertEquals( 1, em.monitor.clearCaught );
|
||||||
|
|
||||||
|
assertSame( em.embedder.getWorkspaceStore(), em.monitor.workspaceManager );
|
||||||
|
|
||||||
|
em.embedder.stop();
|
||||||
|
}
|
||||||
|
|
||||||
|
private EmbedderAndMonitor newEmbedder()
|
||||||
|
throws MavenEmbedderException
|
||||||
|
{
|
||||||
|
return newEmbedder( null );
|
||||||
|
}
|
||||||
|
|
||||||
|
private EmbedderAndMonitor newEmbedder( File localRepoDir )
|
||||||
|
throws MavenEmbedderException
|
||||||
|
{
|
||||||
|
TestWorkspaceMonitor testWSMonitor = new TestWorkspaceMonitor();
|
||||||
|
|
||||||
|
Configuration config = new DefaultConfiguration();
|
||||||
|
config.setWorkspaceMonitor( testWSMonitor );
|
||||||
|
config.setMavenEmbedderLogger( new MavenEmbedderConsoleLogger() );
|
||||||
|
|
||||||
|
if ( localRepoDir != null )
|
||||||
|
{
|
||||||
|
config.setLocalRepository( localRepoDir );
|
||||||
|
}
|
||||||
|
|
||||||
|
return new EmbedderAndMonitor( new MavenEmbedder( config ), testWSMonitor );
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final class EmbedderAndMonitor
|
||||||
|
{
|
||||||
|
private MavenEmbedder embedder;
|
||||||
|
|
||||||
|
private TestWorkspaceMonitor monitor;
|
||||||
|
|
||||||
|
private EmbedderAndMonitor( MavenEmbedder embedder,
|
||||||
|
TestWorkspaceMonitor monitor )
|
||||||
|
{
|
||||||
|
this.embedder = embedder;
|
||||||
|
this.monitor = monitor;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private File getFile( String path )
|
||||||
|
throws IOException
|
||||||
|
{
|
||||||
|
File testDirectory = new File( basedir, "src/test/eventing-projects/" + path );
|
||||||
|
|
||||||
|
System.out.println( "Test source dir: " + testDirectory );
|
||||||
|
|
||||||
|
File targetDirectory = new File( basedir, "target/eventing-projects/" + path );
|
||||||
|
|
||||||
|
System.out.println( "Test temp dir: " + targetDirectory );
|
||||||
|
|
||||||
|
targetDirectory.getParentFile().mkdirs();
|
||||||
|
|
||||||
|
FileUtils.copyDirectoryStructure( testDirectory, targetDirectory );
|
||||||
|
|
||||||
|
return targetDirectory;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final class TestWorkspaceMonitor
|
||||||
|
extends AbstractWorkspaceMonitor
|
||||||
|
{
|
||||||
|
|
||||||
|
private int initializeCaught = 0;
|
||||||
|
|
||||||
|
private int startMethodCaught = 0;
|
||||||
|
|
||||||
|
private int endMethodCaught = 0;
|
||||||
|
|
||||||
|
private int stopCaught = 0;
|
||||||
|
|
||||||
|
private int setManagerCaught = 0;
|
||||||
|
|
||||||
|
private int clearCaught = 0;
|
||||||
|
|
||||||
|
private MavenWorkspaceStore workspaceManager;
|
||||||
|
|
||||||
|
private boolean clearOnEndMethod = true;
|
||||||
|
|
||||||
|
private boolean clearOnStop = true;
|
||||||
|
|
||||||
|
public void embedderInitialized( long timestamp )
|
||||||
|
{
|
||||||
|
initializeCaught++;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void embedderMethodEnded( String method,
|
||||||
|
long timestamp )
|
||||||
|
{
|
||||||
|
endMethodCaught++;
|
||||||
|
if ( clearOnEndMethod )
|
||||||
|
{
|
||||||
|
clearCache();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void embedderMethodStarted( String method,
|
||||||
|
long timestamp )
|
||||||
|
{
|
||||||
|
startMethodCaught++;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void embedderStopped( long timestamp )
|
||||||
|
{
|
||||||
|
stopCaught++;
|
||||||
|
if ( clearOnStop )
|
||||||
|
{
|
||||||
|
clearCache();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setWorkspaceStore( MavenWorkspaceStore workspaceManager )
|
||||||
|
{
|
||||||
|
setManagerCaught++;
|
||||||
|
this.workspaceManager = workspaceManager;
|
||||||
|
super.setWorkspaceStore( workspaceManager );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void clearCache()
|
||||||
|
{
|
||||||
|
clearCaught++;
|
||||||
|
super.clearCache();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
3
pom.xml
3
pom.xml
|
@ -256,6 +256,7 @@
|
||||||
<module>maven-project</module>
|
<module>maven-project</module>
|
||||||
<module>maven-reporting-api</module>
|
<module>maven-reporting-api</module>
|
||||||
<module>maven-embedder</module>
|
<module>maven-embedder</module>
|
||||||
|
<module>maven-workspace</module>
|
||||||
<module>maven-toolchain</module>
|
<module>maven-toolchain</module>
|
||||||
</modules>
|
</modules>
|
||||||
<properties>
|
<properties>
|
||||||
|
@ -266,7 +267,7 @@
|
||||||
<doxiaVersion>1.0-alpha-9</doxiaVersion>
|
<doxiaVersion>1.0-alpha-9</doxiaVersion>
|
||||||
<easyMockVersion>1.2_Java1.3</easyMockVersion>
|
<easyMockVersion>1.2_Java1.3</easyMockVersion>
|
||||||
<junitVersion>3.8.1</junitVersion>
|
<junitVersion>3.8.1</junitVersion>
|
||||||
<plexusVersion>1.0-alpha-50-SNAPSHOT</plexusVersion>
|
<plexusVersion>1.0-alpha-48</plexusVersion>
|
||||||
<plexusInteractivityVersion>1.0-alpha-6</plexusInteractivityVersion>
|
<plexusInteractivityVersion>1.0-alpha-6</plexusInteractivityVersion>
|
||||||
<plexusInterpolationVersion>1.1</plexusInterpolationVersion>
|
<plexusInterpolationVersion>1.1</plexusInterpolationVersion>
|
||||||
<plexusUtilsVersion>1.5.5</plexusUtilsVersion>
|
<plexusUtilsVersion>1.5.5</plexusUtilsVersion>
|
||||||
|
|
Loading…
Reference in New Issue