You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jd...@apache.org on 2007/10/13 02:11:18 UTC

svn commit: r584344 - in /maven/artifact/trunk: ./ src/main/java/org/apache/maven/artifact/ src/main/java/org/apache/maven/artifact/repository/ src/main/java/org/apache/maven/artifact/resolver/ src/main/resources/META-INF/plexus/

Author: jdcasey
Date: Fri Oct 12 17:11:15 2007
New Revision: 584344

URL: http://svn.apache.org/viewvc?rev=584344&view=rev
Log:
Improving error wrapping clarity, to make reporting easier. Also adding a method to ArtifactRepositoryFactory to allow lookups of ArtifactRepositoryLayout internally, and avoid the need to lookup these components outside the repo factory.

Added:
    maven/artifact/trunk/src/main/java/org/apache/maven/artifact/UnknownRepositoryLayoutException.java   (with props)
Modified:
    maven/artifact/trunk/pom.xml
    maven/artifact/trunk/src/main/java/org/apache/maven/artifact/InvalidRepositoryException.java
    maven/artifact/trunk/src/main/java/org/apache/maven/artifact/repository/ArtifactRepositoryFactory.java
    maven/artifact/trunk/src/main/java/org/apache/maven/artifact/repository/DefaultArtifactRepositoryFactory.java
    maven/artifact/trunk/src/main/java/org/apache/maven/artifact/resolver/ArtifactNotFoundException.java
    maven/artifact/trunk/src/main/java/org/apache/maven/artifact/resolver/ArtifactResolutionException.java
    maven/artifact/trunk/src/main/resources/META-INF/plexus/components.xml

Modified: maven/artifact/trunk/pom.xml
URL: http://svn.apache.org/viewvc/maven/artifact/trunk/pom.xml?rev=584344&r1=584343&r2=584344&view=diff
==============================================================================
--- maven/artifact/trunk/pom.xml (original)
+++ maven/artifact/trunk/pom.xml Fri Oct 12 17:11:15 2007
@@ -45,7 +45,12 @@
     <dependency>
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-container-default</artifactId>
-      <version>1.0-alpha-30</version>
+      <version>1.0-alpha-33-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-active-collections</artifactId>
+      <version>1.0-beta-1</version>
     </dependency>
     <dependency>
       <groupId>org.apache.maven.wagon</groupId>

Modified: maven/artifact/trunk/src/main/java/org/apache/maven/artifact/InvalidRepositoryException.java
URL: http://svn.apache.org/viewvc/maven/artifact/trunk/src/main/java/org/apache/maven/artifact/InvalidRepositoryException.java?rev=584344&r1=584343&r2=584344&view=diff
==============================================================================
--- maven/artifact/trunk/src/main/java/org/apache/maven/artifact/InvalidRepositoryException.java (original)
+++ maven/artifact/trunk/src/main/java/org/apache/maven/artifact/InvalidRepositoryException.java Fri Oct 12 17:11:15 2007
@@ -28,8 +28,16 @@
 public class InvalidRepositoryException
     extends Exception
 {
-    public InvalidRepositoryException( String message, Throwable throwable )
+    private final String repositoryId;
+
+    public InvalidRepositoryException( String message, String repositoryId, Throwable throwable )
     {
         super( message, throwable );
+        this.repositoryId = repositoryId;
+    }
+
+    public String getRepositoryId()
+    {
+        return repositoryId;
     }
 }

Added: maven/artifact/trunk/src/main/java/org/apache/maven/artifact/UnknownRepositoryLayoutException.java
URL: http://svn.apache.org/viewvc/maven/artifact/trunk/src/main/java/org/apache/maven/artifact/UnknownRepositoryLayoutException.java?rev=584344&view=auto
==============================================================================
--- maven/artifact/trunk/src/main/java/org/apache/maven/artifact/UnknownRepositoryLayoutException.java (added)
+++ maven/artifact/trunk/src/main/java/org/apache/maven/artifact/UnknownRepositoryLayoutException.java Fri Oct 12 17:11:15 2007
@@ -0,0 +1,33 @@
+package org.apache.maven.artifact;
+
+import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
+import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
+
+/**
+ * Exception which is meant to occur when a layout specified for a particular
+ * repository doesn't have a corresponding {@link ArtifactRepositoryLayout}
+ * component in the current container.
+ *
+ * @author jdcasey
+ *
+ */
+public class UnknownRepositoryLayoutException
+    extends InvalidRepositoryException
+{
+
+    private final String layoutId;
+
+    public UnknownRepositoryLayoutException( String repositoryId,
+                                             String layoutId,
+                                             ComponentLookupException e )
+    {
+        super( "Cannot find ArtifactRepositoryLayout instance for: " + layoutId, repositoryId, e );
+        this.layoutId = layoutId;
+    }
+
+    public String getLayoutId()
+    {
+        return layoutId;
+    }
+
+}

