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