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 2008/09/19 22:17:14 UTC
svn commit: r697220 - in
/maven/shared/trunk/maven-common-artifact-filters/src:
main/java/org/apache/maven/shared/artifact/filter/ScopeArtifactFilter.java
test/java/org/apache/maven/shared/artifact/filter/ScopeArtifactFilterTest.java
Author: jdcasey
Date: Fri Sep 19 13:17:14 2008
New Revision: 697220
URL: http://svn.apache.org/viewvc?rev=697220&view=rev
Log:
Fix NPE for Artifact.getId() when artifact uses a version range instead of a single version...this is triggered when an artifact is excluded from the ScopeArtifactFilter.include() method.
Modified:
maven/shared/trunk/maven-common-artifact-filters/src/main/java/org/apache/maven/shared/artifact/filter/ScopeArtifactFilter.java
maven/shared/trunk/maven-common-artifact-filters/src/test/java/org/apache/maven/shared/artifact/filter/ScopeArtifactFilterTest.java
Modified: maven/shared/trunk/maven-common-artifact-filters/src/main/java/org/apache/maven/shared/artifact/filter/ScopeArtifactFilter.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-common-artifact-filters/src/main/java/org/apache/maven/shared/artifact/filter/ScopeArtifactFilter.java?rev=697220&r1=697219&r2=697220&view=diff
==============================================================================
--- maven/shared/trunk/maven-common-artifact-filters/src/main/java/org/apache/maven/shared/artifact/filter/ScopeArtifactFilter.java (original)
+++ maven/shared/trunk/maven-common-artifact-filters/src/main/java/org/apache/maven/shared/artifact/filter/ScopeArtifactFilter.java Fri Sep 19 13:17:14 2008
@@ -139,7 +139,19 @@
if ( !result )
{
- filteredArtifactIds.add( artifact.getId() );
+ // We have to be very careful with artifacts that have ranges,
+ // because artifact.getId() will throw a NPE if a range is specified.
+ String id;
+ if ( artifact.getVersionRange() != null )
+ {
+ id = artifact.getDependencyConflictId() + ":" + artifact.getVersionRange();
+ }
+ else
+ {
+ id = artifact.getId();
+ }
+
+ filteredArtifactIds.add( id );
}
return result;
Modified: maven/shared/trunk/maven-common-artifact-filters/src/test/java/org/apache/maven/shared/artifact/filter/ScopeArtifactFilterTest.java
URL: http://svn.apache.org/viewvc/maven/shared/trunk/maven-common-artifact-filters/src/test/java/org/apache/maven/shared/artifact/filter/ScopeArtifactFilterTest.java?rev=697220&r1=697219&r2=697220&view=diff
==============================================================================
--- maven/shared/trunk/maven-common-artifact-filters/src/test/java/org/apache/maven/shared/artifact/filter/ScopeArtifactFilterTest.java (original)
+++ maven/shared/trunk/maven-common-artifact-filters/src/test/java/org/apache/maven/shared/artifact/filter/ScopeArtifactFilterTest.java Fri Sep 19 13:17:14 2008
@@ -18,16 +18,29 @@
*/
package org.apache.maven.shared.artifact.filter;
-import junit.framework.TestCase;
-
import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.factory.ArtifactFactory;
import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
+import org.apache.maven.artifact.versioning.VersionRange;
import org.apache.maven.shared.tools.easymock.MockManager;
+import org.codehaus.plexus.PlexusTestCase;
import org.easymock.MockControl;
public class ScopeArtifactFilterTest
- extends TestCase
+ extends PlexusTestCase
{
+
+ public void testExcludedArtifactWithRangeShouldNotCauseNPE()
+ throws Exception
+ {
+ ArtifactFactory factory = (ArtifactFactory) lookup( ArtifactFactory.ROLE );
+
+ Artifact excluded = factory.createDependencyArtifact( "group", "artifact", VersionRange.createFromVersionSpec( "[1.2.3]" ), "jar", null, Artifact.SCOPE_PROVIDED );
+
+ ArtifactFilter filter = new ScopeArtifactFilter( Artifact.SCOPE_RUNTIME );
+
+ assertFalse( filter.include( excluded ) );
+ }
private MockManager mockManager = new MockManager();
@@ -148,31 +161,21 @@
MockControl control;
- private final String scope;
-
ArtifactMockAndControl( String scope )
{
- this.scope = scope;
-
control = MockControl.createControl( Artifact.class );
mockManager.add( control );
artifact = (Artifact) control.getMock();
- enableGetScope();
- enableGetId();
- }
-
- void enableGetScope()
- {
artifact.getScope();
- control.setReturnValue( scope, MockControl.ONE_OR_MORE );
- }
-
- void enableGetId()
- {
+ control.setReturnValue( scope, MockControl.ZERO_OR_MORE );
+
artifact.getId();
control.setReturnValue( "group:artifact:type:version", MockControl.ZERO_OR_MORE );
+
+ artifact.getVersionRange();
+ control.setReturnValue( null, MockControl.ZERO_OR_MORE );
}
}