Propchange: maven/artifact/trunk/src/main/java/org/apache/maven/artifact/UnknownRepositoryLayoutException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/artifact/trunk/src/main/java/org/apache/maven/artifact/UnknownRepositoryLayoutException.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Modified: maven/artifact/trunk/src/main/java/org/apache/maven/artifact/repository/ArtifactRepositoryFactory.java
URL: http://svn.apache.org/viewvc/maven/artifact/trunk/src/main/java/org/apache/maven/artifact/repository/ArtifactRepositoryFactory.java?rev=584344&r1=584343&r2=584344&view=diff
==============================================================================
--- maven/artifact/trunk/src/main/java/org/apache/maven/artifact/repository/ArtifactRepositoryFactory.java (original)
+++ maven/artifact/trunk/src/main/java/org/apache/maven/artifact/repository/ArtifactRepositoryFactory.java Fri Oct 12 17:11:15 2007
@@ -19,6 +19,7 @@
  * under the License.
  */
 
+import org.apache.maven.artifact.UnknownRepositoryLayoutException;
 import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
 
 /**
@@ -28,10 +29,27 @@
 {
     String ROLE = ArtifactRepositoryFactory.class.getName();
 
-    ArtifactRepository createDeploymentArtifactRepository( String id, String url, ArtifactRepositoryLayout layout,
+    ArtifactRepository createDeploymentArtifactRepository( String id,
+                                                           String url,
+                                                           String layoutId,
+                                                           boolean uniqueVersion )
+        throws UnknownRepositoryLayoutException;
+
+    ArtifactRepository createDeploymentArtifactRepository( String id,
+                                                           String url,
+                                                           ArtifactRepositoryLayout layout,
                                                            boolean uniqueVersion );
 
-    ArtifactRepository createArtifactRepository( String id, String url, ArtifactRepositoryLayout repositoryLayout,
+    ArtifactRepository createArtifactRepository( String id,
+                                                 String url,
+                                                 String layoutId,
+                                                 ArtifactRepositoryPolicy snapshots,
+                                                 ArtifactRepositoryPolicy releases )
+        throws UnknownRepositoryLayoutException;
+
+    ArtifactRepository createArtifactRepository( String id,
+                                                 String url,
+                                                 ArtifactRepositoryLayout repositoryLayout,
                                                  ArtifactRepositoryPolicy snapshots,
                                                  ArtifactRepositoryPolicy releases );
 

Modified: maven/artifact/trunk/src/main/java/org/apache/maven/artifact/repository/DefaultArtifactRepositoryFactory.java
URL: http://svn.apache.org/viewvc/maven/artifact/trunk/src/main/java/org/apache/maven/artifact/repository/DefaultArtifactRepositoryFactory.java?rev=584344&r1=584343&r2=584344&view=diff
==============================================================================
--- maven/artifact/trunk/src/main/java/org/apache/maven/artifact/repository/DefaultArtifactRepositoryFactory.java (original)
+++ maven/artifact/trunk/src/main/java/org/apache/maven/artifact/repository/DefaultArtifactRepositoryFactory.java Fri Oct 12 17:11:15 2007
@@ -19,7 +19,10 @@
  * under the License.
  */
 
+import org.apache.maven.artifact.UnknownRepositoryLayoutException;
 import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
+import org.codehaus.plexus.collections.ActiveMap;
+import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -35,8 +38,29 @@
 
     private String globalChecksumPolicy;
 
+    // FIXME: This is a non-ThreadLocal cache!!
     private final Map artifactRepositories = new HashMap();
 
