Skip to content

Commit

Permalink
additional constructor
Browse files Browse the repository at this point in the history
Signed-off-by: Markus KARG <markus@headcrashing.eu>
  • Loading branch information
mkarg committed Apr 14, 2019
1 parent 1419cea commit 975615b
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,11 @@

import java.io.File;
import java.util.HashSet;
import java.util.Collections;
import java.util.Set;

import org.apache.maven.plugins.shade.mojo.ArchiveFilter;

/**
* @author David Blevins
*/
Expand All @@ -44,14 +47,37 @@ public class SimpleFilter

private boolean excludeDefaults = true;

/**
* @deprecated As of release 3.2.2, replaced by {@link #SimpleFilter(Set<File>, ArchiveFilter)}
* @param jars set of {@link File}s.
* @param includes set of includes.
* @param excludes set of excludes.
*/
@Deprecated
public SimpleFilter( Set<File> jars, Set<String> includes, Set<String> excludes )
{
this( jars, includes, excludes, true );
}

/**
* @param jars set of {@link File}s.
* @param archiveFilters set of {@link ArchiveFilter}s.
*/
public SimpleFilter( final Set<File> jars, final ArchiveFilter archiveFilter )
{
this( jars, archiveFilter.getIncludes(), archiveFilter.getExcludes(), archiveFilter.getExcludeDefaults() );
}

/**
* @param jars set of {@link File}s.
* @param includes set of includes.
* @param excludes set of excludes
* @param excludes set of excludes.
* @param excludeDefaults whether to exclude default includes once includes are provided explicitly.
*/
public SimpleFilter( Set<File> jars, Set<String> includes, Set<String> excludes, boolean excludeDefaults )
private SimpleFilter( final Set<File> jars, final Set<String> includes, final Set<String> excludes,
final boolean excludeDefaults )
{
this.jars = ( jars != null ) ? new HashSet<>( jars ) : new HashSet<File>();
this.jars = ( jars != null ) ? Collections.<File>unmodifiableSet( jars ) : Collections.<File>emptySet();
this.includes = normalizePatterns( includes );
this.excludes = normalizePatterns( excludes );
this.excludeDefaults = excludeDefaults;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -809,8 +809,7 @@ private List<Filter> getFilters()
continue;
}

simpleFilters.add( new SimpleFilter( jars, filter.getIncludes(), filter.getExcludes(),
filter.getExcludeDefaults() ) );
simpleFilters.add( new SimpleFilter( jars, filter ) );
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,13 @@
* under the License.
*/

import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

import java.util.Collections;

import junit.framework.TestCase;
import org.apache.maven.plugins.shade.mojo.ArchiveFilter;

/**
* @author Benjamin Bentmann
Expand All @@ -34,52 +38,57 @@ public void testIsFiltered()
{
SimpleFilter filter;

filter = new SimpleFilter( null, null, null, true );
filter = new SimpleFilter( null, null, null );
assertFalse( filter.isFiltered( "a.properties" ) );
assertFalse( filter.isFiltered( "org/Test.class" ) );

filter = new SimpleFilter( null, Collections.<String> emptySet(), Collections.<String> emptySet(), true );
filter = new SimpleFilter( null, Collections.<String> emptySet(), Collections.<String> emptySet() );
assertFalse( filter.isFiltered( "a.properties" ) );
assertFalse( filter.isFiltered( "org/Test.class" ) );

filter = new SimpleFilter( null, Collections.singleton( "org/Test.class" ), Collections.<String> emptySet(), true );
filter = new SimpleFilter( null, Collections.singleton( "org/Test.class" ), Collections.<String> emptySet() );
assertTrue( filter.isFiltered( "a.properties" ) );
assertFalse( filter.isFiltered( "org/Test.class" ) );
assertTrue( filter.isFiltered( "org/Test.properties" ) );

filter = new SimpleFilter( null, Collections.<String> emptySet(), Collections.singleton( "org/Test.class" ), true );
filter = new SimpleFilter( null, Collections.<String> emptySet(), Collections.singleton( "org/Test.class" ) );
assertFalse( filter.isFiltered( "a.properties" ) );
assertTrue( filter.isFiltered( "org/Test.class" ) );
assertFalse( filter.isFiltered( "org/Test.properties" ) );

filter = new SimpleFilter( null, Collections.singleton( "**/a.properties" ), Collections.<String> emptySet(), true );
filter = new SimpleFilter( null, Collections.singleton( "**/a.properties" ), Collections.<String> emptySet() );
assertFalse( filter.isFiltered( "a.properties" ) );
assertFalse( filter.isFiltered( "org/a.properties" ) );
assertFalse( filter.isFiltered( "org/maven/a.properties" ) );
assertTrue( filter.isFiltered( "org/maven/a.class" ) );

filter = new SimpleFilter( null, Collections.<String> emptySet(), Collections.singleton( "org/*" ), true );
filter = new SimpleFilter( null, Collections.<String> emptySet(), Collections.singleton( "org/*" ) );
assertFalse( filter.isFiltered( "Test.class" ) );
assertTrue( filter.isFiltered( "org/Test.class" ) );
assertFalse( filter.isFiltered( "org/apache/Test.class" ) );

filter = new SimpleFilter( null, Collections.<String> emptySet(), Collections.singleton( "org/**" ), true );
filter = new SimpleFilter( null, Collections.<String> emptySet(), Collections.singleton( "org/**" ) );
assertFalse( filter.isFiltered( "Test.class" ) );
assertTrue( filter.isFiltered( "org/Test.class" ) );
assertTrue( filter.isFiltered( "org/apache/Test.class" ) );

filter = new SimpleFilter( null, Collections.<String> emptySet(), Collections.singleton( "org/" ), true );
filter = new SimpleFilter( null, Collections.<String> emptySet(), Collections.singleton( "org/" ) );
assertFalse( filter.isFiltered( "Test.class" ) );
assertTrue( filter.isFiltered( "org/Test.class" ) );
assertTrue( filter.isFiltered( "org/apache/Test.class" ) );

// given defaults shall be excluded and a specific include is given when filtering then only specific file must be included
filter = new SimpleFilter( null, Collections.singleton( "specific include" ), Collections.<String> emptySet(), true );
final ArchiveFilter archiveFilter = mock( ArchiveFilter.class );
when( archiveFilter.getIncludes() ).thenReturn( Collections.singleton( "specific include" ) );
when( archiveFilter.getExcludes() ).thenReturn( Collections.<String> emptySet() );
when( archiveFilter.getExcludeDefaults() ).thenReturn( true );
filter = new SimpleFilter( null, archiveFilter );
assertFalse( filter.isFiltered( "specific include" ) );
assertTrue( filter.isFiltered( "some other file matched by default include" ) );

// given defaults shall be included and a specific include is given when filtering then all files must be included
filter = new SimpleFilter( null, Collections.singleton( "specific include" ), Collections.<String> emptySet(), false );
when( archiveFilter.getExcludeDefaults() ).thenReturn( false );
filter = new SimpleFilter( null, archiveFilter );
assertFalse( filter.isFiltered( "specific include" ) );
assertFalse( filter.isFiltered( "some other file matched by default include" ) );
}
Expand Down

0 comments on commit 975615b

Please sign in to comment.