You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by be...@apache.org on 2009/06/20 20:56:26 UTC

svn commit: r786882 - in /maven/components/trunk: maven-compat/src/main/java/org/apache/maven/artifact/resolver/filter/ maven-compat/src/test/java/org/apache/maven/artifact/resolver/filter/ maven-core/src/test/java/org/apache/maven/project/artifact/

Author: bentmann
Date: Sat Jun 20 18:56:26 2009
New Revision: 786882

URL: http://svn.apache.org/viewvc?rev=786882&view=rev
Log:
[MNG-4041] embedder returns stale maven project state
Submitted by: Igor Fedorenko

o Committed additional patch with bugfixes including minor modifications:
  - used LinkedHashSet instead of HashSet/TreeSet
  - added missing license headers

Added:
    maven/components/trunk/maven-compat/src/test/java/org/apache/maven/artifact/resolver/filter/   (with props)
    maven/components/trunk/maven-compat/src/test/java/org/apache/maven/artifact/resolver/filter/FilterHashEqualsTest.java   (with props)
    maven/components/trunk/maven-core/src/test/java/org/apache/maven/project/artifact/DefaultMavenMetadataCacheTest.java   (with props)
Modified:
    maven/components/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/filter/AndArtifactFilter.java
    maven/components/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/filter/ExclusionSetFilter.java
    maven/components/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/filter/IncludesArtifactFilter.java
    maven/components/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/filter/InversionArtifactFilter.java
    maven/components/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/filter/OrArtifactFilter.java
    maven/components/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/filter/ScopeArtifactFilter.java
    maven/components/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/filter/TypeArtifactFilter.java

Modified: maven/components/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/filter/AndArtifactFilter.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/filter/AndArtifactFilter.java?rev=786882&r1=786881&r2=786882&view=diff
==============================================================================
--- maven/components/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/filter/AndArtifactFilter.java (original)
+++ maven/components/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/filter/AndArtifactFilter.java Sat Jun 20 18:56:26 2009
@@ -21,7 +21,9 @@
 
 import java.util.ArrayList;
 import java.util.Iterator;
+import java.util.LinkedHashSet;
 import java.util.List;
+import java.util.Set;
 
 import org.apache.maven.artifact.Artifact;
 
@@ -34,7 +36,7 @@
 public class AndArtifactFilter
     implements ArtifactFilter
 {
-    private List<ArtifactFilter> filters; 
+    private Set<ArtifactFilter> filters; 
 
     public AndArtifactFilter()
     {        
@@ -42,7 +44,7 @@
     
     public AndArtifactFilter( List<ArtifactFilter> filters )
     {
-        this.filters = filters;
+        this.filters = new LinkedHashSet<ArtifactFilter>( filters );
     }
     
     public boolean include( Artifact artifact )
@@ -63,9 +65,40 @@
     {
         if ( filters == null )
         {
-            filters = new ArrayList<ArtifactFilter>();
+            filters = new LinkedHashSet<ArtifactFilter>();
         }
         
         filters.add( artifactFilter );
     }
+
+    public List<ArtifactFilter> getFilters()
+    {
+        return new ArrayList<ArtifactFilter>( filters );
+    }
+
+    @Override
+    public int hashCode()
+    {
+        int hash = 17;
+        hash = hash * 31 + filters.hashCode();
+        return hash;
+    }
+
+    @Override
+    public boolean equals( Object obj )
+    {
+        if ( this == obj )
+        {
+            return true;
+        }
+        
+        if ( !( obj instanceof AndArtifactFilter ) )
+        {
+            return false;
+        }
+        
+        AndArtifactFilter other = (AndArtifactFilter) obj;
+        
+        return filters.equals( other.filters );
+    }
 }

Modified: maven/components/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/filter/ExclusionSetFilter.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/filter/ExclusionSetFilter.java?rev=786882&r1=786881&r2=786882&view=diff
==============================================================================
--- maven/components/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/filter/ExclusionSetFilter.java (original)
+++ maven/components/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/filter/ExclusionSetFilter.java Sat Jun 20 18:56:26 2009
@@ -20,7 +20,7 @@
  */
 
 import java.util.Arrays;
-import java.util.HashSet;
+import java.util.LinkedHashSet;
 import java.util.Set;
 
 import org.apache.maven.artifact.Artifact;
@@ -36,7 +36,7 @@
 
     public ExclusionSetFilter( String[] excludes )
     {
-        this.excludes = new HashSet<String>( Arrays.asList( excludes ) );
+        this.excludes = new LinkedHashSet<String>( Arrays.asList( excludes ) );
     }
 
     public ExclusionSetFilter( Set<String> excludes )
@@ -46,6 +46,32 @@
 
     public boolean include( Artifact artifact )
     {
-        return !excludes.contains(artifact.getArtifactId());
+        return !excludes.contains( artifact.getArtifactId() );
+    }
+
+    @Override
+    public int hashCode()
+    {
+        int hash = 17;
+        hash = hash * 31 + excludes.hashCode();
+        return hash;
+    }
+
+    @Override
+    public boolean equals( Object obj )
+    {
+        if ( this == obj )
+        {
+            return true;
+        }
+        
+        if ( !( obj instanceof ExclusionSetFilter ) )
+        {
+            return false;
+        }
+        
+        ExclusionSetFilter other = (ExclusionSetFilter) obj;
+        
+        return excludes.equals( other.excludes );
     }
 }