+    private ActiveMap repositoryLayouts;
+
+    public ArtifactRepository createDeploymentArtifactRepository( String id, String url,
+                                                        String layoutId,
+                                                        boolean uniqueVersion )
+        throws UnknownRepositoryLayoutException
+    {
+        ArtifactRepositoryLayout layout;
+        try
+        {
+            layout = (ArtifactRepositoryLayout) repositoryLayouts.checkedGet( layoutId );
+        }
+        catch ( ComponentLookupException e )
+        {
+            throw new UnknownRepositoryLayoutException( id, layoutId, e );
+        }
+
+        return createDeploymentArtifactRepository( id, url, layout, uniqueVersion );
+    }
+
     public ArtifactRepository createDeploymentArtifactRepository( String id, String url,
                                                                   ArtifactRepositoryLayout repositoryLayout,
                                                                   boolean uniqueVersion )
@@ -45,6 +69,25 @@
     }
 
     public ArtifactRepository createArtifactRepository( String id, String url,
+                                                        String layoutId,
+                                                        ArtifactRepositoryPolicy snapshots,
+                                                        ArtifactRepositoryPolicy releases )
+        throws UnknownRepositoryLayoutException
+    {
+        ArtifactRepositoryLayout layout;
+        try
+        {
+            layout = (ArtifactRepositoryLayout) repositoryLayouts.checkedGet( layoutId );
+        }
+        catch ( ComponentLookupException e )
+        {
+            throw new UnknownRepositoryLayoutException( id, layoutId, e );
+        }
+
+        return createArtifactRepository( id, url, layout, snapshots, releases );
+    }
+
+    public ArtifactRepository createArtifactRepository( String id, String url,
                                                         ArtifactRepositoryLayout repositoryLayout,
                                                         ArtifactRepositoryPolicy snapshots,
                                                         ArtifactRepositoryPolicy releases )
@@ -93,11 +136,11 @@
 
     public void setGlobalUpdatePolicy( String updatePolicy )
     {
-        this.globalUpdatePolicy = updatePolicy;
+        globalUpdatePolicy = updatePolicy;
     }
 
     public void setGlobalChecksumPolicy( String checksumPolicy )
     {
-        this.globalChecksumPolicy = checksumPolicy;
+        globalChecksumPolicy = checksumPolicy;
     }
 }

Modified: maven/artifact/trunk/src/main/java/org/apache/maven/artifact/resolver/ArtifactNotFoundException.java
URL: http://svn.apache.org/viewvc/maven/artifact/trunk/src/main/java/org/apache/maven/artifact/resolver/ArtifactNotFoundException.java?rev=584344&r1=584343&r2=584344&view=diff
==============================================================================
--- maven/artifact/trunk/src/main/java/org/apache/maven/artifact/resolver/ArtifactNotFoundException.java (original)
+++ maven/artifact/trunk/src/main/java/org/apache/maven/artifact/resolver/ArtifactNotFoundException.java Fri Oct 12 17:11:15 2007
@@ -20,6 +20,7 @@
  */
 
 import org.apache.maven.artifact.Artifact;
+import org.apache.maven.wagon.ResourceDoesNotExistException;
 
 import java.util.List;
 
@@ -31,29 +32,29 @@
     extends AbstractArtifactResolutionException
 {
     private String downloadUrl;
-    
+
     protected ArtifactNotFoundException( String message, Artifact artifact, List remoteRepositories )
     {
         super( message, artifact, remoteRepositories );
     }
-    
+
     public ArtifactNotFoundException( String message, Artifact artifact )
     {
         this( message, artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion(), artifact.getType(),
               artifact.getClassifier(), null, artifact.getDownloadUrl(), artifact.getDependencyTrail() );
     }
 
-    protected ArtifactNotFoundException( String message, Artifact artifact, List remoteRepositories, Throwable t )
+    protected ArtifactNotFoundException( String message, Artifact artifact, List remoteRepositories, ResourceDoesNotExistException cause )
     {
         this( message, artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion(), artifact.getType(), artifact.getClassifier(),
-              remoteRepositories, artifact.getDownloadUrl(), artifact.getDependencyTrail(), t );
+              remoteRepositories, artifact.getDownloadUrl(), artifact.getDependencyTrail(), cause );
     }
 
     public ArtifactNotFoundException( String message, String groupId, String artifactId, String version, String type, String classifier,
-                                      List remoteRepositories, String downloadUrl, List path, Throwable t )
+                                      List remoteRepositories, String downloadUrl, List path, ResourceDoesNotExistException cause )
     {
         super( constructMissingArtifactMessage( message, "", groupId, artifactId, version, type, classifier,downloadUrl, path ), groupId, artifactId,
-               version, type, classifier, remoteRepositories, null, t );
+               version, type, classifier, remoteRepositories, null, cause );
 
         this.downloadUrl = downloadUrl;
     }

