mirror of https://github.com/apache/maven.git
o adding missing model extensions i added
git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@720525 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
42f59de75d
commit
38029c20e2
|
@ -0,0 +1,23 @@
|
|||
package org.apache.maven.listeners;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.maven.execution.MavenSession;
|
||||
import org.codehaus.plexus.component.annotations.Component;
|
||||
import org.codehaus.plexus.component.annotations.Requirement;
|
||||
|
||||
@Component(role = MavenModelEventProcessor.class)
|
||||
public class DefaultMavenModelEventProcessor
|
||||
implements MavenModelEventProcessor
|
||||
{
|
||||
@Requirement
|
||||
List<MavenModelEventListener> listeners;
|
||||
|
||||
public void processModelContainers( MavenSession session )
|
||||
{
|
||||
for( MavenModelEventListener listener : listeners )
|
||||
{
|
||||
listener.processModelContainers( session );
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
package org.apache.maven.listeners;
|
||||
|
||||
import org.apache.maven.execution.MavenSession;
|
||||
import org.apache.maven.shared.model.ModelEventListener;
|
||||
|
||||
public interface MavenModelEventListener
|
||||
extends ModelEventListener
|
||||
{
|
||||
void processModelContainers( MavenSession session );
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
package org.apache.maven.listeners;
|
||||
|
||||
import org.apache.maven.execution.MavenSession;
|
||||
|
||||
public interface MavenModelEventProcessor
|
||||
{
|
||||
void processModelContainers( MavenSession session );
|
||||
}
|
|
@ -0,0 +1,103 @@
|
|||
package org.apache.maven.listeners;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.maven.execution.DefaultMavenExecutionRequest;
|
||||
import org.apache.maven.execution.DuplicateProjectException;
|
||||
import org.apache.maven.execution.MavenExecutionRequest;
|
||||
import org.apache.maven.execution.MavenSession;
|
||||
import org.apache.maven.execution.ReactorManager;
|
||||
import org.apache.maven.model.Model;
|
||||
import org.apache.maven.monitor.event.DefaultEventDispatcher;
|
||||
import org.apache.maven.project.MavenProject;
|
||||
import org.apache.maven.project.builder.ProjectUri;
|
||||
import org.apache.maven.shared.model.ModelContainer;
|
||||
import org.apache.maven.shared.model.ModelContainerAction;
|
||||
import org.apache.maven.shared.model.ModelProperty;
|
||||
import org.apache.maven.wagon.Wagon;
|
||||
import org.codehaus.plexus.PlexusTestCase;
|
||||
import org.codehaus.plexus.util.dag.CycleDetectedException;
|
||||
|
||||
public class BuildExtensionListenerTest
|
||||
extends PlexusTestCase
|
||||
{
|
||||
public void testBuildExtensionListener()
|
||||
throws Exception
|
||||
{
|
||||
BuildExtensionListener listener = (BuildExtensionListener) lookup( MavenModelEventListener.class, "extensions" );
|
||||
|
||||
// Create the model properties and the model container to feed to the event firing
|
||||
List<ModelProperty> modelProperties = new ArrayList<ModelProperty>();
|
||||
modelProperties.add( new ModelProperty( ProjectUri.Build.Extensions.Extension.xUri, null ) );
|
||||
modelProperties.add( new ModelProperty( ProjectUri.Build.Extensions.Extension.groupId, "org.apache.maven.wagon" ) );
|
||||
modelProperties.add( new ModelProperty( ProjectUri.Build.Extensions.Extension.artifactId, "wagon-webdav" ) );
|
||||
modelProperties.add( new ModelProperty( ProjectUri.Build.Extensions.Extension.version, "1.0-beta-2" ) );
|
||||
ModelContainer container = new TestModelContainer( modelProperties );
|
||||
|
||||
// Fire the event.
|
||||
listener.fire( Arrays.asList( container ) );
|
||||
|
||||
try
|
||||
{
|
||||
lookup( Wagon.class, "dav" );
|
||||
fail( "The lookup for the wagon dav extension should not be possible yet." );
|
||||
}
|
||||
catch( Exception e )
|
||||
{
|
||||
// We should get an exception.
|
||||
}
|
||||
|
||||
// Process the data we have collected.
|
||||
listener.processModelContainers( newMavenSession() );
|
||||
|
||||
// Now we should be able to find the extension.
|
||||
lookup( Wagon.class, "dav" );
|
||||
}
|
||||
|
||||
private MavenSession newMavenSession()
|
||||
throws CycleDetectedException, DuplicateProjectException
|
||||
{
|
||||
Model model = new Model();
|
||||
model.setGroupId( "group" );
|
||||
model.setArtifactId( "artifact" );
|
||||
model.setVersion( "1" );
|
||||
|
||||
MavenProject project = new MavenProject( model );
|
||||
ReactorManager rm = new ReactorManager( Collections.singletonList( project ), ReactorManager.FAIL_FAST );
|
||||
MavenExecutionRequest request = new DefaultMavenExecutionRequest();
|
||||
request.setLocalRepositoryPath( new File( "/Users/jvanzyl/.m2/repository" ) );
|
||||
MavenSession session = new MavenSession( getContainer(), request, new DefaultEventDispatcher(), rm );
|
||||
|
||||
return session;
|
||||
}
|
||||
|
||||
public class TestModelContainer
|
||||
implements ModelContainer
|
||||
{
|
||||
List<ModelProperty> modelProperties;
|
||||
|
||||
public TestModelContainer( List<ModelProperty> properties )
|
||||
{
|
||||
this.modelProperties = properties;
|
||||
}
|
||||
|
||||
public List<ModelProperty> getProperties()
|
||||
{
|
||||
return new ArrayList<ModelProperty>( modelProperties );
|
||||
}
|
||||
|
||||
public ModelContainerAction containerAction( ModelContainer modelContainer )
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
public ModelContainer createNewInstance( List<ModelProperty> modelProperties )
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue