Author: ogusakov
Date: Mon Oct  6 12:50:22 2008
New Revision: 702243

URL: http://svn.apache.org/viewvc?rev=702243&view=rev
Log:
dependencyTree metadata inc/exc, bug in conversion to 1.0.0-alpha-2-SN

Added:
    
maven/sandbox/trunk/mercury/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/ConflictException.java
    
maven/sandbox/trunk/mercury/mercury-util/src/main/java/org/apache/maven/mercury/util/Util.java
Modified:
    
maven/sandbox/trunk/mercury/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/ArtifactBasicMetadata.java
    
maven/sandbox/trunk/mercury/mercury-artifact/src/test/java/org/apache/maven/mercury/artifact/DependencyFilterTest.java
    maven/sandbox/trunk/mercury/mercury-md/mercury-md-sat/pom.xml
    
maven/sandbox/trunk/mercury/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyTreeBuilder.java
    maven/sandbox/trunk/mercury/mercury-md/mercury-md-shared/pom.xml
    maven/sandbox/trunk/mercury/wagon-mercury/pom.xml

Modified: 
maven/sandbox/trunk/mercury/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/ArtifactBasicMetadata.java
URL: 
http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/ArtifactBasicMetadata.java?rev=702243&r1=702242&r2=702243&view=diff
==============================================================================
--- 
maven/sandbox/trunk/mercury/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/ArtifactBasicMetadata.java
 (original)
+++ 
maven/sandbox/trunk/mercury/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/ArtifactBasicMetadata.java
 Mon Oct  6 12:50:22 2008
@@ -4,6 +4,9 @@
 import java.util.Collection;
 import java.util.List;
 