Modified: maven/components/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/filter/IncludesArtifactFilter.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/filter/IncludesArtifactFilter.java?rev=786882&r1=786881&r2=786882&view=diff
==============================================================================
--- maven/components/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/filter/IncludesArtifactFilter.java (original)
+++ maven/components/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/filter/IncludesArtifactFilter.java Sat Jun 20 18:56:26 2009
@@ -19,8 +19,11 @@
  * under the License.
  */
 
+import java.util.ArrayList;
 import java.util.Iterator;
+import java.util.LinkedHashSet;
 import java.util.List;
+import java.util.Set;
 
 import org.apache.maven.artifact.Artifact;
 
@@ -33,11 +36,11 @@
 public class IncludesArtifactFilter
     implements ArtifactFilter
 {
-    private final List<String> patterns;
+    private final Set<String> patterns;
 
     public IncludesArtifactFilter( List<String> patterns )
     {
-        this.patterns = patterns;
+        this.patterns = new LinkedHashSet<String>( patterns );
     }
 
     public boolean include( Artifact artifact )
@@ -55,9 +58,37 @@
         }
         return matched;
     }
-    
+
     public List<String> getPatterns()
     {
-        return patterns;
+        return new ArrayList<String>( patterns );
+    }
+
+    @Override
+    public int hashCode()
+    {
+        int hash = 17;
+        hash = hash * 31 + patterns.hashCode();
+        
+        return hash;
+    }
+
+    @Override
+    public boolean equals( Object obj )
+    {
+        if ( this == obj ) 
+        {
+            return true;
+        }
+
+        // make sure IncludesArtifactFilter is not equal ExcludesArtifactFilter! 
+        if ( obj == null || getClass() != obj.getClass() )
+        {
+            return false;
+        }
+
+        IncludesArtifactFilter other = (IncludesArtifactFilter) obj;
+
+        return patterns.equals( other.patterns );
     }
 }

Modified: maven/components/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/filter/InversionArtifactFilter.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/filter/InversionArtifactFilter.java?rev=786882&r1=786881&r2=786882&view=diff
==============================================================================
--- maven/components/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/filter/InversionArtifactFilter.java (original)
+++ maven/components/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/filter/InversionArtifactFilter.java Sat Jun 20 18:56:26 2009
@@ -35,4 +35,31 @@
     {
         return !toInvert.include( artifact );
     }
+
+    @Override
+    public int hashCode()
+    {
+        int hash = 17;
+        hash = hash * 31 + toInvert.hashCode();
+        return hash;
+    }
+
+    @Override
+    public boolean equals( Object obj )
+    {
+        if ( this == obj )
+        {
+            return true;
+        }
+        
+        if ( !( obj instanceof InversionArtifactFilter ) )
+        {
+            return false;
+        }
+        
+        InversionArtifactFilter other = (InversionArtifactFilter) obj;
+        
+        return toInvert.equals( other.toInvert );
+    }
+
 }

Modified: maven/components/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/filter/OrArtifactFilter.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/filter/OrArtifactFilter.java?rev=786882&r1=786881&r2=786882&view=diff
==============================================================================
--- maven/components/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/filter/OrArtifactFilter.java (original)
+++ maven/components/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/filter/OrArtifactFilter.java Sat Jun 20 18:56:26 2009
@@ -19,8 +19,9 @@
  * under the License.
  */
 
-import java.util.ArrayList;
 import java.util.Collection;
+import java.util.LinkedHashSet;
+import java.util.Set;
 
 import org.apache.maven.artifact.Artifact;
 
