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]

Reply via email to