Author: epunzalan
Date: Mon Jun 12 23:53:38 2006
New Revision: 413818

URL: http://svn.apache.org/viewvc?rev=413818&view=rev
Log:
Added reason parameter in kickedOutPaths.  Also, added an interface with the 
kickedOutPaths which two other interfaces extends

Added:
    
maven/repository-manager/trunk/maven-repository-discovery/src/main/java/org/apache/maven/repository/discovery/Discoverer.java
   (with props)
    
maven/repository-manager/trunk/maven-repository-discovery/src/main/java/org/apache/maven/repository/discovery/DiscovererException.java
   (with props)
Modified:
    
maven/repository-manager/trunk/maven-repository-discovery/src/main/java/org/apache/maven/repository/discovery/AbstractArtifactDiscoverer.java
    
maven/repository-manager/trunk/maven-repository-discovery/src/main/java/org/apache/maven/repository/discovery/AbstractDiscoverer.java
    
maven/repository-manager/trunk/maven-repository-discovery/src/main/java/org/apache/maven/repository/discovery/ArtifactDiscoverer.java
    
maven/repository-manager/trunk/maven-repository-discovery/src/main/java/org/apache/maven/repository/discovery/DefaultArtifactDiscoverer.java
    
maven/repository-manager/trunk/maven-repository-discovery/src/main/java/org/apache/maven/repository/discovery/DefaultMetadataDiscoverer.java
    
maven/repository-manager/trunk/maven-repository-discovery/src/main/java/org/apache/maven/repository/discovery/LegacyArtifactDiscoverer.java
    
maven/repository-manager/trunk/maven-repository-discovery/src/main/java/org/apache/maven/repository/discovery/MetadataDiscoverer.java
    
maven/repository-manager/trunk/maven-repository-discovery/src/test/java/org/apache/maven/repository/discovery/DefaultArtifactDiscovererTest.java
    
maven/repository-manager/trunk/maven-repository-discovery/src/test/java/org/apache/maven/repository/discovery/LegacyArtifactDiscovererTest.java
    
maven/repository-manager/trunk/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/DefaultProxyManager.java

Modified: 
maven/repository-manager/trunk/maven-repository-discovery/src/main/java/org/apache/maven/repository/discovery/AbstractArtifactDiscoverer.java
URL: 
http://svn.apache.org/viewvc/maven/repository-manager/trunk/maven-repository-discovery/src/main/java/org/apache/maven/repository/discovery/AbstractArtifactDiscoverer.java?rev=413818&r1=413817&r2=413818&view=diff
==============================================================================
--- 
maven/repository-manager/trunk/maven-repository-discovery/src/main/java/org/apache/maven/repository/discovery/AbstractArtifactDiscoverer.java
 (original)
+++ 
maven/repository-manager/trunk/maven-repository-discovery/src/main/java/org/apache/maven/repository/discovery/AbstractArtifactDiscoverer.java
 Mon Jun 12 23:53:38 2006
@@ -73,17 +73,19 @@
         {
             String path = artifactPaths[i];
 
-            Artifact artifact = buildArtifactFromPath( path, repository );
-            if ( artifact != null )
+            Artifact artifact = null;
+            try
             {
+                artifact = buildArtifactFromPath( path, repository );
+
                 if ( includeSnapshots || !artifact.isSnapshot() )
                 {
                     artifacts.add( artifact );
                 }
             }
-            else
+            catch ( DiscovererException e )
             {
-                addKickedOutPath( path );
+                addKickedOutPath( path, e.getMessage() );
             }
         }
 