@@ -33,7 +34,7 @@
     implements ArtifactFilter
 {
 
-    private Collection<ArtifactFilter> filters;
+    private Set<ArtifactFilter> filters;
 
     public OrArtifactFilter()
     {
@@ -41,7 +42,7 @@
 
     public OrArtifactFilter( Collection<ArtifactFilter> filters )
     {
-        this.filters = filters;
+        this.filters = new LinkedHashSet<ArtifactFilter>( filters );
     }
 
     public boolean include( Artifact artifact )
@@ -64,10 +65,36 @@
     {
         if ( filters == null )
         {
-            filters = new ArrayList<ArtifactFilter>();
+            filters = new LinkedHashSet<ArtifactFilter>();
         }
 
         filters.add( artifactFilter );
     }
 
+    @Override
+    public int hashCode()
+    {
+        int hash = 17;
+        hash = hash * 31 + filters.hashCode();
+        return hash;
+    }
+
+    @Override
+    public boolean equals( Object obj )
+    {
+        if ( this == obj )
+        {
+            return true;
+        }
+        
+        if ( !( obj instanceof OrArtifactFilter ) )
+        {
+            return false;
+        }
+        
+        OrArtifactFilter other = (OrArtifactFilter) obj;
+        
+        return filters.equals( other.filters );
+    }
+    
 }

Modified: maven/components/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/filter/ScopeArtifactFilter.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/filter/ScopeArtifactFilter.java?rev=786882&r1=786881&r2=786882&view=diff
==============================================================================
--- maven/components/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/filter/ScopeArtifactFilter.java (original)
+++ maven/components/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/filter/ScopeArtifactFilter.java Sat Jun 20 18:56:26 2009
@@ -120,4 +120,47 @@
     {
         return scope;
     }
+
+    @Override
+    public int hashCode()
+    {
+        int hash = 17;
+        hash = hash * 31 + ( compileScope ? 1 : 0 );
+        hash = hash * 31 + ( runtimeScope ? 1 : 0 );
+        hash = hash * 31 + ( testScope ? 1 : 0 );
+        hash = hash * 31 + ( providedScope ? 1 : 0 );
+        hash = hash * 31 + ( systemScope ? 1 : 0 );
+        
+        hash = hash * 31 + ( scope != null ? scope.hashCode() : 0);
+        
+        return hash;
+    }
+
+    @Override
+    public boolean equals( Object obj )
+    {
+        if ( this == obj )
+        {
+            return true;
+        }
+        
+        if ( !( obj instanceof ScopeArtifactFilter ) )
+        {
+            return false;
+        }
+        
+        ScopeArtifactFilter other = (ScopeArtifactFilter) obj;
+
+        return compileScope == other.compileScope
+                && runtimeScope == other.runtimeScope
+                && testScope == other.testScope
+                && providedScope == other.providedScope
+                && systemScope == other.systemScope
+                && equals( scope, other.scope );
+    }
+
+    private static boolean equals( String str1, String str2 )
+    {
+        return str1 != null ? str1.equals( str2 ) : str2 == null;
+    }
 }

Modified: maven/components/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/filter/TypeArtifactFilter.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/filter/TypeArtifactFilter.java?rev=786882&r1=786881&r2=786882&view=diff
==============================================================================
--- maven/components/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/filter/TypeArtifactFilter.java (original)
+++ maven/components/trunk/maven-compat/src/main/java/org/apache/maven/artifact/resolver/filter/TypeArtifactFilter.java Sat Jun 20 18:56:26 2009
@@ -36,4 +36,31 @@
     {
         return type.equals( artifact.getType() );
     }
+
+    @Override
+    public int hashCode()
+    {
+        int hash = 17;
+        hash = hash * 31 + type.hashCode();
+        return hash;
+    }
+
+    @Override
+    public boolean equals( Object obj )
+    {
+        if ( this == obj )
+        {
+            return true;
+        }
+        
+        if ( !( obj instanceof TypeArtifactFilter ) )
+        {
+            return false;
+        }
+        
+        TypeArtifactFilter other = (TypeArtifactFilter) obj;
+        
+        return type.equals( other.type );
+    }
+
 }

Propchange: maven/components/trunk/maven-compat/src/test/java/org/apache/maven/artifact/resolver/filter/
------------------------------------------------------------------------------
    bugtraq:label = Enter issue ID:

Propchange: maven/components/trunk/maven-compat/src/test/java/org/apache/maven/artifact/resolver/filter/
------------------------------------------------------------------------------
    bugtraq:message = Issue id: %BUGID%

Propchange: maven/components/trunk/maven-compat/src/test/java/org/apache/maven/artifact/resolver/filter/
------------------------------------------------------------------------------
    bugtraq:number = false

Propchange: maven/components/trunk/maven-compat/src/test/java/org/apache/maven/artifact/resolver/filter/
------------------------------------------------------------------------------
    bugtraq:url = http://jira.codehaus.org/browse/%BUGID%

