brett       2005/04/12 17:27:55

  Modified:    maven-core/src/main/java/org/apache/maven/project
                        MavenProject.java
  Added:       maven-core/src/main/java/org/apache/maven/artifact
                        DependencyResolutionRequiredException.java
  Log:
  PR: MNG-291

  improved error reporting related to not properly resolving dependencies 
before trying to get the classpath
  
  Revision  Changes    Path
  1.1                  
maven-components/maven-core/src/main/java/org/apache/maven/artifact/DependencyResolutionRequiredException.java
  
  Index: DependencyResolutionRequiredException.java
  ===================================================================
  package org.apache.maven.artifact;
  
  /*
   * Copyright 2001-2005 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.
   */
  
  /**
   * Exception that occurs when an artifact file is used, but has not been 
resolved.
   *
   * @author <a href="mailto:[EMAIL PROTECTED]">Brett Porter</a>
   * @version $Id: DependencyResolutionRequiredException.java,v 1.1 2005/04/13 
00:27:55 brett Exp $
   * @todo it may be better for this to move to maven-artifact, and 
artifact.getFile() to throw it - perhaps it is a runtime exception?
   */
  public class DependencyResolutionRequiredException
      extends Exception
  {
      public DependencyResolutionRequiredException( Artifact artifact )
      {
          super( "Attempted to access the artifact " + artifact + "; which has 
not yet been resolved" );
      }
  }
  
  
  
  1.40      +22 -6     
maven-components/maven-core/src/main/java/org/apache/maven/project/MavenProject.java
  
  Index: MavenProject.java
  ===================================================================
  RCS file: 
/home/cvs/maven-components/maven-core/src/main/java/org/apache/maven/project/MavenProject.java,v
  retrieving revision 1.39
  retrieving revision 1.40
  diff -u -r1.39 -r1.40
  --- MavenProject.java 31 Mar 2005 09:32:43 -0000      1.39
  +++ MavenProject.java 13 Apr 2005 00:27:55 -0000      1.40
  @@ -18,6 +18,7 @@
    */
   
   import org.apache.maven.artifact.Artifact;
  +import org.apache.maven.artifact.DependencyResolutionRequiredException;
   import org.apache.maven.artifact.construction.ArtifactConstructionSupport;
   import org.apache.maven.artifact.repository.ArtifactRepository;
   import org.apache.maven.model.Build;
  @@ -228,6 +229,7 @@
       }
   
       public List getCompileClasspathElements()
  +        throws DependencyResolutionRequiredException
       {
           List list = new ArrayList( getArtifacts().size() );
   
  @@ -238,14 +240,19 @@
               // TODO: let the scope handler deal with this
               if ( Artifact.SCOPE_COMPILE.equals( a.getScope() ) )
               {
  -                // TODO: this assumes resolution, which may not have been 
the case - improve error reporting in that instance
  -                list.add( a.getFile().getPath() );
  +                File file = a.getFile();
  +                if ( file == null )
  +                {
  +                    throw new DependencyResolutionRequiredException( a );
  +                }
  +                list.add( file.getPath() );
               }
           }
           return list;
       }
   
       public List getTestClasspathElements()
  +        throws DependencyResolutionRequiredException
       {
           List list = new ArrayList( getArtifacts().size() + 1 );
   
  @@ -261,8 +268,12 @@
                   if ( Artifact.SCOPE_TEST.equals( a.getScope() ) || 
Artifact.SCOPE_COMPILE.equals( a.getScope() ) ||
                       Artifact.SCOPE_RUNTIME.equals( a.getScope() ) )
                   {
  -                    // TODO: this assumes resolution, which may not have 
been the case - improve error reporting in that instance
  -                    list.add( a.getFile().getPath() );
  +                    File file = a.getFile();
  +                    if ( file == null )
  +                    {
  +                        throw new DependencyResolutionRequiredException( a );
  +                    }
  +                    list.add( file.getPath() );
                   }
               }
           }
  @@ -270,6 +281,7 @@
       }
   
       public List getRuntimeClasspathElements()
  +        throws DependencyResolutionRequiredException
       {
           List list = new ArrayList( getArtifacts().size() + 1 );
   
  @@ -284,8 +296,12 @@
                   // TODO: let the scope handler deal with this
                   if ( Artifact.SCOPE_COMPILE.equals( a.getScope() ) || 
Artifact.SCOPE_RUNTIME.equals( a.getScope() ) )
                   {
  -                    // TODO: this assumes resolution, which may not have 
been the case - improve error reporting in that instance
  -                    list.add( a.getFile().getPath() );
  +                    File file = a.getFile();
  +                    if ( file == null )
  +                    {
  +                        throw new DependencyResolutionRequiredException( a );
  +                    }
  +                    list.add( file.getPath() );
                   }
               }
           }
  
  
  

Reply via email to