You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jv...@apache.org on 2008/02/09 03:24:41 UTC

svn commit: r620063 - in /maven/artifact/branches/CAP: ./ src/main/java/org/apache/maven/artifact/ src/main/java/org/apache/maven/artifact/resolver/filter/ src/test/java/org/apache/maven/artifact/factory/ src/test/java/org/apache/maven/artifact/resolver/

Author: jvanzyl
Date: Fri Feb  8 18:24:38 2008
New Revision: 620063

URL: http://svn.apache.org/viewvc?rev=620063&view=rev
Log:
o one problem left and then some more collapsing, and then a first attempt at the graph based work through the whole                                                   
  system, the differences in behavior will be interesting  

Removed:
    maven/artifact/branches/CAP/src/test/java/org/apache/maven/artifact/factory/
Modified:
    maven/artifact/branches/CAP/notes.txt
    maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/ArtifactUtils.java
    maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/DefaultArtifact.java
    maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/filter/ScopeArtifactFilter.java
    maven/artifact/branches/CAP/src/test/java/org/apache/maven/artifact/resolver/DefaultArtifactCollectorTest.java

Modified: maven/artifact/branches/CAP/notes.txt
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/notes.txt?rev=620063&r1=620062&r2=620063&view=diff
==============================================================================
--- maven/artifact/branches/CAP/notes.txt (original)
+++ maven/artifact/branches/CAP/notes.txt Fri Feb  8 18:24:38 2008
@@ -70,4 +70,14 @@
  the optimized retrieval mechanism. We still need to do some work to separate out 4) as we're doing some classpath
  calculations already which we will need to further decouple but that should be relatively straight forward.
 
-                
+ 7 February 2008 (Friday)
+
+ The number of methods in the artifact factory is simply insane, for each type that we ended up with in Maven just started
+ being effectively hard-coded in the factory which is totally unscalable, any new types with handlers become a nightmare
+ to maintain. I have reduced everything to two constructors in the DefaultArtifact and I would like to reduce it to being
+ one. Right now I have to account for needing to use a version string, or creating a range which is completely confusing
+ to anyone using the API. You should just need one constructor with a version string and everything else should be taken
+ care of for you. Right now there are bits of code all over the place that do the if/else versionRange detection. 
+
+ inheritedScope goes away entirely from the model when a graph is used because the scope selected will be a function of
+ how the graph is processed.
\ No newline at end of file

Modified: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/ArtifactUtils.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/ArtifactUtils.java?rev=620063&r1=620062&r2=620063&view=diff
==============================================================================
--- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/ArtifactUtils.java (original)
+++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/ArtifactUtils.java Fri Feb  8 18:24:38 2008
@@ -129,7 +129,6 @@
     }
 
     public static Artifact copyArtifact( Artifact artifact )
-        throws InvalidVersionSpecificationException
     {
         DefaultArtifact clone = new DefaultArtifact( artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion(),
             artifact.getType(), artifact.getClassifier(), artifact.isOptional(), artifact.getScope(), null );

Modified: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/DefaultArtifact.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/DefaultArtifact.java?rev=620063&r1=620062&r2=620063&view=diff
==============================================================================
--- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/DefaultArtifact.java (original)
+++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/DefaultArtifact.java Fri Feb  8 18:24:38 2008
@@ -93,16 +93,7 @@
             throw new InvalidArtifactRTException( groupId, artifactId, version, type, "Version cannot be null." );
         }
 
-        VersionRange versionRange;
-
-        try
-        {
-            versionRange = VersionRange.createFromVersionSpec( version );
-        }
-        catch ( InvalidVersionSpecificationException e )
-        {
-            throw new InvalidArtifactRTException( groupId, artifactId, version, type, "Invalid version." );
-        }
+        VersionRange versionRange = VersionRange.createFromVersion( version );
 
         initialize( groupId, artifactId, versionRange, type, classifier, optional, scope, inheritedScope );
     }
@@ -128,24 +119,36 @@
                              String scope,
                              String inheritedScope )
     {
-        this.versionRange = versionRange;
-
         this.groupId = groupId;
 
         this.artifactId = artifactId;
 
+        this.versionRange = versionRange;
+
+        selectVersionFromNewRangeIfAvailable();
+
         this.scope = scope;
 
         this.type = type;
 
         this.classifier = classifier;
 
+        // We were relying on the artifact handler to get the classifier here. 
+
         this.optional = optional;
 
+        // Scope information
+
+        //this.scope = Artifact.SCOPE_RUNTIME;
+
         if ( inheritedScope == null )
         {
             this.scope = scope;
         }
+        else if( Artifact.SCOPE_TEST.equals( scope ) || Artifact.SCOPE_PROVIDED.equals( scope ) )
+        {
+            // do nothing
+        }
         else if ( Artifact.SCOPE_COMPILE.equals( scope ) && Artifact.SCOPE_COMPILE.equals( inheritedScope ) )
         {
             // added to retain compile artifactScope. Remove if you want compile inherited as runtime
@@ -167,8 +170,6 @@
             // system scopes come through unchanged...
             this.scope = Artifact.SCOPE_SYSTEM;
         }
-
-        selectVersionFromNewRangeIfAvailable();
 
         validateIdentity();
     }

Modified: maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/filter/ScopeArtifactFilter.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/filter/ScopeArtifactFilter.java?rev=620063&r1=620062&r2=620063&view=diff
==============================================================================
--- maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/filter/ScopeArtifactFilter.java (original)
+++ maven/artifact/branches/CAP/src/main/java/org/apache/maven/artifact/resolver/filter/ScopeArtifactFilter.java Fri Feb  8 18:24:38 2008
@@ -41,6 +41,19 @@
 
     private final boolean systemScope;
 
+    public String toString()
+    {
+        StringBuffer sb = new StringBuffer()
+            .append( "\n" )
+            .append( "compile  = " ).append( compileScope ).append( "\n" )
+            .append( "runtime  = " ).append( runtimeScope ).append( "\n" )
+            .append( "test     = " ).append( testScope ).append( "\n" )
+            .append( "provided = " ).append( providedScope ).append( "\n" )
+            .append( "system   = " ).append( systemScope );
+
+        return sb.toString();
+    }
+
     public ScopeArtifactFilter( String scope )
     {
         if ( DefaultArtifact.SCOPE_COMPILE.equals( scope ) )

Modified: maven/artifact/branches/CAP/src/test/java/org/apache/maven/artifact/resolver/DefaultArtifactCollectorTest.java
URL: http://svn.apache.org/viewvc/maven/artifact/branches/CAP/src/test/java/org/apache/maven/artifact/resolver/DefaultArtifactCollectorTest.java?rev=620063&r1=620062&r2=620063&view=diff
==============================================================================
--- maven/artifact/branches/CAP/src/test/java/org/apache/maven/artifact/resolver/DefaultArtifactCollectorTest.java (original)
+++ maven/artifact/branches/CAP/src/test/java/org/apache/maven/artifact/resolver/DefaultArtifactCollectorTest.java Fri Feb  8 18:24:38 2008
@@ -332,7 +332,7 @@
 
         ArtifactResolutionResult res = collect( a );
 
-        assertTrue( res.hasVersionRangeViolations() );        
+        assertTrue( res.hasVersionRangeViolations() );
     }
 
     public void testUnboundedRangeBelowLastRelease()
@@ -618,8 +618,10 @@
         ArtifactSpec b = createArtifactSpec( "b", "1.0" );
         ArtifactSpec c = createArtifactSpec( "c", "1.0" );
         a.addDependency( c );
+        //                                                      provided
         ArtifactSpec dNearest = createArtifactSpec( "d", "2.0", nearestScope );
         b.addDependency( dNearest );
+        //                                                       compile
         ArtifactSpec dFarthest = createArtifactSpec( "d", "3.0", farthestScope );
         c.addDependency( dFarthest );
 
@@ -643,14 +645,29 @@
             filter = new ScopeArtifactFilter( expectedScope );
         }
 
-        ArtifactResolutionResult res = collect( createSet( new Object[]{a.artifact, b.artifact} ), filter );
+        Set artifactSet = createSet( new Object[]{a.artifact, b.artifact} );
+
+        System.out.println( "filter = " + filter );
+
+        ArtifactResolutionResult res = collect( artifactSet, filter );
+
         Artifact artifact = getArtifact( "d", res.getArtifacts() );
+
         assertNotNull( "MNG-1895 Dependency was not added to resolution", artifact );
+
         assertEquals( "Check artifactScope", expectedScope, artifact.getScope() );
+
+        // compile / provided / compile
+        System.out.println( "d = " + artifact );
         assertEquals( "Check version with expect scope[" + expectedScope + "]", expectedVersion, artifact.getVersion() );
 
         ArtifactSpec d = createArtifactSpec( "d", "1.0" );
-        res = collect( createSet( new Object[]{a.artifact, b.artifact, d.artifact} ), filter );
+
+        artifactSet = createSet( new Object[]{a.artifact, b.artifact, d.artifact} );
+
+        System.out.println( "artifactSet = " + artifactSet );
+
+        res = collect( artifactSet, filter );
         artifact = getArtifact( "d", res.getArtifacts() );
         assertNotNull( "MNG-1895 Dependency was not added to resolution", artifact );
         assertEquals( "Check artifactScope", d.artifact.getScope(), artifact.getScope() );
@@ -772,7 +789,7 @@
     private ArtifactSpec createArtifactSpec( String id, String version, String scope, String inheritedScope, boolean optional )
         throws InvalidVersionSpecificationException
     {
-        Artifact artifact = new DefaultArtifact( GROUP_ID, id, version, "jar", null, optional, scope, inheritedScope );
+        Artifact artifact = new DefaultArtifact( GROUP_ID, id, VersionRange.createFromVersionSpec( version ), "jar", null, optional, scope, inheritedScope );
 
         ArtifactSpec spec = null;
 
@@ -822,6 +839,9 @@
         private ArtifactSpec addDependency( String id, String version, String scope, boolean optional )
             throws InvalidVersionSpecificationException
         {
+            // inherited scope is this artifacts scope
+            // dependency scope is as stated here
+                                                                // provided compile
             ArtifactSpec dep = createArtifactSpec( id, version, scope, this.artifact.getScope(), optional );
 
             return addDependency( dep );
@@ -871,18 +891,41 @@
 
             for ( Iterator i = dependencies.iterator(); i.hasNext(); )
             {
+
                 Artifact d = (Artifact) i.next();
 
-                Artifact artifact;
+                VersionRange versionRange;
+
+                if ( d.getVersionRange() != null )
+                {
+                    versionRange = d.getVersionRange();
+                }
+                else
+                {
+                    versionRange = VersionRange.createFromVersionSpec( d.getVersion() );
+                }
+
+                Artifact  artifact;
 
                 if ( d.getScope().equals( Artifact.SCOPE_TEST ) || d.getScope().equals( Artifact.SCOPE_PROVIDED ) )
                 {
-                    /* don't call createDependencyArtifact as it'll ignore test and provided scopes */
+                    // don't call createDependencyArtifact as it'll ignore test and provided scopes
+                    // jvz!!
+                    //artifact = new DefaultArtifact( d.getGroupId(), d.getArtifactId(), d.getVersion(), d.getType(),
+                      //  d.getClassifier(), false, d.getScope(), inheritedScope );
+
                     artifact = null;
+
+                    /*
+                    artifact = new DefaultArtifact( d.getGroupId(), d.getArtifactId(), versionRange, d.getType(),
+                        d.getClassifier(), d.isOptional(), d.getScope(), inheritedScope );
+                        */
+
                 }
                 else
                 {
-                    artifact = new DefaultArtifact( d.getGroupId(), d.getArtifactId(), d.getVersionRange(), d.getType(), d.getClassifier(), d.isOptional(), d.getScope(), inheritedScope );
+                    artifact = new DefaultArtifact( d.getGroupId(), d.getArtifactId(), versionRange, d.getType(),
+                        d.getClassifier(), d.isOptional(), d.getScope(), inheritedScope );
                 }
 
                 if ( artifact != null && ( dependencyFilter == null || dependencyFilter.include( artifact ) ) )