+import org.apache.maven.mercury.artifact.version.VersionException;
+import org.apache.maven.mercury.artifact.version.VersionRange;
+
 
 /**
  * this is the most primitive metadata there is, usually used to query 
repository for "real" metadata.
@@ -112,7 +115,7 @@
     return s;
   }
   //---------------------------------------------------------------------
-  public boolean sameGAV( ArtifactMetadata md )
+  public boolean sameGAV( ArtifactBasicMetadata md )
   {
     if( md == null )
       return false;
@@ -124,7 +127,7 @@
     ;
   }
   //---------------------------------------------------------------------
-  public boolean sameGA( ArtifactMetadata md )
+  public boolean sameGA( ArtifactBasicMetadata md )
   {
     if( md == null )
       return false;
@@ -204,6 +207,10 @@
   {
     return version;
   }
+  public boolean hasVersion()
+  {
+    return version != null && version.length() > 0;
+  }
 
   public void setVersion( String version )
   {
@@ -364,6 +371,54 @@
   {
     this.exclusions = exclusions;
   }
+  
+  /**
+   * run dependency through inclusion/exclusion filters. Inclusion filter 
+   * is always a "hole"-filter, which is then enhanced by exclusion 
"cork"-filter
+   * 
+   * @param dep dependency to vet
+   * @return vet result
+   * @throws VersionException 
+   */
+  public boolean allowDependency( ArtifactBasicMetadata dep )
+  throws VersionException
+  {
+    boolean includeDependency = true;
+    if( hasInclusions() )
+      includeDependency = ! passesFilter( inclusions, dep );
+    
+    if( !includeDependency )
+      return false;
+    
+    if( !hasExclusions() )
+      return true;
+    
+    if( passesFilter( exclusions, dep ) )
+      return true;
+    
+    return false;
+    
+  }
+  
+  private boolean passesFilter( Collection<ArtifactBasicMetadata> filter, 
ArtifactBasicMetadata dep )
+  throws VersionException
+  {
+    for( ArtifactBasicMetadata filterMd : filter )
+    {
+      if( filterMd.sameGA( dep ) )
+      {
+        if( !filterMd.hasVersion() )
+          return false; // no version in the filter - catch by GA
+        VersionRange vr = new VersionRange( filterMd.getVersion() );
+        if( vr.includes( dep.getVersion() ))
+          return false; // catch by version query
+      }
+    }
+
+    return true;
+  }
+  
+  
   @Override
   public boolean equals( Object obj )
   {

Added: 
maven/sandbox/trunk/mercury/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/ConflictException.java
URL: 
http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/ConflictException.java?rev=702243&view=auto
==============================================================================
--- 
maven/sandbox/trunk/mercury/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/ConflictException.java
 (added)
+++ 
maven/sandbox/trunk/mercury/mercury-artifact/src/main/java/org/apache/maven/mercury/artifact/ConflictException.java
 Mon Oct  6 12:50:22 2008
@@ -0,0 +1,54 @@
+package org.apache.maven.mercury.artifact;
+
+/**
+ *
+ *
+ * @author Oleg Gusakov
+ * @version $Id$
+ *
+ */
+public class ConflictException
+    extends Exception
+{
+
+  /**
+   * 
+   */
+  public ConflictException()
+  {
+    // TODO Auto-generated constructor stub
+  }
+
+  /**
+   * @param message
+   */
+  public ConflictException(
+      String message )
+  {
+    super( message );
+    // TODO Auto-generated constructor stub
+  }
+
+  /**
+   * @param cause
+   */
+  public ConflictException(
+      Throwable cause )
+  {
+    super( cause );
+    // TODO Auto-generated constructor stub
+  }
+
+  /**
+   * @param message
+   * @param cause
+   */
+  public ConflictException(
+      String message,
+      Throwable cause )
+  {
+    super( message, cause );
+    // TODO Auto-generated constructor stub
+  }
+
+}

Modified: 
maven/sandbox/trunk/mercury/mercury-artifact/src/test/java/org/apache/maven/mercury/artifact/DependencyFilterTest.java
URL: 
http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/mercury-artifact/src/test/java/org/apache/maven/mercury/artifact/DependencyFilterTest.java?rev=702243&r1=702242&r2=702243&view=diff
==============================================================================
--- 
maven/sandbox/trunk/mercury/mercury-artifact/src/test/java/org/apache/maven/mercury/artifact/DependencyFilterTest.java
 (original)
+++ 
maven/sandbox/trunk/mercury/mercury-artifact/src/test/java/org/apache/maven/mercury/artifact/DependencyFilterTest.java
 Mon Oct  6 12:50:22 2008
@@ -52,38 +52,38 @@
   public void testNoFilter()
   throws VersionException
   {
-    assertTrue( a1.vetDependency( new ArtifactBasicMetadata("a:a:2.0.0") ) );
-    assertTrue( a1.vetDependency( new ArtifactBasicMetadata("b:b:1.0.0") ) );
-    assertTrue( a1.vetDependency( new ArtifactBasicMetadata("c:c:1.0.0") ) );
+    assertTrue( a1.allowDependency( new ArtifactBasicMetadata("a:a:2.0.0") ) );
+    assertTrue( a1.allowDependency( new ArtifactBasicMetadata("b:b:1.0.0") ) );
+    assertTrue( a1.allowDependency( new ArtifactBasicMetadata("c:c:1.0.0") ) );
   }
   
   public void testInclusionsFilter()
   throws VersionException
   {
-    assertTrue( a2.vetDependency( new ArtifactBasicMetadata("a:a:2.0.0") ) );
-    assertFalse( a2.vetDependency( new ArtifactBasicMetadata("b:b:1.0.0") ) );
-    assertTrue( a2.vetDependency( new ArtifactBasicMetadata("b:b:2.0.1") ) );
-    assertFalse( a2.vetDependency( new ArtifactBasicMetadata("c:c:1.0.0") ) );
+    assertTrue( a2.allowDependency( new ArtifactBasicMetadata("a:a:2.0.0") ) );
+    assertFalse( a2.allowDependency( new ArtifactBasicMetadata("b:b:1.0.0") ) 
);
+    assertTrue( a2.allowDependency( new ArtifactBasicMetadata("b:b:2.0.1") ) );
+    assertFalse( a2.allowDependency( new ArtifactBasicMetadata("c:c:1.0.0") ) 
);
   }
   
   public void testExclusionsFilter()
   throws VersionException
   {
-    assertTrue( a3.vetDependency( new ArtifactBasicMetadata("a:a:2.0.0") ) );
-    assertTrue( a3.vetDependency( new ArtifactBasicMetadata("b:b:1.0.0") ) );
-    assertFalse( a3.vetDependency( new ArtifactBasicMetadata("b:b:2.0.1") ) );
-    assertFalse( a3.vetDependency( new ArtifactBasicMetadata("c:c:1.0.0") ) );
+    assertTrue( a3.allowDependency( new ArtifactBasicMetadata("a:a:2.0.0") ) );
+    assertTrue( a3.allowDependency( new ArtifactBasicMetadata("b:b:1.0.0") ) );
+    assertFalse( a3.allowDependency( new ArtifactBasicMetadata("b:b:2.0.1") ) 
);
+    assertFalse( a3.allowDependency( new ArtifactBasicMetadata("c:c:1.0.0") ) 
);
   }
   
   public void testInclusionsExclusionsFilter()
   throws VersionException
   {
-    assertTrue( a4.vetDependency( new ArtifactBasicMetadata("a:a:2.0.0") ) );
-    assertFalse( a4.vetDependency( new ArtifactBasicMetadata("b:b:1.0.0") ) );
-    assertTrue( a4.vetDependency( new ArtifactBasicMetadata("b:b:2.0.0") ) );
-    assertFalse( a4.vetDependency( new ArtifactBasicMetadata("b:b:2.0.1") ) );
-    assertFalse( a4.vetDependency( new ArtifactBasicMetadata("b:b:3.0.1") ) );
-    assertFalse( a4.vetDependency( new ArtifactBasicMetadata("c:c:1.0.0") ) );
+    assertTrue( a4.allowDependency( new ArtifactBasicMetadata("a:a:2.0.0") ) );
+    assertFalse( a4.allowDependency( new ArtifactBasicMetadata("b:b:1.0.0") ) 
);
+    assertTrue( a4.allowDependency( new ArtifactBasicMetadata("b:b:2.0.0") ) );
+    assertFalse( a4.allowDependency( new ArtifactBasicMetadata("b:b:2.0.1") ) 
);
+    assertFalse( a4.allowDependency( new ArtifactBasicMetadata("b:b:3.0.1") ) 
);
+    assertFalse( a4.allowDependency( new ArtifactBasicMetadata("c:c:1.0.0") ) 
);
   }
 
 }

