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:
Jason van Zyl 2008-11-25 16:13:29 +00:00
parent 42f59de75d
commit 38029c20e2
4 changed files with 144 additions and 0 deletions

View File

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

View File

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

View File

@ -0,0 +1,8 @@
package org.apache.maven.listeners;
import org.apache.maven.execution.MavenSession;
public interface MavenModelEventProcessor
{
void processModelContainers( MavenSession session );
}

View File

@ -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;
}
}
}