You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by si...@apache.org on 2008/09/30 06:13:09 UTC

svn commit: r700331 - in /maven/components/trunk/maven-project/src/main/java/org/apache/maven/project: DefaultMavenProjectBuilder.java DefaultRepositoryHelper.java RepositoryHelper.java

Author: sisbell
Date: Mon Sep 29 21:13:08 2008
New Revision: 700331

URL: http://svn.apache.org/viewvc?rev=700331&view=rev
Log:
Small perf tweak.

Modified:
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultRepositoryHelper.java
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/RepositoryHelper.java

Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java?rev=700331&r1=700330&r2=700331&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java Mon Sep 29 21:13:08 2008
@@ -166,7 +166,8 @@
             return project;
         }        
         
-        File f = artifact.getFile();
+        File f = (artifact.getFile() != null) ? artifact.getFile() :
+                new File( localRepository.getBasedir(), localRepository.pathOf( artifact ) );;
         repositoryHelper.findModelFromRepository( artifact, remoteArtifactRepositories, localRepository );
 
         ProjectBuilderConfiguration config = new DefaultProjectBuilderConfiguration().setLocalRepository( localRepository );

Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultRepositoryHelper.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultRepositoryHelper.java?rev=700331&r1=700330&r2=700331&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultRepositoryHelper.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultRepositoryHelper.java Mon Sep 29 21:13:08 2008
@@ -74,18 +74,23 @@
 
     private MavenXpp3Reader modelReader;
 
-    private static HashMap<String, Model> cache = new HashMap<String, Model>();
+    private static HashMap<String, Artifact> cache = new HashMap<String, Artifact>();
 
     private Logger getLogger()
     {
         return logger;
     }
 
-    public Model findModelFromRepository( Artifact artifact, List remoteArtifactRepositories,
+    public void findModelFromRepository( Artifact artifact, List remoteArtifactRepositories,
                                           ArtifactRepository localRepository )
         throws ProjectBuildingException
     {
 
+        if(cache.containsKey(artifact.getId()))
+        {
+            artifact.setFile(cache.get(artifact.getId()).getFile());
+        }
+
         String projectId = safeVersionlessKey( artifact.getGroupId(), artifact.getArtifactId() );
         remoteArtifactRepositories = normalizeToArtifactRepositories( remoteArtifactRepositories, projectId );
 
@@ -106,48 +111,13 @@
                                                                      artifact.getVersion(), artifact.getScope() );
         }
 
-        Model legacy_model;
         try
         {
             artifactResolver.resolve( projectArtifact, remoteArtifactRepositories, localRepository );
 
             File file = projectArtifact.getFile();
             artifact.setFile( file );
-            if(cache.containsKey(projectId))
-            {
-                legacy_model = cache.get(projectId);
-            }
-            else
-            {
-                legacy_model = readModelLegacy( projectId, file, false );
-                cache.put(projectId, legacy_model);
-            }
-
-            String downloadUrl = null;
-
-            ArtifactStatus status = ArtifactStatus.NONE;
-
-            DistributionManagement distributionManagement = legacy_model.getDistributionManagement();
-
-            if ( distributionManagement != null )
-            {
-                downloadUrl = distributionManagement.getDownloadUrl();
-
-                status = ArtifactStatus.valueOf( distributionManagement.getStatus() );
-            }
-
-            checkStatusAndUpdate( projectArtifact, status, file, remoteArtifactRepositories, localRepository );
-
-            // TODO: this is gross. Would like to give it the whole model, but maven-artifact shouldn't depend on that
-            // Can a maven-core implementation of the Artifact interface store it, and be used in the exceptions?
-            if ( downloadUrl != null )
-            {
-                projectArtifact.setDownloadUrl( downloadUrl );
-            }
-            else
-            {
-                projectArtifact.setDownloadUrl( legacy_model.getUrl() );
-            }
+            cache.put(artifact.getId(), artifact);
         }
         catch ( ArtifactResolutionException e )
         {
@@ -160,8 +130,6 @@
                                                 "POM '" + projectId + "' not found in repository: " + e.getMessage(),
                                                 e );
         }
-
-        return legacy_model;
     }
 
     public List buildArtifactRepositories( Model model )
@@ -277,56 +245,6 @@
         return ArtifactUtils.versionlessKey( gid, aid );
     }
 
-    private void checkModelVersion( String modelSource, String projectId, File file )
-        throws InvalidProjectModelException
-    {
-        if ( modelSource.indexOf( "<modelVersion>4.0.0" ) < 0 )
-        {
-            throw new InvalidProjectModelException( projectId, "Not a v" + MAVEN_MODEL_VERSION + " POM.", file );
-        }
-    }
-
-    private Model readModelLegacy( String projectId, File file, boolean strict )
-        throws ProjectBuildingException
-    {
-        Reader reader = null;
-        try
-        {
-            reader = ReaderFactory.newXmlReader( file );
-
-            String modelSource = IOUtil.toString( reader );
-
-            checkModelVersion( modelSource, projectId, file );
-
-            StringReader sReader = new StringReader( modelSource );
-
-            try
-            {
-                return new MavenXpp3Reader().read( sReader, strict );
-            }
-            catch ( XmlPullParserException e )
-            {
-                throw new InvalidProjectModelException( projectId, "Parse error reading POM. Reason: " + e.getMessage(),
-                                                        file, e );
-            }
-        }
-        catch ( FileNotFoundException e )
-        {
-            throw new ProjectBuildingException( projectId,
-                                                "Could not find the model file '" + file.getAbsolutePath() + "'.", file,
-                                                e );
-        }
-        catch ( IOException e )
-        {
-            throw new ProjectBuildingException( projectId, "Failed to build model from file '" +
-                file.getAbsolutePath() + "'.\nError: \'" + e.getLocalizedMessage() + "\'", file, e );
-        }
-        finally
-        {
-            IOUtil.close( reader );
-        }
-    }
-
     private void collectInitialRepositoriesFromModel( LinkedHashSet collected, Model model, File pomFile,
                                                       boolean validProfilesXmlLocation,
                                                       ProfileActivationContext profileActivationContext )
@@ -359,43 +277,6 @@
         }
     }
 
-    private void checkStatusAndUpdate( Artifact projectArtifact, ArtifactStatus status, File file,
-                                       List remoteArtifactRepositories, ArtifactRepository localRepository )
-        throws ArtifactNotFoundException
-    {
-        // TODO: configurable actions dependant on status
-        if ( !projectArtifact.isSnapshot() && ( status.compareTo( ArtifactStatus.DEPLOYED ) < 0 ) )
-        {
-            // use default policy (enabled, daily update, warn on bad checksum)
-            ArtifactRepositoryPolicy policy = new ArtifactRepositoryPolicy();
-            // TODO: re-enable [MNG-798/865]
-            policy.setUpdatePolicy( ArtifactRepositoryPolicy.UPDATE_POLICY_NEVER );
-
-            if ( policy.checkOutOfDate( new Date( file.lastModified() ) ) )
-            {
-                getLogger().info(
-                    projectArtifact.getArtifactId() + ": updating metadata due to status of '" + status + "'" );
-                try
-                {
-                    projectArtifact.setResolved( false );
-                    artifactResolver.resolveAlways( projectArtifact, remoteArtifactRepositories, localRepository );
-                }
-                catch ( ArtifactResolutionException e )
-                {
-                    getLogger().warn( "Error updating POM - using existing version" );
-                    getLogger().debug( "Cause", e );
-                }
-                catch ( ArtifactNotFoundException e )
-                {
-                    getLogger().warn( "Error updating POM - not found. Removing local copy." );
-                    getLogger().debug( "Cause", e );
-                    file.delete();
-                    throw e;
-                }
-            }
-        }
-    }
-
 
     public void initialize()
         throws InitializationException

Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/RepositoryHelper.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/RepositoryHelper.java?rev=700331&r1=700330&r2=700331&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/RepositoryHelper.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/RepositoryHelper.java Mon Sep 29 21:13:08 2008
@@ -18,7 +18,7 @@
 
     String ROLE = RepositoryHelper.class.getName();
 
-    Model findModelFromRepository( Artifact artifact, List remoteArtifactRepositories,
+    void findModelFromRepository( Artifact artifact, List remoteArtifactRepositories,
                                    ArtifactRepository localRepository )
         throws ProjectBuildingException;