Modified: maven/artifact/trunk/src/main/java/org/apache/maven/artifact/resolver/ArtifactResolutionException.java
URL: http://svn.apache.org/viewvc/maven/artifact/trunk/src/main/java/org/apache/maven/artifact/resolver/ArtifactResolutionException.java?rev=584344&r1=584343&r2=584344&view=diff
==============================================================================
--- maven/artifact/trunk/src/main/java/org/apache/maven/artifact/resolver/ArtifactResolutionException.java (original)
+++ maven/artifact/trunk/src/main/java/org/apache/maven/artifact/resolver/ArtifactResolutionException.java Fri Oct 12 17:11:15 2007
@@ -20,7 +20,11 @@
  */
 
 import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.metadata.ArtifactMetadataRetrievalException;
+import org.apache.maven.artifact.repository.metadata.RepositoryMetadataResolutionException;
+import org.apache.maven.wagon.TransferFailedException;
 
+import java.io.IOException;
 import java.util.List;
 
 /**
@@ -52,13 +56,30 @@
         super( message, artifact, remoteRepositories );
     }
 
-    public ArtifactResolutionException( String message, Artifact artifact, Throwable t )
+    public ArtifactResolutionException( String message, Artifact artifact, ArtifactMetadataRetrievalException cause )
     {
-        super( message, artifact, null, t );
+        super( message, artifact, null, cause );
     }
 
-    protected ArtifactResolutionException( String message, Artifact artifact, List remoteRepositories, Throwable t )
+    protected ArtifactResolutionException( String message, Artifact artifact, List remoteRepositories, ArtifactMetadataRetrievalException cause )
     {
-        super( message, artifact, remoteRepositories, t );
+        super( message, artifact, remoteRepositories, cause );
+    }
+
+    protected ArtifactResolutionException( String message, Artifact artifact, List remoteRepositories, TransferFailedException cause )
+    {
+        super( message, artifact, remoteRepositories, cause );
+    }
+
+    protected ArtifactResolutionException( String message, Artifact artifact, List remoteRepositories, IOException cause )
+    {
+        super( message, artifact, remoteRepositories, cause );
+    }
+
+    public ArtifactResolutionException( String message,
+                                        Artifact artifact,
+                                        RepositoryMetadataResolutionException cause )
+    {
+        super( message, artifact, null, cause );
     }
 }

Modified: maven/artifact/trunk/src/main/resources/META-INF/plexus/components.xml
URL: http://svn.apache.org/viewvc/maven/artifact/trunk/src/main/resources/META-INF/plexus/components.xml?rev=584344&r1=584343&r2=584344&view=diff
==============================================================================
--- maven/artifact/trunk/src/main/resources/META-INF/plexus/components.xml (original)
+++ maven/artifact/trunk/src/main/resources/META-INF/plexus/components.xml Fri Oct 12 17:11:15 2007
@@ -30,6 +30,15 @@
       <role-hint>legacy</role-hint>
       <implementation>org.apache.maven.artifact.repository.layout.LegacyRepositoryLayout</implementation>
     </component>
+    
+    <component>
+      <role>org.codehaus.plexus.collections.ActiveMap</role>
+      <role-hint>repositoryLayouts</role-hint>
+      <implementation>org.codehaus.plexus.collections.DefaultActiveMap</implementation>
+      <configuration>
+        <role>org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout</role>
+      </configuration>
+    </component>
 
     <!--
      |
@@ -433,6 +442,13 @@
     <component>
       <role>org.apache.maven.artifact.repository.ArtifactRepositoryFactory</role>
       <implementation>org.apache.maven.artifact.repository.DefaultArtifactRepositoryFactory</implementation>
+      <requirements>
+        <requirement>
+          <role>org.codehaus.plexus.collections.ActiveMap</role>
+          <role-hint>repositoryLayouts</role-hint>
+          <field-name>repositoryLayouts</field-name>
+        </requirement>
+      </requirements>
     </component>    
     
     <!--