@@ -103,14 +105,16 @@
         {
             String path = artifactPaths[i];
 
+            String filename = repositoryBase.getAbsolutePath() + "/" + path;
+
             if ( path.toLowerCase().endsWith( POM ) )
             {
-                Artifact pomArtifact = buildArtifactFromPath( path, repository 
);
-
-                MavenXpp3Reader mavenReader = new MavenXpp3Reader();
-                String filename = repositoryBase.getAbsolutePath() + "/" + 
path;
                 try
                 {
+                    Artifact pomArtifact = buildArtifactFromPath( path, 
repository );
+
+                    MavenXpp3Reader mavenReader = new MavenXpp3Reader();
+
                     Model model = mavenReader.read( new FileReader( filename ) 
);
                     if ( pomArtifact != null && "pom".equals( 
model.getPackaging() ) )
                     {
@@ -134,6 +138,10 @@
                     getLogger().error(
                         "Parse error reading file during POM discovery: " + 
filename + ": " + e.getMessage() );
                 }
+                catch ( DiscovererException e )
+                {
+                    getLogger().error( e.getMessage() );
+                }
             }
         }
 
@@ -141,6 +149,7 @@
     }
 
     public Artifact buildArtifactFromPath( String path, ArtifactRepository 
repository )
+        throws DiscovererException
     {
         Artifact artifact = buildArtifact( path );
 

Modified: 
maven/repository-manager/trunk/maven-repository-discovery/src/main/java/org/apache/maven/repository/discovery/AbstractDiscoverer.java
URL: 
http://svn.apache.org/viewvc/maven/repository-manager/trunk/maven-repository-discovery/src/main/java/org/apache/maven/repository/discovery/AbstractDiscoverer.java?rev=413818&r1=413817&r2=413818&view=diff
==============================================================================
--- 
maven/repository-manager/trunk/maven-repository-discovery/src/main/java/org/apache/maven/repository/discovery/AbstractDiscoverer.java
 (original)
+++ 
maven/repository-manager/trunk/maven-repository-discovery/src/main/java/org/apache/maven/repository/discovery/AbstractDiscoverer.java
 Mon Jun 12 23:53:38 2006
@@ -26,6 +26,8 @@
 import java.util.Arrays;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
+import java.util.HashMap;
 
 /**
  * Base class for the artifact and metadata discoverers.
@@ -34,8 +36,9 @@
  */
 public abstract class AbstractDiscoverer
     extends AbstractLogEnabled
+    implements Discoverer
 {
-    private List kickedOutPaths = new ArrayList();
+    private Map kickedOutPaths = new HashMap();
 
     /**
      * @plexus.requirement
@@ -50,16 +53,16 @@
      * Add a path to the list of files that were kicked out due to being 
invalid.
      *
      * @param path the path to add
-     * @todo add a reason
+     * @param reason the reason why the path is being kicked out
      */
-    protected void addKickedOutPath( String path )
+    protected void addKickedOutPath( String path, String reason )
     {
-        kickedOutPaths.add( path );
+        kickedOutPaths.put( path, reason );
     }
 
     public Iterator getKickedOutPathsIterator()
     {
-        return kickedOutPaths.iterator();
+        return kickedOutPaths.keySet().iterator();
     }
 
     /**

Modified: 
maven/repository-manager/trunk/maven-repository-discovery/src/main/java/org/apache/maven/repository/discovery/ArtifactDiscoverer.java
URL: 
http://svn.apache.org/viewvc/maven/repository-manager/trunk/maven-repository-discovery/src/main/java/org/apache/maven/repository/discovery/ArtifactDiscoverer.java?rev=413818&r1=413817&r2=413818&view=diff
==============================================================================
--- 
maven/repository-manager/trunk/maven-repository-discovery/src/main/java/org/apache/maven/repository/discovery/ArtifactDiscoverer.java
 (original)
+++ 
maven/repository-manager/trunk/maven-repository-discovery/src/main/java/org/apache/maven/repository/discovery/ArtifactDiscoverer.java
 Mon Jun 12 23:53:38 2006
@@ -19,7 +19,6 @@
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.repository.ArtifactRepository;
 
-import java.util.Iterator;
 import java.util.List;
 
 /**
@@ -29,6 +28,7 @@
  * @author Brett Porter
  */
 public interface ArtifactDiscoverer
+    extends Discoverer
 {
     String ROLE = ArtifactDiscoverer.class.getName();
 
@@ -59,25 +59,12 @@
     List discoverStandalonePoms( ArtifactRepository repository, String 
blacklistedPatterns, boolean includeSnapshots );
 
     /**
-     * Get the list of paths kicked out during the discovery process.
-     *
-     * @return the paths as Strings.
-     */
-    Iterator getKickedOutPathsIterator();
-
-    /**
-     * Get the list of paths excluded during the discovery process.
-     *
-     * @return the paths as Strings.
-     */
-    Iterator getExcludedPathsIterator();
-
-    /**
      * Build an artifact from a path in the repository
      *
      * @param path the path
      * @return the artifact
      * @todo this should be in maven-artifact
      */
-    Artifact buildArtifact( String path );
+    Artifact buildArtifact( String path )
+        throws DiscovererException;
 }

Modified: 
maven/repository-manager/trunk/maven-repository-discovery/src/main/java/org/apache/maven/repository/discovery/DefaultArtifactDiscoverer.java
URL: 
http://svn.apache.org/viewvc/maven/repository-manager/trunk/maven-repository-discovery/src/main/java/org/apache/maven/repository/discovery/DefaultArtifactDiscoverer.java?rev=413818&r1=413817&r2=413818&view=diff
==============================================================================
--- 
maven/repository-manager/trunk/maven-repository-discovery/src/main/java/org/apache/maven/repository/discovery/DefaultArtifactDiscoverer.java
 (original)
+++ 
maven/repository-manager/trunk/maven-repository-discovery/src/main/java/org/apache/maven/repository/discovery/DefaultArtifactDiscoverer.java
 Mon Jun 12 23:53:38 2006
@@ -35,6 +35,7 @@
     extends AbstractArtifactDiscoverer
 {
     public Artifact buildArtifact( String path )
+        throws DiscovererException
     {
         List pathParts = new ArrayList();
         StringTokenizer st = new StringTokenizer( path, "/\\" );
@@ -64,11 +65,7 @@
             String groupId = StringUtils.join( pathParts.iterator(), "." );
 
             String remainingFilename = filename;
-            if ( !remainingFilename.startsWith( artifactId + "-" ) )
-            {
-                return null;
-            }
-            else
+            if ( remainingFilename.startsWith( artifactId + "-" ) )
             {
                 remainingFilename = remainingFilename.substring( 
artifactId.length() + 1 );
 
@@ -97,87 +94,92 @@
                 else
                 {
                     int index = remainingFilename.lastIndexOf( "." );
-                    if ( index < 0 )
+                    if ( index >= 0 )
                     {
-                        return null;
+                        type = remainingFilename.substring( index + 1 );
+                        remainingFilename = remainingFilename.substring( 0, 
index );
                     }
                     else
                     {
-                        type = remainingFilename.substring( index + 1 );
-                        remainingFilename = remainingFilename.substring( 0, 
index );
+                        throw new DiscovererException( "Path filename does not 
have an extension" );
                     }
                 }
 
-                if ( type != null )
+                Artifact result;
+                if ( classifier == null )
                 {
-                    Artifact result;
+                    result = artifactFactory.createArtifact( groupId, 
artifactId, version, Artifact.SCOPE_RUNTIME,
+                                                             type );
+                }
+                else
+                {
+                    result = artifactFactory.createArtifactWithClassifier( 
groupId, artifactId, version, type,
+                                                                           
classifier );
+                }
 
-                    if ( classifier == null )
-                    {
-                        result = artifactFactory.createArtifact( groupId, 
artifactId, version, Artifact.SCOPE_RUNTIME,
-                                                                 type );
+                if ( result.isSnapshot() )
+                {
+                    // version is *-SNAPSHOT, filename is *-yyyyMMdd.hhmmss-b
+                    int classifierIndex = remainingFilename.indexOf( '-', 
version.length() + 8 );
+                    if ( classifierIndex >= 0 )
+                    {
+                        classifier = remainingFilename.substring( 
classifierIndex + 1 );
+                        remainingFilename = remainingFilename.substring( 0, 
classifierIndex );
+                        result = artifactFactory.createArtifactWithClassifier( 
groupId, artifactId,
+                                                                               
remainingFilename, type,
+                                                                               
classifier );
                     }
                     else
                     {
-                        result = artifactFactory.createArtifactWithClassifier( 
groupId, artifactId, version, type,
-                                                                               
classifier );
+                        result = artifactFactory.createArtifact( groupId, 
artifactId, remainingFilename,
+                                                                 
Artifact.SCOPE_RUNTIME, type );
                     }
 
-                    if ( result.isSnapshot() )
+                    // poor encapsulation requires we do this to populate base 
version
+                    if ( !result.isSnapshot() )
+                    {
+                        throw new DiscovererException( "Failed to create a 
snapshot artifact" );
+                    }
+                    else if ( !result.getBaseVersion().equals( version ) )
                     {
-                        // version is *-SNAPSHOT, filename is 
*-yyyyMMdd.hhmmss-b
-                        int classifierIndex = remainingFilename.indexOf( '-', 
version.length() + 8 );
-                        if ( classifierIndex >= 0 )
-                        {
-                            classifier = remainingFilename.substring( 
classifierIndex + 1 );
-                            remainingFilename = remainingFilename.substring( 
0, classifierIndex );
-                            result = 
artifactFactory.createArtifactWithClassifier( groupId, artifactId,
-                                                                               
    remainingFilename, type,
-                                                                               
    classifier );
-                        }
-                        else
-                        {
-                            result = artifactFactory.createArtifact( groupId, 
artifactId, remainingFilename,
-                                                                     
Artifact.SCOPE_RUNTIME, type );
-                        }
-
-                        // poor encapsulation requires we do this to populate 
base version
-                        if ( !result.isSnapshot() )
-                        {
-                            return null;
-                        }
-                        else if ( !result.getBaseVersion().equals( version ) )
-                        {
-                            return null;
-                        }
-                        else
-                        {
-                            artifact = result;
-                        }
-                    }
-                    else if ( !remainingFilename.startsWith( version ) )
-                    {
-                        return null;
-                    }
-                    else if ( !remainingFilename.equals( version ) )
-                    {
-                        if ( remainingFilename.charAt( version.length() ) != 
'-' )
-                        {
-                            return null;
-                        }
-                        else
-                        {
-                            classifier = remainingFilename.substring( 
version.length() + 1 );
-                            artifact = 
artifactFactory.createArtifactWithClassifier( groupId, artifactId, version, 
type,
-                                                                               
      classifier );
-                        }
+                        throw new DiscovererException( "Built snapshot 
artifact base version does not match " +
+                                                       "path version" );
                     }
                     else
                     {
                         artifact = result;
                     }
                 }
+                else if ( !remainingFilename.startsWith( version ) )
+                {
+                    throw new DiscovererException( "Built artifact version 
does not match path version" );
+                }
+                else if ( !remainingFilename.equals( version ) )
+                {
+                    if ( remainingFilename.charAt( version.length() ) == '-' )
+                    {
+                        classifier = remainingFilename.substring( 
version.length() + 1 );
+                        artifact = 
artifactFactory.createArtifactWithClassifier( groupId, artifactId, version, 
type,
+                                                                               
  classifier );
+                    }
+                    else
+                    {
+                        throw new DiscovererException( "Path version does not 
corresspond to an artifact version" );
+                    }
+                }
+                else
+                {
+                    artifact = result;
+                }
+            }
+            else
+            {
+                throw new DiscovererException( "Path filename does not 
correspond to an artifact" );
             }
+        }
+        else
+        {
+            throw new DiscovererException( "Path is too short to build an 
artifact from" );
         }
 
         return artifact;

Modified: 
maven/repository-manager/trunk/maven-repository-discovery/src/main/java/org/apache/maven/repository/discovery/DefaultMetadataDiscoverer.java
URL: 
http://svn.apache.org/viewvc/maven/repository-manager/trunk/maven-repository-discovery/src/main/java/org/apache/maven/repository/discovery/DefaultMetadataDiscoverer.java?rev=413818&r1=413817&r2=413818&view=diff
==============================================================================
--- 
maven/repository-manager/trunk/maven-repository-discovery/src/main/java/org/apache/maven/repository/discovery/DefaultMetadataDiscoverer.java
 (original)
+++ 
maven/repository-manager/trunk/maven-repository-discovery/src/main/java/org/apache/maven/repository/discovery/DefaultMetadataDiscoverer.java
 Mon Jun 12 23:53:38 2006
@@ -24,6 +24,7 @@
 import 
org.apache.maven.artifact.repository.metadata.SnapshotArtifactRepositoryMetadata;
 import 
org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Reader;
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
+import org.codehaus.plexus.util.StringUtils;
 
 import java.io.File;
 import java.io.IOException;
@@ -67,15 +68,14 @@
 
         for ( int i = 0; i < metadataPaths.length; i++ )
         {
-            RepositoryMetadata metadata = buildMetadata( 
repositoryBase.getPath(), metadataPaths[i] );
-
-            if ( metadata != null )
+            try
             {
+                RepositoryMetadata metadata = buildMetadata( 
repositoryBase.getPath(), metadataPaths[i] );
                 metadataFiles.add( metadata );
             }
-            else
+            catch ( DiscovererException e )
             {
-                addKickedOutPath( metadataPaths[i] );
+                addKickedOutPath( metadataPaths[i], e.getMessage() );
             }
         }
 
@@ -90,6 +90,7 @@
      * @return the metadata
      */
     private RepositoryMetadata buildMetadata( String repo, String metadataPath 
)
+        throws DiscovererException
     {
         Metadata m = null;
         String repoPath = repo + "/" + metadataPath;
@@ -104,23 +105,26 @@
         }
         catch ( XmlPullParserException e )
         {
-            getLogger().error( "Error parsing metadata file '" + repoPath + 
"': " + e.getMessage(), e );
+            throw new DiscovererException( "Error parsing metadata file '" + 
repoPath + "': " + e.getMessage(), e );
         }
         catch ( MalformedURLException e )
         {
             // shouldn't happen
-            getLogger().error( "Error constructing metadata file '" + repoPath 
+ "': " + e.getMessage(), e );
+            throw new DiscovererException( "Error constructing metadata file 
'" + repoPath + "': " +
+                                           e.getMessage(), e );
         }
         catch ( IOException e )
         {
-            getLogger().error( "Error reading metadata file '" + repoPath + 
"': " + e.getMessage(), e );
+            throw new DiscovererException( "Error reading metadata file '" + 
repoPath + "': " + e.getMessage(), e );
         }
 
-        RepositoryMetadata repositoryMetadata = null;
-        if ( m != null )
+        RepositoryMetadata repositoryMetadata = buildMetadata( m, metadataPath 
);
+
+        if ( repositoryMetadata == null )
         {
-            repositoryMetadata = buildMetadata( m, metadataPath );
+            throw new DiscovererException( "Unable to build a repository 
metadata from path" );
         }
+
         return repositoryMetadata;
     }
 
@@ -146,14 +150,8 @@
         Iterator it = pathParts.iterator();
         String tmpDir = (String) it.next();
 
-        //ArtifactHandler handler = new DefaultArtifactHandler( "jar" );
-        //if( metaVersion != null && !metaVersion.equals( "" ) )
-        //{
-        //   VersionRange version = VersionRange.createFromVersion( 
metaVersion );
-        //}
-
         Artifact artifact = null;
-        if ( metaVersion != null && !"".equals( metaVersion ) )
+        if ( !StringUtils.isEmpty( metaVersion ) )
         {
             artifact = artifactFactory.createBuildArtifact( metaGroupId, 
metaArtifactId, metaVersion, "jar" );
         }

Added: 
maven/repository-manager/trunk/maven-repository-discovery/src/main/java/org/apache/maven/repository/discovery/Discoverer.java
URL: 
http://svn.apache.org/viewvc/maven/repository-manager/trunk/maven-repository-discovery/src/main/java/org/apache/maven/repository/discovery/Discoverer.java?rev=413818&view=auto
==============================================================================
--- 
maven/repository-manager/trunk/maven-repository-discovery/src/main/java/org/apache/maven/repository/discovery/Discoverer.java
 (added)
+++ 
maven/repository-manager/trunk/maven-repository-discovery/src/main/java/org/apache/maven/repository/discovery/Discoverer.java
 Mon Jun 12 23:53:38 2006
@@ -0,0 +1,39 @@
+package org.apache.maven.repository.discovery;
+
+import java.util.Iterator;
+
+/*
+ * Copyright 2005-2006 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.
+ */
+
+/**
+ * @author Edwin Punzalan
+ */
+public interface Discoverer
+{
+    /**
+     * Get the list of paths kicked out during the discovery process.
+     *
+     * @return the paths as Strings.
+     */
+    Iterator getKickedOutPathsIterator();
+
+    /**
+     * Get the list of paths excluded during the discovery process.
+     *
+     * @return the paths as Strings.
+     */
+    Iterator getExcludedPathsIterator();
+}

Propchange: 
maven/repository-manager/trunk/maven-repository-discovery/src/main/java/org/apache/maven/repository/discovery/Discoverer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
maven/repository-manager/trunk/maven-repository-discovery/src/main/java/org/apache/maven/repository/discovery/DiscovererException.java
URL: 
http://svn.apache.org/viewvc/maven/repository-manager/trunk/maven-repository-discovery/src/main/java/org/apache/maven/repository/discovery/DiscovererException.java?rev=413818&view=auto
==============================================================================
--- 
maven/repository-manager/trunk/maven-repository-discovery/src/main/java/org/apache/maven/repository/discovery/DiscovererException.java
 (added)
+++ 
maven/repository-manager/trunk/maven-repository-discovery/src/main/java/org/apache/maven/repository/discovery/DiscovererException.java
 Mon Jun 12 23:53:38 2006
@@ -0,0 +1,39 @@
+package org.apache.maven.repository.discovery;
+
+/*
+ * Copyright 2005-2006 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.
+ */
+
+/**
+ * @author Edwin Punzalan
+ */
+public class DiscovererException
+    extends Exception
+{
+    public DiscovererException( Throwable cause )
+    {
+        super( cause );
+    }
+
+    public DiscovererException( String message )
+    {
+        super( message );
+    }
+
+    public DiscovererException( String message, Throwable cause )
+    {
+        super( message, cause );
+    }
+}

Propchange: 
maven/repository-manager/trunk/maven-repository-discovery/src/main/java/org/apache/maven/repository/discovery/DiscovererException.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: 
maven/repository-manager/trunk/maven-repository-discovery/src/main/java/org/apache/maven/repository/discovery/LegacyArtifactDiscoverer.java
URL: 
http://svn.apache.org/viewvc/maven/repository-manager/trunk/maven-repository-discovery/src/main/java/org/apache/maven/repository/discovery/LegacyArtifactDiscoverer.java?rev=413818&r1=413817&r2=413818&view=diff
==============================================================================
--- 
maven/repository-manager/trunk/maven-repository-discovery/src/main/java/org/apache/maven/repository/discovery/LegacyArtifactDiscoverer.java
 (original)
+++ 
maven/repository-manager/trunk/maven-repository-discovery/src/main/java/org/apache/maven/repository/discovery/LegacyArtifactDiscoverer.java
 Mon Jun 12 23:53:38 2006
@@ -38,10 +38,11 @@
     extends AbstractArtifactDiscoverer
 {
     public Artifact buildArtifact( String path )
+        throws DiscovererException
     {
         StringTokenizer tokens = new StringTokenizer( path, "/\\" );
 
-        Artifact result = null;
+        Artifact result;
 
         int numberOfTokens = tokens.countTokens();
 
@@ -69,8 +70,6 @@
 
                 String lastAvceToken = (String) avceTokenList.removeLast();
 
-                boolean valid = true;
-
                 // TODO: share with other discoverer, use artifact handlers 
instead
                 if ( lastAvceToken.endsWith( ".tar.gz" ) )
                 {
@@ -111,157 +110,168 @@
                         }
                         else
                         {
-                            //type does not match extension
-                            valid = false;
+                            throw new DiscovererException( "Path type does not 
match the extension" );
                         }
                     }
                     else
                     {
-                        // no extension
-                        valid = false;
+                        throw new DiscovererException( "Path filename does not 
have an extension" );
                     }
                 }
 
-                if ( valid )
-                {
-                    // let's discover the version, and whatever's leftover 
will be either
-                    // a classifier, or part of the artifactId, depending on 
position.
-                    // Since version is at the end, we have to move in from 
the back.
-                    Collections.reverse( avceTokenList );
+                // let's discover the version, and whatever's leftover will be 
either
+                // a classifier, or part of the artifactId, depending on 
position.
+                // Since version is at the end, we have to move in from the 
back.
+                Collections.reverse( avceTokenList );
 
-                    // TODO: this is obscene - surely a better way?
-                    String validVersionParts = "([Dd][Ee][Vv][_.0-9]*)|" + 
"([Ss][Nn][Aa][Pp][Ss][Hh][Oo][Tt])|" +
-                        "([0-9][_.0-9a-zA-Z]*)|" + 
"([Gg]?[_.0-9ab]*([Pp][Rr][Ee]|[Rr][Cc]|[Gg]|[Mm])[_.0-9]*)|" +
-                        "([Aa][Ll][Pp][Hh][Aa][_.0-9]*)|" + 
"([Bb][Ee][Tt][Aa][_.0-9]*)|" + "([Rr][Cc][_.0-9]*)|" +
-                        "([Tt][Ee][Ss][Tt][_.0-9]*)|" + 
"([Dd][Ee][Bb][Uu][Gg][_.0-9]*)|" +
-                        "([Uu][Nn][Oo][Ff][Ff][Ii][Cc][Ii][Aa][Ll][_.0-9]*)|" 
+ "([Cc][Uu][Rr][Rr][Ee][Nn][Tt])|" +
-                        "([Ll][Aa][Tt][Ee][Ss][Tt])|" + "([Ff][Cc][Ss])|" + 
"([Rr][Ee][Ll][Ee][Aa][Ss][Ee][_.0-9]*)|" +
-                        "([Nn][Ii][Gg][Hh][Tt][Ll][Yy])|" + 
"[Ff][Ii][Nn][Aa][Ll]|" + "([AaBb][_.0-9]*)";
+                // TODO: this is obscene - surely a better way?
+                String validVersionParts = "([Dd][Ee][Vv][_.0-9]*)|" + 
"([Ss][Nn][Aa][Pp][Ss][Hh][Oo][Tt])|" +
+                    "([0-9][_.0-9a-zA-Z]*)|" + 
"([Gg]?[_.0-9ab]*([Pp][Rr][Ee]|[Rr][Cc]|[Gg]|[Mm])[_.0-9]*)|" +
+                    "([Aa][Ll][Pp][Hh][Aa][_.0-9]*)|" + 
"([Bb][Ee][Tt][Aa][_.0-9]*)|" + "([Rr][Cc][_.0-9]*)|" +
+                    "([Tt][Ee][Ss][Tt][_.0-9]*)|" + 
"([Dd][Ee][Bb][Uu][Gg][_.0-9]*)|" +
+                    "([Uu][Nn][Oo][Ff][Ff][Ii][Cc][Ii][Aa][Ll][_.0-9]*)|" + 
"([Cc][Uu][Rr][Rr][Ee][Nn][Tt])|" +
+                    "([Ll][Aa][Tt][Ee][Ss][Tt])|" + "([Ff][Cc][Ss])|" + 
"([Rr][Ee][Ll][Ee][Aa][Ss][Ee][_.0-9]*)|" +
+                    "([Nn][Ii][Gg][Hh][Tt][Ll][Yy])|" + 
"[Ff][Ii][Nn][Aa][Ll]|" + "([AaBb][_.0-9]*)";
 
-                    StringBuffer classifierBuffer = new StringBuffer();
-                    StringBuffer versionBuffer = new StringBuffer();
+                StringBuffer classifierBuffer = new StringBuffer();
+                StringBuffer versionBuffer = new StringBuffer();
 
-                    boolean firstVersionTokenEncountered = false;
-                    boolean firstToken = true;
+                boolean firstVersionTokenEncountered = false;
+                boolean firstToken = true;
 
-                    int tokensIterated = 0;
-                    for ( Iterator it = avceTokenList.iterator(); 
it.hasNext(); )
-                    {
-                        String token = (String) it.next();
+                int tokensIterated = 0;
+                for ( Iterator it = avceTokenList.iterator(); it.hasNext(); )
+                {
+                    String token = (String) it.next();
 
-                        boolean tokenIsVersionPart = token.matches( 
validVersionParts );
+                    boolean tokenIsVersionPart = token.matches( 
validVersionParts );
 
-                        StringBuffer bufferToUpdate;
+                    StringBuffer bufferToUpdate;
 
-                        // NOTE: logic in code is reversed, since we're 
peeling off the back
-                        // Any token after the last versionPart will be in the 
classifier.
-                        // Any token UP TO first non-versionPart is part of 
the version.
-                        if ( !tokenIsVersionPart )
-                        {
-                            if ( firstVersionTokenEncountered )
-                            {
-                                //noinspection BreakStatement
-                                break;
-                            }
-                            else
-                            {
-                                bufferToUpdate = classifierBuffer;
-                            }
-                        }
-                        else
-                        {
-                            firstVersionTokenEncountered = true;
-
-                            bufferToUpdate = versionBuffer;
-                        }
-
-                        if ( firstToken )
+                    // NOTE: logic in code is reversed, since we're peeling 
off the back
+                    // Any token after the last versionPart will be in the 
classifier.
+                    // Any token UP TO first non-versionPart is part of the 
version.
+                    if ( !tokenIsVersionPart )
+                    {
+                        if ( firstVersionTokenEncountered )
                         {
-                            firstToken = false;
+                            //noinspection BreakStatement
+                            break;
                         }
                         else
                         {
-                            bufferToUpdate.insert( 0, '-' );
+                            bufferToUpdate = classifierBuffer;
                         }
+                    }
+                    else
+                    {
+                        firstVersionTokenEncountered = true;
 
-                        bufferToUpdate.insert( 0, token );
+                        bufferToUpdate = versionBuffer;
+                    }
 
-                        tokensIterated++;
+                    if ( firstToken )
+                    {
+                        firstToken = false;
                     }
+                    else
+                    {
+                        bufferToUpdate.insert( 0, '-' );
+                    }
+
+                    bufferToUpdate.insert( 0, token );
+
+                    tokensIterated++;
+                }
 
-                    // Now, restore the proper ordering so we can build the 
artifactId.
-                    Collections.reverse( avceTokenList );
+                // Now, restore the proper ordering so we can build the 
artifactId.
+                Collections.reverse( avceTokenList );
 
-                    // if we didn't find a version, then punt. Use the last 
token
-                    // as the version, and set the classifier empty.
-                    if ( versionBuffer.length() < 1 )
+                // if we didn't find a version, then punt. Use the last token
+                // as the version, and set the classifier empty.
+                if ( versionBuffer.length() < 1 )
+                {
+                    if ( avceTokenList.size() > 1 )
                     {
-                        if ( avceTokenList.size() > 1 )
-                        {
-                            int lastIdx = avceTokenList.size() - 1;
+                        int lastIdx = avceTokenList.size() - 1;
 
-                            versionBuffer.append( avceTokenList.get( lastIdx ) 
);
-                            avceTokenList.remove( lastIdx );
-                        }
+                        versionBuffer.append( avceTokenList.get( lastIdx ) );
+                        avceTokenList.remove( lastIdx );
+                    }
+
+                    classifierBuffer.setLength( 0 );
+                }
+                else
+                {
+                    // if everything is kosher, then pop off all the 
classifier and
+                    // version tokens, leaving the naked artifact id in the 
list.
+                    avceTokenList =
+                        new LinkedList( avceTokenList.subList( 0, 
avceTokenList.size() - tokensIterated ) );
+                }
+
+                StringBuffer artifactIdBuffer = new StringBuffer();
 
-                        classifierBuffer.setLength( 0 );
+                firstToken = true;
+                for ( Iterator it = avceTokenList.iterator(); it.hasNext(); )
+                {
+                    String token = (String) it.next();
+
+                    if ( firstToken )
+                    {
+                        firstToken = false;
                     }
                     else
                     {
-                        // if everything is kosher, then pop off all the 
classifier and
-                        // version tokens, leaving the naked artifact id in 
the list.
-                        avceTokenList =
-                            new LinkedList( avceTokenList.subList( 0, 
avceTokenList.size() - tokensIterated ) );
+                        artifactIdBuffer.append( '-' );
                     }
 
-                    StringBuffer artifactIdBuffer = new StringBuffer();
-
-                    firstToken = true;
-                    for ( Iterator it = avceTokenList.iterator(); 
it.hasNext(); )
-                    {
-                        String token = (String) it.next();
+                    artifactIdBuffer.append( token );
+                }
 
-                        if ( firstToken )
-                        {
-                            firstToken = false;
-                        }
-                        else
-                        {
-                            artifactIdBuffer.append( '-' );
-                        }
+                String artifactId = artifactIdBuffer.toString();
 
-                        artifactIdBuffer.append( token );
+                if ( artifactId.length() > 0 )
+                {
+                    int lastVersionCharIdx = versionBuffer.length() - 1;
+                    if ( lastVersionCharIdx > -1 && versionBuffer.charAt( 
lastVersionCharIdx ) == '-' )
+                    {
+                        versionBuffer.setLength( lastVersionCharIdx );
                     }
 
-                    String artifactId = artifactIdBuffer.toString();
+                    String version = versionBuffer.toString();
 
-                    if ( artifactId.length() > 0 )
+                    if ( version.length() > 0 )
                     {
-                        int lastVersionCharIdx = versionBuffer.length() - 1;
-                        if ( lastVersionCharIdx > -1 && versionBuffer.charAt( 
lastVersionCharIdx ) == '-' )
+                        if ( classifierBuffer.length() > 0 )
                         {
-                            versionBuffer.setLength( lastVersionCharIdx );
+                            result = 
artifactFactory.createArtifactWithClassifier( groupId, artifactId, version,
+                                                                               
    type,
+                                                                               
    classifierBuffer.toString() );
                         }
-
-                        String version = versionBuffer.toString();
-
-                        if ( version.length() >= 1 )
+                        else
                         {
-                            if ( classifierBuffer.length() > 0 )
-                            {
-                                result = 
artifactFactory.createArtifactWithClassifier( groupId, artifactId, version,
-                                                                               
        type,
-                                                                               
        classifierBuffer.toString() );
-                            }
-                            else
-                            {
-                                result = artifactFactory.createArtifact( 
groupId, artifactId, version,
-                                                                         
Artifact.SCOPE_RUNTIME, type );
-                            }
+                            result = artifactFactory.createArtifact( groupId, 
artifactId, version,
+                                                                     
Artifact.SCOPE_RUNTIME, type );
                         }
                     }
+                    else
+                    {
+                        throw new DiscovererException( "Path filename version 
is empty" );
+                    }
+                }
+                else
+                {
+                    throw new DiscovererException( "Path filename artifactId 
is empty" );
                 }
             }
+            else
+            {
+                throw new DiscovererException( "Path artifact type does not 
corresspond to an artifact type" );
+            }
+        }
+        else
+        {
+            throw new DiscovererException( "Path does not match a legacy 
repository path for an artifact" );
         }
 
         return result;

Modified: 
maven/repository-manager/trunk/maven-repository-discovery/src/main/java/org/apache/maven/repository/discovery/MetadataDiscoverer.java
URL: 
http://svn.apache.org/viewvc/maven/repository-manager/trunk/maven-repository-discovery/src/main/java/org/apache/maven/repository/discovery/MetadataDiscoverer.java?rev=413818&r1=413817&r2=413818&view=diff
==============================================================================
--- 
maven/repository-manager/trunk/maven-repository-discovery/src/main/java/org/apache/maven/repository/discovery/MetadataDiscoverer.java
 (original)
+++ 
maven/repository-manager/trunk/maven-repository-discovery/src/main/java/org/apache/maven/repository/discovery/MetadataDiscoverer.java
 Mon Jun 12 23:53:38 2006
@@ -17,13 +17,13 @@
  */
 
 import java.io.File;
-import java.util.Iterator;
 import java.util.List;
 
 /**
  * Interface for discovering metadata files.
  */
 public interface MetadataDiscoverer
+    extends Discoverer
 {
     String ROLE = MetadataDiscoverer.class.getName();
 
@@ -34,18 +34,4 @@
      * @param blacklistedPatterns Patterns that are to be excluded from the 
discovery process.
      */
     List discoverMetadata( File repositoryBase, String blacklistedPatterns );
-
-    /**
-     * Get the list of paths kicked out during the discovery process.
-     *
-     * @return the paths as Strings.
-     */
-    Iterator getKickedOutPathsIterator();
-
-    /**
-     * Get the list of paths excluded during the discovery process.
-     *
-     * @return the paths as Strings.
-     */
-    Iterator getExcludedPathsIterator();
 }

Modified: 
maven/repository-manager/trunk/maven-repository-discovery/src/test/java/org/apache/maven/repository/discovery/DefaultArtifactDiscovererTest.java
URL: 
http://svn.apache.org/viewvc/maven/repository-manager/trunk/maven-repository-discovery/src/test/java/org/apache/maven/repository/discovery/DefaultArtifactDiscovererTest.java?rev=413818&r1=413817&r2=413818&view=diff
==============================================================================
--- 
maven/repository-manager/trunk/maven-repository-discovery/src/test/java/org/apache/maven/repository/discovery/DefaultArtifactDiscovererTest.java
 (original)
+++ 
maven/repository-manager/trunk/maven-repository-discovery/src/test/java/org/apache/maven/repository/discovery/DefaultArtifactDiscovererTest.java
 Mon Jun 12 23:53:38 2006
@@ -565,7 +565,14 @@
 
     private Artifact getArtifactFromPath( String path )
     {
-        return discoverer.buildArtifact( path );
+        try
+        {
+            return discoverer.buildArtifact( path );
+        }
+        catch ( DiscovererException e )
+        {
+            return null;
+        }
     }
 
     private Artifact createArtifact( String groupId, String artifactId, String 
version )

Modified: 
maven/repository-manager/trunk/maven-repository-discovery/src/test/java/org/apache/maven/repository/discovery/LegacyArtifactDiscovererTest.java
URL: 
http://svn.apache.org/viewvc/maven/repository-manager/trunk/maven-repository-discovery/src/test/java/org/apache/maven/repository/discovery/LegacyArtifactDiscovererTest.java?rev=413818&r1=413817&r2=413818&view=diff
==============================================================================
--- 
maven/repository-manager/trunk/maven-repository-discovery/src/test/java/org/apache/maven/repository/discovery/LegacyArtifactDiscovererTest.java
 (original)
+++ 
maven/repository-manager/trunk/maven-repository-discovery/src/test/java/org/apache/maven/repository/discovery/LegacyArtifactDiscovererTest.java
 Mon Jun 12 23:53:38 2006
@@ -406,7 +406,14 @@
 
     private Artifact getArtifactFromPath( String path )
     {
-        return discoverer.buildArtifact( path );
+        try
+        {
+            return discoverer.buildArtifact( path );
+        }
+        catch ( DiscovererException e )
+        {
+            return null;
+        }
     }
 
     private Artifact createArtifact( String groupId, String artifactId, String 
version )

Modified: 
maven/repository-manager/trunk/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/DefaultProxyManager.java
URL: 
http://svn.apache.org/viewvc/maven/repository-manager/trunk/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/DefaultProxyManager.java?rev=413818&r1=413817&r2=413818&view=diff
==============================================================================
--- 
maven/repository-manager/trunk/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/DefaultProxyManager.java
 (original)
+++ 
maven/repository-manager/trunk/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/DefaultProxyManager.java
 Mon Jun 12 23:53:38 2006
@@ -24,6 +24,7 @@
 import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
 import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
 import org.apache.maven.repository.discovery.ArtifactDiscoverer;
+import org.apache.maven.repository.discovery.DiscovererException;
 import org.apache.maven.repository.proxy.configuration.ProxyConfiguration;
 import org.apache.maven.repository.proxy.repository.ProxyRepository;
 import org.apache.maven.wagon.ConnectionException;
@@ -150,11 +151,26 @@
         }
         else
         {
-            Artifact artifact = defaultArtifactDiscoverer.buildArtifact( path 
);
+            Artifact artifact = null;
+            try
+            {
+                artifact = defaultArtifactDiscoverer.buildArtifact( path );
+            }
+            catch ( DiscovererException e )
+            {
+                getLogger().debug( "Failed to build artifact using default 
layout with message: " + e.getMessage() );
+            }
 
             if ( artifact == null )
             {
-                artifact = legacyArtifactDiscoverer.buildArtifact( path );
+                try
+                {
+                    artifact = legacyArtifactDiscoverer.buildArtifact( path );
+                }
+                catch ( DiscovererException e )
+                {
+                    getLogger().debug( "Failed to build artifact using legacy 
layout with message: " + e.getMessage() );
+                }
             }
 
             if ( artifact != null )


Reply via email to