Added: maven/components/trunk/maven-compat/src/test/java/org/apache/maven/artifact/resolver/filter/FilterHashEqualsTest.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-compat/src/test/java/org/apache/maven/artifact/resolver/filter/FilterHashEqualsTest.java?rev=786882&view=auto
==============================================================================
--- maven/components/trunk/maven-compat/src/test/java/org/apache/maven/artifact/resolver/filter/FilterHashEqualsTest.java (added)
+++ maven/components/trunk/maven-compat/src/test/java/org/apache/maven/artifact/resolver/filter/FilterHashEqualsTest.java Sat Jun 20 18:56:26 2009
@@ -0,0 +1,50 @@
+package org.apache.maven.artifact.resolver.filter;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.
+ */
+
+import java.util.Arrays;
+import java.util.List;
+
+import junit.framework.TestCase;
+
+/**
+ * @author Igor Fedorenko
+ */
+public class FilterHashEqualsTest
+    extends TestCase
+{
+
+    public void testIncludesExcludesArtifactFilter()
+    {
+        List<String> patterns = Arrays.asList( "c", "d", "e" );
+
+        IncludesArtifactFilter f1 = new IncludesArtifactFilter( patterns );
+
+        IncludesArtifactFilter f2 = new IncludesArtifactFilter( patterns );
+
+        assertTrue( f1.equals(f2) );
+        assertTrue( f2.equals(f1) );
+        assertTrue( f1.hashCode() == f2.hashCode() );
+        
+        IncludesArtifactFilter f3 = new IncludesArtifactFilter( Arrays.asList( "d", "c", "e" ) );
+        assertTrue( f1.equals( f3 ) );
+        assertTrue( f1.hashCode() == f3.hashCode() );
+    }
+}

Propchange: maven/components/trunk/maven-compat/src/test/java/org/apache/maven/artifact/resolver/filter/FilterHashEqualsTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/trunk/maven-compat/src/test/java/org/apache/maven/artifact/resolver/filter/FilterHashEqualsTest.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Added: maven/components/trunk/maven-core/src/test/java/org/apache/maven/project/artifact/DefaultMavenMetadataCacheTest.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/test/java/org/apache/maven/project/artifact/DefaultMavenMetadataCacheTest.java?rev=786882&view=auto
==============================================================================
--- maven/components/trunk/maven-core/src/test/java/org/apache/maven/project/artifact/DefaultMavenMetadataCacheTest.java (added)
+++ maven/components/trunk/maven-core/src/test/java/org/apache/maven/project/artifact/DefaultMavenMetadataCacheTest.java Sat Jun 20 18:56:26 2009
@@ -0,0 +1,79 @@
+package org.apache.maven.project.artifact;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.
+ */
+
+import java.util.Arrays;
+import java.util.Collections;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.resolver.filter.ExcludesArtifactFilter;
+import org.apache.maven.project.artifact.DefaultMavenMetadataCache.CacheKey;
+import org.apache.maven.repository.DelegatingLocalArtifactRepository;
+import org.apache.maven.repository.RepositorySystem;
+import org.codehaus.plexus.PlexusTestCase;
+
+/**
+ * @author Igor Fedorenko
+ */
+public class DefaultMavenMetadataCacheTest
+    extends PlexusTestCase
+{
+    private RepositorySystem repositorySystem;
+
+    protected void setUp()
+        throws Exception
+    {
+        super.setUp();
+        repositorySystem = lookup( RepositorySystem.class );
+    }
+
+    @Override
+    protected void tearDown()
+        throws Exception
+    {
+        repositorySystem = null;
+        super.tearDown();
+    }
+
+    public void testCacheKey()
+        throws Exception
+    {
+        Artifact a1 = repositorySystem.createArtifact( "testGroup", "testArtifact", "1.2.3", "jar" );
+        ArtifactRepository lr1 = new DelegatingLocalArtifactRepository( repositorySystem.createDefaultLocalRepository() );
+        ArtifactRepository rr1 = repositorySystem.createDefaultRemoteRepository();
+        a1.setDependencyFilter( new ExcludesArtifactFilter( Arrays.asList( "foo" ) ) );
+
+        Artifact a2 = repositorySystem.createArtifact( "testGroup", "testArtifact", "1.2.3", "jar" );
+        ArtifactRepository lr2 = new DelegatingLocalArtifactRepository( repositorySystem.createDefaultLocalRepository() );
+        ArtifactRepository rr2 = repositorySystem.createDefaultRemoteRepository();
+        a2.setDependencyFilter( new ExcludesArtifactFilter( Arrays.asList( "foo" ) ) );
+
+        // sanity checks
+        assertNotSame( a1, a2 );
+        assertNotSame( lr1, lr2 );
+        assertNotSame( rr1, rr2 );
+
+        CacheKey k1 = new CacheKey( a1, lr1, Collections.singletonList( rr1 ) );
+        CacheKey k2 = new CacheKey( a2, lr2, Collections.singletonList( rr2 ) );
+        
+        assertEquals(k1.hashCode(), k2.hashCode());
+    }
+}

Propchange: maven/components/trunk/maven-core/src/test/java/org/apache/maven/project/artifact/DefaultMavenMetadataCacheTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/trunk/maven-core/src/test/java/org/apache/maven/project/artifact/DefaultMavenMetadataCacheTest.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision