jvanzyl 2004/04/04 10:20:14
Added: maven-project/src/main/java/org/apache/maven/artifact
WagonArtifactAdapter.java
maven-project/src/main/java/org/apache/maven/artifact/collector
ArtifactCollectionResult.java
ArtifactCollector.java
DefaultArtifactCollector.java
maven-project/src/main/java/org/apache/maven/artifact/factory
DefaultMavenArtifactFactory.java
MavenArtifactFactory.java
Log:
Revision Changes Path
1.1
maven-components/maven-project/src/main/java/org/apache/maven/artifact/WagonArtifactAdapter.java
Index: WagonArtifactAdapter.java
===================================================================
package org.apache.maven.artifact;
import org.apache.maven.wagon.artifact.Artifact;
/**
* @author <a href="mailto:[EMAIL PROTECTED]">Jason van Zyl</a>
* @version $Id: WagonArtifactAdapter.java,v 1.1 2004/04/04 17:20:14 jvanzyl Exp $
*/
public class WagonArtifactAdapter
implements Artifact
{
private MavenArtifact mavenArtifact;
public WagonArtifactAdapter( MavenArtifact mavenArtifact )
{
this.mavenArtifact = mavenArtifact;
}
public String getGroupId()
{
return mavenArtifact.getDependency().getGroupId();
}
public String getArtifactId()
{
return mavenArtifact.getDependency().getArtifactId();
}
public String getType()
{
return mavenArtifact.getDependency().getType();
}
public String getExtension()
{
return mavenArtifact.getDependency().getType();
}
public String getVersion()
{
return mavenArtifact.getDependency().getVersion();
}
}
1.1
maven-components/maven-project/src/main/java/org/apache/maven/artifact/collector/ArtifactCollectionResult.java
Index: ArtifactCollectionResult.java
===================================================================
package org.apache.maven.artifact.collector;
import java.util.Map;
import java.util.HashMap;
/**
* @author <a href="mailto:[EMAIL PROTECTED]">Jason van Zyl</a>
* @version $Id: ArtifactCollectionResult.java,v 1.1 2004/04/04 17:20:14 jvanzyl Exp
$
*/
public class ArtifactCollectionResult
{
private Map artifacts;
private Map conflicts;
private Map artifactsWithoutPoms;
public ArtifactCollectionResult()
{
artifacts = new HashMap();
conflicts = new HashMap();
artifactsWithoutPoms = new HashMap();
}
public Map getArtifacts()
{
return artifacts;
}
public Map getConflicts()
{
return conflicts;
}
public Map getArtifactsWithoutPoms()
{
return artifactsWithoutPoms;
}
}
1.1
maven-components/maven-project/src/main/java/org/apache/maven/artifact/collector/ArtifactCollector.java
Index: ArtifactCollector.java
===================================================================
package org.apache.maven.artifact.collector;
import java.util.Map;
import org.apache.maven.project.MavenProject;
public interface ArtifactCollector
{
String ROLE = ArtifactCollector.class.getName();
ArtifactCollectionResult getArtifacts( MavenProject project )
throws Exception;
}
1.1
maven-components/maven-project/src/main/java/org/apache/maven/artifact/collector/DefaultArtifactCollector.java
Index: DefaultArtifactCollector.java
===================================================================
package org.apache.maven.artifact.collector;
import org.apache.maven.artifact.MavenArtifact;
import org.apache.maven.artifact.WagonArtifactAdapter;
import org.apache.maven.artifact.factory.MavenArtifactFactory;
import org.apache.maven.project.MavenProject;
import org.apache.maven.project.MavenProjectBuilder;
import org.apache.maven.wagon.manager.WagonManager;
import org.codehaus.plexus.logging.AbstractLogEnabled;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class DefaultArtifactCollector
extends AbstractLogEnabled
implements ArtifactCollector
{
private MavenArtifactFactory artifactFactory;
private MavenProjectBuilder builder;
private WagonManager wagonManager;
public ArtifactCollectionResult getArtifacts( MavenProject project ) throws
Exception
{
ArtifactCollectionResult cr = new ArtifactCollectionResult();
resolveDependencies( project, cr );
return cr;
}
void resolveDependencies( MavenProject project, ArtifactCollectionResult cr )
throws Exception
{
if ( project == null )
{
return;
}
for ( Iterator i = project.getArtifacts().iterator(); i.hasNext(); )
{
MavenArtifact artifact = (MavenArtifact) i.next();
String key = artifact.getDependency().getId();
if ( cr.getArtifacts().containsKey( key ) )
{
MavenArtifact a = (MavenArtifact) cr.getArtifacts().get( key );
String newVersion = artifact.getDependency().getVersion();
String knownVersion = a.getDependency().getVersion();
if ( newVersion.equals( knownVersion ) )
{
continue;
}
else
{
// will check if this artifact is in the top level project
// if it is - version at the top level project wins
//if ( project.getDependency( key ) != null )
//{
// continue;
//}
List list;
if ( cr.getConflicts().containsKey( key ) )
{
list = (List) cr.getConflicts().get( key );
}
else
{
list = new ArrayList();
}
list.add( newVersion );
}
}
else
{
// Add the dependency itself
cr.getArtifacts().put( key, artifact );
}
// Now find the artifacts for each of the artifacts.
MavenProject p = findPom( artifact );
if ( p == null )
{
cr.getArtifactsWithoutPoms().put( artifact.getDependency().getId(),
artifact );
continue;
}
resolveDependencies( findPom( artifact ), cr );
}
}
MavenProject findPom( MavenArtifact artifact ) throws Exception
{
//!!! Need to create a POM artifact
MavenArtifact pomArtifact = artifactFactory.createArtifact(
artifact.getDependency() );
if ( !pomArtifact.exists() )
{
try
{
wagonManager.getWagon( "http" ).get( new WagonArtifactAdapter(
pomArtifact ), null );
}
catch ( Exception e )
{
return null;
}
}
MavenProject project = null;
if ( pomArtifact.exists() )
{
project = builder.build( pomArtifact.getFile() );
}
return project;
}
}
1.1
maven-components/maven-project/src/main/java/org/apache/maven/artifact/factory/DefaultMavenArtifactFactory.java
Index: DefaultMavenArtifactFactory.java
===================================================================
package org.apache.maven.artifact.factory;
/*
* Copyright 2001-2004 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import org.apache.maven.artifact.GenericMavenArtifact;
import org.apache.maven.artifact.MavenArtifact;
import org.apache.maven.model.Dependency;
import org.apache.maven.project.MavenProject;
import org.codehaus.plexus.util.StringUtils;
import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class DefaultMavenArtifactFactory
implements MavenArtifactFactory
{
public List createArtifacts( MavenProject project )
{
List projectArtifacts = new ArrayList();
String mavenRepoLocal = project.getProperty( "maven.repo.local" );
boolean mavenJarOverride = project.getBooleanProperty( "maven.jar.override"
);
for ( Iterator i = project.getDependencies().iterator(); i.hasNext(); )
{
Dependency d = (Dependency) i.next();
String mavenJarProperty = project.getProperty( "maven.jar." +
MavenProject.standardToLegacyId( d.getId() ) );
MavenArtifact artifact = createArtifact( d );
if ( mavenJarOverride && StringUtils.isNotEmpty(mavenJarProperty) )
{
// The jar override option has been set and we have a property
// for the this dependency so override the path with the user
// specified value.
if ( Character.isDigit( mavenJarProperty.charAt( 0 ) ) )
{
// User is requesting a specific version of a dependency
// be used.
d.setVersion( mavenJarProperty );
artifact.setPath( mavenRepoLocal + artifact.generatePath() );
}
else
{
// User is requesting a specific path to a dependency
// be used.
artifact.setPath( new File( mavenJarProperty ).getAbsolutePath()
);
}
}
else
{
artifact.setPath( mavenRepoLocal + artifact.generatePath() );
}
project.setDependencyPath( artifact.getDependency().getArtifactId(),
artifact.getPath() );
projectArtifacts.add( artifact );
}
return projectArtifacts;
}
public MavenArtifact createArtifact( Dependency dependency )
{
if ( dependency.getType() == null
|| dependency.getType().trim().length() == 0
|| dependency.getType().equals( "jar" )
|| dependency.getType().equals( "test" ) )
{
dependency.setType( "jar" );
return new GenericMavenArtifact( dependency );
}
else
{
return new GenericMavenArtifact( dependency );
}
}
}
1.1
maven-components/maven-project/src/main/java/org/apache/maven/artifact/factory/MavenArtifactFactory.java
Index: MavenArtifactFactory.java
===================================================================
package org.apache.maven.artifact.factory;
/*
* Copyright 2001-2004 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import org.apache.maven.project.MavenProject;
import org.apache.maven.artifact.MavenArtifact;
import org.apache.maven.model.Dependency;
import java.util.List;
public interface MavenArtifactFactory
{
static String ROLE = MavenArtifactFactory.class.getName();
List createArtifacts( MavenProject project );
MavenArtifact createArtifact( Dependency dependency );
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]