Modified: maven/sandbox/trunk/mercury/mercury-md/mercury-md-sat/pom.xml
URL: 
http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/mercury-md/mercury-md-sat/pom.xml?rev=702243&r1=702242&r2=702243&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/mercury-md/mercury-md-sat/pom.xml (original)
+++ maven/sandbox/trunk/mercury/mercury-md/mercury-md-sat/pom.xml Mon Oct  6 
12:50:22 2008
@@ -14,7 +14,7 @@
     
     <sat4j.version>2.0.0</sat4j.version>
     <commons.digester.version>1.8</commons.digester.version>
-    <mercury.version>1.0.0-alpha-1</mercury.version>
+    <mercury.version>1.0.0-alpha-2-SNAPSHOT</mercury.version>
 
   </properties>
 

Modified: 
maven/sandbox/trunk/mercury/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyTreeBuilder.java
URL: 
http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyTreeBuilder.java?rev=702243&r1=702242&r2=702243&view=diff
==============================================================================
--- 
maven/sandbox/trunk/mercury/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyTreeBuilder.java
 (original)
+++ 
maven/sandbox/trunk/mercury/mercury-md/mercury-md-sat/src/main/java/org/apache/maven/mercury/metadata/DependencyTreeBuilder.java
 Mon Oct  6 12:50:22 2008
@@ -10,6 +10,7 @@
 import org.apache.maven.mercury.artifact.ArtifactMetadata;
 import org.apache.maven.mercury.artifact.ArtifactScopeEnum;
 import org.apache.maven.mercury.artifact.api.ArtifactListProcessor;
+import org.apache.maven.mercury.artifact.version.VersionException;
 import org.apache.maven.mercury.builder.api.DependencyProcessor;
 import org.apache.maven.mercury.metadata.sat.DefaultSatSolver;
 import org.apache.maven.mercury.metadata.sat.SatException;
@@ -17,6 +18,8 @@
 import org.apache.maven.mercury.repository.api.Repository;
 import org.apache.maven.mercury.repository.api.RepositoryException;
 import org.apache.maven.mercury.repository.api.VirtualRepositoryReader;
+import org.codehaus.plexus.lang.DefaultLanguage;
+import org.codehaus.plexus.lang.Language;
 
 /**
  * This is the new entry point into Artifact resolution process.
@@ -27,7 +30,7 @@
  */
 public class DependencyTreeBuilder
 {
-//  private MetadataSource _mdSource;
+  Language _lang = new DefaultLanguage(DependencyTreeBuilder.class);
   
   private Set<MetadataTreeArtifactFilter> _filters;
   private List<Comparator<MetadataTreeNode>> _comparators;
@@ -119,7 +122,7 @@
         mr = _reader.readDependencies( nodeMD );
   
         if( mr == null )
-          throw new MetadataTreeException( "no result found for " + nodeMD );
+          throw new MetadataTreeException( _lang.getMessage( 
"artifact.md.not.found", nodeMD.toString() ) );
         
         MetadataTreeNode node = new MetadataTreeNode( mr, parent, nodeQuery );
     
@@ -150,6 +153,9 @@
             if( veto( ver, _filters) )
               continue;
             
+            if( vetoInclusionsExclusions(node, ver) )
+              continue;
+            
             MetadataTreeNode kid = createNode( ver, node, md );
             node.addChild( kid );
             
@@ -172,6 +178,10 @@
     {
       throw new MetadataTreeException( e );
     }
+    catch( VersionException e )
+    {
+      throw new MetadataTreeException( e );
+    }
   }
   //-----------------------------------------------------
   private void checkForCircularDependency( ArtifactBasicMetadata md, 
MetadataTreeNode parent )
@@ -213,6 +223,19 @@
     return false;
   }
   //-----------------------------------------------------
+  private boolean vetoInclusionsExclusions( MetadataTreeNode node, 
ArtifactBasicMetadata ver )
+  throws VersionException
+  {
+    for( MetadataTreeNode n = node; n != null; n = n.getParent() )
+    {
+      ArtifactMetadata md = n.getMd();
+      
+      if( md.allowDependency( ver ) )
+        return false;
+    }
+    return true;
+  }
+  //-----------------------------------------------------
   public List<ArtifactMetadata> resolveConflicts( ArtifactScopeEnum scope )
   throws MetadataTreeException
   {

Modified: maven/sandbox/trunk/mercury/mercury-md/mercury-md-shared/pom.xml
URL: 
http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/mercury-md/mercury-md-shared/pom.xml?rev=702243&r1=702242&r2=702243&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/mercury-md/mercury-md-shared/pom.xml (original)
+++ maven/sandbox/trunk/mercury/mercury-md/mercury-md-shared/pom.xml Mon Oct  6 
12:50:22 2008
@@ -58,24 +58,26 @@
        <dependency>
                <groupId>org.apache.maven.mercury</groupId>
                <artifactId>mercury-artifact</artifactId>
-               <version>1.0.0-alpha-2-SNAPSHOT</version>
+               <version>${project.version}</version>
        </dependency>
-    <!--  for some reason transitive does not work - have to copy deps from 
mercury-util -->
+    
+    <!--  for some reason transitive does not work - have to copy deps from 
mercury-util --> 
        <dependency>
                <groupId>org.apache.maven.mercury</groupId>
                <artifactId>mercury-util</artifactId>
-               <version>1.0.0-alpha-2-SNAPSHOT</version>
+               <version>${project.version}</version>
        </dependency>
     <dependency>
       <groupId>org.apache.maven.mercury</groupId>
       <artifactId>mercury-crypto-api</artifactId>
-      <version>1.0.0-alpha-2-SNAPSHOT</version>
+      <version>${project.version}</version>
     </dependency>
     <dependency>
       <groupId>commons-cli</groupId>
       <artifactId>commons-cli</artifactId>
       <version>1.1</version>
     </dependency>
+    
   </dependencies>
   
 </project>
\ No newline at end of file

Added: 
maven/sandbox/trunk/mercury/mercury-util/src/main/java/org/apache/maven/mercury/util/Util.java
URL: 
http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/mercury-util/src/main/java/org/apache/maven/mercury/util/Util.java?rev=702243&view=auto
==============================================================================
--- 
maven/sandbox/trunk/mercury/mercury-util/src/main/java/org/apache/maven/mercury/util/Util.java
 (added)
+++ 
maven/sandbox/trunk/mercury/mercury-util/src/main/java/org/apache/maven/mercury/util/Util.java
 Mon Oct  6 12:50:22 2008
@@ -0,0 +1,34 @@
+package org.apache.maven.mercury.util;
+
+import java.util.Collection;
+
+/**
+ * general utility helpers
+ *
+ * @author Oleg Gusakov
+ * @version $Id$
+ *
+ */
+public class Util
+{
+   @SuppressWarnings("unchecked")
+  public boolean isEmpty( Collection o )
+   {
+     return o == null || o.isEmpty();
+   }
+   
+   public boolean isEmpty( String o )
+   {
+     return o == null || o.length() < 1;
+   }
+
+   public boolean isEmpty( Object [] o )
+   {
+     return o == null || o.length < 1;
+   }
+
+   public boolean isEmpty( Object o )
+   {
+     return o == null;
+   }
+}

Modified: maven/sandbox/trunk/mercury/wagon-mercury/pom.xml
URL: 
http://svn.apache.org/viewvc/maven/sandbox/trunk/mercury/wagon-mercury/pom.xml?rev=702243&r1=702242&r2=702243&view=diff
==============================================================================
--- maven/sandbox/trunk/mercury/wagon-mercury/pom.xml (original)
+++ maven/sandbox/trunk/mercury/wagon-mercury/pom.xml Mon Oct  6 12:50:22 2008
@@ -10,7 +10,7 @@
   <version>1.0.0-alpha-2-SNAPSHOT</version>
   
   <properties>
-    <mercury.version>1.0.0-alpha-1</mercury.version>
+    <mercury.version>1.0.0-alpha-2-SNAPSHOT</mercury.version>
     <plexus.appbooter.version>1.4</plexus.appbooter.version>
     <plexus.container.version>1.0-alpha-47</plexus.container.version>
     <plexus.utils.version>1.5.1</plexus.utils.version>


Reply via email to